first commit

This commit is contained in:
2024-11-05 12:22:50 +01:00
commit e5682a3912
19641 changed files with 2948548 additions and 0 deletions

View File

@@ -0,0 +1,35 @@
<?php
/**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/OSL-3.0
* 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
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* 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
* needs please refer to https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0)
*/
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');
header('Location: ../../../../../../../');
exit;

View File

@@ -0,0 +1,35 @@
<?php
/**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/OSL-3.0
* 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
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* 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
* needs please refer to https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0)
*/
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');
header('Location: ../../../../../../../../');
exit;

View File

@@ -0,0 +1,111 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/OSL-3.0
* 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
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* 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
* needs please refer to https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0)
*}
{extends file="helpers/view/view.tpl"}
{block name="override_tpl"}
{if $mod_security_warning}
<div class="alert alert-warning">
{l s='Apache mod_security is activated on your server. This could result in some Bad Request errors' d='Admin.International.Notification'}
</div>
{/if}
{if !empty($limit_warning)}
<div class="alert alert-warning">
{if $limit_warning['error_type'] == 'suhosin'}
{l s='Warning! Your hosting provider is using the Suhosin patch for PHP, which limits the maximum number of fields allowed in a form:' d='Admin.International.Notification'}
{l s='%limit% for suhosin.post.max_vars.' sprintf=['%limit%' => '<b>'|cat:$limit_warning['post.max_vars'|cat:'</b>'] d='Admin.International.Notification'}<br/>
{l s='%limit% for suhosin.request.max_vars.' sprintf=['%limit%' => '<b>'|cat:$limit_warning['request.max_vars'|cat:'</b>'] d='Admin.International.Notification'}<br/>
{l s='Please ask your hosting provider to increase the Suhosin limit to' d='Admin.International.Notification'}
{else}
{l s='Warning! Your PHP configuration limits the maximum number of fields allowed in a form:' d='Admin.International.Notification'}<br/>
<b>{$limit_warning['max_input_vars']}</b> {l s='for max_input_vars.' d='Admin.International.Notification'}<br/>
{l s='Please ask your hosting provider to increase this limit to' d='Admin.International.Notification'}
{/if}
{l s='%s at least, or you will have to edit the translation files manually.' sprintf=[$limit_warning['needed_limit']] d='Admin.International.Notification'}
</div>
{else}
<div class="panel">
<p>{l s='Expressions to translate:' d='Admin.International.Feature'} <span class="badge">{l s='%d' sprintf=[$count]}</span></p>
<p>{l s='Total missing expressions:' d='Admin.International.Feature'} <span class="badge">{l s='%d' sprintf=[$missing_translations|array_sum]}</p>
</div>
<script type="text/javascript">
$(document).ready(function(){
$('a.useSpecialSyntax').click(function(){
var syntax = $(this).find('img').attr('alt');
$('#BoxUseSpecialSyntax .syntax span').html(syntax+".");
});
});
</script>
<div id="BoxUseSpecialSyntax">
<div class="alert alert-warning">
<p>
{l s='Some of these expressions use this special syntax: %s.' sprintf=['%d'] d='Admin.International.Help'}
<br />
{l s='You MUST use this syntax in your translations. Here are a few examples:' d='Admin.International.Help'}
</p>
<ul>
<li>"{l s='There are [1]%replace%[/1] products' html=true sprintf=['%replace%' => '%d', '[1]' => '<strong>', '[/1]' => '</strong>'] d='Admin.International.Help'}": {l s='"%s" will be replaced by a number.' sprintf=['%d'] d='Admin.International.Help'}</li>
<li>"{l s='List of pages in [1]%replace%[/1]' html=true sprintf=['%replace%' => '%s', '[1]' => '<strong>', '[/1]' => '</strong>'] d='Admin.International.Help'}": {l s='"%s" will be replaced by a string.' sprintf=['%s'] d='Admin.International.Help'}</li>
<li>"{l s='Feature: [1]%1%[/1] ([1]%2%[/1] values)' html=true sprintf=['%1%' => '%1$s', '%2%' => '%2$d', '[1]' => '<strong>', '[/1]' => '</strong>'] d='Admin.International.Help'}": {l s='The numbers enable you to reorder the variables when necessary.' d='Admin.International.Help'}</li>
</ul>
</div>
</div>
<form method="post" id="{$table}_form" action="{$url_submit|escape:'html':'UTF-8'}" class="form-horizontal">
<div class="panel">
<input type="hidden" name="lang" value="{$lang}" />
<input type="hidden" name="type" value="{$type}" />
<input type="hidden" name="theme" value="{$theme}" />
<table class="table">
{foreach $errorsArray as $key => $value}
<tr {if empty($value.trad)}style="background-color:#FBB"{else}{cycle values='class="alt_row",'}{/if}>
<td width="40%">{$key|stripslashes}</td>
<td width="40%">
<input type="text" name="{$key|md5}" value="{$value.trad|regex_replace:'#"#':'&quot;'|stripslashes}"' style="width: 450px{if empty($value.trad)};background:#FBB{/if}">
</td>
<td width="18%">
{if isset($value.use_sprintf) && $value.use_sprintf}
<a class="useSpecialSyntax" title="{l s='This expression uses a special syntax:' d='Admin.International.Help'} {$value.use_sprintf}" style="cursor:pointer">
<img src="{$smarty.const._PS_IMG_}admin/error.png" alt="{$value.use_sprintf}" />
</a>
{/if}
</td>
</tr>
{/foreach}
</table>
<div class="panel-footer">
<a name="submitTranslations{$type|ucfirst}" href="{$cancel_url|escape:'html':'UTF-8'}" class="btn btn-default"><i class="process-icon-cancel"></i> {l s='Cancel' d='Admin.Actions'}</a>
<button type="submit" id="{$table}_form_submit_btn" name="submitTranslations{$type|ucfirst}" class="btn btn-default pull-right"><i class="process-icon-save"></i> {l s='Save' d='Admin.Actions'}</button>
<button type="submit" name="submitTranslations{$type|ucfirst}AndStay" class="btn btn-default pull-right"><i class="process-icon-save"></i> {l s='Save and stay' d='Admin.Actions'}</button>
</div>
</div>
</form>
{/if}
{/block}

View File

@@ -0,0 +1,154 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/OSL-3.0
* 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
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* 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
* needs please refer to https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0)
*}
{extends file="helpers/view/view.tpl"}
{block name="override_tpl"}
{if $mod_security_warning}
<div class="alert alert-warning">
{l s='Apache mod_security is activated on your server. This could result in some Bad Request errors' d='Admin.International.Notification'}
</div>
{/if}
{if !empty($limit_warning)}
<div class="alert alert-warning">
{if $limit_warning['error_type'] == 'suhosin'}
{l s='Warning! Your hosting provider is using the Suhosin patch for PHP, which limits the maximum number of fields allowed in a form:' d='Admin.International.Notification'}
{l s='%limit% for suhosin.post.max_vars.' sprintf=['%limit%' => '<b>'|cat:$limit_warning['post.max_vars'|cat:'</b>'] d='Admin.International.Notification'}<br/>
{l s='%limit% for suhosin.request.max_vars.' sprintf=['%limit%' => '<b>'|cat:$limit_warning['request.max_vars'|cat:'</b>'] d='Admin.International.Notification'}<br/>
{l s='Please ask your hosting provider to increase the Suhosin limit to' d='Admin.International.Notification'}
{else}
{l s='Warning! Your PHP configuration limits the maximum number of fields allowed in a form:' d='Admin.International.Notification'}
<b>{$limit_warning['max_input_vars']}</b> {l s='for max_input_vars.' d='Admin.International.Notification'}<br/>
{l s='Please ask your hosting provider to increase this limit to' d='Admin.International.Notification'}
{/if}
{l s='%s at least, or you will have to edit the translation files.' sprintf=[$limit_warning['needed_limit']] d='Admin.International.Notification'}
</div>
{else}
<div class="alert alert-info">
<p>
{l s='Click on the title of a section to open its fieldsets.' d='Admin.International.Help'}
</p>
</div>
<div class="panel">
<p>{l s='Expressions to translate:' d='Admin.International.Feature'} <span class="badge">{l s='%d' sprintf=[$count]}</span></p>
<p>{l s='Total missing expressions:' d='Admin.International.Feature'} <span class="badge">{l s='%d' sprintf=[$missing_translations|array_sum]}</p>
</div>
<form method="post" id="{$table}_form" action="{$url_submit|escape:'html':'UTF-8'}" class="form-horizontal">
<div class="panel">
<input type="hidden" name="lang" value="{$lang}" />
<input type="hidden" name="type" value="{$type}" />
<input type="hidden" name="theme" value="{$theme}" />
<script type="text/javascript">
$(document).ready(function(){
$('a.useSpecialSyntax').click(function(){
var syntax = $(this).find('img').attr('alt');
$('#BoxUseSpecialSyntax .syntax span').html(syntax+".");
});
$("a.sidetoggle").click(function(){
$('#'+$(this).attr('data-slidetoggle')).slideToggle();
return false;
});
});
</script>
<div id="BoxUseSpecialSyntax">
<div class="alert alert-warning">
<p>
{l s='Some of these expressions use this special syntax: %s.' sprintf=['%d'] d='Admin.International.Help'}
<br />
{l s='You MUST use this syntax in your translations. Here are several examples:'}
</p>
<ul>
<li>"{l s='There are [1]%replace%[/1] products' html=true sprintf=['%replace%' => '%d', '[1]' => '<strong>', '[/1]' => '</strong>'] d='Admin.International.Help'}": {l s='"%s" will be replaced by a number.' sprintf=['%d'] d='Admin.International.Help'}</li>
<li>"{l s='List of pages in [1]%replace%[/1]' html=true sprintf=['%replace%' => '%s', '[1]' => '<strong>', '[/1]' => '</strong>'] d='Admin.International.Help'}": {l s='"%s" will be replaced by a string.' sprintf=['%s'] d='Admin.International.Help'}</li>
<li>"{l s='Feature: [1]%1%[/1] ([1]%2%[/1] values)' html=true sprintf=['%1%' => '%1$s', '%2%' => '%2$d', '[1]' => '<strong>', '[/1]' => '</strong>'] d='Admin.International.Help'}": {l s='The numbers enable you to reorder the variables when necessary.' d='Admin.International.Help'}</li>
</ul>
</div>
</div>
<div class="panel-footer">
<a name="submitTranslations{$type|ucfirst}" href="{$cancel_url|escape:'html':'UTF-8'}" class="btn btn-default"><i class="process-icon-cancel"></i> {l s='Cancel' d='Admin.Actions'}</a>
{$toggle_button}
<button type="submit" id="{$table}_form_submit_btn" name="submitTranslations{$type|ucfirst}" class="btn btn-default pull-right"><i class="process-icon-save"></i> {l s='Save' d='Admin.Actions'}</button>
<button type="submit" id="{$table}_form_submit_btn" name="submitTranslations{$type|ucfirst}AndStay" class="btn btn-default pull-right"><i class="process-icon-save"></i> {l s='Save and stay' d='Admin.Actions'}</button>
</div>
</div>
{foreach $tabsArray as $k => $newLang}
{if !empty($newLang)}
<div class="panel">
<h3>
<a href="#" class="sidetoggle" data-slidetoggle="{$k}-tpl">
<i class="icon-caret-down"></i>
{$k}
</a>
- {$newLang|count} {l s='expressions' d='Admin.International.Feature'}
{if isset($missing_translations[$k])} <span class="label label-danger">{$missing_translations[$k]} {l s='missing' d='Admin.International.Feature'}</span>{/if}
</h3>
<div name="{$type}_div" id="{$k}-tpl" style="display:{if isset($missing_translations[$k])}block{else}none{/if}">
<table class="table">
{counter start=0 assign=irow}
{foreach $newLang as $key => $value}{counter}
<tr>
<td width="40%">{$key|stripslashes}</td>
<td width="2%">=</td>
<td width="40%"> {*todo : md5 is already calculated in AdminTranslationsController*}
{if $key|strlen < $textarea_sized}
<input type="text" style="width: 450px{if empty($value.trad)};background:#FBB{/if}"
name="{if in_array($type, array('front', 'fields'))}{$k}_{$key|md5}{else}{$k}{$key|md5}{/if}"
value="{$value.trad|regex_replace:'/"/':'&quot;'|stripslashes}"' />
{else}
<textarea rows="{($key|strlen / $textarea_sized)|intval}" style="width: 450px{if empty($value.trad)};background:#FBB{/if}"
name="{if in_array($type, array('front', 'fields'))}{$k}_{$key|md5}{else}{$k}{$key|md5}{/if}"
>{$value.trad|regex_replace:'/"/':'&quot;'|stripslashes}</textarea>
{/if}
</td>
<td width="18%">
{if isset($value.use_sprintf) && $value.use_sprintf}
<a class="useSpecialSyntax" title="{l s='This expression uses a special syntax:' d='Admin.International.Notification'} {$value.use_sprintf}">
<img src="{$smarty.const._PS_IMG_}admin/error.png" alt="{$value.use_sprintf}" />
</a>
{/if}
</td>
</tr>
{/foreach}
</table>
<div class="panel-footer">
<a name="submitTranslations{$type|ucfirst}" href="{$cancel_url|escape:'html':'UTF-8'}" class="btn btn-default"><i class="process-icon-cancel"></i> {l s='Cancel' d='Admin.Actions'}</a>
<button type="submit" id="{$table}_form_submit_btn" name="submitTranslations{$type|ucfirst}" class="btn btn-default pull-right"><i class="process-icon-save"></i> {l s='Save' d='Admin.Actions'}</button>
<button type="submit" id="{$table}_form_submit_btn" name="submitTranslations{$type|ucfirst}AndStay" class="btn btn-default pull-right"><i class="process-icon-save"></i> {l s='Save and stay' d='Admin.Actions'}</button>
</div>
</div>
</div>
{/if}
{/foreach}
</form>
{/if}
{/block}

View File

@@ -0,0 +1,173 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/OSL-3.0
* 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
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* 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
* needs please refer to https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0)
*}
{extends file="helpers/view/view.tpl"}
{block name="override_tpl"}
{$tinyMCE}
{if $mod_security_warning}
<div class="alert alert-warning">
{l s='Apache mod_security is activated on your server. This could result in some Bad Request errors' d='Admin.International.Notification'}
</div>
{/if}
{if !empty($limit_warning)}
<div class="alert alert-warning">
{if $limit_warning['error_type'] == 'suhosin'}
{l s='Warning! Your hosting provider is using the Suhosin patch for PHP, which limits the maximum number of fields allowed in a form:' d='Admin.International.Notification'}
{l s='%limit% for suhosin.post.max_vars.' sprintf=['%limit%' => '<b>'|cat:$limit_warning['post.max_vars']|cat:'</b>'] d='Admin.International.Notification'}<br/>
{l s='%limit% for suhosin.request.max_vars.' sprintf=['%limit%' => '<b>'|cat:$limit_warning['request.max_vars']|cat:'</b>'] d='Admin.International.Notification'}<br/>
{l s='Please ask your hosting provider to increase the Suhosin limit to' d='Admin.International.Notification'}
{else}
{l s='Warning! Your PHP configuration limits the maximum number of fields allowed in a form:' d='Admin.International.Notification'}<br/>
<b>{$limit_warning['max_input_vars']}</b> {l s='for max_input_vars.' d='Admin.International.Notification'}<br/>
{l s='Please ask your hosting provider to increase this limit to' d='Admin.International.Notification'}
{/if}
{l s='%s at least, or you will have to edit the translation files.' sprintf=[$limit_warning['needed_limit']] d='Admin.International.Notification'}
</div>
{else}
<form method="post" id="{$table}_form" action="{$url_submit|escape:'html':'UTF-8'}" class="form-horizontal">
<div class="panel">
<input type="hidden" name="lang" value="{$lang}" />
<input type="hidden" name="type" value="{$type}" />
<input type="hidden" name="selected-theme" value="{$theme}" />
<script type="text/javascript">
$(document).ready(function(){
$('a.useSpecialSyntax').click(function(){
var syntax = $(this).find('img').attr('alt');
$('#BoxUseSpecialSyntax .syntax span').html(syntax+".");
});
});
</script>
<div id="BoxUseSpecialSyntax">
<div class="alert alert-warning">
<p>
{l s='Some of these expressions use this special syntax: %s.' sprintf=['%d'] d='Admin.International.Help'}
<br />
{l s='You MUST use this syntax in your translations. Here are several examples:' d='Admin.International.Help'}
</p>
<ul>
<li>"{l s='There are [1]%replace%[/1] products' html=true sprintf=['%replace%' => '%d', '[1]' => '<strong>', '[/1]' => '</strong>'] d='Admin.International.Help'}": {l s='"%s" will be replaced by a number.' sprintf=['%d'] d='Admin.International.Help'}</li>
<li>"{l s='List of pages in [1]%replace%[/1]' html=true sprintf=['%replace%' => '%s', '[1]' => '<strong>', '[/1]' => '</strong>'] d='Admin.International.Help'}": {l s='"%s" will be replaced by a string.' sprintf=['%s'] d='Admin.International.Help'}</li>
<li>"{l s='Feature: [1]%1%[/1] ([1]%2%[/1] values)' html=true sprintf=['%1%' => '%1$s', '%2%' => '%2$d', '[1]' => '<strong>', '[/1]' => '</strong>'] d='Admin.International.Help'}": {l s='The numbers enable you to reorder the variables when necessary.' d='Admin.International.Help'}</li>
</ul>
</div>
</div>
<div id="translation_mails-control-actions" class="panel-footer">
<a name="submitTranslations{$type|ucfirst}" href="{$cancel_url}" class="btn btn-default">
<i class="process-icon-cancel"></i> {l s='Cancel' d='Admin.Actions'}
</a>
{*$toggle_button*}
<button type="submit" id="{$table}_form_submit_btn" name="submitTranslations{$type|ucfirst}" class="btn btn-default pull-right">
<i class="process-icon-save"></i>
{l s='Save' d='Admin.Actions'}
</button>
<button type="submit" id="{$table}_form_submit_btn" name="submitTranslations{$type|ucfirst}AndStay" class="btn btn-default pull-right">
<i class="process-icon-save"></i>
{l s='Save and stay' d='Admin.Actions'}
</button>
</div>
</div>
<div class="panel">
<h3>
<i class="icon-envelope"></i>
{l s='Core emails' d='Admin.International.Feature'}
<span class="badge">
<i class="icon-folder"></i>
mails/{$lang|strtolower}/
</span>
</h3>
{$mail_content}
{literal}
<script type="text/javascript">
//<![CDATA[
$(document).ready(function () {
$('.mails_field').on('shown.bs.collapse', function () {
// get active email
var active_email = $(this).find('.email-collapse.in');
// get iframe container for active email
var frame = active_email.find('.email-html-frame');
// get source url for active email
var src = frame.data('email-src');
// get rte container for active email
var rte_mail_selector = active_email.find('textarea.rte-mail').data('rte');
// create special config
var rte_mail_config = {};
rte_mail_config['editor_selector'] = 'rte-mail-' + rte_mail_selector;
rte_mail_config['height'] = '500px';
rte_mail_config['plugins'] = 'colorpicker link image paste pagebreak table contextmenu filemanager table code media autoresize textcolor anchor fullpage';
// move controls to active panel
$('#translation_mails-control-actions').appendTo($(this).find('.panel-collapse.in'));
// when user first open email
if (frame.find('iframe.email-frame').length == 0) {
// load iframe
frame.append('<iframe class="email-frame" />');
$.ajax({
url:'index.php',
type: 'POST',
async: false,
dataType: 'html',
data: {
ajax: 1,
controller: 'AdminTranslations',
action : 'emailHTML',
email : src,
token: window.token
},
success: function(result)
{
var doc = frame.find('iframe')[0].contentWindow.document;
doc.open();
doc.write(result);
doc.close();
}
});
// init tinyMCE with special config
tinySetup(rte_mail_config);
}
});
})
//]]>
</script>
{/literal}
</div>
<div class="panel">
<h3>
<i class="icon-puzzle-piece"></i>
{l s='Module emails' d='Admin.International.Feature'}
<span class="badge">
<i class="icon-folder"></i>
modules/name_of_module/mails/{$lang|strtolower}/
</span>
</h3>
{foreach $module_mails as $module_name => $mails}
{$mails['display']}
{/foreach}
</div>
</form>
{/if}
{/block}

