View file panel/settings.php

File size: 8.17Kb
<?
include_once '../sys/inc/start.php';
include_once '../sys/inc/compress.php';
include_once '../sys/inc/sess.php';
include_once '../sys/inc/home.php';
include_once '../sys/inc/settings.php';
include_once '../sys/inc/db_connect.php';
include_once '../sys/inc/ipua.php';
include_once '../sys/inc/fnc.php';
include_once '../sys/inc/user.php';

$set['title'] = 'Настройки сайдбара';
include_once '../sys/inc/thead.php';
title();
aut();

if (!isset($sidebar_enabled)) {
	header('Location: /');
	exit;
}

$types = include H . 'panel/inc/style_types.php';

$cur_key = 'bg_color';
if (isset($_GET['key']) && @$types[$_GET['key']])
	$cur_key = $_GET['key'];

if (isset($_GET['color']) && (mysql_result(mysql_query("SELECT COUNT(*) FROM `sidebar_colors` WHERE `color` = '".my_esc($_GET['color'])."'"), 0) || $_GET['color'] == 'default')) {
	if ($_GET['color'] == 'default') {
		unset($sidebar_settings_cache[$cur_key]);
	} else {
		$sidebar_settings_cache[$cur_key]['color'] = $_GET['color'];
		$sidebar_settings_cache[$cur_key]['content'] = $types[$cur_key]['selector'] . " { " . $types[$cur_key]['property'] . ": #" . $_GET['color'] . " !important } ";
	}
	mysql_query("UPDATE `sidebar_settings` SET `data` = '".json_encode($sidebar_settings_cache)."' WHERE `id_user` = '$user[id]'");
	header('Location: ?key=' . $cur_key);
	exit;
}

if (isset($_GET['default'])) {
	mysql_query("UPDATE `sidebar_settings` SET `data` = '[]' WHERE `id_user` = '$user[id]'");
	header('Location: ?key=' . $cur_key);
	exit;
}

if (isset($_POST['save'])) {
	$show_gifts = isset($_POST['show_gifts']) && $_POST['show_gifts'] == 1 ? 1 : 0;
	$show_sidebar = isset($_POST['show_sidebar']) && $_POST['show_sidebar'] == 1 ? 1 : 0;
	$reload_events = isset($_POST['reload_events']) && $_POST['reload_events'] == 1 ? 1 : 0;

	mysql_query("UPDATE `sidebar_settings` SET `show_gifts` = '$show_gifts', `show_sidebar` = '$show_sidebar', `reload_events` = '$reload_events' WHERE `id_user` = '$user[id]'");
	header('Location: ?');
	exit;
}
if ($webbrowser):
?>
<script>
	var cache = <?=json_encode($sidebar_settings_cache)?>;
	var cur_key = '<?=$cur_key?>';
	var $save, $style, saveXhr, is_saving = false;
	$(document).ready(function () {
		init();

		function init() {
			$style = $('#__sidebar-style').length ? $('#__sidebar-style') : undefined || $('<style>', {id: '__sidebar-style'}).appendTo($('head'));
			$save = $('#save');
			$save.on('click', function (e) { e.preventDefault(); save() });

			$('.__sidebar-settings-color').on('click', function (e) {
				e.preventDefault();

				setColor($(this).attr('attr-color'));
			});

			$('.__sidebar-settings-type').on('click', function (e) {
				e.preventDefault();

				setType($(this).attr('attr-key'));
			});

			$('.__sidebar-settings-defaults').on('click', function (e) {
				e.preventDefault();

				defaults();
			});
		}

		function setType(key) {
			cur_key = key;
			$('.__sidebar-settings-type').each(function (k, v) {
				$v = $(v);
				$v.html($v.text());
			});

			var $el = $('[attr-key='+cur_key+']');
			$el.html("<b>"+$el.text()+"</b>");

			setColorInList();
		}

		function setColor(color) {
			var $el = $('[attr-key='+cur_key+']'), 
				$el_prev = $('[attr-preview-key='+cur_key+']'), 
				selector = $el.attr('attr-selector'), 
				property = $el.attr('attr-property');

			var css = selector + ' { ' + property + ': #' + color + ' !important } ';
			if (color == 'default') {
				$el_prev.css('background-color', 'transparent');
				$el_prev.html('<img src="/style/icons/delete.png" alt="">');
				delete cache[cur_key];
			}
			else {
				cache[cur_key] = {};
				cache[cur_key].color = color;
				cache[cur_key].content = css;

				$el_prev.css('background-color', '#' + color);
				$el_prev.html('');
			}

			setCss();
			setColorInList();
		}

		function setCss() {
			var full_css = '';
			for (k in cache)
				full_css += cache[k].content;

			$style.html(full_css);
		}

		function setColorInList() {
			$('.__sidebar-settings-color').css({borderColor: 'transparent'});

			if (cache[cur_key] == undefined)
				return;

			$('[attr-color='+cache[cur_key].color+']').css({borderColor: '#000 #000 #FFF #FFF'});
		}

		function save() {
			if (is_saving)
				return;

			is_saving = true;
			$save.val('Сохранение...');

			var colors = {};
			console.log(cache);
			for (k in cache)
				colors[k] = cache[k].color;

			var checkboxes = ['show_gifts', 'show_sidebar', 'reload_events'];
			for (k in checkboxes)
				colors[checkboxes[k]] = $('input[name='+checkboxes[k]+']').is(':checked') ? 1 : 0;

			saveXhr = $.ajax({
				url: '/ajax/panel/save.php', 
				type: 'post', 
				data: colors, 
				success: function (json) {
					if (json == undefined || json.status == undefined || json.status == 0) {
						alert('Произошла ошибка при сохранении. Попробуйте ещё раз...');
						return;
					}
				}, 
				complete: function () {
					is_saving = false;
					saveXhr = undefined;
					$save.val('Сохранить');
					// alert('Сохранено');
				}, 
				error: function () {
					alert('Произошла ошибка при сохранении. Попробуйте ещё раз...');
				}
			})
		}

		function defaults() {
			cache = [];
			setType('bg_color');
			setColorInList();
			setCss();
			$('[attr-preview-key]').each(function (k, v) {
				var $el_prev = $(v);
				$el_prev.css('background-color', 'transparent');
				$el_prev.html('<img src="/style/icons/delete.png" alt="">');
			});
			save();
		}
	});
