// Theme can now be selected on AdminThemes page

This commit is contained in:
rMalie
2012-03-07 10:06:16 +00:00
parent e2a635ba65
commit bb99a4c05e
3 changed files with 179 additions and 129 deletions
@@ -24,20 +24,37 @@
* International Registered Trademark & Property of PrestaShop SA
*}
{extends file="helpers/options/options.tpl"}
{block name="after"}
<br/><br/>
<fieldset id="prestastore-content" class="width3"></fieldset>
<script type="text/javascript">
$.post(
"ajax-tab.php",
{
tab: 'AdminThemes',
token: '{$token}',
ajax: '1',
action:'getAddonsThemes',
page:'themes'
}, function(a){
$("#prestastore-content").html("<legend><img src='../img/admin/prestastore.gif' class='middle' />{l s='Live from PrestaShop Addons!'}</legend>"+a);
});
</script>
{block name="field"}
{if $field['type'] == 'theme'}
{if $field['can_display_themes']}
{foreach $field.themes as $theme}
<div class="select_theme {if $theme->id == $field['id_theme']}select_theme_choice{/if}" onclick="$(this).find('input').attr('checked', true); $('.select_theme').removeClass('select_theme_choice'); $(this).toggleClass('select_theme_choice');">
{$theme->name}<br />
<img src="../themes/{$theme->directory}/preview.jpg" alt="{$theme->directory}" /><br />
<input type="radio" name="id_theme" value="{$theme->id}" {if $theme->id == $field['id_theme']}checked="checked"{/if} />
</div>
{/foreach}
{/if}
{else}
{$smarty.block.parent}
{/if}
{/block}
{block name="after"}
<br/><br/>
<fieldset id="prestastore-content" class="width3"></fieldset>
<script type="text/javascript">
$.post(
"ajax-tab.php",
{
tab: 'AdminThemes',
token: '{$token}',
ajax: '1',
action:'getAddonsThemes',
page:'themes'
}, function(a){
$("#prestastore-content").html("<legend><img src='../img/admin/prestastore.gif' class='middle' />{l s='Live from PrestaShop Addons!'}</legend>"+a);
});
</script>
{/block}
@@ -73,128 +73,130 @@
{foreach $categoryData['fields'] AS $key => $field}
{if $field['type'] == 'hidden'}
<input type="hidden" name="{$key}" value="{$field['value']}" />
{else}
<div style="clear: both; padding-top:15px;" id="conf_id_{$key}" {if $field['is_invisible']} class="isInvisible"{/if}>
{if isset($field['title'])}
<label class="conf_title">
{$field['title']}</label>
{/if}
{block name="start_field_block"}
<div class="margin-form">
{/block}
{if $field['type'] == 'select'}
{if $field['list']}
<select name="{$key}"{if isset($field['js'])} onchange="{$field['js']}"{/if} id="{$key}" {if isset($field['size'])} size="{$field['size']}"{/if}>
{foreach $field['list'] AS $k => $option}
<option value="{$option[$field['identifier']]}"{if $field['value'] == $option[$field['identifier']]} selected="selected"{/if}>{$option['name']}</option>
{/foreach}
</select>
{else if isset($input.empty_message)}
{$input.empty_message}
{block name="field"}
{if $field['type'] == 'hidden'}
<input type="hidden" name="{$key}" value="{$field['value']}" />
{else}
<div style="clear: both; padding-top:15px;" id="conf_id_{$key}" {if $field['is_invisible']} class="isInvisible"{/if}>
{if isset($field['title'])}
<label class="conf_title">
{$field['title']}</label>
{/if}
{elseif $field['type'] == 'bool'}
<label class="t" for="{$key}_on"><img src="../img/admin/enabled.gif" alt="{l s='Yes'}" title="{l s='Yes'}" /></label>
<input type="radio" name="{$key}" id="{$key}_on" value="1" {if $field['value']} checked="checked"{/if}{if isset($field['js']['on'])} {$field['js']['on']}{/if}/>
<label class="t" for="{$key}_on"> {l s='Yes'}</label>
<label class="t" for="{$key}_off"><img src="../img/admin/disabled.gif" alt="{l s='No'}" title="{l s='No'}" style="margin-left: 10px;" /></label>
<input type="radio" name="{$key}" id="{$key}_off" value="0" {if !$field['value']} checked="checked"{/if}{if isset($field['js']['off'])} {$field['js']['off']}{/if}/>
<label class="t" for="{$key}_off"> {l s='No'}</label>
{elseif $field['type'] == 'radio'}
{foreach $field['choices'] AS $k => $v}
<input type="radio" name="{$key}" id="{$key}_{$k}" value="{$k}"{if $k == $field['value']} checked="checked"{/if}{if isset($field['js'][$k])} {$field['js'][$k]}{/if}/>
<label class="t" for="{$key}_{$k}"> {$v}</label><br />
{/foreach}
<br />
{*{elseif $field['type'] == 'checkbox'}
{foreach $field['choices'] AS $k => $v}
<input type="checkbox" name="{$key}" id="{$key}{$k}_on" value="{$k|intval}"{if $k == $field['value']} checked="checked"{/if}{if isset($field['js'][$k])} {$field['js'][$k]}{/if}/>
<label class="t" for="{$key}{$k}_on"> {$v}</label><br />
{/foreach}
<br />
*}
{elseif $field['type'] == 'text'}
<input type="{$field['type']}"{if isset($field['id'])} id="{$field['id']}"{/if} size="{if isset($field['size'])}{$field['size']|intval}{else}5{/if}" name="{$key}" value="{$field['value']|escape:'htmlall':'UTF-8'}" {if isset($field['autocomplete']) && !$field['autocomplete']}autocomplete="off"{/if}/>
{if isset($field['suffix'])}&nbsp;{$field['suffix']|strval}{/if}
{elseif $field['type'] == 'password'}
<input type="{$field['type']}"{if isset($field['id'])} id="{$field['id']}"{/if} size="{if isset($field['size'])}{$field['size']|intval}{else}5{/if}" name="{$key}" value="" {if isset($field['autocomplete']) && !$field['autocomplete']}autocomplete="off"{/if} />
{if isset($field['suffix'])}&nbsp;{$field['suffix']|strval}{/if}
{elseif $field['type'] == 'textarea'}
<textarea name={$key} cols="{$field['cols']}" rows="{$field['rows']}">{$field['value']|escape:'htmlall':'UTF-8'}</textarea>
{elseif $field['type'] == 'file'}
{if isset($field['thumb']) && $field['thumb']}
<img src="{$field['thumb']}" alt="{$field['title']}" title="{$field['title']}" /><br />
{/if}
<input type="file" name="{$key}" />
{elseif $field['type'] == 'price'}
{$currency_left_sign}<input type="text" size="{if isset($field['size'])}{$field['size']|intval}{else}5{/if}" name="{$key}" value="{$field['value']|escape:'htmlall':'UTF-8'}" />{$currency_right_sign} {l s='(tax excl.)'}
{elseif $field['type'] == 'textLang' || $field['type'] == 'textareaLang' || $field['type'] == 'selectLang'}
{if $field['type'] == 'textLang'}
{foreach $field['languages'] AS $id_lang => $value}
<div id="{$key}_{$id_lang}" style="margin-bottom:8px; display: {if $id_lang == $current_id_lang}block{else}none{/if}; float: left; vertical-align: top;">
<input type="text" size="{if isset($field['size'])}{$field['size']|intval}{else}5{/if}" name="{$key}_{$id_lang}" value="{$value|htmlentities}" />
</div>
{/foreach}
{elseif $field['type'] == 'textareaLang'}
{foreach $field['languages'] AS $id_lang => $value}
<div id="{$key}_{$id_lang}" style="display: {if $id_lang == $current_id_lang}block{else}none{/if}; float: left;">
<textarea rows="{$field['rows']}" cols="{$field['cols']|intval}" name="{$key}_{$id_lang}">{$value|replace:'\r\n':"\n"}</textarea>
</div>
{/foreach}
{elseif $field['type'] == 'selectLang'}
{foreach $languages as $language}
<div id="{$key}_{$language.id_lang}" style="margin-bottom:8px; display: {if $language.id_lang == $current_id_lang}block{else}none{/if}; float: left; vertical-align: top;">
<select name="{$key}_{$language.iso_code|upper}">
{foreach $field['list'] AS $k => $v}
<option value="{if isset($v.cast)}{$v.cast[$v[$field.identifier]]}{else}{$v[$field.identifier]}{/if}"
{if $field['value'][$language.id_lang] == $v['name']} selected="selected"{/if}>
{$v['name']}
</option>
{block name="start_field_block"}
<div class="margin-form">
{/block}
{if $field['type'] == 'select'}
{if $field['list']}
<select name="{$key}"{if isset($field['js'])} onchange="{$field['js']}"{/if} id="{$key}" {if isset($field['size'])} size="{$field['size']}"{/if}>
{foreach $field['list'] AS $k => $option}
<option value="{$option[$field['identifier']]}"{if $field['value'] == $option[$field['identifier']]} selected="selected"{/if}>{$option['name']}</option>
{/foreach}
</select>
</div>
{else if isset($input.empty_message)}
{$input.empty_message}
{/if}
{elseif $field['type'] == 'bool'}
<label class="t" for="{$key}_on"><img src="../img/admin/enabled.gif" alt="{l s='Yes'}" title="{l s='Yes'}" /></label>
<input type="radio" name="{$key}" id="{$key}_on" value="1" {if $field['value']} checked="checked"{/if}{if isset($field['js']['on'])} {$field['js']['on']}{/if}/>
<label class="t" for="{$key}_on"> {l s='Yes'}</label>
<label class="t" for="{$key}_off"><img src="../img/admin/disabled.gif" alt="{l s='No'}" title="{l s='No'}" style="margin-left: 10px;" /></label>
<input type="radio" name="{$key}" id="{$key}_off" value="0" {if !$field['value']} checked="checked"{/if}{if isset($field['js']['off'])} {$field['js']['off']}{/if}/>
<label class="t" for="{$key}_off"> {l s='No'}</label>
{elseif $field['type'] == 'radio'}
{foreach $field['choices'] AS $k => $v}
<input type="radio" name="{$key}" id="{$key}_{$k}" value="{$k}"{if $k == $field['value']} checked="checked"{/if}{if isset($field['js'][$k])} {$field['js'][$k]}{/if}/>
<label class="t" for="{$key}_{$k}"> {$v}</label><br />
{/foreach}
{/if}
{if count($languages) > 1}
<div class="displayed_flag">
<img src="../img/l/{$current_id_lang}.jpg"
class="pointer"
id="language_current_{$key}"
onclick="toggleLanguageFlags(this);" />
</div>
<div id="languages_{$key}" class="language_flags">
{l s='Choose language:'}<br /><br />
{foreach $languages as $language}
<img src="../img/l/{$language.id_lang}.jpg"
class="pointer"
alt="{$language.name}"
title="{$language.name}"
onclick="changeLanguage('{$key}', '{if isset($custom_key)}{$custom_key}{else}{$key}{/if}', {$language.id_lang}, '{$language.iso_code}');" />
<br />
{*{elseif $field['type'] == 'checkbox'}
{foreach $field['choices'] AS $k => $v}
<input type="checkbox" name="{$key}" id="{$key}{$k}_on" value="{$k|intval}"{if $k == $field['value']} checked="checked"{/if}{if isset($field['js'][$k])} {$field['js'][$k]}{/if}/>
<label class="t" for="{$key}{$k}_on"> {$v}</label><br />
{/foreach}
<br />
*}
{elseif $field['type'] == 'text'}
<input type="{$field['type']}"{if isset($field['id'])} id="{$field['id']}"{/if} size="{if isset($field['size'])}{$field['size']|intval}{else}5{/if}" name="{$key}" value="{$field['value']|escape:'htmlall':'UTF-8'}" {if isset($field['autocomplete']) && !$field['autocomplete']}autocomplete="off"{/if}/>
{if isset($field['suffix'])}&nbsp;{$field['suffix']|strval}{/if}
{elseif $field['type'] == 'password'}
<input type="{$field['type']}"{if isset($field['id'])} id="{$field['id']}"{/if} size="{if isset($field['size'])}{$field['size']|intval}{else}5{/if}" name="{$key}" value="" {if isset($field['autocomplete']) && !$field['autocomplete']}autocomplete="off"{/if} />
{if isset($field['suffix'])}&nbsp;{$field['suffix']|strval}{/if}
{elseif $field['type'] == 'textarea'}
<textarea name={$key} cols="{$field['cols']}" rows="{$field['rows']}">{$field['value']|escape:'htmlall':'UTF-8'}</textarea>
{elseif $field['type'] == 'file'}
{if isset($field['thumb']) && $field['thumb']}
<img src="{$field['thumb']}" alt="{$field['title']}" title="{$field['title']}" /><br />
{/if}
<input type="file" name="{$key}" />
{elseif $field['type'] == 'price'}
{$currency_left_sign}<input type="text" size="{if isset($field['size'])}{$field['size']|intval}{else}5{/if}" name="{$key}" value="{$field['value']|escape:'htmlall':'UTF-8'}" />{$currency_right_sign} {l s='(tax excl.)'}
{elseif $field['type'] == 'textLang' || $field['type'] == 'textareaLang' || $field['type'] == 'selectLang'}
{if $field['type'] == 'textLang'}
{foreach $field['languages'] AS $id_lang => $value}
<div id="{$key}_{$id_lang}" style="margin-bottom:8px; display: {if $id_lang == $current_id_lang}block{else}none{/if}; float: left; vertical-align: top;">
<input type="text" size="{if isset($field['size'])}{$field['size']|intval}{else}5{/if}" name="{$key}_{$id_lang}" value="{$value|htmlentities}" />
</div>
{/foreach}
{elseif $field['type'] == 'textareaLang'}
{foreach $field['languages'] AS $id_lang => $value}
<div id="{$key}_{$id_lang}" style="display: {if $id_lang == $current_id_lang}block{else}none{/if}; float: left;">
<textarea rows="{$field['rows']}" cols="{$field['cols']|intval}" name="{$key}_{$id_lang}">{$value|replace:'\r\n':"\n"}</textarea>
</div>
{/foreach}
{elseif $field['type'] == 'selectLang'}
{foreach $languages as $language}
<div id="{$key}_{$language.id_lang}" style="margin-bottom:8px; display: {if $language.id_lang == $current_id_lang}block{else}none{/if}; float: left; vertical-align: top;">
<select name="{$key}_{$language.iso_code|upper}">
{foreach $field['list'] AS $k => $v}
<option value="{if isset($v.cast)}{$v.cast[$v[$field.identifier]]}{else}{$v[$field.identifier]}{/if}"
{if $field['value'][$language.id_lang] == $v['name']} selected="selected"{/if}>
{$v['name']}
</option>
{/foreach}
</select>
</div>
{/foreach}
{/if}
{if count($languages) > 1}
<div class="displayed_flag">
<img src="../img/l/{$current_id_lang}.jpg"
class="pointer"
id="language_current_{$key}"
onclick="toggleLanguageFlags(this);" />
</div>
<div id="languages_{$key}" class="language_flags">
{l s='Choose language:'}<br /><br />
{foreach $languages as $language}
<img src="../img/l/{$language.id_lang}.jpg"
class="pointer"
alt="{$language.name}"
title="{$language.name}"
onclick="changeLanguage('{$key}', '{if isset($custom_key)}{$custom_key}{else}{$key}{/if}', {$language.id_lang}, '{$language.iso_code}');" />
{/foreach}
</div>
{/if}
<br style="clear:both">
{/if}
{if ($field['multishop_default'])}
<div class="preference_default_multishop">
<label>
<input type="checkbox" name="configUseDefault[{$key}]" value="1" {if $field['is_disabled']} checked="checked"{/if} onclick="checkMultishopDefaultValue(this, '{$key}')" /> {l s='Use default value'}
</label>
</div>
{/if}
<br style="clear:both">
{/if}
{if ($field['multishop_default'])}
<div class="preference_default_multishop">
<label>
<input type="checkbox" name="configUseDefault[{$key}]" value="1" {if $field['is_disabled']} checked="checked"{/if} onclick="checkMultishopDefaultValue(this, '{$key}')" /> {l s='Use default value'}
</label>
{if isset($field['required']) && $field['required'] && $field['type'] != 'radio'}
<sup>*</sup>
{/if}
{if isset($field['hint'])}<span class="hint" name="help_box">{$field['hint']}<span class="hint-pointer">&nbsp;</span></span>{/if}
{if isset($field['desc'])}<p class="preference_description">{$field['desc']}</p>{/if}
{if $field['is_invisible']}<p class="warn">{l s='You can\'t change the value of this configuration field in this shop context'}</p>{/if}
</div>
{block name="end_field_block"}
</div>
<div class="clear"></div>
{/block}
{/if}
{if isset($field['required']) && $field['required'] && $field['type'] != 'radio'}
<sup>*</sup>
{/if}
{if isset($field['hint'])}<span class="hint" name="help_box">{$field['hint']}<span class="hint-pointer">&nbsp;</span></span>{/if}
{if isset($field['desc'])}<p class="preference_description">{$field['desc']}</p>{/if}
{if $field['is_invisible']}<p class="warn">{l s='You can\'t change the value of this configuration field in this shop context'}</p>{/if}
</div>
{block name="end_field_block"}
</div>
<div class="clear"></div>
{/block}
{/if}
{/block}
{/foreach}
{if isset($categoryData['submit'])}
<div class="margin-form">
@@ -97,7 +97,21 @@ class AdminThemesControllerCore extends AdminController
{
parent::init();
$this->can_display_themes = (!Shop::isFeatureActive() || Shop::getContext() == Shop::CONTEXT_SHOP) ? true : false;
$this->options = array(
'theme' => array(
'title' => sprintf($this->l('Select theme for shop %s'), $this->context->shop->name),
'description' => (!$this->can_display_themes) ? $this->l('You must select a shop in top list if you want to select a theme') : '',
'fields' => array(
'theme_for_shop' => array(
'type' => 'theme',
'themes' => Theme::getThemes(),
'id_theme' => $this->context->shop->id_theme,
'can_display_themes' => $this->can_display_themes,
),
),
),
'appearance' => array(
'title' => $this->l('Appearance'),
'icon' => 'email',
@@ -581,6 +595,23 @@ class AdminThemesControllerCore extends AdminController
Configuration::updateGlobalValue('PS_FAVICON', 'favicon.ico');
}
/**
* Update theme for current shop
*/
public function updateOptionThemeForShop()
{
if (!$this->can_display_themes)
return;
$id_theme = (int)Tools::getValue('id_theme');
if ($id_theme && $this->context->shop->id_theme != $id_theme)
{
$this->context->shop->id_theme = $id_theme;
$this->context->shop->update();
$this->redirect_after = self::$currentIndex.'&token='.$this->token;
}
}
protected function uploadIco($name, $dest)
{
if (isset($_FILES[$name]['tmp_name']) && !empty($_FILES[$name]['tmp_name']))