On avance sur LivraisonParSecteurs

This commit is contained in:
2021-02-04 17:51:49 +01:00
parent aa5a914df3
commit 4455b37b57
19 changed files with 518 additions and 151 deletions

View File

@@ -0,0 +1,38 @@
INSERT INTO `lps_area`(`id`,`title`) VALUES
(1, 'Capso'),
(2, 'Pays de Lumbres'),
(3, 'Haut des Flandres'),
(4, 'Flandres intérieur');
INSERT INTO `lps_area_city`(`id_area`,`zipcode`) VALUES
(1,'62120'),
(1,'62129'),
(1,'62219'),
(1,'62500'),
(1,'62510'),
(1,'62570'),
(1,'62575'),
(1,'62910');
INSERT INTO `lps_area_city`(`id_area`,`zipcode`) VALUES
(2,'62010'),
(2,'62024'),
(2,'62088'),
(2,'62229'),
(2,'62292'),
(2,'62309'),
(2,'62504'),
(2,'62534'),
(2,'62613'),
(2,'62656'),
(2,'62674'),
(2,'62702'),
(2,'62788'),
(2,'62794'),
(2,'62803'),
(2,'62882'),
(2,'62897'),
(2,'62898'),
(2,'62905');

View File

@@ -4,15 +4,18 @@
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.back.config" path="/admin/module/LivraisonParSecteurs"> <route id="livraisonparsecteurs.area.list" path="/admin/module/LivraisonParSecteurs">
<default key="_controller">LivraisonParSecteurs\Controller\BackOfficeController::viewAction</default> <default key="_controller">LivraisonParSecteurs\Controller\BackOfficeController::viewAction</default>
</route> </route>
<route id="livraisonparsecteurs.back.price" path="/admin/module/LivraisonParSecteurs/config"> <route id="livraisonparsecteurs.toggle.active" path="/admin/module/LivraisonParSecteurs/toggle-online/{id}" methods="post">
<default key="_controller">LivraisonParSecteurs\Controller\BackOfficeController::updatePrice</default>
</route>
<route id="livraisonparsecteurs.toggle.visible" path="/admin/module/LivraisonParSecteurs/toggle-online/{id}" methods="post">
<default key="_controller">LivraisonParSecteurs\Controller\BackOfficeController::toggleActive</default> <default key="_controller">LivraisonParSecteurs\Controller\BackOfficeController::toggleActive</default>
<requirement key="id">\d+</requirement> <requirement key="id">\d+</requirement>
</route> </route>
<route id="livraisonparsecteurs.area.view" path="/admin/module/LivraisonParSecteurs/edit" methods="get">
<default key="_controller">LivraisonParSecteurs\Controller\BackOfficeController::viewArea</default>
</route>
<route id="livraisonparsecteurs.area.edit" path="/admin/module/LivraisonParSecteurs/edit" methods="post">
<default key="_controller">LivraisonParSecteurs\Controller\BackOfficeController::editArea</default>
</route>
</routes> </routes>

View File

