From c5825479e9570705cae3c23788f74bb40ab95234 Mon Sep 17 00:00:00 2001 From: pafnuty Date: Fri, 19 Oct 2018 21:34:41 +0400 Subject: [PATCH] Initial commit --- .editorconfig | 13 + .github/ISSUE_TEMPLATE.md | 7 + .gitignore | 232 +++++ CHANGELOG.md | 40 + LICENSE | 2 +- README.md | 24 +- catface_installer.php | 103 ++ catface_uninstaller.php | 96 ++ engine/editor/catface_description.php | 281 +++++ engine/editor/catface_description_pages.php | 281 +++++ engine/inc/catface.php | 533 ++++++++++ engine/modules/catface.php | 199 ++++ engine/skins/application.css | 1018 +++++++++++++++++++ engine/skins/images/catface.png | Bin 0 -> 14380 bytes templates/Default/catface.tpl | 7 + 15 files changed, 2834 insertions(+), 2 deletions(-) create mode 100644 .editorconfig create mode 100644 .github/ISSUE_TEMPLATE.md create mode 100644 .gitignore create mode 100644 CHANGELOG.md create mode 100644 catface_installer.php create mode 100644 catface_uninstaller.php create mode 100644 engine/editor/catface_description.php create mode 100644 engine/editor/catface_description_pages.php create mode 100644 engine/inc/catface.php create mode 100644 engine/modules/catface.php create mode 100644 engine/skins/application.css create mode 100644 engine/skins/images/catface.png create mode 100644 templates/Default/catface.tpl diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..ec67311 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,13 @@ +root = true + +[*] +charset = utf-8 +indent_style = tab +indent_size = 4 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +insert_final_newline = false +trim_trailing_whitespace = false \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md new file mode 100644 index 0000000..9e053cb --- /dev/null +++ b/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,7 @@ +# Описание ошибки: + +- При каких условиях воспроизводится ошибка +- Страница, на которой наблюдается ошибка +- Вносились ли модификации в движок +- Версия DLE: 10.3 +- Версия PHP: 5.6 \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1c8c791 --- /dev/null +++ b/.gitignore @@ -0,0 +1,232 @@ +# Redactors +/.idea/ + + +# Installed DLE +/engine/cache/*.tmp +/engine/cache/system/*.php +/engine/data/*.txt +/engine/data/*.php + +# DLE 11.1 sources +/.htaccess +/admin.php +/backup/.htaccess +/backup/index.html +/cron.php +/engine/ajax/addcomments.php +/engine/ajax/adminfunction.php +/engine/ajax/allvotes.php +/engine/ajax/antivirus.php +/engine/ajax/bbcode.php +/engine/ajax/calendar.php +/engine/ajax/clean.php +/engine/ajax/comments.php +/engine/ajax/complaint.php +/engine/ajax/deletecomments.php +/engine/ajax/editcomments.php +/engine/ajax/editnews.php +/engine/ajax/favorites.php +/engine/ajax/feedback.php +/engine/ajax/find_relates.php +/engine/ajax/find_tags.php +/engine/ajax/keywords.php +/engine/ajax/message.php +/engine/ajax/newsletter.php +/engine/ajax/pm.php +/engine/ajax/poll.php +/engine/ajax/profile.php +/engine/ajax/quote.php +/engine/ajax/rating.php +/engine/ajax/ratingcomments.php +/engine/ajax/rebuild.php +/engine/ajax/registration.php +/engine/ajax/replycomments.php +/engine/ajax/rss.php +/engine/ajax/search.php +/engine/ajax/sitemap.php +/engine/ajax/templates.php +/engine/ajax/typograf.php +/engine/ajax/updates.php +/engine/ajax/upload.php +/engine/ajax/vote.php +/engine/api/ +/engine/cache/* +/engine/cache/system/* +/engine/classes/.htaccess +/engine/classes/antivirus.class.php +/engine/classes/calendar/calendar.css +/engine/classes/calendar/calendar.js +/engine/classes/comments.class.php +/engine/classes/download.class.php +/engine/classes/flashplayer/* +/engine/classes/google.class.php +/engine/classes/highlight/ +/engine/classes/highslide/ +/engine/classes/html5player/* +/engine/classes/js/* +/engine/classes/mail.class.php +/engine/classes/mail/class.phpmailer.php +/engine/classes/masha/* +/engine/classes/min/* +/engine/classes/mobiledetect.class.php +/engine/classes/mysql.php +/engine/classes/parse.class.php +/engine/classes/recaptcha.php +/engine/classes/rss.class.php +/engine/classes/social.class.php +/engine/classes/stopspam.class.php +/engine/classes/templates.class.php +/engine/classes/thumb.class.php +/engine/classes/typograf.class.php +/engine/classes/uploads/* +/engine/data/.htaccess +/engine/data/emoticons/* +/engine/download.php +/engine/editor/* +/engine/engine.php +/engine/go.php +/engine/inc/.htaccess +/engine/inc/addnews.php +/engine/inc/banners.php +/engine/inc/blockip.php +/engine/inc/categories.php +/engine/inc/check.php +/engine/inc/clean.php +/engine/inc/cmoderation.php +/engine/inc/comments.php +/engine/inc/complaint.php +/engine/inc/dboption.php +/engine/inc/dumper.php +/engine/inc/editnews.php +/engine/inc/editusers.php +/engine/inc/editvote.php +/engine/inc/email.php +/engine/inc/files.php +/engine/inc/googlemap.php +/engine/inc/help.php +/engine/inc/include/.htaccess +/engine/inc/include/functions.inc.php +/engine/inc/include/init.php +/engine/inc/include/inserttag.php +/engine/inc/iptools.php +/engine/inc/links.php +/engine/inc/logs.php +/engine/inc/main.php +/engine/inc/mass_static_actions.php +/engine/inc/mass_user_actions.php +/engine/inc/massactions.php +/engine/inc/newsletter.php +/engine/inc/options.php +/engine/inc/preview.php +/engine/inc/question.php +/engine/inc/rebuild.php +/engine/inc/rss.php +/engine/inc/rssinform.php +/engine/inc/search.php +/engine/inc/social.php +/engine/inc/static.php +/engine/inc/tagscloud.php +/engine/inc/templates.php +/engine/inc/userfields.php +/engine/inc/usergroup.php +/engine/inc/videoconfig.php +/engine/inc/wordfilter.php +/engine/inc/xfields.php +/engine/init.php +/engine/modules/.htaccess +/engine/modules/addcomments.php +/engine/modules/addnews.php +/engine/modules/antibot/* +/engine/modules/banned.php +/engine/modules/banners.php +/engine/modules/bbcode.php +/engine/modules/calendar.php +/engine/modules/changemail.php +/engine/modules/comments.php +/engine/modules/cron.php +/engine/modules/deletenews.php +/engine/modules/favorites.php +/engine/modules/feedback.php +/engine/modules/functions.php +/engine/modules/lastcomments.php +/engine/modules/links.php +/engine/modules/lostpassword.php +/engine/modules/main.php +/engine/modules/offline.php +/engine/modules/pm.php +/engine/modules/pm_alert.php +/engine/modules/poll.php +/engine/modules/profile.php +/engine/modules/register.php +/engine/modules/rssinform.php +/engine/modules/search.php +/engine/modules/show.custom.php +/engine/modules/show.full.php +/engine/modules/show.short.php +/engine/modules/sitelogin.php +/engine/modules/social.php +/engine/modules/static.php +/engine/modules/stats.php +/engine/modules/tagscloud.php +/engine/modules/topnews.php +/engine/modules/vote.php +/engine/opensearch.php +/engine/preview.php +/engine/print.php +/engine/rss.php +/engine/skins/.htaccess +/engine/skins/codemirror/css/default.css +/engine/skins/codemirror/js/LICENSE +/engine/skins/codemirror/js/code.js +/engine/skins/default.skin.php +/engine/skins/fonts/* +/engine/skins/images/* +/engine/skins/javascripts/application.js +/engine/skins/stylesheets/application.css +/engine/skins/stylesheets/frame.css +/index.php +/install.php +/language/.htaccess +/language/Russian/admincheck.lng +/language/Russian/adminlogs.lng +/language/Russian/adminpanel.lng +/language/Russian/help.lng +/language/Russian/website.lng +/robots.txt +/templates/.htaccess +/templates/Default/* +/templates/Gemini/* +/templates/Green/* +/templates/Pisces/* +/templates/Red/* +/templates/banned.tpl +/templates/opensearch.tpl +/templates/rss.tpl +/templates/smartphone/* +/upgrade/* +/uploads/* + +# DLE 11.3 sources +/engine/ajax/commentssubscribe.php +/engine/ajax/twofactor.php +/engine/classes/htmlpurifier/* +/engine/classes/memcache.class.php +/engine/inc/lostpassword.php +/engine/inc/redirects.php +/engine/inc/twofactor.php + +# DLE 12 sources +/engine/inc/metatags.php +/language/English/admincheck.lng +/language/English/adminlogs.lng +/language/English/adminpanel.lng +/language/English/help.lng +/language/English/website.lng + +# Place your custom files here + +!/engine/skins/images/catface.png +!/engine/skins/application.css +!/engine/editor/catface_* +!/templates/Default/catface.tpl diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..9232a18 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,40 @@ + +## v.2.3 — 23.05.2014 +- Полностью обновлен и переработан внешний вид модуля. +- Исправлено переключение редакторов (BBCODES, WYSIWYG) для новых версий DLE. +- Исправлена ошибка на PHP версии 5.4 и выше. + +## v.2.2 — 31.10.2013 +- Полный отказ от DLE_API — теперь модуль работает намного быстрее и потребляет гораздо меньше ресурсов. +- Исправлена ошибка, когда для раздела не было никаких настроек и модуль посылал каждый раз запрос в БД даже при включенном кешировании. +- Небольшие исправления, оптимизация и улучшения кода модуля. +- За обновление отдельное спасибо Паше ПафНутиЙ. + +## v.2.1 — 13.06.2012 +- Визуальный редактор теперь подстраивается под версию DLE, то есть работает как в версии DLE 9.6, так и в более ранних версиях. +- Исправлен недочет в анинсталлере, когда при удалении модуля, таблица с данными не удалялась из базы. + +## v.2.0 — 03.06.2012 +- Добавлено кеширование. +- Добавлены специальные теги для вставки в catface.tpl — [show_name][/show_name] и [show_description][/show_description]. +- Обновлён инсталлер и анинсталлер. +- Обновлен внешний вид, заменена иконка модуля. + +## v.1.1 — 04.08.2011 +- Появилась новая опция «Где активировать модуль», которая позволяет скрыть на страницах категории не только название и описание, но и все остальное содержимое tpl-шаблона. + +## v.1.0.10 — 01.08.2011 +- Исправлена проблема с отображением пустого тега H1 если выбрана опция «скрывать» для заголовка категории. + +## v.1.0.9 — 01.06.2011 +- Решена проблема с выводом знаков ??? вместо букв. +- Обновлена таблица в базе данных (добавлен первичный ключ и явно указана кодировка cp1251). + +## v.1.0.7 — 16.05.2011 +- Исправлена ошибка с WYSIWYG-редактором для версий DLE ниже 9.2. + +## v.1.0.6 — 16.05.2011 +- Исправлена ошибка из-за которой не работал скрипт, скрывающий описание для остальных страниц при выключенном WYSIWYG-редакторе. + +## v.1.0 — 12.05.2011 +- Паблик релиз, идентичен девеловерской версии 1.0.5. \ No newline at end of file diff --git a/LICENSE b/LICENSE index 91ab692..e5b522e 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2018 Pavel Belousov +Copyright (c) 2018 Александр Алаев Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index 0ab92f5..f3be00c 100644 --- a/README.md +++ b/README.md @@ -1 +1,23 @@ -# DLE-CatFace \ No newline at end of file +# DLE-CatFace +![version](https://img.shields.io/badge/version-2.3.1-red.svg?style=flat-square "Version") +![DLE](https://img.shields.io/badge/DLE-8.[b]2[/b]-green.svg?style=flat-square "DLE Version") +[![MIT License](https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square)](https://github.com/dle-modules/DLE-StarterKit/blob/master/LICENSE) + +Модуль CatFace — SEO оптимизация категорий для DLE Datalife Engine + +## Установка модуля: + +- Распакуйте архив с модулем; +- Скопируйте содержимое архива (кроме /templates/) на сервер; +- Содержимое папки /templates/Default/ поместите в папку своего шаблона; +- Запустите файл catface_installer.php и следуйте его инструкциям; +- Удалите файл catface_installer.php с сервера; +- Откройте файл main.tpl своего шаблона и в нужное место добавьте следующий код:`[aviable=cat|main]{include file="engine/modules/catface.php"}[/aviable]` +- Процесс установки завершен, переходите к настройке модуля. + +## Удаление модуля + +- Загрузите файл catface_uninstaller.php на сервер, в папку где установлен DLE; +- Запустите файл http://site.ru/catface_uninstaller.php и следуйте инструкциям; +- Удалите все файлы модуля, загруженные при установке; +- Не забудьте также удалить файл catface_uninstaller.php. \ No newline at end of file diff --git a/catface_installer.php b/catface_installer.php new file mode 100644 index 0000000..bf9c096 --- /dev/null +++ b/catface_installer.php @@ -0,0 +1,103 @@ + + + + CatFace + + + + + +
+ +
+
 
