Continuing categories administration...

This commit is contained in:
franck
2013-09-06 17:46:40 +02:00
parent 8b82f58a5b
commit c68f282fe8
20 changed files with 289 additions and 316 deletions

View File

@@ -51,6 +51,8 @@ class Category extends BaseAction implements EventSubscriberInterface
$event->getParent(),
$event->getLocale()
);
$event->setCategory($category);
}
public function update(CategoryChangeEvent $event)

View File

@@ -47,7 +47,10 @@
<form name="thelia.address.update" class="Thelia\Form\AddressUpdateForm" />
<form name="thelia.admin.category.creation" class="Thelia\Form\CategoryCreationForm"/>
<form name="thelia.admin.category.deletion" class="Thelia\Form\CategoryDeletionForm"/>
<form name="thelia.admin.category.deletion" class="Thelia\Form\CategoryModificationForm"/>
<form name="thelia.admin.product.creation" class="Thelia\Form\ProductCreationForm"/>
<form name="thelia.admin.product.deletion" class="Thelia\Form\ProductModificationForm"/>
<form name="thelia.cart.add" class="Thelia\Form\CartAdd"/>

View File

@@ -33,27 +33,31 @@
<!-- Categories management -->
<route id="admin.configuration.categories.create" path="/admin/categories/create">
<route id="admin.categories.default" path="/admin/categories">
<default key="_controller">Thelia\Controller\Admin\CategoryController::defaultAction</default>
</route>
<route id="admin.categories.create" path="/admin/categories/create">
<default key="_controller">Thelia\Controller\Admin\CategoryController::createAction</default>
</route>
<route id="admin.configuration.categories.update" path="/admin/categories/update">
<route id="admin.categories.update" path="/admin/categories/update">
<default key="_controller">Thelia\Controller\Admin\CategoryController::changeAction</default>
</route>
<route id="admin.configuration.categories.save" path="/admin/categories/save">
<route id="admin.categories.save" path="/admin/categories/save">
<default key="_controller">Thelia\Controller\Admin\CategoryController::saveChangeAction</default>
</route>
<route id="admin.configuration.categories.set-default" path="/admin/categories/toggle-online">
<route id="admin.categories.set-default" path="/admin/categories/toggle-online">
<default key="_controller">Thelia\Controller\Admin\CategoryController::toggleOnlineAction</default>
</route>
<route id="admin.configuration.categories.delete" path="/admin/categories/delete">
<route id="admin.categories.delete" path="/admin/categories/delete">
<default key="_controller">Thelia\Controller\Admin\CategoryController::deleteAction</default>
</route>
<route id="admin.configuration.categories.update-position" path="/admin/categories/update-position">
<route id="admin.categories.update-position" path="/admin/categories/update-position">
<default key="_controller">Thelia\Controller\Admin\CategoryController::updatePositionAction</default>
</route>
@@ -127,6 +131,10 @@
<default key="_controller">Thelia\Controller\Admin\CurrencyController::setDefaultAction</default>
</route>
<route id="admin.configuration.currencies.update-position" path="/admin/configuration/currencies/update-position">
<default key="_controller">Thelia\Controller\Admin\CurrencyController::updatePositionAction</default>
</route>
<route id="admin.configuration.currencies.update-rates" path="/admin/configuration/currencies/update-rates">
<default key="_controller">Thelia\Controller\Admin\CurrencyController::updateRatesAction</default>
</route>
@@ -140,8 +148,8 @@
</route>
<!-- attribute and feature routes management -->
<route id="admin.configuration.currencies.update-position" path="/admin/configuration/product_attributes">
<route id="admin.configuration.product-attributes" path="/admin/configuration/product-attributes">
<default key="_controller">Thelia\Controller\Admin\CurrencyController::updatePositionAction</default>
</route>

View File

@@ -68,7 +68,7 @@ class BaseAdminController extends BaseController
}
}
catch (\Exception $ex) {
return new Response($this->errorPage($ex->getMessage()));
return $this->errorPage($ex->getMessage());
}
return $this->pageNotFound();

View File

