Skip to content

Commit

Permalink
Separate add and edit routes for property
Browse files Browse the repository at this point in the history
Delagates parameters to routing
  • Loading branch information
trasher committed Jan 3, 2024
1 parent 118e690 commit a3e0534
Show file tree
Hide file tree
Showing 5 changed files with 80 additions and 23 deletions.
2 changes: 2 additions & 0 deletions _define.php
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,10 @@
'memberVehiclesList' => 'groupmanager',
'myVehiclesList' => 'member',
'vehiclesFilter' => 'member',
'vehicleAdd' => 'member',
'vehicleEdit' => 'member',
'ajaxModels' => 'member',
'doVehicleAdd' => 'member',
'doVehicleEdit' => 'member',
'batch-vehicleslist' => 'member',
'removeVehicle' => 'member',
Expand Down
18 changes: 14 additions & 4 deletions _routes.php
Original file line number Diff line number Diff line change
Expand Up @@ -76,13 +76,23 @@
)->setName('myVehiclesList')->add($authenticate);

$app->get(
'/vehicle/{action:add|edit}[/{id:\d+}]',
[Controller::class, 'showAddEditVehicle']
'/vehicle/add',
[Controller::class, 'showAddVehicle']
)->setName('vehicleAdd')->add($authenticate);

$app->get(
'/vehicle/edit/{id:\d+}',
[Controller::class, 'showEditVehicle']
)->setName('vehicleEdit')->add($authenticate);

$app->post(
'/vehicle/{action:add|edit}[/{id:\d+}]',
[Controller::class, 'doAddEditVehicle']
'/vehicle/add',
[Controller::class, 'doAddVehicle']
)->setName('doVehicleAdd')->add($authenticate);

$app->post(
'/vehicle/edit/{id:\d+}',
[Controller::class, 'doEditVehicle']
)->setName('doVehicleEdit')->add($authenticate);

$app->get(
Expand Down
71 changes: 58 additions & 13 deletions lib/GaletteAuto/Controllers/Controller.php
Original file line number Diff line number Diff line change
Expand Up @@ -273,6 +273,32 @@ public function vehiclesList(Request $request, Response $response, string $optio
return $response;
}

/**
* Show add vehicle route
*
* @param Request $request Request
* @param Response $response Response
*
* @return Response
*/
public function showAddVehicle(Request $request, Response $response) {
return $this->showAddEditVehicle($request, $response, 'add');
}

/**
* Show edit vehicle route
*
* @param Request $request Request
* @param Response $response Response
* @param int $id Vehicle id
*
* @return Response
*/
public function showEditVehicle(Request $request, Response $response, int $id)
{
return $this->showAddEditVehicle($request, $response, 'edit', $id);
}

/**
* Show add/edit route
*
Expand All @@ -287,16 +313,6 @@ public function showAddEditVehicle(Request $request, Response $response, string
{
$is_new = ($action === 'add');

if ($action === 'edit' && $id === null) {
throw new \RuntimeException(
_T("Car ID cannot be null calling edit route!", "auto")
);
} elseif ($action === 'add' && $id !== null) {
return $response
->withStatus(301)
->withHeader('Location', $this->routeparser->urlFor('vehicleEdit', ['action' => 'add']));
}

$auto = new Auto($this->plugins, $this->zdb);
if (!$is_new) {
$auto->load($id);
Expand Down Expand Up @@ -379,6 +395,33 @@ public function showAddEditVehicle(Request $request, Response $response, string
return $response;
}

/**
* Do add vahicle route
*
* @param Request $request Request
* @param Response $response Response
*
* @return Response
*/
public function doAddVehicle(Request $request, Response $response)
{
return $this->doAddEditVehicle($request, $response, 'new');
}

/**
* Do add/edit route
*
* @param Request $request Request
* @param Response $response Response
* @param int $id Vehicle id
*
* @return Response
*/
public function doEditVehicle(Request $request, Response $response, int $id)
{
return $this->doAddEditVehicle($request, $response, 'edit', $id);
}

/**
* Do add/edit route
*
Expand Down Expand Up @@ -430,9 +473,11 @@ public function doAddEditVehicle(Request $request, Response $response, string $a
if (count($error_detected) > 0) {
//store entity in session
$this->session->auto = $post;
$args = ['action' => $action];
$routename = 'vehicleEdit';
$route = $this->routeparser->urlFor($routename, $args);
if ($action === 'add') {
$route = $this->routeparser->urlFor('vehicleAdd');
} else {
$route = $this->routeparser->urlFor('vehicleEdit', ['id' => $id]);
}

foreach ($error_detected as $error) {
$this->flash->addMessage(
Expand Down
6 changes: 3 additions & 3 deletions templates/default/vehicles.html.twig
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@

{% block content %}
{% if mode == 'new' %}
{% set action = "add" %}
{% set action = url_for("doVehicleAdd") %}
{% else %}
{% set action = "edit" %}
{% set action = url_for("doVehicleEdit", {"id": car.id}) %}
{% endif %}
<form class="ui form" action="{{ url_for("doVehicleEdit", {"action": action}) }}" method="post" id="modifform" enctype="multipart/form-data">
<form class="ui form" action="{{ action }}" method="post" id="modifform" enctype="multipart/form-data">
<div class="ui styled fluid accordion field">
<div class="active title">
<i class="icon dropdown"></i>
Expand Down
6 changes: 3 additions & 3 deletions templates/default/vehicles_list.html.twig
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
{% block infoline_actions %}
<a
class="ui tiny labeled icon button"
href="{{ url_for("vehicleEdit", {"action": "add"}) }}"
href="{{ url_for("vehicleAdd") }}"
>
<i class="plus circle green icon" aria-hidden="true"></i>
{{ _T("Add new vehicle", "auto") }}
Expand All @@ -44,7 +44,7 @@
{% block body %}
{% for auto in autos %}
{% set brand = auto.model.obrand %}
{% set edit_link = url_for("vehicleEdit", {"action": "edit", "id": auto.id}) %}
{% set edit_link = url_for("vehicleEdit", {"id": auto.id}) %}

<tr class="{{ loop.index is odd ? 'odd' : 'even' }}">
<td class="collapsing" data-scope="row">
Expand All @@ -61,7 +61,7 @@
'label': _T("Edit %vehicle", "auto")|replace({"%vehicle": auto.name}),
'route': {
'name': 'vehicleEdit',
'args': {'action': 'edit', 'id': auto.id}
'args': {'id': auto.id}
},
'icon': 'edit'
},
Expand Down

0 comments on commit a3e0534

Please sign in to comment.