Merge branch 'release' into development

This commit is contained in:
vAugagneur
2013-03-08 14:54:31 +01:00
14 changed files with 536 additions and 611 deletions
@@ -23,7 +23,6 @@
* International Registered Trademark & Property of PrestaShop SA * International Registered Trademark & Property of PrestaShop SA
*} *}
{if isset($module_content)} {if isset($module_content)}
{$module_content} {$module_content}
{else} {else}
@@ -25,36 +25,26 @@
{if $add_permission eq '1'} {if $add_permission eq '1'}
{if isset($logged_on_addons)} {if isset($logged_on_addons)}
<!--start addons login--> <!--start addons login-->
<div class="filter-module" id="addons_login_div"> <div class="filter-module" id="addons_login_div">
<p>{l s='You are logged into PrestaShop Addons.'}</p> <p>{l s='You are logged into PrestaShop Addons.'}</p>
<div style="float:right"> <div style="float:right">
<label><img src="themes/default/img/module-profile.png" /> {l s='Welcome'} {$username_addons}</label> <label><img src="themes/default/img/module-profile.png" /> {l s='Welcome'} {$username_addons}</label>
<label>|</label> <label>|</label>
<label><a href="#" id="addons_logout_button"><img src="themes/default/img/module-logout.png" /> {l s='Log out from PrestaShop Addons.'}</a></label> <label><a href="#" id="addons_logout_button"><img src="themes/default/img/module-logout.png" /> {l s='Log out from PrestaShop Addons.'}</a></label>
</div> </div>
</div> </div>
<!--end addons login--> <!--end addons login-->
{else} {else}
{if $check_url_fopen eq 'ko' OR $check_openssl eq 'ko'} {if $check_url_fopen eq 'ko' OR $check_openssl eq 'ko'}
<div class="warn"> <div class="warn">
<b>{l s='If you want to be able to fully use the AdminModules panel and have free modules available, you should enable the following configuration on your server:'}</b><br /> <b>{l s='If you want to be able to fully use the AdminModules panel and have free modules available, you should enable the following configuration on your server:'}</b><br />
{if $check_url_fopen eq 'ko'}- {l s='Enable allow_url_fopen'}<br />{/if} {if $check_url_fopen eq 'ko'}- {l s='Enable allow_url_fopen'}<br />{/if}
{if $check_openssl eq 'ko'}- {l s='Enable php openSSL extension'}<br />{/if} {if $check_openssl eq 'ko'}- {l s='Enable php openSSL extension'}<br />{/if}
</div> </div>
{else} {else}
<!--start addons login--> <!--start addons login-->
<div class="filter-module" id="addons_login_div"> <div class="filter-module" id="addons_login_div">
<p>{l s='Do you have a %s account?' sprintf='<a href="http://addons.prestashop.com/">PrestaShop Addons</a>'}</p> <p>{l s='Do you have a %s account?' sprintf='<a href="http://addons.prestashop.com/">PrestaShop Addons</a>'}</p>
<form id="addons_login_form" method="post"> <form id="addons_login_form" method="post">
<label>{l s='Login to Addons'} :</label> <input type="text" value="" id="username_addons" autocomplete="off" class="ac_input"> <label>{l s='Login to Addons'} :</label> <input type="text" value="" id="username_addons" autocomplete="off" class="ac_input">
@@ -62,67 +52,59 @@
<input type="submit" class="button" id="addons_login_button" value="{l s='Log in'}"> <input type="submit" class="button" id="addons_login_button" value="{l s='Log in'}">
<br /><span id="addons_loading" style="color:red"></span> <br /><span id="addons_loading" style="color:red"></span>
</form> </form>
</div> </div>
<!--end addons login--> <!--end addons login-->
{/if} {/if}
{/if} {/if}
<div class="clear">&nbsp;</div>
{/if} {/if}
<!--start filter module--> <!--start filter module-->
<style>.ac_results { border:1px solid #C2C4D9; }</style> <style>.ac_results { border:1px solid #C2C4D9; }</style>
<div class="filter-module"> <div class="filter-module">
<form id="filternameForm" method="post"> <form id="filternameForm" method="post">
<input type="text" value="" name="filtername" autocomplete="off" class="ac_input"> <input type="text" value="" name="filtername" autocomplete="off" class="ac_input">
<input type="submit" class="button" value="{l s='Search:'}"> <input type="submit" class="button" value="{l s='Search:'}">
</form> </form>
<form method="post">
<div class="select-filter">
<label class="search-filter">{l s='Sort by'}:</label>
<form method="post"> <select name="module_type" id="module_type_filter" {if $showTypeModules ne 'allModules' && $showTypeModules ne ''}style="background-color:#49B2FF;color:white;"{/if}>
<option value="allModules" {if $showTypeModules eq 'allModules'}selected="selected"{/if}>{l s='All Modules'}</option>
<div class="select-filter"> <option value="nativeModules" {if $showTypeModules eq 'nativeModules'}selected="selected"{/if}>{l s='Free Modules'}</option>
<label class="search-filter">{l s='Sort by'}:</label> <option value="partnerModules" {if $showTypeModules eq 'partnerModules'}selected="selected"{/if}>{l s='Partner Modules (Free)'}</option>
<option value="mustHaveModules" {if $showTypeModules eq 'mustHaveModules'}selected="selected"{/if}>{l s='Must Have'}</option>
<select name="module_type" id="module_type_filter" {if $showTypeModules ne 'allModules' && $showTypeModules ne ''}style="background-color:#49B2FF;color:white;"{/if}> {if isset($logged_on_addons)}<option value="addonsModules" {if $showTypeModules eq 'addonsModules'}selected="selected"{/if}>{l s='Modules purchased on Addons'}</option>{/if}
<option value="allModules" {if $showTypeModules eq 'allModules'}selected="selected"{/if}>{l s='All Modules'}</option> <optgroup label="{l s='Authors'}">
<option value="nativeModules" {if $showTypeModules eq 'nativeModules'}selected="selected"{/if}>{l s='Free Modules'}</option> {foreach from=$list_modules_authors key=module_author item=status}
<option value="partnerModules" {if $showTypeModules eq 'partnerModules'}selected="selected"{/if}>{l s='Partner Modules (Free)'}</option> <option value="authorModules[{$module_author}]" {if $status eq "selected"}selected{/if}>{$module_author|truncate:20:'...'}</option>
<option value="mustHaveModules" {if $showTypeModules eq 'mustHaveModules'}selected="selected"{/if}>{l s='Must Have'}</option> {/foreach}
{if isset($logged_on_addons)}<option value="addonsModules" {if $showTypeModules eq 'addonsModules'}selected="selected"{/if}>{l s='Modules purchased on Addons'}</option>{/if} </optgroup>
<optgroup label="{l s='Authors'}"> <option value="otherModules" {if $showTypeModules eq 'otherModules'}selected="selected"{/if}>{l s='Other Modules'}</option>
{foreach from=$list_modules_authors key=module_author item=status} </select>
<option value="authorModules[{$module_author}]" {if $status eq "selected"}selected{/if}>{$module_author|truncate:20:'...'}</option> &nbsp;
{/foreach} <select name="module_install" id="module_install_filter" {if $showInstalledModules ne 'installedUninstalled' && $showInstalledModules ne ''}style="background-color:#49B2FF;color:white;"{/if}>
</optgroup> <option value="installedUninstalled" {if $showInstalledModules eq 'installedUninstalled'}selected="selected"{/if}>{l s='Installed & Not Installed'}</option>
<option value="otherModules" {if $showTypeModules eq 'otherModules'}selected="selected"{/if}>{l s='Other Modules'}</option> <option value="installed" {if $showInstalledModules eq 'installed'}selected="selected"{/if}>{l s='Installed Modules'}</option>
</select> <option value="uninstalled" {if $showInstalledModules eq 'uninstalled'}selected="selected"{/if}>{l s='Modules Not Installed '}</option>
&nbsp; </select>
<select name="module_install" id="module_install_filter" {if $showInstalledModules ne 'installedUninstalled' && $showInstalledModules ne ''}style="background-color:#49B2FF;color:white;"{/if}> &nbsp;
<option value="installedUninstalled" {if $showInstalledModules eq 'installedUninstalled'}selected="selected"{/if}>{l s='Installed & Not Installed'}</option> <select name="module_status" id="module_status_filter" {if $showEnabledModules ne 'enabledDisabled' && $showEnabledModules ne ''}style="background-color:#49B2FF;color:white;"{/if}>
<option value="installed" {if $showInstalledModules eq 'installed'}selected="selected"{/if}>{l s='Installed Modules'}</option> <option value="enabledDisabled" {if $showEnabledModules eq 'enabledDisabled'}selected="selected"{/if}>{l s='Enabled & Disabled'}</option>
<option value="uninstalled" {if $showInstalledModules eq 'uninstalled'}selected="selected"{/if}>{l s='Modules Not Installed '}</option> <option value="enabled" {if $showEnabledModules eq 'enabled'}selected="selected"{/if}>{l s='Enabled Modules'}</option>
</select> <option value="disabled" {if $showEnabledModules eq 'disabled'}selected="selected"{/if}>{l s='Disabled Modules'}</option>
&nbsp; </select>
<select name="module_status" id="module_status_filter" {if $showEnabledModules ne 'enabledDisabled' && $showEnabledModules ne ''}style="background-color:#49B2FF;color:white;"{/if}> &nbsp;
<option value="enabledDisabled" {if $showEnabledModules eq 'enabledDisabled'}selected="selected"{/if}>{l s='Enabled & Disabled'}</option> <select name="country_module_value" id="country_module_value_filter" {if $showCountryModules eq 1}style="background-color:#49B2FF;color:white;"{/if}>
<option value="enabled" {if $showEnabledModules eq 'enabled'}selected="selected"{/if}>{l s='Enabled Modules'}</option> <option value="0" >{l s='All countries'}</option>
<option value="disabled" {if $showEnabledModules eq 'disabled'}selected="selected"{/if}>{l s='Disabled Modules'}</option> <option value="1" {if $showCountryModules eq 1}selected="selected"{/if}>{l s='Current country:'} {$nameCountryDefault}</option>
</select> </select>
&nbsp; </div>
<select name="country_module_value" id="country_module_value_filter" {if $showCountryModules eq 1}style="background-color:#49B2FF;color:white;"{/if}> <div class="button-filter">
<option value="0" >{l s='All countries'}</option> <input type="submit" value="{l s='Reset'}" name="resetFilterModules" class="button" />
<option value="1" {if $showCountryModules eq 1}selected="selected"{/if}>{l s='Current country:'} {$nameCountryDefault}</option> <input type="submit" value="{l s='Filter'}" id="filterModulesButton" name="filterModules" class="button" />
</select> </div>
</form>
</div> </div>
<!--end filter module-->
<div class="button-filter">
<input type="submit" value="{l s='Reset'}" name="resetFilterModules" class="button" />
<input type="submit" value="{l s='Filter'}" id="filterModulesButton" name="filterModules" class="button" />
</div>
</form>
</div>
<!--end filter module-->
@@ -23,27 +23,23 @@
* International Registered Trademark & Property of PrestaShop SA * International Registered Trademark & Property of PrestaShop SA
*} *}
<div class="toolbar-placeholder"> <div class="toolbar-placeholder">
<div class="toolbarBox toolbarHead"> <div class="toolbarBox toolbarHead">
<ul class="cc_button">
<ul class="cc_button"> {if $add_permission eq '1'}
{if $add_permission eq '1'} <li>
<li> <a id="desc-module-new" class="toolbar_btn" href="#top_container" onclick="$('#module_install').slideToggle();" title="{l s='Add a new module'}">
<a id="desc-module-new" class="toolbar_btn" href="#top_container" onclick="$('#module_install').slideToggle();" title="{l s='Add a new module'}"> <span class="process-icon-new-module" ></span>
<span class="process-icon-new-module" ></span> <div>{l s='Add a new module'}</div>
<div>{l s='Add a new module'}</div> </a>
</a> </li>
</li> {/if}
{/if} </ul>
</ul> <div class="pageTitle">
<h3><span id="current_obj" style="font-weight: normal;"><span class="breadcrumb item-0">Module</span> : <span class="breadcrumb item-1">{l s='List of modules'}</span></span></h3>
<div class="pageTitle">
<h3><span id="current_obj" style="font-weight: normal;"><span class="breadcrumb item-0">Module</span> : <span class="breadcrumb item-1">{l s='List of modules'}</span></span></h3>
</div>
</div> </div>
</div> </div>
</div>
{if $add_permission eq '1'} {if $add_permission eq '1'}
<div id="module_install" style="width:500px;margin-top:5px;{if !isset($smarty.post.downloadflag)}display: none;{/if}"> <div id="module_install" style="width:500px;margin-top:5px;{if !isset($smarty.post.downloadflag)}display: none;{/if}">
@@ -1,373 +1,327 @@
{* {*
* 2007-2013 PrestaShop * 2007-2013 PrestaShop
* *
* NOTICE OF LICENSE * NOTICE OF LICENSE
* *
* This source file is subject to the Academic Free License (AFL 3.0) * This source file is subject to the Academic Free License (AFL 3.0)
* that is bundled with this package in the file LICENSE.txt. * that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL: * It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/afl-3.0.php * http://opensource.org/licenses/afl-3.0.php
* If you did not receive a copy of the license and are unable to * 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 * obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately. * to license@prestashop.com so we can send you a copy immediately.
* *
* DISCLAIMER * DISCLAIMER
* *
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer * 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 * versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information. * needs please refer to http://www.prestashop.com for more information.
* *
* @author PrestaShop SA <contact@prestashop.com> * @author PrestaShop SA <contact@prestashop.com>
* @copyright 2007-2013 PrestaShop SA * @copyright 2007-2013 PrestaShop SA
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
* International Registered Trademark & Property of PrestaShop SA * International Registered Trademark & Property of PrestaShop SA
*} *}
<script type="text/javascript">{$autocompleteList}</script> <script type="text/javascript">{$autocompleteList}</script>
<script type="text/javascript"> <script type="text/javascript">
var token = '{$token}'; var token = '{$token}';
var currentIndex = '{$currentIndex}'; var currentIndex = '{$currentIndex}';
var currentIndexWithToken = '{$currentIndex}&token={$token}'; var currentIndexWithToken = '{$currentIndex}&token={$token}';
var dirNameCurrentIndex = '{$dirNameCurrentIndex}'; var dirNameCurrentIndex = '{$dirNameCurrentIndex}';
var ajaxCurrentIndex = '{$ajaxCurrentIndex}'; var ajaxCurrentIndex = '{$ajaxCurrentIndex}';
var installed_modules = {if isset($installed_modules) && count($installed_modules)}{$installed_modules}{else}false{/if}; var installed_modules = {if isset($installed_modules) && count($installed_modules)}{$installed_modules}{else}false{/if};
var by = '{l s='by'}'; var by = '{l s='by'}';
var errorLogin = '{l s='PrestaShop was unable to login to Addons. Please check your credentials and your internet connection.'}'; var errorLogin = '{l s='PrestaShop was unable to login to Addons. Please check your credentials and your internet connection.'}';
var confirmPreferencesSaved = '{l s='Preferences saved'}'; var confirmPreferencesSaved = '{l s='Preferences saved'}';
{if isset($smarty.get.anchor) && !isset($error_module)}var anchor = '{$smarty.get.anchor|htmlentities|replace:'(':''|replace:')':''|replace:'{':''|replace:'}':''|replace:'\'':''|replace:'/':''}';{else}var anchor = '';{/if} {if isset($smarty.get.anchor) && !isset($error_module)}var anchor = '{$smarty.get.anchor|htmlentities|replace:'(':''|replace:')':''|replace:'{':''|replace:'}':''|replace:'\'':''|replace:'/':''}';{else}var anchor = '';{/if}
{literal} {literal}
function getPrestaStore(){if(getE("prestastore").style.display!='block')return;$.post(dirNameCurrentIndex+"/ajax.php",{page:"prestastore"},function(a){getE("prestastore-content").innerHTML=a;})} function getPrestaStore(){if(getE("prestastore").style.display!='block')return;$.post(dirNameCurrentIndex+"/ajax.php",{page:"prestastore"},function(a){getE("prestastore-content").innerHTML=a;})}
function truncate_author(author){return ((author.length > 20) ? author.substring(0, 20)+"..." : author);} function truncate_author(author){return ((author.length > 20) ? author.substring(0, 20)+"..." : author);}
function modules_management(action) function modules_management(action)
{ {
var modules = document.getElementsByName('modules'); var modules = document.getElementsByName('modules');
var module_list = ''; var module_list = '';
for (var i = 0; i < modules.length; i++) for (var i = 0; i < modules.length; i++)
{ {
if (modules[i].checked == true) if (modules[i].checked == true)
{ {
rel = modules[i].getAttribute('rel'); rel = modules[i].getAttribute('rel');
if (rel != "false" && action == "uninstall") if (rel != "false" && action == "uninstall")
{ {
if (!confirm(rel)) if (!confirm(rel))
return false; return false;
} }
module_list += '|'+modules[i].value; module_list += '|'+modules[i].value;
} }
} }
document.location.href=currentIndex+'&token='+token+'&'+action+'='+module_list.substring(1, module_list.length); document.location.href=currentIndex+'&token='+token+'&'+action+'='+module_list.substring(1, module_list.length);
} }
$('document').ready( function() { $('document').ready( function() {
// ScrollTo // ScrollTo
if (anchor != '') if (anchor != '')
$.scrollTo('#'+anchor, 1200, {offset: -100}); $.scrollTo('#'+anchor, 1200, {offset: -100});
// AutoComplete Search // AutoComplete Search
$('input[name="filtername"]').autocomplete(moduleList, { $('input[name="filtername"]').autocomplete(moduleList, {
minChars: 0, minChars: 0,
width: 310, width: 310,
matchContains: true, matchContains: true,
highlightItem: true, highlightItem: true,
formatItem: function(row, i, max, term) { formatItem: function(row, i, max, term) {
var image = '../modules/'+row.name+'/logo.gif'; var image = '../modules/'+row.name+'/logo.gif';
if (row.image != '') if (row.image != '')
image = row.image; image = row.image;
return '<img src="'+image+'" style="float:left;margin:5px;width:16px;height:16px"><strong>'+row.displayName+'</strong>'+((row.author != '') ? ' ' + by + ' ' + truncate_author(row.author) : '') + '<br /><span style="font-size: 80%;">'+ row.desc +'</span><br/><div style="height:15px;padding-top:5px">'+ row.option +'</div>'; return '<img src="'+image+'" style="float:left;margin:5px;width:16px;height:16px"><strong>'+row.displayName+'</strong>'+((row.author != '') ? ' ' + by + ' ' + truncate_author(row.author) : '') + '<br /><span style="font-size: 80%;">'+ row.desc +'</span><br/><div style="height:15px;padding-top:5px">'+ row.option +'</div>';
}, },
formatResult: function(row) { formatResult: function(row) {
return row.displayName; return row.displayName;
} }
}); });
$('input[name="filtername"]').result(function(event, data, formatted) { $('input[name="filtername"]').result(function(event, data, formatted) {
$('#filternameForm').submit(); $('#filternameForm').submit();
}); });
// Method to check / uncheck all modules checkbox // Method to check / uncheck all modules checkbox
$('#checkme').click(function() $('#checkme').click(function()
{ {
if ($(this).attr("rel") == 'false') if ($(this).attr("rel") == 'false')
{ {
$(this).attr("checked", true); $(this).attr("checked", true);
$(this).attr("rel", "true"); $(this).attr("rel", "true");
$("input[name=modules]").attr("checked", true); $("input[name=modules]").attr("checked", true);
} }
else else
{ {
$(this).removeAttr("checked"); $(this).removeAttr("checked");
$(this).attr("rel", "false"); $(this).attr("rel", "false");
$("input[name=modules]").removeAttr("checked"); $("input[name=modules]").removeAttr("checked");
} }
}); });
// Method to reload filter in ajax // Method to reload filter in ajax
$('.categoryModuleFilterLink').click(function() $('.categoryModuleFilterLink').click(function()
{ {
$('.categoryModuleFilterLink').css('background-color', 'white'); $('.categoryModuleFilterLink').css('background-color', 'white');
$(this).css('background-color', '#EBEDF4'); $(this).css('background-color', '#EBEDF4');
var ajaxReloadCurrentIndex = $(this).find('a').attr('href').replace('index.php', 'ajax-tab.php'); var ajaxReloadCurrentIndex = $(this).find('a').attr('href').replace('index.php', 'ajax-tab.php');
try try
{ {
resAjax = $.ajax({ resAjax = $.ajax({
type:"POST", type:"POST",
url : ajaxReloadCurrentIndex, url : ajaxReloadCurrentIndex,
async: true, async: true,
data : { data : {
ajax : "1", ajax : "1",
token : token, token : token,
controller : "AdminModules", controller : "AdminModules",
action : "reloadModulesList" action : "reloadModulesList"
}, },
beforeSend: function(xhr) beforeSend: function(xhr){
{ $('#moduleContainer').html('<img src="../img/loader.gif" alt="" border="0" />');
$('#moduleContainer').html('<img src="../img/loader.gif" alt="" border="0" />'); },
}, success: function(data){
success : function(data) $('#moduleContainer').html(data);
{ }
$('#moduleContainer').html(data); });
}, }
error: function(res,textStatus,jqXHR) catch(e){}
{ return false;
//jAlert("TECHNICAL ERROR"+res); });
}
}); // Method to get modules_list.xml from prestashop.com and default_country_modules_list.xml from addons.prestashop.com
} try
catch(e){} {
return false; resAjax = $.ajax({
}); type:"POST",
url: ajaxCurrentIndex,
// Method to get modules_list.xml from prestashop.com and default_country_modules_list.xml from addons.prestashop.com async: true,
try data: {
{ ajaxMode : "1",
resAjax = $.ajax({ ajax : "1",
type:"POST", token : token,
url : ajaxCurrentIndex, controller : "AdminModules",
async: true, action : "refreshModuleList"
data : { },
ajaxMode : "1", success: function(data){
ajax : "1", if (data == '{"status":"refresh"}')
token : token, window.location.href = window.location.href;
controller : "AdminModules", }
action : "refreshModuleList" });
}, }
success : function(data) catch(e) { }
{
// res.status = cache or refresh // Method to log on PrestaShop Addons WebServices
if (data == '{"status":"refresh"}') $('#addons_login_button').click(function()
window.location.href = window.location.href; {
}, var username_addons = $("#username_addons").val();
error: function(res,textStatus,jqXHR) var password_addons = $("#password_addons").val();
{ try
//jAlert("TECHNICAL ERROR"+res); {
} resAjax = $.ajax({
}); type:"POST",
} url : ajaxCurrentIndex,
catch(e) { } async: true,
data : {
// Method to log on PrestaShop Addons WebServices ajax : "1",
$('#addons_login_button').click(function() token : token,
{ controller : "AdminModules",
var username_addons = $("#username_addons").val(); action : "logOnAddonsWebservices",
var password_addons = $("#password_addons").val(); username_addons : username_addons,
try password_addons : password_addons
{ },
resAjax = $.ajax({ beforeSend: function(xhr){
type:"POST", $('#addons_loading').html('<img src="../img/loader.gif" alt="" border="0" />');
url : ajaxCurrentIndex, },
async: true, success : function(data){
data : { if (data == 'OK')
ajax : "1", {
token : token, $('#addons_loading').html('');
controller : "AdminModules", $('#addons_login_div').fadeOut();
action : "logOnAddonsWebservices", window.location.href = currentIndexWithToken;
username_addons : username_addons, }
password_addons : password_addons else
}, $('#addons_loading').html(errorLogin);
beforeSend: function(xhr) }
{ });
$('#addons_loading').html('<img src="../img/loader.gif" alt="" border="0" />'); }
}, catch(e){}
success : function(data) return false;
{ });
// res.status = cache or refresh
if (data == 'OK') // Method to log out PrestaShop Addons WebServices
{ $('#addons_logout_button').click(function()
$('#addons_loading').html(''); {
$('#addons_login_div').fadeOut(); try
window.location.href = currentIndexWithToken; {
} resAjax = $.ajax({
else type:"POST",
$('#addons_loading').html(errorLogin); url : ajaxCurrentIndex,
}, async: true,
error: function(res,textStatus,jqXHR) data : {
{ ajax : "1",
//jAlert("TECHNICAL ERROR"+res); token : token,
} controller : "AdminModules",
}); action : "logOutAddonsWebservices"
} },
catch(e){} beforeSend: function(xhr){
return false; $('#addons_loading').html('<img src="../img/loader.gif" alt="" border="0" />');
}); },
success: function(data) {
// Method to log out PrestaShop Addons WebServices if (data == 'OK')
$('#addons_logout_button').click(function() {
{ $('#addons_loading').html('');
try $('#addons_login_div').fadeOut();
{ window.location.href = currentIndexWithToken;
resAjax = $.ajax({ }
type:"POST", else
url : ajaxCurrentIndex, $('#addons_loading').html(errorLogin);
async: true, }
data : { });
ajax : "1", }
token : token, catch(e){}
controller : "AdminModules", return false;
action : "logOutAddonsWebservices" });
},
beforeSend: function(xhr) // Method to set filter on modules
{ function setFilter()
$('#addons_loading').html('<img src="../img/loader.gif" alt="" border="0" />'); {
}, var module_type = $("#module_type_filter").val();
success : function(data) var module_install = $("#module_install_filter").val();
{ var module_status = $("#module_status_filter").val();
// res.status = cache or refresh var country_module_value = $("#country_module_value_filter").val();
if (data == 'OK') try
{ {
$('#addons_loading').html(''); resAjax = $.ajax({
$('#addons_login_div').fadeOut(); type:"POST",
window.location.href = currentIndexWithToken; url : ajaxCurrentIndex,
} async: true,
else data : {
$('#addons_loading').html(errorLogin); ajax : "1",
}, token : token,
error: function(res,textStatus,jqXHR) controller : "AdminModules",
{ action : "setFilter",
//jAlert("TECHNICAL ERROR"+res); module_type : module_type,
} module_install : module_install,
}); module_status : module_status,
} country_module_value : country_module_value,
catch(e){} filterModules : 'Filter'
return false; },
}); success : function(data){
if (data == 'OK')
// Method to set filter on modules window.location.href = currentIndexWithToken;
function setFilter() }
{ });
var module_type = $("#module_type_filter").val(); }
var module_install = $("#module_install_filter").val(); catch(e){}
var module_status = $("#module_status_filter").val(); return false;
var country_module_value = $("#country_module_value_filter").val(); }
try $('#module_type_filter').change(function() { setFilter(); });
{ $('#module_install_filter').change(function() { setFilter(); });
resAjax = $.ajax({ $('#module_status_filter').change(function() { setFilter(); });
type:"POST", $('#country_module_value_filter').change(function() { setFilter(); });
url : ajaxCurrentIndex,
async: true, $('.moduleTabPreferencesChoise').change(function()
data : { {
ajax : "1", var value_pref = $(this).val();
token : token, var module_pref = $(this).attr('name');
controller : "AdminModules", module_pref = module_pref.substring(2, module_pref.length);
action : "setFilter",
module_type : module_type, $.ajax({
module_install : module_install, type:"POST",
module_status : module_status, url : ajaxCurrentIndex,
country_module_value : country_module_value, async: true,
filterModules : 'Filter' data : {
}, ajax : "1",
success : function(data) token : token,
{ controller : "AdminModules",
// res.status = cache or refresh action : "saveTabModulePreferences",
if (data == 'OK') module_pref : module_pref,
window.location.href = currentIndexWithToken; value_pref : value_pref
}, },
error: function(res,textStatus,jqXHR) success : function(data){
{ if (data == 'OK')
//jAlert("TECHNICAL ERROR"+res); $('#r_' + module_pref).html(confirmPreferencesSaved);
} }
}); });
} });
catch(e){}
return false; // Method to save favorites preferences
} $('.moduleFavorite').change(function()
$('#module_type_filter').change(function() { setFilter(); }); {
$('#module_install_filter').change(function() { setFilter(); }); var value_pref = $(this).val();
$('#module_status_filter').change(function() { setFilter(); }); var module_pref = $(this).attr('name');
$('#country_module_value_filter').change(function() { setFilter(); }); var action_pref = module_pref.substring(0, 1);
module_pref = module_pref.substring(2, module_pref.length);
try
$('.moduleTabPreferencesChoise').change(function() {
{ resAjax = $.ajax({
var value_pref = $(this).val(); type:"POST",
var module_pref = $(this).attr('name'); url : ajaxCurrentIndex,
module_pref = module_pref.substring(2, module_pref.length); async: true,
data : {
$.ajax({ ajax : "1",
type:"POST", token : token,
url : ajaxCurrentIndex, controller : "AdminModules",
async: true, action : "saveFavoritePreferences",
data : { action_pref : action_pref,
ajax : "1", module_pref : module_pref,
token : token, value_pref : value_pref
controller : "AdminModules", },
action : "saveTabModulePreferences", success : function(data){
module_pref : module_pref, if (data == 'OK')
value_pref : value_pref $('#r_' + module_pref).html(confirmPreferencesSaved);
}, }
success : function(data) });
{ }
// res.status = cache or refresh catch(e){}
if (data == 'OK') return false;
$('#r_' + module_pref).html(confirmPreferencesSaved); });
}, });
error: function(res,textStatus,jqXHR)
{ {/literal}
//jAlert("TECHNICAL ERROR"+res);
}
});
});
// Method to save favorites preferences
$('.moduleFavorite').change(function()
{
var value_pref = $(this).val();
var module_pref = $(this).attr('name');
var action_pref = module_pref.substring(0, 1);
module_pref = module_pref.substring(2, module_pref.length);
try
{
resAjax = $.ajax({
type:"POST",
url : ajaxCurrentIndex,
async: true,
data : {
ajax : "1",
token : token,
controller : "AdminModules",
action : "saveFavoritePreferences",
action_pref : action_pref,
module_pref : module_pref,
value_pref : value_pref
},
success : function(data)
{
// res.status = cache or refresh
if (data == 'OK')
$('#r_' + module_pref).html(confirmPreferencesSaved);
},
error: function(res,textStatus,jqXHR)
{
//jAlert("TECHNICAL ERROR"+res);
}
});
}
catch(e){}
return false;
});
});
{/literal}
</script> </script>
@@ -1,122 +1,115 @@
{* {*
* 2007-2013 PrestaShop * 2007-2013 PrestaShop
* *
* NOTICE OF LICENSE * NOTICE OF LICENSE
* *
* This source file is subject to the Academic Free License (AFL 3.0) * This source file is subject to the Academic Free License (AFL 3.0)
* that is bundled with this package in the file LICENSE.txt. * that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL: * It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/afl-3.0.php * http://opensource.org/licenses/afl-3.0.php
* If you did not receive a copy of the license and are unable to * 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 * obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately. * to license@prestashop.com so we can send you a copy immediately.
* *
* DISCLAIMER * DISCLAIMER
* *
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer * 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 * versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information. * needs please refer to http://www.prestashop.com for more information.
* *
* @author PrestaShop SA <contact@prestashop.com> * @author PrestaShop SA <contact@prestashop.com>
* @copyright 2007-2013 PrestaShop SA * @copyright 2007-2013 PrestaShop SA
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
* International Registered Trademark & Property of PrestaShop SA * International Registered Trademark & Property of PrestaShop SA
*} *}
{if count($modules)} {if count($modules)}
<table cellspacing="0" cellpadding="0" style="width: 100%; margin-bottom:10px;" class="table" id="">
<table cellspacing="0" cellpadding="0" style="width: 100%; margin-bottom:10px;" class="table" id=""> <thead>
<col width="20px"> <tr class="nodrag nodrop">
<col width="40px"> <th class="center">
<col> <input type="checkbox" rel="false" class="noborder" id="checkme"><br>
<col width="150px"> </th>
</colgroup> <th class="center"></th>
<thead> <th>{l s='Module name'}</th>
<tr class="nodrag nodrop"> <th></th>
<th class="center"> </tr>
<input type="checkbox" rel="false" class="noborder" id="checkme"><br> <tbody>
</th> {foreach from=$modules item=module}
<th class="center"></th> <tr>
<th>{l s='Module name'}</th> <td>
<th></th> {if (isset($module->id) && $module->id > 0) || !isset($module->type) || $module->type != 'addonsMustHave'}
</tr> <input type="checkbox" name="modules" value="{$module->name}"
<tbody> {if !isset($module->confirmUninstall) OR empty($module->confirmUninstall)}rel="false"{else}rel="{$module->confirmUninstall|addslashes}"{/if}
{foreach from=$modules item=module} class="noborder">
<tr> {/if}
<td> </td>
{if (isset($module->id) && $module->id > 0) || !isset($module->type) || $module->type != 'addonsMustHave'} <td><img class="imgm" alt="" src="{if isset($module->image)}{$module->image}{else}../modules/{$module->name}/{$module->logo}{/if}"></td>
<input type="checkbox" name="modules" value="{$module->name}" <td>
{if !isset($module->confirmUninstall) OR empty($module->confirmUninstall)}rel="false"{else}rel="{$module->confirmUninstall|addslashes}"{/if} <div class="moduleDesc" id="anchor{$module->name|ucfirst}">
class="noborder"> <h3>{$module->displayName}
{/if} {if isset($module->type) && $module->type == 'addonsMustHave'}
</td> <span class="setup must-have">{l s='Must Have'}</span>
<td><img class="imgm" alt="" src="{if isset($module->image)}{$module->image}{else}../modules/{$module->name}/{$module->logo}{/if}"></td> {else}
<td> {if isset($module->id) && $module->id gt 0}
<div class="moduleDesc" id="anchor{$module->name|ucfirst}"> <span class="setup{if isset($module->active) && $module->active eq 0} off{/if}">{l s='Installed'}</span>
<h3>{$module->displayName} {else}
{if isset($module->type) && $module->type == 'addonsMustHave'} <span class="setup non-install">{l s='Not installed'}</span>
<span class="setup must-have">{l s='Must Have'}</span> {/if}
{else} {/if}
{if isset($module->id) && $module->id gt 0} </h3>
<span class="setup{if isset($module->active) && $module->active eq 0} off{/if}">{l s='Installed'}</span> <div class="metadata">
{else} {if isset($module->author) && !empty($module->author)}
<span class="setup non-install">{l s='Not installed'}</span> <dl class="">
{/if} <dt>{l s='Developed by'} :</dt>
{/if} <dd>{$module->author|truncate:20:'...'}</dd>|
</h3> </dl>
<div class="metadata"> {/if}
{if isset($module->author) && !empty($module->author)} <dl class="">
<dl class=""> <dt>{l s='Version'} :</dt>
<dt>{l s='Developed by'} :</dt> <dd>{$module->version}
<dd>{$module->author|truncate:20:'...'}</dd>| {if isset($module->version_addons)}({l s='Update'} {$module->version_addons} {l s='Available on PrestaShop Addons'}){/if}
</dl> </dd>|
{/if} </dl>
<dl class=""> <dl class="">
<dt>{l s='Version'} :</dt> <dt>{l s='Category'} :</dt>
<dd>{$module->version} <dd>{$module->categoryName}</dd>
{if isset($module->version_addons)}({l s='Update'} {$module->version_addons} {l s='Available on PrestaShop Addons'}){/if} </dl>
</dd>| </div>
</dl> <p class="desc">{if isset($module->description) && $module->description ne ''}{l s='Description'} : {$module->description}{else}&nbsp;{/if}</p>
<dl class=""> {if isset($module->message)}<div class="conf">{$module->message}</div>{/if}
<dt>{l s='Category'} :</dt> <div class="row-actions-module">
<dd>{$module->categoryName}</dd> {if !isset($module->not_on_disk)}{$module->optionsHtml}{else}&nbsp;{/if}
</dl> </div>
</div> </div>
<p class="desc">{if isset($module->description) && $module->description ne ''}{l s='Description'} : {$module->description}{else}&nbsp;{/if}</p> </td>
{if isset($module->message)}<div class="conf">{$module->message}</div>{/if} <td>
<div class="row-actions-module"> <ul id="list-action-button">
{if !isset($module->not_on_disk)}{$module->optionsHtml}{else}&nbsp;{/if} {if isset($module->type) && $module->type == 'addonsMustHave'}
</div> <li>
</div> <a href="{$module->addons_buy_url}" target="_blank" class="button updated"><span><img src="../img/admin/cart_addons.png">&nbsp;&nbsp;{if isset($module->id_currency) && isset($module->price)}{displayPrice price=$module->price currency=$module->id_currency}{/if}</span></a>
</td> </li>
<td> {else}
<ul id="list-action-button"> {if $module->id && isset($module->version_addons) && $module->version_addons}
{if isset($module->type) && $module->type == 'addonsMustHave'} <li><a href="{$module->options.update_url}" class="button updated"><span>{l s='Update it!'}</span></a></li>
<li> {/if}
<a href="{$module->addons_buy_url}" target="_blank" class="button updated"><span><img src="../img/admin/cart_addons.png">&nbsp;&nbsp;{if isset($module->id_currency) && isset($module->price)}{displayPrice price=$module->price currency=$module->id_currency}{/if}</span></a> <li>
</li> <a {if isset($module->id) && $module->id gt 0 && !empty($module->options.uninstall_onclick)}onclick="{$module->options.uninstall_onclick}"{/if} href="{if isset($module->id) && $module->id gt 0}{$module->options.uninstall_url}{else}{$module->options.install_url}{/if}" class="button installed">
{else} <span>{if isset($module->id) && $module->id gt 0}{l s='Uninstall'}{else}{l s='Install'}{/if}</span>
{if $module->id && isset($module->version_addons) && $module->version_addons} </a>
<li><a href="{$module->options.update_url}" class="button updated"><span>{l s='Update it!'}</span></a></li> </li>
{/if} {/if}
<li> </ul>
<a {if isset($module->id) && $module->id gt 0 && !empty($module->options.uninstall_onclick)}onclick="{$module->options.uninstall_onclick}"{/if} href="{if isset($module->id) && $module->id gt 0}{$module->options.uninstall_url}{else}{$module->options.install_url}{/if}" class="button installed"> </td>
<span>{if isset($module->id) && $module->id gt 0}{l s='Uninstall'}{else}{l s='Install'}{/if}</span> </tr>
</a> {/foreach}
</li> </tbody>
{/if} </table>
</ul>
</td> <div style="margin-top: 12px;">
</tr> <input type="button" class="button big" value="{l s='Install the selection'}" onclick="modules_management('install')"/>
{/foreach} <input type="button" class="button big" value="{l s='Uninstall the selection'}" onclick="modules_management('uninstall')" />
</tbody> </div>
</table> {else}
<div style="margin-top: 12px;color: #585A69;font-size: 16px;"><p align="center">{l s='No modules available in this section.'}</p></div>
<div style="margin-top: 12px;"> {/if}
<input type="button" class="button big" value="{l s='Install the selection'}" onclick="modules_management('install')"/>
<input type="button" class="button big" value="{l s='Uninstall the selection'}" onclick="modules_management('uninstall')" />
</div>
{else}
<div style="margin-top: 12px;color: #585A69;font-size: 16px;"><p align="center">{l s='No modules available in this section.'}</p></div>
{/if}
@@ -24,14 +24,12 @@
*} *}
<div id="productBox"> <div id="productBox">
{include file='controllers/modules/header.tpl'} {include file='controllers/modules/header.tpl'}
{include file='controllers/modules/filters.tpl'} {include file='controllers/modules/filters.tpl'}
<ul class="view-modules"> <ul class="view-modules">
<li class="button normal-view-disabled"><img src="themes/default/img/modules_view_layout_sidebar.png" alt="{l s='Normal view'}" border="0" /><span>{l s='Normal view'}</span></li> <li class="button normal-view-disabled"><img src="themes/default/img/modules_view_layout_sidebar.png" alt="{l s='Normal view'}" border="0" /><span>{l s='Normal view'}</span></li>
<li class="button favorites-view"><a href="index.php?controller={$smarty.get.controller|htmlentities}&token={$smarty.get.token|htmlentities}&select=favorites"><img src="themes/default/img/modules_view_table_select_row.png" alt="{l s='Favorites view'}" border="0" /><span>{l s='Favorites view'}</span></a></li> <li class="button favorites-view"><a href="index.php?controller={$smarty.get.controller|htmlentities}&token={$smarty.get.token|htmlentities}&select=favorites"><img src="themes/default/img/modules_view_table_select_row.png" alt="{l s='Favorites view'}" border="0" /><span>{l s='Favorites view'}</span></a></li>
</ul> </ul>
<div id="container"> <div id="container">
@@ -58,10 +56,8 @@
</ul> </ul>
</div> </div>
</div> </div>
<div id="moduleContainer"> <div id="moduleContainer">
{include file='controllers/modules/list.tpl'} {include file='controllers/modules/list.tpl'}
</div> </div>
</div> </div>
</div> </div>
+2
View File
@@ -51,6 +51,8 @@ class TranslateCore
if ($_LANGADM == null) if ($_LANGADM == null)
{ {
$iso = Context::getContext()->language->iso_code; $iso = Context::getContext()->language->iso_code;
if (empty($iso))
$iso = Language::getIsoById((int)(Configuration::get('PS_LANG_DEFAULT')));
include_once(_PS_TRANSLATIONS_DIR_.$iso.'/admin.php'); include_once(_PS_TRANSLATIONS_DIR_.$iso.'/admin.php');
} }
+8 -8
View File
@@ -1164,10 +1164,10 @@ abstract class ModuleCore
$item->active = 0; $item->active = 0;
if (isset($modaddons->img)) if (isset($modaddons->img))
{ {
if (!file_exists('../img/tmp/'.md5($modaddons->name).'.jpg')) if (!file_exists(_PS_TMP_IMG_DIR_.md5($modaddons->name).'.jpg'))
if (!@copy($modaddons->img, '../img/tmp/'.md5($modaddons->name).'.jpg')) if (!file_put_contents(_PS_TMP_IMG_DIR_.md5($modaddons->name).'.jpg', Tools::file_get_contents($modaddons->img)))
@copy('../img/404.gif', '../img/tmp/'.md5($modaddons->name).'.jpg'); copy(_PS_IMG_DIR_.'404.gif', _PS_TMP_IMG_DIR_.md5($modaddons->name).'.jpg');
if (file_exists('../img/tmp/'.md5($modaddons->name).'.jpg')) if (file_exists(_PS_TMP_IMG_DIR_.md5($modaddons->name).'.jpg'))
$item->image = '../img/tmp/'.md5($modaddons->name).'.jpg'; $item->image = '../img/tmp/'.md5($modaddons->name).'.jpg';
} }
if ($item->type == 'addonsMustHave') if ($item->type == 'addonsMustHave')
@@ -1178,10 +1178,10 @@ abstract class ModuleCore
foreach ($prices as $currency => $price) foreach ($prices as $currency => $price)
if ($id_currency = Currency::getIdByIsoCode($currency)) if ($id_currency = Currency::getIdByIsoCode($currency))
{ {
$item->price = (float)$price; $item->price = (float)$price;
$item->id_currency = (int)$id_currency; $item->id_currency = (int)$id_currency;
if ($id_default_currency == $id_currency) if ($id_default_currency == $id_currency)
break; break;
} }
} }
$module_list[] = $item; $module_list[] = $item;
@@ -26,7 +26,6 @@
class AdminModulesControllerCore extends AdminController class AdminModulesControllerCore extends AdminController
{ {
/* /*
** @var array map with $_GET keywords and their callback ** @var array map with $_GET keywords and their callback
*/ */
+4 -3
View File
@@ -5,11 +5,12 @@ return array(
'support' => 'http://support.prestashop.com/en/', 'support' => 'http://support.prestashop.com/en/',
), ),
'translations' => array( 'translations' => array(
'menu_welcome' => 'Bem-vindo !', 'menu_welcome' => 'Escolha seu idioma',
'menu_license' => 'Acordo de licenciamento',
'menu_system' => 'Compatibilidade do Sistema', 'menu_system' => 'Compatibilidade do Sistema',
'menu_database' => 'Configuração do Sistema', 'menu_database' => 'Configuração do Sistema',
'menu_configure' => 'Configuração da loja', 'menu_configure' => 'Informação da Loja',
'menu_process' => 'Instalação', 'menu_process' => 'Instalação da Loja',
'Choose the installer language:' => 'Escolha a língua para instalação :', 'Choose the installer language:' => 'Escolha a língua para instalação :',
'Field required' => 'Campos requeridos', 'Field required' => 'Campos requeridos',
'Invalid shop name' => 'Nome da loja inválido', 'Invalid shop name' => 'Nome da loja inválido',
+5 -4
View File
@@ -4,11 +4,12 @@ return array(
'phone' => '+33 (0)1.40.18.30.04', 'phone' => '+33 (0)1.40.18.30.04',
), ),
'translations' => array( 'translations' => array(
'menu_welcome' => 'Willkommen!', 'menu_welcome' => 'Sprachauswahl',
'menu_license' => 'Annahme von Lizenzen',
'menu_system' => 'Systemkompatibilität', 'menu_system' => 'Systemkompatibilität',
'menu_database' => 'Datenbank Konfiguration', 'menu_database' => ' Systemkonfiguration',
'menu_configure' => 'Shop-Konfiguration', 'menu_configure' => 'Shopinstallation',
'menu_process' => 'Installation', 'menu_process' => 'Installation von Shop',
'Choose the installer language:' => 'Bitte wählen Sie Ihre Sprache', 'Choose the installer language:' => 'Bitte wählen Sie Ihre Sprache',
'Field required' => 'Pflichtfeld', 'Field required' => 'Pflichtfeld',
'Invalid shop name' => 'Ungültiger Shopname', 'Invalid shop name' => 'Ungültiger Shopname',
+6 -5
View File
@@ -4,11 +4,12 @@ return array(
'phone' => '+1 (888) 947-6543', 'phone' => '+1 (888) 947-6543',
), ),
'translations' => array( 'translations' => array(
'menu_welcome' => '¡Bienvenido!', 'menu_welcome' => 'Elegir el idioma',
'menu_system' => 'Compatibilidad sistema', 'menu_license' => 'Aceptar las licencias',
'menu_database' => 'Configuración de base de datos', 'menu_system' => 'Compatibilidad del sistema',
'menu_configure' => 'Configuración de la tienda', 'menu_database' => 'Configuración del sistema',
'menu_process' => 'Instalación', 'menu_configure' => 'Información de la tienda',
'menu_process' => 'Instalación de la tienda',
'Choose the installer language:' => '', 'Choose the installer language:' => '',
'Field required' => 'Campos requeridos', 'Field required' => 'Campos requeridos',
'Invalid shop name' => 'Nombre de la tienda no válido', 'Invalid shop name' => 'Nombre de la tienda no válido',
+5 -4
View File
@@ -4,11 +4,12 @@ return array(
'phone' => '+33 (0)1.40.18.30.04', 'phone' => '+33 (0)1.40.18.30.04',
), ),
'translations' => array( 'translations' => array(
'menu_welcome' => 'Benvenuto!', 'menu_welcome' => 'Scelta della lingua',
'menu_license' => 'Accettazione licenze',
'menu_system' => 'Compatibilità sistema', 'menu_system' => 'Compatibilità sistema',
'menu_database' => 'Database', 'menu_database' => 'Configurazione sistema',
'menu_configure' => 'Configurazione negozio', 'menu_configure' => 'Informazioni negozio',
'menu_process' => 'Installazione', 'menu_process' => 'Installazione del negozio',
'Choose the installer language:' => 'Scegli la lingua di installazione', 'Choose the installer language:' => 'Scegli la lingua di installazione',
'Field required' => 'Campo richiesto', 'Field required' => 'Campo richiesto',
'Invalid shop name' => 'nome negozio non valido', 'Invalid shop name' => 'nome negozio non valido',
+1 -1
View File
@@ -28,7 +28,7 @@
{/if} {/if}
var lastMove = ''; var lastMove = '';
var saveOK = '{l s='Module position saved' js=1}'; var saveOK = '{l s='Module position saved' js=1}';
var confirmClose = '{l s='Are you sure? If you close this window, its position won\'t be saved' js=1}'; var confirmClose = "{l s="Are you sure? If you close this window, its position won't be saved" js=1}";
var close = '{l s='Close' js=1}'; var close = '{l s='Close' js=1}';
var cancel = '{l s='Cancel' js=1}'; var cancel = '{l s='Cancel' js=1}';
var confirm = '{l s='Confirm' js=1}'; var confirm = '{l s='Confirm' js=1}';