</script>
<?
endif;
?>
<div class="main __sidebar-settings-wrapper">
	<div class="__sidebar-settings-types">
		<? foreach ($types as $key => $type): ?>
		<span attr-preview-key="<?=$key?>" style="display: inline-block; height: 20px; width: 20px; background-color: <?=@$sidebar_settings_cache[$key] ? '#' . $sidebar_settings_cache[$key]['color'] : 'transparent'?>; vertical-align: middle;"><?=@!$sidebar_settings_cache[$key] ? '<img src="/style/icons/delete.png" alt="">' : NULL?></span> <a href="?key=<?=$key?>" class="__sidebar-settings-type <?=$cur_key == $key ? "__selected" : NULL?>" attr-key="<?=$key?>" attr-selector="<?=$type['selector']?>" attr-property="<?=$type['property']?>"><?=$cur_key == $key ? "<b>" : NULL?><?=$type['title']?><?=$cur_key == $key ? "</b>" : NULL?></a><br />
		<? endforeach; ?>
	</div>
	Выберите цвет:<br />
	<div class="__sidebar-settings-colors">
		<? $q = mysql_query("SELECT * FROM `sidebar_colors`"); while ($post = mysql_fetch_assoc($q)): ?>
		<a class="__sidebar-settings-color" attr-color="<?=$post['color']?>" href="?key=<?=$cur_key?>&color=<?=$post['color']?>" style="display: inline-block; float: left; height: 20px; width: 20px; background-color: #<?=$post['color']?>; margin: 2px; border: 2px solid transparent; <?=@$sidebar_settings_cache[$cur_key] && $sidebar_settings_cache[$cur_key]['color'] == $post['color'] ? " border-color: #FFF #FFF #000 #000;" : NULL?>"></a>
		<? endwhile; ?>
		<a class="__sidebar-settings-color" attr-color="default" href="?key=<?=$cur_key?>&color=default" style="display: inline-block; float: left; height: 20px; width: 20px; background-color: transparent; margin: 2px; border: 2px solid transparent;"><img src="/style/icons/delete.png" alt=""></a>
	</div>
	<div style="clear: both"></div>
	<form action="" method="post">
		<label><input type="checkbox" name="show_sidebar" value="1"<?=$sidebar_settings['show_sidebar'] ? "checked" : NULL?>> Показывать сайдбар</label><br />
		<label><input type="checkbox" name="show_gifts" value="1"<?=$sidebar_settings['show_gifts'] ? "checked" : NULL?>> Показывать подарки</label><br />
		<label><input type="checkbox" name="reload_events" value="1"<?=$sidebar_settings['reload_events'] ? "checked" : NULL?>> Подгружать уведомления (для компьютеров)</label><br />
		<input type="submit" id="save" name="save" value="Сохранить">
	</form>
</div>
<div class="foot">&raquo; <a href="?default" class="__sidebar-settings-defaults">По умолчанию</a></div>
<?
include_once '../sys/inc/tfoot.php';
?>