1
0
Fork 0
mirror of https://github.com/Oreolek/ifhub.club.git synced 2024-06-26 11:40:48 +03:00

Frontend framework

This commit is contained in:
Denis Shakhov 2013-04-03 04:08:55 +07:00
parent de45d9c630
commit 25454d21e3
86 changed files with 1425 additions and 1235 deletions

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -1,5 +1,5 @@
{include file='header.tpl'}
{include file='modals/modal_userfields.tpl'}
{include file='modals/modal.userfields.tpl'}
<h2 class="page-header">{$aLang.user_field_admin_title}</h2>

View file

@ -11,7 +11,7 @@
{if $oUserCurrent and $oUserCurrent->isAdministrator()}
{include file='modals/modal_blog_delete.tpl'}
{include file='modals/modal.blog_delete.tpl'}
{/if}
@ -40,7 +40,7 @@
<li>
<a href="{router page='blog'}edit/{$oBlog->getId()}/" title="{$aLang.blog_edit}" class="edit">{$aLang.blog_edit}</a></li>
{if $oUserCurrent->isAdministrator()}
<li><a href="#" title="{$aLang.blog_delete}" data-type="modal-toggle" data-modal-target="modal-blog-delete" class="delete">{$aLang.blog_delete}</a>
<li><a href="#" title="{$aLang.blog_delete}" data-type="modal-toggle" data-option-target="modal-blog-delete" class="delete">{$aLang.blog_delete}</a>
{else}
<a href="{router page='blog'}delete/{$oBlog->getId()}/?security_ls_key={$LIVESTREET_SECURITY_KEY}" title="{$aLang.blog_delete}" onclick="return confirm('{$aLang.blog_admin_delete_confirm}');" >{$aLang.blog_delete}</a>
{/if}
@ -101,27 +101,7 @@
{hook run='blog_info' oBlog=$oBlog}
<div class="nav-filter-wrapper">
<ul class="nav nav-filter">
<li {if $sMenuSubItemSelect=='good'}class="active"{/if}><a href="{$sMenuSubBlogUrl}">{$aLang.blog_menu_collective_good}</a></li>
<li {if $sMenuSubItemSelect=='new'}class="active"{/if}><a href="{$sMenuSubBlogUrl}newall/">{$aLang.blog_menu_collective_new}</a>{if $iCountTopicsBlogNew>0} <a href="{$sMenuSubBlogUrl}new/">+{$iCountTopicsBlogNew}</a>{/if}</li>
<li {if $sMenuSubItemSelect=='discussed'}class="active"{/if}><a href="{$sMenuSubBlogUrl}discussed/">{$aLang.blog_menu_collective_discussed}</a></li>
<li {if $sMenuSubItemSelect=='top'}class="active"{/if}><a href="{$sMenuSubBlogUrl}top/">{$aLang.blog_menu_collective_top}</a></li>
{hook run='menu_blog_blog_item'}
</ul>
{if $sPeriodSelectCurrent}
<ul class="nav nav-filter nav-filter-sub">
<li {if $sPeriodSelectCurrent=='1'}class="active"{/if}><a href="{$sPeriodSelectRoot}?period=1">{$aLang.blog_menu_top_period_24h}</a></li>
<li {if $sPeriodSelectCurrent=='7'}class="active"{/if}><a href="{$sPeriodSelectRoot}?period=7">{$aLang.blog_menu_top_period_7d}</a></li>
<li {if $sPeriodSelectCurrent=='30'}class="active"{/if}><a href="{$sPeriodSelectRoot}?period=30">{$aLang.blog_menu_top_period_30d}</a></li>
<li {if $sPeriodSelectCurrent=='all'}class="active"{/if}><a href="{$sPeriodSelectRoot}?period=all">{$aLang.blog_menu_top_period_all}</a></li>
</ul>
{/if}
</div>
{include file='menu.blog_single.tpl'}
{if $bCloseBlog}
{$aLang.blog_close_show}

View file

@ -20,7 +20,7 @@
</script>
{include file='modals/modal_photoset_add_photo.tpl'}
{include file='modals/modal.photoset_add_photo.tpl'}
{hook run='add_topic_photoset_begin'}
@ -97,7 +97,7 @@
{/if}
</ul>
<a href="#" data-type="modal-toggle" data-modal-target="photoset-upload-form" class="link-dotted" id="photoset-start-upload">{$aLang.topic_photoset_upload_choose}</a>
<a href="#" data-type="modal-toggle" data-option-target="photoset-upload-form" class="link-dotted" id="photoset-start-upload">{$aLang.topic_photoset_upload_choose}</a>
</div>

View file

@ -9,9 +9,9 @@
{elseif $oUserFriend and $oUserFriend->getFriendStatus()==$USER_FRIEND_OFFER+$USER_FRIEND_NULL and $oUserFriend->getUserTo()==$oUserCurrent->getId()}
<li id="add_friend_item"><a href="#" title="{$aLang.user_friend_add}" onclick="return ls.user.addFriend(this,{$oUserProfile->getId()},'accept');">{$aLang.user_friend_add}</a></li>
{elseif !$oUserFriend}
{include file='modals/modal_add_friend.tpl'}
{include file='modals/modal.add_friend.tpl'}
<li id="add_friend_item"><a href="#" title="{$aLang.user_friend_add}" data-type="modal-toggle" data-modal-target="add_friend_form">{$aLang.user_friend_add}</a></li>
<li id="add_friend_item"><a href="#" title="{$aLang.user_friend_add}" data-type="modal-toggle" data-option-target="add_friend_form">{$aLang.user_friend_add}</a></li>
{else}
<li id="add_friend_item"><a href="#" title="{$aLang.user_friend_add}" onclick="return ls.user.addFriend(this,{$oUserProfile->getId()},'link');">{$aLang.user_friend_add}</a></li>
{/if}

