Файл: root/modules/templates.admin.php
Строк: 447
<?php
/**
* @name JMY CMS
* @link http://jmy.su/
* @copyright Copyright (C) 2012-2015 JMY LTD
* @license LICENSE.txt (see attached file)
* @version VERSION.txt (see attached file)
* @author Komarov Ivan
* @revision 06.03.2015
*/
if (!defined('ADMIN_ACCESS'))
{
header('Location: /');
exit;
}
switch(isset($url[2]) ? $url[2] : null)
{
default:
$adminTpl->admin_head(_TPL_TPLS);
if(isset($url[2]))
{
if($url[2] == 'del_ok')
{
$adminTpl->info(_TPL_INFO_0);
}
elseif($url[2] == 'del_error')
{
$adminTpl->info(_TPL_INFO_1);
}
elseif($url[2] == 'choose_ok')
{
$adminTpl->info(_TPL_INFO_2);
}
elseif($url[2] == 'upload_ok')
{
$adminTpl->info(_TPL_INFO_3);
}
elseif($url[2] == 'upload_error')
{
$adminTpl->info(_TPL_INFO_4, 'error');
}
}
$adminTpl->open();
echo '<div class="row">
<div class="col-lg-12">
<section class="panel">
<div class="panel-heading no-border">
<b>'._TPL_UPLOAD_TPL.'</b>
</div>
<div class="panel-body">
<div class="switcher-content">
'._TPL_UPLOAD_INF.'<br><br>
<form align="center" method="post" enctype="multipart/form-data" action="' . ADMIN . '/templates/upload">
<input type="file" name="tpl" class="textinput" style="width:40%;" value="" />
<br>
<div align="left">
<input name="submit" type="submit" class="btn btn-primary btn-parsley" id="sub" value="'._UPLOAD.'" />
</div>
</form>
</div>
</div>
</section>
</div>
</div>';
$adminTpl->close();
$ni=0;
foreach(glob(ROOT.'usr/tpl/*') as $dir)
{
$_name = basename($dir);
if(is_dir($dir) && $_name != 'admin' && $_name != 'default' && $_name != 'smartphone')
{
$ni++;
if (($ni % 5 == 0)||($ni==1))
{
echo '<div class="row">';
}
if (($_name<>'JMY_yellow')and($_name<>'JMY_white')and($_name<>'JMY_blue')){
$stand=_TPL_OUT;
}
else
{
$stand=_TPL_IN;
}
$preview = file_exists('usr/tpl/'.$_name.'/preview.png') ? 'usr/tpl/'.$_name.'/preview.png' : 'usr/tpl/no_preview.png';
echo '<div class="col-xs-12 col-sm-6 col-md-3">
<div class="panel panel-'. ($config['tpl'] == $_name ? 'default' : 'success') .' pricing-table-2">
<div class="panel-heading">' . $_name . '</div>
<div class="panel-body">
<div class="plan-price text-center">
<img src="' . $preview . '" /><br><br>
<p>'.$stand.'</p>
<small>JMY CMS</small>
</div>
<ul class="plan-features text-center">
<li><a href="{ADMIN}/templates/download/' . $_name . '">'._TPL_LOAD.'</a></li>
<li><a href="{ADMIN}/templates/delete/' . $_name . '">'._TPL_DEL.'</a></li>
</ul>
</div>
<div class="panel-footer text-center">
<button '. ($config['tpl'] == $_name ? 'class="btn btn-default btn-block" >'._CHOOSED : 'class="btn btn-success btn-block" onclick="location.href='{ADMIN}/templates/choose/' . $_name . '';">'._CHOOSE) .'</button>
</div>
</div>
</div>';
if (($ni % 4 == 0))
{
echo '</div>';
}
}
}
if (($ni % 4 != 0)&&($ni!=0))
{
echo '</div>';
}
$adminTpl->admin_foot();
break;
case 'upload':
if(isset($_FILES['tpl']))
{
require_once(ROOT.'boot/sub_classes/pclzip.lib.php');
$archive = new PclZip($_FILES['tpl']['tmp_name']);
if(($v_result_list = $archive->extract(PCLZIP_OPT_PATH, ROOT.'usr/tpl')) != 0)
{
$dir_root = explode('/', $v_result_list[0]['stored_filename']);
if($dir_root[0] != 'usr' && $dir_root[0] != 'tpl' && file_exists(ROOT.'usr/tpl/' . $dir_root[0] . '/index.tpl'))
{
location(ADMIN.'/templates/upload_ok');
}
else
{
full_rmdir(ROOT.'usr/tpl/' . $dir_root[0]);
location(ADMIN.'/templates/upload_error');
}
}
else
{
location(ADMIN.'/templates/upload_error');
}
}
else
{
location(ADMIN.'/templates/upload_error');
}
break;
case 'save':
foreach($_POST as $path => $html)
{
if(eregStrt('usr/tpl/'.$config['tpl'], $path))
{
if(is_writable(str_replace('_tpl', '.tpl', $path)))
{
$fp = @fopen(str_replace('_tpl', '.tpl', $path), 'w');
fwrite($fp, stripslashes($html));
fclose($fp);
$save_is = true;
}
}
}
case 'edit_tpl':
$adminTpl->admin_head(_TPL_EDET);
$adminTpl->open();
echo '<div class="row">
<div class="col-lg-12">
<section>
<nav class="navbar navbar-inverse" role="navigation">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
<span class="sr-only">'._TPL_EDET_CH.'</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand">TPL</a>
</div>
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav">';
foreach(glob(ROOT.'usr/tpl/'.$config['tpl'].'/*/*.tpl') as $inFile)
{
$name = explode('usr/tpl/'.$config['tpl'].'/', $inFile);
$name = $name[1];
$subDir = explode('/', $name);
$inDirs[$subDir[0]][] = $inFile;
}
$zeroDirs = glob(ROOT.'usr/tpl/'.$config['tpl'].'/*.tpl');
$_names['index.tpl'] = _TPL_NAME_INDEX;
$_names['info.tpl'] = _TPL_NAME_INFO;
$_names['pages.tpl'] = _TPL_NAME_PAGE;
$_names['sitemap.tpl'] = _TPL_NAME_SITEMAP;
$_names['table.tpl'] = _TPL_NAME_TABLE;
$_names['title.tpl'] = _TPL_NAME_TITLE;
$_names['warning.tpl'] = _TPL_NAME_WARNING;
$_names['poll.tpl'] = _TPL_NAME_POLL;
$_names['feedback.tpl'] = _TPL_NAME_FEEDBACK;
$_names['block.tpl'] = _TPL_NAME_BLOCK;
$_names['bb_area.tpl'] = _TPL_NAME_BB;
$_names['mainpage.tpl'] = _TPL_NAME_MAINPAGE;
$_names['news-customs.tpl'] = _TPL_NAME_CUSTOMS;
$_names['comments=comments.view.tpl'] = _TPL_NAME_COM;
$_names['news=news-cat.tpl'] = _TPL_NAME_N_CAT;
$_names['news=news-view.tpl'] = _TPL_NAME_N_VIEW;
$_names['news=news-main.tpl'] = _TPL_NAME_N_MAIN;
$_names['news=news-add.tpl'] = _TPL_NAME_N_ADD;
$_fold['blog'] = _TPL_FOLD_BLOG;
$_fold['board'] = _TPL_FOLD_BOARD;
$_fold['comments'] = _TPL_FOLD_COMM;
$_fold['content'] = _TPL_FOLD_CONTENT;
$_fold['gallery'] = _TPL_FOLD_GALLERY;
$_fold['guestbook'] = _TPL_FOLD_GUEST;
$_fold['news'] = _TPL_FOLD_NEWS;
$_fold['pm'] = _TPL_FOLD_PM;
$_fold['profile'] = _TPL_FOLD_PROFILE;
$_fold['search'] = _TPL_FOLD_SEARCH;
echo '<li class="active dropdown">
<a href="javascript:;" class="dropdown-toggle" data-toggle="dropdown">'._TPL_FOLD_MAIN.' <b class="caret"></b></a>
<ul class="dropdown-menu">';
foreach($zeroDirs as $file)
{
$name = explode('usr/tpl/'.$config['tpl'].'/', $file);
$name = $name[1];
echo '<li>
<a href="{ADMIN}/templates/edit_tpl/' . $name . '">' . (isset($_names[$name]) ? $_names[$name] : $name) . '</a>
</li>';
}
echo '</ul>
</li>';
foreach($inDirs as $catalog => $files)
{
echo '<li class="dropdown">
<a href="javascript:;" class="dropdown-toggle" data-toggle="dropdown"> ' . (isset($_fold[$catalog]) ? $_fold[$catalog] : $catalog) . ' <b class="caret"></b></a>
<ul class="dropdown-menu">';
foreach($files as $file)
{
$name = explode('/', $file);
$name = end($name);
$_a = explode('usr/tpl/'.$config['tpl'].'/', $file);
$absolute = str_replace('/', '=', end($_a));
echo '<li><a href="{ADMIN}/templates/edit_tpl/' . $absolute . '">' . (isset($_names[$absolute]) ? $_names[$absolute] : $name) . '</a></li>';
}
echo '</ul>
</li>';
}
echo '</ul>
</div>
</nav>
</section>
</div>
</div>';
if(isset($save_is)) $adminTpl->info(_TPL_INFO_5);
$file = (isset($url[3]) && file_exists('usr/tpl/' . $config['tpl'] . '/'.str_replace('=', '/', $url[3]))) ? str_replace('=', '/', $url[3]) : 'index.tpl';
$text = htmlspecialchars(file_get_contents(ROOT . 'usr/tpl/' . $config['tpl'] . '/'.$file), ENT_QUOTES);
$count_rows = count(explode("n", $text))*20;
echo '<div class="row">
<div class="col-lg-12">
<section class="panel">
<div class="panel-heading no-border">
<b>'._TPL_EDET.' ('.$file.')</b>
</div>
<div class="panel-body">
<div class="switcher-content">';
echo '<div class="_edit_right">';
echo '<form action="{ADMIN}/templates/save/' . str_replace('/', '=', $file) . '" method="post" style="margin:0; padding:0;">
<div class="_code">
<textarea name="usr/tpl/' . $config['tpl'] . '/'. $file . '" class="textarea" id="_code">' .$text . '</textarea>
<br />
<div class="_save_me">
<input name="submit" type="submit" class="btn btn-success" value="'._SAVE.'" />
</div>
</div>
</form>';
echo '</div><br style="clear:both" />';
echo '<script src="' . $config['url'] . '/usr/plugins/highlight_code/codemirror.js" type="text/javascript"></script><script type="text/javascript">var editor = CodeMirror.fromTextArea('_code', {height: "dynamic",parserfile: ["parsexml.js", "parsecss.js", "tokenizejavascript.js", "parsejavascript.js", "parsehtmlmixed.js"],stylesheet: ["' . $config['url'] . '/usr/plugins/highlight_code/xmlcolors.css", "' . $config['url'] . '/usr/plugins/highlight_code/jscolors.css", "' . $config['url'] . '/usr/plugins/highlight_code/csscolors.css"], path: "' . $config['url'] . '/usr/plugins/highlight_code/", lineNumbers: true});
</script>';
echo '
</div>
</div>
</section>
</div>
</div>';
$adminTpl->close();
$adminTpl->admin_foot();
break;
case 'savecss':
foreach($_POST as $path => $html)
{
if(eregStrt('usr/tpl/'.$config['tpl'], $path))
{
if(is_writable(str_replace('_css', '.css', $path)))
{
$fp = @fopen(str_replace('_css', '.css', $path), 'w');
fwrite($fp, stripslashes($html));
fclose($fp);
$save_is = true;
}
}
}
case 'edit_css':
$adminTpl->admin_head(_TPL_EDET_CSS);
$adminTpl->open();
echo '<div class="row">
<div class="col-lg-12">
<section>
<nav class="navbar navbar-inverse" role="navigation">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
<span class="sr-only">'._TPL_EDET_CSS_CH.'</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand">CSS</a>
</div>
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav">';
foreach(glob(ROOT.'usr/tpl/'.$config['tpl'].'/*/*.css') as $inFile)
{
$name = explode('usr/tpl/'.$config['tpl'].'/', $inFile);
$name = $name[1];
$subDir = explode('/', $name);
$inDirs[$subDir[0]][] = $inFile;
}
$zeroDirs = glob(ROOT.'usr/tpl/'.$config['tpl'].'/assest/css/*.css');
$_names['engine.css'] = _TPL_NAME_CSS_ENG;
$_names['theme.css'] = _TPL_NAME_CSS_THM;
if(!empty($zeroDirs))
{
echo '<li class="active dropdown">
<a href="javascript:;" class="dropdown-toggle" data-toggle="dropdown">'._TPL_FOLD_MAIN.' <b class="caret"></b></a>
<ul class="dropdown-menu">';
foreach($zeroDirs as $file)
{
$name = explode('usr/tpl/'.$config['tpl'].'/assest/css/', $file);
$name = end($name);
$_a = explode('usr/tpl/'.$config['tpl'].'/', $file);
$absolute = str_replace(array('/', '.css'), array('=', '_css'), end($_a));
echo '<li><a href="{ADMIN}/templates/edit_css/' . $absolute . '">' . (isset($_names[$name]) ? $_names[$name] : $name) . '</a></li>';
}
echo '</ul>
</li>';
}
foreach($inDirs as $catalog => $files)
{
echo '<li class="dropdown">
<a href="javascript:;" class="dropdown-toggle" data-toggle="dropdown">'.$catalog.' <b class="caret"></b></a>
<ul class="dropdown-menu">';
foreach($files as $file)
{
$name = explode('/', $file);
$name = end($name);
$_a = explode('usr/tpl/'.$config['tpl'].'/', $file);
$absolute = str_replace(array('/', '.css'), array('=', '_css'), end($_a));
echo '<li><a href="{ADMIN}/templates/edit_css/' . $absolute . '">' . (isset($_names[$absolute]) ? $_names[$absolute] : $name) . '</a></li>';
}
echo '</ul>
</li>';
}
echo '</ul>
</div>
</nav>
</section>
</div>
</div>';
if(isset($save_is)) $adminTpl->info(_TPL_INFO_6);
$file = (isset($url[3]) && file_exists('usr/tpl/' . $config['tpl'] . '/'.str_replace(array('=', '_css'), array('/', '.css'), $url[3]))) ? str_replace(array('=', '_css'), array('/', '.css'), $url[3]) : 'assest/css/engine.css';
$text = htmlspecialchars(file_get_contents(ROOT . 'usr/tpl/' . $config['tpl'] . '/'.$file), ENT_QUOTES);
$count_rows = count(explode("n", $text))*16;
if (file_exists(ROOT.'usr/tpl/' . $config['tpl'] . '/'.$file))
{
echo '<div class="row">
<div class="col-lg-12">
<section class="panel">
<div class="panel-heading no-border">
<b>'._TPL_EDET.' ('.$file.')</b>
</div>
<div class="panel-body">
<div class="switcher-content">';
echo '<div class="_edit_right">';
echo '<form action="{ADMIN}/templates/savecss/' . str_replace(array('/', '.css'), array('=', '_css'), $file) . '" method="post" style="margin:0; padding:0;"><div class="_code"><textarea name="usr/tpl/' . $config['tpl'] . '/'. $file . '" class="textarea" id="_code">' .$text . '</textarea><br /><div class="_save_me"><input name="submit" type="submit" class="btn btn-success" value="'._SAVE.'" /> </div></div></form>';
echo '</div><br style="clear:both" />';
echo '<script src="' . $config['url'] . '/usr/plugins/highlight_code/codemirror.js" type="text/javascript"></script><script type="text/javascript">var editor = CodeMirror.fromTextArea('_code', {height: "dynamic",parserfile: ["parsecss.js"],stylesheet: ["' . $config['url'] . '/usr/plugins/highlight_code/csscolors.css"], path: "' . $config['url'] . '/usr/plugins/highlight_code/", lineNumbers: true});
</script>';
echo '
</div>
</div>
</section>
</div>
</div>';
}
else
{
$adminTpl->info(_TPL_NO_CSS);
}
$adminTpl->close();
$adminTpl->admin_foot();
break;
case 'download':
$tpl_dir = ROOT.'usr/tpl/'.$url[3];
if(is_dir($tpl_dir))
{
require_once(ROOT.'boot/sub_classes/pclzip.lib.php');
$archive = new PclZip('_temp_archive.zip');
$v_list = $archive->create($tpl_dir, PCLZIP_OPT_REMOVE_PATH, ROOT.'usr/tpl/');
if ($v_list == 0)
{
die("Error : ".$archive->errorInfo(true));
}
header('Content-type: application/zip');
header('Content-Disposition: attachment; filename="' . $url[3] . '(JMY_CMS_TEMPLATES).zip"');
print file_get_contents('_temp_archive.zip');
@unlink('_temp_archive.zip');
exit();
}
break;
case 'delete':
$tpl_dir = ROOT.'usr/tpl/'.$url[3];
if($config['tpl'] != $url[3])
{
location(ADMIN.'/templates/del_ok');
full_rmdir($tpl_dir);
}
else
{
location(ADMIN.'/templates/del_error');
}
break;
case 'choose':
$tpl_choose = $url[3];
if(is_dir(ROOT.'usr/tpl/'.$tpl_choose))
{
$file = ROOT.'etc/global.config.php';
$content = file_get_contents($file);
$content = str_replace('$config['tpl'] = "' . $config['tpl'] . '";', '$config['tpl'] = "' . $tpl_choose . '";', $content);
$fp = fopen($file, "wb");
fwrite($fp, $content);
fclose($fp);
setcookie('theme', $tpl_choose, time(), '/');
location(ADMIN.'/templates/choose_ok');
}
break;
}