@@ -4,95 +4,63 @@
SET FOREIGN_KEY_CHECKS = 0; SET FOREIGN_KEY_CHECKS = 0;
-- --------------------------------------------------------------------- -- ---------------------------------------------------------------------
-- lps_secteur -- lps_area
-- --------------------------------------------------------------------- -- ---------------------------------------------------------------------
DROP TABLE IF EXISTS `lps_secteur`; DROP TABLE IF EXISTS `lps_area`;
CREATE TABLE `lps_secteur` CREATE TABLE `lps_area`
( (
`id` INTEGER NOT NULL, `id` INTEGER NOT NULL,
`nom` VARCHAR(50) NOT NULL, `title` VARCHAR(50) NOT NULL,
`active` TINYINT DEFAULT 1 NOT NULL, `active` TINYINT DEFAULT 1 NOT NULL,
`price` INTEGER DEFAULT 0 NOT NULL,
`created_at` DATETIME, `created_at` DATETIME,
`updated_at` DATETIME, `updated_at` DATETIME,
PRIMARY KEY (`id`) PRIMARY KEY (`id`)
) ENGINE=InnoDB; ) ENGINE=InnoDB;
INSERT INTO `lps_secteur`(`id`,`nom`) VALUES (1, 'Capso'), (2, 'Pays de Lumbres'), (3, 'Haut des Flanders'), (4, 'Flandres intérieur');
-- --------------------------------------------------------------------- -- ---------------------------------------------------------------------
-- lps_secteur_commune -- lps_area_city
-- --------------------------------------------------------------------- -- ---------------------------------------------------------------------
DROP TABLE IF EXISTS `lps_secteur_commune`; DROP TABLE IF EXISTS `lps_area_city`;
CREATE TABLE `lps_secteur_commune` CREATE TABLE `lps_area_city`
( (
`id` INTEGER NOT NULL AUTO_INCREMENT, `id` INTEGER NOT NULL AUTO_INCREMENT,
`id_secteur` INTEGER NOT NULL, `id_area` INTEGER NOT NULL,
`zipcode` VARCHAR(10) NOT NULL, `zipcode` VARCHAR(10) NOT NULL,
`created_at` DATETIME, `created_at` DATETIME,
`updated_at` DATETIME, `updated_at` DATETIME,
PRIMARY KEY (`id`), PRIMARY KEY (`id`),
INDEX `fi_secteur_commune_secteur` (`id_secteur`), INDEX `fi_area_area_city` (`id_area`),
CONSTRAINT `fk_secteur_commune_secteur` CONSTRAINT `fk_area_area_city`
FOREIGN KEY (`id_secteur`) FOREIGN KEY (`id_area`)
REFERENCES `lps_secteur` (`id`) REFERENCES `lps_area` (`id`)
ON DELETE CASCADE ON DELETE CASCADE
) ENGINE=InnoDB; ) ENGINE=InnoDB;
INSERT INTO `lps_secteur_commune`(`id_secteur`,`zipcode`) VALUES
(1,'62120'),
(1,'62129'),
(1,'62219'),
(1,'62500'),
(1,'62510'),
(1,'62570'),
(1,'62575'),
(1,'62910');
INSERT INTO `lps_secteur_commune`(`id_secteur`,`zipcode`) VALUES
(2,'62010'),
(2,'62024'),
(2,'62088'),
(2,'62229'),
(2,'62292'),
(2,'62309'),
(2,'62504'),
(2,'62534'),
(2,'62613'),
(2,'62656'),
(2,'62674'),
(2,'62702'),
(2,'62788'),
(2,'62794'),
(2,'62803'),
(2,'62882'),
(2,'62897'),
(2,'62898'),
(2,'62905');
-- --------------------------------------------------------------------- -- ---------------------------------------------------------------------
-- lps_secteur_horaires -- lps_area_schedule
-- --------------------------------------------------------------------- -- ---------------------------------------------------------------------
DROP TABLE IF EXISTS `lps_secteur_horaires`; DROP TABLE IF EXISTS `lps_area_schedule`;
CREATE TABLE `lps_secteur_horaires` CREATE TABLE `lps_area_schedule`
( (
`id` INTEGER NOT NULL AUTO_INCREMENT, `id` INTEGER NOT NULL AUTO_INCREMENT,
`id_secteur` INTEGER NOT NULL, `id_area` INTEGER NOT NULL,
`jour` INTEGER NOT NULL, `day` INTEGER NOT NULL,
`heure_debut` TIME NOT NULL, `begin_time` TIME NOT NULL,
`heure_fin` TIME NOT NULL, `end_time` TIME NOT NULL,
`created_at` DATETIME, `created_at` DATETIME,
`updated_at` DATETIME, `updated_at` DATETIME,
PRIMARY KEY (`id`), PRIMARY KEY (`id`),
INDEX `fi_secteur_horaires_secteur` (`id_secteur`), INDEX `fi_area_area_schedule` (`id_area`),
CONSTRAINT `fk_secteur_horaires_secteur` CONSTRAINT `fk_area_area_schedule`
FOREIGN KEY (`id_secteur`) FOREIGN KEY (`id_area`)
REFERENCES `lps_secteur` (`id`) REFERENCES `lps_area` (`id`)
ON DELETE CASCADE ON DELETE CASCADE
) ENGINE=InnoDB; ) ENGINE=InnoDB;

View File

