Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Блог » Загрузка файлов в папку шаблона из админпанели

Загрузка файлов в папку шаблона из админпанели


 ravchik    14.01.2014    Блог    4513    3 комментария

Загрузка файлов в папку шаблона из админпанели


Доброго времени!
Иногда мне приходится быстро отредактировать какой-либо шаблон на DLE, в том числе залить новую картинку в шаблон, или новый css/js файл. Для этого приходится запускать FTP-клиент, подключаться к нужному серверу и т.д. Бывают случаи, когда находишься не на рабочем месте, и нет доступа по FTP.
Для таких случаев я попытался сделать маленький хак, который добавляет возможность загрузить файлы в папку с шаблоном (и подпапки) непосредственно из раздела редактирования шаблонов в админпанели.
В PHP не силен, только начал изучение, поэтому аргументированная критика и модернизация кода только приветствуются.

Открыть файл /engine/inc/templates.php
Найти
<table width="100%">
    <tr>
        <td bgcolor="#EFEFEF" height="29" style="padding-left:10px;"><div class="navigation">{$lang['opt_edteil']} <b>{$do_template}</b> {$lang['templates_help']} <a class="main" href="http://dle-news.ru/extras/online/all2.html" target="_blank">http://dle-news.ru/extras/online/all2.html</a></div></td>
    </tr>
</table>
<div class="unterline"></div>

Ниже вставить
HTML;
// Загрузка файлов в папку с шаблоном
echo "<table width='100%' style='table-layout:fixed;'><tr><td style='padding-left:10px;'><div class='navigation'><b>Загрузка файлов в папку шаблона</b><form method='post' enctype='multipart/form-data'>Выберите папку для загрузки  <select name='dirname'>";
showTree("./templates/".$do_template, "");
function showTree($folder, $space) {
    $files = scandir($folder);
    foreach($files as $file) {
        if (($file == '.') || ($file == '..')) continue;
        $f0 = $folder.'/'.$file;
        if (is_dir($f0)) { echo "<option value=\"".$space.$file."\">".$space.$file."</value>\n"; }
    }
}
echo "</select> <input name=\"file\" size=\"18\" type=\"file\" value=\"\" > <input name=\"submit\" type=\"submit\" value=\"Загрузить\" class=\"btn btn-primary\"></form>";
$dirname = htmlspecialchars(stripslashes($_POST['dirname']));
$file = $_FILES['file']['tmp_name'];
$filename = $_FILES['file']['name'];
if(!empty($file)) {
    ini_set('memory_limit', '32M');
    $maxsize = "20000000";
    $extentions = array("gif","jpg","jpeg","png","swf","js","css","tpl");
    $size = filesize ($_FILES['file']['tmp_name']);
    $type = strtolower(substr($filename, 1 + strrpos($filename, ".")));
    if($size > $maxsize) {
        echo 'Вы загружаете слишком большой по объёму файл.';
    } elseif(!in_array($type,$extentions)) {
        echo '<b>&#10008;  Данный файл запрещен к загрузке.</b>';
    } else {
        if (copy($file, ROOT_DIR.'/templates/Default/'.$dirname.'/'.$filename))
        echo "&#10004; Файл <b>".$filename."</b> загружен в папку /templates/Default/".$dirname."/<script>setTimeout('location.replace(\"{$PHP_SELF}?mod=templates\")', 3000);</script>";
    }
}
echo "</div></td></tr></table></div>";
// конец загрузки

3 комментария

ravchik
Юзер

ravchik - 14 января 2014 19:05 -

замените
echo "</div></td></tr></table></div>";
// конец загрузки
на
echo <<<HTML
</div></td></tr></table></div>

ravchik
Юзер

ravchik - 15 января 2014 05:57 -

Сделал модернизацию... Если раньше надо было прописывать папку шаблона в коде, то теперь автоматический выбирается шаблон, который установлен на сайте

golden_eagle_god
Юзер

golden_eagle_god - 29 января 2014 13:19 -

Написал бы лучше без перезагрузки страницы форму, было бы супер. Но всеравно молодцом!

Чтобы комментировать - войдите или зарегистрируйтесь на сайте
наверх