LivraisonParSecteurs : finalisation (suppression et création de secteur)
This commit is contained in:
@@ -5,6 +5,7 @@
|
|||||||
xsi:schemaLocation="http://thelia.net/schema/dic/config http://thelia.net/schema/dic/config/thelia-1.0.xsd">
|
xsi:schemaLocation="http://thelia.net/schema/dic/config http://thelia.net/schema/dic/config/thelia-1.0.xsd">
|
||||||
|
|
||||||
<forms>
|
<forms>
|
||||||
|
<form name="lps-area-create" class="LivraisonParSecteurs\Form\CreateForm"/>
|
||||||
<form name="lps-area-general-update" class="LivraisonParSecteurs\Form\GeneralForm"/>
|
<form name="lps-area-general-update" class="LivraisonParSecteurs\Form\GeneralForm"/>
|
||||||
<form name="lps-area-cities-update" class="LivraisonParSecteurs\Form\CitiesForm" />
|
<form name="lps-area-cities-update" class="LivraisonParSecteurs\Form\CitiesForm" />
|
||||||
<form name="lps-area-schedule-update" class="LivraisonParSecteurs\Form\ScheduleUpdateForm" />
|
<form name="lps-area-schedule-update" class="LivraisonParSecteurs\Form\ScheduleUpdateForm" />
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
xsi:schemaLocation="http://symfony.com/schema/routing http://symfony.com/schema/routing/routing-1.0.xsd">
|
xsi:schemaLocation="http://symfony.com/schema/routing http://symfony.com/schema/routing/routing-1.0.xsd">
|
||||||
|
|
||||||
<route id="livraisonparsecteurs.area.list" path="/admin/module/LivraisonParSecteurs">
|
<route id="livraisonparsecteurs.area.list" path="/admin/module/LivraisonParSecteurs" methods="get">
|
||||||
<default key="_controller">LivraisonParSecteurs\Controller\backOffice\ListController::viewAction</default>
|
<default key="_controller">LivraisonParSecteurs\Controller\backOffice\ListController::viewAction</default>
|
||||||
</route>
|
</route>
|
||||||
<route id="livraisonparsecteurs.toggle.active" path="/admin/module/LivraisonParSecteurs/toggle-online/{id}" methods="post">
|
<route id="livraisonparsecteurs.toggle.active" path="/admin/module/LivraisonParSecteurs/toggle-online/{id}" methods="post">
|
||||||
@@ -18,6 +18,12 @@
|
|||||||
<route id="livraisonparsecteurs.area.edit" path="/admin/module/LivraisonParSecteurs/edit" methods="post">
|
<route id="livraisonparsecteurs.area.edit" path="/admin/module/LivraisonParSecteurs/edit" methods="post">
|
||||||
<default key="_controller">LivraisonParSecteurs\Controller\backOffice\GeneralController::editArea</default>
|
<default key="_controller">LivraisonParSecteurs\Controller\backOffice\GeneralController::editArea</default>
|
||||||
</route>
|
</route>
|
||||||
|
<route id="lps-area-create" path="/admin/module/LivraisonParSecteurs" methods="post">
|
||||||
|
<default key="_controller">LivraisonParSecteurs\Controller\backOffice\GeneralController::createArea</default>
|
||||||
|
</route>
|
||||||
|
<route id="livraisonparsecteurs.area.delete" path="/admin/module/LivraisonParSecteurs/delete">
|
||||||
|
<default key="_controller">LivraisonParSecteurs\Controller\backOffice\GeneralController::deleteArea</default>
|
||||||
|
</route>
|
||||||
|
|
||||||
|
|
||||||
<route id="livraisonparsecteurs.area.schedule.delete" path="/admin/module/LivraisonParSecteurs/schedule/delete" methods="post">
|
<route id="livraisonparsecteurs.area.schedule.delete" path="/admin/module/LivraisonParSecteurs/schedule/delete" methods="post">
|
||||||
|
|||||||
@@ -3,13 +3,17 @@
|
|||||||
namespace LivraisonParSecteurs\Controller\backOffice;
|
namespace LivraisonParSecteurs\Controller\backOffice;
|
||||||
|
|
||||||
use LivraisonParSecteurs\LivraisonParSecteurs;
|
use LivraisonParSecteurs\LivraisonParSecteurs;
|
||||||
|
use LivraisonParSecteurs\Model\LpsArea;
|
||||||
use LivraisonParSecteurs\Model\LpsAreaQuery;
|
use LivraisonParSecteurs\Model\LpsAreaQuery;
|
||||||
|
use Propel\Runtime\ActiveQuery\Criteria;
|
||||||
use Propel\Runtime\Map\TableMap;
|
use Propel\Runtime\Map\TableMap;
|
||||||
use Propel\Runtime\Propel;
|
use Propel\Runtime\Propel;
|
||||||
|
use Symfony\Component\HttpFoundation\RedirectResponse;
|
||||||
use Thelia\Controller\Admin\BaseAdminController;
|
use Thelia\Controller\Admin\BaseAdminController;
|
||||||
use Thelia\Core\Security\AccessManager;
|
use Thelia\Core\Security\AccessManager;
|
||||||
use Thelia\Core\Security\Resource\AdminResources;
|
use Thelia\Core\Security\Resource\AdminResources;
|
||||||
use Thelia\Form\Exception\FormValidationException;
|
use Thelia\Form\Exception\FormValidationException;
|
||||||
|
use Thelia\Tools\URL;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class GeneralController
|
* Class GeneralController
|
||||||
@@ -68,4 +72,64 @@ class GeneralController extends BaseAdminController
|
|||||||
return $this->render("deliveryarea-list");
|
return $this->render("deliveryarea-list");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function createArea()
|
||||||
|
{
|
||||||
|
// Check current user authorization
|
||||||
|
if (null !== $response = $this->checkAuth(AdminResources::MODULE, LivraisonParSecteurs::getModuleCode(), AccessManager::VIEW))
|
||||||
|
return $response;
|
||||||
|
|
||||||
|
$con = Propel::getConnection();
|
||||||
|
$con->beginTransaction();
|
||||||
|
|
||||||
|
$error_msg = "";
|
||||||
|
$createForm = $this->createForm("lps-area-create", "form");
|
||||||
|
|
||||||
|
try {
|
||||||
|
$form = $this->validateForm($createForm, "POST");
|
||||||
|
$data = $form->getData();
|
||||||
|
|
||||||
|
$newArea = new LpsArea();
|
||||||
|
$newArea->fromArray($data, TableMap::TYPE_FIELDNAME);
|
||||||
|
$newArea->setId(LpsAreaQuery::create()->orderById(Criteria::DESC)->findOne($con)->getId() + 1);
|
||||||
|
$newArea->save();
|
||||||
|
$con->commit();
|
||||||
|
|
||||||
|
} catch (FormValidationException $ex) {
|
||||||
|
$error_msg = $this->createStandardFormValidationErrorMessage($ex);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($this->getRequest()->request->get("success_url") == null) {
|
||||||
|
return new RedirectResponse(URL::getInstance()->absoluteUrl("/admin/module/LivraisonParSecteurs"));
|
||||||
|
} else {
|
||||||
|
return new RedirectResponse(URL::getInstance()->absoluteUrl($this->getRequest()->request->get("success_url")));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function deleteArea()
|
||||||
|
{
|
||||||
|
// Check current user authorization
|
||||||
|
if (null !== $response = $this->checkAuth(AdminResources::MODULE, LivraisonParSecteurs::getModuleCode(), AccessManager::VIEW))
|
||||||
|
return $response;
|
||||||
|
|
||||||
|
$areaCity_id = $this->getRequest()->get('attr-area-id');
|
||||||
|
$query = LpsAreaQuery::create()->findById($areaCity_id);
|
||||||
|
if ($query === null)
|
||||||
|
$error_msg = "Area not found by Id";
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$con = Propel::getConnection();
|
||||||
|
$con->beginTransaction();
|
||||||
|
$query->delete($con);
|
||||||
|
$con->commit();
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($this->getRequest()->request->get("success_url") == null) {
|
||||||
|
return new RedirectResponse(URL::getInstance()->absoluteUrl("/admin/module/LivraisonParSecteurs"));
|
||||||
|
} else {
|
||||||
|
return new RedirectResponse(URL::getInstance()->absoluteUrl($this->getRequest()->request->get("success_url")));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
65
local/modules/LivraisonParSecteurs/Form/CreateForm.php
Normal file
65
local/modules/LivraisonParSecteurs/Form/CreateForm.php
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace LivraisonParSecteurs\Form;
|
||||||
|
|
||||||
|
use LivraisonParSecteurs\LivraisonParSecteurs;
|
||||||
|
use Symfony\Component\Validator\Constraints\GreaterThanOrEqual;
|
||||||
|
use Thelia\Form\BaseForm;
|
||||||
|
use Symfony\Component\Validator\Constraints;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class CreateForm
|
||||||
|
* @package LivraisonParSecteurs\Form
|
||||||
|
*/
|
||||||
|
class CreateForm extends BaseForm
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @inheritDoc
|
||||||
|
*/
|
||||||
|
protected function buildForm()
|
||||||
|
{
|
||||||
|
$this->formBuilder
|
||||||
|
->add(
|
||||||
|
"title",
|
||||||
|
"text",
|
||||||
|
[
|
||||||
|
"required" => true,
|
||||||
|
"constraints" => [new Constraints\NotBlank()],
|
||||||
|
"label" => $this->translator->trans('Area name', [], LivraisonParSecteurs::DOMAIN_NAME),
|
||||||
|
"label_attr" => ['for' => 'title']
|
||||||
|
])
|
||||||
|
->add(
|
||||||
|
"price",
|
||||||
|
"number",
|
||||||
|
[
|
||||||
|
"required" => true,
|
||||||
|
"constraints" => [new GreaterThanOrEqual(["value" => 0])],
|
||||||
|
"label" => $this->translator->trans('Delivery price', [], LivraisonParSecteurs::DOMAIN_NAME),
|
||||||
|
"label_attr" => ['for' => 'price']
|
||||||
|
])
|
||||||
|
->add(
|
||||||
|
"minimum_amount",
|
||||||
|
"number",
|
||||||
|
[
|
||||||
|
"required" => true,
|
||||||
|
"constraints" => [new GreaterThanOrEqual(["value" => 0])],
|
||||||
|
"label" => $this->translator->trans('Minimum amount', [], LivraisonParSecteurs::DOMAIN_NAME),
|
||||||
|
"label_attr" => ['for' => 'minimum_amount']
|
||||||
|
])
|
||||||
|
->add(
|
||||||
|
"active",
|
||||||
|
"number",
|
||||||
|
[
|
||||||
|
"required" => true
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @inheritDoc
|
||||||
|
*/
|
||||||
|
public function getName()
|
||||||
|
{
|
||||||
|
return "lps-area-create";
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -10,6 +10,8 @@ return array(
|
|||||||
'Cities' => 'Communes desservies',
|
'Cities' => 'Communes desservies',
|
||||||
'City' => 'Commune',
|
'City' => 'Commune',
|
||||||
'Create a delivery day' => 'Créer un nouveau jour de livraison',
|
'Create a delivery day' => 'Créer un nouveau jour de livraison',
|
||||||
|
'Create a new area' => 'Créer un nouveau secteur',
|
||||||
|
'Delete an area' => 'Supprimer un secteur',
|
||||||
'Delete a city from this area' => 'Supprimer une commune de livraison',
|
'Delete a city from this area' => 'Supprimer une commune de livraison',
|
||||||
'Delete an entry of schedule' => 'Supprimer un jour de livraison',
|
'Delete an entry of schedule' => 'Supprimer un jour de livraison',
|
||||||
'Delivered cities count' => 'Nb de communes desservies',
|
'Delivered cities count' => 'Nb de communes desservies',
|
||||||
@@ -19,6 +21,7 @@ return array(
|
|||||||
'Delivery delay' => 'Délai de livraison',
|
'Delivery delay' => 'Délai de livraison',
|
||||||
'Delivery ending time' => 'Fin de la tournée',
|
'Delivery ending time' => 'Fin de la tournée',
|
||||||
'Delivery price' => 'Frais de livraison',
|
'Delivery price' => 'Frais de livraison',
|
||||||
|
'Do you really want to remove this area ?' => 'Voulez-vous réellement supprimer ce secteur ?',
|
||||||
'Do you really want to remove this city ?' => 'Voulez-vous réellement retirer cette commune de ce secteur de livraison ?',
|
'Do you really want to remove this city ?' => 'Voulez-vous réellement retirer cette commune de ce secteur de livraison ?',
|
||||||
'Do you really want to delete this delivery day ?' => 'Voulez-vous réellement supprimer ce jour de livraison ?',
|
'Do you really want to delete this delivery day ?' => 'Voulez-vous réellement supprimer ce jour de livraison ?',
|
||||||
'Edit an area' => 'Modifier le secteur',
|
'Edit an area' => 'Modifier le secteur',
|
||||||
|
|||||||
@@ -71,6 +71,11 @@
|
|||||||
$("#active").val(data['value'] ? 1 : 0);
|
$("#active").val(data['value'] ? 1 : 0);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$('a.cities-remove').click(function (ev) {
|
||||||
|
$('#attr-cities-id-remove').val($(this).data('id'));
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
var hash = location.hash.slice(1);
|
var hash = location.hash.slice(1);
|
||||||
if (!hash) hash = "general";
|
if (!hash) hash = "general";
|
||||||
$('#tabbed-menu a[href="#' + hash + '"]').tab('show');
|
$('#tabbed-menu a[href="#' + hash + '"]').tab('show');
|
||||||
|
|||||||
@@ -38,6 +38,18 @@ mais{extends file="admin-layout.tpl"}
|
|||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
|
|
||||||
|
<caption class="clearfix">
|
||||||
|
{loop name="auth-create" type="auth" role="ADMIN" resource="admin.lps.general" access="CREATE" module="LivraisonParSecteurs"}
|
||||||
|
<div class="pull-right">
|
||||||
|
<a class="btn btn-default btn-primary"
|
||||||
|
title="{intl l='Add a new area' d='livraisonparsecteurs'}"
|
||||||
|
data-target="#area-create-modal" data-toggle="modal">
|
||||||
|
<i class="glyphicon glyphicon-plus-sign"></i>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
{/loop}
|
||||||
|
</caption>
|
||||||
|
|
||||||
<tbody>
|
<tbody>
|
||||||
{loop name="areas" type="lps_area"}
|
{loop name="areas" type="lps_area"}
|
||||||
<tr>
|
<tr>
|
||||||
@@ -71,6 +83,44 @@ mais{extends file="admin-layout.tpl"}
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
{* CREATE Modal *}
|
||||||
|
{form name="lps-area-create"}
|
||||||
|
{capture "area_create"}
|
||||||
|
{include file="form/area-create.html" form_name="lps-area-create"}
|
||||||
|
{/capture}
|
||||||
|
|
||||||
|
{include file="includes/generic-create-dialog.html"
|
||||||
|
|
||||||
|
dialog_id = "area-create-modal"
|
||||||
|
dialog_title = {intl l="Create a new area" d="livraisonparsecteurs"}
|
||||||
|
dialog_body = {$smarty.capture.area_create nofilter}
|
||||||
|
|
||||||
|
dialog_ok_label = {intl l="Create"}
|
||||||
|
dialog_cancel_label = {intl l="Cancel"}
|
||||||
|
|
||||||
|
form_action = {$current_url}
|
||||||
|
form_enctype = {form_enctype form=$form}
|
||||||
|
}
|
||||||
|
{/form}
|
||||||
|
|
||||||
|
|
||||||
|
{* DELETE modal *}
|
||||||
|
{capture "area_delete"}
|
||||||
|
{intl l="Do you really want to remove this area ?" d="livraisonparsecteurs"}
|
||||||
|
<input type="hidden" name="attr-area-id" id="attr-area-id" value="999"/>
|
||||||
|
<input type="hidden" name="success_url" value="{url path='/admin/module/LivraisonParSecteurs'}"/>
|
||||||
|
{/capture}
|
||||||
|
|
||||||
|
{include file="includes/generic-confirm-dialog.html"
|
||||||
|
dialog_id = "area-delete"
|
||||||
|
dialog_title = {intl l="Delete an area" d="livraisonparsecteurs"}
|
||||||
|
dialog_message = {$smarty.capture.area_delete nofilter}
|
||||||
|
dialog_ok_label = {intl l="Delete"}
|
||||||
|
dialog_cancel_label = {intl l="Cancel"}
|
||||||
|
form_action = {token_url path='/admin/module/LivraisonParSecteurs/delete'}
|
||||||
|
}
|
||||||
|
|
||||||
{/block}
|
{/block}
|
||||||
|
|
||||||
{block name="javascript-initialization"}
|
{block name="javascript-initialization"}
|
||||||
@@ -78,10 +128,12 @@ mais{extends file="admin-layout.tpl"}
|
|||||||
<script src="{$asset_url}"></script>
|
<script src="{$asset_url}"></script>
|
||||||
<script>
|
<script>
|
||||||
$(function() {
|
$(function() {
|
||||||
|
|
||||||
$('a.area-delete').click(function(ev) {
|
$('a.area-delete').click(function(ev) {
|
||||||
$('#area_delete_id').val($(this).data('id'));
|
$('#attr-area-id').val($(this).data('id'));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
$(".toggle-visible").on('switch-change', function (event, data) {
|
$(".toggle-visible").on('switch-change', function (event, data) {
|
||||||
$.ajax({
|
$.ajax({
|
||||||
method: "POST",
|
method: "POST",
|
||||||
|
|||||||
@@ -0,0 +1,46 @@
|
|||||||
|
{form name=$form_name}
|
||||||
|
{form_hidden_fields form=$form}
|
||||||
|
|
||||||
|
{render_form_field form=$form field="success_url" value={$success_url|default:{url path='/admin/module/LivraisonParSecteurs'}}}
|
||||||
|
|
||||||
|
{form_field form=$form field="title"}
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="control-label" for="{$label_attr.for}">
|
||||||
|
{intl l=$label d="livraisonparsecteurs"}
|
||||||
|
{if $required}<span class="required">*</span>{/if}
|
||||||
|
</label>
|
||||||
|
|
||||||
|
{form_error form=$form field="title"}{$message}{/form_error}
|
||||||
|
<input type="text" class="form-control" name="{$name}" id="{$label_attr.for}" value="{$TITLE}" {if $required}required{/if} />
|
||||||
|
</div>
|
||||||
|
{/form_field}
|
||||||
|
|
||||||
|
{form_field form=$form field="price"}
|
||||||
|
<div class="form-group form-inline">
|
||||||
|
<label class="control-label" for="{$label_attr.for}">
|
||||||
|
{intl l=$label d='livraisonparsecteurs'}
|
||||||
|
{if $required}<span class="required">*</span>{/if}
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<input type="text" id="{$label_attr.for}" class="form-control etroit" name="{$name}" value="{$PRICE}" {if $required}required{/if} /> €
|
||||||
|
</div>
|
||||||
|
{form_error form=$form field="price"}{$message}{/form_error}
|
||||||
|
{/form_field}
|
||||||
|
|
||||||
|
{form_field form=$form field="minimum_amount"}
|
||||||
|
<div class="form-group form-inline">
|
||||||
|
<label class="control-label" for="{$label_attr.for}">
|
||||||
|
{intl l=$label d='livraisonparsecteurs'}
|
||||||
|
{if $required}<span class="required">*</span>{/if}
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<input type="text" id="{$label_attr.for}" class="form-control etroit" name="{$name}" value="{$MINIMUM_AMOUNT}" {if $required}required{/if} /> €
|
||||||
|
</div>
|
||||||
|
{form_error form=$form field="minimum_amount"}{$message}{/form_error}
|
||||||
|
{/form_field}
|
||||||
|
|
||||||
|
{form_field form=$form field="active"}
|
||||||
|
<input type="hidden" id="{$label_attr.for}" name="{$name}" value="1"/>
|
||||||
|
{/form_field}
|
||||||
|
|
||||||
|
{/form}
|
||||||
Reference in New Issue
Block a user