add image upload in categories
This commit is contained in:
parent
762a82825b
commit
8480abaee4
2
.gitignore
vendored
2
.gitignore
vendored
@ -117,3 +117,5 @@ modules/logistics/carriers/laposte/summaries/*.pdf
|
|||||||
modules/labelgenerate/img/
|
modules/labelgenerate/img/
|
||||||
modules/product_vouchers/*.csv
|
modules/product_vouchers/*.csv
|
||||||
modules/labelgenerate/img/*
|
modules/labelgenerate/img/*
|
||||||
|
modules/purchaseguide/img/*
|
||||||
|
|
||||||
|
@ -3,5 +3,45 @@ class AdminGuide extends AdminTab
|
|||||||
{
|
{
|
||||||
public function display()
|
public function display()
|
||||||
{
|
{
|
||||||
|
global $smarty;
|
||||||
|
|
||||||
|
if(Configuration::get('PS_REWRITING_SETTINGS')) {
|
||||||
|
|
||||||
|
$module_name = Module::getModuleNameFromClass('AdminGuide');
|
||||||
|
|
||||||
|
$langs = Language::getLanguages(true);
|
||||||
|
|
||||||
|
$urls_i18n = array(
|
||||||
|
'fr' => 'guide',
|
||||||
|
'en' => 'guide',
|
||||||
|
);
|
||||||
|
|
||||||
|
$str_rewrite_rules = 'RewriteRule ^%s/([0-9]+)\-[a-zA-Z0-9-]*$ '.__PS_BASE_URI__.'modules/'.$module_name.'/page.php?id_guide_post=$1 [QSA,L]'."\n";
|
||||||
|
|
||||||
|
|
||||||
|
if(count($langs) > 1) {
|
||||||
|
$rewrite_rules = '';
|
||||||
|
foreach($langs as $lang) {
|
||||||
|
if(isset($urls_i18n[$lang['iso_code']])) {
|
||||||
|
$index = $lang['iso_code'];
|
||||||
|
} else {
|
||||||
|
$index = 'en';
|
||||||
|
}
|
||||||
|
$rewrite_rules .= sprintf($str_rewrite_rules, $lang['iso_code'].'/'.$urls_i18n[$index]);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if(isset($urls_i18n[$langs[0]['iso_code']])) {
|
||||||
|
$index = $langs[0]['iso_code'];
|
||||||
|
} else {
|
||||||
|
$index = 'en';
|
||||||
|
}
|
||||||
|
$rewrite_rules = sprintf($str_rewrite_rules, $urls_i18n[$index]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$smarty->assign('rewrite_rules', htmlentities($rewrite_rules));
|
||||||
|
|
||||||
|
echo $smarty->fetch(__DIR__.'/templates/home_adminguide.tpl');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -4,12 +4,17 @@ require_once(__DIR__.'/classes/FormBuilder.php');
|
|||||||
|
|
||||||
class AdminGuideCategories extends AdminTab
|
class AdminGuideCategories extends AdminTab
|
||||||
{
|
{
|
||||||
|
const IMG_WIDTH = 300;
|
||||||
|
const IMG_HEIGHT = 200;
|
||||||
|
|
||||||
private static $current_category = 0;
|
private static $current_category = 0;
|
||||||
private static $category_parent = 0;
|
private static $category_parent = 0;
|
||||||
|
private $maxImageBytes = 0;
|
||||||
|
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
global $cookie;
|
global $cookie;
|
||||||
|
$this->maxImageBytes = (Configuration::get('PS_LIMIT_UPLOAD_IMAGE_VALUE') * 1000000);
|
||||||
|
|
||||||
$this->table = 'guide_category';
|
$this->table = 'guide_category';
|
||||||
$this->className = 'GuideCategory';
|
$this->className = 'GuideCategory';
|
||||||
@ -122,6 +127,16 @@ class AdminGuideCategories extends AdminTab
|
|||||||
'type' => 'textarea',
|
'type' => 'textarea',
|
||||||
'translatable' => true,
|
'translatable' => true,
|
||||||
),
|
),
|
||||||
|
'image' => array(
|
||||||
|
'title' => $this->l('Image'),
|
||||||
|
'type' => 'file',
|
||||||
|
'file_attrs' => [
|
||||||
|
'max_bytes' => $this->maxImageBytes,
|
||||||
|
'allowed_format' => 'JPEG',
|
||||||
|
'html_file' => "img",
|
||||||
|
'path' => $obj->getImageFileUrl()
|
||||||
|
]
|
||||||
|
),
|
||||||
'active' => array(
|
'active' => array(
|
||||||
'title' => $this->l('Displayed'),
|
'title' => $this->l('Displayed'),
|
||||||
'type' => 'yesno',
|
'type' => 'yesno',
|
||||||
@ -238,10 +253,60 @@ class AdminGuideCategories extends AdminTab
|
|||||||
<img src="../img/admin/delete.gif" alt="'.$_cacheLang['Delete'].'" title="'.$_cacheLang['Delete'].'" /></a>';
|
<img src="../img/admin/delete.gif" alt="'.$_cacheLang['Delete'].'" title="'.$_cacheLang['Delete'].'" /></a>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public function postProcess()
|
public function postProcess()
|
||||||
{
|
{
|
||||||
global $currentIndex;
|
if (isset($_GET['delete'.$this->table]) ||
|
||||||
|
Tools::getValue('submitDel'.$this->table)) {
|
||||||
|
$this->postProcessDelete();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
parent::postProcess();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
protected function afterUpdate()
|
||||||
|
{
|
||||||
|
return $this->afterAdd();
|
||||||
|
}
|
||||||
|
protected function afterAdd()
|
||||||
|
{
|
||||||
|
if (isset($_FILES['image']['tmp_name']) &&
|
||||||
|
$_FILES['image']['tmp_name'] != NULL) {
|
||||||
|
|
||||||
|
$object = $this->loadObject();
|
||||||
|
$error = checkImage( $_FILES['image'], $this->maxImageSize);
|
||||||
|
if ($error) {
|
||||||
|
$this->_errors[] = $error;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$tmpName = tempnam(_PS_TMP_IMG_DIR_, 'PS');
|
||||||
|
|
||||||
|
if (!$tmpName OR !move_uploaded_file($_FILES['image']['tmp_name'], $tmpName)) {
|
||||||
|
$this->_errors[] = Tools::displayError('An error occurred during the image upload');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$new_path = $object->getImageFilePath();
|
||||||
|
|
||||||
|
if (file_exists($new_path)) {
|
||||||
|
@unlink($new_path);
|
||||||
|
}
|
||||||
|
if (!imageResize($tmpName, $new_path, self::IMG_WIDTH, self::IMG_HEIGHT)) {
|
||||||
|
$this->_errors[] = Tools::displayError('An error occurred while copying image.');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@unlink($tmpName);
|
||||||
|
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function postProcessDelete()
|
||||||
|
{
|
||||||
if ($this->tabAccess['delete'] === '1')
|
if ($this->tabAccess['delete'] === '1')
|
||||||
{
|
{
|
||||||
if (isset($_GET['delete'.$this->table])) {
|
if (isset($_GET['delete'.$this->table])) {
|
||||||
@ -291,7 +356,5 @@ class AdminGuideCategories extends AdminTab
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
parent::postProcess();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -70,9 +70,12 @@ class FormBuilder
|
|||||||
$field['name'] = $key;
|
$field['name'] = $key;
|
||||||
$field['value'] = '';
|
$field['value'] = '';
|
||||||
$field['html_attrs'] = '';
|
$field['html_attrs'] = '';
|
||||||
|
$field['allowed_format'] = '';
|
||||||
|
$field['max_size'] = '';
|
||||||
|
|
||||||
$this->prepareTemplatePath($field);
|
$this->prepareTemplatePath($field);
|
||||||
$this->prepareInputHtmlAttributes($field);
|
$this->prepareInputHtmlAttributes($field);
|
||||||
|
$this->prepareFileInput($field);
|
||||||
$this->prepareSelectOptions($field);
|
$this->prepareSelectOptions($field);
|
||||||
$this->prepareTinyMCE($field, $cookie);
|
$this->prepareTinyMCE($field, $cookie);
|
||||||
$this->updateValueFields($field, $obj, $key, $langs);
|
$this->updateValueFields($field, $obj, $key, $langs);
|
||||||
@ -84,6 +87,35 @@ class FormBuilder
|
|||||||
$field['template'] = self::FORM_DIR.$field['type'].'.tpl';
|
$field['template'] = self::FORM_DIR.$field['type'].'.tpl';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function prepareFileInput(&$field)
|
||||||
|
{
|
||||||
|
if (isset($field['file_attrs']) && is_array($field['file_attrs'])) {
|
||||||
|
|
||||||
|
if (isset($field['file_attrs']['path'])) {
|
||||||
|
$field['file_path'] = $field['file_attrs']['path'];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($field['file_attrs']['html_file'])) {
|
||||||
|
$field['html_file'] = $field['file_attrs']['html_file'];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($field['file_attrs']['allowed_format'])) {
|
||||||
|
$field['allowed_format'] = $field['file_attrs']['allowed_format'];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($field['file_attrs']['max_bytes'])) {
|
||||||
|
|
||||||
|
$max_size = intval($field['file_attrs']['max_bytes'])/1000;
|
||||||
|
if ($max_size > 1000) {
|
||||||
|
$field['max_size'] = ($max_size/1000).' Mb';
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$field['max_size'] = $max_size.' Kb';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private function prepareInputHtmlAttributes(&$field)
|
private function prepareInputHtmlAttributes(&$field)
|
||||||
{
|
{
|
||||||
if (isset($field['attrs']) && is_array($field['attrs'])) {
|
if (isset($field['attrs']) && is_array($field['attrs'])) {
|
||||||
|
@ -56,6 +56,26 @@ class GuideCategory extends ObjectModel
|
|||||||
return $fields;
|
return $fields;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function getSubPath()
|
||||||
|
{
|
||||||
|
return 'modules/purchaseguide/img';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getImageFilePath()
|
||||||
|
{
|
||||||
|
if ($this->id) {
|
||||||
|
return _PS_ROOT_DIR_.'/'.self::getSubPath().'/'.$this->id.'.jpg';
|
||||||
|
}
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getImageFileUrl()
|
||||||
|
{
|
||||||
|
if ($this->id) {
|
||||||
|
return __PS_BASE_URI__.self::getSubPath().'/'.$this->id.'.jpg';
|
||||||
|
}
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
public static function findCategoriesTree($id_lang, $exclude_id=0)
|
public static function findCategoriesTree($id_lang, $exclude_id=0)
|
||||||
{
|
{
|
||||||
|
@ -2,6 +2,8 @@
|
|||||||
if (!defined('_PS_VERSION_'))
|
if (!defined('_PS_VERSION_'))
|
||||||
exit;
|
exit;
|
||||||
|
|
||||||
|
require_once(__DIR__.'/classes/GuideCategory.php');
|
||||||
|
|
||||||
class PurchaseGuide extends Module
|
class PurchaseGuide extends Module
|
||||||
{
|
{
|
||||||
const MODULE_NAME = 'purchaseguide';
|
const MODULE_NAME = 'purchaseguide';
|
||||||
@ -23,6 +25,7 @@ class PurchaseGuide extends Module
|
|||||||
if(!parent::install()
|
if(!parent::install()
|
||||||
|| !$this->installTabs()
|
|| !$this->installTabs()
|
||||||
|| !$this->createTables()
|
|| !$this->createTables()
|
||||||
|
|| !$this->installImageAddon()
|
||||||
) {
|
) {
|
||||||
$this->uninstall();
|
$this->uninstall();
|
||||||
return FALSE;
|
return FALSE;
|
||||||
@ -36,6 +39,7 @@ class PurchaseGuide extends Module
|
|||||||
{
|
{
|
||||||
$this->uninstallTabs();
|
$this->uninstallTabs();
|
||||||
$this->dropTables();
|
$this->dropTables();
|
||||||
|
$this->uninstallImageAddon();
|
||||||
|
|
||||||
return parent::uninstall();
|
return parent::uninstall();
|
||||||
}
|
}
|
||||||
@ -217,4 +221,31 @@ class PurchaseGuide extends Module
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function installImageAddon()
|
||||||
|
{
|
||||||
|
// Add image type
|
||||||
|
Db::getInstance()->Execute('
|
||||||
|
INSERT INTO `'._DB_PREFIX_.'image_type` VALUES (
|
||||||
|
DEFAULT, "guide_category", 980, 480, 0, 0, 0, 0, 0, 0
|
||||||
|
)
|
||||||
|
');
|
||||||
|
|
||||||
|
// Add image folder
|
||||||
|
$path = GuideCategory::getImagePath();
|
||||||
|
|
||||||
|
if(!is_dir($path)) {
|
||||||
|
mkdir($path, 0775);
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function uninstallImageAddon()
|
||||||
|
{
|
||||||
|
// Remove image type
|
||||||
|
Db::getInstance()->ExecuteS('
|
||||||
|
DELETE FROM `'._DB_PREFIX_.'image_type` WHERE `name` = "guide_category"
|
||||||
|
');
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
29
modules/purchaseguide/templates/form/file.tpl
Normal file
29
modules/purchaseguide/templates/form/file.tpl
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
<label>{$input.title} : </label>
|
||||||
|
|
||||||
|
<div class="margin-form">
|
||||||
|
|
||||||
|
{if $input.file_path != ''}
|
||||||
|
{if $input.html_file == 'img'}
|
||||||
|
<div style="margin-bottom:20px;width: 200px; height:150px; background:url('{$input.file_path}');background-size:cover;background-repeat: no-repeat;">
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
|
{/if}
|
||||||
|
<input type="file" style="width: 260px" name="{$input.name}" id="{$input.name}" value="{$input.name}" {$input.html_attrs} >
|
||||||
|
|
||||||
|
{if isset($input.required) && $input.required}
|
||||||
|
<sup> *</sup>
|
||||||
|
{/if}
|
||||||
|
<p>
|
||||||
|
{if $input.allowed_format}
|
||||||
|
{l s='Format'} : {$input.allowed_format}.
|
||||||
|
{/if}
|
||||||
|
|
||||||
|
{if $input.max_size}
|
||||||
|
File size'} :
|
||||||
|
{$input.max_size} {l s='max'}.
|
||||||
|
{/if}
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p class="clear"></p>
|
||||||
|
</div>
|
||||||
|
|
9
modules/purchaseguide/templates/home_adminguide.tpl
Normal file
9
modules/purchaseguide/templates/home_adminguide.tpl
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
<br /><br />
|
||||||
|
|
||||||
|
<fieldset>
|
||||||
|
<legend><img src="../img/admin/tab-tools.gif" alt="" />{l s='URL Rewriting settings'}</legend>
|
||||||
|
|
||||||
|
<p>{l s='Add the following text to the custom rewriting rules (Tools > Generators'} :</p>
|
||||||
|
<p> </p>
|
||||||
|
<textarea style="width: 850px; height: 120px;" readonly="true">{$rewrite_rules}</textarea>
|
||||||
|
</fieldset>
|
Loading…
Reference in New Issue
Block a user