+
+
+ +
+
+
 
+
+
+ + + + CatFace!'; + $output .= ''; + $output .= '

! catface_installer.php !

'; + + // $_POST catface_install, , + if(!empty($_POST['catface_install'])) + { + // config + include_once ('engine/data/config.php'); + + // DLE API + include ('engine/api/api.class.php'); + + // ( ) + $query = "DROP TABLE IF EXISTS `".PREFIX."_category_face`;"; + $dle_api->db->query($query); + + // C + $query = "CREATE TABLE `".PREFIX."_category_face` ( + `category_id` int(11) NOT NULL, + `name` varchar(255) NOT NULL, + `name_pages` varchar(255) NOT NULL, + `description` text NOT NULL, + `description_pages` text NOT NULL, + `module_placement` enum('nowhere','first_page','all_pages') NOT NULL, + `show_name` enum('show','default','hide') NOT NULL, + `show_description` enum('show','default','hide') NOT NULL, + `name_placement` enum('first_page','all_pages') NOT NULL, + `description_placement` enum('first_page','all_pages') NOT NULL, + PRIMARY KEY (`category_id`) + ) DEFAULT CHARSET=cp1251;"; + $dle_api->db->query($query); + + // + $dle_api->install_admin_module('catface', 'CatFace - SEO ', ' , ', 'catface.png'); + + // + $output .= '

'; + $output .= ' ! ! !'; + $output .= '

'; + } + + // $_POST , + else + { + // + $output .= '

'; + $output .= '

