[*] BO #PSFV-94 : update of the displayform method by helperForm in AdminGenderController

This commit is contained in:
lLefevre
2011-10-14 12:59:26 +00:00
parent 132ecf9324
commit 0d8fcdf2a7
6 changed files with 259 additions and 157 deletions
-148
View File
@@ -1,148 +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$
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
class AdminGenders extends AdminTab
{
public function __construct()
{
$this->table = 'gender';
$this->className = 'Gender';
$this->lang = true;
$this->edit = true;
$this->delete = true;
$this->defaultImageHeight = 16;
$this->defaultImageWidth = 16;
$this->fieldImageSettings = array('name' => 'image', 'dir' => 'genders');
$this->fieldsDisplay = array(
'id_gender' => array('title' => $this->l('ID'), 'align' => 'center', 'width' => 25),
'name' => array('title' => $this->l('Name'), 'width' => 150, 'filter_key' => 'b!name'),
'type' => array(
'title' => $this->l('Type'),
'width' => 100,
'orderby' => false,
'type' => 'select',
'select' => array(0 => $this->l('Male'), 1 => $this->l('Female'), 2 => $this->l('Neutral')),
'filter_key' => 'a!type',
'callback' => 'displayGenderType',
'callback_object' => $this,
),
'image' => array('title' => $this->l('Image'), 'align' => 'center', 'image' => 'genders', 'orderby' => false, 'search' => false),
);
parent::__construct();
}
public function displayGenderType($value, $tr)
{
return $this->fieldsDisplay['type']['select'][$value];
}
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/tab-genders.gif" />'.$this->l('Gender').'</legend>
<label>'.$this->l('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="33" 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:').' 0-9!<>,;?=+()@#"{}_$%:<span class="hint-pointer">&nbsp;</span></span>
</div>';
$this->displayFlags($this->_languages, $this->_defaultFormLanguage, 'name', 'name');
echo '</div><div class="clear">&nbsp;</div>';
echo '<label>'.$this->l('Type:').' </label>
<div class="margin-form">
<input type="radio" name="type" id="type_male" value="0" '.($this->getFieldValue($obj, 'type') == 0 ? 'checked="checked" ' : '').'/>
<label class="t" for="type_male"> '.$this->l('Male').'</label>
<input type="radio" name="type" id="type_female" value="1" '.($this->getFieldValue($obj, 'type') == 1 ? 'checked="checked" ' : '').'/>
<label class="t" for="type_female"> '.$this->l('Female').'</label>
<input type="radio" name="type" id="type_neutral" value="2" '.($this->getFieldValue($obj, 'type') == 2 ? 'checked="checked" ' : '').'/>
<label class="t" for="type_neutral"> '.$this->l('Neutral').'</label>
</div>
<div class="clear"></div>';
echo '<label>'.$this->l('Image:').' </label>
<div class="margin-form">';
echo ' <input type="file" name="image" />';
if ($obj->getImage())
echo '<img src="'.$obj->getImage().'" />';
echo '</div>
<div class="clear"></div>
<label>'.$this->l('Image Width:').' </label>
<div class="margin-form">
<input size="4" type="text" name="img_width" value="'.$this->defaultImageWidth.'" />
<p>'.$this->l('Image width in pixel. "0" to use original size').'</p>
</div>
<div class="clear"></div>
<label>'.$this->l('Image Height:').' </label>
<div class="margin-form">
<input size="4" type="text" name="img_height" value="'.$this->defaultImageHeight.'" />
<p>'.$this->l('Image height in pixel. "0" to use original size').'</p>
</div>';
echo '<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><br />';
}
protected function postImage($id)
{
if (isset($this->fieldImageSettings['name']) AND isset($this->fieldImageSettings['dir']))
{
if(!Validate::isInt(Tools::getValue('img_width')) || !Validate::isInt(Tools::getValue('img_height')))
$this->_errors[] = Tools::displayError('Width and height must be a numeric');
else
{
if ((int)Tools::getValue('img_width') > 0 && (int)Tools::getValue('img_height') > 0)
{
$width = (int)Tools::getValue('img_width');
$height = (int)Tools::getValue('img_height');
}
else
{
$width = NULL;
$height = NULL;
}
return $this->uploadImage($id, $this->fieldImageSettings['name'], $this->fieldImageSettings['dir'].'/', false, $width, $height);
}
}
return !sizeof($this->_errors) ? true : false;
}
}
+4 -1
View File
@@ -55,7 +55,7 @@
<script type="text/javascript" src="../js/form.js"></script>
{/if}
<form action="{$current}&submitAdd{$table}=1&token={$token}" method="post">
<form action="{$current}&submitAdd{$table}=1&token={$token}" method="post" enctype="multipart/form-data">
{if $form_id}
<input type="hidden" name="id_{$table}" value="{$form_id}" />
{/if}
@@ -172,6 +172,9 @@
{/if}
{elseif $input.type == 'checkbox'}
{elseif $input.type == 'file'}
<input type="file" name="{$input.name}" />
<img src="{$fields_value[$input.name]}" />
{/if}
{if isset($input.required) && $input.required} <sup>*</sup>{/if}
{if isset($input.p)}
+43 -3
View File
@@ -170,6 +170,9 @@ class AdminControllerCore extends Controller
/** @var array Name and directory where class image are located */
public $fieldImageSettings = array();
/** @var string Image type */
public $imageType = 'jpg';
public function __construct()
{
// retro-compatibility : className for admin without controller
@@ -968,6 +971,7 @@ class AdminControllerCore extends Controller
$helper->shopLinkType = $this->shopLinkType;
$helper->identifier = $this->identifier;
$helper->token = $this->token;
$helper->imageType = $this->imageType;
$helper->_listSkipDelete = $this->_listSkipDelete;
$helper->colorOnBackground = $this->colorOnBackground;
@@ -1388,11 +1392,11 @@ class AdminControllerCore extends Controller
protected function getFieldValue($obj, $key, $id_lang = null)
{
if ($id_lang)
$defaultValue = ($obj->id && isset($obj->{$key}[$id_lang])) ? $obj->{$key}[$id_lang] : '';
$default_value = ($obj->id && isset($obj->{$key}[$id_lang])) ? $obj->{$key}[$id_lang] : '';
else
$defaultValue = isset($obj->{$key}) ? $obj->{$key} : '';
$default_value = isset($obj->{$key}) ? $obj->{$key} : '';
return Tools::getValue($key.($id_lang ? '_'.$id_lang : ''), $defaultValue);
return Tools::getValue($key.($id_lang ? '_'.$id_lang : ''), $default_value);
}
/**
@@ -1597,6 +1601,42 @@ class AdminControllerCore extends Controller
return !count($this->_errors) ? true : false;
}
protected function uploadImage($id, $name, $dir, $ext = false, $width = NULL, $height = NULL)
{
if (isset($_FILES[$name]['tmp_name']) && !empty($_FILES[$name]['tmp_name']))
{
// Delete old image
if (Validate::isLoadedObject($object = $this->loadObject()))
$object->deleteImage();
else
return false;
// Check image validity
$max_size = isset($this->maxImageSize) ? $this->maxImageSize : 0;
if ($error = checkImage($_FILES[$name], Tools::getMaxUploadSize($max_size)))
$this->_errors[] = $error;
elseif (!$tmpName = tempnam(_PS_TMP_IMG_DIR_, 'PS') || !move_uploaded_file($_FILES[$name]['tmp_name'], $tmpName))
return false;
else
{
$tmpName = $_FILES[$name]['tmp_name'];
// Copy new image
if (!imageResize($tmpName, _PS_IMG_DIR_.$dir.$id.'.'.$this->imageType, (int)$width, (int)$height, ($ext ? $ext : $this->imageType)))
$this->_errors[] = Tools::displayError('An error occurred while uploading image.');
if (count($this->_errors))
return false;
if ($this->afterImageUpload())
{
unlink($tmpName);
return true;
}
return false;
}
}
return true;
}
/**
* Delete multiple items
*
+1 -1
View File
@@ -1077,7 +1077,7 @@ abstract class AdminTabCore
return false;
else
{
$_FILES[$name]['tmp_name'] = $tmpName;
$tmpName = $_FILES[$name]['tmp_name'];
// Copy new image
if (!imageResize($tmpName, _PS_IMG_DIR_.$dir.$id.'.'.$this->imageType, (int)$width, (int)$height, ($ext ? $ext : $this->imageType)))
$this->_errors[] = Tools::displayError('An error occurred while uploading image.');
+4 -4
View File
@@ -85,15 +85,15 @@ class GenderCore extends ObjectModel
return ObjectModel::hydrateCollection('Gender', $results, $id_lang);
}
public static function getStaticImage($id, $useUnknown = false)
public static function getStaticImage($id, $use_unknown = false)
{
if (!file_exists(_PS_GENDERS_DIR_.$id.'.jpg'))
return ($useUnknown) ? _PS_ADMIN_IMG_.'unknown.gif' : false;
return ($use_unknown) ? _PS_ADMIN_IMG_.'unknown.gif' : false;
return _THEME_GENDERS_DIR_.$id.'.jpg';
}
public function getImage($useUnknown = false)
public function getImage($use_unknown = false)
{
return Gender::getStaticImage($this->id, $useUnknown);
return Gender::getStaticImage($this->id, $use_unknown);
}
}
@@ -0,0 +1,207 @@
<?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: 8971 $
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
class AdminGendersController extends AdminController
{
public function __construct()
{
$this->table = 'gender';
$this->className = 'Gender';
$this->lang = true;
$this->edit = true;
$this->delete = true;
$this->requiredDatabase = true;
$this->context = Context::getContext();
if (!Tools::getValue('realedit'))
$this->deleted = false;
$this->bulk_actions = array('delete' => array('text' => $this->l('Delete selected'), 'confirm' => $this->l('Delete selected items?')));
$this->default_image_height = 16;
$this->default_image_width = 16;
$this->fieldImageSettings = array(
'name' => 'image',
'dir' => 'genders'
);
$this->fieldsDisplay = array(
'id_gender' => array(
'title' => $this->l('ID'),
'align' => 'center',
'width' => 25
),
'name' => array(
'title' => $this->l('Name'),
'width' => 150,
'filter_key' => 'b!name'
),
'type' => array(
'title' => $this->l('Type'),
'width' => 100,
'orderby' => false,
'type' => 'select',
'select' => array(
0 => $this->l('Male'),
1 => $this->l('Female'),
2 => $this->l('Neutral')
),
'filter_key' => 'a!type',
'callback' => 'displayGenderType',
'callback_object' => $this,
),
'image' => array(
'title' => $this->l('Image'),
'align' => 'center',
'image' => 'genders',
'orderby' => false,
'search' => false
)
);
$this->fields_form = array(
'legend' => array(
'title' => $this->l('Gender'),
'image' => '../img/admin/tab-genders.gif'
),
'input' => array(
array(
'type' => 'text',
'label' => $this->l('Name:'),
'name' => 'name',
'lang' => true,
'attributeLang' => 'name',
'size' => 33,
'hint' => $this->l('Invalid characters:').' 0-9!<>,;?=+()@#"{}_$%:',
'required' => true
),
array(
'type' => 'radio',
'label' => $this->l('Type:'),
'name' => 'type',
'required' => false,
'class' => 't',
'values' => array(
array(
'id' => 'type_male',
'value' => 0,
'label' => $this->l('Male')
),
array(
'id' => 'type_female',
'value' => 1,
'label' => $this->l('Female')
),
array(
'id' => 'type_neutral',
'value' => 2,
'label' => $this->l('Neutral')
)
)
),
array(
'type' => 'file',
'label' => $this->l('Image:'),
'name' => 'image',
'value' => true
),
array(
'type' => 'text',
'label' => $this->l('Image Width:'),
'name' => 'img_width',
'size' => 4,
'p' => $this->l('Image width in pixel. "0" to use original size')
),
array(
'type' => 'text',
'label' => $this->l('Image Height:'),
'name' => 'img_height',
'size' => 4,
'p' => $this->l('Image height in pixel. "0" to use original size')
)
),
'submit' => array(
'title' => $this->l(' Save '),
'class' => 'button'
)
);
parent::__construct();
}
public function initContent()
{
if ($this->display != 'edit' && $this->display != 'add')
$this->display = 'list';
else
{
if (!($obj = $this->loadObject(true)))
return;
$this->fields_value = array(
'img_width' => $this->default_image_width,
'img_height' => $this->default_image_height,
'image' => $obj->getImage()
);
}
parent::initContent();
}
public function displayGenderType($value, $tr)
{
return $this->fieldsDisplay['type']['select'][$value];
}
protected function postImage($id)
{
if (isset($this->fieldImageSettings['name']) && isset($this->fieldImageSettings['dir']))
{
if (!Validate::isInt(Tools::getValue('img_width')) || !Validate::isInt(Tools::getValue('img_height')))
$this->_errors[] = Tools::displayError('Width and height must be a numeric');
else
{
if ((int)Tools::getValue('img_width') > 0 && (int)Tools::getValue('img_height') > 0)
{
$width = (int)Tools::getValue('img_width');
$height = (int)Tools::getValue('img_height');
}
else
{
$width = null;
$height = null;
}
return $this->uploadImage($id, $this->fieldImageSettings['name'], $this->fieldImageSettings['dir'].'/', false, $width, $height);
}
}
return !count($this->_errors) ? true : false;
}
}