1
0
Fork 0
mirror of https://github.com/Oreolek/ifhub.club.git synced 2024-07-01 05:55:02 +03:00

Merge remote-tracking branch 'livestreet/master' into comment2

* livestreet/master:
  added logout function
  Frontend framework
  Move vendor js libs to framework folder
  fix count users blog
  fix даты рождения в профиле с учетом часовых поясов
  fix бага с прямым эфиром при удалении блога
  fix mailer return-path
  fix Issue #252
  Issue #246
  Issue #223
  Email notifications: grammatically and stylistically revised English version
  fix Issue #245
  fix  Issue #238
  fix Issue #228

Conflicts:
	classes/actions/ActionBlog.class.php
This commit is contained in:
vatseek 2013-04-05 21:23:43 +03:00
commit 6f9dff2d01
549 changed files with 53293 additions and 63164 deletions

View file

@ -1200,6 +1200,13 @@ class ActionBlog extends Action {
$this->Message_AddErrorSingle($this->Lang_Get('system_error'),$this->Lang_Get('error'));
return;
}
/**
* Есть доступ к комментариям этого топика? Закрытый блог?
*/
if (!$this->ACL_IsAllowShowBlog($oTopic->getBlog(),$this->oUserCurrent)) {
$this->Message_AddErrorSingle($this->Lang_Get('system_error'),$this->Lang_Get('error'));
return;
}
$idCommentLast=getRequestStr('idCommentLast',null,'post');
$selfIdComment=getRequestStr('selfIdComment',null,'post');

View file