@@ -2,7 +2,11 @@
namespace LivraisonParSecteurs\Controller; namespace LivraisonParSecteurs\Controller;
use LivraisonParSecteurs\LivraisonParSecteurs;
use LivraisonParSecteurs\Model\LpsAreaQuery;
use Thelia\Controller\Admin\BaseAdminController; use Thelia\Controller\Admin\BaseAdminController;
use Thelia\Core\Security\AccessManager;
use Thelia\Core\Security\Resource\AdminResources;
/** /**
* Class BackOfficeController * Class BackOfficeController
@@ -12,17 +16,36 @@ class BackOfficeController extends BaseAdminController
{ {
public function viewAction($params = []) public function viewAction($params = [])
{ {
return $this->render("secteurs"); return $this->render("deliveryarea-list");
} }
public function toggleActive($params = []) public function toggleActive($id)
{ {
return $this->render("secteurs"); // Check current user authorization
if (null !== $response = $this->checkAuth(AdminResources::MODULE, LivraisonParSecteurs::getModuleCode(), AccessManager::UPDATE))
return $response;
$deliveryarea = LpsAreaQuery::create()->findOneById($id);
$deliveryarea->setActive($deliveryarea->getActive() ? 0 : 1)->save();
return $this->render("deliveryarea-list");
} }
public function updatePrice($params = []) public function updatePrice($params = [])
{ {
return $this->render("secteurs"); return $this->render("deliveryarea-list");
} }
public function viewArea()
{
$selectedArea = LpsAreaQuery::create()->findOneById($this->getRequest()->query->get("area_id"));
return $this->render("deliveryarea-edit", array('module_code' => 'DeliveryRound',
'area_id' => $selectedArea));
}
public function editArea()
{
$selectedArea = LpsAreaQuery::create()->findOneById($id);
return $this->render("deliveryarea-edit");
}
} }

View File

@@ -3,6 +3,7 @@
namespace LivraisonParSecteurs\Form; namespace LivraisonParSecteurs\Form;
use LivraisonParSecteurs\LivraisonParSecteurs; use LivraisonParSecteurs\LivraisonParSecteurs;
use LivraisonParSecteurs\Model\LpsAreaQuery;
use Thelia\Form\BaseForm; use Thelia\Form\BaseForm;
use Symfony\Component\Validator\Constraints; use Symfony\Component\Validator\Constraints;
@@ -23,7 +24,16 @@ class ConfigForm extends BaseForm
'required' => true, 'required' => true,
'label' => $this->translator->trans('Price', [], LivraisonParSecteurs::DOMAIN_NAME), 'label' => $this->translator->trans('Price', [], LivraisonParSecteurs::DOMAIN_NAME),
'label_attr' => ['for' => 'price'], 'label_attr' => ['for' => 'price'],
'data' => LivraisonParSecteurs::getConfigValue('price', 0) 'attr' => array()
])
->add(
'active',
'number',
[
'required' => true,
'label' => $this->translator->trans('Active', [], LivraisonParSecteurs::DOMAIN_NAME),
'label_attr' => ['for' => 'active'],
'attr' => array()
] ]
); );
} }

View File

@@ -30,13 +30,8 @@ class AdminHook extends BaseHook
); );
if ($isGranted) { if ($isGranted) {
$event->add($this->render("secteurs.html", $event->getArguments())); $event->add($this->render("deliveryarea-list.html", $event->getArguments()));
} }
} }
public function onModuleConfigJs(HookRenderEvent $event)
{
$event->add($this->render('script/livraisonparsecteurs-js.html'));
}
} }

View File

@@ -2,14 +2,13 @@
namespace LivraisonParSecteurs\Loop; namespace LivraisonParSecteurs\Loop;
use Propel\Runtime\ActiveQuery\Criteria;
use Thelia\Core\Template\Element\BaseLoop; use Thelia\Core\Template\Element\BaseLoop;
use Thelia\Core\Template\Element\LoopResult; use Thelia\Core\Template\Element\LoopResult;
use Thelia\Core\Template\Element\LoopResultRow; use Thelia\Core\Template\Element\LoopResultRow;
use Thelia\Core\Template\Element\PropelSearchLoopInterface; use Thelia\Core\Template\Element\PropelSearchLoopInterface;
use Thelia\Core\Template\Loop\Argument\Argument; use Thelia\Core\Template\Loop\Argument\Argument;
use Thelia\Core\Template\Loop\Argument\ArgumentCollection; use Thelia\Core\Template\Loop\Argument\ArgumentCollection;
use LivraisonParSecteurs\Model\LpsSecteurQuery; use LivraisonParSecteurs\Model\LpsAreaQuery;
/** /**
* Class AreaLoop * Class AreaLoop
@@ -33,8 +32,9 @@ class AreaLoop extends BaseLoop implements PropelSearchLoopInterface
$loopResultRow = new LoopResultRow($lps_area); $loopResultRow = new LoopResultRow($lps_area);
$loopResultRow $loopResultRow
->set("ID", $lps_area->getId()) ->set("ID", $lps_area->getId())
->set("NAME", $lps_area->getNom()) ->set("TITLE", $lps_area->getTitle())
->set("ACTIVE", $lps_area->getActive()) ->set("ACTIVE", $lps_area->getActive())
->set("PRICE", $lps_area->getPrice())
->set("DELIVERY_DAYS", "Lundi....") ->set("DELIVERY_DAYS", "Lundi....")
; ;
$loopResult->addRow($loopResultRow); $loopResult->addRow($loopResultRow);
@@ -58,9 +58,17 @@ class AreaLoop extends BaseLoop implements PropelSearchLoopInterface
*/ */
public function buildModelCriteria() public function buildModelCriteria()
{ {
$query = LpsSecteurQuery::create(); $query = LpsAreaQuery::create();
return $query->orderByNom(); /* Filtrage éventuel */
if (null != $id = $this->getId()) {
$query->filterById($id);
}
if (null != $active = $this->getActive()) {
$query->filterByActive($active);
}
return $query->orderByTitle();
} }
} }

View File