@@ -35,6 +35,7 @@ use Thelia\Core\Event\CategoryChangePositionEvent;
use Thelia\Form\CategoryDeletionForm;
use Thelia\Model\Lang;
use Thelia\Core\Translation\Translator;
use Thelia\Core\Event\CategoryUpdatePositionEvent;
class CategoryController extends BaseAdminController
{
@@ -53,7 +54,7 @@ class CategoryController extends BaseAdminController
protected function setupArgs() {
// Get the category ID
$id = $this->getRequest()->get('category_id', 0);
$category_id = $this->getRequest()->get('category_id', 0);
// Find the current category order
$category_order = $this->getRequest()->get(
@@ -62,7 +63,7 @@ class CategoryController extends BaseAdminController
);
$args = array(
'current_category_id' => $id,
'current_category_id' => $category_id,
'category_order' => $category_order,
);
@@ -84,8 +85,13 @@ class CategoryController extends BaseAdminController
return $this->renderList();
}
protected function createAction($args)
{
/**
* Create a new category object
*
* @return Symfony\Component\HttpFoundation\Response the response
*/
public function createAction() {
// Check current user authorization
if (null !== $response = $this->checkAuth("admin.categories.create")) return $response;
@@ -103,7 +109,7 @@ class CategoryController extends BaseAdminController
$createEvent = new CategoryCreateEvent();
$categoryCreateEvent = new CategoryCreateEvent(
$createEvent = new CategoryCreateEvent(
$data["title"],
$data["parent"],
$data["locale"]
@@ -111,9 +117,11 @@ class CategoryController extends BaseAdminController
$this->dispatch(TheliaEvents::CATEGORY_CREATE, $createEvent);
if (! $createEvent->hasCategory()) throw new \LogicException($this->getTranslator()->trans("No category was created."));
$createdObject = $createEvent->getCategory();
// Log currency creation
// Log category creation
$this->adminLogAppend(sprintf("Category %s (ID %s) created", $createdObject->getName(), $createdObject->getId()));
// Substitute _ID_ in the URL with the ID of the created object
@@ -124,33 +132,21 @@ class CategoryController extends BaseAdminController
}
catch (FormValidationException $ex) {
// Form cannot be validated
$error_msg = sprintf("Please check your input: %s", $ex->getMessage());
$error_msg = $this->createStandardFormValidationErrorMessage($ex);
}
catch (\Exception $ex) {
// Any other error
$error_msg = $ex;
$error_msg = $ex->getMessage();
}
if ($error_msg !== false) {
// An error has been detected: log it
Tlog::getInstance()->error(sprintf("Error during category creation process : %s. Exception was %s", $error_msg, $ex->getMessage()));
// Mark the form as errored
$creationForm->setErrorMessage($error_msg);
// Pass it to the parser, along with the error currency
$this->getParserContext()
->addForm($creationForm)
->setGeneralError($error_msg)
;
}
$this->setupFormErrorContext("category creation", $error_msg, $creationForm, $ex);
// At this point, the form has error, and should be redisplayed.
return $this->renderList();
}
/**
* Load a currency object for modification, and display the edit template.
* Load a category object for modification, and display the edit template.
*
* @return Symfony\Component\HttpFoundation\Response the response
*/
@@ -159,21 +155,21 @@ class CategoryController extends BaseAdminController
// Check current user authorization
if (null !== $response = $this->checkAuth("admin.categories.update")) return $response;
// Load the currency object
$currency = CategoryQuery::create()
// Load the category object
$category = CategoryQuery::create()
->joinWithI18n($this->getCurrentEditionLocale())
->findOneById($this->getRequest()->get('currency_id'));
->findOneById($this->getRequest()->get('category_id'));
if ($currency != null) {
if ($category != null) {
// Prepare the data that will hydrate the form
$data = array(
'id' => $currency->getId(),
'name' => $currency->getName(),
'locale' => $currency->getLocale(),
'code' => $currency->getCode(),
'symbol' => $currency->getSymbol(),
'rate' => $currency->getRate()
'id' => $category->getId(),
'name' => $category->getName(),
'locale' => $category->getLocale(),
'code' => $category->getCode(),
'symbol' => $category->getSymbol(),
'rate' => $category->getRate()
);
// Setup the object form
@@ -184,11 +180,11 @@ class CategoryController extends BaseAdminController
}
// Render the edition template.
return $this->render('currency-edit', array('currency_id' => $this->getRequest()->get('currency_id')));
return $this->render('category-edit', array('category_id' => $this->getRequest()->get('category_id')));
}
/**
* Save changes on a modified currency object, and either go back to the currency list, or stay on the edition page.
* Save changes on a modified category object, and either go back to the category list, or stay on the edition page.
*
* @return Symfony\Component\HttpFoundation\Response the response
*/
@@ -202,8 +198,8 @@ class CategoryController extends BaseAdminController
// Create the form from the request
$changeForm = new CategoryModificationForm($this->getRequest());
// Get the currency ID
$currency_id = $this->getRequest()->get('currency_id');
// Get the category ID
$category_id = $this->getRequest()->get('category_id');
try {
@@ -226,7 +222,9 @@ class CategoryController extends BaseAdminController
$this->dispatch(TheliaEvents::CATEGORY_UPDATE, $changeEvent);
// Log currency modification
if (! $createEvent->hasCategory()) throw new \LogicException($this->getTranslator()->trans("No category was updated."));
// Log category modification
$changedObject = $changeEvent->getCategory();
$this->adminLogAppend(sprintf("Category %s (ID %s) modified", $changedObject->getName(), $changedObject->getId()));
@@ -236,7 +234,7 @@ class CategoryController extends BaseAdminController
if ($this->getRequest()->get('save_mode') == 'stay') {
$this->redirectToRoute(
"admin.categories.update",
array('currency_id' => $currency_id)
array('category_id' => $category_id)
);
}
@@ -244,62 +242,28 @@ class CategoryController extends BaseAdminController
$this->redirect($changeForm->getSuccessUrl());
}
catch (FormValidationException $ex) {
// Invalid data entered
$error_msg = $this->getTranslator()->trans(
"Please check your input: %message", array("%message" => $ex->getMessage()));
// Form cannot be validated
$error_msg = $this->createStandardFormValidationErrorMessage($ex);
}
catch (\Exception $ex) {
// Any other error
$error_msg = $ex;
$error_msg = $ex->getMessage();
}
$this->setupFormErrorContext(
$form,
$error_msg,
"category"
$this->setupFormErrorContext("category modification", $error_msg, $changeForm, $ex);
// At this point, the form has errors, and should be redisplayed.
return $this->render('currency-edit', array('currency_id' => $currency_id));
}
protected function setupFormErrorContext($object_type, $form, $error_message, $exception) {
if ($error_message !== false) {
// Lot the error message
Tlog::getInstance()->error(
$this->getTranslator()->trans(
"Error during %type modification process : %error. Exception was %exc",
array(
"%type" => "category",
"%error" => $error_message,
"%exc" => $exception->getMessage()
)
)
);
// Mark the form as errored
$form->setErrorMessage($error_message);
// Pas the form and the error to the parser
$this->getParserContext()
->addForm($form)
->setGeneralError($error_message)
;
}
return $this->render('category-edit', array('category_id' => $category_id));
}
/**
* Sets the default currency
* Online status toggle category
*/
public function setDefaultAction() {
public function setToggleVisibilityAction() {
// Check current user authorization
if (null !== $response = $this->checkAuth("admin.categories.update")) return $response;
$changeEvent = new CategoryUpdateEvent($this->getRequest()->get('currency_id', 0));
$changeEvent = new CategoryUpdateEvent($this->getRequest()->get('category_id', 0));
// Create and dispatch the change event
$changeEvent->setIsDefault(true);
@@ -316,7 +280,7 @@ class CategoryController extends BaseAdminController
}
/**
* Update currency position
* Update categoryposition
*/
public function updatePositionAction() {
// Check current user authorization
@@ -335,7 +299,7 @@ class CategoryController extends BaseAdminController
$position = $this->getRequest()->get('position', null);
$event = new CategoryUpdatePositionEvent(
$this->getRequest()->get('currency_id', null),
$this->getRequest()->get('category_id', null),
$mode,
$this->getRequest()->get('position', null)
);
@@ -350,9 +314,8 @@ class CategoryController extends BaseAdminController
$this->redirectToRoute('admin.categories.default');
}
/**
* Delete a currency object
* Delete a category object
*
* @return Symfony\Component\HttpFoundation\Response the response
*/
@@ -361,11 +324,14 @@ class CategoryController extends BaseAdminController
// Check current user authorization
if (null !== $response = $this->checkAuth("admin.categories.delete")) return $response;
// Get the currency id, and dispatch the delet request
$event = new CategoryDeleteEvent($this->getRequest()->get('currency_id'));
// Get the category id, and dispatch the deleted request
$event = new CategoryDeleteEvent($this->getRequest()->get('category_id'));
$this->dispatch(TheliaEvents::CATEGORY_DELETE, $event);
if ($event->hasCategory())
$this->adminLogAppend(sprintf("Category %s (ID %s) deleted", $event->getCategory()->getTitle(), $event->getCategory()->getId()));
$this->redirectToRoute('admin.categories.default');
}
}

View File

@@ -108,6 +108,8 @@ class ConfigController extends BaseAdminController
$this->dispatch(TheliaEvents::CONFIG_CREATE, $createEvent);
if (! $createEvent->hasConfig()) throw new \LogicException($this->getTranslator()->trans("No variable was created."));
$createdObject = $createEvent->getConfig();
// Log config creation
@@ -219,6 +221,8 @@ class ConfigController extends BaseAdminController
$this->dispatch(TheliaEvents::CONFIG_UPDATE, $changeEvent);
if (! $changeEvent->hasConfig()) throw new \LogicException($this->getTranslator()->trans("No variable was updated."));
// Log config modification
$changedObject = $changeEvent->getConfig();
@@ -290,6 +294,9 @@ class ConfigController extends BaseAdminController
$this->dispatch(TheliaEvents::CONFIG_DELETE, $event);
if ($event->hasConfig())
$this->adminLogAppend(sprintf("Variable %s (ID %s) modified", $event->getConfig()->getName(), $event->getConfig()->getId()));
$this->redirectToRoute('admin.configuration.variables.default');
}
}