@ -317,7 +317,7 @@ class ActionLink extends Action {
/**
* Добавляем автора топика в подписчики на новые комментарии к этому топику
*/
$this->Subscribe_AddSubscribeSimple('topic_new_comment',$oTopic->getId(),$this->oUserCurrent->getMail());
$this->Subscribe_AddSubscribeSimple('topic_new_comment',$oTopic->getId(),$this->oUserCurrent->getMail(),$this->oUserCurrent->getId());
//Делаем рассылку спама всем, кто состоит в этом блоге
if ($oTopic->getPublish()==1 and $oBlog->getType()!='personal') {
$this->Topic_SendNotifyTopicNew($oBlog,$oTopic,$this->oUserCurrent);

View file

@ -539,7 +539,7 @@ class ActionPhotoset extends Action {
/**
* Добавляем автора топика в подписчики на новые комментарии к этому топику
*/
$this->Subscribe_AddSubscribeSimple('topic_new_comment',$oTopic->getId(),$this->oUserCurrent->getMail());
$this->Subscribe_AddSubscribeSimple('topic_new_comment',$oTopic->getId(),$this->oUserCurrent->getMail(),$this->oUserCurrent->getId());
/**
* Делаем рассылку спама всем, кто состоит в этом блоге
*/

View file

@ -1250,6 +1250,13 @@ class ActionProfile extends Action {
$oUser->setMail($oChangemail->getMailTo());
$this->User_Update($oUser);
/**
* Меняем емайл в подписках
*/
if ($oChangemail->getMailFrom()) {
$this->Subscribe_ChangeSubscribeMail($oChangemail->getMailFrom(),$oChangemail->getMailTo(),$oUser->getId());
}
$this->Viewer_Assign('sText',$this->Lang_Get('settings_profile_mail_change_ok',array('mail'=>htmlspecialchars($oChangemail->getMailTo()))));
$this->SetTemplateAction('changemail_confirm');
}

View file

@ -294,7 +294,7 @@ class ActionQuestion extends Action {
/**
* Добавляем автора топика в подписчики на новые комментарии к этому топику
*/
$this->Subscribe_AddSubscribeSimple('topic_new_comment',$oTopic->getId(),$this->oUserCurrent->getMail());
$this->Subscribe_AddSubscribeSimple('topic_new_comment',$oTopic->getId(),$this->oUserCurrent->getMail(),$this->oUserCurrent->getId());
//Делаем рассылку спама всем, кто состоит в этом блоге
if ($oTopic->getPublish()==1 and $oBlog->getType()!='personal') {
$this->Topic_SendNotifyTopicNew($oBlog,$oTopic,$this->oUserCurrent);

View file

@ -125,7 +125,7 @@ class ActionSubscribe extends Action {
/**
* Если подписка еще не существовала, то создаем её
*/
if ($oSubscribe=$this->Subscribe_AddSubscribeSimple($sTargetType,$sTargetId,$sMail)) {
if ($oSubscribe=$this->Subscribe_AddSubscribeSimple($sTargetType,$sTargetId,$sMail,$this->oUserCurrent ? $this->oUserCurrent->getId() : null)) {
$oSubscribe->setStatus($iValue);
$this->Subscribe_UpdateSubscribe($oSubscribe);
$this->Message_AddNotice($this->Lang_Get('subscribe_change_ok'),$this->Lang_Get('attention'));

View file

@ -341,7 +341,7 @@ class ActionTopic extends Action {
/**
* Добавляем автора топика в подписчики на новые комментарии к этому топику
*/
$this->Subscribe_AddSubscribeSimple('topic_new_comment',$oTopic->getId(),$this->oUserCurrent->getMail());
$this->Subscribe_AddSubscribeSimple('topic_new_comment',$oTopic->getId(),$this->oUserCurrent->getMail(),$this->oUserCurrent->getId());
/**
* Делаем рассылку спама всем, кто состоит в этом блоге
*/

View file

@ -83,7 +83,13 @@ class ModuleACL extends Module {
* @param ModuleUser_EntityUser $oUser Пользователь
* @return bool
*/
public function CanPostComment(ModuleUser_EntityUser $oUser) {
public function CanPostComment(ModuleUser_EntityUser $oUser,$oTopic=null) {
/**
* Проверяем на закрытый блог
*/
if ($oTopic and !$this->IsAllowShowBlog($oTopic->getBlog(),$oUser)) {
return false;
}
if ($oUser->getRating()>=Config::Get('acl.create.comment.rating')) {
return true;
}
@ -270,6 +276,7 @@ class ModuleACL extends Module {
*
* @param ModuleBlog_EntityBlog $oBlog Блог
* @param ModuleUser_EntityUser $oUser Пользователь
* @return bool
*/
public function IsAllowBlog($oBlog,$oUser) {
if ($oUser->isAdministrator()) {
@ -288,6 +295,28 @@ class ModuleACL extends Module {
}
return false;
}
/**
* Проверяет можно или нет юзеру просматривать блог
*
* @param ModuleBlog_EntityBlog $oBlog Блог
* @param ModuleUser_EntityUser $oUser Пользователь
* @return bool
*/
public function IsAllowShowBlog($oBlog,$oUser) {
if ($oBlog->getType()!='close') {
return true;
}
if ($oUser->isAdministrator()) {
return true;
}
if ($oBlog->getOwnerId()==$oUser->getId()) {
return true;
}
if ($oBlogUser=$this->Blog_GetBlogUserByBlogIdAndUserId($oBlog->getId(),$oUser->getId()) and $oBlogUser->getUserRole()>ModuleBlog::BLOG_USER_ROLE_GUEST) {
return true;
}
return false;
}
/**
* Проверяет можно или нет пользователю редактировать данный топик
*

View file

@ -782,21 +782,13 @@ class ModuleBlog extends Module {
* Удаляем топики
*/
foreach ($aTopicIds as $iTopicId) {
$this->Cache_Delete("topic_{$iTopicId}");
if(Config::Get('db.tables.engine')=="InnoDB") {
$this->Topic_DeleteTopicAdditionalData($iTopicId);
} else {
$this->Topic_DeleteTopic($iTopicId);
}
$this->Topic_DeleteTopic($iTopicId);
}
}
/**
* Удаляем связи пользователей блога.
*/
if(Config::Get('db.tables.engine')!="InnoDB"){
$this->oMapperBlog->DeleteBlogUsersByBlogId($iBlogId);
}
$this->oMapperBlog->DeleteBlogUsersByBlogId($iBlogId);
/**
* Удаляем голосование за блог
*/

View file

@ -154,7 +154,7 @@ class ModuleNotify extends Module {
$this->Lang_Get('notify_subject_reactvation'),
array(
'oUser' => $oUser,
)
),null,true
);
}
/**
@ -171,7 +171,7 @@ class ModuleNotify extends Module {
array(
'oUser' => $oUser,
'sPassword' => $sPassword,
)
),null,true
);
}
/**
@ -188,7 +188,7 @@ class ModuleNotify extends Module {
array(
'oUser' => $oUser,
'sPassword' => $sPassword,
)
),null,true
);
}
/**
@ -330,7 +330,7 @@ class ModuleNotify extends Module {
array(
'oUser' => $oUser,
'oReminder' => $oReminder,
)
),null,true
);
}
/**
@ -347,7 +347,7 @@ class ModuleNotify extends Module {
array(
'oUser' => $oUser,
'sNewPassword' => $sNewPassword,
)
),null,true
);
}
/**
@ -398,8 +398,9 @@ class ModuleNotify extends Module {
* @param string $sSubject Тема письма
* @param array $aAssign Ассоциативный массив для загрузки переменных в шаблон письма
* @param string|null $sPluginName Плагин из которого происходит отправка
* @param bool $bForceSend Отправлять сразу, даже при опции module.notify.delayed = true
*/
public function Send($oUserTo,$sTemplate,$sSubject,$aAssign=array(),$sPluginName=null) {
public function Send($oUserTo,$sTemplate,$sSubject,$aAssign=array(),$sPluginName=null,$bForceSend=false) {
if ($oUserTo instanceof ModuleUser_EntityUser) {
$sMail=$oUserTo->getMail();
$sName=$oUserTo->getLogin();
@ -422,7 +423,7 @@ class ModuleNotify extends Module {
* то добавляем задание в массив. В противном случае,
* сразу отсылаем на email
*/
if(Config::Get('module.notify.delayed')) {
if(Config::Get('module.notify.delayed') and !$bForceSend) {
$oNotifyTask=Engine::GetEntity(
'Notify_Task',
array(

View file

@ -148,7 +148,7 @@ class ModuleSubscribe extends Module {
* @param string $sMail Емайл
* @return ModuleSubscribe_EntitySubscribe|bool
*/
public function AddSubscribeSimple($sTargetType,$sTargetId,$sMail) {
public function AddSubscribeSimple($sTargetType,$sTargetId,$sMail,$sUserId=null) {
if (!$sMail) {
return false;
}
@ -161,6 +161,12 @@ class ModuleSubscribe extends Module {
$oSubscribe->setKey(func_generator(32));
$oSubscribe->setIp(func_getIp());
$oSubscribe->setStatus(1);
/**
* Если только для авторизованных, то добавляем user_id
*/
if ($sUserId and !$this->IsAllowTargetForGuest($sTargetType)) {
$oSubscribe->setUserId($sUserId);
}
$this->Subscribe_AddSubscribe($oSubscribe);
}
return $oSubscribe;
@ -174,6 +180,18 @@ class ModuleSubscribe extends Module {
public function UpdateSubscribe($oSubscribe) {
return $this->oMapper->UpdateSubscribe($oSubscribe);
}
/**
* Смена емайла в подписках
*
* @param string $sMailOld Старый емайл
* @param string $sMailNew Новый емайл
* @param int|null $iUserId Id пользователя
*
* @return int
*/
public function ChangeSubscribeMail($sMailOld,$sMailNew,$iUserId=null) {
return $this->oMapper->ChangeSubscribeMail($sMailOld,$sMailNew,$iUserId);
}
/**
* Возвращает список подписок по фильтру
*

View file

@ -66,6 +66,23 @@ class ModuleSubscribe_MapperSubscribe extends Mapper {
$oSubscribe->getDateRemove(),
$oSubscribe->getId());
}
/**
* Смена емайла в подписках
*
* @param string $sMailOld Старый емайл
* @param string $sMailNew Новый емайл
* @param int|null $iUserId Id пользователя
*
* @return int
*/
public function ChangeSubscribeMail($sMailOld,$sMailNew,$iUserId=null) {
$sql = "UPDATE ".Config::Get('db.table.subscribe')."
SET
mail = ?
WHERE mail = ? { and user_id = ?d }
";
return $this->oDb->query($sql,$sMailNew,$sMailOld,$iUserId ? $iUserId : DBSIMPLE_SKIP);
}
/**
* Возвращает список подписок по фильтру
*

View file

@ -255,7 +255,7 @@ class ModuleTopic extends Module {
/**
* Если топик успешно удален, удаляем связанные данные
*/
if($bResult=$this->oMapperTopic->DeleteTopic($sTopicId)){
if($this->oMapperTopic->DeleteTopic($sTopicId)){
return $this->DeleteTopicAdditionalData($sTopicId,$aPhotos);
}

View file

@ -140,10 +140,8 @@ class ModuleTopic_MapperTopic extends Mapper {
WHERE
topic_id = ?d
";
if ($this->oDb->query($sql,$sTopicId)) {
return true;
}
return false;
$res=$this->oDb->query($sql,$sTopicId);
return $res===false or is_null($res) ? false : true;
}
/**
* Получает топик по уникальному хешу(текст топика)

View file

@ -1,220 +0,0 @@
/*! HTML5 Shiv vpre3.6 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed */
;(function(window, document) {
/** Preset options */
var options = window.html5 || {};
/** Used to skip problem elements */
var reSkip = /^<|^(?:button|form|map|select|textarea|object|iframe|option|optgroup)$/i;
/** Not all elements can be cloned in IE (this list can be shortend) **/
var saveClones = /^<|^(?:a|b|button|code|div|fieldset|form|h1|h2|h3|h4|h5|h6|i|iframe|img|input|label|li|link|ol|option|p|param|q|script|select|span|strong|style|table|tbody|td|textarea|tfoot|th|thead|tr|ul)$/i;
/** Detect whether the browser supports default html5 styles */
var supportsHtml5Styles;
/** Detect whether the browser supports unknown elements */
var supportsUnknownElements;
(function() {
var a = document.createElement('a');
a.innerHTML = '<xyz></xyz>';
//if the hidden property is implemented we can assume, that the browser supports HTML5 Styles | this fails in Chrome 8
supportsHtml5Styles = ('hidden' in a);
//if we are part of Modernizr, we do an additional test to solve the Chrome 8 fail
if(supportsHtml5Styles && typeof injectElementWithStyles == 'function'){
injectElementWithStyles('#modernizr{}', function(node){
node.hidden = true;
supportsHtml5Styles = (window.getComputedStyle ?
getComputedStyle(node, null) :
node.currentStyle).display == 'none';
});
}
supportsUnknownElements = a.childNodes.length == 1 || (function() {
// assign a false positive if unable to shiv
try {
(document.createElement)('a');
} catch(e) {
return true;
}
var frag = document.createDocumentFragment();
return (
typeof frag.cloneNode == 'undefined' ||
typeof frag.createDocumentFragment == 'undefined' ||
typeof frag.createElement == 'undefined'
);
}());
}());
/*--------------------------------------------------------------------------*/
/**
* Creates a style sheet with the given CSS text and adds it to the document.
* @private
* @param {Document} ownerDocument The document.
* @param {String} cssText The CSS text.
* @returns {StyleSheet} The style element.
*/
function addStyleSheet(ownerDocument, cssText) {
var p = ownerDocument.createElement('p'),
parent = ownerDocument.getElementsByTagName('head')[0] || ownerDocument.documentElement;
p.innerHTML = 'x<style>' + cssText + '</style>';
return parent.insertBefore(p.lastChild, parent.firstChild);
}
/**
* Returns the value of `html5.elements` as an array.
* @private
* @returns {Array} An array of shived element node names.
*/
function getElements() {
var elements = html5.elements;
return typeof elements == 'string' ? elements.split(' ') : elements;
}
/**
* Shivs the `createElement` and `createDocumentFragment` methods of the document.
* @private
* @param {Document|DocumentFragment} ownerDocument The document.
*/
function shivMethods(ownerDocument) {
var cache = {},
docCreateElement = ownerDocument.createElement,
docCreateFragment = ownerDocument.createDocumentFragment,
frag = docCreateFragment();
ownerDocument.createElement = function(nodeName) {
//abort shiv
if(!html5.shivMethods){
return docCreateElement(nodeName);
}
var node;
if(cache[nodeName]){
node = cache[nodeName].cloneNode();
} else if(saveClones.test(nodeName)){
node = (cache[nodeName] = docCreateElement(nodeName)).cloneNode();
} else {
node = docCreateElement(nodeName);
}
// Avoid adding some elements to fragments in IE < 9 because
// * Attributes like `name` or `type` cannot be set/changed once an element
// is inserted into a document/fragment
// * Link elements with `src` attributes that are inaccessible, as with
// a 403 response, will cause the tab/window to crash
// * Script elements appended to fragments will execute when their `src`
// or `text` property is set
return node.canHaveChildren && !reSkip.test(nodeName) ? frag.appendChild(node) : node;
};
ownerDocument.createDocumentFragment = Function('h,f', 'return function(){' +
'var n=f.cloneNode(),c=n.createElement;' +
'h.shivMethods&&(' +
// unroll the `createElement` calls
getElements().join().replace(/\w+/g, function(nodeName) {
docCreateElement(nodeName);
frag.createElement(nodeName);
return 'c("' + nodeName + '")';
}) +
');return n}'
)(html5, frag);
}
/*--------------------------------------------------------------------------*/
/**
* Shivs the given document.
* @memberOf html5
* @param {Document} ownerDocument The document to shiv.
* @returns {Document} The shived document.
*/
function shivDocument(ownerDocument) {
var shived;
if (ownerDocument.documentShived) {
return ownerDocument;
}
if (html5.shivCSS && !supportsHtml5Styles) {
shived = !!addStyleSheet(ownerDocument,
// corrects block display not defined in IE6/7/8/9
'article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}' +
// corrects audio display not defined in IE6/7/8/9
'audio{display:none}' +
// corrects canvas and video display not defined in IE6/7/8/9
'canvas,video{display:inline-block;*display:inline;*zoom:1}' +
// corrects 'hidden' attribute and audio[controls] display not present in IE7/8/9
'[hidden]{display:none}audio[controls]{display:inline-block;*display:inline;*zoom:1}' +
// adds styling not present in IE6/7/8/9
'mark{background:#FF0;color:#000}'
);
}
if (!supportsUnknownElements) {
shived = !shivMethods(ownerDocument);
}
if (shived) {
ownerDocument.documentShived = shived;
}
return ownerDocument;
}
/*--------------------------------------------------------------------------*/
/**
* The `html5` object is exposed so that more elements can be shived and
* existing shiving can be detected on iframes.
* @type Object
* @example
*
* // options can be changed before the script is included
* html5 = { 'elements': 'mark section', 'shivCSS': false, 'shivMethods': false };
*/
var html5 = {
/**
* An array or space separated string of node names of the elements to shiv.
* @memberOf html5
* @type Array|String
*/
'elements': options.elements || 'abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video',
/**
* A flag to indicate that the HTML5 style sheet should be inserted.
* @memberOf html5
* @type Boolean
*/
'shivCSS': !(options.shivCSS === false),
/**
* A flag to indicate that the document's `createElement` and `createDocumentFragment`
* methods should be overwritten.
* @memberOf html5
* @type Boolean
*/
'shivMethods': !(options.shivMethods === false),
/**
* A string to describe the type of `html5` object ("default" or "default print").
* @memberOf html5
* @type String
*/
'type': 'default',
// shivs the document according to the specified `html5` object options
'shivDocument': shivDocument
};
/*--------------------------------------------------------------------------*/
// expose html5
window.html5 = html5;
// shiv the document
shivDocument(document);
}(this, document));

View file

@ -173,6 +173,7 @@ class ModuleMail extends Module {
$this->oMailer->CharSet=$this->sCharSet;
$this->oMailer->From=$this->sFrom;
$this->oMailer->Sender=$this->sFrom;
$this->oMailer->FromName=$this->sFromName;
}
/**

View file

@ -731,7 +731,7 @@ class ModuleViewer extends Module {
* Сортируем блоки по приоритетности
*/
foreach($this->aBlocks as $sGroup=>$aBlocks) {
uasort($aBlocks,array(&$this,'_SortBlocks'));
uasort($aBlocks,array($this,'_SortBlocks'));
$this->aBlocks[$sGroup] = array_reverse($aBlocks);
}
}

View file

@ -29,6 +29,8 @@
* В указанном формате 'day' будет заменено на соответствующее значение.
* minutes_back* [int] Количество минут, в течении которых событие имеет статус "... минут назад"
* hours_back* [int] Количество часов, в течении которых событие имеет статус "... часов назад"
* tz* [float] Временная зона
* notz* [bool] Не учитывать зону
*
* (* - параметр является необязательным)
*
@ -39,15 +41,25 @@
function smarty_function_date_format($aParams,&$oSmarty) {
require_once(Config::Get('path.root.engine').'/classes/Engine.class.php');
$oEngine = Engine::getInstance();
$oUserCurrent=$oEngine->User_GetUserCurrent();
$sFormatDefault = "d F Y, H:i"; // формат даты по умолчанию
$iDeclinationDefault = 1; // индекс склонения по умолчанию
/**
* Текущая дата и сдвиг времени для пользователя
*/
if ($oUserCurrent and $oUserCurrent->getSettingsTimezone()) {
$iDiff=(date('I') + $oUserCurrent->getSettingsTimezone() - (strtotime(date("Y-m-d H:i:s"))-strtotime(gmdate("Y-m-d H:i:s")))/3600)*3600;
$iTz=false;
if (!isset($aParams['notz'])) {
if (isset($aParams['tz'])) {
$iTz=$aParams['tz'];
}
if ($iTz===false) {
if ($oUserCurrent=$oEngine->User_GetUserCurrent() and $oUserCurrent->getSettingsTimezone()) {
$iTz=$oUserCurrent->getSettingsTimezone();
}
}
}
if ($iTz!==false) {
$iDiff=(date('I') + $iTz - (strtotime(date("Y-m-d H:i:s"))-strtotime(gmdate("Y-m-d H:i:s")))/3600)*3600;
} else {
$iDiff=0; // пользователю показываем время от зоны из основного конфига
}
@ -55,7 +67,7 @@ function smarty_function_date_format($aParams,&$oSmarty) {
/**
* Определяем дату
*/
$sDate = (empty($aParams['date'])) ? $iNow : $aParams['date'];
$sDate = (empty($aParams['date'])) ? time() : $aParams['date'];
$iDeclination = (!isset($aParams['declination'])) ? $iDeclinationDefault : $aParams['declination'];
$sFormat = (empty($aParams['format'])) ? $sFormatDefault : $aParams['format'];
/**

View file

@ -1,16 +0,0 @@
#!/bin/sh
ABSOLUTE_FILENAME=`readlink -e "$0"`
DIRECTORY=`dirname "$ABSOLUTE_FILENAME"`
if [ ! -e "$DIRECTORY/../config/config.local.php" ]; then
cp $DIRECTORY/../config/config.local.dist.php $DIRECTORY/../config/config.local.php
fi
chmod 777 $DIRECTORY/../config/config.local.php
chmod 777 $DIRECTORY/../tmp
chmod 777 $DIRECTORY/../logs
chmod 777 $DIRECTORY/../uploads
chmod 777 $DIRECTORY/../templates/compiled
chmod 777 $DIRECTORY/../templates/cache
chmod 777 $DIRECTORY/../plugins

View file

@ -1,139 +0,0 @@
ALTER TABLE `prefix_topic` ADD `topic_count_favourite` INT( 11 ) UNSIGNED NOT NULL DEFAULT '0' AFTER `topic_count_comment`;
ALTER TABLE `prefix_comment` ADD `comment_count_favourite` INT( 11 ) UNSIGNED NOT NULL DEFAULT '0' AFTER `comment_count_vote`;
ALTER TABLE `prefix_topic` ADD `topic_count_vote_up` INT NOT NULL DEFAULT '0' AFTER `topic_count_vote` ,
ADD `topic_count_vote_down` INT NOT NULL DEFAULT '0' AFTER `topic_count_vote_up` ,
ADD `topic_count_vote_abstain` INT NOT NULL DEFAULT '0' AFTER `topic_count_vote_down`;
ALTER TABLE `prefix_blog` ADD `blog_count_topic` INT UNSIGNED NOT NULL DEFAULT '0' AFTER `blog_count_user` ,
ADD INDEX ( `blog_count_topic` );
CREATE TABLE IF NOT EXISTS `prefix_subscribe` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`target_type` varchar(20) NOT NULL,
`target_id` int(11) DEFAULT NULL,
`mail` varchar(50) NOT NULL,
`date_add` datetime NOT NULL,
`date_remove` datetime DEFAULT NULL,
`ip` varchar(20) NOT NULL,
`key` varchar(32) DEFAULT NULL,
`status` tinyint(1) NOT NULL DEFAULT '1',
PRIMARY KEY (`id`),
KEY `type` (`target_type`),
KEY `mail` (`mail`),
KEY `status` (`status`),
KEY `key` (`key`),
KEY `target_id` (`target_id`),
KEY `ip` (`ip`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `prefix_wall` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`pid` int(11) DEFAULT NULL,
`wall_user_id` int(11) unsigned NOT NULL,
`user_id` int(11) unsigned NOT NULL,
`count_reply` int(11) NOT NULL DEFAULT '0',
`last_reply` varchar(100) NOT NULL,
`date_add` datetime NOT NULL,
`ip` varchar(20) NOT NULL,
`text` text NOT NULL,
PRIMARY KEY (`id`),
KEY `pid` (`pid`),
KEY `wall_user_id` (`wall_user_id`),
KEY `ip` (`ip`),
KEY `user_id` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ALTER TABLE `prefix_wall`
ADD CONSTRAINT `prefix_wall_ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `prefix_user` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `prefix_wall_ibfk_1` FOREIGN KEY (`wall_user_id`) REFERENCES `prefix_user` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE `prefix_user_field` ADD `type` VARCHAR( 50 ) NOT NULL AFTER `id` ,
ADD INDEX ( `type` );
CREATE TABLE IF NOT EXISTS `prefix_user_note` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`target_user_id` int(11) unsigned NOT NULL,
`user_id` int(11) unsigned NOT NULL,
`text` text NOT NULL,
`date_add` datetime NOT NULL,
PRIMARY KEY (`id`),
KEY `user_id` (`user_id`),
KEY `target_user_id` (`target_user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ALTER TABLE `prefix_user_note`
ADD CONSTRAINT `prefix_user_note_ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `prefix_user` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `prefix_user_note_ibfk_1` FOREIGN KEY (`target_user_id`) REFERENCES `prefix_user` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE `prefix_favourite` ADD `tags` VARCHAR( 250 ) NOT NULL;
CREATE TABLE IF NOT EXISTS `prefix_favourite_tag` (
`user_id` int(10) unsigned NOT NULL,
`target_id` int(11) NOT NULL,
`target_type` enum('topic','comment','talk') NOT NULL,
`is_user` tinyint(1) NOT NULL DEFAULT '0',
`text` varchar(50) NOT NULL,
KEY `user_id_target_type_id` (`user_id`,`target_type`,`target_id`),
KEY `target_type_id` (`target_type`,`target_id`),
KEY `is_user` (`is_user`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ALTER TABLE `prefix_favourite_tag`
ADD CONSTRAINT `prefix_favourite_tag_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `prefix_user` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE `prefix_topic` ADD INDEX ( `topic_count_comment` );
ALTER TABLE `prefix_talk` ADD `talk_user_id_last` INT NOT NULL AFTER `talk_date_last` ,
ADD INDEX ( `talk_user_id_last` );
ALTER TABLE `prefix_talk` ADD `talk_comment_id_last` INT NULL DEFAULT NULL AFTER `talk_user_ip`;
ALTER TABLE `prefix_talk_user` ADD INDEX ( `comment_count_new` );
DROP TABLE `prefix_country_user`;
DROP TABLE `prefix_country`;
DROP TABLE `prefix_city_user`;
DROP TABLE `prefix_city`;
INSERT INTO `prefix_user_field` (`type`, `name`, `title`, `pattern`) VALUES
('contact', 'phone', 'Телефон', ''),
('contact', 'mail', 'E-mail', '<a href="mailto:{*}" rel="nofollow">{*}</a>'),
('contact', 'skype', 'Skype', '<a href="skype:{*}" rel="nofollow">{*}</a>'),
('contact', 'icq', 'ICQ', '<a href="http://www.icq.com/people/about_me.php?uin={*}" rel="nofollow">{*}</a>'),
('contact', 'www', 'Сайт', '<a href="http://{*}" rel="nofollow">{*}</a>'),
('social', 'twitter', 'Twitter', '<a href="http://twitter.com/{*}/" rel="nofollow">{*}</a>'),
('social', 'facebook', 'Facebook', '<a href="http://facebook.com/{*}" rel="nofollow">{*}</a>'),
('social', 'vkontakte', 'ВКонтакте', '<a href="http://vk.com/{*}" rel="nofollow">{*}</a>'),
('social', 'odnoklassniki', 'Одноклассники', '<a href="http://www.odnoklassniki.ru/profile/{*}/" rel="nofollow">{*}</a>');
ALTER TABLE `prefix_favourite_tag` ADD INDEX ( `text` );
ALTER TABLE `prefix_vote` ADD `vote_ip` VARCHAR( 15 ) NOT NULL DEFAULT '',
ADD INDEX ( `vote_ip` );
ALTER TABLE `prefix_user` ADD `user_settings_timezone` VARCHAR( 6 ) NULL DEFAULT NULL AFTER `user_settings_notice_new_friend`;
CREATE TABLE IF NOT EXISTS `prefix_user_changemail` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) unsigned NOT NULL,
`date_add` datetime NOT NULL,
`date_used` datetime DEFAULT NULL,
`date_expired` datetime NOT NULL,
`mail_from` varchar(50) NOT NULL,
`mail_to` varchar(50) NOT NULL,
`code_from` varchar(32) NOT NULL,
`code_to` varchar(32) NOT NULL,
`confirm_from` tinyint(1) NOT NULL DEFAULT '0',
`confirm_to` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `user_id` (`user_id`),
KEY `code_from` (`code_from`),
KEY `code_to` (`code_to`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ALTER TABLE `prefix_user_changemail`
ADD CONSTRAINT `prefix_user_changemail_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `prefix_user` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE;

View file

@ -1,33 +0,0 @@
ALTER TABLE `prefix_user` ADD `user_settings_timezone` VARCHAR( 6 ) NULL DEFAULT NULL AFTER `user_settings_notice_new_friend`;
--
-- Структура таблицы `prefix_user_changemail`
--
CREATE TABLE IF NOT EXISTS `prefix_user_changemail` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) unsigned NOT NULL,
`date_add` datetime NOT NULL,
`date_used` datetime DEFAULT NULL,
`date_expired` datetime NOT NULL,
`mail_from` varchar(50) NOT NULL,
`mail_to` varchar(50) NOT NULL,
`code_from` varchar(32) NOT NULL,
`code_to` varchar(32) NOT NULL,
`confirm_from` tinyint(1) NOT NULL DEFAULT '0',
`confirm_to` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `user_id` (`user_id`),
KEY `code_from` (`code_from`),
KEY `code_to` (`code_to`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Ограничения внешнего ключа сохраненных таблиц
--
--
-- Ограничения внешнего ключа таблицы `prefix_user_changemail`
--
ALTER TABLE `prefix_user_changemail`
ADD CONSTRAINT `prefix_user_changemail_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `prefix_user` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE;

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,123 +0,0 @@
<?php
/*-------------------------------------------------------
*
* LiveStreet Engine Social Networking
* Copyright © 2008 Mzhelskiy Maxim
*
*--------------------------------------------------------
*
* Official site: www.livestreet.ru
* Contact e-mail: rus.engine@gmail.com
*
* GNU General Public License, version 2:
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
*
---------------------------------------------------------
*/
/**
* English language file.
*
*/
return array(
"config_file_not_exists"=>"File %%path%% doesn't exist.",
"config_file_not_writable"=>"File %%path%% is not writable.",
'error_db_invalid'=>'Unable to choose or create Database',
'error_db_connection_invalid'=>"Can't connect to the Database. Please check configuration details.",
'error_db_saved'=>'Unable to save data into the DB.',
'error_db_no_data'=>"Unable to get data from the DB.",
'error_local_config_invalid'=>"Can't find local configuration file - /config/config.local.php.",
'site_name_invalid'=>'Chosen site name is not allowed.',
'site_description_invalid'=>'Chosen site description is not allowed.',
'site_keywords_invalid'=>'Chosen keywords are invalid.',
'skin_name_invalid'=>'Chosen skin name is invalid.',
'mail_sender_invalid'=>'Chosen invalid e-mail address.',
'mail_name_invalid'=>'Chosen invalid notification sender name.',
'lang_current_invalid'=>'Chosen language is not allowed.',
'lang_default_invalid'=>'Chosen default language is not allowed.',
'admin_login_invalid'=>'Invalid Administrator login.',
'admin_mail_invalid'=>'Invalid Administrator e-mail.',
'admin_password_invalid'=>'Invalid Administrator password.',
'admin_repassword_invalid'=>'Invalid password confirmation.',
'ok_db_created'=>'Database created successfully. Configuration saved into configuration file.',
'yes' => 'Yes',
'no' => 'No',
'next' => 'Next',
'prev' => 'Back',
'valid_mysql_server'=>'LiveStreet requires MySQL version 5 or higher.',
'install_title'=>'LiveStreet Installation',
'step'=>'Step',
'start_paragraph'=>'<p>Welcome to LiveStreet &copy; 1.0.1 installation. </p><p><b>Notice:</b> You have to rename file - /config/config.local.php.dist to /config/config.local.php and apply read-write (rw) permision to it.</p><p><b>Notice:</b> Make sure that the following directories have rw permissions: /tmp, /logs, /uploads, /templates/compiled, /templates/cache</p>',
'php_params'=>'General PHP Configuration',
'php_params_version'=>'PHP ver. 5.2.0 or higher',
'php_params_safe_mode'=>'Safe mode is on',
'php_params_utf8'=>'UTF8 support in PCRE',
'php_params_mbstring'=>'Mbstring support',
'php_params_simplexml'=>'SimpleXML support',
'local_config'=>'Local Configuration',
'local_config_file'=>'File /config/config.local.php exists and writable',
'local_temp_dir'=>'Directory /tmp exists and writable',
'local_logs_dir'=>'Directory /logs exists and writable',
'local_uploads_dir'=>'Directory /uploads exists and writable',
'local_templates_dir'=>'Directory /templates/compiled exists and writable',
'local_templates_cache_dir'=>'Directory /templates/cache exists and writable',
'local_plugins_dir'=>'Directory /plugins exists and writable',
'db_params'=>'Database (DB) configuration',
'db_params_host'=>'DB hostname',
'db_params_port'=>'DB port',
'db_params_port_notice'=>'It might be a good choice to leave it as 3306 :)',
'db_params_name'=>'DB name',
'db_params_create'=>'Create DB',
'db_params_convert'=>'Convert 0.5.1 DB to 1.0.1',
'db_params_convert_from_10'=>'Convert 1.0 DB to 1.0.1',
'db_params_user'=>'Username',
'db_params_password'=>'Password',
'db_params_prefix'=>"Table's prefix",
'db_params_prefix_notice'=>'This prefix will be appended to all table names',
'db_params_engine'=>'Tables engine',
'db_params_engine_notice'=>'InnoDB is recommended',
'error_table_select'=>'Query error whilst getting data from %%table%%',
'error_database_converted_already'=>'DB structure suits v. 1.0.1 hence conversion aborted',
'admin_params'=>'Administrator Details Configuration',
'admin_params_login'=>'Login',
'admin_params_mail'=>'E-mail',
'admin_params_pass'=>'Password',
'admin_params_repass'=>'Confirm password',
'end_paragraph' => 'Congratulations! LiveStreet successfully installed.<br />To ensure that your installation is secure, please delete [Install] directory.<br /><br />You can continue configuration in extended mode.<br /><br /><a href="../">Go to the main page</a><br /><br />',
'extend_mode'=> 'Extended mode',
'view_params'=> 'HTML view configuration',
'view_params_name'=> 'Site name',
'view_params_description'=> 'Site description',
'view_params_keywords'=> 'Keywords',
'view_params_skin'=> 'Skin name',
'mail_params'=> 'E-mail notification parameters',
'mail_params_sender'=> 'Sent from E-mail address (for notifications)',
'mail_params_name'=> 'Sent from Name (ex. John Doe)',
'general_params'=> 'General Configuration',
'general_params_close'=> 'Use "closed mode" for your site',
'general_params_active'=> 'Use registration activation',
'general_params_invite'=> 'Use registration by invitation',
'language_params'=> 'Language settings',
'language_params_current'=> 'Current language',
'language_params_default'=> 'Default language',
'finish_paragraph' => 'Congratulations! LiveStreet successfully installed.<br />To ensure that your installation is secure, please delete [Install] directory.<br /><br /><a href="../">Then to go to the main page by clicking this link.</a>',
);

View file

@ -1,123 +0,0 @@
<?php
/*-------------------------------------------------------
*
* LiveStreet Engine Social Networking
* Copyright © 2008 Mzhelskiy Maxim
*
*--------------------------------------------------------
*
* Official site: www.livestreet.ru
* Contact e-mail: rus.engine@gmail.com
*
* GNU General Public License, version 2:
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
*
---------------------------------------------------------
*/
/**
* Русский языковой файл.
* Содержит текстовки инсталлятора.
*/
return array(
"config_file_not_exists"=>"Файл %%path%% не существует.",
"config_file_not_writable"=>"Файл %%path%% недосупен для записи.",
'error_db_invalid'=>'Невозможно выбрать или создать базу данных',
'error_db_connection_invalid'=>'Не удалось подключиться к базе данных. Проверьте корректность введенных вами настроек.',
'error_db_saved'=>'Не удалось сохранить данные в базе.',
'error_db_no_data'=>"Не удалось получить данные из базы.",
'error_local_config_invalid'=>'Файл локальной конфигурации /config/config.local.php не найден.',
'site_name_invalid'=>'Указано недопустимое название сайта.',
'site_description_invalid'=>'Указано недопустимое описание сайта.',
'site_keywords_invalid'=>'Указано недопустимые ключевые слова.',
'skin_name_invalid'=>'Указано недопустимое имя шаблона.',
'mail_sender_invalid'=>'Указано недопустимый e-mail.',
'mail_name_invalid'=>'Указано недопустимое имя отправителя уведомлений.',
'lang_current_invalid'=>'Указан недопустимый язык.',
'lang_default_invalid'=>'Указан недопустимый язык по-умолчанию.',
'admin_login_invalid'=>'Логин администратора введен не верно.',
'admin_mail_invalid'=>'E-mail администратора введен не верно.',
'admin_password_invalid'=>'Пароль администратора введен не верно.',
'admin_repassword_invalid'=>'Подтверждение пароля не совпадает с самим паролем.',
'ok_db_created'=>'База данных успешно создана. Данные записаны в конфигурационный файл.',
'yes' => 'Да',
'no' => 'Нет',
'next' => 'Дальше',
'prev' => 'Назад',
'valid_mysql_server'=>'Для работы LiveStreet необходим сервер MySQL версии не ниже 5.',
'install_title'=>'Установка LiveStreet',
'step'=>'Шаг',
'start_paragraph'=>'<p>Добро пожаловать в инсталлятор LiveStreet &copy; 1.0.1. Ознакомьтесь с результатами и следуйте подсказкам.</p><p><b>Внимание.</b> Для успешной иснталяции вы должны переименовать файл /config/config.local.php.dist на /config/config.local.php и дать этому файлу права на запись.</p><p><b>Внимание.</b> Директории /tmp, /logs, /uploads, /templates/compiled, /templates/cache должны иметь права на запись.</p>',
'php_params'=>'Основные настройки PHP',
'php_params_version'=>'PHP версии не ниже 5.2.0',
'php_params_safe_mode'=>'Safe mode выключен',
'php_params_utf8'=>'Поддержка UTF8 в PCRE',
'php_params_mbstring'=>'Поддержка Mbstring',
'php_params_simplexml'=>'Поддержка SimpleXML',
'local_config'=>'Локальная конфигурация',
'local_config_file'=>'Файл /config/config.local.php существует и доступен для записи',
'local_temp_dir'=>'Директория /tmp существует и доступна для записи',
'local_logs_dir'=>'Директория /logs существует и доступна для записи',
'local_uploads_dir'=>'Директория /uploads существует и доступна для записи',
'local_templates_dir'=>'Директория /templates/compiled существует и доступна для записи',
'local_templates_cache_dir'=>'Директория /templates/cache существует и доступна для записи',
'local_plugins_dir'=>'Директория /plugins существует и доступна для записи',
'db_params'=>'Настройка базы данных',
'db_params_host'=>'Имя сервера БД',
'db_params_port'=>'Порт сервера БД',
'db_params_port_notice'=>'Скорее всего правильным решение будет оставить 3306 :)',
'db_params_name'=>'Название базы данных',
'db_params_create'=>'Создать базу данных',
'db_params_convert'=>'Конвертировать базу 0.5.1 в 1.0.1',
'db_params_convert_from_10'=>'Конвертировать базу 1.0 в 1.0.1',
'db_params_user'=>'Имя пользователя',
'db_params_password'=>'Пароль',
'db_params_prefix'=>'Префикс таблиц',
'db_params_prefix_notice'=>'Указанный префикс будет приставлен к названию всех таблиц',
'db_params_engine'=>'Tables engine',
'db_params_engine_notice'=>'Рекомендуется использовать InnoDB',
'error_table_select'=>'Ошибка запроса на выборку данных из таблицы %%table%%',
'error_database_converted_already'=>'Конвертация отменена, так как структура базы данных соответствует версии 1.0.1',
'admin_params'=>'Настройка данных администратора',
'admin_params_login'=>'Логин',
'admin_params_mail'=>'E-mail',
'admin_params_pass'=>'Пароль',
'admin_params_repass'=>'Еще раз',
'end_paragraph' => 'Примите поздравления! LiveStreet успешно установлена.<br />Для обеспечения безопасности работы системы, удалите директорию Install.<br /><br />Вы можете продолжить настройку в расширенном режиме.<br /><br /><a href="../">Перейти на главную страницу</a><br /><br />',
'extend_mode'=> 'Расширенный режим',
'view_params'=> 'Настройки HTML вида',
'view_params_name'=> 'Название сайта',
'view_params_description'=> 'Описание сайта',
'view_params_keywords'=> 'Ключевые слова',
'view_params_skin'=> 'Название шаблона',
'mail_params'=> 'Настройки почтовых уведомлений',
'mail_params_sender'=> 'E-mail с которого отправляются уведомления',
'mail_params_name'=> 'Имя от которого отправляются уведомления',
'general_params'=> 'Общие настройки',
'general_params_close'=> 'Использовать закрытый режим работы сайта',
'general_params_active'=> 'Использовать активацию при регистрации',
'general_params_invite'=> 'Использовать режим регистрации по приглашению',
'language_params'=> 'Языковые настройки',
'language_params_current'=> 'Текущий язык',
'language_params_default'=> 'Язык, который будет использоваться по умолчанию',
'finish_paragraph' => 'Примите поздравления! LiveStreet успешно установлена.<br />Для обеспечения безопасности работы системы, удалите директорию Install.<br /><br /><a href="../">Перейти на главную страницу</a>',
);

2
install/patch.sql Normal file
View file

@ -0,0 +1,2 @@
ALTER TABLE `prefix_subscribe` ADD `user_id` INT( 11 ) UNSIGNED NULL DEFAULT NULL AFTER `target_id` ,
ADD INDEX ( `user_id` ) ;

View file

@ -1,165 +0,0 @@
## Конфигурационный файл Sphinx-а для индексации LiveStreet
#######################
#
# Описываем индексы
#
#######################
# Источник-родитель для всех остальных источников. Здесь указываются параметры доступа
# к базе данных сайта
source lsParentSource
{
type = mysql
sql_host = localhost
sql_user = user
sql_pass = pass
sql_db = livestreet
sql_port = 3306
# Для ускорения работы прописываем путь до MySQL-го UNIX-сокета (чтобы
# операции с БД происходили не через TCP/IP стек сервера)
sql_sock = /var/run/mysqld/mysqld.sock
mysql_connect_flags = 32 # 32- включение сжатие при обмене данными с БД
# Включам нужную кодировку соединения и выключаем кеш запросов
sql_query_pre = SET NAMES utf8
sql_query_pre = SET SESSION query_cache_type=OFF
}
# Источник топиков
source topicsSource : lsParentSource
{
# запрос на получения данных топиков
sql_query = \
SELECT t_fast.topic_id, t_fast.topic_title, UNIX_TIMESTAMP(t_fast.topic_date_add) as topic_date_add, \
tc.topic_text, t_fast.topic_publish \
FROM prefix_topic as t_fast, prefix_topic_content AS tc \
WHERE t_fast.topic_id=tc.topic_id AND t_fast.topic_id>=$start AND t_fast.topic_id<=$end
# запрос для дробления получения топиков на неколько итераций
sql_query_range = SELECT MIN(topic_id),MAX(topic_id) FROM prefix_topic
# сколько получать объектов за итерацию
sql_range_step = 1000
# Указываем булевый атрибут критерия "топик опубликован". Для возможности указания этого критерия при поиске
sql_attr_uint = topic_publish
# Атрибут даты добавления, типа "время"
sql_attr_timestamp = topic_date_add
# мульти-аттрибут "теги топика"
sql_attr_multi = uint tag from query; SELECT topic_id, topic_tag_id FROM prefix_topic_tag
sql_ranged_throttle = 0
}
# Источник комментариев
source commentsSource : lsParentSource
{
sql_query = \
SELECT comment_id, comment_text, UNIX_TIMESTAMP(comment_date) as comment_date, comment_delete \
FROM prefix_comment \
WHERE target_type='topic' AND comment_id>=$start AND comment_id<=$end AND comment_publish=1
sql_query_range = SELECT MIN(comment_id),MAX(comment_id) FROM prefix_comment
sql_range_step = 5000
sql_attr_uint = comment_delete
sql_attr_timestamp = comment_date
}
#######################
#
# Описываем индексы
#
#######################
index topicsIndex
{
# Источник, который будет хранить данный индекса
source = topicsSource
path = /var/lib/sphinx/topicIndex
# Тип хранения аттрибутов
docinfo = extern
mlock = 0
# Используемые морфологические движки
morphology = stem_enru
# Кодировака данных из источника
charset_type = utf-8
# Из данных источника HTML-код нужно вырезать
html_strip = 1
html_remove_elements = style, script, code
}
# Индекс комментариев
index commentsIndex
{
source = commentsSource
path = /var/lib/sphinx/commentsIndex
docinfo = extern
mlock = 0
morphology = stem_enru
charset_type = utf-8
# Из данных источника HTML-код нужно вырезать
html_strip = 1
html_remove_elements = style, script, code
}
#######################
#
# Настройки индексатора
#
#######################
indexer
{
# Лимит памяти, который может использавать демон-индексатор
mem_limit = 128M
}
#######################
#
# Настройка демона-поисковика
#
#######################
searchd
{
# Адрес, на котором будет прослушиваться порт
address = 127.0.0.1
# Ну и собственно номер порта демона searchd
port = 3312
# Лог-файл демона
log = /var/log/sphinx/searchd.log
# Лог поисковых запросов. Если закомментировать,то логировать поисковые строки не будет
query_log = /var/log/sphinx/query.log
# Время в секундах, которое ждет демон при обмене данными с клиентом. По исчерпании происходит разрыв коннекта
read_timeout = 5
# Максимальное количество одновременно-обрабатываемых запросов. 0 означает дофига, а точнее без ограничения
max_children = 100
# Файл, в который сохраняется PID-процесса при запуске
pid_file = /var/log/sphinx/searchd.pid
}

File diff suppressed because it is too large Load diff

View file

@ -1,34 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ru" xml:lang="ru">
<head>
<title>___LANG_INSTALL_TITLE___</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="templates/styles/style.css?v=1" />
</head>
<body>
<div id="container">
<div id="header">
<h1>___LANG_INSTALL_TITLE___ ___INSTALL_VERSION___ <span>___LANG_STEP___ ___INSTALL_STEP_NUMBER___ / ___INSTALL_STEP_COUNT___</span></h1>
<div class="lang"><a href="?lang=russian">RUS</a> | <a href="?lang=english">ENG</a></div>
</div>
<div id="content">
___SYSTEM_MESSAGES___
<form action="___FORM_ACTION___" method="POST">
___CONTENT___
<br />
<input type="submit" class="button" name="install_step_prev" value="___LANG_PREV___" ___PREV_STEP_DISABLED___ style="display:___PREV_STEP_DISPLAY___;" />
<input type="submit" class="button button-primary" name="install_step_next" value="___LANG_NEXT___" ___NEXT_STEP_DISABLED___ style="display:___NEXT_STEP_DISPLAY___;" />
</form>
</div>
</div>
</body>
</html>

View file

@ -1 +0,0 @@
<div class="system-messages-___MESSAGE_STYLE_CLASS___"><ul><li>___MESSAGE_CONTENT___</li></ul></div>

View file

@ -1,15 +0,0 @@
<h3>___LANG_ADMIN_PARAMS___</h3>
<input type="hidden" name="install_admin_params" value="1" />
<p><label for="install_admin_login">___LANG_ADMIN_PARAMS_LOGIN___:</label>
<input type="text" class="input-text input-width-300" name="install_admin_login" value="___INSTALL_ADMIN_LOGIN___" id="install_admin_login" /></p>
<p><label for="install_admin_mail">___LANG_ADMIN_PARAMS_MAIL___:</label>
<input type="text" class="input-text input-width-300" name="install_admin_mail" value="___INSTALL_ADMIN_MAIL___" id="install_admin_mail" /></p>
<p><label for="install_admin_pass">___LANG_ADMIN_PARAMS_PASS___:</label>
<input type="password" class="input-text input-width-300" name="install_admin_pass" autocomplete="off" value="" id="install_admin_pass" /></p>
<p><label for="install_admin_repass">___LANG_ADMIN_PARAMS_REPASS___:</label>
<input type="password" class="input-text input-width-300" name="install_admin_repass" autocomplete="off" value="" id="install_admin_repass" /></p>

View file

@ -1,41 +0,0 @@
<h3>___LANG_DB_PARAMS___</h3>
<input type="hidden" name="install_db_params" value="1" />
<p><label for="install_db_server">___LANG_DB_PARAMS_HOST___:</label>
<input type="text" class="input-text input-width-300" class="input-text" name="install_db_server" value="___INSTALL_DB_SERVER___" id="install_db_server" />
</p>
<p><label for="install_db_server">___LANG_DB_PARAMS_PORT___:</label>
<input type="text" class="input-text input-width-300" name="install_db_port" value="___INSTALL_DB_PORT___" id="install_db_port" />
<small class="note">___LANG_DB_PARAMS_PORT_NOTICE___</small></p>
<p><label for="install_db_name">___LANG_DB_PARAMS_NAME___:</label>
<input type="text" class="input-text input-width-300" name="install_db_name" value="___INSTALL_DB_NAME___" id="install_db_name" />
</p>
<p>
<label><input type="checkbox" class="input-checkbox" name="install_db_create" value="1" ___INSTALL_DB_CREATE_CHECK___ /> ___LANG_DB_PARAMS_CREATE___</label>
<label><input type="checkbox" class="input-checkbox" name="install_db_convert" value="1" ___INSTALL_DB_CONVERT_CHECK___ /> ___LANG_DB_PARAMS_CONVERT___</label>
<label><input type="checkbox" class="input-checkbox" name="install_db_convert_from_10" value="1" ___INSTALL_DB_CONVERT_FROM_10_CHECK___ /> ___LANG_DB_PARAMS_CONVERT_FROM_10___</label>
</p>
<p><label for="install_db_user">___LANG_DB_PARAMS_USER___:</label>
<input type="text" class="input-text input-width-300" name="install_db_user" value="___INSTALL_DB_USER___" id="install_db_user" />
</p>
<p><label for="install_db_password">___LANG_DB_PARAMS_PASSWORD___:</label>
<input type="text" class="input-text input-width-300" name="install_db_password" value="___INSTALL_DB_PASSWORD___" id="install_db_password" />
</p>
<p><label for="install_db_name">___LANG_DB_PARAMS_PREFIX___:</label>
<input type="text" class="input-text input-width-300" name="install_db_prefix" value="___INSTALL_DB_PREFIX___" id="install_db_prefix" />
<small class="note">___LANG_DB_PARAMS_PREFIX_NOTICE___</small></p>
<p><label for="install_db_engine">___LANG_DB_PARAMS_ENGINE___:</label>
<select name="install_db_engine" id="install_db_engine" value="___INSTALL_DB_ENGINE___" class="input-text input-width-300">
<option value="InnoDB" ___INSTALL_DB_ENGINE_INNODB___>InnoDB</option>
<option value="MyISAM" ___INSTALL_DB_ENGINE_MYISAM___>MyISAM</option>
</select>
<small class="note">___LANG_DB_PARAMS_ENGINE_NOTICE___</small></p>

View file

@ -1,5 +0,0 @@
<p>
___LANG_END_PARAGRAPH___
<input type="submit" class="button" name="install_step_extend" value="___LANG_EXTEND_MODE___" />
</p>

View file

@ -1,54 +0,0 @@
<input type="hidden" name="install_extend_params" value="1" />
<h3>___LANG_VIEW_PARAMS___</h3>
<p><label for="install_view_name">___LANG_VIEW_PARAMS_NAME___:</label>
<input type="text" class="input-text input-width-full" name="install_view_name" value="___INSTALL_VIEW_NAME___" id="install_view_name" /></p>
<p><label for="install_view_description">___LANG_VIEW_PARAMS_DESCRIPTION___:</label>
<input type="text" class="input-text input-width-full" name="install_view_description" value="___INSTALL_VIEW_DESCRIPTION___" id="install_view_description" /></p>
<p><label for="install_view_keywords">___LANG_VIEW_PARAMS_KEYWORDS___:</label>
<input type="text" class="input-text input-width-full" name="install_view_keywords" value="___INSTALL_VIEW_KEYWORDS___" id="install_view_keywords" /></p>
<p><label for="install_view_skin">___LANG_VIEW_PARAMS_SKIN___:</label>
<select name="install_view_skin" id="install_view_skin" value="___INSTALL_VIEW_SKIN___" class="input-width-200">
___INSTALL_VIEW_SKIN_OPTIONS___
</select>
</p>
<br />
<h3>___LANG_MAIL_PARAMS___</h3>
<p><label for="install_mail_sender">___LANG_MAIL_PARAMS_SENDER___:</label>
<input type="text" class="input-text input-width-300" name="install_mail_sender" value="___INSTALL_MAIL_SENDER___" id="install_mail_sender" /></p>
<p><label for="install_mail_name">___LANG_MAIL_PARAMS_NAME___:</label>
<input type="text" class="input-text input-width-300" name="install_mail_name" value="___INSTALL_MAIL_NAME___" id="install_mail_name" /></p>
<br />
<h3>___LANG_GENERAL_PARAMS___</h3>
<label><input type="checkbox" class="input-checkbox" name="install_general_close" value="1" ___INSTALL_GENERAL_CLOSE_CHECK___ /> ___LANG_GENERAL_PARAMS_CLOSE___</label>
<label><input type="checkbox" class="input-checkbox" name="install_general_active" value="1" ___INSTALL_GENERAL_ACTIVE_CHECK___ /> ___LANG_GENERAL_PARAMS_ACTIVE___</label>
<label><input type="checkbox" class="input-checkbox" name="install_general_invite" value="1" ___INSTALL_GENERAL_INVITE_CHECK___ /> ___LANG_GENERAL_PARAMS_INVITE___</label>
<br />
<br />
<h3>___LANG_LANGUAGE_PARAMS___</h3>
<p><label for="install_lang_current">___LANG_LANGUAGE_PARAMS_CURRENT___:</label>
<select name="install_lang_current" id="install_lang_current" value="___INSTALL_LANG_CURRENT___" class="input-width-200">
___INSTALL_LANG_OPTIONS___
</select>
</p>
<p><label for="install_lang_default">___LANG_LANGUAGE_PARAMS_DEFAULT___:</label>
<select name="install_lang_default" id="install_lang_default" value="___INSTALL_LANG_DEFAULT___" class="input-width-200">
___INSTALL_LANG_DEFAULT_OPTIONS___
</select>
</p>

View file

@ -1,3 +0,0 @@
<p>
___LANG_FINISH_PARAGRAPH___
</p>

View file

@ -1,48 +0,0 @@
___LANG_START_PARAGRAPH___
<input type="hidden" name="install_env_params" value="1" />
<h3>___LANG_PHP_PARAMS___</h3>
<table class="table">
<tr>
<td>___LANG_PHP_PARAMS_VERSION___</td><td class="result">___VALIDATE_PHP_VERSION___</td>
</tr>
<tr>
<td>___LANG_PHP_PARAMS_SAFE_MODE___</td><td class="result">___VALIDATE_SAFE_MODE___</td>
</tr>
<tr>
<td>___LANG_PHP_PARAMS_UTF8___</td><td class="result">___VALIDATE_UTF8___</td>
</tr>
<tr>
<td>___LANG_PHP_PARAMS_MBSTRING___</td><td class="result">___VALIDATE_MBSTRING___</td>
</tr>
<tr>
<td>___LANG_PHP_PARAMS_SIMPLEXML___</td><td class="result">___VALIDATE_SIMPLEXML___</td>
</tr>
</table>
<br />
<h3>___LANG_LOCAL_CONFIG___</h3>
<table class="table">
<tr>
<td>___LANG_LOCAL_CONFIG_FILE___</td><td class="result">___VALIDATE_LOCAL_CONFIG___</td>
</tr>
<tr>
<td>___LANG_LOCAL_TEMP_DIR___</td><td class="result">___VALIDATE_LOCAL_TEMP___</td>
</tr>
<tr>
<td>___LANG_LOCAL_LOGS_DIR___</td><td class="result">___VALIDATE_LOCAL_LOGS___</td>
</tr>
<tr>
<td>___LANG_LOCAL_UPLOADS_DIR___</td><td class="result">___VALIDATE_LOCAL_UPLOADS___</td>
</tr>
<tr>
<td>___LANG_LOCAL_TEMPLATES_DIR___</td><td class="result">___VALIDATE_LOCAL_TEMPLATES___</td>
</tr>
<tr>
<td>___LANG_LOCAL_TEMPLATES_CACHE_DIR___</td><td class="result">___VALIDATE_LOCAL_TEMPLATES_CACHE___</td>
</tr>
<tr>
<td>___LANG_LOCAL_PLUGINS_DIR___</td><td class="result">___VALIDATE_LOCAL_PLUGINS___</td>
</tr>
</table>

View file

@ -1,185 +0,0 @@
/* Reset
-------------------------------------------------------------------*/
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, font, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td { padding: 0; margin: 0; }
ul, ol { list-style: none; }
img { border: none; }
/* Body
-------------------------------------------------------------------*/
body { font: 13px/18px Arial, Helvetica, sans-serif; color: #333; background: #FBFCFC; }
h1, h2, h3, h4, h5, h6 { color: #333; }
h1 { font-size: 22px; line-height: 26px; margin-bottom: 0; }
h2 { font-size: 20px; line-height: 24px; margin-bottom: 10px; }
h3 { font-size: 18px; line-height: 22px; margin-bottom: 10px; }
h4 { font-size: 18px; line-height: 22px; margin-bottom: 5px; }
h5 { font-size: 18px; line-height: 22px; margin-bottom: 5px; }
h6 { font-size: 18px; line-height: 22px; margin-bottom: 5px; }
a { color: #275EC2; }
a:hover { text-decoration: none; }
.voting a { outline: none; }
h1 span { color: #bbb; margin-left: 20px; }
/* Grid
-------------------------------------------------------------------*/
#container { width: 700px; background: #fff; margin: 50px auto; box-shadow: 0 0 5px rgba(0,0,0,.1); border-radius: 10px; overflow: hidden; }
#header {
padding: 20px 30px;
background: rgb(255,255,255);
background: -moz-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(250,250,250,1) 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(255,255,255,1)), color-stop(100%,rgba(250,250,250,1)));
background: -webkit-linear-gradient(top, rgba(255,255,255,1) 0%,rgba(250,250,250,1) 100%);
background: -o-linear-gradient(top, rgba(255,255,255,1) 0%,rgba(250,250,250,1) 100%);
background: -ms-linear-gradient(top, rgba(255,255,255,1) 0%,rgba(250,250,250,1) 100%);
background: linear-gradient(top, rgba(255,255,255,1) 0%,rgba(250,250,250,1) 100%);
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#fafafa',GradientType=0 );
border-bottom: 1px solid #eee;
border-radius: 10px 10px 0 0;
position: relative;
}
#header .lang { position: absolute; top: 23px; right: 30px; text-transform: lowercase; color: #ccc; }
#content { padding: 30px 30px; }
/* Forms
-------------------------------------------------------------------*/
.input-text {
width: 150px;
padding: 5px;
border: 1px solid #c9c9c9;
box-shadow: 0 2px 4px rgba(0,0,0,.07) inset;
border-radius: 3px;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
.input-text:focus { border-color: #4D90FE; box-shadow: 0 2px 4px rgba(0,0,0,.07) inset, 0 0 3px #4D90FE; outline: none; }
.input-checkbox { position: relative; top: 1px; margin: 0 2px 0 1px; }
.input-width-full { width: 100%; }
.input-width-50 { width: 50px; }
.input-width-100 { width: 100px; }
.input-width-150 { width: 150px; }
.input-width-200 { width: 200px; }
.input-width-250 { width: 250px; }
.input-width-300 { width: 300px; }
.input-width-400 { width: 400px; }
.input-width-500 { width: 500px; }
textarea { -moz-box-sizing: border-box; box-sizing: border-box; }
select { padding: 4px; border: 1px solid #ddd; border-radius: 3px; }
fieldset { margin-bottom: 30px; padding-top: 20px; border-top: 1px solid #eaeaea; }
fieldset legend { color: #000; font-size: 18px; padding-right: 10px; }
form p { margin-bottom: 20px; }
form label { display: block; margin-bottom: 3px; }
form .icon-question-sign { cursor: help; }
.note { display: block; margin-top: 3px; font-size: 12px; line-height: 16px; color: #aaa; }
/* Notifications
-------------------------------------------------------------------*/
.system-messages-error { background: #f0c8c8; color: #b22626; padding: 10px 15px; margin-bottom: 15px; border-radius: 5px; }
.system-messages-notice { background: #dafad8; color: #4bb23b; padding: 10px 15px; margin-bottom: 15px; border-radius: 5px; }
/* Tables
-------------------------------------------------------------------*/
.table { width: 100%; margin-bottom: 15px; border-collapse: collapse; }
.table td { padding: 10px 10px; background: #fafafa; border-bottom: 2px solid #fff; }
.table tr:hover td { background: #bbffe1; }
.table td.result { width: 50px; text-align: center; }
/* Button
-------------------------------------------------------------------*/
.button {
display: inline-block;
padding: 3px 10px 6px;
*padding: 3px 10px 4px;
text-align: center;
border: 1px solid #dfe3e8;
border-radius: 5px;
font-size: 13px;
line-height: 16px;
color: #434343;
background: #fbfcfc;
background: -moz-linear-gradient(top, #fbfcfc 0%, #f0f2f5 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#fbfcfc), color-stop(100%,#f0f2f5));
background: -webkit-linear-gradient(top, #fbfcfc 0%,#f0f2f5 100%);
background: -o-linear-gradient(top, #fbfcfc 0%,#f0f2f5 100%);
background: -ms-linear-gradient(top, #fbfcfc 0%,#f0f2f5 100%);
background: linear-gradient(top, #fbfcfc 0%,#f0f2f5 100%);
font-family: Verdana, sans-serif;
cursor: pointer;
text-decoration: none;
*margin-right: 5px;
}
.button:hover { text-decoration: none; background: #f0f2f5; }
.button:active {
-moz-box-shadow: 0 0 3px rgba(0, 0, 0, .3) inset;
-webkit-box-shadow: 0 0 3px rgba(0, 0, 0, .3) inset;
box-shadow: 0 0 3px rgba(0, 0, 0, .3) inset;
}
.button.fl-r { *margin-right: 0; }
/* Button Primary */
.button.button-primary {
background: #66cfff;
background: -moz-linear-gradient(top, #66cfff 0%, #2abcfe 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#66cfff), color-stop(100%,#2abcfe));
background: -webkit-linear-gradient(top, #66cfff 0%,#2abcfe 100%);
background: -o-linear-gradient(top, #66cfff 0%,#2abcfe 100%);
background: -ms-linear-gradient(top, #66cfff 0%,#2abcfe 100%);
background: linear-gradient(top, #66cfff 0%,#2abcfe 100%);
border: 1px solid #27ace8;
color: #fff;
}
.button.button-primary:hover { background: #2abcfe; }

View file

@ -1,6 +1,229 @@
{assign var="noSidebar" value=true}
{include file='header.tpl'}
<script>
jQuery(document).ready(function($) {
//ls.tooltip.add('.js-tooltip', { position: 'top'});
//$.fn.poshytip.defaults.className = 'tooltip'
});
</script>
<h2 class="page-header">Popover</h2>
<a href="#" data-type="popover-toggle" title="Popover header title" data-option-title="Popover header" data-option-content="Lorem ipsum dolor sit amet, consectetur adipisicing elit. Numquam ipsum beatae veritatis mollitia fugiat earum labore magnam a totam natus? Cumque non maxime doloremque atque rem ex quisquam. Excepturi pariatur.">Popover</a>
<br>
<br>
<br>
<h2 class="page-header">Tooltip</h2>
<a href="#" data-type="tooltip-toggle" class="js-tooltip" title="Lorem ipsum dolor sit amet, consectetur adipisicing elit. Numquam ipsum beatae veritatis mollitia fugiat earum labore magnam a totam natus? Cumque non maxime doloremque atque rem ex quisquam. Excepturi pariatur.">Top tooltip</a>
<br>
<br>
<br>
<h2 class="page-header">Dropdowns</h2>
<div class="dropdown dropdown-toggle" id="dd1"
data-type="dropdown-toggle"
data-option-target="js-dropdown-test"
data-option-activate-items="true"
data-option-change-text="true"><i class="icon-trash icon-white"></i> <span data-type="dropdown-text">Dropdown</span></div>
<ul class="dropdown-menu" id="js-dropdown-test" data-type="dropdown-target">
<li><a href="#" onclick="return false;">{$aLang.blog_menu_top_period_24h}</a></li>
<li><a href="#" onclick="return false;">{$aLang.blog_menu_top_period_7d}</a></li>
<li class="divider"></li>
<li><a href="#" onclick="return false;">За все время</a></li>
</ul>
<!-- Ajax dropdown -->
<div class="dropdown dropdown-toggle"
data-type="dropdown-toggle"
data-option-target="js-dropdown-ajax"
data-option-template="<div class='dropdown-menu' id='js-dropdown-ajax' data-type='dropdown-target'></div>"
data-param-i-blog-id="2"
data-option-url="http://lshead/ajax/infobox/info/blog/"><span data-type="dropdown-text">Test ajax</span></div>
<div class="dropdown-menu" id="js-dropdown-ajax" data-type="dropdown-target"></div>
<br />
<br />
<h2 class="page-header">Modals</h2>
<button class="button button-primary" data-type="modal-toggle" data-option-target="my-modal">Show modal</button>
<button class="button button-primary" data-type="modal-toggle" data-option-target="modal-long">Show looong modal</button>
<button class="button" onclick="$('#modal-custom').modal('show');">Modal with custom content</button>
<button class="button button-primary" data-type="modal-toggle" data-option-url="{cfg name='path.root.web'}">Show ajax modal</button>
<div class="modal js-modal-default" id="modal-custom" data-type="modal">
<div class="modal-header">
<h3>Modal header</h3>
</div>
<div class="modal-content">
asdfasdfasdf
<button class="button button-primary" data-type="modal-toggle" data-option-target="modal-long">Show ajax modal</button>
</div>
<div class="modal-footer">
<button class="button button-primary" data-type="modal-close">Close</button>
</div>
</div>
<div class="modal js-modal-default" id="modal-inner" data-type="modal">
<div class="modal-header">
<h3>Modal header</h3>
</div>
<div class="modal-content">
asdfasdfasdf
</div>
<div class="modal-footer">
<button class="button button-primary" data-type="modal-close">Close</button>
</div>
</div>
<div class="modal js-modal-default" id="my-modal" data-type="modal">
<div class="modal-header">
<h3>Modal header</h3>
</div>
<div class="modal-content">
<div>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Deserunt beatae saepe veritatis iusto obcaecati neque? Odio modi tenetur corporis voluptas sed nesciunt quas dolorem cum! Officiis amet dicta dolorum cumque!</div>
<div>Dolore laboriosam sequi voluptatem sint labore tempore magni architecto consequuntur quibusdam adipisci itaque minus ad aspernatur rem repellat debitis nobis in totam cupiditate blanditiis commodi non illo quaerat obcaecati vitae.</div>
<div>Nobis fugit rem molestiae est corporis repudiandae laboriosam temporibus iste pariatur omnis itaque explicabo dolore mollitia possimus totam at illum tempora natus ipsam voluptatibus et vitae beatae architecto hic sint.</div>
<br>
<button class="button button-primary" data-type="modal-close">Close</button>
</div>
</div>
<div class="modal js-modal-default" id="modal-long" data-type="modal">
<div class="modal-header">
<h3>Modal header</h3>
</div>
<div class="modal-content">
<div>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Deserunt beatae saepe veritatis iusto obcaecati neque? Odio modi tenetur corporis voluptas sed nesciunt quas dolorem cum! Officiis amet dicta dolorum cumque!</div>
<div>Dolore laboriosam sequi voluptatem sint labore tempore magni architecto consequuntur quibusdam adipisci itaque minus ad aspernatur rem repellat debitis nobis in totam cupiditate blanditiis commodi non illo quaerat obcaecati vitae.</div>
<div>Nobis fugit rem molestiae est corporis repudiandae laboriosam temporibus iste pariatur omnis itaque explicabo dolore mollitia possimus totam at illum tempora natus ipsam voluptatibus et vitae beatae architecto hic sint.</div>
<div>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Doloremque minima odit quibusdam eveniet repudiandae unde voluptatum tempore beatae sed! Veritatis nihil est quibusdam quasi quis animi optio magni nostrum consectetur.</div>
<div>Libero eos adipisci tempora itaque nam cum doloribus nostrum quisquam commodi neque! Tempore incidunt nesciunt id ipsam quibusdam sunt optio nostrum facere voluptatibus commodi atque ratione aperiam officiis facilis amet.</div>
<div>Eius tempora temporibus necessitatibus itaque animi reiciendis sint facilis quod mollitia quaerat voluptatum nostrum sunt cupiditate totam quo saepe quisquam velit perferendis minus neque. Ex aliquam tempore non vero quisquam!</div>
<div>Fuga at assumenda modi nobis iste quaerat quisquam culpa cum unde eaque voluptates recusandae maiores quam alias deleniti sed possimus nisi rem animi reprehenderit dolorem voluptatibus accusantium error praesentium vel!</div>
<div>Magni atque dolores vitae dolorum asperiores illo ipsa obcaecati accusantium nihil cupiditate qui eum tempora natus voluptatibus sed at eligendi? Nam debitis atque voluptate culpa a odit provident sit quod.</div>
<div>Magnam odit beatae reprehenderit voluptates libero in ut quos ratione veritatis explicabo eum earum corporis sapiente id molestias repellat nostrum quae cupiditate quam quidem maxime nisi pariatur dolorum accusamus animi.</div>
<div>Quia unde illo itaque quam numquam amet similique corporis. Excepturi corporis repellendus eaque beatae expedita in. Fugiat eos enim sunt accusantium laudantium nulla repudiandae eaque ex doloremque sint adipisci reiciendis!</div>
<div>Consectetur accusantium animi ab laudantium commodi consequuntur ducimus quas. Molestias sunt aperiam similique accusamus nobis quasi ut quia nostrum impedit in temporibus deleniti maiores consequuntur ratione neque sit quibusdam necessitatibus.</div>
<div>Repellendus eaque error nisi temporibus est repudiandae hic ex quaerat quis rem molestiae tenetur reiciendis quo praesentium saepe voluptas similique illum modi asperiores qui laudantium fugit rerum eum impedit deserunt!</div>
<div>Modi minima atque in quos porro repellat tempora doloremque optio iste at totam nulla sapiente rem ipsa mollitia ratione numquam? Saepe fugit eveniet officiis doloremque ducimus numquam nemo quos ab.</div>
<div>Quia unde illo itaque quam numquam amet similique corporis. Excepturi corporis repellendus eaque beatae expedita in. Fugiat eos enim sunt accusantium laudantium nulla repudiandae eaque ex doloremque sint adipisci reiciendis!</div>
<div>Consectetur accusantium animi ab laudantium commodi consequuntur ducimus quas. Molestias sunt aperiam similique accusamus nobis quasi ut quia nostrum impedit in temporibus deleniti maiores consequuntur ratione neque sit quibusdam necessitatibus.</div>
<div>Repellendus eaque error nisi temporibus est repudiandae hic ex quaerat quis rem molestiae tenetur reiciendis quo praesentium saepe voluptas similique illum modi asperiores qui laudantium fugit rerum eum impedit deserunt!</div>
<div>Modi minima atque in quos porro repellat tempora doloremque optio iste at totam nulla sapiente rem ipsa mollitia ratione numquam? Saepe fugit eveniet officiis doloremque ducimus numquam nemo quos ab.</div>
<br>
<button class="button button-primary" data-type="modal-close">Close</button>
</div>
</div>
<br />
<br />
<br />
<h2 class="page-header">Tabs</h2>
<ul class="nav nav-tabs" data-type="tabs">
<li data-type="tab" data-option-target="tabs-pages-1" class="active"><a href="#">Tab One</a></li>
<li data-type="tab" data-option-target="tabs-pages-2"><a href="#">Tab Two</a></li>
<li data-type="tab" data-option-target="tabs-pages-3"><a href="#">Tab Three</a></li>
<li>
<a href="#" class="dropdown-toggle"
data-type="dropdown-toggle"
data-option-target="js-dropdown-date2"
data-option-append-to-body="false"
data-option-align-x="right"
data-option-activate-items="true"
data-option-change-text="true">
<i class="icon-trash"></i> More tabs</a>
<ul class="dropdown-menu" id="js-dropdown-date2" data-type="dropdown-target">
<li data-type="tab" data-option-target="tabs-pages-4"><a href="#">{$aLang.blog_menu_top_period_24h}</a></li>
<li data-type="tab" data-option-target="tabs-pages-5"><a href="#">{$aLang.blog_menu_top_period_7d}</a></li>
</ul>
</li>
</ul>
<div data-type="tab-content">
<div id="tabs-pages-1" class="tab-pane" data-type="tab-pane" style="display: block">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Hic magnam error eligendi odio nemo itaque ea vero adipisci fugit exercitationem totam quasi asperiores dolores harum saepe laudantium provident. Voluptates tenetur.</div>
<div id="tabs-pages-2" class="tab-pane" data-type="tab-pane">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Eaque iste vel sit necessitatibus voluptatum cumque quos ipsam ab eligendi blanditiis accusamus nostrum consectetur magnam harum provident dolorem minima iure ex.</div>
<div id="tabs-pages-3" class="tab-pane" data-type="tab-pane">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Pariatur esse odit sequi dolorum ab perspiciatis sint eveniet tenetur praesentium cumque deserunt quidem ipsa perferendis reprehenderit corporis vero explicabo ratione suscipit!</div>
<div id="tabs-pages-4" class="tab-pane" data-type="tab-pane">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Maxime quam magnam quaerat molestiae provident error blanditiis sequi recusandae nisi adipisci. Voluptatibus optio assumenda in quaerat ab eaque placeat nesciunt animi.</div>
<div id="tabs-pages-5" class="tab-pane" data-type="tab-pane"><div>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Magni similique dolores ab exercitationem sint tempora eius magnam est dignissimos cumque ad id excepturi voluptatibus esse molestiae ut sit voluptates quod!</div>
<div>Iure quibusdam eum eveniet autem veritatis aliquid neque repellat labore obcaecati modi facilis eaque in officia magni officiis tempora itaque eos natus quod quidem quam dolorum nobis distinctio possimus quo.</div>
<div>Error iure ut nihil voluptate perspiciatis ipsam ex officia quis eveniet reprehenderit hic quod voluptas? Iusto dolore ad fugit ullam quos quis iure vitae quas vero nam repudiandae modi eaque.</div>
<div>Sed eos dolorem dolore pariatur perspiciatis atque aspernatur autem cumque perferendis quae ab quisquam quasi hic magnam animi tenetur incidunt impedit nesciunt consequuntur sequi minima ad rerum aperiam dolores veritatis.</div></div>
</div>
<br />
<br />
<h2 class="page-header">Tabs pills</h2>
<ul class="nav nav-pills" data-type="tabs">
<li data-type="tab" data-option-target="tab-pages-1"><a href="#">Tab One</a></li>
<li data-type="tab" data-option-target="tab-pages-2"><a href="#">Tab Two</a></li>
<li data-type="tab" data-option-target="tab-pages-3"><a href="#">Tab Three</a></li>
<li>
<a href="#" class="dropdown-toggle" data-type="dropdown-toggle" data-option-target="js-dropdown-date" data-option-append-to-body="false" data-option-change-text="true">
<span data-type="dropdown-text">Dropdown</span></a>
<ul class="dropdown-menu" id="js-dropdown-date">
<li data-type="tab" data-option-target="tab-pages-4"><a href="#">{$aLang.blog_menu_top_period_24h}</a></li>
<li data-type="tab" data-option-target="tab-pages-5"><a href="#">{$aLang.blog_menu_top_period_7d}</a></li>
</ul>
</li>
</ul>
<div data-type="tab-content">
<div id="tab-pages-1" class="tab-pane" data-type="tab-pane">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Hic magnam error eligendi odio nemo itaque ea vero adipisci fugit exercitationem totam quasi asperiores dolores harum saepe laudantium provident. Voluptates tenetur.</div>
<div id="tab-pages-2" class="tab-pane" data-type="tab-pane">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Eaque iste vel sit necessitatibus voluptatum cumque quos ipsam ab eligendi blanditiis accusamus nostrum consectetur magnam harum provident dolorem minima iure ex.</div>
<div id="tab-pages-3" class="tab-pane" data-type="tab-pane">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Pariatur esse odit sequi dolorum ab perspiciatis sint eveniet tenetur praesentium cumque deserunt quidem ipsa perferendis reprehenderit corporis vero explicabo ratione suscipit!</div>
<div id="tab-pages-4" class="tab-pane" data-type="tab-pane">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Maxime quam magnam quaerat molestiae provident error blanditiis sequi recusandae nisi adipisci. Voluptatibus optio assumenda in quaerat ab eaque placeat nesciunt animi.</div>
<div id="tab-pages-5" class="tab-pane" data-type="tab-pane"><div>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Magni similique dolores ab exercitationem sint tempora eius magnam est dignissimos cumque ad id excepturi voluptatibus esse molestiae ut sit voluptates quod!</div>
<div>Iure quibusdam eum eveniet autem veritatis aliquid neque repellat labore obcaecati modi facilis eaque in officia magni officiis tempora itaque eos natus quod quidem quam dolorum nobis distinctio possimus quo.</div>
<div>Error iure ut nihil voluptate perspiciatis ipsam ex officia quis eveniet reprehenderit hic quod voluptas? Iusto dolore ad fugit ullam quos quis iure vitae quas vero nam repudiandae modi eaque.</div>
<div>Sed eos dolorem dolore pariatur perspiciatis atque aspernatur autem cumque perferendis quae ab quisquam quasi hic magnam animi tenetur incidunt impedit nesciunt consequuntur sequi minima ad rerum aperiam dolores veritatis.</div></div>
</div>
<br />
<br />
<div class="topic">
<div class="topic-content text">
{if $oConfig->GetValue('view.tinymce')}

View file

@ -6,6 +6,7 @@
display: inline-block;
padding: 4px 12px;
padding: 5px 12px;
margin: 0;
text-align: center;
@ -14,31 +15,19 @@
font-size: 14px;
line-height: 20px;
text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
border: 1px solid #ddd;
border-radius: 4px;
border: none;
color: #333;
background: #fafafa;
background: -moz-linear-gradient(top, #fff 0%, #e6e6e6 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#fff), color-stop(100%,#e6e6e6));
background: -webkit-linear-gradient(top, #fff 0%,#e6e6e6 100%);
background: -o-linear-gradient(top, #fff 0%,#e6e6e6 100%);
background: -ms-linear-gradient(top, #fff 0%,#e6e6e6 100%);
background: linear-gradient(top, #fff 0%,#e6e6e6 100%);
-webkit-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.2) inset, 0 1px 2px rgba(0, 0, 0, 0.05);
-moz-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.2) inset, 0 1px 2px rgba(0, 0, 0, 0.05);
box-shadow: 0 1px 0 rgba(255, 255, 255, 0.2) inset, 0 1px 2px rgba(0, 0, 0, 0.05);
background: #eee;
cursor: pointer;
*margin-right: 5px;
*border: 0;
}
.button:hover { text-decoration: none; background: #eee; }
.button:hover { text-decoration: none; background: #ddd; }
.button:active,
.button.active {
background: #eaeaea;
@ -53,16 +42,8 @@
/* Button Primary */
.button.button-primary {
color: #fff;
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
background: #006DCC;
background: -moz-linear-gradient(top, #0088cc 0%, #0044cc 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#0088cc), color-stop(100%,#0044cc));
background: -webkit-linear-gradient(top, #0088cc 0%,#0044cc 100%);
background: -o-linear-gradient(top, #0088cc 0%,#0044cc 100%);
background: -ms-linear-gradient(top, #0088cc 0%,#0044cc 100%);
background: linear-gradient(top, #0088cc 0%,#0044cc 100%);
}
.button.button-primary:hover { background: #0044cc; }
.button.button-primary.active { background: #006DCC; }

View file

@ -12,9 +12,9 @@
*display: inline; *zoom: 1; /* IE7 */
background: #2891d3;
color: #fff;
border-radius: 2px;
padding: 5px 12px;
margin-bottom: 10px;
min-height: 18px;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
@ -54,11 +54,53 @@
padding: 5px 0;
background-color: #fff;
border: 1px solid #ccc;
border-radius: 6px;
box-shadow: 0 5px 10px rgba(0,0,0,.2);
}
.dropdown-menu li > a { display: block; padding: 5px 12px; white-space: nowrap; }
.dropdown-menu > li { overflow: hidden; }
.dropdown-menu > li > a { display: block; padding: 5px 12px; white-space: nowrap; }
.dropdown-menu > li.active > a { background: #c8ecff; color: #48a4d5; }
.dropdown-menu > li > a:hover { background: #0088cc; color: #fff; }
.dropdown-menu > li.divider { height: 0; border-top: 1px solid #e1e1e1; margin: 5px 0; }
.dropdown-menu > li.divider { height: 0; border-top: 1px solid #e1e1e1; margin: 5px 0; }
/* Arrow */
/*
.dropdown-menu:after,
.dropdown-menu:before {
content: '';
position: absolute;
top: auto;
right: auto;
bottom: auto;
left: auto;
width: 0;
height: 0;
border: 6px solid transparent;
}
.dropdown-menu:after { border-width: 7px; z-index: -1; }
.dropdown-menu.alignx-left.aligny-top:before { left: 10px; bottom: -12px; border-top-color: #fff; }
.dropdown-menu.alignx-left.aligny-center:before { right: -12px; top: 50%; margin-top: -6px; border-left-color: #fff; }
.dropdown-menu.alignx-left.aligny-bottom:before { left: 10px; top: -12px; border-bottom-color: #fff; }
.dropdown-menu.alignx-center.aligny-top:before { left: 50%; bottom: -12px; margin-left: -6px; border-top-color: #fff; }
.dropdown-menu.alignx-center.aligny-center:before { display: none; }
.dropdown-menu.alignx-center.aligny-bottom:before { left: 50%; top: -12px; margin-left: -6px; border-bottom-color: #fff; }
.dropdown-menu.alignx-right.aligny-top:before { right: 10px; bottom: -12px; border-top-color: #fff; }
.dropdown-menu.alignx-right.aligny-center:before { left: -12px; top: 50%; margin-top: -6px; border-right-color: #fff; }
.dropdown-menu.alignx-right.aligny-bottom:before { right: 10px; top: -12px; border-bottom-color: #fff; }
.dropdown-menu.alignx-left.aligny-top:after { left: 9px; bottom: -14px; border-top-color: #bbb; }
.dropdown-menu.alignx-left.aligny-center:after { right: -14px; top: 50%; margin-top: -7px; border-left-color: #bbb; }
.dropdown-menu.alignx-left.aligny-bottom:after { left: 9px; top: -14px; border-bottom-color: #bbb; }
.dropdown-menu.alignx-center.aligny-top:after { left: 50%; bottom: -14px; margin-left: -7px; border-top-color: #bbb; }
.dropdown-menu.alignx-center.aligny-center:after { display: none; }
.dropdown-menu.alignx-center.aligny-bottom:after { left: 50%; top: -14px; margin-left: -7px; border-bottom-color: #bbb; }
.dropdown-menu.alignx-right.aligny-top:after { right: 9px; bottom: -14px; border-top-color: #bbb; }
.dropdown-menu.alignx-right.aligny-center:after { left: -14px; top: 50%; margin-top: -7px; border-right-color: #bbb; }
.dropdown-menu.alignx-right.aligny-bottom:after { right: 9px; top: -14px; border-bottom-color: #bbb; }
*/

View file

@ -9,7 +9,6 @@ input[type="text"],
.input-text {
padding: 5px;
border: 1px solid #ddd;
border-radius: 3px;
-webkit-box-shadow: 0 2px 4px rgba(0,0,0,.07) inset;
box-shadow: 0 2px 4px rgba(0,0,0,.07) inset;
-webkit-box-sizing: border-box;

View file

@ -74,4 +74,15 @@
/* Links */
.link-dashed { text-decoration: none; border-bottom: 1px dashed; }
.link-dotted { text-decoration: none; border-bottom: 1px dotted; }
.link-dotted { text-decoration: none; border-bottom: 1px dotted; }
/* Loader */
/* TODO: Change gif */
.loading {
width: 100px;
height: 100px;
background-image: url(../images/modal-loader.gif) ;
background-position: 50% 50%;
background-repeat: no-repeat;
}

View file

@ -11,12 +11,12 @@
color: #333;
border: 1px solid #666;
background-color: #fff;
border-radius: 5px;
-webkit-box-shadow: 0 0 15px rgba(0,0,0,.5);
-moz-box-shadow: 0 0 15px rgba(0,0,0,.5);
box-shadow: 0 0 15px rgba(0,0,0,.5);
overflow: hidden;
z-index: 9999;
z-index: 1000;
position: relative;
}
@ -58,6 +58,22 @@
.modal .modal-content { padding: 20px; }
/* Lock */
.modal .modal-lock {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: #000;
opacity: .2;
filter: alpha(opacity=20);
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
}
/* Footer */
.modal .modal-footer { background: #fafafa; border-top: 1px solid #f7f7f7; padding: 15px 20px; }
@ -70,7 +86,20 @@
position: fixed;
top: 50%; left: 50%;
border-radius: 5px;
background: rgba(0,0,0,.8) url(../img/modal-loader.gif) 50% 50% no-repeat;
background-color: #000;
background: rgba(0,0,0,.8) url(../images/modal-loader.gif) 50% 50% no-repeat;
z-index: 1001;
}
.modal-loader.modal-loader-text {
background-image: none;
color: #eee;
text-align: center;
font-size: 13px;
line-height: 1.2em;
padding: 15px;
width: 300px;
margin-left: -150px;
height: auto;
}
@ -82,6 +111,6 @@
width: 100%;
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA9JREFUeNpiYmBgaAAIMAAAjwCD5Hc2/AAAAABJRU5ErkJggg==);;
background: rgba(0,0,0,.5);
z-index: 9998;
z-index: 999;
overflow: auto;
}

View file

@ -80,45 +80,10 @@
.tab-pane { display: none; }
/* Userbar
* TODO: Fix
-------------------------------------------------- */
#userbar {
border: 1px solid #ddd;
border-top: none;
border-radius: 0 0 4px 4px;
-webkit-box-shadow: 0 0 5px #ddd; box-shadow: 0 0 5px #ddd;
background: #ffffff;
background: -moz-linear-gradient(top, #ffffff 0%, #f3f3f3 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ffffff), color-stop(100%,#f3f3f3));
background: -webkit-linear-gradient(top, #ffffff 0%,#f3f3f3 100%);
background: -o-linear-gradient(top, #ffffff 0%,#f3f3f3 100%);
background: -ms-linear-gradient(top, #ffffff 0%,#f3f3f3 100%);
background: linear-gradient(top, #ffffff 0%,#f3f3f3 100%);
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#f3f3f3',GradientType=0 );
}
#userbar .search { float: left; margin: 5px 0 0 6px; *margin: 4px 0 0 4px; }
.nav.nav-userbar { float: right; }
.nav.nav-userbar li { border-radius: 0 0 0 4px; border-left: 1px solid #eaeaea; }
.nav.nav-userbar li a { color: #555; }
.nav.nav-userbar li:first-child a { border-radius: 0 0 0 4px; }
.nav.nav-userbar li:last-child a { border-radius: 0 0 4px 0; }
.nav.nav-userbar li.nav-userbar-username a { position: relative; padding-left: 47px; font-weight: bold; color: #333; }
.nav.nav-userbar li.nav-userbar-username .avatar { position: absolute; top: 7px; left: 15px; }
.nav.nav-userbar li .new-messages { color: #4AA731; font-weight: bold; }
/* Dropdown support */
.nav.nav-userbar .dropdown-toggle:after { border-top-color: #000; }
.nav.nav-userbar .dropdown-toggle.open { background: #08c; color: #fff; }
.nav.nav-userbar .dropdown-toggle.open:after { border-top-color: #fff; }
/* Main
* TODO: Fix
-------------------------------------------------- */
.nav.nav-main { border-radius: 4px; background: #222; background: -moz-linear-gradient(top, #333 0%, #222 100%); }
.nav.nav-main { background: #222; background: -moz-linear-gradient(top, #333 0%, #222 100%); }
.nav.nav-main li a { color: #ddd; }
.nav.nav-main li a:hover { background: #333; }
.nav.nav-main li:first-child a { border-radius: 4px 0 0 4px; }

View file

@ -0,0 +1,34 @@
/**
* Popover
*/
.popover {
position: absolute;
z-index: 9999;
min-width: 100px;
max-width: 300px;
background-color: #fafafa;
color: #000;
border: 1px solid #ccc;
-webkit-box-shadow: 0 0 5px rgba(0,0,0,.1);
box-shadow: 0 0 5px rgba(0,0,0,.1);
}
.popover .popover-title { background: #eee; padding: 10px 15px; font-weight: bold; }
.popover .popover-content { padding: 10px 15px; }
.popover .tip-arrow {
content: '';
position: absolute;
top: auto;
right: auto;
bottom: auto;
left: auto;
width: 0;
height: 0;
border: 7px solid transparent;
}
.popover.alignx-center.aligny-top .tip-arrow { left: 50%; bottom: -14px; margin-left: -7px; border-top-color: #ccc; }
.popover.alignx-center.aligny-bottom .tip-arrow { left: 50%; top: -14px; margin-left: -7px; border-bottom-color: #ccc; }
.popover.alignx-left.aligny-center .tip-arrow { right: -14px; top: 50%; margin-top: -7px; border-left-color: #ccc; }
.popover.alignx-right.aligny-center .tip-arrow { left: -14px; top: 50%; margin-top: -7px; border-right-color: #ccc; }

View file

@ -0,0 +1,33 @@
/**
* Tooltip
*/
.tooltip {
display: none;
padding: 12px 15px;
position: absolute;
z-index: 9999;
min-width: 50px;
max-width: 300px;
background: #222;
color: #fff;
-webkit-box-shadow: 0 0 5px rgba(0,0,0,.2);
box-shadow: 0 0 5px rgba(0,0,0,.2);
}
.tooltip .tip-arrow {
content: '';
position: absolute;
top: auto;
right: auto;
bottom: auto;
left: auto;
width: 0;
height: 0;
border: 6px solid transparent;
}
/* Arrow */
.tooltip.alignx-center.aligny-top .tip-arrow { left: 50%; bottom: -12px; margin-left: -6px; border-top-color: #222; }
.tooltip.alignx-center.aligny-bottom .tip-arrow { left: 50%; top: -12px; margin-left: -6px; border-bottom-color: #222; }
.tooltip.alignx-left.aligny-center .tip-arrow { right: -12px; top: 50%; margin-top: -6px; border-left-color: #222; }
.tooltip.alignx-right.aligny-center .tip-arrow { left: -12px; top: 50%; margin-top: -6px; border-right-color: #222; }

View file

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View file

@ -382,6 +382,21 @@ ls.tools = (function ($) {
}
};
this.getDataOptions = function (element, prefix) {
var prefix = prefix || 'option',
resultOptions = {},
dataOptions = typeof element === 'string' ? $(element).data() : element.data();
for (option in dataOptions) {
// Remove 'option' prefix
if (option.substring(0, prefix.length) == prefix) {
var str = option.substring(prefix.length);
resultOptions[str[0].toLowerCase() + str.substring(1)] = dataOptions[option];
}
}
return resultOptions;
};
return this;
}).call(ls.tools || {},jQuery);
@ -574,11 +589,9 @@ ls.autocomplete = (function ($) {
return this;
}).call(ls.autocomplete || {},jQuery);
/**
* Костыли для ИЕ
*/
* Костыли для ИЕ
*/
ls.ie = (function ($) {
// эмуляция border-sizing в IE

View file

@ -1,121 +0,0 @@
/*
* Dropdowns
*
* Author: Denis Shakhov
* Version: 1.0
*
* TODO: Add fixed menu option
*/
(function($) {
/**
* Constructs dropdown objects
* @constructor
* @class Dropdown
* @param {Object} options Options
*/
var Dropdown = function (element) {
var self = this;
this.$element = $(element);
this.options = {
menuId : ls.tools.getOption(this.$element,'dropdown-menu'),
align : ls.tools.getOption(this.$element,'dropdown-align', 'left'),
isAjax : ls.tools.getOption(this.$element,'dropdown-ajax', false),
isAppendToBody : ls.tools.getOption(this.$element,'dropdown-append-to-body', true),
isChangeText : ls.tools.getOption(this.$element,'dropdown-change-text', true),
defaultText : this.$element.text()
};
this.menu = $('#' + this.options.menuId);
if (this.options.isAppendToBody) this.menu.appendTo('body');
this.options.defaultText = this.options.defaultText || Dropdown.settings.defaultActiveText;
if (this.options.isChangeText) {
var activeText = this.menu.find('li.active').text();
this.$element.text(this.menu.find('li.active').text() || this.options.defaultText);
}
// Resize
$(window).resize(function () {
self.position();
});
if (this.options.isAjax) {
this.menu.find('li > a').on('click', function () {
$this = $(this);
if (self.options.isChangeText) self.$element.text($this.text());
self.menu.find('li').removeClass('active');
$this.parent('li').addClass('active');
self.toggle();
});
}
};
// Common settings
Dropdown.settings = {
dropdownSelector: '[data-toggle=dropdown]',
menuSelector: '.dropdown-menu',
menuTopOffset: 2,
defaultActiveText: '...'
};
// Static methods
Dropdown.methods = {
hideAll: function (currentDropdown) {
$(Dropdown.settings.dropdownSelector).removeClass('open');
$(Dropdown.settings.menuSelector).hide();
}
};
Dropdown.prototype = {
/**
* Toggle dropdown
*/
toggle: function () {
if (!this.menu.is(':visible')) {
Dropdown.methods.hideAll();
this.position();
}
this.$element.toggleClass('open');
this.menu.toggle();
},
/**
* Position menu
*/
position: function () {
var
pos = this.$element.offset(),
height = this.$element.outerHeight(),
width = this.$element.outerWidth();
this.menu.css({
'top': this.options.isAppendToBody ? pos.top + height + Dropdown.settings.menuTopOffset : height + Dropdown.settings.menuTopOffset,
'left': this.options.isAppendToBody ? ( this.options.align == 'right' ? 'auto' : pos.left ) : ( this.options.align == 'right' ? 'auto' : 0 ),
'right': this.options.isAppendToBody ? ( this.options.align == 'right' ? $(window).width() - pos.left - width : 'auto' ) : ( this.options.align == 'right' ? 0 : 'auto' )
});
}
};
// Init
$(document).ready(function($) {
$('body').on('click', function (e) {
var $target = $(e.target);
// TODO: Fix hide function
if ($target.data('toggle') != 'dropdown' && !$target.hasClass('dropdown-menu')) Dropdown.methods.hideAll();
});
});
$(document).on('click', Dropdown.settings.dropdownSelector, function () {
var
dropdown = $(this),
object = dropdown.data('object');
if (!object) dropdown.data('object', (object = new Dropdown(this)));
object.toggle();
return false;
});
})(jQuery);

View file

@ -1,139 +0,0 @@
var ls = ls || {};
/**
* Всплывающие поп-апы
*/
ls.infobox = (function ($) {
/**
* Шаблон процесс-бара
*/
this.sTemplateProcess=['<div class="infobox-process">process..',
'</div>'].join('');
this.aLinks=[];
this.aOptDef={
hideOther: true,
className: 'infobox-standart',
showOn: 'none',
alignTo: 'target',
alignX: 'inner-left',
alignY: 'bottom',
offsetX: -14,
offsetY: 5,
fade: false,
slide: false,
bgImageFrameSize: 10,
showTimeout: 500,
hideTimeout: 100,
timeOnScreen: 0,
liveEvents: false,
allowTipHover: true,
followCursor: false,
slideOffset: 8,
showAniDuration: 300,
hideAniDuration: 300,
refreshAniDuration: 200
};
this.show = function(oLink,sContent,aOpt) {
aOpt=$.extend(true,{},this.aOptDef,aOpt || {});
if (aOpt.hideOther) {
this.hideAll();
}
$oLink=$(oLink);
if ($oLink.data('isPoshytip')) {
$oLink.poshytip('update', sContent);
} else {
$oLink.on('click',function(e){
e.stopPropagation();
});
$oLink.poshytip({
className: 'js-infobox '+aOpt.className,
content: sContent,
showOn: aOpt.showOn,
alignTo: aOpt.alignTo,
alignX: aOpt.alignX,
fade: aOpt.fade,
slide: aOpt.slide,
alignY: aOpt.alignY,
offsetX: aOpt.offsetX,
offsetY: aOpt.offsetY,
bgImageFrameSize: aOpt.bgImageFrameSize,
showTimeout: aOpt.showTimeout,
hideTimeout: aOpt.hideTimeout,
timeOnScreen: aOpt.timeOnScreen,
liveEvents: aOpt.liveEvents,
allowTipHover: aOpt.allowTipHover,
followCursor: aOpt.followCursor,
slideOffset: aOpt.slideOffset,
showAniDuration: aOpt.showAniDuration,
hideAniDuration: aOpt.hideAniDuration,
refreshAniDuration: aOpt.refreshAniDuration
});
$oLink.data('isPoshytip',1);
this.aLinks.push($oLink);
}
$oLink.poshytip('show');
};
this.hideAll = function() {
$.each(this.aLinks,function(k,oLink){
this.hide(oLink);
}.bind(this));
};
this.hide = function(oLink) {
$(oLink).poshytip('hide');
return false;
};
this.hideIfShow = function(oLink) {
if ($(oLink).data('poshytip') && $(oLink).data('poshytip').$tip.data('active')) {
this.hide(oLink);
return true;
}
return false;
};
this.showProcess = function(oLink,aOpt) {
this.show(oLink,this.sTemplateProcess,aOpt);
};
this.showInfoBlog = function(oLink,iBlogId) {
if (this.hideIfShow(oLink)) {
return false;
}
this.showProcess(oLink);
var url = aRouter['ajax']+'infobox/info/blog/';
var params = {iBlogId: iBlogId};
'*showInfoBlogBefore*'; '*/showInfoBlogBefore*';
ls.ajax(url, params, function(result) {
if (result.bStateError) {
ls.msg.error(null, result.sMsg);
this.hide(oLink);
} else {
this.show(oLink,result.sText);
ls.hook.run('ls_infobox_show_info_blog_after',[oLink, iBlogId, result]);
}
}.bind(this));
return false;
};
jQuery(function($){
$(document).click(function(e) {
if (e.which==1 && !$(e.target).data('isPoshytip')) {
this.hideAll();
}
}.bind(this));
$('body').on("click", ".js-infobox", function(e) {
e.stopPropagation();
});
}.bind(this));
return this;
}).call(ls.infobox || {},jQuery);

View file

@ -1,217 +0,0 @@
/*
* Modal
*
* Author: Denis Shakhov
* Version: 1.0
*
*/
(function ($) {
/**
* Constructs modal objects
* @constructor
* @class Modal
* @param {Object} options Options
*/
var Modal = function (element, options) {
var $this = this;
this.options = options || {};
this.$element = $(element);
// TODO: Fix data options
this.center = this.$element.data('center') == undefined ? true : (this.$element.data('center') === "false" ? false : true);
this.$element.appendTo(Modal.settings._overlay);
this.$element.find(Modal.settings.closeSelector).on('click.modal', function () {
Modal.settings._hideOverlay();
if ($this.options.isAjax) $this.$element.remove();
return false;
});
};
/**
* Static methods and vars
* @type {Object}
*/
Modal.settings = {
modalClass: 'modal',
overlayClass: 'modal-overlay',
loaderClass: 'modal-loader',
modalSelector: '[data-type=modal]',
toggleSelector: '[data-type=modal-toggle]',
closeSelector: '[data-type=modal-close]',
ajaxVar: 'sText',
closeOnEsc: true,
_windowWidth: null,
_windowHeight: null,
_scrollTop: 0,
_overlay: null,
_loader: null,
_resize: function () {
Modal.settings._windowWidth = $(window).width();
Modal.settings._windowHeight = $(window).height();
Modal.settings._overlay.height(Modal.settings._windowHeight);
},
/**
* Hide overlay, loader and all modals
*/
_hideOverlay: function (callback) {
if (!Modal.settings._overlay.is(':visible')) return false;
Modal.settings._overlay.fadeOut(300, function () {
if ($('html').hasClass('ie7')) {
$('html').css('overflow', 'auto');
} else {
$('html').css('overflow', 'visible');
}
$('body').css({'margin-right': 0});
Modal.settings._overlay.find(Modal.settings.modalSelector).hide();
Modal.settings._loader.hide();
$(window).scrollTop(Modal.settings._scrollTop);
callback && callback();
});
},
/**
* Show overlay
*/
_showOverlay: function () {
if (Modal.settings._overlay.is(':visible')) {
Modal.settings._overlay.find(Modal.settings.modalSelector).hide();
Modal.settings._loader.hide();
return false;
}
Modal.settings._scrollTop = $(window).scrollTop();
$('html').css({'overflow': 'hidden'});
// Prevent content from shifting
$('body').css({'margin-right': $(window).width() - Modal.settings._windowWidth});
$(window).scrollTop(Modal.settings._scrollTop);
// Show overlay
Modal.settings._overlay.fadeIn(300);
}
};
Modal.prototype = {
/**
* Show modal
*/
show: function () {
Modal.settings._showOverlay();
this.$element.show();
Modal.settings._overlay.scrollTop(0);
// Center
if (this.center && Modal.settings._windowHeight > this.$element.outerHeight()) {
this.$element.css({'margin-top': (Modal.settings._windowHeight - this.$element.outerHeight()) / 2});
}
}
};
$(document).ready(function($) {
// Hide scrollbar in IE7
if ($('html').hasClass('ie7')) {
$('body').attr('scroll', 'no');
$('html').css('overflow', 'auto');
}
Modal.settings._overlay = $('<div class="' + Modal.settings.overlayClass + '" />').height(Modal.settings._windowHeight).appendTo('body');
Modal.settings._loader = $('<div class="' + Modal.settings.loaderClass + '" />').height(Modal.settings._windowHeight).appendTo(Modal.settings._overlay);
Modal.settings._resize();
Modal.settings._overlay.on('click.modal', function (e) {
if (e.target === this) {
Modal.settings._hideOverlay();
}
});
$(window).on('resize.modal', function () {
Modal.settings._resize();
});
// Close on esc
if (Modal.settings.closeOnEsc) {
$(document).on('keyup.modal', function (e) {
e.keyCode === 27 && Modal.settings._hideOverlay();
});
}
// Init modals
$(Modal.settings.modalSelector).each(function () {
var
modal = $(this),
object = modal.data('object');
if (!object) modal.data('object', (object = new Modal(this)));
});
// Init toggles
$(Modal.settings.toggleSelector).each(function () {
var
toggle = $(this),
url = toggle.data('modal-url'),
modal = $('#' + toggle.data('modal-target')).data('object');
toggle.on('click.modal', function () {
if (url) {
Modal.settings._loader.show();
Modal.settings._showOverlay();
// TODO: Fix params selector
var params = $(this).data() || {};
ls.ajax(url, params, function (result) {
if (result.bStateError) {
Modal.settings._hideOverlay();
ls.msg.error('Error', result.sMsg);
} else {
var modal = $(result[Modal.settings.ajaxVar]);
Modal.settings._loader.hide();
modal.data('object', (object = new Modal(modal, { isAjax: true })));
object.show();
}
}, {
error: function () {
Modal.settings._hideOverlay(function () {
// TODO: Move text to lang file
ls.msg.error('Error', 'Please try again later');
});
}
});
} else {
modal.show();
}
return false;
});
});
});
/**
* Plugin defention
*/
$.fn.jqmShow = $.fn.modalShow = function () {
$(this).data('object').show();
};
$.fn.jqmHide = $.fn.modalHide = function () {
Modal.settings._hideOverlay();
};
})(jQuery);

View file

@ -1,72 +0,0 @@
/*
* Tabs
*
* Author: Denis Shakhov
* Version: 1.0
*
*/
(function($) {
/**
* Constructs tab objects
* @constructor
* @class Tab
* @param {Object} options Options
*/
var Tab = function (element, options) {
this.element = $(element);
};
/**
* Static methods and vars
* @type {Object}
*/
Tab.settings = {
tabsSelector: '[data-toggle=tabs]',
tabSelector: '[data-toggle=tab]',
contentSelector: '[data-toggle=tab-content]',
paneSelector: '[data-toggle=tab-pane]'
};
Tab.prototype = {
/**
* Activate tab
*/
activate: function () {
var
pane = $('#' + this.element.data('tab-target')),
dropdown = this.element.closest('ul').parent('li');
this.element
.addClass('active')
.closest(Tab.settings.tabsSelector)
.find('li') // TODO: Fix selector
.not(this.element)
.removeClass('active');
if (dropdown.length > 0) dropdown.addClass('active');
pane.show().parent(Tab.settings.contentSelector).find(Tab.settings.paneSelector).not(pane).hide();
}
};
$(document).on('click.tab', Tab.settings.tabSelector, function () {
$(this).data('object').activate();
return false;
});
$.fn.tabActivate = function () {
$(this).data('object').activate();
};
// Init
$(document).ready(function($) {
$(Tab.settings.tabSelector).each(function () {
var
tab = $(this),
tabFirst = tab.closest(Tab.settings.tabsSelector).find('li').eq(0);
object = tab.data('object');
if (!object) tab.data('object', (object = new Tab(this)));
if (!tabFirst.hasClass('active')) tabFirst.data('object').activate();
});
});
})(jQuery);

View file

@ -0,0 +1,68 @@
/**
* Dropdowns
*
* @version 1.0
* @author Denis Shakhov <denis.shakhov@gmail.com>
*/
var ls = ls || {};
(function($) {
"use strict";
var Dropdown = function (element, options) {
this.init('dropdown', element, options);
};
Dropdown.prototype = $.extend({}, $.fn.popup.Constructor.prototype, {
constructor: Dropdown,
hooks : {
onInitTarget: function () {
var self = this;
// Toggle's text
if (this.options.changeText) {
var activeText = this.$target.find('li.active').text();
activeText && this.$toggle.text(activeText);
}
// Change dropdown's text on item click and add 'active' class to clicked item
if (this.options.activateItems || this.options.changeText) {
this.$target.find('li > a').on('click', function (e) {
var $link = $(this);
if (self.options.activateItems) {
self.$target.find('li').removeClass('active');
$link.parent('li').addClass('active');
}
if (self.options.changeText) {
self.$toggle.find('[data-type=dropdown-text]').text($link.text());
}
self.hide();
});
}
}
}
});
$.fn.dropdown = function (options, variable, value) {
return ls.popup.initPlugin('dropdown', this, options, variable, value);
};
$.fn.dropdown.Constructor = Dropdown;
$.fn.dropdown.defaults = $.extend({} , $.fn.popup.defaults, {
effect: 'show',
duration: 0
});
$.fn.dropdown.settings = $.extend({} , $.fn.popup.settings, {
toggleSelector: '[data-type=dropdown-toggle]',
targetSelector: '[data-type=dropdown-target]'
});
$(document).ready(function($) {
$($.fn.dropdown.settings.toggleSelector).dropdown();
});
})(jQuery);

View file

@ -0,0 +1,339 @@
/*
* Modal
*
* @version 1.0
* @author Denis Shakhov <denis.shakhov@gmail.com>
*/
var ls = ls || {};
(function ($) {
"use strict";
/**
* Private vars and methods
*/
var windowWidth = null,
windowHeight = null,
overlay = null,
loader = null,
scrollTop = 0;
/**
* Resize
*/
var resize = function () {
windowWidth = $(window).width();
windowHeight = $(window).height();
overlay.height(windowHeight);
};
/**
* Show overlay
*/
var showOverlay = function () {
if (overlay.is(':visible')) {
overlay.find($.fn.modal.settings.modalSelector).hide();
Modal.hideLoader(false);
return false;
}
scrollTop = $(window).scrollTop();
$('html').css({'overflow': 'hidden'});
// Prevent content from shifting
$('body').css({'margin-right': $(window).width() - windowWidth});
$(window).scrollTop(scrollTop);
// Show overlay
overlay.fadeIn(300);
};
/**
* Constructs modal objects
* @constructor
* @class Modal
* @param {Object} options Options
*/
var Modal = ls.modal = function (element, options) {
var self = this;
this.$element = $(element);
this.options = $.extend({}, $.fn.modal.defaults, options);
this.$element.appendTo(overlay);
this.$element.find($.fn.modal.settings.closeSelector).on('click.modal', function (e) {
Modal.hideAll();
e.preventDefault();
});
// Close on esc
if (this.options.closeOnEsc) {
$(document).on('keyup.modal', function (e) {
e.keyCode === 27 && Modal.hideAll();
});
}
};
/**
* Show loader
* @param {Boolean} bText Use text instead of animation
* @param {String} sText Text
* @param {String} bLock Lock overlay and active modal, default: false
* @param {Number} iLockTime Lock time
*/
Modal.showLoader = function (bText, sText, bLock, iLockTime) {
overlay.find('.' + $.fn.modal.settings.lockClass).remove();
if ( ! overlay.is(':visible')) showOverlay();
if (bLock) {
var ts = new Date().getTime();
overlay.data('locked', true);
overlay.find($.fn.modal.settings.modalSelector + ':visible').append('<div class="' + $.fn.modal.settings.lockClass + '" />');
loader.data('id', ts);
setTimeout(function () {
if (loader.data('id') == ts) {
Modal.hideAll();
ls.msg.error('Ошибка', 'Ошибка загрузки');
}
}, (iLockTime || this.options.lockTime) * 1000);
}
if (bText) {
loader
.addClass($.fn.modal.settings.loaderTextClass)
.text(sText || this.options.loaderText)
.show();
} else {
loader.show();
}
};
/**
* Hide loader
*/
Modal.hideLoader = function (bHideOverlay) {
bHideOverlay = typeof bHideOverlay === 'undefined' ? true : bHideOverlay;
overlay.data('locked', false);
overlay.find('.' + $.fn.modal.settings.lockClass).remove();
if (overlay.find($.fn.modal.settings.modalSelector + ':visible').length == 0 && bHideOverlay) Modal.hideAll();
loader
.removeClass($.fn.modal.settings.loaderTextClass)
.text('')
.hide();
};
/**
* Init overlay
*/
Modal.initOverlay = function () {
// Hide scrollbar in IE7
if ($('html').hasClass('ie7')) {
$('body').attr('scroll', 'no');
$('html').css('overflow', 'auto');
}
overlay = $('<div class="' + $.fn.modal.settings.overlayClass + '" data-type="modal-overlay" />').height(windowHeight).appendTo('body');
loader = $('<div class="' + $.fn.modal.settings.loaderClass + '" data-type="modal-loader" />').height(windowHeight).css('z-index', 9999).appendTo(overlay);
resize();
overlay.on('click.modal', function (e) {
if (e.target === this && overlay.data('locked') !== true) {
Modal.hideAll();
}
});
$(window).on('resize.modal', function () {
resize();
});
/**
* Init toggles
*/
$(document).on('click.modal', $.fn.modal.settings.toggleSelector, function (e) {
var toggle = $(this),
options = ls.tools.getDataOptions(toggle);
if (options.url) {
Modal.load(options.url, ls.tools.getDataOptions(toggle, 'param'), options);
} else {
$('#' + options.target).data('object').show();
}
e.preventDefault();
});
};
/**
* Hide overlay, loader and all modals
* @param {Function} callback onHide callback
*/
Modal.hideAll = function (callback) {
if ( ! overlay.is(':visible')) {
return false;
}
overlay.fadeOut(300, function () {
if ($('html').hasClass('ie7')) {
$('html').css('overflow', 'auto');
} else {
$('html').css('overflow', 'visible');
}
$('body').css({'margin-right': 0});
Modal.hideLoader(false);
overlay.find($.fn.modal.settings.modalSelector).each(function () {
var object = $(this).data('object');
object.options.url ? object.$element.remove() : object.$element.hide();
});
$(window).scrollTop(scrollTop);
callback && $.proxy(callback, this)();
});
};
/**
* Load modal from url
* @param {String} url URL
* @param {Object} params Params
* @param {Object} options Options
*/
Modal.load = function (url, params, options) {
var self = this;
showOverlay();
Modal.showLoader();
var options = options || {};
options.url = url;
options.params = params;
ls.ajax(url, params, function (result) {
if (result.bStateError) {
Modal.hideAll();
ls.msg.error('Error', result.sMsg);
} else {
var modal = $(result[self.options.ajaxVar]),
object;
Modal.hideLoader(false);
modal.data('object', (object = new Modal(modal, options)));
object.show();
}
}, {
error: function () {
Modal.hideLoader();
Modal.hideAll(function () {
// TODO: Move text to lang file
ls.msg.error('Error', 'Please try again later');
});
}
});
};
Modal.prototype = {
/**
* Show modal
*/
show: function (options) {
if (options) $.extend(this.options, options);
showOverlay();
this.$element.show();
overlay.scrollTop(0);
// onShow
this.options.onShow && $.proxy(this.options.onShow, this)();
// Center
if (this.options.center && windowHeight > this.$element.outerHeight()) {
this.$element.css({'margin-top': (windowHeight - this.$element.outerHeight()) / 2});
}
},
/**
* Hide modal
*/
hide: function () {
Modal.hideAll();
}
};
/**
* Plugin defention
*/
// Fallback
$.fn.jqmShow = function (options) {
$(this).modal('show');
};
// Fallback
$.fn.jqmHide = function () {
Modal.hideAll();
};
$.fn.modal = function (options, variable, value) {
var returnValue = false;
! $($.fn.modal.settings.overlaySelector).length && Modal.initOverlay();
this.each(function () {
var element = $(this),
object = element.data('object');
if ( ! object ) element.data('object', (object = new Modal(this, $.extend({}, options, typeof options === 'string' ? {} : options))));
if (typeof options === 'string') {
if (options === "option") {
if (value) object.options[variable] = value; else returnValue = object.options[variable];
} else {
object[options]();
}
}
});
return returnValue;
};
/**
* Default options
* @type {Object}
*/
$.fn.modal.defaults = {
url: false,
center: true,
ajaxVar: 'sText',
loaderText: 'Идет загрузка...',
lockTime: 30,
closeOnEsc: true
};
/**
* Global settings
* @type {Object}
*/
$.fn.modal.settings = {
modalClass: 'modal',
overlayClass: 'modal-overlay',
loaderClass: 'modal-loader',
loaderTextClass: 'modal-loader-text',
lockClass: 'modal-lock',
modalSelector: '[data-type=modal]',
toggleSelector: '[data-type=modal-toggle]',
closeSelector: '[data-type=modal-close]',
overlaySelector: '[data-type=modal-overlay]'
};
})(jQuery);

View file

@ -0,0 +1,72 @@
/**
* Popover
*
* @version 1.0
* @author Denis Shakhov <denis.shakhov@gmail.com>
*/
var ls = ls || {};
(function($) {
"use strict";
var Popover = function (element, options) {
this.init('popover', element, options);
};
Popover.prototype = $.extend({}, $.fn.popup.Constructor.prototype, {
constructor: Popover,
hooks : {
onInitTarget: function () {
if ( ! this.options.target ) {
if ( ! this.options.title ) {
this.options.title = this.$toggle.attr('title');
this.$toggle.removeAttr('title');
}
this.setTitle(this.options.title);
this.setContent(this.options.content);
}
}
},
/**
* Set header
*/
setTitle: function (title) {
var $title = this.$target.find('[data-type=' + this.type + '-title]');
title ? $title.show().html(title) : $title.hide();
}
});
$.fn.popover = function (options, variable, value) {
return ls.popup.initPlugin('popover', this, options, variable, value);
};
$.fn.popover.Constructor = Popover;
$.fn.popover.defaults = $.extend({} , $.fn.popup.defaults, {
template: '<div class="popover" data-type="popover-target">' +
'<div class="tip-arrow"></div>' +
'<div class="popover-title" data-type="popover-title"></div>' +
'<div class="popover-content" data-type="popover-content"></div>' +
'</div>',
alignX: 'center',
alignY: 'top',
offsetY: 10,
duration: 300,
event: 'click'
});
$.fn.popover.settings = $.extend({} , $.fn.popup.settings, {
toggleSelector: '[data-type=popover-toggle]',
targetSelector: '[data-type=popover-target]'
});
// Init
$(document).ready(function($) {
//$($.fn.popover.settings.toggleSelector).popover();
});
})(jQuery);

View file

@ -0,0 +1,357 @@
/**
* Popups
*
* Base plugin for dropdowns, tooltips and popovers
*
* @version 1.0
* @author Denis Shakhov <denis.shakhov@gmail.com>
*/
var ls = ls || {};
(function($) {
"use strict";
/**
* Constructs popup objects
* @constructor
* @class Popup
* @param {Object} toggle Toggle element
* @param {Object} options Options
*/
var Popup = ls.popup = function (toggle, options) {
this.init('popup', toggle, options);
};
/**
* Hide all dropdowns
*/
Popup.hideAll = function (type) {
$($.fn[type].settings.toggleSelector + '.' + $.fn[type].settings.openClass).each(function () {
$(this).data('object').hide();
});
};
/**
* Init plugin
*/
Popup.initPlugin = function (type, elements, options, variable, value) {
var returnValue = false;
// Hide when click anywhere but target
$('body').on('click', function (e) {
var el = $($.fn[type].settings.toggleSelector + ', ' + $.fn[type].settings.targetSelector);
if (el.length && ! el.is(e.target) && el.has(e.target).length === 0) {
Popup.hideAll(type);
}
});
// Resize
$(window).resize(function () {
$($.fn[type].settings.toggleSelector + '.' + $.fn[type].settings.openClass).each(function(event) {
$(this).data('object').position();
});
});
elements.each(function () {
var element = $(this),
object = element.data('object');
if ( ! object ) {
element.data('object', (object = new $.fn[type].Constructor(this, $.extend({}, options, ls.tools.getDataOptions(element)))));
object.options.params = ls.tools.getDataOptions(element, 'param');
}
if (typeof options === 'string') {
if (options === "option") {
if (value) object.options[variable] = value; else returnValue = object.options[variable];
} else {
object[options]();
}
}
});
return returnValue;
};
Popup.prototype = {
constructor: Popup,
/**
* Hooks
* @type {Object}
*/
hooks : {
onInitTarget: false
},
/**
* Init
* @param {String} type Type of control
* @param {Object} toggle Toggle element
* @param {Object} options Options
*/
init: function (type, toggle, options) {
this.type = type;
this.timeout = false;
this.open = false;
this.togglePosition = {};
this.targetPosition = {};
// Default options
this.options = $.extend({}, $.fn[this.type].defaults, options);
// Toggle
this.$toggle = $(toggle);
// Events
this.$toggle.on(this.options.event + '.' + this.type, this.options.selector, $.proxy(this.toggle, this));
// Init target
! this.options.template && this.initTarget(this);
},
/**
* Init target
*/
initTarget: function () {
var self = this;
this.$target = this.options.template && ! this.options.target ? $(this.options.template) : $('#' + this.options.target);
this.$target.hide();
// Align classes
this.$target.addClass($.fn[this.type].settings.menuAlignPrefixClass + 'x-' + this.options.alignX);
this.$target.addClass($.fn[this.type].settings.menuAlignPrefixClass + 'y-' + this.options.alignY);
// Append to body
if (this.options.appendToBody) this.$target.appendTo('body');
// Target's content
this.options.content && this.setContent(this.options.content);
// Add classes
this.options.class && this.$target.addClass(this.options.class);
// Hide
this.$target.find('[data-type=dropdown-hide]').on('click', this.hide);
// Hook
if (this.hooks.onInitTarget) $.proxy(this.hooks.onInitTarget, this)();
},
/**
* Mouse enter
*/
enter: function () {
var self = this;
if ( ! this.options.delay ) {
this.show();
} else {
this.timeout = setTimeout(function() { self.show(); }, this.options.delay);
}
},
/**
* Mouse leave
*/
leave: function () {
if ( ! this.options.delay ) {
this.hide();
} else {
this.open && this.hide();
clearTimeout(this.timeout);
this.timeout = false;
}
},
/**
* Toggle dropdown
*/
toggle: function (e) {
if ( ! this.options.delay) {
! this.open ? this.enter() : this.leave();
} else {
this.open || (this.timeout && ! this.open) ? this.leave() : this.enter();
}
this.options.preventDefault && e.preventDefault();
},
/**
* Show dropdown
*/
show: function () {
var self = this;
typeof this.options.onShow === 'function' && $.proxy(this.options.onShow, this)();
this.options.template && this.initTarget();
Popup.hideAll(this.type);
this.position();
this.$toggle.addClass($.fn[this.type].settings.openClass);
this.$target[this.options.effect == 'show' ? 'show' : (this.options.effect == 'fade' ? 'fadeIn' : 'slideDown')](this.options.duration);
this.open = true;
// Ajax
if (this.options.url) {
this.setContent('');
this.$target.addClass('loading');
this.position();
ls.ajax(this.options.url, this.options.params, function (result) {
if (result.bStateError) {
self.hide();
ls.msg.error('Error', result.sMsg);
} else {
self.$target.removeClass('loading');
self.setContent(result[self.options.ajaxVar]);
self.position();
}
}, {
error: function () {
self.hide();
ls.msg.error('Error', 'Please try again later');
}
});
}
},
/**
* Hide dropdown
*/
hide: function () {
var self = this;
typeof this.options.onHide === 'function' && $.proxy(this.options.onHide, this)();
this.$toggle.removeClass($.fn[this.type].settings.openClass);
this.$target[this.options.effect == 'show' ? 'hide' : (this.options.effect == 'fade' ? 'fadeOut' : 'slideUp')](this.options.duration, function () {
if (self.options.template && ! self.options.target) {
self.$target.remove();
self.$target = false;
}
self.open = false;
});
},
/**
* Set content
*/
setContent: function (content) {
var contentElement = this.$target.find('[data-type=' + this.type + '-content]');
if ( ! contentElement.length ) contentElement = this.$target;
contentElement.html(content);
},
/**
* Position menu
*/
position: function () {
var toggleWidth = this.$toggle.outerWidth(),
toggleHeight = this.$toggle.outerHeight(),
targetWidth = this.$target.outerWidth(),
targetHeight = this.$target.outerHeight();
this.togglePosition = this.$toggle.offset();
if ( ! this.options.appendToBody ) {
this.togglePosition.top = this.togglePosition.left = 0;
}
switch(this.options.alignY) {
case 'top':
this.targetPosition.top = this.togglePosition.top - targetHeight - this.options.offsetY;
break;
case 'center':
this.targetPosition.top = this.togglePosition.top + (toggleHeight - targetHeight) / 2;
break;
case 'bottom':
this.targetPosition.top = this.togglePosition.top + toggleHeight + this.options.offsetY;
break;
default:
this.targetPosition.top = 0;
}
switch(this.options.alignX) {
case 'left':
this.targetPosition.left = this.options.alignY == 'center' ? this.togglePosition.left - targetWidth - this.options.offsetY : this.togglePosition.left + this.options.offsetX;
break;
case 'center':
this.targetPosition.left = this.togglePosition.left + (toggleWidth - targetWidth) / 2;
break;
case 'right':
this.targetPosition.left = this.options.alignY == 'center' ? this.togglePosition.left + toggleWidth + this.options.offsetY : this.togglePosition.left + toggleWidth - targetWidth - this.options.offsetX;
break;
default:
this.targetPosition.left = 0;
}
this.$target.css({
'top' : this.targetPosition.top,
'left' : this.targetPosition.left,
'bottom' : 'auto',
'right' : 'auto'
});
}
};
/**
* Plugin defenition
*/
$.fn.popup = function (options, variable, value) {
//Popup.initPlugin('popup', this, options);
};
$.fn.popup.Constructor = Popup;
/**
* Default options
* @type {Object}
*/
$.fn.popup.defaults = {
target : false, // Target ID
selector : false, // Target ID
alignX : 'left', // left, center, right
alignY : 'bottom', // top, center, bottom
alignTo : false,
offsetX : 0, // Shift along toggle
offsetY : 3, // Distance from toggle
appendToBody : true, // Append toggle to body
changeText : false,
activateItems : false,
event : 'click',
effect : 'fade', // slide, fade, show
delay : 0,
duration : 200,
url : false,
params : {},
class : false,
title : false,
content : false,
template : false,
ajaxVar : 'sText',
onShow : false,
onHide : false,
preventDefault : true
};
// Global settings
$.fn.popup.settings = {
// Selectors
toggleSelector: '[data-type=popup-toggle]',
targetSelector: '[data-type=popup-target]',
// Classes
openClass: 'open',
menuAlignPrefixClass: 'align'
};
})(jQuery);

View file

@ -0,0 +1,96 @@
/*
* Tabs
*
* @version 1.0
* @author Denis Shakhov <denis.shakhov@gmail.com>
*/
var ls = ls || {};
(function($) {
"use strict";
/**
* Constructs tab objects
* @constructor
* @class Tab
* @param {Object} options Options
*/
var Tab = function (element, options) {
this.options = $.extend({}, $.fn.tab.defaults, options);
this.$tab = $(element);
this.$pane = $('#' + this.options.target);
};
Tab.prototype = {
/**
* Activate tab
*/
activate: function () {
var dropdown = this.$tab.closest('ul').parent('li');
this.$tab
.addClass('active')
.closest($.fn.tab.settings.tabsSelector)
.find('li') // TODO: Fix selector
.not(this.$tab)
.removeClass('active');
if (dropdown.length > 0) dropdown.addClass('active');
this.$pane.show().parent($.fn.tab.settings.contentSelector).find($.fn.tab.settings.paneSelector).not(this.$pane).hide();
}
};
$.fn.tab = function (options, variable, value) {
var returnValue = false;
this.each(function () {
var tab = $(this),
object = tab.data('object');
if ( ! object ) tab.data('object', (object = new Tab(this, $.extend({}, options, ls.tools.getDataOptions(tab)))));
if (typeof options === 'string') {
if (options === "option") {
if (value) object.options[variable] = value; else returnValue = object.options[variable];
} else {
object[options]();
}
}
});
return returnValue;
};
/**
* Default options
* @type {Object}
*/
$.fn.tab.defaults = {
target: false
};
/**
* Global settings
* @type {Object}
*/
$.fn.tab.settings = {
tabsSelector: '[data-type=tabs]',
tabSelector: '[data-type=tab]',
contentSelector: '[data-type=tab-content]',
paneSelector: '[data-type=tab-pane]'
};
$(document).on('click.tab', $.fn.tab.settings.tabSelector, function (e) {
$(this).tab('activate');
e.preventDefault();
});
// Init
$(document).ready(function($) {
$($.fn.tab.settings.tabSelector).tab();
});
})(jQuery);

View file

@ -0,0 +1,60 @@
/**
* Tooltip
*
* @version 1.0
* @author Denis Shakhov <denis.shakhov@gmail.com>
*/
var ls = ls || {};
(function($) {
"use strict";
var Tooltip = function (element, options) {
this.init('tooltip', element, options);
};
Tooltip.prototype = $.extend({}, $.fn.popup.Constructor.prototype, {
constructor: Tooltip,
hooks : {
onInitTarget: function () {
if ( ! this.options.target ) {
if ( ! this.options.content ) {
this.options.content = this.$toggle.attr('title');
this.$toggle.removeAttr('title');
}
this.setContent(this.options.content);
}
}
}
});
$.fn.tooltip = function (options, variable, value) {
return ls.popup.initPlugin('tooltip', this, options, variable, value);
};
$.fn.tooltip.Constructor = Tooltip;
$.fn.tooltip.defaults = $.extend({} , $.fn.popup.defaults, {
template: '<div class="tooltip" data-type="tooltip-target"><div class="tip-arrow"></div><div class="tooltip-content" data-type="tooltip-content"></div></div>',
alignX: 'center',
alignY: 'top',
effect: 'fade',
offsetY: 10,
duration: 500,
delay: 500,
event: 'hover',
preventDefault: false
});
$.fn.tooltip.settings = $.extend({} , $.fn.popup.settings, {
toggleSelector: '[data-type=tooltip-toggle]',
targetSelector: '[data-type=tooltip-target]'
});
$(document).ready(function($) {
$($.fn.tooltip.settings.toggleSelector).tooltip();
});
})(jQuery);

View file

@ -0,0 +1,299 @@
/**
* @preserve HTML5 Shiv v3.6.2pre | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
*/
;(function(window, document) {
/*jshint evil:true */
/** version */
var version = '3.6.2pre';
/** Preset options */
var options = window.html5 || {};
/** Used to skip problem elements */
var reSkip = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i;
/** Not all elements can be cloned in IE **/
var saveClones = /^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i;
/** Detect whether the browser supports default html5 styles */
var supportsHtml5Styles;
/** Name of the expando, to work with multiple documents or to re-shiv one document */
var expando = '_html5shiv';
/** The id for the the documents expando */
var expanID = 0;
/** Cached data for each document */
var expandoData = {};
/** Detect whether the browser supports unknown elements */
var supportsUnknownElements;
(function() {
try {
var a = document.createElement('a');
a.innerHTML = '<xyz></xyz>';
//if the hidden property is implemented we can assume, that the browser supports basic HTML5 Styles
supportsHtml5Styles = ('hidden' in a);
supportsUnknownElements = a.childNodes.length == 1 || (function() {
// assign a false positive if unable to shiv
(document.createElement)('a');
var frag = document.createDocumentFragment();
return (
typeof frag.cloneNode == 'undefined' ||
typeof frag.createDocumentFragment == 'undefined' ||
typeof frag.createElement == 'undefined'
);
}());
} catch(e) {
// assign a false positive if detection fails => unable to shiv
supportsHtml5Styles = true;
supportsUnknownElements = true;
}
}());
/*--------------------------------------------------------------------------*/
/**
* Creates a style sheet with the given CSS text and adds it to the document.
* @private
* @param {Document} ownerDocument The document.
* @param {String} cssText The CSS text.
* @returns {StyleSheet} The style element.
*/
function addStyleSheet(ownerDocument, cssText) {
var p = ownerDocument.createElement('p'),
parent = ownerDocument.getElementsByTagName('head')[0] || ownerDocument.documentElement;
p.innerHTML = 'x<style>' + cssText + '</style>';
return parent.insertBefore(p.lastChild, parent.firstChild);
}
/**
* Returns the value of `html5.elements` as an array.
* @private
* @returns {Array} An array of shived element node names.
*/
function getElements() {
var elements = html5.elements;
return typeof elements == 'string' ? elements.split(' ') : elements;
}
/**
* Returns the data associated to the given document
* @private
* @param {Document} ownerDocument The document.
* @returns {Object} An object of data.
*/
function getExpandoData(ownerDocument) {
var data = expandoData[ownerDocument[expando]];
if (!data) {
data = {};
expanID++;
ownerDocument[expando] = expanID;
expandoData[expanID] = data;
}
return data;
}
/**
* returns a shived element for the given nodeName and document
* @memberOf html5
* @param {String} nodeName name of the element
* @param {Document} ownerDocument The context document.
* @returns {Object} The shived element.
*/
function createElement(nodeName, ownerDocument, data){
if (!ownerDocument) {
ownerDocument = document;
}
if(supportsUnknownElements){
return ownerDocument.createElement(nodeName);
}
if (!data) {
data = getExpandoData(ownerDocument);
}
var node;
if (data.cache[nodeName]) {
node = data.cache[nodeName].cloneNode();
} else if (saveClones.test(nodeName)) {
node = (data.cache[nodeName] = data.createElem(nodeName)).cloneNode();
} else {
node = data.createElem(nodeName);
}
// Avoid adding some elements to fragments in IE < 9 because
// * Attributes like `name` or `type` cannot be set/changed once an element
// is inserted into a document/fragment
// * Link elements with `src` attributes that are inaccessible, as with
// a 403 response, will cause the tab/window to crash
// * Script elements appended to fragments will execute when their `src`
// or `text` property is set
return node.canHaveChildren && !reSkip.test(nodeName) ? data.frag.appendChild(node) : node;
}
/**
* returns a shived DocumentFragment for the given document
* @memberOf html5
* @param {Document} ownerDocument The context document.
* @returns {Object} The shived DocumentFragment.
*/
function createDocumentFragment(ownerDocument, data){
if (!ownerDocument) {
ownerDocument = document;
}
if(supportsUnknownElements){
return ownerDocument.createDocumentFragment();
}
data = data || getExpandoData(ownerDocument);
var clone = data.frag.cloneNode(),
i = 0,
elems = getElements(),
l = elems.length;
for(;i<l;i++){
clone.createElement(elems[i]);
}
return clone;
}
/**
* Shivs the `createElement` and `createDocumentFragment` methods of the document.
* @private
* @param {Document|DocumentFragment} ownerDocument The document.
* @param {Object} data of the document.
*/
function shivMethods(ownerDocument, data) {
if (!data.cache) {
data.cache = {};
data.createElem = ownerDocument.createElement;
data.createFrag = ownerDocument.createDocumentFragment;
data.frag = data.createFrag();
}
ownerDocument.createElement = function(nodeName) {
//abort shiv
if (!html5.shivMethods) {
return data.createElem(nodeName);
}
return createElement(nodeName, ownerDocument, data);
};
ownerDocument.createDocumentFragment = Function('h,f', 'return function(){' +
'var n=f.cloneNode(),c=n.createElement;' +
'h.shivMethods&&(' +
// unroll the `createElement` calls
getElements().join().replace(/\w+/g, function(nodeName) {
data.createElem(nodeName);
data.frag.createElement(nodeName);
return 'c("' + nodeName + '")';
}) +
');return n}'
)(html5, data.frag);
}
/*--------------------------------------------------------------------------*/
/**
* Shivs the given document.
* @memberOf html5
* @param {Document} ownerDocument The document to shiv.
* @returns {Document} The shived document.
*/
function shivDocument(ownerDocument) {
if (!ownerDocument) {
ownerDocument = document;
}
var data = getExpandoData(ownerDocument);
if (html5.shivCSS && !supportsHtml5Styles && !data.hasCSS) {
data.hasCSS = !!addStyleSheet(ownerDocument,
// corrects block display not defined in IE6/7/8/9
'article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}' +
// adds styling not present in IE6/7/8/9
'mark{background:#FF0;color:#000}'
);
}
if (!supportsUnknownElements) {
shivMethods(ownerDocument, data);
}
return ownerDocument;
}
/*--------------------------------------------------------------------------*/
/**
* The `html5` object is exposed so that more elements can be shived and
* existing shiving can be detected on iframes.
* @type Object
* @example
*
* // options can be changed before the script is included
* html5 = { 'elements': 'mark section', 'shivCSS': false, 'shivMethods': false };
*/
var html5 = {
/**
* An array or space separated string of node names of the elements to shiv.
* @memberOf html5
* @type Array|String
*/
'elements': options.elements || 'abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup main mark meter nav output progress section summary time video',
/**
* current version of html5shiv
*/
'version': version,
/**
* A flag to indicate that the HTML5 style sheet should be inserted.
* @memberOf html5
* @type Boolean
*/
'shivCSS': (options.shivCSS !== false),
/**
* Is equal to true if a browser supports creating unknown/HTML5 elements
* @memberOf html5
* @type boolean
*/
'supportsUnknownElements': supportsUnknownElements,
/**
* A flag to indicate that the document's `createElement` and `createDocumentFragment`
* methods should be overwritten.
* @memberOf html5
* @type Boolean
*/
'shivMethods': (options.shivMethods !== false),
/**
* A string to describe the type of `html5` object ("default" or "default print").
* @memberOf html5
* @type String
*/
'type': 'default',
// shivs the document according to the specified `html5` object options
'shivDocument': shivDocument,
//creates a shived element
createElement: createElement,
//creates a shived documentFragment
createDocumentFragment: createDocumentFragment
};
/*--------------------------------------------------------------------------*/
// expose html5
window.html5 = html5;
// shiv the document
shivDocument(document);
}(this, document));

View file

Before

Width:  |  Height:  |  Size: 329 B

After

Width:  |  Height:  |  Size: 329 B

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 212 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 208 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 335 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 207 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 262 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 262 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 332 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 280 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

View file

@ -0,0 +1,904 @@
/*! jQuery UI - v1.10.2 - 2013-03-30
* http://jqueryui.com
* Includes: jquery.ui.core.css, jquery.ui.resizable.css, jquery.ui.selectable.css, jquery.ui.accordion.css, jquery.ui.autocomplete.css, jquery.ui.datepicker.css, jquery.ui.menu.css, jquery.ui.progressbar.css, jquery.ui.slider.css
* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=highlight_soft&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=glass&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
* Copyright 2013 jQuery Foundation and other contributors Licensed MIT */
/* Layout helpers
----------------------------------*/
.ui-helper-hidden {
display: none;
}
.ui-helper-hidden-accessible {
border: 0;
clip: rect(0 0 0 0);
height: 1px;
margin: -1px;
overflow: hidden;
padding: 0;
position: absolute;
width: 1px;
}
.ui-helper-reset {
margin: 0;
padding: 0;
border: 0;
outline: 0;
line-height: 1.3;
text-decoration: none;
font-size: 100%;
list-style: none;
}
.ui-helper-clearfix:before,
.ui-helper-clearfix:after {
content: "";
display: table;
border-collapse: collapse;
}
.ui-helper-clearfix:after {
clear: both;
}
.ui-helper-clearfix {
min-height: 0; /* support: IE7 */
}
.ui-helper-zfix {
width: 100%;
height: 100%;
top: 0;
left: 0;
position: absolute;
opacity: 0;
filter:Alpha(Opacity=0);
}
.ui-front {
z-index: 100;
}
/* Interaction Cues
----------------------------------*/
.ui-state-disabled {
cursor: default !important;
}
/* Icons
----------------------------------*/
/* states and images */
.ui-icon {
display: block;
text-indent: -99999px;
overflow: hidden;
background-repeat: no-repeat;
}
/* Misc visuals
----------------------------------*/
/* Overlays */
.ui-widget-overlay {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
.ui-resizable {
position: relative;
}
.ui-resizable-handle {
position: absolute;
font-size: 0.1px;
display: block;
}
.ui-resizable-disabled .ui-resizable-handle,
.ui-resizable-autohide .ui-resizable-handle {
display: none;
}
.ui-resizable-n {
cursor: n-resize;
height: 7px;
width: 100%;
top: -5px;
left: 0;
}
.ui-resizable-s {
cursor: s-resize;
height: 7px;
width: 100%;
bottom: -5px;
left: 0;
}
.ui-resizable-e {
cursor: e-resize;
width: 7px;
right: -5px;
top: 0;
height: 100%;
}
.ui-resizable-w {
cursor: w-resize;
width: 7px;
left: -5px;
top: 0;
height: 100%;
}
.ui-resizable-se {
cursor: se-resize;
width: 12px;
height: 12px;
right: 1px;
bottom: 1px;
}
.ui-resizable-sw {
cursor: sw-resize;
width: 9px;
height: 9px;
left: -5px;
bottom: -5px;
}
.ui-resizable-nw {
cursor: nw-resize;
width: 9px;
height: 9px;
left: -5px;
top: -5px;
}
.ui-resizable-ne {
cursor: ne-resize;
width: 9px;
height: 9px;
right: -5px;
top: -5px;
}
.ui-selectable-helper {
position: absolute;
z-index: 100;
border: 1px dotted black;
}
.ui-accordion .ui-accordion-header {
display: block;
cursor: pointer;
position: relative;
margin-top: 2px;
padding: .5em .5em .5em .7em;
min-height: 0; /* support: IE7 */
}
.ui-accordion .ui-accordion-icons {
padding-left: 2.2em;
}
.ui-accordion .ui-accordion-noicons {
padding-left: .7em;
}
.ui-accordion .ui-accordion-icons .ui-accordion-icons {
padding-left: 2.2em;
}
.ui-accordion .ui-accordion-header .ui-accordion-header-icon {
position: absolute;
left: .5em;
top: 50%;
margin-top: -8px;
}
.ui-accordion .ui-accordion-content {
padding: 1em 2.2em;
border-top: 0;
overflow: auto;
}
.ui-autocomplete {
position: absolute;
top: 0;
left: 0;
cursor: default;
}
.ui-datepicker {
width: 17em;
padding: .2em .2em 0;
display: none;
}
.ui-datepicker .ui-datepicker-header {
position: relative;
padding: .2em 0;
}
.ui-datepicker .ui-datepicker-prev,
.ui-datepicker .ui-datepicker-next {
position: absolute;
top: 2px;
width: 1.8em;
height: 1.8em;
}
.ui-datepicker .ui-datepicker-prev-hover,
.ui-datepicker .ui-datepicker-next-hover {
top: 1px;
}
.ui-datepicker .ui-datepicker-prev {
left: 2px;
}
.ui-datepicker .ui-datepicker-next {
right: 2px;
}
.ui-datepicker .ui-datepicker-prev-hover {
left: 1px;
}
.ui-datepicker .ui-datepicker-next-hover {
right: 1px;
}
.ui-datepicker .ui-datepicker-prev span,
.ui-datepicker .ui-datepicker-next span {
display: block;
position: absolute;
left: 50%;
margin-left: -8px;
top: 50%;
margin-top: -8px;
}
.ui-datepicker .ui-datepicker-title {
margin: 0 2.3em;
line-height: 1.8em;
text-align: center;
}
.ui-datepicker .ui-datepicker-title select {
font-size: 1em;
margin: 1px 0;
}
.ui-datepicker select.ui-datepicker-month-year {
width: 100%;
}
.ui-datepicker select.ui-datepicker-month,
.ui-datepicker select.ui-datepicker-year {
width: 49%;
}
.ui-datepicker table {
width: 100%;
font-size: .9em;
border-collapse: collapse;
margin: 0 0 .4em;
}
.ui-datepicker th {
padding: .7em .3em;
text-align: center;
font-weight: bold;
border: 0;
}
.ui-datepicker td {
border: 0;
padding: 1px;
}
.ui-datepicker td span,
.ui-datepicker td a {
display: block;
padding: .2em;
text-align: right;
text-decoration: none;
}
.ui-datepicker .ui-datepicker-buttonpane {
background-image: none;
margin: .7em 0 0 0;
padding: 0 .2em;
border-left: 0;
border-right: 0;
border-bottom: 0;
}
.ui-datepicker .ui-datepicker-buttonpane button {
float: right;
margin: .5em .2em .4em;
cursor: pointer;
padding: .2em .6em .3em .6em;
width: auto;
overflow: visible;
}
.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
float: left;
}
/* with multiple calendars */
.ui-datepicker.ui-datepicker-multi {
width: auto;
}
.ui-datepicker-multi .ui-datepicker-group {
float: left;
}
.ui-datepicker-multi .ui-datepicker-group table {
width: 95%;
margin: 0 auto .4em;
}
.ui-datepicker-multi-2 .ui-datepicker-group {
width: 50%;
}
.ui-datepicker-multi-3 .ui-datepicker-group {
width: 33.3%;
}
.ui-datepicker-multi-4 .ui-datepicker-group {
width: 25%;
}
.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
border-left-width: 0;
}
.ui-datepicker-multi .ui-datepicker-buttonpane {
clear: left;
}
.ui-datepicker-row-break {
clear: both;
width: 100%;
font-size: 0;
}
/* RTL support */
.ui-datepicker-rtl {
direction: rtl;
}
.ui-datepicker-rtl .ui-datepicker-prev {
right: 2px;
left: auto;
}
.ui-datepicker-rtl .ui-datepicker-next {
left: 2px;
right: auto;
}
.ui-datepicker-rtl .ui-datepicker-prev:hover {
right: 1px;
left: auto;
}
.ui-datepicker-rtl .ui-datepicker-next:hover {
left: 1px;
right: auto;
}
.ui-datepicker-rtl .ui-datepicker-buttonpane {
clear: right;
}
.ui-datepicker-rtl .ui-datepicker-buttonpane button {
float: left;
}
.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
.ui-datepicker-rtl .ui-datepicker-group {
float: right;
}
.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
border-right-width: 0;
border-left-width: 1px;
}
.ui-menu {
list-style: none;
padding: 2px;
margin: 0;
display: block;
outline: none;
}
.ui-menu .ui-menu {
margin-top: -3px;
position: absolute;
}
.ui-menu .ui-menu-item {
margin: 0;
padding: 0;
width: 100%;
}
.ui-menu .ui-menu-divider {
margin: 5px -2px 5px -2px;
height: 0;
font-size: 0;
line-height: 0;
border-width: 1px 0 0 0;
}
.ui-menu .ui-menu-item a {
text-decoration: none;
display: block;
padding: 2px .4em;
line-height: 1.5;
min-height: 0; /* support: IE7 */
font-weight: normal;
}
.ui-menu .ui-menu-item a.ui-state-focus,
.ui-menu .ui-menu-item a.ui-state-active {
font-weight: normal;
margin: -1px;
}
.ui-menu .ui-state-disabled {
font-weight: normal;
margin: .4em 0 .2em;
line-height: 1.5;
}
.ui-menu .ui-state-disabled a {
cursor: default;
}
/* icon support */
.ui-menu-icons {
position: relative;
}
.ui-menu-icons .ui-menu-item a {
position: relative;
padding-left: 2em;
}
/* left-aligned */
.ui-menu .ui-icon {
position: absolute;
top: .2em;
left: .2em;
}
/* right-aligned */
.ui-menu .ui-menu-icon {
position: static;
float: right;
}
.ui-progressbar {
height: 2em;
text-align: left;
overflow: hidden;
}
.ui-progressbar .ui-progressbar-value {
margin: -1px;
height: 100%;
}
.ui-progressbar .ui-progressbar-overlay {
background: url("images/animated-overlay.gif");
height: 100%;
filter: alpha(opacity=25);
opacity: 0.25;
}
.ui-progressbar-indeterminate .ui-progressbar-value {
background-image: none;
}
.ui-slider {
position: relative;
text-align: left;
}
.ui-slider .ui-slider-handle {
position: absolute;
z-index: 2;
width: 1.2em;
height: 1.2em;
cursor: default;
}
.ui-slider .ui-slider-range {
position: absolute;
z-index: 1;
font-size: .7em;
display: block;
border: 0;
background-position: 0 0;
}
/* For IE8 - See #6727 */
.ui-slider.ui-state-disabled .ui-slider-handle,
.ui-slider.ui-state-disabled .ui-slider-range {
filter: inherit;
}
.ui-slider-horizontal {
height: .8em;
}
.ui-slider-horizontal .ui-slider-handle {
top: -.3em;
margin-left: -.6em;
}
.ui-slider-horizontal .ui-slider-range {
top: 0;
height: 100%;
}
.ui-slider-horizontal .ui-slider-range-min {
left: 0;
}
.ui-slider-horizontal .ui-slider-range-max {
right: 0;
}
.ui-slider-vertical {
width: .8em;
height: 100px;
}
.ui-slider-vertical .ui-slider-handle {
left: -.3em;
margin-left: 0;
margin-bottom: -.6em;
}
.ui-slider-vertical .ui-slider-range {
left: 0;
width: 100%;
}
.ui-slider-vertical .ui-slider-range-min {
bottom: 0;
}
.ui-slider-vertical .ui-slider-range-max {
top: 0;
}
/* Component containers
----------------------------------*/
.ui-widget {
font-family: Verdana,Arial,sans-serif;
font-size: 1.1em;
}
.ui-widget .ui-widget {
font-size: 1em;
}
.ui-widget input,
.ui-widget select,
.ui-widget textarea,
.ui-widget button {
font-family: Verdana,Arial,sans-serif;
font-size: 1em;
}
.ui-widget-content {
border: 1px solid #aaaaaa;
background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x;
color: #222222;
}
.ui-widget-content a {
color: #222222;
}
.ui-widget-header {
border: 1px solid #aaaaaa;
background: #cccccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x;
color: #222222;
font-weight: bold;
}
.ui-widget-header a {
color: #222222;
}
/* Interaction states
----------------------------------*/
.ui-state-default,
.ui-widget-content .ui-state-default,
.ui-widget-header .ui-state-default {
border: 1px solid #d3d3d3;
background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x;
font-weight: normal;
color: #555555;
}
.ui-state-default a,
.ui-state-default a:link,
.ui-state-default a:visited {
color: #555555;
text-decoration: none;
}
.ui-state-hover,
.ui-widget-content .ui-state-hover,
.ui-widget-header .ui-state-hover,
.ui-state-focus,
.ui-widget-content .ui-state-focus,
.ui-widget-header .ui-state-focus {
border: 1px solid #999999;
background: #dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x;
font-weight: normal;
color: #212121;
}
.ui-state-hover a,
.ui-state-hover a:hover,
.ui-state-hover a:link,
.ui-state-hover a:visited {
color: #212121;
text-decoration: none;
}
.ui-state-active,
.ui-widget-content .ui-state-active,
.ui-widget-header .ui-state-active {
border: 1px solid #aaaaaa;
background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;
font-weight: normal;
color: #212121;
}
.ui-state-active a,
.ui-state-active a:link,
.ui-state-active a:visited {
color: #212121;
text-decoration: none;
}
/* Interaction Cues
----------------------------------*/
.ui-state-highlight,
.ui-widget-content .ui-state-highlight,
.ui-widget-header .ui-state-highlight {
border: 1px solid #fcefa1;
background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x;
color: #363636;
}
.ui-state-highlight a,
.ui-widget-content .ui-state-highlight a,
.ui-widget-header .ui-state-highlight a {
color: #363636;
}
.ui-state-error,
.ui-widget-content .ui-state-error,
.ui-widget-header .ui-state-error {
border: 1px solid #cd0a0a;
background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x;
color: #cd0a0a;
}
.ui-state-error a,
.ui-widget-content .ui-state-error a,
.ui-widget-header .ui-state-error a {
color: #cd0a0a;
}
.ui-state-error-text,
.ui-widget-content .ui-state-error-text,
.ui-widget-header .ui-state-error-text {
color: #cd0a0a;
}
.ui-priority-primary,
.ui-widget-content .ui-priority-primary,
.ui-widget-header .ui-priority-primary {
font-weight: bold;
}
.ui-priority-secondary,
.ui-widget-content .ui-priority-secondary,
.ui-widget-header .ui-priority-secondary {
opacity: .7;
filter:Alpha(Opacity=70);
font-weight: normal;
}
.ui-state-disabled,
.ui-widget-content .ui-state-disabled,
.ui-widget-header .ui-state-disabled {
opacity: .35;
filter:Alpha(Opacity=35);
background-image: none;
}
.ui-state-disabled .ui-icon {
filter:Alpha(Opacity=35); /* For IE8 - See #6059 */
}
/* Icons
----------------------------------*/
/* states and images */
.ui-icon {
width: 16px;
height: 16px;
}
.ui-icon,
.ui-widget-content .ui-icon {
background-image: url(images/ui-icons_222222_256x240.png);
}
.ui-widget-header .ui-icon {
background-image: url(images/ui-icons_222222_256x240.png);
}
.ui-state-default .ui-icon {
background-image: url(images/ui-icons_888888_256x240.png);
}
.ui-state-hover .ui-icon,
.ui-state-focus .ui-icon {
background-image: url(images/ui-icons_454545_256x240.png);
}
.ui-state-active .ui-icon {
background-image: url(images/ui-icons_454545_256x240.png);
}
.ui-state-highlight .ui-icon {
background-image: url(images/ui-icons_2e83ff_256x240.png);
}
.ui-state-error .ui-icon,
.ui-state-error-text .ui-icon {
background-image: url(images/ui-icons_cd0a0a_256x240.png);
}
/* positioning */
.ui-icon-blank { background-position: 16px 16px; }
.ui-icon-carat-1-n { background-position: 0 0; }
.ui-icon-carat-1-ne { background-position: -16px 0; }
.ui-icon-carat-1-e { background-position: -32px 0; }
.ui-icon-carat-1-se { background-position: -48px 0; }
.ui-icon-carat-1-s { background-position: -64px 0; }
.ui-icon-carat-1-sw { background-position: -80px 0; }
.ui-icon-carat-1-w { background-position: -96px 0; }
.ui-icon-carat-1-nw { background-position: -112px 0; }
.ui-icon-carat-2-n-s { background-position: -128px 0; }
.ui-icon-carat-2-e-w { background-position: -144px 0; }
.ui-icon-triangle-1-n { background-position: 0 -16px; }
.ui-icon-triangle-1-ne { background-position: -16px -16px; }
.ui-icon-triangle-1-e { background-position: -32px -16px; }
.ui-icon-triangle-1-se { background-position: -48px -16px; }
.ui-icon-triangle-1-s { background-position: -64px -16px; }
.ui-icon-triangle-1-sw { background-position: -80px -16px; }
.ui-icon-triangle-1-w { background-position: -96px -16px; }
.ui-icon-triangle-1-nw { background-position: -112px -16px; }
.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
.ui-icon-arrow-1-n { background-position: 0 -32px; }
.ui-icon-arrow-1-ne { background-position: -16px -32px; }
.ui-icon-arrow-1-e { background-position: -32px -32px; }
.ui-icon-arrow-1-se { background-position: -48px -32px; }
.ui-icon-arrow-1-s { background-position: -64px -32px; }
.ui-icon-arrow-1-sw { background-position: -80px -32px; }
.ui-icon-arrow-1-w { background-position: -96px -32px; }
.ui-icon-arrow-1-nw { background-position: -112px -32px; }
.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
.ui-icon-arrow-4 { background-position: 0 -80px; }
.ui-icon-arrow-4-diag { background-position: -16px -80px; }
.ui-icon-extlink { background-position: -32px -80px; }
.ui-icon-newwin { background-position: -48px -80px; }
.ui-icon-refresh { background-position: -64px -80px; }
.ui-icon-shuffle { background-position: -80px -80px; }
.ui-icon-transfer-e-w { background-position: -96px -80px; }
.ui-icon-transferthick-e-w { background-position: -112px -80px; }
.ui-icon-folder-collapsed { background-position: 0 -96px; }
.ui-icon-folder-open { background-position: -16px -96px; }
.ui-icon-document { background-position: -32px -96px; }
.ui-icon-document-b { background-position: -48px -96px; }
.ui-icon-note { background-position: -64px -96px; }
.ui-icon-mail-closed { background-position: -80px -96px; }
.ui-icon-mail-open { background-position: -96px -96px; }
.ui-icon-suitcase { background-position: -112px -96px; }
.ui-icon-comment { background-position: -128px -96px; }
.ui-icon-person { background-position: -144px -96px; }
.ui-icon-print { background-position: -160px -96px; }
.ui-icon-trash { background-position: -176px -96px; }
.ui-icon-locked { background-position: -192px -96px; }
.ui-icon-unlocked { background-position: -208px -96px; }
.ui-icon-bookmark { background-position: -224px -96px; }
.ui-icon-tag { background-position: -240px -96px; }
.ui-icon-home { background-position: 0 -112px; }
.ui-icon-flag { background-position: -16px -112px; }
.ui-icon-calendar { background-position: -32px -112px; }
.ui-icon-cart { background-position: -48px -112px; }
.ui-icon-pencil { background-position: -64px -112px; }
.ui-icon-clock { background-position: -80px -112px; }
.ui-icon-disk { background-position: -96px -112px; }
.ui-icon-calculator { background-position: -112px -112px; }
.ui-icon-zoomin { background-position: -128px -112px; }
.ui-icon-zoomout { background-position: -144px -112px; }
.ui-icon-search { background-position: -160px -112px; }
.ui-icon-wrench { background-position: -176px -112px; }
.ui-icon-gear { background-position: -192px -112px; }
.ui-icon-heart { background-position: -208px -112px; }
.ui-icon-star { background-position: -224px -112px; }
.ui-icon-link { background-position: -240px -112px; }
.ui-icon-cancel { background-position: 0 -128px; }
.ui-icon-plus { background-position: -16px -128px; }
.ui-icon-plusthick { background-position: -32px -128px; }
.ui-icon-minus { background-position: -48px -128px; }
.ui-icon-minusthick { background-position: -64px -128px; }
.ui-icon-close { background-position: -80px -128px; }
.ui-icon-closethick { background-position: -96px -128px; }
.ui-icon-key { background-position: -112px -128px; }
.ui-icon-lightbulb { background-position: -128px -128px; }
.ui-icon-scissors { background-position: -144px -128px; }
.ui-icon-clipboard { background-position: -160px -128px; }
.ui-icon-copy { background-position: -176px -128px; }
.ui-icon-contact { background-position: -192px -128px; }
.ui-icon-image { background-position: -208px -128px; }
.ui-icon-video { background-position: -224px -128px; }
.ui-icon-script { background-position: -240px -128px; }
.ui-icon-alert { background-position: 0 -144px; }
.ui-icon-info { background-position: -16px -144px; }
.ui-icon-notice { background-position: -32px -144px; }
.ui-icon-help { background-position: -48px -144px; }
.ui-icon-check { background-position: -64px -144px; }
.ui-icon-bullet { background-position: -80px -144px; }
.ui-icon-radio-on { background-position: -96px -144px; }
.ui-icon-radio-off { background-position: -112px -144px; }
.ui-icon-pin-w { background-position: -128px -144px; }
.ui-icon-pin-s { background-position: -144px -144px; }
.ui-icon-play { background-position: 0 -160px; }
.ui-icon-pause { background-position: -16px -160px; }
.ui-icon-seek-next { background-position: -32px -160px; }
.ui-icon-seek-prev { background-position: -48px -160px; }
.ui-icon-seek-end { background-position: -64px -160px; }
.ui-icon-seek-start { background-position: -80px -160px; }
/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
.ui-icon-seek-first { background-position: -80px -160px; }
.ui-icon-stop { background-position: -96px -160px; }
.ui-icon-eject { background-position: -112px -160px; }
.ui-icon-volume-off { background-position: -128px -160px; }
.ui-icon-volume-on { background-position: -144px -160px; }
.ui-icon-power { background-position: 0 -176px; }
.ui-icon-signal-diag { background-position: -16px -176px; }
.ui-icon-signal { background-position: -32px -176px; }
.ui-icon-battery-0 { background-position: -48px -176px; }
.ui-icon-battery-1 { background-position: -64px -176px; }
.ui-icon-battery-2 { background-position: -80px -176px; }
.ui-icon-battery-3 { background-position: -96px -176px; }
.ui-icon-circle-plus { background-position: 0 -192px; }
.ui-icon-circle-minus { background-position: -16px -192px; }
.ui-icon-circle-close { background-position: -32px -192px; }
.ui-icon-circle-triangle-e { background-position: -48px -192px; }
.ui-icon-circle-triangle-s { background-position: -64px -192px; }
.ui-icon-circle-triangle-w { background-position: -80px -192px; }
.ui-icon-circle-triangle-n { background-position: -96px -192px; }
.ui-icon-circle-arrow-e { background-position: -112px -192px; }
.ui-icon-circle-arrow-s { background-position: -128px -192px; }
.ui-icon-circle-arrow-w { background-position: -144px -192px; }
.ui-icon-circle-arrow-n { background-position: -160px -192px; }
.ui-icon-circle-zoomin { background-position: -176px -192px; }
.ui-icon-circle-zoomout { background-position: -192px -192px; }
.ui-icon-circle-check { background-position: -208px -192px; }
.ui-icon-circlesmall-plus { background-position: 0 -208px; }
.ui-icon-circlesmall-minus { background-position: -16px -208px; }
.ui-icon-circlesmall-close { background-position: -32px -208px; }
.ui-icon-squaresmall-plus { background-position: -48px -208px; }
.ui-icon-squaresmall-minus { background-position: -64px -208px; }
.ui-icon-squaresmall-close { background-position: -80px -208px; }
.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
/* Misc visuals
----------------------------------*/
/* Corner radius */
.ui-corner-all,
.ui-corner-top,
.ui-corner-left,
.ui-corner-tl {
border-top-left-radius: 4px;
}
.ui-corner-all,
.ui-corner-top,
.ui-corner-right,
.ui-corner-tr {
border-top-right-radius: 4px;
}
.ui-corner-all,
.ui-corner-bottom,
.ui-corner-left,
.ui-corner-bl {
border-bottom-left-radius: 4px;
}
.ui-corner-all,
.ui-corner-bottom,
.ui-corner-right,
.ui-corner-br {
border-bottom-right-radius: 4px;
}
/* Overlays */
.ui-widget-overlay {
background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;
opacity: .3;
filter: Alpha(Opacity=30);
}
.ui-widget-shadow {
margin: -8px 0 0 -8px;
padding: 8px;
background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;
opacity: .3;
filter: Alpha(Opacity=30);
border-radius: 8px;
}

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show more