// fix admin Language and Theme controller
git-svn-id: http://dev.prestashop.com/svn/v1/branches/1.5.x@11955 b9a71923-0436-4b27-9f14-aed3839534dd
This commit is contained in:
@@ -486,6 +486,41 @@ class AdminLanguagesControllerCore extends AdminController
|
|||||||
if (!$lang->active)
|
if (!$lang->active)
|
||||||
$this->_errors[] = Tools::displayError('You cannot set this language as default language because it\'s disabled');
|
$this->_errors[] = Tools::displayError('You cannot set this language as default language because it\'s disabled');
|
||||||
}
|
}
|
||||||
|
public function ajaxProcessCheckLangPack()
|
||||||
|
{
|
||||||
|
$this->json = true;
|
||||||
|
if(empty($_GET['iso_lang']))
|
||||||
|
{
|
||||||
|
$this->status = 'error';
|
||||||
|
$this->_errors[] = '[TECHNICAL ERROR] iso_lang not set or empty';
|
||||||
|
}
|
||||||
|
if(empty($_GET['ps_version']))
|
||||||
|
{
|
||||||
|
$this->status = 'error';
|
||||||
|
$this->_errors[] = '[TECHNICAL ERROR] ps_version not set or empty';
|
||||||
|
}
|
||||||
|
if(@fsockopen('api.prestashop.com', 80))
|
||||||
|
{
|
||||||
|
// Get all iso code available
|
||||||
|
$lang_packs = Tools::file_get_contents('http://api.prestashop.com/download/lang_packs/get_language_pack.php?version='.(string)$_GET['ps_version'].'&iso_lang='.(string)$_GET['iso_lang']);
|
||||||
|
|
||||||
|
if ($lang_packs !== '' && Tools::jsonDecode($lang_packs) !== NULL)
|
||||||
|
{
|
||||||
|
$this->status = 'ok';
|
||||||
|
$this->content = $lang_packs;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$this->status = 'error';
|
||||||
|
$this->_errors[] = $this->l('wrong ISO code or lang pack unavailable');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$this->status = 'error';
|
||||||
|
$this->_errors[] = '[TECHNICAL ERROR] Server unreachable';
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -135,18 +135,20 @@ class AdminThemesControllerCore extends AdminController
|
|||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
$getAvailableThemes = Theme::getAvailable(false);
|
}
|
||||||
$available_theme_directories = array();
|
|
||||||
|
|
||||||
$selected_theme_directory = null;
|
public function renderForm(){
|
||||||
if ($this->loadObject(true))
|
$getAvailableThemes = Theme::getAvailable(false);
|
||||||
$selected_theme_directory = $this->object->directory;
|
$available_theme_dir = array();
|
||||||
|
$selected_theme_dir = null;
|
||||||
|
if ($this->object)
|
||||||
|
$selected_theme_dir= $this->object->directory;
|
||||||
|
|
||||||
foreach($getAvailableThemes as $k => $dirname)
|
foreach($getAvailableThemes as $k => $dirname)
|
||||||
{
|
{
|
||||||
$available_theme_directories[$k]['value'] = $dirname;
|
$available_theme_dir[$k]['value'] = $dirname;
|
||||||
$available_theme_directories[$k]['label'] = $dirname;
|
$available_theme_dir[$k]['label'] = $dirname;
|
||||||
$available_theme_directories[$k]['id'] = $dirname;
|
$available_theme_dir[$k]['id'] = $dirname;
|
||||||
};
|
};
|
||||||
$this->fields_form = array(
|
$this->fields_form = array(
|
||||||
'tinymce' => false,
|
'tinymce' => false,
|
||||||
@@ -163,25 +165,48 @@ class AdminThemesControllerCore extends AdminController
|
|||||||
'required' => true,
|
'required' => true,
|
||||||
'hint' => $this->l('Invalid characters:').' <>;=#{}',
|
'hint' => $this->l('Invalid characters:').' <>;=#{}',
|
||||||
),
|
),
|
||||||
array(
|
|
||||||
'type' => 'radio',
|
|
||||||
'label' => $this->l('Directory:'),
|
|
||||||
'name' => 'directory',
|
|
||||||
'required' => true,
|
|
||||||
'br' => true,
|
|
||||||
'class' => 't',
|
|
||||||
'values' => $available_theme_directories,
|
|
||||||
'selected' => $selected_theme_directory,
|
|
||||||
'desc' => $this->l('Note: only the existence of the directory is checked. Please be sure to select a valid theme directory.'),
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
'submit' => array(
|
'submit' => array(
|
||||||
'title' => $this->l(' Save '),
|
'title' => $this->l(' Save '),
|
||||||
'class' => 'button'
|
'class' => 'button'
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
// adding a new theme, you can create a directory, and copy from an existing theme
|
||||||
|
if ($this->display == 'add' || !$this->object->id)
|
||||||
|
{
|
||||||
|
$this->fields_form['input'][] = array(
|
||||||
|
'type' => 'text',
|
||||||
|
'label' => $this->l('Directory:'),
|
||||||
|
'name' => 'directory',
|
||||||
|
'required' => true,
|
||||||
|
'desc' => $this->l('Note: only the existence of the directory is checked. Please be sure to select a valid theme directory.'),
|
||||||
|
);
|
||||||
|
$this->fields_form['input'][] = array(
|
||||||
|
'type' => 'select',
|
||||||
|
'name' => 'based_on',
|
||||||
|
'label' => $this->l('Based on'),
|
||||||
|
'options' => array(
|
||||||
|
'id' => 'id', 'name' => 'name',
|
||||||
|
'default' => array('value' => 0, 'label' => ' - '),
|
||||||
|
'query' => Theme::getThemes(),
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
$this->fields_form['input'][] = array(
|
||||||
|
'type' => 'radio',
|
||||||
|
'label' => $this->l('Directory:'),
|
||||||
|
'name' => 'directory',
|
||||||
|
'required' => true,
|
||||||
|
'br' => true,
|
||||||
|
'class' => 't',
|
||||||
|
'values' => $available_theme_dir,
|
||||||
|
'selected' => $selected_theme_dir,
|
||||||
|
'desc' => $this->l('Note: only the existence of the directory is checked. Please be sure to select a valid theme directory.'),
|
||||||
|
);
|
||||||
|
|
||||||
|
return parent::renderForm();
|
||||||
|
}
|
||||||
public function renderList(){
|
public function renderList(){
|
||||||
$this->addRowAction('edit');
|
$this->addRowAction('edit');
|
||||||
$this->addRowAction('delete');
|
$this->addRowAction('delete');
|
||||||
@@ -192,6 +217,59 @@ class AdminThemesControllerCore extends AdminController
|
|||||||
return parent::renderList();
|
return parent::renderList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* copy $base_theme_dir into $target_theme_dir.
|
||||||
|
*
|
||||||
|
* @param string $base_theme_dir relative path to base dir
|
||||||
|
* @param string $target_theme_dir relative path to target dir
|
||||||
|
* @return boolean true if success
|
||||||
|
*/
|
||||||
|
private static function copyTheme($base_theme_dir, $target_theme_dir)
|
||||||
|
{
|
||||||
|
$res = true;
|
||||||
|
$base_theme_dir = rtrim($base_theme_dir, '/').'/';
|
||||||
|
$base_dir = _PS_ALL_THEMES_DIR_ . $base_theme_dir;
|
||||||
|
$target_theme_dir = rtrim($target_theme_dir, '/').'/';
|
||||||
|
$target_dir = _PS_ALL_THEMES_DIR_ . $target_theme_dir;
|
||||||
|
$files = scandir($base_dir);
|
||||||
|
|
||||||
|
foreach ($files as $file)
|
||||||
|
if (!in_array($file[0], array('.', '..', '.svn')))
|
||||||
|
{
|
||||||
|
if (is_dir($base_dir.$file))
|
||||||
|
{
|
||||||
|
if (!is_dir($target_dir.$file))
|
||||||
|
mkdir($target_dir.$file, Theme::$access_rights);
|
||||||
|
|
||||||
|
$res &= self::copyTheme($base_theme_dir.$file, $target_theme_dir.$file);
|
||||||
|
}
|
||||||
|
elseif (!file_exists($target_theme_dir.$file))
|
||||||
|
$res &= copy($base_dir.$file, $target_dir.$file);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $res;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function processAdd($token){
|
||||||
|
$new_dir = Tools::getValue('directory');
|
||||||
|
$res = true;
|
||||||
|
if (Validate::isDirName($new_dir) && !is_dir(_PS_ALL_THEMES_DIR_.$new_dir))
|
||||||
|
{
|
||||||
|
$res &= mkdir(_PS_ALL_THEMES_DIR_.$new_dir, Theme::$access_rights);
|
||||||
|
if ($res)
|
||||||
|
$this->confirmations[] = $this->l('Directory successfully created');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (0 !== $id_based = (int)Tools::getValue('based_on'))
|
||||||
|
{
|
||||||
|
$base_theme = new Theme($id_based);
|
||||||
|
$res = $this->copyTheme($base_theme->directory, $new_dir);
|
||||||
|
$base_theme = new Theme((int)Tools::getValue('based_on'));
|
||||||
|
}
|
||||||
|
|
||||||
|
return parent::processAdd($token);
|
||||||
|
}
|
||||||
|
|
||||||
public function processDelete($token){
|
public function processDelete($token){
|
||||||
$obj = $this->loadObject();
|
$obj = $this->loadObject();
|
||||||
if ($obj && $obj->isUsed())
|
if ($obj && $obj->isUsed())
|
||||||
@@ -449,7 +527,6 @@ class AdminThemesControllerCore extends AdminController
|
|||||||
|
|
||||||
protected function uploadIco($name, $dest)
|
protected function uploadIco($name, $dest)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (isset($_FILES[$name]['tmp_name']) && !empty($_FILES[$name]['tmp_name']))
|
if (isset($_FILES[$name]['tmp_name']) && !empty($_FILES[$name]['tmp_name']))
|
||||||
{
|
{
|
||||||
/* Check ico validity */
|
/* Check ico validity */
|
||||||
|
|||||||
Reference in New Issue
Block a user