// 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 * International Registered Trademark & Property of PrestaShop SA
*} *}
{extends file="helpers/options/options.tpl"} {extends file="helpers/options/options.tpl"}
{block name="after"}
<br/><br/> {block name="field"}
<fieldset id="prestastore-content" class="width3"></fieldset> {if $field['type'] == 'theme'}
<script type="text/javascript"> {if $field['can_display_themes']}
$.post( {foreach $field.themes as $theme}
"ajax-tab.php", <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 />
tab: 'AdminThemes', <img src="../themes/{$theme->directory}/preview.jpg" alt="{$theme->directory}" /><br />
token: '{$token}', <input type="radio" name="id_theme" value="{$theme->id}" {if $theme->id == $field['id_theme']}checked="checked"{/if} />
ajax: '1', </div>
action:'getAddonsThemes', {/foreach}
page:'themes' {/if}
}, function(a){ {else}
$("#prestastore-content").html("<legend><img src='../img/admin/prestastore.gif' class='middle' />{l s='Live from PrestaShop Addons!'}</legend>"+a); {$smarty.block.parent}
}); {/if}
</script> {/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} {/block}
@@ -73,128 +73,130 @@
{foreach $categoryData['fields'] AS $key => $field} {foreach $categoryData['fields'] AS $key => $field}
{if $field['type'] == 'hidden'} {block name="field"}
<input type="hidden" name="{$key}" value="{$field['value']}" /> {if $field['type'] == 'hidden'}
{else} <input type="hidden" name="{$key}" value="{$field['value']}" />
<div style="clear: both; padding-top:15px;" id="conf_id_{$key}" {if $field['is_invisible']} class="isInvisible"{/if}> {else}
{if isset($field['title'])} <div style="clear: both; padding-top:15px;" id="conf_id_{$key}" {if $field['is_invisible']} class="isInvisible"{/if}>
<label class="conf_title"> {if isset($field['title'])}
{$field['title']}</label> <label class="conf_title">
{/if} {$field['title']}</label>
{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}
{/if} {/if}
{elseif $field['type'] == 'bool'} {block name="start_field_block"}
<label class="t" for="{$key}_on"><img src="../img/admin/enabled.gif" alt="{l s='Yes'}" title="{l s='Yes'}" /></label> <div class="margin-form">
<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}/> {/block}
<label class="t" for="{$key}_on"> {l s='Yes'}</label> {if $field['type'] == 'select'}
<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> {if $field['list']}
<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}/> <select name="{$key}"{if isset($field['js'])} onchange="{$field['js']}"{/if} id="{$key}" {if isset($field['size'])} size="{$field['size']}"{/if}>
<label class="t" for="{$key}_off"> {l s='No'}</label> {foreach $field['list'] AS $k => $option}
{elseif $field['type'] == 'radio'} <option value="{$option[$field['identifier']]}"{if $field['value'] == $option[$field['identifier']]} selected="selected"{/if}>{$option['name']}</option>
{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>
{/foreach} {/foreach}
</select> </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} {/foreach}
{/if} <br />
{if count($languages) > 1} {*{elseif $field['type'] == 'checkbox'}
<div class="displayed_flag"> {foreach $field['choices'] AS $k => $v}
<img src="../img/l/{$current_id_lang}.jpg" <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}/>
class="pointer" <label class="t" for="{$key}{$k}_on"> {$v}</label><br />
id="language_current_{$key}" {/foreach}
onclick="toggleLanguageFlags(this);" /> <br />
</div> *}
<div id="languages_{$key}" class="language_flags"> {elseif $field['type'] == 'text'}
{l s='Choose language:'}<br /><br /> <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}/>
{foreach $languages as $language} {if isset($field['suffix'])}&nbsp;{$field['suffix']|strval}{/if}
<img src="../img/l/{$language.id_lang}.jpg" {elseif $field['type'] == 'password'}
class="pointer" <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} />
alt="{$language.name}" {if isset($field['suffix'])}&nbsp;{$field['suffix']|strval}{/if}
title="{$language.name}" {elseif $field['type'] == 'textarea'}
onclick="changeLanguage('{$key}', '{if isset($custom_key)}{$custom_key}{else}{$key}{/if}', {$language.id_lang}, '{$language.iso_code}');" /> <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} {/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> </div>
{/if} {/if}
<br style="clear:both"> {if isset($field['required']) && $field['required'] && $field['type'] != 'radio'}
{/if} <sup>*</sup>
{if ($field['multishop_default'])} {/if}
<div class="preference_default_multishop"> {if isset($field['hint'])}<span class="hint" name="help_box">{$field['hint']}<span class="hint-pointer">&nbsp;</span></span>{/if}
<label> {if isset($field['desc'])}<p class="preference_description">{$field['desc']}</p>{/if}
<input type="checkbox" name="configUseDefault[{$key}]" value="1" {if $field['is_disabled']} checked="checked"{/if} onclick="checkMultishopDefaultValue(this, '{$key}')" /> {l s='Use default value'} {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}
</label>
</div> </div>
{block name="end_field_block"}
</div>
<div class="clear"></div>
{/block}
{/if} {/if}
{if isset($field['required']) && $field['required'] && $field['type'] != 'radio'} {/block}
<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}
{/foreach} {/foreach}
{if isset($categoryData['submit'])} {if isset($categoryData['submit'])}
<div class="margin-form"> <div class="margin-form">
@@ -97,7 +97,21 @@ class AdminThemesControllerCore extends AdminController
{ {
parent::init(); parent::init();
$this->can_display_themes = (!Shop::isFeatureActive() || Shop::getContext() == Shop::CONTEXT_SHOP) ? true : false;
$this->options = array( $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( 'appearance' => array(
'title' => $this->l('Appearance'), 'title' => $this->l('Appearance'),
'icon' => 'email', 'icon' => 'email',
@@ -581,6 +595,23 @@ class AdminThemesControllerCore extends AdminController
Configuration::updateGlobalValue('PS_FAVICON', 'favicon.ico'); 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) 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']))