[*] BO #PSFV-94 : Added AdminStatusesController

git-svn-id: http://dev.prestashop.com/svn/v1/branches/1.5.x@9853 b9a71923-0436-4b27-9f14-aed3839534dd
This commit is contained in:
lLefevre
2011-11-03 16:26:12 +00:00
parent 1240604e7d
commit fb59853cb1
11 changed files with 662 additions and 424 deletions
-209
View File
@@ -1,209 +0,0 @@
<?php
/*
* 2007-2011 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/osl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
* @author PrestaShop SA <contact@prestashop.com>
* @copyright 2007-2011 PrestaShop SA
* @version Release: $Revision: 6844 $
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
class AdminOrdersStates extends AdminTab
{
public function __construct()
{
$this->table = 'order_state';
$this->className = 'OrderState';
$this->lang = true;
$this->edit = true;
$this->delete = true;
$this->colorOnBackground = true;
$this->fieldImageSettings = array('name' => 'icon', 'dir' => 'os');
$this->imageType = 'gif';
$this->fieldsDisplay = array(
'id_order_state' => array('title' => $this->l('ID'), 'align' => 'center', 'width' => 25),
'name' => array('title' => $this->l('Name'), 'width' => 130),
'logo' => array('title' => $this->l('Icon'), 'align' => 'center', 'image' => 'os', 'orderby' => false, 'search' => false),
'send_email' => array('title' => $this->l('Send e-mail to customer'), 'align' => 'center', 'icon' => array('1' => 'enabled.gif', '0' => 'disabled.gif'), 'type' => 'bool', 'orderby' => false),
'invoice' => array('title' => $this->l('Invoice'), 'align' => 'center', 'icon' => array('1' => 'enabled.gif', '0' => 'disabled.gif'), 'type' => 'bool', 'orderby' => false),
'template' => array('title' => $this->l('E-mail template'), 'width' => 100));
parent::__construct();
}
public function postProcess()
{
$this->context = Context::getContext();
if (Tools::isSubmit('submitAdd'.$this->table))
{
$_POST['invoice'] = Tools::getValue('invoice');
$_POST['logable'] = Tools::getValue('logable');
$_POST['send_email'] = Tools::getValue('send_email');
$_POST['hidden'] = Tools::getValue('hidden');
$_POST['shipped'] = Tools::getValue('shipped');
if (!$_POST['send_email'])
{
$languages = Language::getLanguages(false);
foreach ($languages AS $language)
$_POST['template_'.$language['id_lang']] = '';
}
parent::postProcess();
}
elseif (isset($_GET['delete'.$this->table]))
{
$orderState = new OrderState($_GET['id_order_state'], $this->context->language->id);
if (!$orderState->isRemovable())
$this->_errors[] = $this->l('For security reasons, you cannot delete default order statuses.');
else
parent::postProcess();
}
elseif (isset($_POST['submitDelorder_state']))
{
foreach ($_POST[$this->table.'Box'] AS $selection)
{
$orderState = new OrderState($selection, $this->context->language->id);
if (!$orderState->isRemovable())
{
$this->_errors[] = $this->l('For security reasons, you cannot delete default order statuses.');
break;
}
}
if (empty($this->_errors))
parent::postProcess();
}
else
parent::postProcess();
}
private function getTemplates($iso_code)
{
$array = array();
if (!file_exists(_PS_ADMIN_DIR_.'/../mails/'.$iso_code))
return false;
$templates = scandir(_PS_ADMIN_DIR_.'/../mails/'.$iso_code);
foreach ($templates AS $template)
if (!strncmp(strrev($template), 'lmth.', 5))
$array[] = substr($template, 0, -5);
return $array;
}
public function displayForm($isMainTab = true)
{
parent::displayForm();
if (!($obj = $this->loadObject(true)))
return;
echo '<script type="text/javascript" src="../js/jquery/jquery-colorpicker.js"></script>
<form action="'.self::$currentIndex.'&submitAdd'.$this->table.'=1&token='.$this->token.'" method="post" enctype="multipart/form-data">
'.($obj->id ? '<input type="hidden" name="id_'.$this->table.'" value="'.$obj->id.'" />' : '').'
<fieldset><legend><img src="../img/admin/time.gif" />'.$this->l('Order statuses').'</legend>
<label>'.$this->l('Status name:').' </label>
<div class="margin-form">';
foreach ($this->_languages as $language)
echo '
<div id="name_'.$language['id_lang'].'" style="display: '.($language['id_lang'] == $this->_defaultFormLanguage ? 'block' : 'none').'; float: left;">
<input size="40" type="text" name="name_'.$language['id_lang'].'" value="'.htmlentities($this->getFieldValue($obj, 'name', (int)($language['id_lang'])), ENT_COMPAT, 'UTF-8').'" style="width: 150px;" /><sup> *</sup>
<span class="hint" name="help_box">'.$this->l('Invalid characters: numbers and').' !<>,;?=+()@#"{}_$%:<span class="hint-pointer">&nbsp;</span></span>
</div>';
$this->displayFlags($this->_languages, $this->_defaultFormLanguage, 'name¤template', 'name');
echo ' <p class="clear">'.$this->l('Order status (e.g., \'Pending\')').'</p>
</div>
<div class="clear"></div>
<label>'.$this->l('Icon:').' </label>
<div class="margin-form">
<input type="file" name="icon" />
<p>'.$this->l('Upload an icon from your computer (File type: .gif, suggested size: 16x16)').'</p>
</div>
<label>'.$this->l('Color:').' </label>
<div class="margin-form">
<input width="20px" type="color" data-hex="true" class="color mColorPickerInput" name="color" value="'.htmlentities($this->getFieldValue($obj, 'color'), ENT_COMPAT, 'UTF-8').'" />
<p>'.$this->l('Status will be highlighted in this color. HTML colors only (e.g.,').' "lightblue", "#CC6600")</p>
</div>
<div class="margin-form">
<p>
<input type="checkbox" style="vertical-align: text-bottom;" name="logable"'.(($this->getFieldValue($obj, 'logable') == 1) ? ' checked="checked"' : '').' id="logable_on" value="1" />
<label class="t" for="logable_on"> '.$this->l('Consider the associated order as validated').'</label>
</p>
</div>
<div class="margin-form">
<p>
<input type="checkbox" style="vertical-align: text-bottom;" name="invoice"'.(($this->getFieldValue($obj, 'invoice') == 1) ? ' checked="checked"' : '').' id="invoice_on" value="1" />
<label class="t" for="invoice_on"> '.$this->l('Allow customer to download and view PDF version of invoice').'</label>
</p>
</div>
<div class="margin-form">
<p>
<input type="checkbox" style="vertical-align: text-bottom;" name="hidden"'.(($this->getFieldValue($obj, 'hidden') == 1) ? ' checked="checked"' : '').' id="hidden_on" value="1" />
<label class="t" for="hidden_on"> '.$this->l('Hide this state in order for customer').'</label>
</p>
</div>
<div class="margin-form">
<p>
<input type="checkbox" style="vertical-align: text-bottom;" id="send_email" name="send_email" onclick="$(\'#tpl\').slideToggle();"'.
(($this->getFieldValue($obj, 'send_email')) ? 'checked="checked"' : '').' value="1" />
<label class="t" for="send_email"> '.$this->l('Send e-mail to customer when order is changed to this status').'</label>
</p>
</div>
<div class="margin-form">
<p>
<input type="checkbox" style="vertical-align: text-bottom;" name="shipped"'.(($this->getFieldValue($obj, 'shipped') == 1) ? ' checked="checked"' : '').' id="shipped_on" value="1" />
<label class="t" for="shipped_on"> '.$this->l('Set order as shipped').'</label>
</p>
</div>
<div id="tpl" style="display: '.($this->getFieldValue($obj, 'send_email') ? 'block' : 'none').';">
<label>'.$this->l('Template').'</label>
<div class="margin-form">';
foreach ($this->_languages as $language)
{
$templates = $this->getTemplates($language['iso_code']);
echo ' <div id="template_'.$language['id_lang'].'" style="display: '.($language['id_lang'] == $this->_defaultFormLanguage ? 'block' : 'none').'; float: left;">';
if (!$templates)
echo '<strong>'.$this->l('Please first copy your e-mail templates in the directory').' mails/'.$language['iso_code'].'.</strong>';
else
{
echo ' <select name="template_'.$language['id_lang'].'" id="template_select_'.$language['id_lang'].'">';
foreach ($templates AS $template)
echo ' <option value="'.$template.'" '.(($this->getFieldValue($obj, 'template', (int)($language['id_lang'])) == $template) ? 'selected="selected"' : '').'>'.$template.'</option>';
echo ' </select>';
}
echo ' <span class="hint" name="help_box">'.$this->l('Only letters, number and -_ are allowed').'<span class="hint-pointer">&nbsp;</span></span>
<img onclick="viewTemplates(\'template_select_'.$language['id_lang'].'\', '.$language['id_lang'].', \'../mails/'.$language['iso_code'].'/\', \'.html\');" src="../img/t/AdminFeatures.gif" class="pointer" alt="'.$this->l('Preview').'" title="'.$this->l('Preview').'" />
</div>';
}
$this->displayFlags($this->_languages, $this->_defaultFormLanguage, 'name¤template', 'template');
echo '<p style="clear: both">'.$this->l('E-mail template for both .html and .txt').'</p>
</div>
</div>
<script type="text/javascript">if (getE(\'send_email\').checked) getE(\'tpl\').style.display = \'block\'; else getE(\'tpl\').style.display = \'none\';</script>
<div class="margin-form">
<input type="submit" value="'.$this->l(' Save ').'" name="submitAdd'.$this->table.'" class="button" />
</div>
<div class="small"><sup>*</sup> '.$this->l('Required field').'</div>
</fieldset>
</form>';
}
}
-79
View File
@@ -1,79 +0,0 @@
<?php
/*
* 2007-2011 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/osl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
* @author PrestaShop SA <contact@prestashop.com>
* @copyright 2007-2011 PrestaShop SA
* @version Release: $Revision: 6844 $
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
class AdminReturnStates extends AdminTab
{
public function __construct()
{
$this->table = 'order_return_state';
$this->className = 'OrderReturnState';
$this->lang = true;
$this->edit = true;
$this->noAdd = true;
$this->delete = false;
$this->colorOnBackground = true;
$this->fieldsDisplay = array(
'id_order_return_state' => array('title' => $this->l('ID'), 'align' => 'center', 'width' => 25),
'name' => array('title' => $this->l('Name'), 'width' => 130)
);
parent::__construct();
}
public function displayForm($isMainTab = true)
{
parent::displayForm();
if (!($obj = $this->loadObject(true)))
return;
echo '
<form action="'.self::$currentIndex.'&submitAdd'.$this->table.'=1&token='.$this->token.'" method="post" enctype="multipart/form-data">
'.($obj->id ? '<input type="hidden" name="id_'.$this->table.'" value="'.$obj->id.'" />' : '').'
<fieldset><legend><img src="../img/admin/time.gif" />'.$this->l('Order statuses').'</legend>
<label>'.$this->l('Status name:').' </label>
<div class="margin-form">';
foreach ($this->_languages as $language)
echo '
<div id="name_'.$language['id_lang'].'" style="display: '.($language['id_lang'] == $this->_defaultFormLanguage ? 'block' : 'none').'; float: left;">
<input size="40" type="text" name="name_'.$language['id_lang'].'" value="'.htmlentities($this->getFieldValue($obj, 'name', (int)($language['id_lang'])), ENT_COMPAT, 'UTF-8').'" /><sup> *</sup>
<span class="hint" name="help_box">'.$this->l('Invalid characters: numbers and').' !<>,;?=+()@#"{}_$%:<span class="hint-pointer">&nbsp;</span></span>
</div>';
$this->displayFlags($this->_languages, $this->_defaultFormLanguage, 'name', 'name');
echo ' <p style="clear: both">'.$this->l('Order return status name').'</p>
</div>
<div class="margin-form">
<input type="submit" value="'.$this->l(' Save ').'" name="submitAdd'.$this->table.'" class="button" />
</div>
<div class="small"><sup>*</sup> '.$this->l('Required field').'</div>
</fieldset>
</form>';
}
}
-83
View File
@@ -1,83 +0,0 @@
<?php
/*
* 2007-2011 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/osl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
* @author PrestaShop SA <contact@prestashop.com>
* @copyright 2007-2011 PrestaShop SA
* @version Release: $Revision: 6844 $
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
include(_PS_ADMIN_DIR_.'/tabs/AdminOrdersStates.php');
include(_PS_ADMIN_DIR_.'/tabs/AdminReturnStates.php');
class AdminStatuses extends AdminTab
{
private $adminOrdersStates;
private $adminReturnStates;
public function __construct()
{
$this->table = array('order_state', 'order_return_state');
$this->adminOrdersStates = new adminOrdersStates();
$this->adminReturnStates = new adminReturnStates();
parent::__construct();
}
public function viewAccess($disable = false)
{
$result = parent::viewAccess($disable);
$this->adminOrdersStates->tabAccess = $this->tabAccess;
$this->adminReturnStates->tabAccess = $this->tabAccess;
return $result;
}
public function postProcess()
{
$this->adminOrdersStates->token = $this->token;
$this->adminReturnStates->token = $this->token;
$this->adminOrdersStates->postProcess($this->token);
$this->adminReturnStates->postProcess($this->token);
}
public function displayErrors()
{
$this->adminOrdersStates->displayErrors($this->token);
$this->adminReturnStates->displayErrors($this->token);
}
public function display()
{
if (!Tools::isSubmit('updateorder_return_state') AND !Tools::isSubmit('submitAddorder_return_state'))
{
echo '<h2>'.$this->l('Order statuses').'</h2>';
$this->adminOrdersStates->display($this->token);
}
if (!Tools::isSubmit('updateorder_state') AND !Tools::isSubmit('submitAddupdateorder_state') AND !Tools::isSubmit('addorder_state'))
{
if (!Tools::isSubmit('updateorder_return_state') AND !Tools::isSubmit('submitAddorder_return_state'))
echo '<div style="margin:10px">&nbsp;</div>';
echo '<h2>'.$this->l('Order return statuses').'</h2>';
$this->adminReturnStates->display($this->token);
}
}
}
@@ -87,9 +87,9 @@
<div id="contains_states" {if $contains_states}style="display:none;"{/if}>
{/if}
{block name="label"}
{if isset($input.label)}
<label>{$input.label} </label>
{/if}
{if isset($input.label)}
<label>{$input.label} </label>
{/if}
{/block}
{if $input.type == 'hidden'}
<input type="hidden" name="{$input.name}" value="{$fields_value[$input.name]}" />
@@ -171,7 +171,7 @@
{/foreach}
{/if}
</select>
{if isset($input.hint)}<span class="hint" name="help_box">{$input.hint}<span class="hint-pointer">&nbsp;</span></span>{/if}
{if isset($input.hint)}<span class="hint" name="help_box">{$input.hint}<span class="hint-pointer">&nbsp;</span></span>{/if}
{/if}
{elseif $input.type == 'radio'}
{foreach $input.values as $value}
@@ -208,7 +208,11 @@
{elseif $input.type == 'checkbox'}
{foreach $input.values.query as $value}
{assign var=id_checkbox value=$input.name|cat:'_'|cat:$value[$input.values.id]}
<input type="checkbox" name="{$id_checkbox}" id="{$id_checkbox}" {if $fields_value[$id_checkbox]}checked="checked"{/if} />
<input type="checkbox"
name="{$id_checkbox}"
id="{$id_checkbox}"
{if isset($value.val)}value="{$value.val}"{/if}
{if isset($fields_value[$id_checkbox]) && $fields_value[$id_checkbox]}checked="checked"{/if} />
<label for="{$id_checkbox}" class="t"><strong>{$value[$input.values.name]}</strong></label><br />
{/foreach}
{elseif $input.type == 'file'}
@@ -115,7 +115,7 @@
{/if}
<thead>
<tr class="nodrag nodrop">
<th>
<th class="center">
{if $has_bulk_actions}
<input type="checkbox" name="checkme" class="noborder" onclick="checkDelBoxes(this.form, '{$table}Box[]', this.checked)" />
{/if}
@@ -144,7 +144,7 @@
</th>
{/if}
{if $has_actions}
<th>{l s='Actions'}</th>
<th class="center">{l s='Actions'}</th>
{/if}
</tr>
{if !$simple_header}
@@ -0,0 +1,84 @@
{*
* 2007-2011 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (AFL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/afl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
* @author PrestaShop SA <contact@prestashop.com>
* @copyright 2007-2011 PrestaShop SA
* @version Release: $Revision: 8971 $
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*}
{extends file="../helper/form/form.tpl"}
{block name="label"}
{if $input.type == "select_template"}
<div id="tpl" style="display:{if isset($fields_value.send_email) && $fields_value.send_email}block{else}none{/if}">
{/if}
{if isset($input.label)}
<label>{$input.label} </label>
{/if}
{/block}
{block name="start_field_block"}
<div class="margin-form">
{if $input.type == "select_template"}
<div class="translatable">
{foreach $languages as $language}
<div class="lang_{$language.id_lang}" id="{$input.name}_{$language.id_lang}" style="display:{if $language.id_lang == $defaultFormLanguage}block{else}none{/if}; float: left;">
<select name="{$input.name}_{$language.id_lang}"
id="{$input.name}_select_{$language.id_lang}"
{if isset($input.multiple)}multiple="multiple" {/if}
{if isset($input.size)}size="{$input.size}"{/if}
{if isset($input.onchange)}onchange="{$input.onchange}"{/if}>
{foreach $input.options.query AS $option}
<option value="{$option[$input.options.id]}"
{if isset($input.multiple)}
{foreach $fields_value[$input.name] as $field_value}
{if $field_value == $option[$input.options.id]}selected="selected"{/if}
{/foreach}
{else}
{if $fields_value[$input.name] == $option[$input.options.id]}selected="selected"{/if}
{/if}
>{$option[$input.options.name]|escape:'htmlall':'UTF-8'}</option>
{/foreach}
</select>
{if isset($input.hint)}<span class="hint" name="help_box">{$input.hint}<span class="hint-pointer">&nbsp;</span></span>{/if}
<img onclick="viewTemplates('#template_select_{$language.id_lang}', '../mails/{$language.iso_code}/', '.html');"
src="../img/t/AdminFeatures.gif" class="pointer" alt="{l s='Preview'}" title="{l s='Preview'}" />
</div>
{/foreach}
</div>
{/if}
{/block}
{block name="end_field_block"}
</div>
{if $input.type == "select_template"}
</div>
{/if}
{/block}
{block name="script"}
<script type="text/javascript">
$(document).ready(function() {
$('#send_email_on').click(function() {
$('#tpl').slideToggle();
});
});
</script>
{/block}
@@ -0,0 +1,27 @@
{*
* 2007-2011 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (AFL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/afl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
* @author PrestaShop SA <contact@prestashop.com>
* @copyright 2007-2011 PrestaShop SA
* @version Release: $Revision: 9197 $
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*}
<a href="{$href}">
<img src="../img/admin/edit.gif" alt="{$action}" title="{$action}" /></a>