'; + $output .= ''; + $output .= ''; + $output .= '
'; + $output .= '

'; + } + + $output .= '

'; + $output .= ' '; + $output .= '

'; + + // , + return $output; + } + +?> diff --git a/catface_uninstaller.php b/catface_uninstaller.php new file mode 100644 index 0000000..01ff185 --- /dev/null +++ b/catface_uninstaller.php @@ -0,0 +1,96 @@ + + + + CatFace + + + + + +
+ +
+
 
+
+
+ +
+
+
 
+
+
+ + + + CatFace!'; + $output .= '

! catface_uninstaller.php !

'; + $output .= '

'; + $output .= ' , :'; + $output .= '

'; + $output .= '

'; + + // $_POST catface_uninstall, , + if(!empty($_POST['catface_uninstall'])) + { + // config + include_once ('engine/data/config.php'); + + // DLE API + include ('engine/api/api.class.php'); + + // category_face + $query = "DROP TABLE IF EXISTS `".PREFIX."_category_face`;"; + $dle_api->db->query($query); + + // + $dle_api->uninstall_admin_module('catface'); + + // + $output .= '

'; + $output .= ' !'; + $output .= '

'; + } + + // $_POST , + else + { + // + $output .= '

'; + $output .= '

'; + $output .= ''; + $output .= ''; + $output .= '
'; + $output .= '

'; + } + + $output .= '

'; + $output .= ' '; + $output .= '

