An open API service indexing awesome lists of open source software.

https://github.com/baueri/kozossegek-hu

A kozossegek.hu közösségkereső portál forráskódja
https://github.com/baueri/kozossegek-hu

catholic church groups hungarian kozosseg magyar

Last synced: 22 days ago
JSON representation

A kozossegek.hu közösségkereső portál forráskódja

Awesome Lists containing this project

README

          

# kozossegek.hu

A kozossegek.hu egy katolikus közösségkereső portál, amelyet azért hoztunk létre, hogy segítsünk mindenkinek
megtalálni a közösségét akárhol is éljen, tanuljon, vagy dolgozzon, nemtől, kortól, életállapottól függetlenül.

A projekt publikussá tételével szeretnénk másokat is bevonni a közös munkába, fejlesztésbe, hogy még hatékonyabb
legyen az oldal karbantartása, az újdonságok elkészítése, esetleg mások ötleteit is meg tudjuk valósítani.

**Minden építő jellegű ötletet, fejlesztést örömmel fogadunk issue-k és pull requestek formájában!**

_Részletes fejlesztői dokumentáció jelenleg nincs, de idővel igyekszünk ennek is eleget tenni._

### Tech stack
- `php8.1`
- `mariadb`
- `html`, `css`

### Követelmények
- Docker. Telepítése: https://docs.docker.com/engine/install/

### Telepítés
#### Instant telepítés, alap beállításokkal
_(app port: 8000, pma port: 8001, username: admin, password: pw, email: amit lent megadsz)_
```shell
git clone git@github.com:baueri/kozossegek-hu.git \
&& cd kozossegek-hu \
&& cp .env.example .env \
&& docker compose up -d --build
```

_Miután elindult a docker container, telepítéshez futtasd ezt:_

```shell
docker exec kozossegek_app php console install --name=Admin --username=admin --email="your.eamil@kozossegek.hu" --password=pw --seed
```

### VAGY

#### Részletes telepítés

Klónozd le a projektet, majd lépj be a könyvtárba

```shell
git clone git@github.com:baueri/kozossegek-hu.git
```

Másold le a .env.example tartalmát a .env fájlba

```shell
cp .env.example .env
```

Az **alkalmazás** a `8000`-es, a **phpmyadmin** pedig a `8001`-es portokon lesznek kiszolgálva, ha ezen változtatnál,
írd át az `APP_PORT` és a `PMA_PORT` változókat a `.env` fájlban.

_A többi változót is igény szerint módosíthatod (sql usernév, jelszó, storage mappa stb)_

Indítsd el a dockert:

```shell
docker compose up -d --build
```

_A `-d` kapcsolóval a sikeres build után a háttérben fognak futni a containerek._

Miután a dockeres telepítés megtörtént, a `kozossegek_app` containerben futtasd az `install.php`-t:

```shell
docker exec kozossegek_app php install.php
```

A telepítőben

1. létrejön az admin fiókod
2. felkerül néhány dummy közösség, illetve a térkép modul és a keresőmotor frissül. Ez 1-2 percet igénybe vehet.

Ha minden sikeresen lefutott, akkor az alkalmazás a http://localhost:8000 (a port a konfigurációtól függ) linken elérhető lesz.

### Docker containerek
A kozossegek.hu projektben három containert futtatunk:

- **kozossegek_app**: Ide van az apache szerver felrakva, az alkalmazás innen van kiszolgálva.
- **kozossegek_pma**: Phpmyadmin image van behúzva. A phpmyadmin innen érhető el: http://localhost:8001
- Alapértelmezetten a **user:** `root`, **password:** `pw` adatokkal tudsz belépni.
- **kozossegek_mysql**: Ez az sql container, szintén a fenti login adatokkal (`root, pw`) lehet használni az sql cli-t.

## A keretrendszerről
A kozossegek.hu egyedi keretrendszer alatt fut, `MVC` struktúrával. Ebben a fejezetben a legalapvetőbb dolgokat írjuk le, amivel már be tudsz kapcsolódni a fejlesztésbe.

A **route**-ok határozzák meg az oldal belépési pontját, amik nagyrészt egy **controller** class adott **metódusára** mutatnak.

A **controller** osztály metódusa tartalmazza a business logic-et, amit szükség szerint lehet külön service-be is kivezetni.