@@ -0,0 +1,67 @@
<?php
namespace LivraisonParSecteurs\Loop;
use LivraisonParSecteurs\Model\LpsAreaScheduleQuery;
use Thelia\Core\Template\Element\BaseLoop;
use Thelia\Core\Template\Element\LoopResult;
use Thelia\Core\Template\Element\LoopResultRow;
use Thelia\Core\Template\Element\PropelSearchLoopInterface;
use Thelia\Core\Template\Loop\Argument\Argument;
use Thelia\Core\Template\Loop\Argument\ArgumentCollection;
use LivraisonParSecteurs\Model\LpsAreaQuery;
/**
* Class AreaScheduleLoop
* @package LivraisonParSecteurs\Loop
*/
class AreaScheduleLoop extends BaseLoop implements PropelSearchLoopInterface
{
public $countable = false;
public $timestampable = false;
public $versionable = false;
/**
* @param LoopResult $loopResult
*
* @return LoopResult
*/
public function parseResults(LoopResult $loopResult)
{
foreach ($loopResult->getResultDataCollection() as $lps_area_schedule) {
$loopResultRow = new LoopResultRow($lps_area_schedule);
$loopResultRow
->set("ID", $lps_area->getId())
->set("TITLE", $lps_area->getTitle())
->set("ACTIVE", $lps_area->getActive())
->set("PRICE", $lps_area->getPrice())
->set("DELIVERY_DAYS", "Lundi....")
;
$loopResult->addRow($loopResultRow);
}
return $loopResult;
}
/**
* @inheritdoc
*/
protected function getArgDefinitions()
{
return new ArgumentCollection(
Argument::createIntListTypeArgument('id_area')
);
}
/**
* @inheritdoc
*/
public function buildModelCriteria()
{
$query = LpsAreaScheduleQuery::create();
$query->filterByIdArea($this->getIdArea());
return $query->orderByDay()->orderByBeginTime();
}
}

View File

@@ -2,10 +2,10 @@
namespace LivraisonParSecteurs\Model; namespace LivraisonParSecteurs\Model;
use LivraisonParSecteurs\Model\Base\LpsSecteur as BaseLpsSecteur; use LivraisonParSecteurs\Model\Base\LpsArea as BaseLpsArea;
/** /**
* Skeleton subclass for representing a row from the 'lps_secteur' table. * Skeleton subclass for representing a row from the 'lps_area' table.
* *
* *
* *
@@ -14,7 +14,7 @@ use LivraisonParSecteurs\Model\Base\LpsSecteur as BaseLpsSecteur;
* long as it does not already exist in the output directory. * long as it does not already exist in the output directory.
* *
*/ */
class LpsSecteur extends BaseLpsSecteur class LpsArea extends BaseLpsArea
{ {
} }

View File

@@ -2,10 +2,10 @@
namespace LivraisonParSecteurs\Model; namespace LivraisonParSecteurs\Model;
use LivraisonParSecteurs\Model\Base\LpsSecteurCommune as BaseLpsSecteurCommune; use LivraisonParSecteurs\Model\Base\LpsAreaCity as BaseLpsAreaCity;
/** /**
* Skeleton subclass for representing a row from the 'lps_secteur_commune' table. * Skeleton subclass for representing a row from the 'lps_area_city' table.
* *
* *
* *
@@ -14,7 +14,7 @@ use LivraisonParSecteurs\Model\Base\LpsSecteurCommune as BaseLpsSecteurCommune;
* long as it does not already exist in the output directory. * long as it does not already exist in the output directory.
* *
*/ */
class LpsSecteurCommune extends BaseLpsSecteurCommune class LpsAreaCity extends BaseLpsAreaCity
{ {
} }

View File

@@ -2,10 +2,10 @@
namespace LivraisonParSecteurs\Model; namespace LivraisonParSecteurs\Model;
use LivraisonParSecteurs\Model\Base\LpsSecteurCommuneQuery as BaseLpsSecteurCommuneQuery; use LivraisonParSecteurs\Model\Base\LpsAreaCityQuery as BaseLpsAreaCityQuery;
/** /**
* Skeleton subclass for performing query and update operations on the 'lps_secteur_commune' table. * Skeleton subclass for performing query and update operations on the 'lps_area_city' table.
* *
* *
* *
@@ -14,7 +14,7 @@ use LivraisonParSecteurs\Model\Base\LpsSecteurCommuneQuery as BaseLpsSecteurComm
* long as it does not already exist in the output directory. * long as it does not already exist in the output directory.
* *
*/ */
class LpsSecteurCommuneQuery extends BaseLpsSecteurCommuneQuery class LpsAreaCityQuery extends BaseLpsAreaCityQuery
{ {
} }

View File

