141 lines
4.2 KiB
Smarty
141 lines
4.2 KiB
Smarty
{capture name=tabs}
|
||
<li><a href="index.php?module=ThemeAdmin">Тема</a></li>
|
||
<li class="active"><a href="index.php?module=TemplatesAdmin">Шаблоны</a></li>
|
||
<li><a href="index.php?module=StylesAdmin">Стили</a></li>
|
||
<li><a href="index.php?module=ImagesAdmin">Изображения</a></li>
|
||
{/capture}
|
||
|
||
{if $template_file}
|
||
{$meta_title = "Шаблон $template_file" scope=parent}
|
||
{/if}
|
||
|
||
{* Подключаем редактор кода *}
|
||
<link rel="stylesheet" href="design/js/codemirror/lib/codemirror.css">
|
||
<script src="design/js/codemirror/lib/codemirror.js"></script>
|
||
<script src="design/js/codemirror/lib/overlay.js"></script>
|
||
|
||
<link rel="stylesheet" href="design/js/codemirror/mode/xml/xml.css">
|
||
<script src="design/js/codemirror/mode/xml/xml.js"></script>
|
||
|
||
{literal}
|
||
<style type="text/css">
|
||
.CodeMirror {font-family:'Courier New';padding-bottom:20px; margin-bottom:10px; border:1px solid #c0c0c0; background-color: #ffffff; height: auto; min-height: 300px; width:100%;}
|
||
.activeline {background: #f0fcff !important;}
|
||
.smarty {color: #ff008a;}
|
||
</style>
|
||
|
||
<script>
|
||
$(function() {
|
||
// Сохранение кода аяксом
|
||
function save()
|
||
{
|
||
$('.CodeMirror').css('background-color','#e0ffe0');
|
||
content = editor.getValue();
|
||
|
||
$.ajax({
|
||
type: 'POST',
|
||
url: 'ajax/save_template.php',
|
||
data: {'content': content, 'theme':'{/literal}{$theme}{literal}', 'template': '{/literal}{$template_file}{literal}', 'session_id': '{/literal}{$smarty.session.id}{literal}'},
|
||
success: function(data){
|
||
|
||
$('.CodeMirror').animate({'background-color': '#ffffff'});
|
||
},
|
||
dataType: 'json'
|
||
});
|
||
}
|
||
|
||
// Нажали кнопку Сохранить
|
||
$('input[name="save"]').click(function() {
|
||
save();
|
||
});
|
||
|
||
// Обработка ctrl+s
|
||
var isCtrl = false;
|
||
var isCmd = false;
|
||
$(document).keyup(function (e) {
|
||
if(e.which == 17) isCtrl=false;
|
||
if(e.which == 91) isCmd=false;
|
||
}).keydown(function (e) {
|
||
if(e.which == 17) isCtrl=true;
|
||
if(e.which == 91) isCmd=true;
|
||
if(e.which == 83 && (isCtrl || isCmd)) {
|
||
save();
|
||
e.preventDefault();
|
||
}
|
||
});
|
||
});
|
||
</script>
|
||
{/literal}
|
||
|
||
<h1>Тема {$theme}, шаблон {$template_file}</h1>
|
||
|
||
{if $message_error}
|
||
<!-- Системное сообщение -->
|
||
<div class="message message_error">
|
||
<span>
|
||
{if $message_error == 'permissions'}Установите права на запись для файла {$template_file}
|
||
{elseif $message_error == 'theme_locked'}Текущая тема защищена от изменений. Создайте копию темы.
|
||
{else}{$message_error}{/if}
|
||
</span>
|
||
</div>
|
||
<!-- Системное сообщение (The End)-->
|
||
{/if}
|
||
|
||
<!-- Список файлов для выбора -->
|
||
<div class="block layer">
|
||
<div class="templates_names">
|
||
{foreach item=t from=$templates}
|
||
<a {if $template_file == $t}class="selected"{/if} href='index.php?module=TemplatesAdmin&file={$t}'>{$t}</a>
|
||
{/foreach}
|
||
</div>
|
||
</div>
|
||
|
||
{if $template_file}
|
||
<div class="block">
|
||
<form>
|
||
<textarea id="template_content" name="template_content" style="width:700px;height:500px;">{$template_content|escape}</textarea>
|
||
</form>
|
||
|
||
<input class="button_green button_save" type="button" name="save" value="Сохранить" />
|
||
</div>
|
||
|
||
{* Подключение редактора *}
|
||
{literal}
|
||
<script>
|
||
CodeMirror.defineMode("smarty", function(config, parserConfig) {
|
||
var smartyOverlay = {
|
||
token: function(stream, state){
|
||
|
||
if (stream.match("{*"))
|
||
return null;
|
||
if (stream.match("{") && (stream.next()!=' ') && stream.next()!= null) {
|
||
while ((ch = stream.next()) != null)
|
||
if (ch == "}") break;
|
||
return "smarty";
|
||
}
|
||
while (stream.next() != null && !stream.match('{', false)) {}
|
||
return null;
|
||
}
|
||
};
|
||
return CodeMirror.overlayParser(CodeMirror.getMode(config, parserConfig.backdrop || "text/html"), smartyOverlay);
|
||
});
|
||
|
||
var editor = CodeMirror.fromTextArea(document.getElementById("template_content"), {
|
||
mode: {name: "smarty", htmlMode: true},
|
||
|
||
lineNumbers: true,
|
||
matchBrackets: false,
|
||
enterMode: 'keep',
|
||
indentWithTabs: false,
|
||
indentUnit: 1,
|
||
tabMode: 'classic',
|
||
onCursorActivity: function() {
|
||
editor.setLineClass(hlLine, null);
|
||
hlLine = editor.setLineClass(editor.getCursor().line, "activeline");
|
||
}
|
||
});
|
||
var hlLine = editor.setLineClass(0, "activeline");
|
||
</script>
|
||
{/literal}
|
||
|
||
{/if} |