A megjelenítést pedig egy saját fejlesztésű, szintaktikájában a laravel `blade`-jére hasonlító templating rendszer valósítja meg.

Az adatbázis táblák entitásainak kezelésére két implementációt használunk:

- Az entitások reprezentálására model osztályok
- Ezek szerkesztésére, lekérésére, létrehozására pedig a query builderek.

### Routing
Az aloldalak struktúrája `xml`-ben írt route fájlokban vannak meghatározva. Az egyes aloldalakra vonatkozó szabályokat (engedélyezett request method, middleware) szintén itt lehet meghatározni.
Az alapvető útvonalak négy xml fájlba vannak rendezve szerepüktől függően.

- `routes/web.xml`
- `routes/api.xml`
- `routes/admin.xml`
- `routes/admin_api.xml`

**Új route útvonal létrehozása**
Új route-ot az adott xml fájlban a `` gyökér tag közé kell felvinni

Általános használata:
```xml

```

Ez a fenti route létrehozza a `kozossegek.hu/route-to-page` végpontot, ami az `App\Path\To\Controller` osztály `routeEntrypoint` metódusát fogja lefuttatni

#### Controllerek
A controller osztályokban vannak a route-ok belépési pontjai implementálva.

```php
where('email', 'test@gmail.com')->first();
}
}

```

**Entitás létrehozása**
```php
$user = $users->create(['name' => 'Test user', 'email', 'test@gmail.com']); // egy User példányt ad vissza
```

**Entitás adatainak frissítése**
```php
$user = $users->find(1); // egyetlen sor lekérése id alapján
$users->save($user, ['name' => 'Másik user'])
```

**Sor törlése adatbázisból**

Kétféleképpen lehet törölni sort a query builder használatával:
```php
$users->deleteModel($user); // model átadásával

// vagy

$users->where('email', 'test@gmail.com')->delete() // sql-lel
```

**Note: adott entitás query builderjét a `query()` metódushívással tudod példányosítani**
```php
$users = Users::query();
$users->where('...')->orderBy('name asc')->get();
```

Természetesen van lehetőség a query builder helyett a plain sql használatára is:

```php
$testUsers = db()->select('select * from users where name like %?%', ['test']);
```

**Fontos: plain sql esetén is mindenképp bindig-ot használjunk, ne írjunk sql-t konkatenálással**
```php
// NE CSINÁLD:
db()->first('select * from users where email="' . request()->get('email') . "'");
```

### Templating
A megjelenítést az egyedi fejlesztésű, `blade` által inspirált, de annál egyszerűbb template engine generálja.
Ezek is gyakorlatilag php fájlok, amik bizonyos kényelmi előnyökkel szolgálnak.

A template fájlokat a `resources/views` mappában tároljuk

`resources/views/minta.php`
```html
@title('Ez egy minta oldal')
@extends('portal')

Hello {{ $nev }}, ez egy minta oldal...


...ami köré a portal.php template fájl kerül, így erre a template-re a látogai oldal dizájnja, szerkezete kerül


```

A `@title()` direktíva a fejléc szekcióba jeleníti meg azt a szöveget, amit paraméterben átadunk

Az `@extends()` direktíva határozza meg, hogy mely másik template-et akarjuk a tartalom köré berakni. Az ez alá kerülő tartalom, html kód kerül a `portal.php` fájlban a `@yield('portal')` helyére.

Lehetőség van dinamikus tartalmat is megjeleníteni, erre a `{{ $valtozo_neve }}` szintaxist lehet használni.

#### Template megjelenítése
Egy template tartalmát legegyszerűbben a `view()` függvényhívással lehet megjeleníteni
```php
'Minta János']);
}
}
```

#### használható template utasítások:

Iteráció egy tömbön

```html


    @foreach($array as $value)
  • {{ $value }}

  • @endforeach

```
Feltételvizsgálat
```html
@if($a === 'a')

@else

@endif
```

Másik template fájl betöltése
```html

Some content

@include('path.to.another.template')

Some other content


```

Route linkjének lekérése

```html
Admin felület
```

### Egyéb források

- https://www.toptal.com/developers/css/sprite-generator: a címkék (jellemzők) sprite-tá alalkításához. 35x35 px-es képekkel!