@@ -2,10 +2,10 @@
namespace LivraisonParSecteurs\Model; namespace LivraisonParSecteurs\Model;
use LivraisonParSecteurs\Model\Base\LpsSecteurQuery as BaseLpsSecteurQuery; use LivraisonParSecteurs\Model\Base\LpsAreaQuery as BaseLpsAreaQuery;
/** /**
* Skeleton subclass for performing query and update operations on the 'lps_secteur' table. * Skeleton subclass for performing query and update operations on the 'lps_area' table.
* *
* *
* *
@@ -14,7 +14,7 @@ use LivraisonParSecteurs\Model\Base\LpsSecteurQuery as BaseLpsSecteurQuery;
* long as it does not already exist in the output directory. * long as it does not already exist in the output directory.
* *
*/ */
class LpsSecteurQuery extends BaseLpsSecteurQuery class LpsAreaQuery extends BaseLpsAreaQuery
{ {
} }

View File

@@ -2,10 +2,10 @@
namespace LivraisonParSecteurs\Model; namespace LivraisonParSecteurs\Model;
use LivraisonParSecteurs\Model\Base\LpsSecteurHoraires as BaseLpsSecteurHoraires; use LivraisonParSecteurs\Model\Base\LpsAreaSchedule as BaseLpsAreaSchedule;
/** /**
* Skeleton subclass for representing a row from the 'lps_secteur_horaires' table. * Skeleton subclass for representing a row from the 'lps_area_schedule' table.
* *
* *
* *
@@ -14,7 +14,7 @@ use LivraisonParSecteurs\Model\Base\LpsSecteurHoraires as BaseLpsSecteurHoraires
* long as it does not already exist in the output directory. * long as it does not already exist in the output directory.
* *
*/ */
class LpsSecteurHoraires extends BaseLpsSecteurHoraires class LpsAreaSchedule extends BaseLpsAreaSchedule
{ {
} }

View File

@@ -2,10 +2,10 @@
namespace LivraisonParSecteurs\Model; namespace LivraisonParSecteurs\Model;
use LivraisonParSecteurs\Model\Base\LpsSecteurHorairesQuery as BaseLpsSecteurHorairesQuery; use LivraisonParSecteurs\Model\Base\LpsAreaScheduleQuery as BaseLpsAreaScheduleQuery;
/** /**
* Skeleton subclass for performing query and update operations on the 'lps_secteur_horaires' table. * Skeleton subclass for performing query and update operations on the 'lps_area_schedule' table.
* *
* *
* *
@@ -14,7 +14,7 @@ use LivraisonParSecteurs\Model\Base\LpsSecteurHorairesQuery as BaseLpsSecteurHor
* long as it does not already exist in the output directory. * long as it does not already exist in the output directory.
* *
*/ */
class LpsSecteurHorairesQuery extends BaseLpsSecteurHorairesQuery class LpsAreaScheduleQuery extends BaseLpsAreaScheduleQuery
{ {
} }

View File

@@ -0,0 +1,70 @@
{extends file="admin-layout.tpl"}
{block name="page-title"}{intl l='My areas' d="livraisonparsecteurs"}{/block}
{block name="check-access"}update{/block}
{block name="check-module"}LivraisonParSecteurs{/block}
{block name="main-content"}
<div id="wrapper" class="container">
{assign "area_id" $smarty.get.area_id}
{if $form_error}
<div class="alert alert-danger">{$form_error_message}</div>
{/if}
<div class="form-container">
{include
file = "includes/inner-form-toolbar.html"
hide_submit_buttons = false
pageUrl = "{url path='/admin/module/LivraisonParSecteurs/edit' area_id=$area_id}"
closeUrl = "{url path='/admin/module/LivraisonParSecteurs'}"
current_tab = "general"
}
</div>
<div class="general-block-decorator">
<div class="title title-without-tabs">
{intl l='Edit an area' d='livraisonparsecteurs'}&nbsp;: <b>{loop name="area" type="lps_area" id={$area_id}}{$TITLE}{/loop}</b>
</div>
{hookblock name="area.tabs" area=$area_id}
<ul class="nav nav-tabs" id="tabbed-menu">
{loop name="auth-general" type="auth" role="ADMIN" resource="admin" access="VIEW" module="LivraisonParSecteurs"}
<li class="active"><a href="#general" data-toggle="tab">{intl l="General" d="livraisonparsecteurs"}</a></li>
{/loop}
{loop name="auth-schedule" type="auth" role="ADMIN" resource="admin.schedule" access="VIEW" module="LivraisonParSecteurs"}
<li><a href="#schedule" data-toggle="tab">{intl l="Schedule" d="livraisonparsecteurs"}</a></li>
{/loop}
{loop name="auth-cities" type="auth" role="ADMIN" resource="admin.cities" access="VIEW" module="LivraisonParSecteurs"}
<li><a href="#cities" data-toggle="tab">{intl l="Cities" d="livraisonparsecteurs"}</a></li>
{/loop}
</ul>
<div class="tab-content">
{loop name="auth-general-tab" type="auth" role="ADMIN" resource="admin" access="VIEW" module="LivraisonParSecteurs"}
<div class="tab-pane fade in active" id="general">
{include file="includes/area-general.html"}
</div>
{/loop}
{loop name="auth-schedule-tab" type="auth" role="ADMIN" resource="admin.schedule" access="VIEW" module="LivraisonParSecteurs"}
<div class="tab-pane fade" id="schedule">
{* {include file="includes/area-schedule.html"} *}
</div>
{/loop}
{loop name="auth-cities-tab" type="auth" role="ADMIN" resource="admin.cities" access="VIEW" module="LivraisonParSecteurs"}
<div class="tab-pane fade" id="cities">
{* {include file="includes/area-cities.html"} *}
</div>
{/loop}
</div>
{/hookblock}
</div>
</div>
{/block}
{block name="javascript-initialization"}
{javascripts file='assets/js/bootstrap-switch/bootstrap-switch.js'}
<script src="{$asset_url}"></script>
{/javascripts}
{/block}