'; + + // , + return $output; + } + +?> \ No newline at end of file diff --git a/engine/editor/catface_description.php b/engine/editor/catface_description.php new file mode 100644 index 0000000..e0ac1f9 --- /dev/null +++ b/engine/editor/catface_description.php @@ -0,0 +1,281 @@ + + +
+ + +
+HTML; +} + +else +{ + $p_name = urlencode($member_id['name']); + +echo << + +
+ + + +
+HTML; +} + +?> \ No newline at end of file diff --git a/engine/editor/catface_description_pages.php b/engine/editor/catface_description_pages.php new file mode 100644 index 0000000..3c2b443 --- /dev/null +++ b/engine/editor/catface_description_pages.php @@ -0,0 +1,281 @@ + + +
+ + +
+HTML; +} + +else +{ + $p_name = urlencode($member_id['name']); + +echo << + +
+ + + +
+HTML; +} + +?> \ No newline at end of file diff --git a/engine/inc/catface.php b/engine/inc/catface.php new file mode 100644 index 0000000..6e4a598 --- /dev/null +++ b/engine/inc/catface.php @@ -0,0 +1,533 @@ +dle_api = $dle_api; + } + + + /* + * CategoryFaceAdmin - , + */ + public function run() + { + // action ; action=list ( ) + $action = !empty($_REQUEST['action'])?$_REQUEST['action']:'list'; + + // action, + switch($action) + { + // + case 'list': + $output = $this->actionList(); + $headerText = ' '; + break; + + // + case 'form': + $output = $this->actionForm(); + $headerText = '<< '; + break; + + // + case 'save': + $output = $this->actionSave(); + $headerText = ' '; + break; + + // - action + default: + $headerText = '! !'; + break; + } + + $this->showOutput($headerText, $output); + } + + + /* + * + * @return string + */ + public function actionList() + { + return ' + + + + + + + + + + + + + '.$this->createCatsTable().' + +
ID
0 []
+ + + '; + } + + + /* + * + * @param $parentId - - + * @param $subLevelMarker - + * @return string + */ + public function createCatsTable($parentId = 0, $subLevelMarker = '') + { + // + $cats = $this->dle_api->load_table (PREFIX."_category", 'id, name', 'parentid = '.$parentId, true, 0, false, 'posi', 'ASC'); + + // $catsTable + $catsTable = ''; + + // - , + if($cats) + { + foreach($cats as $cat) + { + // + $catsTable .= ' + + '.$cat['id'].' +  '.$subLevelMarker.' '.$cat['name'].' + []   [] + '; + + // + $catsTable .= $this->createCatsTable($cat['id'], $subLevelMarker.'--'); + } + } + + return $catsTable; + } + + + + /* + * + * @return string + */ + public function actionForm() + { + // id + $id = (int)$_REQUEST['id']; + + // category_face + $categoryFace = $this->dle_api->load_table (PREFIX."_category_face", '*', 'category_id = '.$id, false); + + // + global $lang, $config, $user_group, $member_id, $dle_login_hash; + + // + include_once ENGINE_DIR . '/classes/parse.class.php'; + $parse = new ParseFilter( Array (), Array (), 1, 1 ); + + // wysiwyg + if($this->dle_api->dle_config['allow_admin_wysiwyg'] && ($this->dle_api->dle_config['allow_admin_wysiwyg'] != "no") ) + { + $categoryFace['description'] = $parse->decodeBBCodes($categoryFace['description'], true, $this->dle_api->dle_config['allow_admin_wysiwyg']); + $categoryFace['description_pages'] = $parse->decodeBBCodes($categoryFace['description_pages'], true, $this->dle_api->dle_config['allow_admin_wysiwyg']); + + ob_start(); + include (ENGINE_DIR . '/editor/catface_description.php'); + ob_implicit_flush(false); + $editor_description = ob_get_clean(); + + ob_start(); + include (ENGINE_DIR . '/editor/catface_description_pages.php'); + ob_implicit_flush(false); + $editor_description_pages = ob_get_clean(); + } + + // bbcode + else + { + $categoryFace['description'] = $parse->decodeBBCodes($categoryFace['description'], false); + $categoryFace['description_pages'] = $parse->decodeBBCodes($categoryFace['description_pages'], false); + + $bb_editor = true; + include (ENGINE_DIR . '/inc/include/inserttag.php'); + $editor_description = ' +
+ +
+ '.$bb_code.' +
+
'; + + $editor_description_pages = ' +
+ +
+ '.$bb_code.' +
+
'; + } + + return ' +
+
+
+ +
+
+
+ +
+
+ , tpl-:
+ - .
+ - .
+ - . +
+
+ +
+ +
+ +
+
+
+ +
+
+ - , .
+ - ( title), .
+ - , .. . +
+
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+
+ - .
+ - , .. . +
+
+
+
+ +
+ +
+
+ +
+ +
+ +
+
+
+ +
+
+ - , .
+ - meta- description ( title), .
+ C - , .. . +
+
+ + '.$editor_description.' + +
+ +
+
+ +
+
+ - .
+ - , .. . +
+
+ +
+ '.$editor_description_pages.' +
+ +
+ + + +
+ + + '; + } + + + /* + * SEO - category_face + * @return string + */ + public function actionSave() + { + // + global $dle_login_hash, $user_group, $member_id, $config; + + // + if( $_REQUEST['user_hash'] == "" or $_REQUEST['user_hash'] != $dle_login_hash ) + { + die( "Hacking attempt! User not found" ); + } + + // id + if($_POST['id'] == '') + { + die(' !'); + } + + // + include_once ENGINE_DIR . '/classes/parse.class.php'; + $parse = new ParseFilter( Array (), Array (), 1, 1 ); + + // + $id = $_POST['id']; + $name = !empty($_POST['name'])?$_POST['name']:''; + $name_pages = !empty($_POST['name_pages'])?$_POST['name_pages']:''; + $module_placement = !empty($_POST['module_placement'])?$_POST['module_placement']:'all_pages'; + $show_name = !empty($_POST['show_name'])?$_POST['show_name']:'show'; + $name_placement = !empty($_POST['name_placement'])?$_POST['name_placement']:'all_pages'; + $description = !empty($_POST['description'])?$_POST['description']:''; + $description_pages = !empty($_POST['description_pages'])?$_POST['description_pages']:''; + $show_description = !empty($_POST['show_description'])?$_POST['show_description']:'show'; + $description_placement = !empty($_POST['description_placement'])?$_POST['description_placement']:'first_page'; + + // + $id = intval($id); + // $name = $this->dle_api->db->safesql($parse->process(trim(htmlspecialchars($name)))); + $name = $this->dle_api->db->safesql ($parse->process (trim (htmlspecialchars ($name, ENT_COMPAT, $config['charset'])))); + // $name_pages = $this->dle_api->db->safesql($parse->process(trim(htmlspecialchars($name_pages)))); + $name_pages = $this->dle_api->db->safesql ($parse->process (trim (htmlspecialchars ($name_pages, ENT_COMPAT, $config['charset'])))); + $module_placement = $this->dle_api->db->safesql($parse->process(trim(htmlspecialchars($module_placement)))); + $show_name = $this->dle_api->db->safesql($parse->process(trim(htmlspecialchars($show_name)))); + $name_placement = $this->dle_api->db->safesql($parse->process(trim(htmlspecialchars($name_placement)))); + $show_description = $this->dle_api->db->safesql($parse->process(trim(htmlspecialchars($show_description)))); + $description_placement = $this->dle_api->db->safesql($parse->process(trim(htmlspecialchars($description_placement)))); + + // + if (!$user_group[$member_id['user_group']]['allow_html'] ) + { + $description = strip_tags($description); + $description_pages = strip_tags($description_pages); + } + if($this->dle_api->dle_config['allow_admin_wysiwyg'] && ($this->dle_api->dle_config['allow_admin_wysiwyg'] != "no")) + { + $parse->allow_code = false; + } + + $description = $parse->process($description); + $description_pages = $parse->process($description_pages); + + if($this->dle_api->dle_config['allow_admin_wysiwyg'] && ($this->dle_api->dle_config['allow_admin_wysiwyg'] != "no")) + { + $description = $this->dle_api->db->safesql($parse->BB_Parse($description)); + $description_pages = $this->dle_api->db->safesql($parse->BB_Parse($description_pages)); + } + else + { + $description = $this->dle_api->db->safesql($parse->BB_Parse($description, false)); + $description_pages = $this->dle_api->db->safesql($parse->BB_Parse($description_pages, false)); + } + + // , - + if($parse->not_allowed_text) + { + msg( "error", ' ', ' ', "javascript:history.go(-1)" ); + } + + // , category_face + $categoryFace = $this->dle_api->load_table (PREFIX."_category_face", 'category_id', 'category_id = '.$id, false); + + // , + if(!empty($categoryFace)) + { + $this->dle_api->db->query( + "UPDATE ".PREFIX."_category_face SET ". + "`name` = '$name', ". + "`name_pages` = '$name_pages', ". + "`module_placement` = '$module_placement', ". + "`show_name` = '$show_name', ". + "`name_placement` = '$name_placement', ". + "`description` = '$description', ". + "`description_pages` = '$description_pages', ". + "`show_description` = '$show_description', ". + "`description_placement` = '$description_placement' ". + "WHERE `category_id` = $id" + ); + } + + // , + else + { + $this->dle_api->db->query( + "INSERT INTO ".PREFIX."_category_face ". + "(`category_id`, `name`, `name_pages`, `module_placement`, `show_name`, `name_placement`, `description`, `description_pages`, `show_description`, `description_placement`) ". + "VALUES($id, '$name', '$name_pages', '$module_placement', '$show_name', '$name_placement', '$description', '$description_pages', '$show_description', '$description_placement')" + ); + } + + // + msg("info", ' !', ' !', '?mod=catface'); + } + + + /* + * + * @param $headerText - + * @param $output - + */ + public function showOutput($headerText, $output) + { + // + echoheader('CatFace', ' SEO- '); + echo ' + +'.($config['version_id'] >= 10.2 ? '' : '').' + +
+
+
'.$headerText.'
+ +
+ +
+ '.$output.' +
+
+ + '; + + // + echofooter(); + } + } + /*---End Of CategoryFaceAdmin Class---*/ + + // CategoryFaceAdmin + $CategoryFaceAdmin = new CategoryFaceAdmin; + + // + $CategoryFaceAdmin->run(); + +?> \ No newline at end of file diff --git a/engine/modules/catface.php b/engine/modules/catface.php new file mode 100644 index 0000000..59944ee --- /dev/null +++ b/engine/modules/catface.php @@ -0,0 +1,199 @@ +dle_config = $config; + $this->db = $db; + } + + + /* + * CategoryFace + */ + public function run() { + // + global $dle_module, $cat_info, $category_id; + + // $cat_info $category_id, + $categoryInfo = $cat_info; + $categoryId = $category_id; + + // ( ) + if (($dle_module == 'cat' && $categoryId > 0 && !empty($categoryInfo[$categoryId])) || ($dle_module == 'main')) { + // , + if ($dle_module == 'main') { + $categoryId = 0; + $categoryInfo[0]['name'] = $this->dle_config['home_title']; + $categoryInfo[0]['descr'] = $this->dle_config['description']; + } + + // + $page = intval($_REQUEST['cstart']); + + // + $output = false; + + $output = dle_cache('catface_', md5($categoryId . '_' . $page) . $this->dle_config['skin']); + + // , + if ($output !== false) { + $this->showOutput($output); + return; + } + + // category_face + $categoryFace = $this->db->super_query("SELECT * FROM " . PREFIX . "_category_face WHERE category_id = '" . $categoryId . "'"); + + // , + if (!empty($categoryFace) && $categoryFace['module_placement'] != 'nowhere' && ($categoryFace['module_placement'] == 'all_pages' || $page < 2)) { + // + if ($categoryFace['name_placement'] == 'all_pages' || $page < 2) { + switch ($categoryFace['show_name']) { + case 'show': + if ($categoryFace['name'] != '') { + $name = stripslashes($categoryFace['name']); + } + break; + case 'default': + if ($categoryInfo[$categoryId]['name'] != '') { + $name = stripslashes($categoryInfo[$categoryId]['name']); + } + break; + case 'hide': + break; + } + } + + // , + elseif ($page >= 2 && $categoryFace['name_pages'] != '') { + $name = stripslashes($categoryFace['name_pages']); + } + + // + if ($categoryFace['description_placement'] == 'all_pages' || $page < 2) { + switch ($categoryFace['show_description']) { + case 'show': + if ($categoryFace['description'] != '') { + $description = stripslashes($categoryFace['description']); + } + break; + case 'default': + if ($categoryInfo[$categoryId]['descr'] != '') { + $description = stripslashes($categoryInfo[$categoryId]['descr']); + } + break; + case 'hide': + break; + } + } + + // , + elseif ($page >= 2 && $categoryFace['description_pages'] != '') { + $description = stripslashes($categoryFace['description_pages']); + } + + $output = $this->applyTemplate('catface', + array( + '{name}' => $name, + '{description}' => $description, + ), + array( + "'\[show_name\\](.*?)\[/show_name\]'si" => !empty($name) ? "\\1" : '', + "'\[show_description\\](.*?)\[/show_description\]'si" => !empty($description) ? "\\1" : '', + ) + ); + } + + // , + else { + // ( +1 ). + $output = 'empty'; + } + } + + + // + create_cache('catface_', $output, md5($categoryId . '_' . $page) . $this->dle_config['skin']); + + + $this->showOutput($output); + } + + + /* + * + * @param $output - + */ + public function showOutput($output) { + if ($output != 'empty') { + echo $output; + } + } + + + /* + * tpl-, + * @param $template - , + * @param $vars - + * @param $vars - + * + * @return string tpl-, $data + */ + public function applyTemplate($template, $vars = array(), $blocks = array()) { + // $template.tpl, + if (!isset($tpl)) { + $tpl = new dle_template(); + $tpl->dir = TEMPLATE_DIR; + } + else { + $tpl->result[$template] = ''; + } + $tpl->load_template($template . '.tpl'); + + // + $tpl->set('', $vars); + + // + foreach ($blocks as $block => $value) { + $tpl->set_block($block, $value); + } + + // ( ;)) + $tpl->compile($template); + + // + return $tpl->result[$template]; + } +} + +/*---End Of CategoryFace Class---*/ + +// CategoryFace +$CategoryFace = new CategoryFace; + +// +$CategoryFace->run(); + +?> \ No newline at end of file diff --git a/engine/skins/application.css b/engine/skins/application.css new file mode 100644 index 0000000..193f6c2 --- /dev/null +++ b/engine/skins/application.css @@ -0,0 +1,1018 @@ +a { + background:transparent; +} +a:focus { + outline:thin dotted; +} +a:active,a:hover { + outline:0; +} +hr { + -moz-box-sizing:content-box; + box-sizing:content-box; + height:0; +} +small { + font-size:80%; +} +button,input,select,textarea { + font-size:100%; + margin:0; +} +button,input { + line-height:normal; +} +button,select { + text-transform:none; +} +button,html input[type="button"],input[type="reset"],input[type="submit"] { + -webkit-appearance:button; + cursor:pointer; +} +input[type="checkbox"],input[type="radio"] { + box-sizing:border-box; + padding:0; +} +button::-moz-focus-inner,input::-moz-focus-inner { + border:0; + padding:0; +} +textarea { + overflow:auto; + vertical-align:top; +} +table { + border-collapse:collapse; + border-spacing:0; +} + +table td[class*="col-"], table th[class*="col-"] { + float: none; + display: table-cell; +} + +*,*:before,*:after { + -webkit-box-sizing:border-box; + -moz-box-sizing:border-box; + box-sizing:border-box; +} +input,button,select,textarea { + font-size:inherit; + line-height:inherit; +} +a { + color:#78808a; + text-decoration:none; +} + a:hover, a:focus { + color:#5a6573; + text-decoration:underline; +} + a:focus { + outline:thin dotted #333; + outline:5px auto -webkit-focus-ring-color; + outline-offset:-2px; +} +hr { + margin-top:20px; + margin-bottom:20px; + border:0; + border-top:1px solid #eeeeee; +} +p { + margin:0 0 10px; +} +small,.small { + font-size:85%; +} +h1, h2, h3, h4, h5, h6,.h1, .h2, .h3, .h4, .h5, .h6 { + line-height:1.1; + color:inherit; +} + h1 small, h2 small, h3 small, h4 small, h5 small, h6 small, .h1 small, .h2 small, .h3 small, .h4 small, .h5 small, .h6 small { + line-height:1; + color:#999999; +} +h1,h2,h3 { + margin-top:20px; + margin-bottom:10px; +} + h1 small, h2 small, h3 small { + font-size:65%; +} +h4,h5,h6 { + margin-top:10px; + margin-bottom:10px; +} + h4 small, h5 small, h6 small { + font-size:75%; +} +h1, .h1 { + font-size:36px; +} +h2, .h2 { + font-size:30px; +} +h3, .h3 { + font-size:24px; +} +h4, .h4 { + font-size:18px; +} +h5, .h5 { + font-size:14px; +} +h6, .h6 { + font-size:12px; +} +.page-header { + padding-bottom:9px; + margin:40px 0 20px; + border-bottom:1px solid #eeeeee; +} +ul,ol { + margin-top:0; + margin-bottom:10px; +} + ul ul, ul ol, ol ul, ol ol { + margin-bottom:0; +} + +.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12,.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12,.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12,.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12 { + position:relative; + min-height:1px; + padding-left:15px; + padding-right:15px; +} +.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11 { + float:left; +} +.col-xs-1 { + width:8.33333%; +} +.col-xs-2 { + width:16.66667%; +} +.col-xs-3 { + width:25%; +} +.col-xs-4 { + width:33.33333%; +} +.col-xs-5 { + width:41.66667%; +} +.col-xs-6 { + width:50%; +} +.col-xs-7 { + width:58.33333%; +} +.col-xs-8 { + width:66.66667%; +} +.col-xs-9 { + width:75%; +} +.col-xs-10 { + width:83.33333%; +} +.col-xs-11 { + width:91.66667%; +} +.col-xs-12 { + width:100%; +} + + +table { + max-width:100%; + background-color:transparent; +} +th { + text-align:left; +} +.table { + width:100%; + margin-bottom:20px; +} + .table > thead > tr > th, .table > thead > tr > td, .table > tbody > tr > th, .table > tbody > tr > td, .table > tfoot > tr > th, .table > tfoot > tr > td { + padding:8px; + line-height:1.42857; + vertical-align:top; + border-top:1px solid #dddddd; +} + .table > thead > tr > th { + vertical-align:bottom; + border-bottom:2px solid #dddddd; +} + .table > caption + thead > tr:first-child > th, .table > caption + thead > tr:first-child > td, .table > colgroup + thead > tr:first-child > th, .table > colgroup + thead > tr:first-child > td, .table > thead:first-child > tr:first-child > th, .table > thead:first-child > tr:first-child > td { + border-top:0; +} + .table > tbody + tbody { + border-top:2px solid #dddddd; +} + .table .table { + background-color:white; +} + +label { + display:inline-block; + margin-bottom:5px; +} +input[type="radio"],input[type="checkbox"] { + margin:4px 0 0; + margin-top:1px; + line-height:normal; +} +input[type="file"] { + display:block; +} +select[multiple],select[size] { + height:auto; +} +select optgroup { + font-size:inherit; + font-style:inherit; +} +input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus { + outline:thin dotted #333; + outline:5px auto -webkit-focus-ring-color; + outline-offset:-2px; +} + +.label { + display:inline; + padding:.2em .6em .3em; + font-size:75%; + line-height:1; + color:white; + text-align:center; + white-space:nowrap; + vertical-align:baseline; + border-radius:.25em; +} + .label[href]:hover, .label[href]:focus { + color:white; + text-decoration:none; + cursor:pointer; +} + .label:empty { + display:none; +} +.clearfix:before, .clearfix:after { + content:" "; + /* 1 */ + display:table; + /* 2 */ + } +.clearfix:after { + clear:both; +} +.pull-right { + float:right !important; +} +.pull-left { + float:left !important; +} + +* { + margin: 0px; + padding: 0px; + text-decoration: none; + outline: none; } + + +a { + color: #78808a; } + + a:hover, a:active, a:focus { + cursor: pointer; + outline: 0px none; + text-decoration: none; + color: #5a6573; } + + +.label { + font-size: 10px; + text-shadow: none; } + + + +.main-content { + position: relative; + margin-left: 251px; } + + + +h1, h2, h3, h4, h5, h6, th { + color: #5f5f5f; + } + + + + +.note { + color: #909090; + font-style: italic; + font-size: 11px; + margin-bottom: 10px; } + + +.box { + box-shadow: 0 0 10px 0 #cccccc; + background: #fbfbfb; + border: 1px solid #cdcdcd; + border-radius: 3px; + margin-bottom: 20px; } + + .box .box-header, .box .box-footer { + *zoom: 1; + background: #eaeaea; + background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZkZmRmZCIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2VhZWFlYSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); + background-size: 100%; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fdfdfd), color-stop(100%, #eaeaea)); + background-image: -webkit-linear-gradient(top, #fdfdfd, #eaeaea); + background-image: -moz-linear-gradient(top, #fdfdfd, #eaeaea); + background-image: -o-linear-gradient(top, #fdfdfd, #eaeaea); + background-image: linear-gradient(top, #fdfdfd, #eaeaea); + text-shadow: 0 1px white; + border-bottom: 1px solid #CDCDCD; + color: #636363; + } + + .box .box-header:before, .box .box-header:after, .box .box-footer:before, .box .box-footer:after { + display: table; + content: ""; + line-height: 0; } + + .box .box-header:after, .box .box-footer:after { + clear: both; } + + .box .box-header .title, .box .box-footer .title { + float: left; + display: block; + padding: 10px; + font-size: 12px; + } + + .box .box-header .box-toolbar, .box .box-footer .box-toolbar { + margin: 0; + padding: 0; + float: right; + list-style: none; } + + .box .box-header .box-toolbar .ibutton-container, .box .box-footer .box-toolbar .ibutton-container { + margin-top: 6px; } + + .box .box-header .box-toolbar > li, .box .box-footer .box-toolbar > li { + position: relative; + float: left; + margin-left: 15px; + line-height: 37px; + padding-right: 10px; + color: #636363; + font-size: 12px; } + + .box .box-header .box-toolbar > li ul, .box .box-footer .box-toolbar > li ul { + left: auto; + right: 0; } + + .box .box-header .box-toolbar > li.toolbar-link, .box .box-footer .box-toolbar > li.toolbar-link { + padding-right: 0; } + + .box .box-header .box-toolbar > li.toolbar-link > a, .box .box-footer .box-toolbar > li.toolbar-link > a { + border-left: 1px solid #cecece; + height: 37px; + line-height: 37px; + display: block; + padding: 0 10px; } + + .box .box-header .box-toolbar > li.toolbar-link > a i, .box .box-footer .box-toolbar > li.toolbar-link > a i { + font-size: 16px; } + + .box .box-header .box-toolbar > li.toolbar-link > a:hover, .box .box-footer .box-toolbar > li.toolbar-link > a:hover { + background: #efefef; + background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2VmZWZlZiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); + background-size: 100%; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(100%, #efefef)); + background-image: -webkit-linear-gradient(top, #ffffff, #efefef); + background-image: -moz-linear-gradient(top, #ffffff, #efefef); + background-image: -o-linear-gradient(top, #ffffff, #efefef); + background-image: linear-gradient(top, #ffffff, #efefef); } + + .box .box-header .box-toolbar > li.toolbar-link > a:active, .box .box-footer .box-toolbar > li.toolbar-link > a:active { + background: #e5e5e5; } + + .box .box-header .box-toolbar > li > i, .box .box-footer .box-toolbar > li > i { + font-size: 14px; + height: 37px; + line-height: 37px; } + + .box .box-header .box-toolbar > li.open > a, .box .box-footer .box-toolbar > li.open > a { + background: #eee; } + + .box .box-header { + -moz-border-radius-topright: 3px; + -webkit-border-top-right-radius: 3px; + border-top-right-radius: 3px; + -moz-border-radius-topleft: 3px; + -webkit-border-top-left-radius: 3px; + border-top-left-radius: 3px; } + + .box .box-footer { + -moz-border-radius-bottomright: 3px; + -webkit-border-bottom-right-radius: 3px; + border-bottom-right-radius: 3px; + -moz-border-radius-bottomleft: 3px; + -webkit-border-bottom-left-radius: 3px; + border-bottom-left-radius: 3px; + border-bottom: none; + border-top: 1px solid #dddddd; } + + .box .box-footer .pagination { + margin: 0; } + + .box .box-footer.flat { + border-top: none; + background: #f1f1f1; + background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZiZmJmYiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2YxZjFmMSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); + background-size: 100%; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fbfbfb), color-stop(100%, #f1f1f1)); + background-image: -webkit-linear-gradient(top, #fbfbfb, #f1f1f1); + background-image: -moz-linear-gradient(top, #fbfbfb, #f1f1f1); + background-image: -o-linear-gradient(top, #fbfbfb, #f1f1f1); + background-image: linear-gradient(top, #fbfbfb, #f1f1f1); } + + +.box-list { + list-style: none; + margin: 0; } + + .box-list > li { + line-height: 24px; + *zoom: 1; + background: #f1f1f1; + background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZiZmJmYiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2YxZjFmMSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); + background-size: 100%; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fbfbfb), color-stop(100%, #f1f1f1)); + background-image: -webkit-linear-gradient(top, #fbfbfb, #f1f1f1); + background-image: -moz-linear-gradient(top, #fbfbfb, #f1f1f1); + background-image: -o-linear-gradient(top, #fbfbfb, #f1f1f1); + background-image: linear-gradient(top, #fbfbfb, #f1f1f1); + text-shadow: 0 1px white; + padding: 10px; + border-bottom: 1px solid #ddd; } + + .box-list > li:before, .box-list > li:after { + display: table; + content: ""; + line-height: 0; } + + .box-list > li:after { + clear: both; } + + .box-list > li:last-child { + border-bottom: none; } + + .box-list .fields li { + line-height: 23px; } + + +.box-section { + border-bottom: 1px solid #ddd; + margin-left: 0; + margin-right: 0; + border-top: 1px solid #fff; + padding: 15px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; } + + .box-section:last-child { + border-bottom: none; } + + + +.box .box-header .nav { + margin-bottom: 0; } + +.box .box-header .nav-tabs + .title { + float: right; } + +.box .box-header .nav-tabs { + border-bottom: none; } + + .box .box-header .nav-tabs > .active > a, .box .box-header .nav-tabs > .active > a:hover { + background: #fbfbfb; + border-left-color: #dddddd; + border-right-color: #dddddd; + border-top-color: transparent; + border-radius: 0; } + + .box .box-header .nav-tabs.nav-tabs-left { + float: left; } + + .box .box-header .nav-tabs.nav-tabs-left li:first-child a { + border-left: 0; + -moz-border-radius-topleft: 3px; + -webkit-border-top-left-radius: 3px; + border-top-left-radius: 3px; } + + .box .box-header .nav-tabs.nav-tabs-right { + float: right; } + + .box .box-header .nav-tabs.nav-tabs-right li:last-child a { + border-right: 0; + -moz-border-radius-topright: 3px; + -webkit-border-top-right-radius: 3px; + border-top-right-radius: 3px; + margin-right: 0; } + +.box .box-header .nav > li > a:hover { + border-color: transparent; + background: none; } + + +.box-header .tooltip { + line-height: 20px !important; + text-shadow: none; } + +.box-header .progress { + margin-top: 15px; } + +.box-header .input-with-submit input { + margin-bottom: 0; + margin-top: 5px; } + + + + +.to-right .dropdown-menu { + top: 0px; + left: 100%; + margin-left: 10px; + border-radius: 4px; + float: none; + width: 100%; + box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.1) inset; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; } + + .to-right .dropdown-menu:before { + content: ''; + display: inline-block; + border-top: 7px solid transparent !important; + border-left: 7px solid transparent !important; + border-right: 8px solid #11161A; + border-bottom: 7px solid transparent !important; + position: absolute; + top: 12px; + left: -15px; } + + + + + + + +.box form { + padding: 0; } + + +form { + margin-bottom: 0; } + + +.input-group, .input-group { + height: 36px; + line-height: 36px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + width: 100%; + position: relative; + z-index: 1; } + + .input-group .input-group-addon i, .input-group .input-group-addon i { + line-height: 26px; } + + .input-group *, .input-group * { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; } + + .input-group a.input-group-addon, .input-group span.input-group-addon, .input-group a.input-group-addon, .input-group span.input-group-addon { + min-width: 36px; + color: #5a6573; + position: absolute; + height: 100%; + z-index: 2; + box-shadow: inset 0 1px 2px white; + border: 1px solid #ccc; + background: #eaeaea; + background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZkZmRmZCIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2VhZWFlYSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); + background-size: 100%; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fdfdfd), color-stop(100%, #eaeaea)); + background-image: -webkit-linear-gradient(top, #fdfdfd, #eaeaea); + background-image: -moz-linear-gradient(top, #fdfdfd, #eaeaea); + background-image: -o-linear-gradient(top, #fdfdfd, #eaeaea); + background-image: linear-gradient(top, #fdfdfd, #eaeaea); + padding-left: 10px; + padding-right: 10px; } + + .input-group a.input-group-addon:active, .input-group span.input-group-addon:active, .input-group a.input-group-addon:active, .input-group span.input-group-addon:active { + background: #eee; } + + .input-group ul.input-group-addon, .input-group ul.input-group-addon { + list-style: none; + position: absolute; + z-index: 2; + background: none; + border: none; + padding: 0; + margin: 0; + height: 100%; + top: 1px; + right: 2px; } + + .input-group ul.input-group-addon li, .input-group ul.input-group-addon li { + float: left; + margin-left: 10px; + line-height: 32px; + height: 32px; } + + .input-group ul.input-group-addon li a, .input-group ul.input-group-addon li button, .input-group ul.input-group-addon li a, .input-group ul.input-group-addon li button { + vertical-align: middle; } + + .input-group ul.input-group-addon li a.btn, .input-group ul.input-group-addon li button.btn, .input-group ul.input-group-addon li a.btn, .input-group ul.input-group-addon li button.btn { + border-radius: 3px; } + + .input-group ul.input-group-addon li .btn, .input-group ul.input-group-addon li .btn { + padding: 0; + line-height: 25px; + height: 25px; + padding-left: 10px; + padding-right: 10px; + margin-right: 5px; } + + .input-group input[type="text"], .input-group input[type="password"], .input-group input[type="email"], .input-group input[type="number"], .input-group input[type="text"], .input-group input[type="password"], .input-group input[type="email"], .input-group input[type="number"] { + height: 36px; + width: 100%; + z-index: 1; + border-radius: 4px; } + + +.box .input-group, .box .input-group { + margin-bottom: 0; } + + + + + + + +input[type="text"] { + box-shadow: none; + border-radius: 0; + font-size: 12px; + color: #858585; + padding: 0 0 0 5px; + border: 1px solid #d7d7d7; + display: inline-block; + background: #fdfdfd; + height: 26px; + line-height: 26px; } + +textarea { + box-shadow: none; + border-radius: 0; + font-size: 12px; + color: #474747; + padding: 0 0 0 5px; + border: 1px solid #d7d7d7; + display: inline-block; + background: #fdfdfd; + line-height: 20px; } + + input[type="text"]:focus { + box-shadow: none; + border: 1px solid #68A6CE; } + + textarea:focus { + box-shadow: none; + } + +textarea { + height: auto; } + + +label { + font-size: 12px; + color: #5F5F5F; } + + + + +.input-with-submit { + position: relative; } + + .input-with-submit button { + background: transparent; + border: none; + position: absolute; + right: 2px; + top: 7px; + height: 22px; + line-height: 22px; } + + .input-with-submit i { + color: #909090; } + + + +.table-normal { + margin-bottom: 0; + color: #5a6573; } + + .table-normal tbody td, .table-normal thead td { + border-left: 1px solid #eaebef; } + + .table-normal tbody td:first-child, .table-normal thead td:first-child { + border-left: none; } + + .table-normal tbody td { + border-top: 1px solid #eaebef; } + + .table-normal thead td { + text-align: center; + font-size: 11px; + padding: 3px 5px 2px 5px; + color: #666; + height: 25px; + line-height: 25px; + font-size: 12px; + text-shadow: 0 1px rgba(255, 255, 255, 0.5); + background: #eaeaea; + background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZkZmRmZCIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2VhZWFlYSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); + background-size: 100%; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fdfdfd), color-stop(100%, #eaeaea)); + background-image: -webkit-linear-gradient(top, #fdfdfd, #eaeaea); + background-image: -moz-linear-gradient(top, #fdfdfd, #eaeaea); + background-image: -o-linear-gradient(top, #fdfdfd, #eaeaea); + background-image: linear-gradient(top, #fdfdfd, #eaeaea); + border-left: 1px solid #d1d2da; + border-right: 1px solid #d1d2da; + border-bottom: 1px solid #d1d2da; } + + .table-normal thead td:first-child { + border-left: none; } + + .table-normal thead td:last-child { + border-right: none; } + + .table-normal tbody td { + padding: 7px 11px; + vertical-align: middle; } + + .table-normal tbody tr { + border-top: 1px solid #eaebef; } + + .table-normal tbody tr:nth-child(even) { + background: #F3F4F8; } + + .table-normal .icon { + width: 30px; + text-align: center; } + +.help-button{ + display:inline-block; + height:20px; + width:20px; + line-height:17px; + text-align:center; + padding:0; + background-color:#418ce4; + color:#FFF; + font-size:12px; + cursor:pointer; + margin-left:4px;border-radius:100%; + border-color:#FFF; + border:2px solid #FFF;-webkit-box-shadow:0 1px 0 1px rgba(0,0,0,0.2); + box-shadow:0 1px 0 1px rgba(0,0,0,0.2); +} + +.editor_button { + float:left; + cursor:pointer; + padding-left: 2px; + padding-right: 2px; +} + +.editor_buttoncl { + float:left; + cursor:pointer; + padding-left: 1px; + padding-right: 1px; + border-left: 1px solid #BBB; + border-right: 1px solid #BBB; +} + +.editbclose { + float:right; + cursor:pointer; +} + +.findrelated { + width:600px; + background: #ffc;border:1px solid #9E9E9E; + padding: 5px;margin-top: 7px; + margin-right: 10px; +} + +.settingstd { + vertical-align:middle !important; +} +.settingsgr td { + vertical-align:middle !important; +} + + + +.form-group { + margin-bottom:15px; +} +.form-horizontal .form-group { + margin-left:-15px; + margin-right:-15px; +} + .form-horizontal .form-group:before, .form-horizontal .form-group:after { + content:" "; + /* 1 */ + display:table; + /* 2 */ + } + .form-horizontal .form-group:after { + clear:both; +} + + +.btn { + color: #fff; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + -ms-border-radius: 2px; + -o-border-radius: 2px; + border-radius: 2px; + font-size: 11px; + font-weight: 600; + text-shadow: 0 -1px #6f6f6f; } + + .btn:hover, .btn:active, .btn:focus { + color: #fff; } + + .btn.btn-lg { + font-size: 12px; } + + .btn.btn-default { + border: 1px solid #d4d4d4; + -webkit-box-shadow: inset 0 1px 2px white; + -moz-box-shadow: inset 0 1px 2px white; + box-shadow: inset 0 1px 2px white; + background: #e9e9e9; + background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZkZmRmZCIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2U5ZTllOSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); + background-size: 100%; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fdfdfd), color-stop(100%, #e9e9e9)); + background-image: -webkit-linear-gradient(top, #fdfdfd, #e9e9e9); + background-image: -moz-linear-gradient(top, #fdfdfd, #e9e9e9); + background-image: -o-linear-gradient(top, #fdfdfd, #e9e9e9); + background-image: linear-gradient(top, #fdfdfd, #e9e9e9); } + + .btn.btn-red { + border: 1px solid #a54747; + -webkit-box-shadow: inset 0 1px 2px #cd8b8b; + -moz-box-shadow: inset 0 1px 2px #cd8b8b; + box-shadow: inset 0 1px 2px #cd8b8b; + background: #b95d5d; + background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2M1Nzk3OSIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2I5NWQ1ZCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); + background-size: 100%; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #c57979), color-stop(100%, #b95d5d)); + background-image: -webkit-linear-gradient(top, #c57979, #b95d5d); + background-image: -moz-linear-gradient(top, #c57979, #b95d5d); + background-image: -o-linear-gradient(top, #c57979, #b95d5d); + background-image: linear-gradient(top, #c57979, #b95d5d); } + + .btn.btn-green { + border: 1px solid #6d963b; + -webkit-box-shadow: inset 0 1px 2px #a2c873; + -moz-box-shadow: inset 0 1px 2px #a2c873; + box-shadow: inset 0 1px 2px #a2c873; + background: #82b346; + background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzk2YzE2MSIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzgyYjM0NiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); + background-size: 100%; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #96c161), color-stop(100%, #82b346)); + background-image: -webkit-linear-gradient(top, #96c161, #82b346); + background-image: -moz-linear-gradient(top, #96c161, #82b346); + background-image: -o-linear-gradient(top, #96c161, #82b346); + background-image: linear-gradient(top, #96c161, #82b346); } + + .btn.btn-blue { + border: 1px solid #337ca1; + -webkit-box-shadow: inset 0 1px 2px #6eb0d1; + -moz-box-shadow: inset 0 1px 2px #6eb0d1; + box-shadow: inset 0 1px 2px #6eb0d1; + background: #3d94c0; + background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzViYTVjYiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzNkOTRjMCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); + background-size: 100%; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #5ba5cb), color-stop(100%, #3d94c0)); + background-image: -webkit-linear-gradient(top, #5ba5cb, #3d94c0); + background-image: -moz-linear-gradient(top, #5ba5cb, #3d94c0); + background-image: -o-linear-gradient(top, #5ba5cb, #3d94c0); + background-image: linear-gradient(top, #5ba5cb, #3d94c0); } + + .btn.btn-gray { + border: 1px solid #626e7f; + -webkit-box-shadow: inset 0 1px 2px #9aa4b1; + -moz-box-shadow: inset 0 1px 2px #9aa4b1; + box-shadow: inset 0 1px 2px #9aa4b1; + background: #758294; + background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzhjOTdhNiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzc1ODI5NCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); + background-size: 100%; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #8c97a6), color-stop(100%, #758294)); + background-image: -webkit-linear-gradient(top, #8c97a6, #758294); + background-image: -moz-linear-gradient(top, #8c97a6, #758294); + background-image: -o-linear-gradient(top, #8c97a6, #758294); + background-image: linear-gradient(top, #8c97a6, #758294); } + + .btn.btn-black { + border: 1px solid #5a5a5a; + -webkit-box-shadow: inset 0 1px 2px #909090; + -moz-box-shadow: inset 0 1px 2px #909090; + box-shadow: inset 0 1px 2px #909090; + background: #6f6f6f; + background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzgzODM4MyIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzZmNmY2ZiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); + background-size: 100%; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #838383), color-stop(100%, #6f6f6f)); + background-image: -webkit-linear-gradient(top, #838383, #6f6f6f); + background-image: -moz-linear-gradient(top, #838383, #6f6f6f); + background-image: -o-linear-gradient(top, #838383, #6f6f6f); + background-image: linear-gradient(top, #838383, #6f6f6f); } + + .btn.btn-lightblue { + border: 1px solid #3692bb; + -webkit-box-shadow: inset 0 1px 2px #81bfdb; + -moz-box-shadow: inset 0 1px 2px #81bfdb; + box-shadow: inset 0 1px 2px #81bfdb; + background: #4da5cc; + background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzZkYjVkNSIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzRkYTVjYyIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); + background-size: 100%; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #6db5d5), color-stop(100%, #4da5cc)); + background-image: -webkit-linear-gradient(top, #6db5d5, #4da5cc); + background-image: -moz-linear-gradient(top, #6db5d5, #4da5cc); + background-image: -o-linear-gradient(top, #6db5d5, #4da5cc); + background-image: linear-gradient(top, #6db5d5, #4da5cc); } + + .btn.btn-gold { + border: 1px solid #a87a27; + -webkit-box-shadow: inset 0 1px 2px #daaf61; + -moz-box-shadow: inset 0 1px 2px #daaf61; + box-shadow: inset 0 1px 2px #daaf61; + background: #c9922f; + background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2Q1YTQ0YyIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2M5OTIyZiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); + background-size: 100%; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #d5a44c), color-stop(100%, #c9922f)); + background-image: -webkit-linear-gradient(top, #d5a44c, #c9922f); + background-image: -moz-linear-gradient(top, #d5a44c, #c9922f); + background-image: -o-linear-gradient(top, #d5a44c, #c9922f); + background-image: linear-gradient(top, #d5a44c, #c9922f); } + + .btn.btn-sea { + border: 1px solid #39534f; + -webkit-box-shadow: inset 0 1px 2px #64928d; + -moz-box-shadow: inset 0 1px 2px #64928d; + box-shadow: inset 0 1px 2px #64928d; + background: #496b67; + background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzVhODM3ZSIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzQ5NmI2NyIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); + background-size: 100%; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #5a837e), color-stop(100%, #496b67)); + background-image: -webkit-linear-gradient(top, #5a837e, #496b67); + background-image: -moz-linear-gradient(top, #5a837e, #496b67); + background-image: -o-linear-gradient(top, #5a837e, #496b67); + background-image: linear-gradient(top, #5a837e, #496b67); } + + + .btn.btn-brown { + border: 1px solid #856733; + -webkit-box-shadow: inset 0 1px 2px #c29e61; + -moz-box-shadow: inset 0 1px 2px #c29e61; + box-shadow: inset 0 1px 2px #c29e61; + background: #a27e3f; + background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2JiOTM0ZiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2EyN2UzZiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); + background-size: 100%; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #bb934f), color-stop(100%, #a27e3f)); + background-image: -webkit-linear-gradient(top, #bb934f, #a27e3f); + background-image: -moz-linear-gradient(top, #bb934f, #a27e3f); + background-image: -o-linear-gradient(top, #bb934f, #a27e3f); + background-image: linear-gradient(top, #bb934f, #a27e3f); } + \ No newline at end of file diff --git a/engine/skins/images/catface.png b/engine/skins/images/catface.png new file mode 100644 index 0000000000000000000000000000000000000000..f43cd16660b8baf370a956261af2a95c72566328 GIT binary patch literal 14380 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 *6FVFNi4Xz= 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 +[/show_name] + +[show_description] +
{description}
+[/show_description] \ No newline at end of file