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
|
@ -1200,6 +1200,13 @@ class ActionBlog extends Action {
|
||||||
$this->Message_AddErrorSingle($this->Lang_Get('system_error'),$this->Lang_Get('error'));
|
$this->Message_AddErrorSingle($this->Lang_Get('system_error'),$this->Lang_Get('error'));
|
||||||
return;
|
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');
|
$idCommentLast=getRequestStr('idCommentLast',null,'post');
|
||||||
$selfIdComment=getRequestStr('selfIdComment',null,'post');
|
$selfIdComment=getRequestStr('selfIdComment',null,'post');
|
||||||
|
|
|
@ -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') {
|
if ($oTopic->getPublish()==1 and $oBlog->getType()!='personal') {
|
||||||
$this->Topic_SendNotifyTopicNew($oBlog,$oTopic,$this->oUserCurrent);
|
$this->Topic_SendNotifyTopicNew($oBlog,$oTopic,$this->oUserCurrent);
|
||||||
|
|
|
@ -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());
|
||||||
/**
|
/**
|
||||||
* Делаем рассылку спама всем, кто состоит в этом блоге
|
* Делаем рассылку спама всем, кто состоит в этом блоге
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1250,6 +1250,13 @@ class ActionProfile extends Action {
|
||||||
$oUser->setMail($oChangemail->getMailTo());
|
$oUser->setMail($oChangemail->getMailTo());
|
||||||
$this->User_Update($oUser);
|
$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->Viewer_Assign('sText',$this->Lang_Get('settings_profile_mail_change_ok',array('mail'=>htmlspecialchars($oChangemail->getMailTo()))));
|
||||||
$this->SetTemplateAction('changemail_confirm');
|
$this->SetTemplateAction('changemail_confirm');
|
||||||
}
|
}
|
||||||
|
|
|
@ -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') {
|
if ($oTopic->getPublish()==1 and $oBlog->getType()!='personal') {
|
||||||
$this->Topic_SendNotifyTopicNew($oBlog,$oTopic,$this->oUserCurrent);
|
$this->Topic_SendNotifyTopicNew($oBlog,$oTopic,$this->oUserCurrent);
|
||||||
|
|
|
@ -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);
|
$oSubscribe->setStatus($iValue);
|
||||||
$this->Subscribe_UpdateSubscribe($oSubscribe);
|
$this->Subscribe_UpdateSubscribe($oSubscribe);
|
||||||
$this->Message_AddNotice($this->Lang_Get('subscribe_change_ok'),$this->Lang_Get('attention'));
|
$this->Message_AddNotice($this->Lang_Get('subscribe_change_ok'),$this->Lang_Get('attention'));
|
||||||
|
|
|
@ -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());
|
||||||
/**
|
/**
|
||||||
* Делаем рассылку спама всем, кто состоит в этом блоге
|
* Делаем рассылку спама всем, кто состоит в этом блоге
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -83,7 +83,13 @@ class ModuleACL extends Module {
|
||||||
* @param ModuleUser_EntityUser $oUser Пользователь
|
* @param ModuleUser_EntityUser $oUser Пользователь
|
||||||
* @return bool
|
* @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')) {
|
if ($oUser->getRating()>=Config::Get('acl.create.comment.rating')) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -270,6 +276,7 @@ class ModuleACL extends Module {
|
||||||
*
|
*
|
||||||
* @param ModuleBlog_EntityBlog $oBlog Блог
|
* @param ModuleBlog_EntityBlog $oBlog Блог
|
||||||
* @param ModuleUser_EntityUser $oUser Пользователь
|
* @param ModuleUser_EntityUser $oUser Пользователь
|
||||||
|
* @return bool
|
||||||
*/
|
*/
|
||||||
public function IsAllowBlog($oBlog,$oUser) {
|
public function IsAllowBlog($oBlog,$oUser) {
|
||||||
if ($oUser->isAdministrator()) {
|
if ($oUser->isAdministrator()) {
|
||||||
|
@ -288,6 +295,28 @@ class ModuleACL extends Module {
|
||||||
}
|
}
|
||||||
return false;
|
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;
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* Проверяет можно или нет пользователю редактировать данный топик
|
* Проверяет можно или нет пользователю редактировать данный топик
|
||||||
*
|
*
|
||||||
|
|
|
@ -782,21 +782,13 @@ class ModuleBlog extends Module {
|
||||||
* Удаляем топики
|
* Удаляем топики
|
||||||
*/
|
*/
|
||||||
foreach ($aTopicIds as $iTopicId) {
|
foreach ($aTopicIds as $iTopicId) {
|
||||||
$this->Cache_Delete("topic_{$iTopicId}");
|
$this->Topic_DeleteTopic($iTopicId);
|
||||||
if(Config::Get('db.tables.engine')=="InnoDB") {
|
|
||||||
$this->Topic_DeleteTopicAdditionalData($iTopicId);
|
|
||||||
} else {
|
|
||||||
$this->Topic_DeleteTopic($iTopicId);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Удаляем связи пользователей блога.
|
* Удаляем связи пользователей блога.
|
||||||
*/
|
*/
|
||||||
if(Config::Get('db.tables.engine')!="InnoDB"){
|
$this->oMapperBlog->DeleteBlogUsersByBlogId($iBlogId);
|
||||||
$this->oMapperBlog->DeleteBlogUsersByBlogId($iBlogId);
|
|
||||||
}
|
|
||||||
/**
|
/**
|
||||||
* Удаляем голосование за блог
|
* Удаляем голосование за блог
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -154,7 +154,7 @@ class ModuleNotify extends Module {
|
||||||
$this->Lang_Get('notify_subject_reactvation'),
|
$this->Lang_Get('notify_subject_reactvation'),
|
||||||
array(
|
array(
|
||||||
'oUser' => $oUser,
|
'oUser' => $oUser,
|
||||||
)
|
),null,true
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
|
@ -171,7 +171,7 @@ class ModuleNotify extends Module {
|
||||||
array(
|
array(
|
||||||
'oUser' => $oUser,
|
'oUser' => $oUser,
|
||||||
'sPassword' => $sPassword,
|
'sPassword' => $sPassword,
|
||||||
)
|
),null,true
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
|
@ -188,7 +188,7 @@ class ModuleNotify extends Module {
|
||||||
array(
|
array(
|
||||||
'oUser' => $oUser,
|
'oUser' => $oUser,
|
||||||
'sPassword' => $sPassword,
|
'sPassword' => $sPassword,
|
||||||
)
|
),null,true
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
|
@ -330,7 +330,7 @@ class ModuleNotify extends Module {
|
||||||
array(
|
array(
|
||||||
'oUser' => $oUser,
|
'oUser' => $oUser,
|
||||||
'oReminder' => $oReminder,
|
'oReminder' => $oReminder,
|
||||||
)
|
),null,true
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
|
@ -347,7 +347,7 @@ class ModuleNotify extends Module {
|
||||||
array(
|
array(
|
||||||
'oUser' => $oUser,
|
'oUser' => $oUser,
|
||||||
'sNewPassword' => $sNewPassword,
|
'sNewPassword' => $sNewPassword,
|
||||||
)
|
),null,true
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
|
@ -398,8 +398,9 @@ class ModuleNotify extends Module {
|
||||||
* @param string $sSubject Тема письма
|
* @param string $sSubject Тема письма
|
||||||
* @param array $aAssign Ассоциативный массив для загрузки переменных в шаблон письма
|
* @param array $aAssign Ассоциативный массив для загрузки переменных в шаблон письма
|
||||||
* @param string|null $sPluginName Плагин из которого происходит отправка
|
* @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) {
|
if ($oUserTo instanceof ModuleUser_EntityUser) {
|
||||||
$sMail=$oUserTo->getMail();
|
$sMail=$oUserTo->getMail();
|
||||||
$sName=$oUserTo->getLogin();
|
$sName=$oUserTo->getLogin();
|
||||||
|
@ -422,7 +423,7 @@ class ModuleNotify extends Module {
|
||||||
* то добавляем задание в массив. В противном случае,
|
* то добавляем задание в массив. В противном случае,
|
||||||
* сразу отсылаем на email
|
* сразу отсылаем на email
|
||||||
*/
|
*/
|
||||||
if(Config::Get('module.notify.delayed')) {
|
if(Config::Get('module.notify.delayed') and !$bForceSend) {
|
||||||
$oNotifyTask=Engine::GetEntity(
|
$oNotifyTask=Engine::GetEntity(
|
||||||
'Notify_Task',
|
'Notify_Task',
|
||||||
array(
|
array(
|
||||||
|
|
|
@ -148,7 +148,7 @@ class ModuleSubscribe extends Module {
|
||||||
* @param string $sMail Емайл
|
* @param string $sMail Емайл
|
||||||
* @return ModuleSubscribe_EntitySubscribe|bool
|
* @return ModuleSubscribe_EntitySubscribe|bool
|
||||||
*/
|
*/
|
||||||
public function AddSubscribeSimple($sTargetType,$sTargetId,$sMail) {
|
public function AddSubscribeSimple($sTargetType,$sTargetId,$sMail,$sUserId=null) {
|
||||||
if (!$sMail) {
|
if (!$sMail) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -161,6 +161,12 @@ class ModuleSubscribe extends Module {
|
||||||
$oSubscribe->setKey(func_generator(32));
|
$oSubscribe->setKey(func_generator(32));
|
||||||
$oSubscribe->setIp(func_getIp());
|
$oSubscribe->setIp(func_getIp());
|
||||||
$oSubscribe->setStatus(1);
|
$oSubscribe->setStatus(1);
|
||||||
|
/**
|
||||||
|
* Если только для авторизованных, то добавляем user_id
|
||||||
|
*/
|
||||||
|
if ($sUserId and !$this->IsAllowTargetForGuest($sTargetType)) {
|
||||||
|
$oSubscribe->setUserId($sUserId);
|
||||||
|
}
|
||||||
$this->Subscribe_AddSubscribe($oSubscribe);
|
$this->Subscribe_AddSubscribe($oSubscribe);
|
||||||
}
|
}
|
||||||
return $oSubscribe;
|
return $oSubscribe;
|
||||||
|
@ -174,6 +180,18 @@ class ModuleSubscribe extends Module {
|
||||||
public function UpdateSubscribe($oSubscribe) {
|
public function UpdateSubscribe($oSubscribe) {
|
||||||
return $this->oMapper->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);
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* Возвращает список подписок по фильтру
|
* Возвращает список подписок по фильтру
|
||||||
*
|
*
|
||||||
|
|
|
@ -66,6 +66,23 @@ class ModuleSubscribe_MapperSubscribe extends Mapper {
|
||||||
$oSubscribe->getDateRemove(),
|
$oSubscribe->getDateRemove(),
|
||||||
$oSubscribe->getId());
|
$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);
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* Возвращает список подписок по фильтру
|
* Возвращает список подписок по фильтру
|
||||||
*
|
*
|
||||||
|
|
|
@ -255,7 +255,7 @@ class ModuleTopic extends Module {
|
||||||
/**
|
/**
|
||||||
* Если топик успешно удален, удаляем связанные данные
|
* Если топик успешно удален, удаляем связанные данные
|
||||||
*/
|
*/
|
||||||
if($bResult=$this->oMapperTopic->DeleteTopic($sTopicId)){
|
if($this->oMapperTopic->DeleteTopic($sTopicId)){
|
||||||
return $this->DeleteTopicAdditionalData($sTopicId,$aPhotos);
|
return $this->DeleteTopicAdditionalData($sTopicId,$aPhotos);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -140,10 +140,8 @@ class ModuleTopic_MapperTopic extends Mapper {
|
||||||
WHERE
|
WHERE
|
||||||
topic_id = ?d
|
topic_id = ?d
|
||||||
";
|
";
|
||||||
if ($this->oDb->query($sql,$sTopicId)) {
|
$res=$this->oDb->query($sql,$sTopicId);
|
||||||
return true;
|
return $res===false or is_null($res) ? false : true;
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Получает топик по уникальному хешу(текст топика)
|
* Получает топик по уникальному хешу(текст топика)
|
||||||
|
|
220
engine/lib/external/html5shiv.js
vendored
|
@ -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));
|
|
|
@ -173,6 +173,7 @@ class ModuleMail extends Module {
|
||||||
$this->oMailer->CharSet=$this->sCharSet;
|
$this->oMailer->CharSet=$this->sCharSet;
|
||||||
|
|
||||||
$this->oMailer->From=$this->sFrom;
|
$this->oMailer->From=$this->sFrom;
|
||||||
|
$this->oMailer->Sender=$this->sFrom;
|
||||||
$this->oMailer->FromName=$this->sFromName;
|
$this->oMailer->FromName=$this->sFromName;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -731,7 +731,7 @@ class ModuleViewer extends Module {
|
||||||
* Сортируем блоки по приоритетности
|
* Сортируем блоки по приоритетности
|
||||||
*/
|
*/
|
||||||
foreach($this->aBlocks as $sGroup=>$aBlocks) {
|
foreach($this->aBlocks as $sGroup=>$aBlocks) {
|
||||||
uasort($aBlocks,array(&$this,'_SortBlocks'));
|
uasort($aBlocks,array($this,'_SortBlocks'));
|
||||||
$this->aBlocks[$sGroup] = array_reverse($aBlocks);
|
$this->aBlocks[$sGroup] = array_reverse($aBlocks);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,6 +29,8 @@
|
||||||
* В указанном формате 'day' будет заменено на соответствующее значение.
|
* В указанном формате 'day' будет заменено на соответствующее значение.
|
||||||
* minutes_back* [int] Количество минут, в течении которых событие имеет статус "... минут назад"
|
* minutes_back* [int] Количество минут, в течении которых событие имеет статус "... минут назад"
|
||||||
* hours_back* [int] Количество часов, в течении которых событие имеет статус "... часов назад"
|
* hours_back* [int] Количество часов, в течении которых событие имеет статус "... часов назад"
|
||||||
|
* tz* [float] Временная зона
|
||||||
|
* notz* [bool] Не учитывать зону
|
||||||
*
|
*
|
||||||
* (* - параметр является необязательным)
|
* (* - параметр является необязательным)
|
||||||
*
|
*
|
||||||
|
@ -39,15 +41,25 @@
|
||||||
function smarty_function_date_format($aParams,&$oSmarty) {
|
function smarty_function_date_format($aParams,&$oSmarty) {
|
||||||
require_once(Config::Get('path.root.engine').'/classes/Engine.class.php');
|
require_once(Config::Get('path.root.engine').'/classes/Engine.class.php');
|
||||||
$oEngine = Engine::getInstance();
|
$oEngine = Engine::getInstance();
|
||||||
$oUserCurrent=$oEngine->User_GetUserCurrent();
|
|
||||||
|
|
||||||
$sFormatDefault = "d F Y, H:i"; // формат даты по умолчанию
|
$sFormatDefault = "d F Y, H:i"; // формат даты по умолчанию
|
||||||
$iDeclinationDefault = 1; // индекс склонения по умолчанию
|
$iDeclinationDefault = 1; // индекс склонения по умолчанию
|
||||||
/**
|
/**
|
||||||
* Текущая дата и сдвиг времени для пользователя
|
* Текущая дата и сдвиг времени для пользователя
|
||||||
*/
|
*/
|
||||||
if ($oUserCurrent and $oUserCurrent->getSettingsTimezone()) {
|
$iTz=false;
|
||||||
$iDiff=(date('I') + $oUserCurrent->getSettingsTimezone() - (strtotime(date("Y-m-d H:i:s"))-strtotime(gmdate("Y-m-d H:i:s")))/3600)*3600;
|
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 {
|
} else {
|
||||||
$iDiff=0; // пользователю показываем время от зоны из основного конфига
|
$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'];
|
$iDeclination = (!isset($aParams['declination'])) ? $iDeclinationDefault : $aParams['declination'];
|
||||||
$sFormat = (empty($aParams['format'])) ? $sFormatDefault : $aParams['format'];
|
$sFormat = (empty($aParams['format'])) ? $sFormatDefault : $aParams['format'];
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -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
|
|
|
@ -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;
|
|
|
@ -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;
|
|
19561
install/geo_base.sql
1923
install/index.php
|
@ -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 © 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>',
|
|
||||||
);
|
|
|
@ -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 © 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
|
@ -0,0 +1,2 @@
|
||||||
|
ALTER TABLE `prefix_subscribe` ADD `user_id` INT( 11 ) UNSIGNED NULL DEFAULT NULL AFTER `target_id` ,
|
||||||
|
ADD INDEX ( `user_id` ) ;
|
|
@ -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
|
|
||||||
}
|
|
1031
install/sql.sql
|
@ -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>
|
|
|
@ -1 +0,0 @@
|
||||||
<div class="system-messages-___MESSAGE_STYLE_CLASS___"><ul><li>___MESSAGE_CONTENT___</li></ul></div>
|
|
|
@ -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>
|
|
|
@ -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>
|
|
|
@ -1,5 +0,0 @@
|
||||||
<p>
|
|
||||||
___LANG_END_PARAGRAPH___
|
|
||||||
|
|
||||||
<input type="submit" class="button" name="install_step_extend" value="___LANG_EXTEND_MODE___" />
|
|
||||||
</p>
|
|
|
@ -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>
|
|
|
@ -1,3 +0,0 @@
|
||||||
<p>
|
|
||||||
___LANG_FINISH_PARAGRAPH___
|
|
||||||
</p>
|
|
|
@ -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>
|
|
|
@ -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; }
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,229 @@
|
||||||
{assign var="noSidebar" value=true}
|
{assign var="noSidebar" value=true}
|
||||||
{include file='header.tpl'}
|
{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">
|
||||||
<div class="topic-content text">
|
<div class="topic-content text">
|
||||||
{if $oConfig->GetValue('view.tinymce')}
|
{if $oConfig->GetValue('view.tinymce')}
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
|
|
||||||
padding: 4px 12px;
|
padding: 4px 12px;
|
||||||
|
padding: 5px 12px;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
|
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
@ -14,31 +15,19 @@
|
||||||
|
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
line-height: 20px;
|
line-height: 20px;
|
||||||
text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
|
border: none;
|
||||||
|
|
||||||
border: 1px solid #ddd;
|
|
||||||
border-radius: 4px;
|
|
||||||
|
|
||||||
color: #333;
|
color: #333;
|
||||||
|
|
||||||
background: #fafafa;
|
background: #fafafa;
|
||||||
background: -moz-linear-gradient(top, #fff 0%, #e6e6e6 100%);
|
background: #eee;
|
||||||
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);
|
|
||||||
|
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
|
||||||
*margin-right: 5px;
|
*margin-right: 5px;
|
||||||
*border: 0;
|
*border: 0;
|
||||||
}
|
}
|
||||||
.button:hover { text-decoration: none; background: #eee; }
|
.button:hover { text-decoration: none; background: #ddd; }
|
||||||
.button:active,
|
.button:active,
|
||||||
.button.active {
|
.button.active {
|
||||||
background: #eaeaea;
|
background: #eaeaea;
|
||||||
|
@ -53,16 +42,8 @@
|
||||||
/* Button Primary */
|
/* Button Primary */
|
||||||
.button.button-primary {
|
.button.button-primary {
|
||||||
color: #fff;
|
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: #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:hover { background: #0044cc; }
|
||||||
.button.button-primary.active { background: #006DCC; }
|
.button.button-primary.active { background: #006DCC; }
|
|
@ -12,9 +12,9 @@
|
||||||
*display: inline; *zoom: 1; /* IE7 */
|
*display: inline; *zoom: 1; /* IE7 */
|
||||||
background: #2891d3;
|
background: #2891d3;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
border-radius: 2px;
|
|
||||||
padding: 5px 12px;
|
padding: 5px 12px;
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
|
min-height: 18px;
|
||||||
-webkit-user-select: none;
|
-webkit-user-select: none;
|
||||||
-moz-user-select: none;
|
-moz-user-select: none;
|
||||||
-ms-user-select: none;
|
-ms-user-select: none;
|
||||||
|
@ -54,11 +54,53 @@
|
||||||
padding: 5px 0;
|
padding: 5px 0;
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
border: 1px solid #ccc;
|
border: 1px solid #ccc;
|
||||||
border-radius: 6px;
|
|
||||||
box-shadow: 0 5px 10px rgba(0,0,0,.2);
|
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.active > a { background: #c8ecff; color: #48a4d5; }
|
||||||
.dropdown-menu > li > a:hover { background: #0088cc; color: #fff; }
|
.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; }
|
||||||
|
*/
|
|
@ -9,7 +9,6 @@ input[type="text"],
|
||||||
.input-text {
|
.input-text {
|
||||||
padding: 5px;
|
padding: 5px;
|
||||||
border: 1px solid #ddd;
|
border: 1px solid #ddd;
|
||||||
border-radius: 3px;
|
|
||||||
-webkit-box-shadow: 0 2px 4px rgba(0,0,0,.07) inset;
|
-webkit-box-shadow: 0 2px 4px rgba(0,0,0,.07) inset;
|
||||||
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;
|
-webkit-box-sizing: border-box;
|
||||||
|
|
|
@ -74,4 +74,15 @@
|
||||||
|
|
||||||
/* Links */
|
/* Links */
|
||||||
.link-dashed { text-decoration: none; border-bottom: 1px dashed; }
|
.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;
|
||||||
|
}
|
|
@ -11,12 +11,12 @@
|
||||||
color: #333;
|
color: #333;
|
||||||
border: 1px solid #666;
|
border: 1px solid #666;
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
border-radius: 5px;
|
|
||||||
-webkit-box-shadow: 0 0 15px rgba(0,0,0,.5);
|
-webkit-box-shadow: 0 0 15px rgba(0,0,0,.5);
|
||||||
-moz-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);
|
box-shadow: 0 0 15px rgba(0,0,0,.5);
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
z-index: 9999;
|
z-index: 1000;
|
||||||
|
position: relative;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -58,6 +58,22 @@
|
||||||
.modal .modal-content { padding: 20px; }
|
.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 */
|
/* Footer */
|
||||||
.modal .modal-footer { background: #fafafa; border-top: 1px solid #f7f7f7; padding: 15px 20px; }
|
.modal .modal-footer { background: #fafafa; border-top: 1px solid #f7f7f7; padding: 15px 20px; }
|
||||||
|
|
||||||
|
@ -70,7 +86,20 @@
|
||||||
position: fixed;
|
position: fixed;
|
||||||
top: 50%; left: 50%;
|
top: 50%; left: 50%;
|
||||||
border-radius: 5px;
|
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%;
|
width: 100%;
|
||||||
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA9JREFUeNpiYmBgaAAIMAAAjwCD5Hc2/AAAAABJRU5ErkJggg==);;
|
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA9JREFUeNpiYmBgaAAIMAAAjwCD5Hc2/AAAAABJRU5ErkJggg==);;
|
||||||
background: rgba(0,0,0,.5);
|
background: rgba(0,0,0,.5);
|
||||||
z-index: 9998;
|
z-index: 999;
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
}
|
}
|
|
@ -80,45 +80,10 @@
|
||||||
.tab-pane { display: none; }
|
.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
|
/* Main
|
||||||
* TODO: Fix
|
* 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 { color: #ddd; }
|
||||||
.nav.nav-main li a:hover { background: #333; }
|
.nav.nav-main li a:hover { background: #333; }
|
||||||
.nav.nav-main li:first-child a { border-radius: 4px 0 0 4px; }
|
.nav.nav-main li:first-child a { border-radius: 4px 0 0 4px; }
|
||||||
|
|
34
templates/framework/css/popover.css
Normal 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; }
|
33
templates/framework/css/tooltip.css
Normal 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; }
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
|
@ -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;
|
return this;
|
||||||
}).call(ls.tools || {},jQuery);
|
}).call(ls.tools || {},jQuery);
|
||||||
|
@ -574,11 +589,9 @@ ls.autocomplete = (function ($) {
|
||||||
return this;
|
return this;
|
||||||
}).call(ls.autocomplete || {},jQuery);
|
}).call(ls.autocomplete || {},jQuery);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Костыли для ИЕ
|
* Костыли для ИЕ
|
||||||
*/
|
*/
|
||||||
ls.ie = (function ($) {
|
ls.ie = (function ($) {
|
||||||
|
|
||||||
// эмуляция border-sizing в IE
|
// эмуляция border-sizing в IE
|
|
@ -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);
|
|
|
@ -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);
|
|
|
@ -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);
|
|
|
@ -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);
|
|
68
templates/framework/js/ui/dropdown.js
Normal 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);
|
339
templates/framework/js/ui/modal.js
Normal 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);
|
72
templates/framework/js/ui/popover.js
Normal 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);
|
357
templates/framework/js/ui/popup.js
Normal 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);
|
96
templates/framework/js/ui/tab.js
Normal 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);
|
60
templates/framework/js/ui/tooltip.js
Normal 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);
|
299
templates/framework/js/vendor/html5shiv.js
vendored
Normal 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));
|
0
engine/lib/external/jquery/jcrop/Jcrop.gif → templates/framework/js/vendor/jcrop/Jcrop.gif
vendored
Executable file → Normal file
Before Width: | Height: | Size: 329 B After Width: | Height: | Size: 329 B |
0
engine/lib/external/jquery/jcrop/jquery.Jcrop.css → templates/framework/js/vendor/jcrop/jquery.Jcrop.css
vendored
Executable file → Normal file
0
engine/lib/external/jquery/jcrop/jquery.Jcrop.js → templates/framework/js/vendor/jcrop/jquery.Jcrop.js
vendored
Executable file → Normal file
5
templates/framework/js/vendor/jquery-1.9.1.min.js
vendored
Normal file
BIN
templates/framework/js/vendor/jquery-ui/css/smoothness/images/animated-overlay.gif
vendored
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
templates/framework/js/vendor/jquery-ui/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png
vendored
Normal file
After Width: | Height: | Size: 212 B |
BIN
templates/framework/js/vendor/jquery-ui/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png
vendored
Normal file
After Width: | Height: | Size: 208 B |
BIN
templates/framework/js/vendor/jquery-ui/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png
vendored
Normal file
After Width: | Height: | Size: 335 B |
BIN
templates/framework/js/vendor/jquery-ui/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png
vendored
Normal file
After Width: | Height: | Size: 207 B |
BIN
templates/framework/js/vendor/jquery-ui/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png
vendored
Normal file
After Width: | Height: | Size: 262 B |
BIN
templates/framework/js/vendor/jquery-ui/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png
vendored
Normal file
After Width: | Height: | Size: 262 B |
BIN
templates/framework/js/vendor/jquery-ui/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png
vendored
Normal file
After Width: | Height: | Size: 332 B |
After Width: | Height: | Size: 280 B |
BIN
templates/framework/js/vendor/jquery-ui/css/smoothness/images/ui-icons_222222_256x240.png
vendored
Normal file
After Width: | Height: | Size: 6.8 KiB |
BIN
templates/framework/js/vendor/jquery-ui/css/smoothness/images/ui-icons_2e83ff_256x240.png
vendored
Normal file
After Width: | Height: | Size: 4.4 KiB |
BIN
templates/framework/js/vendor/jquery-ui/css/smoothness/images/ui-icons_454545_256x240.png
vendored
Normal file
After Width: | Height: | Size: 6.8 KiB |
BIN
templates/framework/js/vendor/jquery-ui/css/smoothness/images/ui-icons_888888_256x240.png
vendored
Normal file
After Width: | Height: | Size: 6.8 KiB |
BIN
templates/framework/js/vendor/jquery-ui/css/smoothness/images/ui-icons_cd0a0a_256x240.png
vendored
Normal file
After Width: | Height: | Size: 4.4 KiB |
904
templates/framework/js/vendor/jquery-ui/css/smoothness/jquery-ui-1.10.2.custom.css
vendored
Normal 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;
|
||||||
|
}
|