View File

@@ -4,7 +4,7 @@
{$admin_current_location = 'module'} {$admin_current_location = 'module'}
{/block} {/block}
{block name="page-title"}{intl l='Configuration'}{/block} {block name="page-title"}{intl l='Title of config view' d='livraisonparsecteurs'}{/block}
{block name="check-resource"}admin.module{/block} {block name="check-resource"}admin.module{/block}
{block name="check-access"}view{/block} {block name="check-access"}view{/block}
@@ -19,38 +19,6 @@
</div> </div>
{/if} {/if}
<div class="general-block-decorator">
<div class="title title-without-tabs">
{intl l="Home delivery cost" d='livraisonparsecteurs'}
</div>
{form name='livraisonparsecteurs.config_form'}
<form action="{url path='/admin/module/LivraisonParSecteurs/config'}" method="post" class="form-inline">
{form_hidden_fields form=$form}
{if $form_error}
<div class="alert alert-danger">{$form_error_message}</div>
{/if}
{form_field form=$form field="price"}
<div class="form-group">
<label class="control-label" for="{$label_attr.for}">
{$label}
</label>
<input type="text" id="{$label_attr.for}" class="form-control" name="{$name}" value="{$value}"
{if $required}required{/if} />
</div>
{/form_field}
<div class="form-group">
<button class="btn btn-info" type="submit">{intl l='Save' d='livraisonparsecteurs'}</button>
</div>
</form>
{/form}
</div>
<div class="general-block-decorator"> <div class="general-block-decorator">
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-striped table-condensed" id="areas-table"> <table class="table table-striped table-condensed" id="areas-table">
@@ -60,28 +28,18 @@
<thead> <thead>
<tr> <tr>
{$order} <th>{intl l="Area name" d='livraisonparsecteurs'}</th>
<th> <th>{intl l="Active" d='livraisonparsecteurs'}</th>
{intl l="Area name" d='livraisonparsecteurs'} <th>{intl l="Delivery price" d='livraisonparsecteurs'}</th>
</th> <th>{intl l="Delivery days" d='livraisonparsecteurs'}</th>
<th> <th>{intl l="Actions" d='livraisonparsecteurs'}</th>
{intl l="Active" d='livraisonparsecteurs'}
</th>
<th>
{intl l="Delivery days" d='livraisonparsecteurs'}
</th>
<th>
{intl l="Actions" d='livraisonparsecteurs'}
</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
{loop name="areas" type="lps_area" backend_context="yes" order=$order force_return=true} {loop name="areas" type="lps_area" backend_context="yes"}
<tr> <tr>
<td> <td><a href="{url path='/admin/module/LivraisonParSecteurs/edit' area_id=$ID}">{$TITLE}</a></td>
<a href="{url path='/admin/module/LivraisonParSecteurs/secteurs/edit' area_id=$ID}">{$NAME}</a>
</td>
<td> <td>
<div class="make-switch switch-small toggle-visible" data-id="{$ID}" data-on="success" <div class="make-switch switch-small toggle-visible" data-id="{$ID}" data-on="success"
data-off="danger" data-on-label="<i class='glyphicon glyphicon-ok'></i>" data-off="danger" data-on-label="<i class='glyphicon glyphicon-ok'></i>"
@@ -89,12 +47,11 @@
<input type="checkbox" class="link" {if $ACTIVE == 1}checked="checked"{/if}> <input type="checkbox" class="link" {if $ACTIVE == 1}checked="checked"{/if}>
</div> </div>
</td> </td>
<td> <td>{$PRICE} €</td>
{$DELIVERY_DAYS} <td>{$DELIVERY_DAYS}</td>
</td>
<td> <td>
<div class="btn-group"> <div class="btn-group">
<a class="btn btn-default btn-xs" title="{intl l='Edit this area'}" href="{url path='/admin/module/LivraisonParSecteurs/secteurs/edit' area_id=$ID}"> <a class="btn btn-default btn-xs" title="{intl l='Edit this area'}" href="{url path='/admin/module/LivraisonParSecteurs/edit' area_id=$ID}">
<i class="glyphicon glyphicon-edit"></i> <i class="glyphicon glyphicon-edit"></i>
</a> </a>
<a class="btn btn-default btn-xs area-delete" title="{intl l='Delete this area'}" data-target="#area-delete" data-toggle="modal" data-id="{$ID}"> <a class="btn btn-default btn-xs area-delete" title="{intl l='Delete this area'}" data-target="#area-delete" data-toggle="modal" data-id="{$ID}">
@@ -124,7 +81,7 @@
$(".toggle-visible").on('switch-change', function (event, data) { $(".toggle-visible").on('switch-change', function (event, data) {
$.ajax({ $.ajax({
method: "POST", method: "POST",
url: "{url path='admin/module/LivraisonParSecteurs/secteurs/toggle-online/'}" + $(this).data('id') url: "{url path='admin/module/LivraisonParSecteurs/toggle-online/'}" + $(this).data('id')
}); });
}); });
}); });