View file

@ -1,6 +1,6 @@
{hook run='profile_sidebar_begin' oUserProfile=$oUserProfile}
{include file='modals/modal_profile_photo_upload.tpl'}
{include file='modals/modal.profile_photo_upload.tpl'}
<section class="block block-type-profile">

View file

@ -1,7 +1,7 @@
{assign var="sidebarPosition" value='left'}
{include file='header.tpl'}
{include file='modals/modal_profile_avatar_upload.tpl'}
{include file='modals/modal.profile_avatar_upload.tpl'}
{include file='actions/ActionProfile/profile_top.tpl'}
{include file='menu.settings.tpl'}

View file

@ -16,9 +16,9 @@
<div
class="dropdown dropdown-toggle js-block-stream-dropdown"
data-toggle="dropdown"
data-dropdown-menu="js-dropdown-stream"
data-dropdown-ajax="true"
data-type="dropdown-toggle"
data-option-target="js-dropdown-stream"
data-option-change-text="true"
{if !$sItemsHook}style="display: none;"{/if}>{$aLang.block_stream_comments}</a></div>
<ul class="dropdown-menu js-block-stream-dropdown-items" id="js-dropdown-stream">

View file

@ -42,7 +42,7 @@
</a>
<p>
<a href="#" onclick="return ls.infobox.showInfoBlog(this,{$oBlog->getId()});" class="icon-question-sign"></a>
<a href="#" data-type="popover-toggle" data-option-url="{router page='ajax'}infobox/info/blog/" data-param-i-blog-id="{$oBlog->getId()}" class="icon-question-sign js-popover-blog-info"></a>
{if $oBlog->getType() == 'close'}
<i title="{$aLang.blog_closed}" class="icon-lock"></i>

View file

