pixeldev / sulu-townhallbundle
Manage town hall for Sulu
Requires
- php: ^8.0
- sulu/automation-bundle: ^2.1
- sulu/sulu: ^2.5
Requires (Dev)
- dantleech/phpcr-migrations-bundle: ^1.3
- jackalope/jackalope-doctrine-dbal: ^1.3.2
- phpstan/extension-installer: ^1.2
- phpstan/phpstan: ^1.9
- phpstan/phpstan-symfony: ^1.2
- rector/rector: ^0.18.13
- sulu/sulu-rector: ^0.1.6
- symplify/easy-coding-standard: ^11.1
README
Presentation
A Sulu bundle to manage town hall related entities.
Features
- Report management
- Bulletin management
- Procedure management
- Decree management
- Public market management
- Deliberation management
- List of entities (via smart content)
- Preview
- Translation
- Settings
- SEO
- Activity log
- Trash
- Automation
- Search
Requirement
- PHP >= 8.0
- Sulu >= 2.5
- Symfony >= 5.4
- Composer
Installation
Install the bundle
Execute the following composer command to add the bundle to the dependencies of your project:
composer require pixelmairie/sulu-townhallbundle
Enable the bundle
Enable the bundle by adding it to the list of registered bundles in the config/bundles.php
file of your project:
return [ /* ... */ Pixel\TownHallBundle\TownHallBundle::class => ['all' => true], ];
Update schema
bin/console do:sch:up --force
Bundle Config
Define the Admin Api Route in routes_admin.yaml
townhall.settings_api: type: rest prefix: /admin/api resource: pixel_townhall.settings_route_controller name_prefix: townhall. townhall.reports_api: type: rest prefix: /admin/api resource: pixel_townhall.reports_route_controller name_prefix: townhall. townhall.bulletins_api: type: rest prefix: /admin/api resource: pixel_townhall.bulletins_route_controller name_prefix: townhall. townhall.procedures_api: type: rest prefix: /admin/api resource: pixel_townhall.procedures_route_controller name_prefix: townhall. townhall.decrees_api: type: rest prefix: /admin/api resource: pixel_townhall.decrees_route_controller name_prefix: townhall. townhall.publics_markets_api: type: rest prefix: /admin/api resource: pixel_townhall.publics_markets_route_controller name_prefix: townhall. townhall.deiberations_api: type: rest prefix: /admin/api resource: pixel_townhall.deliberations_route_controller name_prefix: townhall.
Use
This bundle has a lot of different parts:
- Report: the reports of the municipal council
- Bulletin: town hall bulletins about the city life for example
- Procedure: the different procedures available in the town hall (ID card, passport, driving licence, ...)
- Decree: the municipal or prefectoral decrees
- Public market: the different public market (road working, housing construction) offered by the town hall
- Deliberation: the deliberations of the town hall
The following sections will present globally how to interact with the bundle as it is the same for each entity. When needed, a more specific presentation will be done.
Add/Edit
Go to the "Town hall" section in the administration interface. Then, click on the subsection you wish to intervene. To add, simply click on "Add". Fill the fields that are needed for your use.
The fields depend on the subsection you want to edit.
Report:
- Title
- Date (mandatory)
- PDF file
- Description
Bulletin:
- Title (mandatory)
- Date (mandatory)
- Cover
- PDF file
- Description
Procedure:
- Title (mandatory)
- URL (mandatory and filled automatically according to the title)
- Cover
- PDF file
- External link
- Category (mandatory)
- Description (mandatory)
Decree:
- Title (mandatory)
- Start date (mandatory)
- End date
- PDF file (mandatory)
- Type of decree (mandatory)
- Description
Public market:
- Title (mandatory)
- URL (mandatory and filled automatically according to the title)
- Published at (filled manually)
- Status (mandatory)
- Description (mandatory)
- List of documents
Deliberation:
- Title (mandatory)
- Date (mandatory)
- PDF file (mandatory)
- Description
Once you finished, click on "Save".
The entity you added is not visible on the website yet. In order to do that, click on "Activate?" or "Published?. It should be now visible for visitors.
To edit, simply click on the pencil at the left of the entity you wish to edit.
Some of these entities have a preview:
- Procedure
- Public market
Categories
As you may have seen in the previous section, some entities need a category, a type or a status. These categories, types and status need to be created in a very specific way.
For the categories:
- You must create a root category which must have its key named "procedures"
- Then, under this root category, you create all the categories you need
For the type:
- You must create a root category which must have its key named "decrees"
- Then, under this root category, you create all the categories you need
For the status:
- You must create a root category which must have its key named "publics_markets"
- Then, under this root category, you create all the categories you need
Remove/Restore
There are two ways to remove a town hall entity:
- Check every entity you want to remove and then click on "Delete"
- Go to the detail of an entity (see the "Add/Edit" section) and click on "Delete".
In both cases, the entity will be put in the trash.
To access the trash, go to the "Settings" and click on "Trash". To restore an entity, click on the clock at the left. Confirm the restore. You will be redirected to the detail of the entity you restored.
To remove permanently an entity, check all the entities you want to remove and click on "Delete".
Settings
This bundle comes with settings. To access the bundle settings, go to "Settings > Town hall management".
Here is the list of the different settings:
- Town hall name
- Weather
The weather setting is a textarea in which you can put HTML in order to use the weather service iframe.
Here is an example of how to use the settings:
<?php namespace Pixel\TownHallBundle\Controller\Website; use Doctrine\ORM\EntityManagerInterface; use Pixel\TownHallBundle\Entity\Setting; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\Routing\Annotation\Route; class MeteoController extends AbstractController { /** * @Route("meteo", name="meteo", options={"expose"=true}, methods={"POST"}) */ public function meteo(EntityManagerInterface $entityManager): JsonResponse { $setting = $entityManager->getRepository(Setting::class)->find(1); return new JsonResponse([ "success" => true, "template" => $setting->getMeteo(), ]); } }
Contributing
You can contribute to this bundle. The only thing you must do is respect the coding standard we implement.
You can find them in the ecs.php
file.