View File

@@ -0,0 +1,88 @@
<div class="row">
<div class="col-md-12">
<table class="table table-striped table-condensed">
<caption class="clearfix">
{loop name="auth-create" type="auth" role="ADMIN" resource="admin.livraisonparsecteurs.schedules" access="CREATE" module="LivraisonParSecteurs"}
<div class="pull-right">
<a class="btn btn-default btn-primary dealer-schedules-default"
title="{intl l='Create a new Default Schedules' d='livraisonparsecteurs'}"
data-target="#dealer-schedules-create" data-toggle="modal">
<i class="glyphicon glyphicon-plus-sign"></i>
</a>
</div>
{/loop}
<h4>{intl l="Default Schedules" d="livraisonparsecteurs"}</h4>
</caption>
<thead>
<tr>
<th>
{intl l="Day" d="livraisonparsecteurs"}
</th>
<th>
{intl l="Begin" d="livraisonparsecteurs"}
</th>
<th>
{intl l="End" d="livraisonparsecteurs"}
</th>
<th>
{intl l="Actions" d="livraisonparsecteurs"}
</th>
</tr>
</thead>
<tbody>
{loop name="dealer-schedules-defaults" type="dealer_schedules" dealer_id=$smarty.get.dealer_id default_period=true order="day,begin"}
<tr>
<td>
{$DAY_LABEL}
</td>
<td>
{format_date date=$BEGIN format="H:i"}
</td>
<td>
{format_date date=$END format="H:i"}
</td>
{* Actions *}
<td>
<div class="btn-group">
{loop name="auth-edit" type="auth" role="ADMIN" resource="admin.dealer.schedules" access="UPDATE" module="Dealer"}
<a class="btn btn-default btn-xs dealer-schedules-update-default"
title="{intl l='Modify this Schedule' d='livraisonparsecteurs'}"
data-target="#dealer-schedules-update" data-toggle="modal" data-id="{$ID}"
data-day="{$DAY}" data-begin="{format_date date=$BEGIN format="H:i"}"
data-end="{format_date date=$END format="H:i"}">
<i class="glyphicon glyphicon-edit"></i>
</a>
{/loop}
{loop name="auth-edit" type="auth" role="ADMIN" resource="admin.dealer.schedules" access="CREATE" module="Dealer"}
<a class="btn btn-default btn-xs dealer-schedules-clone"
title="{intl l='Clone this Schedule' d='livraisonparsecteurs'}"
data-target="#dealer-schedules-clone" data-toggle="modal" data-id="{$ID}">
<i class="glyphicon glyphicon-plus-sign"></i>
</a>
{/loop}
{loop name="auth-delete" type="auth" role="ADMIN" resource="admin.dealer.schedules" access="DELETE" module="Dealer"}
<a class="btn btn-default btn-xs dealer-schedules-delete"
title="{intl l='Delete this Schedule' d='livraisonparsecteurs'}"
data-target="#dealer-schedules-delete" data-toggle="modal" data-id="{$ID}">
<i class="glyphicon glyphicon-trash"></i>
</a>
{/loop}
</div>
</td>
</tr>
{/loop}
{elseloop rel="dealer-schedules-defaults"}
<tr>
<td colspan="1000">
<div class="alert alert-info">
{intl l="There is no Default Schedules" d="livraisonparsecteurs"}
</div>
</td>
</tr>
{/elseloop}
</tbody>
</table>
</div>
</div>

View File