@ -29,7 +29,7 @@ a:hover { color: #058; }
.page-header span { color: #aaa; }
/* Dropdown support */
.page-header.page-header-publish .dropdown-toggle { text-transform: lowercase; }
.page-header.page-header-publish .dropdown-toggle { text-transform: lowercase; padding-right: 18px !important; }
.page-header.page-header-publish .dropdown-toggle:after { border-top-color: #5055B2; }
.page-header.page-header-publish .dropdown-toggle.open { background: transparent; color: #9496ea; }
.page-header.page-header-publish .dropdown-toggle.open:after { border-top-color: #9496ea; }

View file

@ -4,4 +4,35 @@
.nav.nav-menu > li { margin-right: 3px; }
.nav.nav-menu > li > a { border-radius: 2px; padding: 5px 12px; background: #f5f5f5; color: #888; }
.nav.nav-menu > li > a:hover { background: #eaeaea; }
.nav.nav-menu > li.active > a { background: #2891d3; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); color: #fff; }
.nav.nav-menu > li.active > a { background: #2891d3; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); color: #fff; }
/* Userbar
-------------------------------------------------- */
#userbar {
border: 1px solid #ddd;
border-top: none;
-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: right; margin: 5px 5px 0 6px; *margin: 4px 0 0 4px; }
.nav.nav-userbar { float: left; }
.nav.nav-userbar li { border-right: 1px solid #eaeaea; }
.nav.nav-userbar li a { color: #555; }
.nav.nav-userbar li.nav-userbar-username a { position: relative; padding-left: 40px; font-weight: bold; color: #333; }
.nav.nav-userbar li.nav-userbar-username .avatar { position: absolute; top: 7px; left: 8px; }
.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; }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 180 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 178 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 120 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 105 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 111 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 110 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 119 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 101 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

View file

@ -1,414 +0,0 @@
/*
* jQuery UI CSS Framework 1.8.14
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Theming/API
*/
/* Layout helpers
----------------------------------*/
.ui-helper-hidden { display: none; }
.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,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:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
.ui-helper-clearfix { display: inline-block; }
/* required comment for clearfix to work in Opera \*/
* html .ui-helper-clearfix { height:1%; }
.ui-helper-clearfix { display:block; }
/* end clearfix */
.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
/* 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: absolute; top: 0; left: 0; width: 100%; height: 100%; }
/*
* jQuery UI CSS Framework 1.8.14
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Theming/API
*
* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana,Arial,sans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=01_flat.png&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=02_glass.png&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
*/
/* 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 { 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; }
.ui-widget :active { outline: 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; }
/* Icons
----------------------------------*/
/* states and images */
.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }
.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-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-off { background-position: -96px -144px; }
.ui-icon-radio-on { 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 { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -khtml-border-top-left-radius: 4px; border-top-left-radius: 4px; }
.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -khtml-border-top-right-radius: 4px; border-top-right-radius: 4px; }
.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -khtml-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }
.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; -khtml-border-bottom-right-radius: 4px; 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: .30;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: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -khtml-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/*
* jQuery UI Autocomplete 1.8.14
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Autocomplete#theming
*/
.ui-autocomplete { position: absolute; cursor: default; }
/* workarounds */
* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
/*
* jQuery UI Menu 1.8.14
*
* Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Menu#theming
*/
.ui-menu {
list-style:none;
padding: 2px;
margin: 0;
display:block;
float: left;
}
.ui-menu .ui-menu {
margin-top: -3px;
}
.ui-menu .ui-menu-item {
margin:0;
padding: 0;
zoom: 1;
float: left;
clear: left;
width: 100%;
}
.ui-menu .ui-menu-item a {
text-decoration:none;
display:block;
padding:.2em .4em;
line-height:1.5;
zoom:1;
}
.ui-menu .ui-menu-item a.ui-state-hover,
.ui-menu .ui-menu-item a.ui-state-active {
font-weight: normal;
margin: -1px;
}
/*
* jQuery UI Datepicker 1.8.14
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Datepicker#theming
*/
.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 { border-left-width:0; }
.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:0em; }
/* 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 { float:right; }
.ui-datepicker-rtl .ui-datepicker-group { float:right; }
.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
.ui-datepicker-cover {
display: none; /*sorry for IE5*/
display/**/: block; /*sorry for IE5*/
position: absolute; /*must have*/
z-index: -1; /*must have*/
filter: mask(); /*must have*/
top: -4px; /*must have*/
left: -4px; /*must have*/
width: 200px; /*must have*/
height: 200px; /*must have*/
}
.ui-autocomplete-loading {
background: #fafafa url(../../images/loader.gif) 50% 50% no-repeat;
}

View file

@ -13,7 +13,7 @@
{if !$sImgToLoad}
{assign var="sImgToLoad" value="topic_text"}
{/if}
{include file='modals/modal_load_img.tpl' sToLoad=$sImgToLoad}
{include file='modals/modal.load_img.tpl' sToLoad=$sImgToLoad}
{if !$sSettingsTinymce}
{assign var="sSettingsMarkitup" value="ls.settings.getMarkitup()"}

View file

@ -10,12 +10,7 @@
<footer id="footer">
<div class="copyright">
{hook run='copyright'}
</div>
Автор шаблона &mdash; <a href="http://deniart.ru">deniart</a>
{hook run='copyright'}
{hook run='footer_end'}
</footer>

View file

@ -114,10 +114,10 @@
{if $oUserCurrent}
{include file='modals/modal_write.tpl'}
{include file='modals/modal_favourite_form_tags.tpl'}
{include file='modals/modal.write.tpl'}
{include file='modals/modal.favourite_form_tags.tpl'}
{else}
{include file='modals/modal_login.tpl'}
{include file='modals/modal.login.tpl'}
{/if}

View file

@ -1,23 +1,20 @@
<nav id="userbar" class="clearfix">
<form action="{router page='search'}topics/" class="search">
<input type="text" placeholder="{$aLang.search}" maxlength="255" name="q" class="input-text">
<input type="submit" value="" title="{$aLang.search_submit}" class="input-submit icon icon-search">
</form>
{hook run='userbar_nav'}
<ul class="nav nav-userbar">
{if $oUserCurrent}
<li class="nav-userbar-username">
<a href="{$oUserCurrent->getUserWebPath()}" class="username">
<a href="{$oUserCurrent->getUserWebPath()}" class="dropdown-toggle" data-type="dropdown-toggle" data-option-offset-y="2" data-option-target="js-dropdown-usermenu" onclick="return false">
<img src="{$oUserCurrent->getProfileAvatarPath(24)}" alt="avatar" class="avatar" />
{$oUserCurrent->getLogin()}
</a>
</li>
<li><a href="{router page='topic'}add/" data-type="modal-toggle" data-modal-target="modal-write">{$aLang.block_create}</a></li>
<li><a href="{$oUserCurrent->getUserWebPath()}favourites/topics/">{$aLang.user_menu_profile_favourites}</a></li>
<li><a href="{router page='talk'}" {if $iUserCurrentCountTalkNew}class="new-messages"{/if} id="new_messages" title="{if $iUserCurrentCountTalkNew}{$aLang.user_privat_messages_new}{/if}">{$aLang.user_privat_messages}{if $iUserCurrentCountTalkNew} ({$iUserCurrentCountTalkNew}){/if}</a></li>
<li><a href="{router page='settings'}profile/">{$aLang.user_settings}</a></li>
<li><a href="{router page='topic'}add/" data-type="modal-toggle" data-option-target="modal-write">{$aLang.block_create}</a></li>
{if $iUserCurrentCountTalkNew}
<li><a href="{router page='talk'}" class="new-messages" id="new_messages" title="{if $iUserCurrentCountTalkNew}{$aLang.user_privat_messages_new}{/if}">{$aLang.user_privat_messages} +{$iUserCurrentCountTalkNew}</a></li>
{/if}
{hook run='userbar_item'}
<li><a href="{router page='login'}exit/?security_ls_key={$LIVESTREET_SECURITY_KEY}">{$aLang.exit}</a></li>
{else}
@ -26,6 +23,30 @@
<li><a href="#" class="js-registration-form-show">{$aLang.registration_submit}</a></li>
{/if}
</ul>
{if $oUserCurrent}
{* User Menu *}
<ul class="dropdown-menu" id="js-dropdown-usermenu">
{* TODO: Add hooks *}
{* TODO: Add counters *}
<li {if $sAction=='profile' && ($aParams[0]=='whois' or $aParams[0]=='')}class="active"{/if}><a href="{$oUserCurrent->getUserWebPath()}">{$aLang.user_menu_profile}</a></li>
<li {if $sAction=='profile' && $aParams[0]=='wall'}class="active"{/if}><a href="{$oUserCurrent->getUserWebPath()}wall/">{$aLang.user_menu_profile_wall}</a></li>
<li {if $sAction=='profile' && $aParams[0]=='created'}class="active"{/if}><a href="{$oUserCurrent->getUserWebPath()}created/topics/">{$aLang.user_menu_publication}</a></li>
<li {if $sAction=='profile' && $aParams[0]=='favourites'}class="active"{/if}><a href="{$oUserCurrent->getUserWebPath()}favourites/topics/">{$aLang.user_menu_profile_favourites}</a></li>
<li {if $sAction=='profile' && $aParams[0]=='friends'}class="active"{/if}><a href="{$oUserCurrent->getUserWebPath()}friends/">{$aLang.user_menu_profile_friends}</a></li>
<li {if $sAction=='profile' && $aParams[0]=='stream'}class="active"{/if}><a href="{$oUserCurrent->getUserWebPath()}stream/">{$aLang.user_menu_profile_stream}</a></li>
<li {if $sAction=='talk'}class="active"{/if}><a href="{router page='talk'}">{$aLang.talk_menu_inbox} {if $iUserCurrentCountTalkNew}<strong>+{$iUserCurrentCountTalkNew}</strong>{/if}</a></li>
<li {if $sAction=='settings'}class="active"{/if}><a href="{router page='settings'}">{$aLang.settings_menu}</a></li>
</ul>
{/if}
<form action="{router page='search'}topics/" class="search">
<input type="text" placeholder="{$aLang.search}" maxlength="255" name="q" class="input-text">
<input type="submit" value="" title="{$aLang.search_submit}" class="input-submit icon icon-search">
</form>
</nav>

View file

@ -23,8 +23,9 @@ jQuery(document).ready(function($){
$('.js-registration-form-show').click(function(){
if ($('[data-tab-target=tab-pane-registration]').length) {
$('#modal-login').jqmShow({onShow: $('[data-tab-target=tab-pane-registration]').tabActivate()});
if ($('[data-option-target=tab-pane-registration]').length) {
$('#modal-login').modal('option', 'onShow', function () { $('[data-option-target=tab-pane-registration]').tab('activate') });
$('#modal-login').modal('show');
} else {
window.location=aRouter.registration;
}
@ -32,8 +33,9 @@ jQuery(document).ready(function($){
});
$('.js-login-form-show').click(function(){
if ($('[data-tab-target=tab-pane-login]').length) {
$('#modal-login').jqmShow({onShow: $('[data-tab-target=tab-pane-login]').tabActivate()});
if ($('[data-option-target=tab-pane-login]').length) {
$('#modal-login').modal('option', 'onShow', function () { $('[data-option-target=tab-pane-login]').tab('activate') });
$('#modal-login').modal('show');
} else {
window.location=aRouter.login;
}
@ -41,16 +43,9 @@ jQuery(document).ready(function($){
});
// Datepicker
/**
* TODO: навесить языки на datepicker
*/
$('.date-picker').datepicker({
dateFormat: 'dd.mm.yy',
dayNamesMin: ['Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб'],
monthNames: ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'],
firstDay: 1
});
$('.date-picker').datepicker();
$('.js-popover-blog-info').popover();
// Поиск по тегам
$('.js-tag-search-form').submit(function(){
@ -76,58 +71,36 @@ jQuery(document).ready(function($){
ls.toolbar.up.init();
// Всплывающие сообщения
/**
* Modals
*/
$('.js-modal-default').modal();
/**
* Tooltips
*/
$('.js-tooltip').tooltip();
$('.js-title-talk').tooltip({
alignX: 'left',
alignY: 'center'
});
$('.js-tip-help').tooltip({
alignX: 'right',
alignY: 'center'
});
if (ls.registry.get('block_stream_show_tip')) {
$('.js-title-comment, .js-title-topic').poshytip({
className: 'infobox-yellow',
alignTo: 'target',
$('.js-title-comment, .js-title-topic').tooltip({
alignX: 'left',
alignY: 'center',
offsetX: 10,
liveEvents: true,
showTimeout: 1000
alignY: 'center'
});
}
$('.js-title-talk').poshytip({
className: 'infobox-yellow',
alignTo: 'target',
alignX: 'left',
alignY: 'center',
offsetX: 10,
liveEvents: true,
showTimeout: 500
});
$('.js-infobox-vote-topic').poshytip({
content: function() {
var id = $(this).attr('id').replace('vote_total_topic_','vote-info-topic-');
return $('#'+id).html();
},
className: 'infobox-standart',
alignTo: 'target',
alignX: 'center',
alignY: 'top',
offsetX: 2,
liveEvents: true,
showTimeout: 100
});
$('.js-tip-help').poshytip({
className: 'infobox-standart',
alignTo: 'target',
alignX: 'right',
alignY: 'center',
offsetX: 5,
liveEvents: true,
showTimeout: 500
});
$('.js-infobox').poshytip({
className: 'infobox-standart',
liveEvents: true,
showTimeout: 300
});
// подсветка кода
prettyPrint();

View file

@ -62,9 +62,9 @@
{/if}
{if $sPeriodSelectCurrent}
<div class="dropdown dropdown-toggle" data-toggle="dropdown" data-dropdown-menu="js-dropdown-date"></div>
<div class="dropdown dropdown-toggle" data-type="dropdown-toggle" data-option-target="js-dropdown-date" data-option-change-text="true"></div>
<ul class="dropdown-menu" id="js-dropdown-date">
<ul class="dropdown-menu" id="js-dropdown-date" data-type="dropdown-target">
<li {if $sPeriodSelectCurrent=='1'}class="active"{/if}><a href="{$sPeriodSelectRoot}?period=1">{$aLang.blog_menu_top_period_24h}</a></li>
<li {if $sPeriodSelectCurrent=='7'}class="active"{/if}><a href="{$sPeriodSelectRoot}?period=7">{$aLang.blog_menu_top_period_7d}</a></li>
<li {if $sPeriodSelectCurrent=='30'}class="active"{/if}><a href="{$sPeriodSelectRoot}?period=30">{$aLang.blog_menu_top_period_30d}</a></li>

View file

@ -0,0 +1,20 @@
<div class="nav-filter-wrapper">
<ul class="nav nav-pills">
<li {if $sMenuSubItemSelect=='good'}class="active"{/if}><a href="{$sMenuSubBlogUrl}">{$aLang.blog_menu_collective_good}</a></li>
<li {if $sMenuSubItemSelect=='new'}class="active"{/if}><a href="{$sMenuSubBlogUrl}newall/">{$aLang.blog_menu_collective_new}</a>{if $iCountTopicsBlogNew>0} <a href="{$sMenuSubBlogUrl}new/">+{$iCountTopicsBlogNew}</a>{/if}</li>
<li {if $sMenuSubItemSelect=='discussed'}class="active"{/if}><a href="{$sMenuSubBlogUrl}discussed/">{$aLang.blog_menu_collective_discussed}</a></li>
<li {if $sMenuSubItemSelect=='top'}class="active"{/if}><a href="{$sMenuSubBlogUrl}top/">{$aLang.blog_menu_collective_top}</a></li>
{hook run='menu_blog_blog_item'}
</ul>
{if $sPeriodSelectCurrent}
<div class="dropdown dropdown-toggle" data-type="dropdown-toggle" data-option-target="js-dropdown-date" data-option-change-text="true"></div>
<ul class="dropdown-menu" id="js-dropdown-date" data-type="dropdown-target">
<li {if $sPeriodSelectCurrent=='1'}class="active"{/if}><a href="{$sPeriodSelectRoot}?period=1">{$aLang.blog_menu_top_period_24h}</a></li>
<li {if $sPeriodSelectCurrent=='7'}class="active"{/if}><a href="{$sPeriodSelectRoot}?period=7">{$aLang.blog_menu_top_period_7d}</a></li>
<li {if $sPeriodSelectCurrent=='30'}class="active"{/if}><a href="{$sPeriodSelectRoot}?period=30">{$aLang.blog_menu_top_period_30d}</a></li>
<li {if $sPeriodSelectCurrent=='all'}class="active"{/if}><a href="{$sPeriodSelectRoot}?period=all">{$aLang.blog_menu_top_period_all}</a></li>
</ul>
{/if}
</div>

View file

@ -1,7 +1,7 @@
<h2 class="page-header page-header-publish">
{$aLang.block_create}
<a href="#" class="dropdown-toggle" data-toggle="dropdown" data-dropdown-menu="js-dropdown-publish">
<a href="#" class="dropdown-toggle" data-type="dropdown-toggle" data-option-target="js-dropdown-publish">
{if $sMenuItemSelect=='topic'}
{$aLang.topic_menu_add}
{elseif $sMenuItemSelect=='blog'}

View file

@ -1,6 +1,7 @@
{extends file='modals/modal_base.tpl'}
{block name='id'}add_friend_form{/block}
{block name='class'}js-modal-default{/block}
{block name='title'}{$aLang.profile_add_friend}{/block}
{block name='content'}

View file

@ -1,6 +1,7 @@
{extends file='modals/modal_base.tpl'}
{block name='id'}modal-blog-delete{/block}
{block name='class'}modal-blog-delete js-modal-default{/block}
{block name='title'}{$aLang.blog_admin_delete_title}{/block}
{block name='content'}

View file

@ -1,6 +1,7 @@
{extends file='modals/modal_base.tpl'}
{block name='id'}favourite-form-tags{/block}
{block name='class'}modal-favourite-tags js-modal-default{/block}
{block name='title'}{$aLang.add_favourite_tags}{/block}
{block name='content'}

View file

@ -6,19 +6,19 @@
{/block}
{block name='id'}window_upload_img{/block}
{block name='class'}modal-image-upload{/block}
{block name='class'}modal-image-upload js-modal-default{/block}
{block name='title'}{$aLang.uploadimg}{/block}
{block name='header_after'}
<ul class="nav nav-pills nav-pills-tabs" data-toggle="tabs">
<li data-toggle="tab" data-tab-target="tab-upload-pc"><a href="#">{$aLang.uploadimg_from_pc}</a></li>
<li data-toggle="tab" data-tab-target="tab-upload-link"><a href="#">{$aLang.uploadimg_from_link}</a></li>
<ul class="nav nav-pills nav-pills-tabs" data-type="tabs">
<li data-type="tab" data-option-target="tab-upload-pc" class="active"><a href="#">{$aLang.uploadimg_from_pc}</a></li>
<li data-type="tab" data-option-target="tab-upload-link"><a href="#">{$aLang.uploadimg_from_link}</a></li>
</ul>
{/block}
{block name='content_after'}
<div data-toggle="tab-content">
<form method="POST" action="" enctype="multipart/form-data" id="tab-upload-pc" onsubmit="return false;" data-toggle="tab-pane">
<div data-type="tab-content">
<form method="POST" action="" enctype="multipart/form-data" id="tab-upload-pc" onsubmit="return false;" data-type="tab-pane" class="tab-pane" style="display: block">
<div class="modal-content">
<p><label for="img_file">{$aLang.uploadimg_file}:</label>
<input type="file" name="img_file" id="img_file" value="" class="input-text input-width-full" /></p>
@ -48,7 +48,7 @@
</form>
<form method="POST" action="" enctype="multipart/form-data" id="tab-upload-link" onsubmit="return false;" data-toggle="tab-pane">
<form method="POST" action="" enctype="multipart/form-data" id="tab-upload-link" onsubmit="return false;" data-type="tab-pane" class="tab-pane">
<div class="modal-content">
<p><label for="img_file">{$aLang.uploadimg_url}:</label>
<input type="text" name="img_url" id="img_url" value="http://" class="input-text input-width-full" /></p>

View file

@ -5,7 +5,7 @@
{/block}
{block name='id'}modal-login{/block}
{block name='class'}modal-login{/block}
{block name='class'}modal-login js-modal-default{/block}
{block name='title'}{$aLang.user_authorization}{/block}
{block name='content'}
@ -19,18 +19,18 @@
});
</script>
<ul class="nav nav-pills" data-toggle="tabs">
<li data-toggle="tab" data-tab-target="tab-pane-login"><a href="#">{$aLang.user_login_submit}</a></li>
<ul class="nav nav-pills" data-type="tabs">
<li data-type="tab" data-option-target="tab-pane-login"><a href="#">{$aLang.user_login_submit}</a></li>
{if !$oConfig->GetValue('general.reg.invite')}
<li data-toggle="tab" data-tab-target="tab-pane-registration"><a href="#">{$aLang.registration}</a></li>
<li data-type="tab" data-option-target="tab-pane-registration"><a href="#">{$aLang.registration}</a></li>
{else}
<li><a href="{router page='registration'}">{$aLang.registration}</a></li>
{/if}
<li data-toggle="tab" data-tab-target="tab-pane-reminder"><a href="#">{$aLang.password_reminder}</a></li>
<li data-type="tab" data-option-target="tab-pane-reminder"><a href="#">{$aLang.password_reminder}</a></li>
</ul>
<div data-toggle="tab-content">
<div class="tab-pane" id="tab-pane-login" data-toggle="tab-pane">
<div data-type="tab-content">
<div class="tab-pane" id="tab-pane-login" data-type="tab-pane">
{hook run='login_popup_begin'}
<form action="{router page='login'}" method="post" id="popup-login-form">
{hook run='form_login_popup_begin'}
@ -54,7 +54,7 @@
{if !$oConfig->GetValue('general.reg.invite')}
<div class="tab-pane" id="tab-pane-registration" data-toggle="tab-pane">
<div class="tab-pane" id="tab-pane-registration" data-type="tab-pane">
<script type="text/javascript">
jQuery(document).ready(function($){
$('#popup-registration-form').find('input.js-ajax-validate').blur(function(e){
@ -124,7 +124,7 @@
{/if}
<div class="tab-pane" id="tab-pane-reminder" data-toggle="tab-pane">
<div class="tab-pane" id="tab-pane-reminder" data-type="tab-pane">
<script type="text/javascript">
jQuery(document).ready(function($){
$('#popup-reminder-form').bind('submit',function(){

View file

@ -1,6 +1,7 @@
{extends file='modals/modal_base.tpl'}
{block name='id'}photoset-upload-form{/block}
{block name='class'}js-modal-default{/block}
{block name='title'}{$aLang.uploadimg}{/block}
{block name='content'}

View file

@ -5,6 +5,7 @@
{/block}
{block name='id'}avatar-resize{/block}
{block name='class'}modal-avatar-resize js-modal-default{/block}
{block name='title'}{$aLang.uploadimg}{/block}
{block name='content'}

View file

@ -5,6 +5,7 @@
{/block}
{block name='id'}foto-resize{/block}
{block name='class'}modal-photo-resize js-modal-default{/block}
{block name='title'}{$aLang.uploadimg}{/block}
{block name='content'}

View file

@ -1,6 +1,7 @@
{extends file='modals/modal_base.tpl'}
{block name='id'}userfield_form{/block}
{block name='class'}modal-userfield js-modal-default{/block}
{block name='title'}{$aLang.user_field_admin_title_add}{/block}
{block name='content'}

View file

@ -5,7 +5,7 @@
{/block}
{block name='id'}modal-write{/block}
{block name='class'}modal-write{/block}
{block name='class'}modal-write js-modal-default{/block}
{block name='title'}{$aLang.block_create}{/block}
{block name='content'}

View file

@ -12,7 +12,7 @@
{block name='options'}{/block}
<div class="modal {block name='class'}{/block}" id="{block name='id'}{/block}" data-type="modal">
<div class="modal {block name='class'}{/block}" id="{block name='id'}{/block}" data-type="modal" {block name='attributes'}{/block}>
<header class="modal-header">
{if !$noTitle}<h3>{block name='title'}Modal window{/block}</h3>{/if}
<a href="#" class="modal-close" data-type="modal-close"></a>

View file

@ -21,70 +21,86 @@ $config['view']['grid']['fixed_width'] = 1000;
$config['head']['default']['js'] = array(
"___path.root.engine_lib___/external/html5shiv.js" => array('browser'=>'lt IE 9'),
"___path.root.engine_lib___/external/jquery/jquery.js",
"___path.root.engine_lib___/external/jquery/jquery-ui.js",
"___path.root.engine_lib___/external/jquery/jquery.notifier.js",
"___path.root.engine_lib___/external/jquery/jquery.scrollto.js",
"___path.root.engine_lib___/external/jquery/jquery.rich-array.min.js",
"___path.root.engine_lib___/external/jquery/markitup/jquery.markitup.js",
"___path.root.engine_lib___/external/jquery/jquery.form.js",
"___path.root.engine_lib___/external/jquery/jquery.jqplugin.js",
"___path.root.engine_lib___/external/jquery/jquery.cookie.js",
"___path.root.engine_lib___/external/jquery/jquery.serializejson.js",
"___path.root.engine_lib___/external/jquery/jquery.file.js",
"___path.root.engine_lib___/external/jquery/jcrop/jquery.Jcrop.js",
"___path.root.engine_lib___/external/jquery/poshytip/jquery.poshytip.js",
"___path.root.engine_lib___/external/jquery/jquery.placeholder.min.js",
"___path.root.engine_lib___/external/jquery/jquery.charcount.js",
"___path.root.engine_lib___/external/prettify/prettify.js",
"___path.root.server___/templates/framework/js/main.js",
"___path.root.server___/templates/framework/js/favourite.js",
"___path.root.server___/templates/framework/js/blocks.js",
"___path.root.server___/templates/framework/js/talk.js",
"___path.root.server___/templates/framework/js/vote.js",
"___path.root.server___/templates/framework/js/poll.js",
"___path.root.server___/templates/framework/js/subscribe.js",
"___path.root.server___/templates/framework/js/infobox.js",
"___path.root.server___/templates/framework/js/geo.js",
"___path.root.server___/templates/framework/js/wall.js",
"___path.root.server___/templates/framework/js/usernote.js",
"___path.root.server___/templates/framework/js/comments.js",
"___path.root.server___/templates/framework/js/blog.js",
"___path.root.server___/templates/framework/js/user.js",
"___path.root.server___/templates/framework/js/userfeed.js",
"___path.root.server___/templates/framework/js/userfield.js",
"___path.root.server___/templates/framework/js/stream.js",
"___path.root.server___/templates/framework/js/photoset.js",
"___path.root.server___/templates/framework/js/toolbar.js",
"___path.root.server___/templates/framework/js/settings.js",
"___path.root.server___/templates/framework/js/topic.js",
"___path.root.server___/templates/framework/js/hook.js",
'___path.root.server___/templates/framework/js/dropdown.js',
'___path.root.server___/templates/framework/js/tab.js',
'___path.root.server___/templates/framework/js/modal.js',
"http://yandex.st/share/share.js" => array('merge'=>false),
$config['path']['static']['framework'] = "___path.root.server___/templates/framework";
$config['head']['default']['js'] = array(
/* Vendor libs */
"___path.static.framework___/js/vendor/html5shiv.js" => array('browser'=>'lt IE 9'),
"___path.static.framework___/js/vendor/jquery.js",
//"___path.static.framework___/js/vendor/jquery-1.9.1.min.js",
"___path.static.framework___/js/vendor/jquery-ui/js/jquery-ui-1.10.2.custom.min.js",
"___path.static.framework___/js/vendor/jquery-ui/js/localization/jquery-ui-datepicker-ru.js",
"___path.static.framework___/js/vendor/jquery.notifier.js",
"___path.static.framework___/js/vendor/jquery.scrollto.js",
"___path.static.framework___/js/vendor/jquery.rich-array.min.js",
"___path.static.framework___/js/vendor/jquery.form.js",
"___path.static.framework___/js/vendor/jquery.jqplugin.js",
"___path.static.framework___/js/vendor/jquery.cookie.js",
"___path.static.framework___/js/vendor/jquery.serializejson.js",
"___path.static.framework___/js/vendor/jquery.file.js",
"___path.static.framework___/js/vendor/jcrop/jquery.Jcrop.js",
"___path.static.framework___/js/vendor/jquery.placeholder.min.js",
"___path.static.framework___/js/vendor/jquery.charcount.js",
"___path.static.framework___/js/vendor/poshytip/jquery.poshytip.js",
"___path.static.framework___/js/vendor/markitup/jquery.markitup.js",
"___path.static.framework___/js/vendor/prettify/prettify.js",
/* Core */
"___path.static.framework___/js/core/main.js",
"___path.static.framework___/js/core/hook.js",
/* User Interface */
"___path.static.framework___/js/ui/popup.js",
"___path.static.framework___/js/ui/dropdown.js",
"___path.static.framework___/js/ui/tooltip.js",
"___path.static.framework___/js/ui/popover.js",
"___path.static.framework___/js/ui/tab.js",
"___path.static.framework___/js/ui/modal.js",
/* LiveStreet */
"___path.static.framework___/js/livestreet/favourite.js",
"___path.static.framework___/js/livestreet/blocks.js",
"___path.static.framework___/js/livestreet/talk.js",
"___path.static.framework___/js/livestreet/vote.js",
"___path.static.framework___/js/livestreet/poll.js",
"___path.static.framework___/js/livestreet/subscribe.js",
"___path.static.framework___/js/livestreet/geo.js",
"___path.static.framework___/js/livestreet/wall.js",
"___path.static.framework___/js/livestreet/usernote.js",
"___path.static.framework___/js/livestreet/comments.js",
"___path.static.framework___/js/livestreet/blog.js",
"___path.static.framework___/js/livestreet/user.js",
"___path.static.framework___/js/livestreet/userfeed.js",
"___path.static.framework___/js/livestreet/userfield.js",
"___path.static.framework___/js/livestreet/stream.js",
"___path.static.framework___/js/livestreet/photoset.js",
"___path.static.framework___/js/livestreet/toolbar.js",
"___path.static.framework___/js/livestreet/settings.js",
"___path.static.framework___/js/livestreet/topic.js",
);
$config['head']['default']['js'][] = '___path.static.skin___/js/template.js';
$config['head']['default']['css'] = array(
// Framework styles
"___path.root.server___/templates/framework/css/reset.css",
"___path.root.server___/templates/framework/css/helpers.css",
"___path.root.server___/templates/framework/css/text.css",
"___path.root.server___/templates/framework/css/dropdowns.css",
"___path.root.server___/templates/framework/css/buttons.css",
"___path.root.server___/templates/framework/css/forms.css",
"___path.root.server___/templates/framework/css/navs.css",
"___path.root.server___/templates/framework/css/modals.css",
"___path.static.framework___/css/reset.css",
"___path.static.framework___/css/helpers.css",
"___path.static.framework___/css/text.css",
"___path.static.framework___/css/dropdowns.css",
"___path.static.framework___/css/buttons.css",
"___path.static.framework___/css/forms.css",
"___path.static.framework___/css/navs.css",
"___path.static.framework___/css/modals.css",
"___path.static.framework___/css/tooltip.css",
"___path.static.framework___/css/popover.css",
// Template styles
"___path.static.skin___/css/base.css",
"___path.root.engine_lib___/external/jquery/markitup/skins/simple/style.css",
"___path.root.engine_lib___/external/jquery/markitup/sets/default/style.css",
"___path.root.engine_lib___/external/jquery/jcrop/jquery.Jcrop.css",
"___path.root.engine_lib___/external/prettify/prettify.css",
"___path.static.framework___/js/vendor/jquery-ui/css/smoothness/jquery-ui-1.10.2.custom.css",
"___path.static.framework___/js/vendor/markitup/skins/simple/style.css",
"___path.static.framework___/js/vendor/markitup/sets/default/style.css",
"___path.static.framework___/js/vendor/jcrop/jquery.Jcrop.css",
"___path.static.framework___/js/vendor/prettify/prettify.css",
"___path.static.framework___/js/vendor/poshytip/tip-yellow/tip-yellow.css",
"___path.static.skin___/css/grid.css",
"___path.static.skin___/css/common.css",
"___path.static.skin___/css/icons.css",
@ -99,7 +115,6 @@ $config['head']['default']['css'] = array(
"___path.static.skin___/css/wall.css",
"___path.static.skin___/css/infobox.css",
"___path.static.skin___/css/jquery.notifier.css",
"___path.static.skin___/css/smoothness/jquery-ui.css",
"___path.static.skin___/themes/___view.theme___/style.css",
"___path.static.skin___/css/print.css",
);

View file

@ -62,7 +62,12 @@
{assign var="bVoteInfoShow" value=true}
{/if}
<div class="vote-up" onclick="return ls.vote.vote({$oTopic->getId()},this,1,'topic');"></div>
<div class="vote-count {if $bVoteInfoShow}js-infobox-vote-topic{/if}" id="vote_total_topic_{$oTopic->getId()}" title="{$aLang.topic_vote_count}: {$oTopic->getCountVote()}">
<div
class="vote-count {if $bVoteInfoShow}js-infobox-vote-topic{/if}"
id="vote_total_topic_{$oTopic->getId()}"
data-type="tooltip-toggle"
data-option-target="vote-info-topic-{$oTopic->getId()}">
{if $bVoteInfoShow}
{if $oTopic->getRating() > 0}+{/if}{$oTopic->getRating()}
{else}
@ -70,12 +75,19 @@
{/if}
</div>
<div class="vote-down" onclick="return ls.vote.vote({$oTopic->getId()},this,-1,'topic');"></div>
{if $bVoteInfoShow}
<div id="vote-info-topic-{$oTopic->getId()}" style="display: none;">
+ {$oTopic->getCountVoteUp()}<br/>
- {$oTopic->getCountVoteDown()}<br/>
&nbsp; {$oTopic->getCountVoteAbstain()}<br/>
{hook run='topic_show_vote_stats' topic=$oTopic}
<div id="vote-info-topic-{$oTopic->getId()}" class="tooltip" data-type="tooltip-target">
<div class="tip-arrow"></div>
<div class="tooltip-content" data-type="tooltip-content">
<i class="icon-plus icon-white"></i> {$oTopic->getCountVoteUp()}<br />
<i class="icon-minus icon-white"></i> {$oTopic->getCountVoteDown()}<br />
<i class="icon-eye-open icon-white"></i> {$oTopic->getCountVoteAbstain()}<br />
{$aLang.topic_vote_count}: {$oTopic->getCountVote()}<br />
{hook run='topic_show_vote_stats' topic=$oTopic}
</div>
</div>
{/if}
</li>

View file

@ -31,7 +31,7 @@
<a href="{$oUserList->getUserWebPath()}"><img src="{$oUserList->getProfileAvatarPath(24)}" alt="avatar" class="avatar" /></a>
<p class="username word-wrap"><a href="{$oUserList->getUserWebPath()}">{$oUserList->getLogin()}</a>
{if $oUserNote}
<i class="icon-comment js-infobox" title="{$oUserNote->getText()|escape:'html'}"></i>
<i class="icon-comment js-tooltip" title="{$oUserNote->getText()|escape:'html'}"></i>
{/if}
</p>
</td>