View File

@@ -0,0 +1,194 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/OSL-3.0
* 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
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* 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
* needs please refer to https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0)
*}
{extends file="helpers/view/view.tpl"}
{block name="override_tpl"}
{if $mod_security_warning}
<div class="alert alert-warning">
{l s='Apache mod_security is activated on your server. This could result in some Bad Request errors' d='Admin.International.Notification'}
</div>
{/if}
{if !empty($limit_warning)}
<div class="alert alert-warning">
{if $limit_warning['error_type'] == 'suhosin'}
{l s='Warning! Your hosting provider is using the Suhosin patch for PHP, which limits the maximum number of fields allowed in a form:' d='Admin.International.Notification'}
{l s='%limit% for suhosin.post.max_vars.' sprintf=['%limit%' => '<b>'|cat:$limit_warning['post.max_vars']|cat:'</b>'] d='Admin.International.Notification'}<br/>
{l s='%limit% for suhosin.request.max_vars.' sprintf=['%limit%' => '<b>'|cat:$limit_warning['request.max_vars']|cat:'</b>'] d='Admin.International.Notification'}<br/>
{l s='Please ask your hosting provider to increase the Suhosin limit to' d='Admin.International.Notification'}
{else}
{l s='Warning! Your PHP configuration limits the maximum number of fields allowed in a form:' d='Admin.International.Notification'}<br/>
<b>{$limit_warning['max_input_vars']}</b> {l s='for max_input_vars.' d='Admin.International.Notification'}<br/>
{l s='Please ask your hosting provider to increase this limit to' d='Admin.International.Notification'}
{/if}
{l s='%s at least, or you will have to edit the translation files.' sprintf=[$limit_warning['needed_limit']] d='Admin.International.Notification'}
</div>
{else}
<div class="alert alert-info">
<p>
{l s='Click on the title of a section to open its fieldsets.' d='Admin.International.Help'}
</p>
</div>
<div class="panel">
<p>{l s='Expressions to translate:' d='Admin.International.Feature'} <span class="badge">{l s='%d' sprintf=[$count]}</span></p>
<p>{l s='Total missing expressions:' d='Admin.International.Feature'} <span class="badge">{l s='%d' sprintf=[$missing_translations]}</p>
</div>
<form method="post" id="{$table}_form" action="{$url_submit|escape:'html':'UTF-8'}" class="form-horizontal">
<div class="panel">
<input type="hidden" name="lang" value="{$lang}" />
<input type="hidden" name="type" value="{$type}" />
<input type="hidden" name="theme" value="{$theme}" />
<input type="hidden" name="module" value="{$module_name}" />
<div id="BoxUseSpecialSyntax">
<div class="alert alert-warning">
<p>
{l s='Some of these expressions use this special syntax: %s.' sprintf=['%d'] d='Admin.International.Help'}
<br />
{l s='You MUST use this syntax in your translations. Here are several examples:' d='Admin.International.Help'}
</p>
<ul>
<li>"{l s='There are [1]%replace%[/1] products' html=true sprintf=['%replace%' => '%d', '[1]' => '<strong>', '[/1]' => '</strong>'] d='Admin.International.Help'}": {l s='"%s" will be replaced by a number.' sprintf=['%d'] d='Admin.International.Help'}</li>
<li>"{l s='List of pages in [1]%replace%[/1]' html=true sprintf=['%replace%' => '%s', '[1]' => '<strong>', '[/1]' => '</strong>'] d='Admin.International.Help'}": {l s='"%s" will be replaced by a string.' sprintf=['%s'] d='Admin.International.Help'}</li>
<li>"{l s='Feature: [1]%1%[/1] ([1]%2%[/1] values)' html=true sprintf=['%1%' => '%1$s', '%2%' => '%2$d', '[1]' => '<strong>', '[/1]' => '</strong>'] d='Admin.International.Help'}": {l s='The numbers enable you to reorder the variables when necessary.' d='Admin.International.Help'}</li>
</ul>
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){
$('a.useSpecialSyntax').click(function(){
var syntax = $(this).find('img').attr('alt');
$('#BoxUseSpecialSyntax .syntax span').html(syntax+".");
});
});
</script>
<div class="panel-footer">
<a name="submitTranslations{$type|ucfirst}" href="{$cancel_url|escape:'html':'UTF-8'}" class="btn btn-default">
<i class="process-icon-cancel"></i>
{l s='Cancel' d='Admin.Actions'}
</a>
{$toggle_button}
<button type="submit" id="{$table}_form_submit_btn" name="submitTranslations{$type|ucfirst}" class="btn btn-default pull-right"><i class="process-icon-save"></i> {l s='Save' d='Admin.Actions'}</button>
<button type="submit" id="{$table}_form_submit_btn" name="submitTranslations{$type|ucfirst}AndStay" class="btn btn-default pull-right"><i class="process-icon-save"></i> {l s='Save and stay' d='Admin.Actions'}</button>
</div>
</div>
{foreach $modules_translations as $theme_name => $selected_theme}
{if $theme_name}<h2>&gt;{l s='Theme:' d='Admin.International.Feature'} <a name="{$theme_name}">{$theme_name}</h2>{/if}
{foreach $selected_theme as $module_name => $module}
<h2>{l s='Module:' d='Admin.International.Feature'} <a name="{$module_name}">{$module_name}</a></h2>
{foreach $module as $template_name => $newLang}
{if !empty($newLang)}
{assign var=occurrences value=0}
{foreach $newLang as $key => $value}
{if empty($value['trad'])}{assign var=occurrences value=$occurrences+1}{/if}
{/foreach}
{if $occurrences > 0}
{$missing_translations_module = $occurrences}
{else}
{$missing_translations_module = 0}
{/if}
<div class="panel">
<h3 onclick="$('#{$theme_name}_{$module_name}_{$template_name|replace:'.':'_'}').slideToggle();">{if $theme_name}{$theme_name} - {/if}{$template_name}
<span class="badge">{$newLang|count}</span> {l s='expressions' d='Admin.International.Feature'} <span class="label label-danger">{$missing_translations_module}</span>
</h3>
<div name="{$type}_div" id="{$theme_name}_{$module_name}_{$template_name|replace:'.':'_'}" style="display:{if $missing_translations_module}block{else}none{/if}">
<table class="table">
{foreach $newLang as $key => $value}
<tr>
<td width="40%">{$key|stripslashes}</td>
<td>=</td>
<td>
{* Prepare name string for md5() *}
{capture assign="name"}{strtolower($module_name)}{if $theme_name}_{strtolower($theme_name)}{/if}_{strtolower($template_name)}_{md5($key)}{/capture}
{if $key|strlen < $textarea_sized}
<input type="text"
style="width: 450px{if empty($value.trad)};background:#FBB{/if}"
name="{$name|md5}"
value="{$value.trad|regex_replace:'#"#':'&quot;'|stripslashes}" />
{else}
<textarea rows="{($key|strlen / $textarea_sized)|intval}"
style="width: 450px{if empty($value.trad)};background:#FBB{/if}"
name="{$name|md5}">{$value.trad|regex_replace:'#"#':'&quot;'|stripslashes}</textarea>
{/if}
</td>
<td>
{if isset($value.use_sprintf) && $value.use_sprintf}
<a class="useSpecialSyntax" title="{l s='This expression uses a special syntax:' d='Admin.International.Notification'} {$value.use_sprintf}">
<img src="{$smarty.const._PS_IMG_}admin/error.png" alt="{$value.use_sprintf}" />
</a>
{/if}
</td>
</tr>
{/foreach}
</table>
</div>
<div class="panel-footer">
<a name="submitTranslations{$type|ucfirst}" href="{$cancel_url|escape:'html':'UTF-8'}" class="btn btn-default"><i class="process-icon-cancel"></i> {l s='Cancel' d='Admin.Actions'}</a>
<button type="submit" id="{$table}_form_submit_btn" name="submitTranslations{$type|ucfirst}" class="btn btn-default pull-right"><i class="process-icon-save"></i> {l s='Save' d='Admin.Actions'}</button>
<button type="submit" id="{$table}_form_submit_btn" name="submitTranslations{$type|ucfirst}AndStay" class="btn btn-default pull-right"><i class="process-icon-save"></i> {l s='Save and stay' d='Admin.Actions'}</button>
</div>
</div>
{/if}
{/foreach}
{/foreach}
{/foreach}
</form>
{/if}
<form action="{$url_submit_installed_module|escape:'html':'UTF-8'}" method="post" enctype="multipart/form-data" class="form-horizontal">
<div class="panel">
<input type="hidden" name="langue" value="{$lang}" />
<input type="hidden" name="type" value="{$type}" />
<input type="hidden" name="theme" value="{$theme}" />
<input type="hidden" name="controller" value="AdminTranslations" />
<h3>
<i class="icon-file-text"></i>
{l s='Modify translations' d='Admin.International.Feature'}
</h3>
<p class="alert alert-info">
{l s='Here you can modify translations for all installed module.' d='Admin.International.Help'}<br />
</p>
<div class="form-group">
<label class="control-label col-lg-3" for="translations-languages">{l s='Select your module' d='Admin.International.Help'}</label>
<div class="col-lg-4">
<select name="module" id="installed_module">
<option value="">{l s='Module' d='Admin.Global'}</option>
{foreach from=$installed_modules key=key item=module}
<option value="{$module}">{$module}</option>
{/foreach}
</select>
</div>
<input type="hidden" name="token" value="{$token|escape:'html':'UTF-8'}" />
</div>
<div class="panel-footer">
<button type="submit" class="btn btn-default pull-right" id="submitSelect{$type|ucfirst}" name="submitSelect{$type|ucfirst}">
<i class="process-icon-edit"></i> {l s='Modify translations' d='Admin.International.Feature'}
</button>
</div>
</div>
</form>
{/block}