@@ -0,0 +1,49 @@
<div class="row">
<div class="col-md-12">
<div class="general-block-decorator">
{loop name="area" type="lps_area" id="$area_id"}
{form name='livraisonparsecteurs_config_general'}
<form action="{url path='/admin/module/LivraisonParSecteurs/edit'}" method="post" class="form-inline">
{form_hidden_fields form=$form}
{if $form_error}
<div class="alert alert-danger">{$form_error_message}</div>
{/if}
{form_field form=$form field="price"}
<div class="form-group">
<label class="control-label" for="{$label_attr.for}">
{$label}
</label>
<input type="text" id="{$label_attr.for}" class="form-control" name="{$name}" value="{$PRICE}"
{if $required}required{/if} />
</div>
{/form_field}
{form_field form=$form field="active"}
<div class="form-group">
<label class="control-label" for="{$label_attr.for}">
{$label}
</label>
<div class="make-switch switch-small toggle-visible" data-id="{$ID}" data-on="success"
data-off="danger" data-on-label="<i class='glyphicon glyphicon-ok'></i>"
data-off-label="<i class='glyphicon glyphicon-remove'></i>">
<input type="checkbox" class="link" {if $ACTIVE == 1}checked="checked"{/if}>
</div>
</div>
{/form_field}
<div class="form-group">
<button class="btn btn-info" type="submit">{intl l='Save' d='livraisonparsecteurs'}</button>
</div>
</form>
{/form}
{/loop}
</div>
</div>
</div>

View File

@@ -0,0 +1,91 @@
<link rel="stylesheet"
href="{stylesheet file='assets/js/bootstrap-datetimepicker/bootstrap-datetimepicker.min.css'}">
<div class="row">
<div class="col-md-12">
<table class="table table-striped table-condensed">
<caption class="clearfix">
{loop name="auth-create" type="auth" role="ADMIN" resource="admin.livraisonparsecteurs.schedules" access="CREATE" module="LivraisonParSecteurs"}
<div class="pull-right">
<a class="btn btn-default btn-primary dealer-schedules-default"
title="{intl l='Create a new Default Schedules' d='livraisonparsecteurs'}"
data-target="#dealer-schedules-create" data-toggle="modal">
<i class="glyphicon glyphicon-plus-sign"></i>
</a>
</div>
{/loop}
<h4>{intl l="Default Schedules" d="livraisonparsecteurs"}</h4>
</caption>
<thead>
<tr>
<th>
{intl l="Day" d="livraisonparsecteurs"}
</th>
<th>
{intl l="Begin" d="livraisonparsecteurs"}
</th>
<th>
{intl l="End" d="livraisonparsecteurs"}
</th>
<th>
{intl l="Actions" d="livraisonparsecteurs"}
</th>
</tr>
</thead>
<tbody>
{loop name="dealer-schedules-defaults" type="dealer_schedules" dealer_id=$smarty.get.dealer_id default_period=true order="day,begin"}
<tr>
<td>
{$DAY_LABEL}
</td>
<td>
{format_date date=$BEGIN format="H:i"}
</td>
<td>
{format_date date=$END format="H:i"}
</td>
{* Actions *}
<td>
<div class="btn-group">
{loop name="auth-edit" type="auth" role="ADMIN" resource="admin.dealer.schedules" access="UPDATE" module="Dealer"}
<a class="btn btn-default btn-xs dealer-schedules-update-default"
title="{intl l='Modify this Schedule' d='livraisonparsecteurs'}"
data-target="#dealer-schedules-update" data-toggle="modal" data-id="{$ID}"
data-day="{$DAY}" data-begin="{format_date date=$BEGIN format="H:i"}"
data-end="{format_date date=$END format="H:i"}">
<i class="glyphicon glyphicon-edit"></i>
</a>
{/loop}
{loop name="auth-edit" type="auth" role="ADMIN" resource="admin.dealer.schedules" access="CREATE" module="Dealer"}
<a class="btn btn-default btn-xs dealer-schedules-clone"
title="{intl l='Clone this Schedule' d='livraisonparsecteurs'}"
data-target="#dealer-schedules-clone" data-toggle="modal" data-id="{$ID}">
<i class="glyphicon glyphicon-plus-sign"></i>
</a>
{/loop}
{loop name="auth-delete" type="auth" role="ADMIN" resource="admin.dealer.schedules" access="DELETE" module="Dealer"}
<a class="btn btn-default btn-xs dealer-schedules-delete"
title="{intl l='Delete this Schedule' d='livraisonparsecteurs'}"
data-target="#dealer-schedules-delete" data-toggle="modal" data-id="{$ID}">
<i class="glyphicon glyphicon-trash"></i>
</a>
{/loop}
</div>
</td>
</tr>
{/loop}
{elseloop rel="dealer-schedules-defaults"}
<tr>
<td colspan="1000">
<div class="alert alert-info">
{intl l="There is no Default Schedules" d="livraisonparsecteurs"}
</div>
</td>
</tr>
{/elseloop}
</tbody>
</table>
</div>
</div>