<?php
/*
=====================================================
DataLife Engine - by SoftNews Media Group
-----------------------------------------------------
https://dle-news.ru/
-----------------------------------------------------
Copyright (c) 2004-2025 SoftNews Media Group
=====================================================
This code is protected by copyright
=====================================================
File: storage.php
-----------------------------------------------------
Use: The management of storages
=====================================================
*/
if( !defined( 'DATALIFEENGINE' ) OR !defined( 'LOGGED_IN' ) ) {
header( "HTTP/1.1 403 Forbidden" );
header ( 'Location: ../../' );
die( "Hacking attempt!" );
}
if( $member_id['user_group'] != 1 ) {
msg( "error", $lang['index_denied'], $lang['index_denied'] );
}
function showRow($title = "", $description = "", $field = "", $class = "") {
if ($class) {
$class = " class=\"{$class}\"";
}
echo "<tr{$class}>
<td class=\"col-xs-6 col-sm-6 col-md-7\"><h6 class=\"media-heading text-semibold\">{$title}</h6><span class=\"text-muted text-size-small hidden-xs\">{$description}</span></td>
<td class=\"col-xs-6 col-sm-6 col-md-5\">{$field}</td>
</tr>";
}
function clean_array($a) {
global $db;
$a = html_entity_decode($a, ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML5, 'utf-8');
$a = htmlspecialchars(strip_tags($a), ENT_QUOTES, 'utf-8');
return $db->safesql($a);
}
function makeDropDown($options, $name, $selected, $optional = false) {
if (!$optional) {
$optional = "";
}
$output = "<select class=\"uniform\" name=\"$name\" {$optional}>\r\n";
foreach ($options as $value => $description) {
$output .= "<option value=\"{$value}\"";
if ($selected == $value) {
$output .= " selected ";
}
if (is_array($description)) {
if (isset($description['icon']) and $description['icon']) {
$output .= " data-content=\"<span class='select-icon'><img src='language/{$value}/{$description['icon']}'></span><span class='select-descr'>{$description['name']}</span>\" ";
}
$output .= ">{$description['name']}</option>\n";
} else {
$output .= ">{$description}</option>\n";
}
}
$output .= "</select>";
return $output;
}
if ($_GET['action'] == "setdefault") {
if (!isset($_REQUEST['user_hash']) or !$_REQUEST['user_hash'] or $_REQUEST['user_hash'] != $dle_login_hash) {
die("Hacking attempt! User not found");
}
$id = intval($_GET['id']);
$db->query("UPDATE " . PREFIX . "_storage SET `default_storage`='0'");
$db->query("UPDATE " . PREFIX . "_storage SET `default_storage`='1', `enabled`='1' WHERE id='{$id}'");
$db->query("INSERT INTO " . USERPREFIX . "_admin_logs (name, date, ip, action, extras) values ('" . $db->safesql($member_id['name']) . "', '{$_TIME}', '{$_IP}', '135', '')");
@unlink(ENGINE_DIR . '/cache/system/storages.php');
if (function_exists('opcache_reset')) {
opcache_reset();
}
header("Location: ?mod=storage");
die();
}
if ($_GET['action'] == "disable") {
if (!isset($_REQUEST['user_hash']) or !$_REQUEST['user_hash'] or $_REQUEST['user_hash'] != $dle_login_hash) {
die("Hacking attempt! User not found");
}
$id = intval($_GET['id']);
$db->query("UPDATE " . PREFIX . "_storage SET `default_storage`='0', `enabled`='0' WHERE id='{$id}'");
$db->query("INSERT INTO " . USERPREFIX . "_admin_logs (name, date, ip, action, extras) values ('" . $db->safesql($member_id['name']) . "', '{$_TIME}', '{$_IP}', '130', '')");
@unlink(ENGINE_DIR . '/cache/system/storages.php');
if (function_exists('opcache_reset')) {
opcache_reset();
}
header("Location: ?mod=storage");
die();
}
if ($_GET['action'] == "enable") {
if (!isset($_REQUEST['user_hash']) or !$_REQUEST['user_hash'] or $_REQUEST['user_hash'] != $dle_login_hash) {
die("Hacking attempt! User not found");
}
$id = intval($_GET['id']);
$db->query("UPDATE " . PREFIX . "_storage SET `enabled`='1' WHERE id='{$id}'");
$db->query("INSERT INTO " . USERPREFIX . "_admin_logs (name, date, ip, action, extras) values ('" . $db->safesql($member_id['name']) . "', '{$_TIME}', '{$_IP}', '131', '')");
@unlink(ENGINE_DIR . '/cache/system/storages.php');
if (function_exists('opcache_reset')) {
opcache_reset();
}
header("Location: ?mod=storage");
die();
}
if ($_POST['action'] == "mass_enable") {
if (!isset($_REQUEST['user_hash']) or !$_REQUEST['user_hash'] or $_REQUEST['user_hash'] != $dle_login_hash) {
die("Hacking attempt! User not found");
}
if (!isset($_POST['selected_ids']) or !is_array($_POST['selected_ids'])) {
msg("error", $lang['mass_error'], $lang['mass_storage_err'], "?mod=storage");
}
foreach ($_POST['selected_ids'] as $id) {
$id = intval($id);
$db->query("UPDATE " . PREFIX . "_storage SET `enabled`='1' WHERE id='{$id}'");
}
$db->query("INSERT INTO " . USERPREFIX . "_admin_logs (name, date, ip, action, extras) values ('" . $db->safesql($member_id['name']) . "', '{$_TIME}', '{$_IP}', '133', '')");
@unlink(ENGINE_DIR . '/cache/system/storages.php');
if (function_exists('opcache_reset')) {
opcache_reset();
}
header("Location: ?mod=storage");
die();
}
if ($_POST['action'] == "mass_disable") {
if (!isset($_REQUEST['user_hash']) or !$_REQUEST['user_hash'] or $_REQUEST['user_hash'] != $dle_login_hash) {
die("Hacking attempt! User not found");
}
if (!isset($_POST['selected_ids']) or !is_array($_POST['selected_ids'])) {
msg("error", $lang['mass_error'], $lang['mass_storage_err'], "?mod=storage");
}
foreach ($_POST['selected_ids'] as $id) {
$id = intval($id);
$db->query("UPDATE " . PREFIX . "_storage SET `default_storage`='0', `enabled`='0' WHERE id='{$id}'");
}
$db->query("INSERT INTO " . USERPREFIX . "_admin_logs (name, date, ip, action, extras) values ('" . $db->safesql($member_id['name']) . "', '{$_TIME}', '{$_IP}', '134', '')");
@unlink(ENGINE_DIR . '/cache/system/storages.php');
if (function_exists('opcache_reset')) {
opcache_reset();
}
header("Location: ?mod=storage");
die();
}
if ($_POST['action'] == "mass_delete") {
if (!isset($_REQUEST['user_hash']) or !$_REQUEST['user_hash'] or $_REQUEST['user_hash'] != $dle_login_hash) {
die("Hacking attempt! User not found");
}
if (!isset($_POST['selected_ids']) OR !is_array($_POST['selected_ids']) ) {
msg("error", $lang['mass_error'], $lang['mass_storage_err'], "?mod=storage");
}
foreach ($_POST['selected_ids'] as $id) {
$id = intval($id);
$db->query("DELETE FROM " . PREFIX . "_storage WHERE id='{$id}'");
}
$db->query("INSERT INTO " . USERPREFIX . "_admin_logs (name, date, ip, action, extras) values ('" . $db->safesql($member_id['name']) . "', '{$_TIME}', '{$_IP}', '132', '')");
@unlink(ENGINE_DIR . '/cache/system/storages.php');
if (function_exists('opcache_reset')) {
opcache_reset();
}
header("Location: ?mod=storage");
die();
}
if ($_GET['action'] == "delete") {
if (!isset($_REQUEST['user_hash']) or !$_REQUEST['user_hash'] or $_REQUEST['user_hash'] != $dle_login_hash) {
die("Hacking attempt! User not found");
}
$id = intval($_GET['id']);
$row = $db->super_query("SELECT id, name FROM " . PREFIX . "_storage WHERE id='{$id}'");
if (!isset($row['id'])) msg("error", $lang['storage_error'], $lang['storage_error']);
$db->query("DELETE FROM " . PREFIX . "_storage WHERE id='{$row['id']}'");
$db->query("INSERT INTO " . USERPREFIX . "_admin_logs (name, date, ip, action, extras) values ('" . $db->safesql($member_id['name']) . "', '{$_TIME}', '{$_IP}', '136', '{$row['id']}')");
@unlink(ENGINE_DIR . '/cache/system/storages.php');
if (function_exists('opcache_reset')) {
opcache_reset();
}
header("Location: ?mod=storage");
die();
}
if ($_REQUEST['action'] == "doadd" OR $_REQUEST['action'] == "doedit") {
if (!isset($_REQUEST['user_hash']) OR !$_REQUEST['user_hash'] OR $_REQUEST['user_hash'] != $dle_login_hash) {
die("Hacking attempt! User not found");
}
$storage = array_map("clean_array", $_POST['storage']);
$storage['type'] = intval($storage['type']);
if (!$storage['name']) msg("error", array('?mod=storage' => $lang['header_s_1'], '' => $lang['addnews_error']), $lang['storage_error_1'], "javascript:history.go(-1)");
if( $storage['http_url'] AND stripos($storage['http_url'], "https://") !== 0 AND stripos($storage['http_url'], "http://") !== 0 AND stripos($storage['http_url'], "//") !== 0 ) {
msg("error", array('?mod=storage' => $lang['header_s_1'], '' => $lang['addnews_error']), $lang['upload_error_8'], "javascript:history.go(-1)");
}
if ( !$storage['http_url'] AND $storage['type'] != 3 AND $storage['type'] != 4 AND $storage['type'] != 5 AND $storage['type'] != 6) {
msg("error", array('?mod=storage' => $lang['header_s_1'], '' => $lang['addnews_error']), $lang['upload_error_8'], "javascript:history.go(-1)");
}
if ($storage['http_url'] AND substr($storage['http_url'], -1, 1) != '/') $storage['http_url'] .= '/';
if($storage['type'] == 5) {
$storage['connect_url'] = $storage['remote_endpoint'];
}
if ($storage['type'] == 6) {
$storage['connect_url'] = $storage['webdav_baseurl'];
$storage['username'] = $storage['webdav_user'];
$storage['password'] = $storage['webdav_pass'];
}
if ($_REQUEST['action'] == "doedit") {
$id = intval($_REQUEST['id']);
if (!$id) msg("error", $lang['storage_error'], $lang['storage_error']);
$row = $db->super_query("SELECT id, name, password FROM " . PREFIX . "_storage WHERE id='$id'");
if (!isset($row['id'])) msg("error", $lang['storage_error'], $lang['storage_error']);
if( !$storage['password'] ) $storage['password'] = $row['password'];
$db->query("UPDATE " . PREFIX . "_storage SET name='{$storage['name']}', type='{$storage['type']}', accesstype='{$storage['accesstype']}', connect_url='{$storage['connect_url']}', connect_port='{$storage['connect_port']}', username='{$storage['username']}', password='{$storage['password']}', path='{$storage['path']}', http_url='{$storage['http_url']}', client_key='{$storage['client_key']}', secret_key='{$storage['secret_key']}', bucket='{$storage['bucket']}', region='{$storage['region']}' WHERE id='{$row['id']}'");
$db->query("INSERT INTO " . USERPREFIX . "_admin_logs (name, date, ip, action, extras) values ('" . $db->safesql($member_id['name']) . "', '{$_TIME}', '{$_IP}', '129', '{$storage['name']}')");
} else {
$db->query("INSERT INTO " . PREFIX . "_storage (name, type, accesstype, connect_url, connect_port, username, password, path, http_url, client_key, secret_key, bucket, region) values ('{$storage['name']}', '{$storage['type']}', '{$storage['accesstype']}', '{$storage['connect_url']}', '{$storage['connect_port']}', '{$storage['username']}', '{$storage['password']}', '{$storage['path']}', '{$storage['http_url']}', '{$storage['client_key']}', '{$storage['secret_key']}', '{$storage['bucket']}', '{$storage['region']}')");
$db->query("INSERT INTO " . USERPREFIX . "_admin_logs (name, date, ip, action, extras) values ('" . $db->safesql($member_id['name']) . "', '{$_TIME}', '{$_IP}', '128', '{$storage['name']}')");
}
@unlink(ENGINE_DIR . '/cache/system/storages.php');
if (function_exists('opcache_reset')) {
opcache_reset();
}
header("Location: ?mod=storage");
die();
}
if ($_REQUEST['action'] === "add" OR $_REQUEST['action'] === "edit") {
if ( $_REQUEST['action'] == "edit" ) {
$header = $lang['header_s_4'];
$id = intval($_REQUEST['id']);
if (!$id) msg("error", $lang['storage_error'], $lang['storage_error']);
$row = $db->super_query("SELECT * FROM " . PREFIX . "_storage WHERE id='$id'");
if (!isset($row['id'])) msg( "error", $lang['storage_error'], $lang['storage_error'] );
$row = array_map("clean_array", $row);
} else {
$header = $lang['header_s_3'];
$row['id'] = '0';
$row['name'] = '';
$row['type'] ='1';
$row['connect_url'] = '';
$row['connect_port'] = '21';
$row['username'] = '';
$row['password'] = '';
$row['bucket'] = '';
$row['region'] = '';
$row['client_key'] = '';
$row['secret_key'] = '';
$row['path'] = '';
$row['http_url'] = '';
$row['accesstype'] = '';
}
echoheader("<i class=\"fa fa-hdd-o position-left\"></i><span class=\"text-semibold\">{$lang['opt_storages']}</span>", array('?mod=storage' => $lang['header_s_1'], '' => $header));
echo <<<HTML
<form action="?mod=storage" method="post" name="optionsbar" id="optionsbar">
<input type="hidden" name="mod" value="storage">
<input type="hidden" name="action" value="do{$_REQUEST['action']}">
<input type="hidden" name="user_hash" value="{$dle_login_hash}">
<input type="hidden" name="id" value="{$row['id']}">
<div class="panel panel-default">
<div class="panel-heading">
{$header}
</div>
<table class="table table-striped">
HTML;
showRow($lang['storage_name'], $lang['storage_name_d'], "<input dir=\"auto\" type=\"text\" class=\"form-control\" name=\"storage[name]\" value=\"{$row['name']}\">");
showRow($lang['opt_sys_imfs'], $lang['opt_sys_imfsd'], makeDropDown(array("1" => $lang['opt_sys_imfs_2'], "2" => $lang['opt_sys_imfs_3'], "3" => $lang['opt_sys_imfs_4'], "4" => $lang['opt_sys_imfs_5'], "5" => $lang['opt_sys_imfs_6'], "6" => $lang['opt_sys_imfs_7']), "storage[type]", "{$row['type']}", "onchange=\"ShowOrHideRemote(this.value)\""));
showRow($lang['opt_sys_imfsf'], $lang['opt_sys_imfsfd'], "<input dir=\"auto\" type=\"text\" name=\"storage[connect_url]\" value=\"{$row['connect_url']}\" class=\"form-control\">", "ftp-server");
showRow($lang['opt_sys_imfsfp'], $lang['opt_sys_imfsfpd'], "<input dir=\"auto\" type=\"text\" class=\"form-control\" style=\"max-width:100px; text-align: center;\" name='storage[connect_port]' value=\"{$row['connect_port']}\" >", "ftp-server");
showRow($lang['opt_sys_imfsfu'], $lang['opt_sys_imfsfud'], "<input dir=\"auto\" type=\"text\" class=\"form-control\" name='storage[username]' value=\"{$row['username']}\" >", "ftp-server");
if ( !$row['password'] ) $pass_hidden = ''; else $pass_hidden = $lang['pass_hidden'];
showRow($lang['opt_sys_imfsfpp'], $lang['opt_sys_imfsfppd'], "<input dir=\"auto\" type=\"text\" class=\"form-control\" name='storage[password]' value=\"\" placeholder=\"{$pass_hidden}\">", "ftp-server");
showRow($lang['opt_sys_imfwe'], $lang['opt_sys_imfwed'], "<input dir=\"auto\" type=\"text\" class=\"form-control\" name='storage[webdav_baseurl]' value=\"{$row['connect_url']}\" >", "webdav-server");
showRow($lang['opt_sys_imfweu'], $lang['opt_sys_imfweud'], "<input dir=\"auto\" type=\"text\" class=\"form-control\" name='storage[webdav_user]' value=\"{$row['username']}\" >", "webdav-server");
if (!$row['password']) $pass_hidden = ''; else $pass_hidden = $lang['pass_hidden'];
showRow($lang['opt_sys_imfwep'], $lang['opt_sys_imfwepd'], "<input dir=\"auto\" type=\"text\" class=\"form-control\" name='storage[webdav_pass]' value=\"\" placeholder=\"{$pass_hidden}\">", "webdav-server");
showRow('EndPoint', $lang['opt_sys_imfend'], "<input dir=\"auto\" type=\"text\" class=\"form-control\" name='storage[remote_endpoint]' value=\"{$row['connect_url']}\" >", "cloud-endpoint");
showRow('Client Key ID', $lang['opt_sys_imfski'], "<input dir=\"auto\" type=\"text\" class=\"form-control\" name='storage[client_key]' value=\"{$row['client_key']}\" >", "cloud-server");
showRow('Secret Key', $lang['opt_sys_imfsks'], "<input dir=\"auto\" type=\"text\" class=\"form-control\" name='storage[secret_key]' value=\"{$row['secret_key']}\" >", "cloud-server");
showRow($lang['opt_sys_imfskb'], $lang['opt_sys_imfskbd'], "<input dir=\"auto\" type=\"text\" class=\"form-control\" name='storage[bucket]' value=\"{$row['bucket']}\" >", "cloud-server");
showRow($lang['opt_sys_imfskr'], $lang['opt_sys_imfskrd'], "<input dir=\"auto\" type=\"text\" class=\"form-control\" name='storage[region]' value=\"{$row['region']}\" >", "cloud-server");
showRow($lang['opt_sys_imfsfpa'], $lang['opt_sys_imfsfpad'], "<input dir=\"auto\" type=\"text\" class=\"form-control\" name='storage[path]' value=\"{$row['path']}\" >", "remote-server webdav-hidden");
showRow($lang['opt_sys_imfsfur'], $lang['opt_sys_imfsfurd'], "<input dir=\"auto\" type=\"text\" class=\"form-control\" name='storage[http_url]' value=\"{$row['http_url']}\" >", "remote-server");
showRow($lang['opt_sys_fa'], $lang['opt_sys_fad'], makeDropDown(array("public" => $lang['files_public'], "private" => $lang['files_private']), "storage[accesstype]", "{$row['accesstype']}"));
echo <<<HTML
</table>
<div class="panel-footer">
<button type="submit" class="btn bg-teal btn-sm btn-raised position-left"><i class="fa fa-floppy-o position-left"></i>{$lang['user_save']}</button>
</div>
</div>
</form>
<script>
function ShowOrHideRemote(value) {
if(value == '1' || value == '2' || value == '3' || value == '4' || value == '5' || value == '6') {
$(".remote-server").show();
} else {
$(".remote-server").hide();
}
if(value == '1' || value == '2') {
$(".ftp-server").show();
} else {
$(".ftp-server").hide();
}
if(value == '3' || value == '4' || value == '5') {
$(".cloud-server").show();
} else {
$(".cloud-server").hide();
}
if(value == '5') {
$(".cloud-endpoint").show();
} else {
$(".cloud-endpoint").hide();
}
if(value == '6') {
$(".webdav-server").show();
$(".webdav-hidden").hide();
} else {
$(".webdav-server").hide();
}
}
ShowOrHideRemote('{$row['type']}');
</script>
HTML;
echofooter();
} else {
$js_array[] = "public/js/sortable.js";
echoheader( "<i class=\"fa fa-hdd-o position-left\"></i><span class=\"text-semibold\">{$lang['opt_storages']}</span>", $lang['header_s_1'] );
echo <<<HTML
<form action="?mod=storage" method="post" name="optionsbar" id="optionsbar">
<input type="hidden" name="mod" value="storage">
<input type="hidden" name="user_hash" value="{$dle_login_hash}">
<div class="panel panel-default">
<div class="panel-heading">
{$lang['header_s_2']}
</div>
HTML;
$entries = "";
$default_status = "";
$remote_default_status = false;
$db->query("SELECT * FROM " . PREFIX . "_storage ORDER BY posi ASC, id DESC");
while($row = $db->get_row()) {
if ($row['enabled']) {
$status = "<span title=\"{$lang['storage_on']}\" class=\"text-success tip\"><b><i class=\"fa fa-check-circle\"></i></b></span>";
$lang['led_active'] = $lang['opt_sys_r1'];
$led_action = "disable";
} else {
$status = "<span title=\"{$lang['storage_off']}\" class=\"text-danger tip\"><b><i class=\"fa fa-exclamation-circle\"></i></b></span>";
$lang['led_active'] = $lang['all_enable'];
$led_action = "enable";
}
if ($row['default_storage']) {
$default_status = "<span title=\"{$lang['storage_default']}\" class=\"text-success tip\"><b><i class=\"fa fa-check-circle\"></i></b></span>";
$remote_default_status = true;
} else {
$default_status = "";
}
$menu_link = <<<HTML
<div class="btn-group">
<a href="#" class="dropdown-toggle nocolor" data-toggle="dropdown" aria-expanded="true"><i class="fa fa-bars"></i><span class="caret"></span></a>
<ul class="dropdown-menu text-left dropdown-menu-right">
<li><a href="?mod=storage&action=edit&id={$row['id']}"><i class="fa fa-pencil-square-o position-left"></i>{$lang['word_ledit']}</a></li>
<li><a href="?mod=storage&user_hash={$dle_login_hash}&action=setdefault&id={$row['id']}"><i class="fa fa-hand-o-up position-left"></i>{$lang['storage_setd']}</a></li>
<li><a href="?mod=storage&user_hash={$dle_login_hash}&action={$led_action}&id={$row['id']}"><i class="fa fa-eye position-left"></i>{$lang['led_active']}</a></li>
<li class="divider"></li>
<li><a uid="{$row['id']}" class="dellink" href="?mod=storage"><i class="fa fa-trash-o position-left text-danger"></i>{$lang['word_ldel']}</a></li>
</ul>
</div>
HTML;
$type = array("1" => $lang['opt_sys_imfs_2'], "2" => $lang['opt_sys_imfs_3'], "3" => $lang['opt_sys_imfs_4'], "4" => $lang['opt_sys_imfs_5'], "5" => $lang['opt_sys_imfs_6'], "6" => $lang['opt_sys_imfs_7']);
$type = $type[$row['type']];
$entries .= "<tr class=\"dd-item dd-item-table drag-bg\" data-id=\"{$row['id']}\">
<td class=\"dd-handles\"></td>
<td class=\"cursor-pointer\" onclick=\"document.location = '?mod=storage&action=edit&id={$row['id']}'; return false;\" style=\"word-break: break-all;\"><div id=\"content_{$row['id']}\">{$row['name']}</div></td>
<td class=\"cursor-pointer\" onclick=\"document.location = '?mod=storage&action=edit&id={$row['id']}'; return false;\" style=\"word-break: break-all;\">{$type}</td>
<td class=\"cursor-pointer text-center\" onclick=\"document.location = '?mod=storage&action=edit&id={$row['id']}'; return false;\">{$default_status}</td>
<td class=\"cursor-pointer text-center\" onclick=\"document.location = '?mod=storage&action=edit&id={$row['id']}'; return false;\">{$status}</td>
<td class=\"cursor-pointer text-center\">{$menu_link}</td>
<td class=\"cursor-pointer\"><input name=\"selected_ids[]\" value=\"{$row['id']}\" type=\"checkbox\" class=\"icheck\"></td>
</tr>";
}
if(!$remote_default_status) {
$default_status = "<span title=\"{$lang['storage_default']}\" class=\"text-success tip\"><b><i class=\"fa fa-check-circle\"></i></b></span>";
$menu_link = '';
} else {
$default_status = '';
$menu_link = <<<HTML
<div class="btn-group">
<a href="#" class="dropdown-toggle nocolor" data-toggle="dropdown" aria-expanded="true"><i class="fa fa-bars"></i><span class="caret"></span></a>
<ul class="dropdown-menu text-left dropdown-menu-right">
<li><a href="?mod=storage&user_hash={$dle_login_hash}&action=setdefault&id=0"><i class="fa fa-hand-o-up position-left"></i>{$lang['storage_setd']}</a></li>
</ul>
</div>
HTML;
}
$status = "<span title=\"{$lang['storage_on']}\" class=\"text-success tip\"><b><i class=\"fa fa-check-circle\"></i></b></span>";
$entries = "<tr>
<td></td>
<td style=\"word-break: break-all;\">{$lang['opt_sys_imfs_1']}</td>
<td style=\"word-break: break-all;\"></td>
<td class=\"text-center\">{$default_status}</td>
<td class=\"text-center\">{$status}</td>
<td class=\"text-center\">{$menu_link}</td>
<td></td>
</tr>". $entries;
$db->free();
echo <<<HTML
<div class="dd table-responsive">
<table class="table table-xs">
<thead>
<tr>
<th></th>
<th>{$lang['storage_name']}</th>
<th style="width: 20rem">{$lang['storage_type']}</th>
<th class="text-center" style="width: 10rem">{$lang['storage_default']}</th>
<th class="text-center" style="width: 10rem">{$lang['storage_enabled']}</th>
<th style="width: 4.375rem"> </th>
<th style="width: 2.5rem"><input class="icheck" type="checkbox" name="master_box" title="{$lang['edit_selall']}" onclick="javascript:ckeck_uncheck_all()"></th>
</tr>
</thead>
<tbody class="dd-list dd-table" id="nestable">
{$entries}
</tbody>
</table>
</div>
<div class="panel-footer">
<div class="pull-right">
<a href="?mod=storage&action=add" class="btn bg-teal btn-sm btn-raised position-left"><i class="fa fa-plus-circle position-left"></i>{$lang['storage_add']}</a>
<select class="uniform position-left" name="action" data-dropdown-align-right="auto">
<option value="">{$lang['edit_selact']}</option>
<option value="mass_enable">{$lang['all_enable']}</option>
<option value="mass_disable">{$lang['opt_sys_r1']}</option>
<option value="mass_delete">{$lang['edit_seldel']}</option>
</select><input class="btn bg-brown-600 btn-sm btn-raised" type="submit" value="{$lang['b_start']}">
</div>
</div>
</div>
</form>
<div class="alert alert-info alert-styled-left alert-arrow-left alert-component">{$lang['opt_storeagehelp']}</div>
<script>
<!--
function ckeck_uncheck_all() {
var frm = document.optionsbar;
for (var i=0;i<frm.elements.length;i++) {
var elmnt = frm.elements[i];
if (elmnt.type=='checkbox') {
if(frm.master_box.checked == true){ elmnt.checked=false; $(elmnt).parents('tr').removeClass('warning'); }
else{ elmnt.checked=true; $(elmnt).parents('tr').addClass('warning');}
}
}
if(frm.master_box.checked == true){ frm.master_box.checked = false; }
else{ frm.master_box.checked = true; }
$(frm.master_box).parents('tr').removeClass('warning');
$.uniform.update();
}
$(function(){
if( document.getElementById('nestable') ) {
var storage_sort = new Sortable(document.getElementById('nestable'), {
group: "rubric",
animation: 150,
ghostClass: 'drop-bg',
handle: '.dd-handles',
draggable: '.dd-item',
onSort: function (evt) {
var url = "action=storagesort&user_hash={$dle_login_hash}&list="+window.JSON.stringify(storage_sort.toArray());
ShowLoading('');
$.post('index.php?controller=ajax&mod=adminfunction', url, function(data){
HideLoading('');
if (data != 'ok') {
DLEPush.error('{$lang['cat_sort_fail']}');
}
});
}
});
}
$('.table').find('tr > td:last-child').find('input[type=checkbox]').on('change', function() {
if($(this).is(':checked')) {
$(this).parents('tr').addClass('warning');
}
else {
$(this).parents('tr').removeClass('warning');
}
});
$('.dellink').click(function(){
var tag_name = $('#content_'+$(this).attr('uid')).text();
var urlid = $(this).attr('uid');
DLEconfirmDelete( '{$lang['storage_del']} <b>«'+tag_name+'»</b>', '{$lang['p_confirm']}', function () {
document.location="?mod=storage&user_hash={$dle_login_hash}&action=delete&id=" + urlid;
} );
return false;
});
});
//-->
</script>
HTML;
echofooter();
}