View File

@@ -108,6 +108,8 @@ class CurrencyController extends BaseAdminController
$this->dispatch(TheliaEvents::CURRENCY_CREATE, $createEvent);
if (! $createEvent->hasCurrency()) throw new \LogicException($this->getTranslator()->trans("No currency was created."));
$createdObject = $createEvent->getCurrency();
// Log currency creation
@@ -211,6 +213,8 @@ class CurrencyController extends BaseAdminController
$this->dispatch(TheliaEvents::CURRENCY_UPDATE, $changeEvent);
if (! $changeEvent->hasCurrency()) throw new \LogicException($this->getTranslator()->trans("No currency was updated."));
// Log currency modification
$changedObject = $changeEvent->getCurrency();
@@ -335,6 +339,9 @@ class CurrencyController extends BaseAdminController
$this->dispatch(TheliaEvents::CURRENCY_DELETE, $event);
if ($event->hasCurrency())
$this->adminLogAppend(sprintf("Currency %s (ID %s) modified", $event->getCurrency()->getName(), $event->getCurrency()->getId()));
$this->redirectToRoute('admin.configuration.currencies.default');
}
}

View File

@@ -42,6 +42,15 @@ use Thelia\Form\MessageCreationForm;
*/
class MessageController extends BaseAdminController
{
/**
* Render the messages list
*
* @return Symfony\Component\HttpFoundation\Response the response
*/
protected function renderList() {
return $this->render('messages');
}
/**
* The default action is displaying the messages list.
*
@@ -51,7 +60,7 @@ class MessageController extends BaseAdminController
if (null !== $response = $this->checkAuth("admin.configuration.messages.view")) return $response;
return $this->render('messages');
return $this->renderList();
}
/**
@@ -66,7 +75,7 @@ class MessageController extends BaseAdminController
$message = false;
// Create the Creation Form
// Create the creation Form
$creationForm = new MessageCreationForm($this->getRequest());
try {
@@ -87,10 +96,11 @@ class MessageController extends BaseAdminController
$this->dispatch(TheliaEvents::MESSAGE_CREATE, $createEvent);
if (! $createEvent->hasMessage()) throw new \LogicException($this->getTranslator()->trans("No message was created."));
$createdObject = $createEvent->getMessage();
// Log message creation
$this->adminLogAppend(sprintf("Variable %s (ID %s) created", $createdObject->getName(), $createdObject->getId()));
$this->adminLogAppend(sprintf("Message %s (ID %s) created", $createdObject->getName(), $createdObject->getId()));
// Substitute _ID_ in the URL with the ID of the created object
$successUrl = str_replace('_ID_', $createdObject->getId(), $creationForm->getSuccessUrl());
@@ -194,7 +204,8 @@ class MessageController extends BaseAdminController
$this->dispatch(TheliaEvents::MESSAGE_UPDATE, $changeEvent);
// Log message modification
if (! $changeEvent->hasMessage()) throw new \LogicException($this->getTranslator()->trans("No message was updated."));
$changedObject = $changeEvent->getMessage();
$this->adminLogAppend(sprintf("Variable %s (ID %s) modified", $changedObject->getName(), $changedObject->getId()));
@@ -241,6 +252,9 @@ class MessageController extends BaseAdminController
$this->dispatch(TheliaEvents::MESSAGE_DELETE, $event);
$this->redirect(URL::getInstance()->adminViewUrl('messages'));
if ($event->hasMessage())
$this->adminLogAppend(sprintf("Message %s (ID %s) modified", $event->getMessage()->getName(), $event->getMessage()->getId()));
$this->redirectToRoute('admin.configuration.messages.default');
}
}

View File

@@ -46,6 +46,7 @@ class CategoryCreateEvent extends CategoryEvent
public function setTitle($title)
{
$this->title = $title;
return $this;
}
public function getParent()
@@ -56,6 +57,7 @@ class CategoryCreateEvent extends CategoryEvent
public function setParent($parent)
{
$this->parent = $parent;
return $this;
}
public function getLocale()
@@ -66,5 +68,6 @@ class CategoryCreateEvent extends CategoryEvent
public function setLocale($locale)
{
$this->locale = $locale;
return $this;
}
}
}

View File

@@ -40,5 +40,6 @@ class CategoryDeleteEvent extends CategoryEvent
public function setCategoryId($category_id)
{
$this->category_id = $category_id;
return $this;
}
}

View File

@@ -28,13 +28,17 @@ use Thelia\Core\Event\ActionEvent;
class CategoryEvent extends ActionEvent
{
public $category;
public $category = null;
public function __construct(Category $category)
public function __construct(Category $category = null)
{
$this->category = $category;
}
public function hasCategory() {
return ! is_null($this->category);
}
public function getCategory()
{
return $this->category;

View File

@@ -22,35 +22,7 @@
/*************************************************************************************/
namespace Thelia\Core\Event;
use Thelia\Model\Category;
class CategoryToggleVisibilityEvent extends CategoryEvent
class CategoryToggleVisibilityEvent extends BaseToggleVisibilityEvent
{
protected $category_id;
protected $category;
public function __construct($category_id)
{
$this->category_id = $category_id;
}
public function getCategoryId()
{
return $this->category_id;
}
public function setCategoryId($category_id)
{
$this->category_id = $category_id;
}
public function getCategory()
{
return $this->category;
}
public function setCategory(Category $category)
{
$this->category = $category;
}
}

View File

@@ -22,17 +22,16 @@
/*************************************************************************************/
namespace Thelia\Core\Event;
use Thelia\Model\Category;
class CategoryUpdateEvent extends ActionEvent
class CategoryUpdateEvent extends CategoryCreateEvent
{
protected $category_id;
protected $locale;
protected $title;
protected $chapo;
protected $description;
protected $postscriptum;
protected $url;
protected $visibility;
protected $parent;
@@ -41,4 +40,81 @@ class CategoryUpdateEvent extends ActionEvent
{
$this->category_id = $category_id;
}
public function getCategoryId()
{
return $this->category_id;
}
public function setCategoryId($category_id)
{
$this->category_id = $category_id;
return $this;
}
public function getChapo()
{
return $this->chapo;
}
public function setChapo($chapo)
{
$this->chapo = $chapo;
return $this;
}
public function getDescription()
{
return $this->description;
}
public function setDescription($description)
{
$this->description = $description;
return $this;
}
public function getPostscriptum()
{
return $this->postscriptum;
}
public function setPostscriptum($postscriptum)
{
$this->postscriptum = $postscriptum;
return $this;
}
public function getUrl()
{
return $this->url;
}
public function setUrl($url)
{
$this->url = $url;
return $this;
}
public function getVisibility()
{
return $this->visibility;
}
public function setVisibility($visibility)
{
$this->visibility = $visibility;
return $this;
}
public function getParent()
{
return $this->parent;
}
public function setParent($parent)
{
$this->parent = $parent;
return $this;
}
}

View File

@@ -26,13 +26,17 @@ use Thelia\Model\Config;
class ConfigEvent extends ActionEvent
{
protected $config;
protected $config = null;
public function __construct(Config $config = null)
{
$this->config = $config;
}
public function hasConfig() {
return ! is_null($this->config);
}
public function getConfig()
{
return $this->config;

View File

@@ -26,13 +26,17 @@ use Thelia\Model\Currency;
class CurrencyEvent extends ActionEvent
{
protected $currency;
protected $currency = null;
public function __construct(Currency $currency = null)
{
$this->currency = $currency;
}
public function hasCurrency() {
return ! is_null($this->currency);
}
public function getCurrency()
{
return $this->currency;

View File

@@ -26,13 +26,17 @@ use Thelia\Model\Message;
class MessageEvent extends ActionEvent
{
protected $message;
protected $message = null;
public function __construct(Message $message = null)
{
$this->message = $message;
}
public function hasMessage() {
return ! is_null($this->message);
}
public function getMessage()
{
return $this->message;

View File

@@ -126,7 +126,7 @@ class AsseticHelper
//
// before generating 3bc974a-ad3ef47.css, delete 3bc974a-* files.
//
if ($dev_mode == true || ! file_exists($target_file)) {
if (/*$dev_mode == true || */! file_exists($target_file)) {
// Delete previous version of the file
list($commonPart, $dummy) = explode('-', $asset_target_path);

View File

@@ -23,6 +23,7 @@
namespace Thelia\Form;
use Symfony\Component\Validator\Constraints\NotBlank;
use Thelia\Core\Translation\Translator;
class CategoryCreationForm extends BaseForm
{
@@ -33,7 +34,7 @@ class CategoryCreationForm extends BaseForm
"constraints" => array(
new NotBlank()
),
"label" => "Category title *",
"label" => Translator::getInstance()->trans("Category title *"),
"label_attr" => array(
"for" => "title"
)

View File

@@ -1,44 +0,0 @@
<?php
/*************************************************************************************/
/* */
/* Thelia */
/* */
/* Copyright (c) OpenStudio */
/* email : info@thelia.net */
/* web : http://www.thelia.net */
/* */
/* This program is free software; you can redistribute it and/or modify */
/* it under the terms of the GNU General Public License as published by */
/* the Free Software Foundation; either version 3 of the License */
/* */
/* This program is distributed in the hope that it will be useful, */
/* but WITHOUT ANY WARRANTY; without even the implied warranty of */
/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
/* GNU General Public License for more details. */
/* */
/* You should have received a copy of the GNU General Public License */
/* along with this program. If not, see <http://www.gnu.org/licenses/>. */
/* */
/*************************************************************************************/
namespace Thelia\Form;
use Symfony\Component\Validator\Constraints\NotBlank;
class CategoryDeletionForm extends BaseForm
{
protected function buildForm()
{
$this->formBuilder
->add("category_id", "integer", array(
"constraints" => array(
new NotBlank()
)
))
;
}
public function getName()
{
return "thelia_category_deletion";
}
}

View File

@@ -269,7 +269,6 @@
{module_include location='product_list_row'}
<td>
<<<<<<< HEAD
{loop type="auth" name="can_change" roles="ADMIN" permissions="admin.products.edit"}
<div class="make-switch switch-small" 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" data-id="{$ID}" class="productVisibleToggle" {if $VISIBLE == 1}checked="checked"{/if}>
@@ -277,15 +276,10 @@
{/loop}
{elseloop rel="can_change"}
<div class="make-switch switch-small" 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="disabled" disabled="disabled" {if $VISIBLE == 1}checked="checked"{/if}>
</div>
{/elseloop}
=======
<div class="make-switch switch-small" 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" data-id="{$ID}" class="displayToggle" {if $VISIBLE == 1}checked="checked"{/if}>
</div>
>>>>>>> ebb350111a2c65929f8c61f621c9a8a6dd878984
{/elseloop}
</td>
<td>
@@ -333,72 +327,63 @@
{* Adding a new Category *}
<div class="modal fade" id="add_category_dialog" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal fade" id="add_category_dialog" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
<h3>{intl l="Create a new category"}</h3>
</div>
<div class="modal-dialog">
<div class="modal-content">
{form name="thelia.admin.category.creation"}
<form method="POST" action="{url path='/admin/catalog/category'}" {form_enctype form=$form}>
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
<h3>{intl l="Create a new categiry"}</h3>
</div>
{* the action processed by the controller *}
<input type="hidden" name="action" value="create" />
{form name="thelia.admin.category.creation"}
<form method="POST" action="{url path='/admin/configuration/categories/create'}" {form_enctype form=$form}>
{form_hidden_fields form=$form}
{form_hidden_fields form=$form}
{form_field form=$form field='parent'}
<input type="hidden" name="{$name}" value="{$current_category_id}" />
{/form_field}
{form_field form=$form field='success_url'}
{* on success, redirect to the edition page, _ID_ is replaced with the created object ID, see controller *}
<input type="hidden" name="{$name}" value="{url path='/admin/configuration/categories/update' category_id='_ID_'}" />
{/form_field}
{form_field form=$form field='success_url'}
{* on success, redirect to category change page. _ID_ is replaced with the ID of the created category (see Thelia\Action\Category.php) *}
<input type="hidden" name="{$name}" value="{url path='admin/catalog/category' id="_ID_" action='edit'}" />
{/form_field}
<div class="modal-body">
<div class="modal-body">
{if $form_error}<div class="alert alert-block alert-error" id="add_category_dialog_error">{$form_error_message}</div>{/if}
{if #form_error}<div class="alert alert-block alert-error" id="add_category_dialog_error">#form_error_message</div>{/if}
{form_field form=$form field='title'}
<div class="form-group {if $error}has-error{/if}">
<label for="{$label_attr.for}" class="control-label">{$label} : </label>
<div class="form-group">
<label class="control-label">
{intl l='Category Title *'}
</label>
{loop type="lang" name="default-lang" default_only="1"}
<div class="input-group">
<input type="text" id="{$label_attr.for}" required="required" name="{$name}" class="form-control" value="{$value}" title="{intl l='Currency name'}" placeholder="{intl l='Name'}">
<span class="input-group-addon"><img src="{image file="assets/img/flags/{$CODE}.gif"}" alt="{intl l=$TITLE}" /></span>
</div>
{loop type="lang" name="default-lang" default_only="1"}
{form_field form=$form field='locale'}
<input type="hidden" name="{$name}" value="{$LOCALE}" />
{/form_field}
<div class="help-block">{intl l="Enter here the category name in the default language ($TITLE)"}</div>
<div class="input-group input-block-level">
{form_field form=$form field='title'}
<span {if $error}class="error"{/if}>
<input type="text" required="required" name="{$name}" value="{$value}" title="{intl l='Category title'}" placeholder="{intl l='Category title'}" class="form-control input-block-level">
</span>
{/form_field}
<span class="input-group-addon"><img src="{image file="assets/img/flags/{$CODE}.gif"}" alt="{intl l=$TITLE}" /></span>
</div>
{* Switch edition to the current locale *}
<input type="hidden" name="edit_language_id" value="{$ID}" />
<div class="help-block">{intl l="Enter here the category title in the default language ($TITLE)"}</div>
{/loop}
{form_field form=$form field='locale'}
<input type="hidden" name="{$name}" value="{$LOCALE}" />
{/form_field}
{/loop}
</div>
{/form_field}
</div>
</div>
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-default btn-primary"><span class="glyphicon glyphicon-check"></span> {intl l="Create this category"}</button>
<button type="button" class="btn btn-default" data-dismiss="modal" aria-hidden="true"><span class="glyphicon glyphicon-remove"></span> {intl l="Cancel"}</button>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal" aria-hidden="true">{intl l="Cancel"}</button>
<button type="submit" class="btn btn-default btn-primary">{intl l="Create this category"}</button>
</div>
</form>
{/form}
</div>
</div>
</div>
</form>
{/form}
</div>
</div>
</div>
{* Delete category confirmation dialog *}
@@ -442,7 +427,6 @@
<script src="{$asset_url}"></script>
{/javascripts}
<<<<<<< HEAD
<script>
$(function() {
@@ -454,6 +438,12 @@ $(function() {
{/if}
{/form}
{form name="thelia.admin.product.creation"}
{if #form_error}
$('#add_category_dialog').modal();
{/if}
{/form}
{* Always reset create dialog on close *}
$('#add_category_dialog').on('hidden',function() {
@@ -467,13 +457,30 @@ $(function() {
$("#add_category_dialog input[type=text]").val('');
});
{* Set the proper category ID in the delete confirmation dialog *}
$('#add_product_dialog').on('hidden',function() {
// Hide error message
$('#add_product_dialog_error').remove();
// Clear error status
$("#add_product_dialog .error").removeClass('error');
// Empty field values
$("#add_product_dialog input[type=text]").val('');
});
{* Set the proper ID in the delete confirmation dialog *}
$('a.category-delete').click(function(ev) {
$('#delete_category_id').val($(this).data('id'));
});
// Toggle category visibility
$('a.product-delete').click(function(ev) {
$('#delete_product_id').val($(this).data('id'));
});
{* Toggle object visibility *}
$(".categoryVisibleToggle").click(function() {
$.ajax({
url : "{url path='admin/categories/toggle-online'}",
@@ -484,7 +491,6 @@ $(function() {
});
});
// Toggle product visibility
$(".productVisibleToggle").click(function() {
$.ajax({
url : "{url path='admin/products/toggle-online'}",
@@ -495,6 +501,7 @@ $(function() {
});
});
{* Inline editing of object position using bootstrap-editable *}
$('.categoryPositionChange').editable({
@@ -537,70 +544,4 @@ $(function() {
})
</script>
=======
<script>
$(function() {
{* display the form creation dialog if it contains errors *}
{form name="thelia.admin.category.creation"}
{if #form_error}
$('#add_category_dialog').modal();
{/if}
{/form}
{* Always reset create dialog on close *}
$('#add_category_dialog').on('hidden',function() {
// Hide error message
$('#add_category_dialog_error').remove();
// Clear error status
$("#add_category_dialog .error").removeClass('error');
// Empty field values
$("#add_category_dialog input[type=text]").val('');
});
{* Set the proper category ID in the delete confirmation dialog *}
$(document).on("click", ".category-delete", function () {
$('#'+'delete-category-id').val($(this).data('id'));
});
// Toggle category visibility
$(".categoryVisibleToggle").change(function() {
$.ajax({
url : "{url path='admin/catalog/category'}",
data : {
category_id : $(this).data('id'),
action : 'visibilityToggle'
}
});
});
{* Inline editing of object position using bootstrap-editable *}
$('.categoryPositionChange').editable({
type : 'text',
title : '{intl l="Enter new category position"}',
mode : 'popup',
inputclass : 'input-mini',
placement : 'left',
success : function(response, newValue) {
// The URL template
var url = "{url path='admin/catalog/category' action='changePosition' category_id='__ID__' position='__POS__'}";
// Perform subtitutions
url = url.replace('__ID__', $(this).data('id'))
.replace('__POS__', newValue);
// Reload the page
location.href = url;
}
});
});
</script>
>>>>>>> ebb350111a2c65929f8c61f621c9a8a6dd878984
{/block}