diff --git a/templates/framework/js/livestreet/captcha.js b/templates/framework/js/livestreet/captcha.js
index 01ae65cd..93214123 100644
--- a/templates/framework/js/livestreet/captcha.js
+++ b/templates/framework/js/livestreet/captcha.js
@@ -12,7 +12,9 @@ ls.captcha = (function ($) {
*/
var defaults = {
// Селектор каптчи
- sCaptchaSelector: '.js-form-auth-captcha'
+ selectors: {
+ captcha: '.js-form-auth-captcha'
+ }
};
/**
@@ -21,7 +23,7 @@ ls.captcha = (function ($) {
this.init = function(options) {
this.options = $.extend({}, defaults, options);
- oCaptcha = $(this.options.sCaptchaSelector);
+ oCaptcha = $(this.options.selectors.captcha);
// Подгружаем каптчу при открытии окна регистрации
$('[data-option-target=tab-pane-registration]').tab('option', 'onActivate', function () {
diff --git a/templates/framework/js/livestreet/editor.js b/templates/framework/js/livestreet/editor.js
index 3aa78363..a799ddb7 100644
--- a/templates/framework/js/livestreet/editor.js
+++ b/templates/framework/js/livestreet/editor.js
@@ -12,9 +12,11 @@ ls.editor = (function($) {
*/
var defaults = {
// Селекторы
- sInsertImageButtonSelector: '.js-insert-image-button',
- sUploadImageButtonSelector: '.js-upload-image-button',
- sPreviewImageLoaderSelector: '.js-topic-preview-loader',
+ selectors: {
+ insertImageButton: '.js-insert-image-button',
+ uploadImageButton: '.js-upload-image-button',
+ previewImageLoader: '.js-topic-preview-loader',
+ }
};
/**
@@ -28,7 +30,7 @@ ls.editor = (function($) {
this.options = $.extend({}, defaults, options);
// Вставка ссылки
- $(this.options.sInsertImageButtonSelector).on('click', function (e) {
+ $(this.options.selectors.insertImageButton).on('click', function (e) {
var sUrl = $('#img_url').val(),
sAlign = $('#form-image-url-align').val(),
sTitle = $('#form-image-url-title').val();
@@ -37,7 +39,7 @@ ls.editor = (function($) {
});
// Вставка ссылки
- $(this.options.sUploadImageButtonSelector).on('click', function (e) {
+ $(this.options.selectors.uploadImageButton).on('click', function (e) {
var sFormId = $(this).data('form-id');
self.ajaxUploadImg(sFormId);
diff --git a/templates/framework/js/livestreet/topic.js b/templates/framework/js/livestreet/topic.js
index 0f5cb994..c5496bf9 100644
--- a/templates/framework/js/livestreet/topic.js
+++ b/templates/framework/js/livestreet/topic.js
@@ -17,10 +17,12 @@ ls.topic = (function ($) {
},
// Селекторы
- sPreviewImageSelector: '.js-topic-preview-image',
- sPreviewImageLoaderSelector: '.js-topic-preview-loader',
- sPreviewTopicTextButtonSelector: '.js-topic-preview-text-button',
- sPreviewTopicTextHideButtonSelector: '.js-topic-preview-text-hide-button',
+ selectors: {
+ previewImage: '.js-topic-preview-image',
+ previewImageLoader: '.js-topic-preview-loader',
+ previewTopicTextButton: '.js-topic-preview-text-button',
+ previewTopicTextHideButton: '.js-topic-preview-text-hide-button',
+ }
};
/**
@@ -34,22 +36,22 @@ ls.topic = (function ($) {
this.options = $.extend({}, defaults, options);
// Подгрузка избражений-превью
- $(this.options.sPreviewImageSelector).each(function () {
+ $(this.options.selectors.previewImage).each(function () {
$(this).imagesLoaded(function () {
var $this = $(this),
- $preview = $this.closest(self.options.sPreviewImageLoaderSelector).removeClass('loading');
+ $preview = $this.closest(self.options.selectors.previewImageLoader).removeClass('loading');
$this.height() < $preview.height() && $this.css('top', ($preview.height() - $this.height()) / 2 );
});
});
// Превью текста
- $(this.options.sPreviewTopicTextButtonSelector).on('click', function (e) {
+ $(this.options.selectors.previewTopicTextButton).on('click', function (e) {
self.showPreviewText('form-topic-add', 'topic-text-preview');
});
// Закрытие превью
- $(document).on('click', this.options.sPreviewTopicTextHideButtonSelector, function (e) {
+ $(document).on('click', this.options.selectors.previewTopicTextHideButton, function (e) {
self.hidePreviewText();
});
};
diff --git a/templates/framework/js/livestreet/usernote.js b/templates/framework/js/livestreet/usernote.js
index a3172a02..ffd84078 100644
--- a/templates/framework/js/livestreet/usernote.js
+++ b/templates/framework/js/livestreet/usernote.js
@@ -12,24 +12,26 @@ ls.usernote = (function($) {
*/
var defaults = {
// Роутеры
- oRouters: {
+ routers: {
save: aRouter['profile'] + 'ajax-note-save/',
remove: aRouter['profile'] + 'ajax-note-remove/',
},
// Селекторы
- sNoteSelector: '.js-user-note',
- sNoteContentSelector: '.js-user-note-content',
- sNoteTextSelector: '.js-user-note-text',
- sNoteAddButtonSelector: '.js-user-note-add-button',
- sNoteActionsSelector: '.js-user-note-actions',
- sNoteEditButtonSelector: '.js-user-note-edit-button',
- sNoteRemoveButtonSelector: '.js-user-note-remove-button',
+ selectors: {
+ note: '.js-user-note',
+ noteContent: '.js-user-note-content',
+ noteText: '.js-user-note-text',
+ noteAddButton: '.js-user-note-add-button',
+ noteActions: '.js-user-note-actions',
+ noteEditButton: '.js-user-note-edit-button',
+ noteRemoveButton: '.js-user-note-remove-button',
- sNoteEditSelector: '.js-user-note-edit',
- sNoteEditTextSelector: '.js-user-note-edit-text',
- sNoteEditSaveButtonSelector: '.js-user-note-edit-save',
- sNoteEditCancelButtonSelector: '.js-user-note-edit-cancel',
+ noteEdit: '.js-user-note-edit',
+ noteEditText: '.js-user-note-edit-text',
+ noteEditSaveButton: '.js-user-note-edit-save',
+ noteEditCancelButton: '.js-user-note-edit-cancel',
+ }
};
/**
@@ -43,44 +45,44 @@ ls.usernote = (function($) {
this.options = $.extend({}, defaults, options);
// Добавление
- $(this.options.sNoteSelector).each(function () {
+ $(this.options.selectors.note).each(function () {
var oNote = $(this);
var oVars = {
oNote: oNote,
- oNoteText: oNote.find(self.options.sNoteTextSelector),
- oNoteEditText: oNote.find(self.options.sNoteEditTextSelector),
- oNoteContent: oNote.find(self.options.sNoteContentSelector),
- oNoteEdit: oNote.find(self.options.sNoteEditSelector),
- oNoteAdd: oNote.find(self.options.sNoteAddButtonSelector),
- oNoteActions: oNote.find(self.options.sNoteActionsSelector),
+ oNoteText: oNote.find(self.options.selectors.noteText),
+ oNoteEditText: oNote.find(self.options.selectors.noteEditText),
+ oNoteContent: oNote.find(self.options.selectors.noteContent),
+ oNoteEdit: oNote.find(self.options.selectors.noteEdit),
+ oNoteAdd: oNote.find(self.options.selectors.noteAddButton),
+ oNoteActions: oNote.find(self.options.selectors.noteActions),
iUserId: oNote.data('user-id')
};
// Показывает форму добавления
- oVars.oNote.find(self.options.sNoteAddButtonSelector).on('click', function (e) {
+ oVars.oNote.find(self.options.selectors.noteAddButton).on('click', function (e) {
self.showForm(oVars);
e.preventDefault();
}.bind(self));
// Отмена
- oVars.oNote.find(self.options.sNoteEditCancelButtonSelector).on('click', function (e) {
+ oVars.oNote.find(self.options.selectors.noteEditCancelButton).on('click', function (e) {
self.hideForm(oVars);
});
// Сохранение заметки
- oVars.oNote.find(self.options.sNoteEditSaveButtonSelector).on('click', function (e) {
+ oVars.oNote.find(self.options.selectors.noteEditSaveButton).on('click', function (e) {
self.save(oVars);
});
// Удаление заметки
- oVars.oNote.find(self.options.sNoteRemoveButtonSelector).on('click', function (e) {
+ oVars.oNote.find(self.options.selectors.noteRemoveButton).on('click', function (e) {
self.remove(oVars);
e.preventDefault();
});
// Редактирование заметки
- oVars.oNote.find(self.options.sNoteEditButtonSelector).on('click', function (e) {
+ oVars.oNote.find(self.options.selectors.noteEditButton).on('click', function (e) {
self.showForm(oVars);
oVars.oNoteEditText.val( $.trim(oVars.oNoteText.html()) );
e.preventDefault();
@@ -122,7 +124,7 @@ ls.usernote = (function($) {
ls.hook.marker('saveBefore');
- ls.ajax(this.options.oRouters.save, params, function (result) {
+ ls.ajax(this.options.routers.save, params, function (result) {
if (result.bStateError) {
ls.msg.error(null, result.sMsg);
} else {
@@ -148,7 +150,7 @@ ls.usernote = (function($) {
ls.hook.marker('removeBefore');
- ls.ajax(this.options.oRouters.remove, params, function (result) {
+ ls.ajax(this.options.routers.remove, params, function (result) {
if (result.bStateError) {
ls.msg.error(null, result.sMsg);
} else {
diff --git a/templates/framework/js/livestreet/vote.js b/templates/framework/js/livestreet/vote.js
index 8c610f7c..f1f7c26f 100644
--- a/templates/framework/js/livestreet/vote.js
+++ b/templates/framework/js/livestreet/vote.js
@@ -4,11 +4,24 @@ var ls = ls || {};
* Голосование
*/
ls.vote = (function ($) {
+ "use strict";
+
/**
- * Опции
- */
- this.options = {
- classes: {
+ * Дефолтные опции
+ */
+ var defaults = {
+ // Селекторы
+ selectors : {
+ vote: '.js-vote',
+ up: '.js-vote-up',
+ down: '.js-vote-down',
+ abstain: '.js-vote-abstain',
+ count: '.js-vote-count',
+ rating: '.js-vote-rating',
+ },
+
+ // Классы
+ classes : {
voted: 'voted',
plus: 'voted-up',
minus: 'voted-down',
@@ -18,109 +31,174 @@ ls.vote = (function ($) {
zero: 'vote-count-zero',
not_voted: 'not-voted'
},
- prefix_area: 'vote_area_',
- prefix_total: 'vote_total_',
- prefix_count: 'vote_count_',
type: {
comment: {
- url: aRouter['ajax']+'vote/comment/',
+ url: aRouter['ajax'] + 'vote/comment/',
targetName: 'idComment'
},
topic: {
- url: aRouter['ajax']+'vote/topic/',
+ url: aRouter['ajax'] + 'vote/topic/',
targetName: 'idTopic'
},
blog: {
- url: aRouter['ajax']+'vote/blog/',
+ url: aRouter['ajax'] + 'vote/blog/',
targetName: 'idBlog'
},
user: {
- url: aRouter['ajax']+'vote/user/',
+ url: aRouter['ajax'] + 'vote/user/',
targetName: 'idUser'
}
}
};
- this.vote = function(idTarget, objVote, value, type) {
- if (!this.options.type[type]) return false;
+ /**
+ * Инициализация
+ *
+ * @param {Object} options Опции
+ */
+ this.init = function(options) {
+ var self = this;
- objVote = $(objVote);
- var params = {};
- params['value'] = value;
- params[this.options.type[type].targetName] = idTarget;
+ this.options = $.extend({}, defaults, options);
- ls.hook.marker('voteBefore');
- ls.ajax(this.options.type[type].url, params, function(result) {
- var args = [idTarget, objVote, value, type, result];
- this.onVote.apply(this,args);
- }.bind(this));
- return false;
- }
+ $(this.options.selectors.vote).each(function () {
+ var oVote = $(this);
- this.onVote = function(idTarget, objVote, value, type, result) {
+ var oVars = {
+ vote: oVote,
+ up: oVote.find(self.options.selectors.up),
+ down: oVote.find(self.options.selectors.down),
+ abstain: oVote.find(self.options.selectors.abstain),
+ count: oVote.find(self.options.selectors.count),
+ rating: oVote.find(self.options.selectors.rating),
+ id: oVote.data('vote-id'),
+ type: oVote.data('vote-type'),
+ };
+
+ // Плюс
+ oVars.up.on('click', function (e) {
+ self.vote(oVars.id, 1, oVars.type, oVars);
+ e.preventDefault();
+ });
+
+ // Минус
+ oVars.down.on('click', function (e) {
+ self.vote(oVars.id, -1, oVars.type, oVars);
+ e.preventDefault();
+ });
+
+ // Воздержаться
+ oVars.abstain.on('click', function (e) {
+ self.vote(oVars.id, 0, oVars.type, oVars);
+ e.preventDefault();
+ });
+ });
+ };
+
+ /**
+ * Голосование
+ *
+ * @param {Number} iTargetId ID объекта
+ * @param {Number} iValue Значение
+ * @param {String} sType Тип голосования
+ * @param {Object} oVars Переменные текущего голосования
+ */
+ this.vote = function(iTargetId, iValue, sType, oVars) {
+ var self = this;
+
+ if ( ! this.options.type[sType] ) return false;
+
+ var params = {
+ value: iValue
+ };
+ params[this.options.type[sType].targetName] = iTargetId;
+
+ ls.hook.marker('voteBefore');
+
+ ls.ajax(this.options.type[sType].url, params, function (result) {
+ var args = [iTargetId, iValue, sType, oVars, result];
+ this.onVote.apply(this, args);
+ }.bind(this));
+ };
+
+ /**
+ * Коллбэк вызываемый при успешном голосовании
+ *
+ * @param {Number} iTargetId ID объекта
+ * @param {Number} iValue Значение
+ * @param {String} sType Тип голосования
+ * @param {Object} oVars Переменные текущего голосования
+ * @param {Object} result Объект возвращемый сервером
+ */
+ this.onVote = function(iTargetId, iValue, sType, oVars, result) {
if (result.bStateError) {
ls.msg.error(null, result.sMsg);
} else {
ls.msg.notice(null, result.sMsg);
-
- var divVoting = $('#'+this.options.prefix_area+type+'_'+idTarget);
- divVoting.addClass(this.options.classes.voted);
+ oVars.vote
+ .addClass(this.options.classes.voted)
+ .removeClass(this.options.classes.negative + ' ' + this.options.classes.positive + ' ' + this.options.classes.not_voted + ' ' + this.options.classes.zero);
- if (value > 0) {
- divVoting.addClass(this.options.classes.plus);
- }
- if (value < 0) {
- divVoting.addClass(this.options.classes.minus);
- }
- if (value == 0) {
- divVoting.addClass(this.options.classes.voted_zero);
+ if (iValue > 0) {
+ oVars.vote.addClass(this.options.classes.plus);
+ } else if (iValue < 0) {
+ oVars.vote.addClass(this.options.classes.minus);
+ } else if (iValue == 0) {
+ oVars.vote.addClass(this.options.classes.voted_zero);
}
- var divTotal = $('#'+this.options.prefix_total+type+'_'+idTarget);
- var divCount = $('#'+this.options.prefix_count+type+'_'+idTarget);
-
- if (divCount.length>0 && result.iCountVote) {
- divCount.text(parseInt(result.iCountVote));
+ if (oVars.count.length > 0 && result.iCountVote) {
+ oVars.count.text(parseInt(result.iCountVote));
}
result.iRating = parseFloat(result.iRating);
- divVoting.removeClass(this.options.classes.negative);
- divVoting.removeClass(this.options.classes.positive);
- divVoting.removeClass(this.options.classes.not_voted);
- divVoting.removeClass(this.options.classes.zero);
-
if (result.iRating > 0) {
- divVoting.addClass(this.options.classes.positive);
- divTotal.text('+'+result.iRating);
- }else if (result.iRating < 0) {
- divVoting.addClass(this.options.classes.negative);
- divTotal.text(result.iRating);
- }else if (result.iRating == 0) {
- divVoting.addClass(this.options.classes.zero);
- divTotal.text(0);
+ oVars.vote.addClass(this.options.classes.positive);
+ oVars.rating.text('+' + result.iRating);
+ } else if (result.iRating < 0) {
+ oVars.vote.addClass(this.options.classes.negative);
+ oVars.rating.text(result.iRating);
+ } else if (result.iRating == 0) {
+ oVars.vote.addClass(this.options.classes.zero);
+ oVars.rating.text(0);
}
- var method='onVote'+ls.tools.ucfirst(type);
- if ($.type(this[method])=='function') {
- this[method].apply(this,[idTarget, objVote, value, type, result]);
- }
-
- if (type == 'topic') {
- $('#' + this.options.prefix_area + type + '_' + idTarget).addClass('js-tooltip-vote-topic').tooltip('enter');
+ var method = 'onVote' + ls.tools.ucfirst(sType);
+
+ if (typeof this[method] == 'function') {
+ this[method].apply(this, [iTargetId, iValue, sType, oVars, result]);
}
}
-
- $(this).trigger('vote',[idTarget, objVote, value, type, result]);
- }
+ };
+ /**
+ * Голосование за пользователя
+ *
+ * @param {Number} iTargetId ID объекта
+ * @param {Number} iValue Значение
+ * @param {String} sType Тип голосования
+ * @param {Object} oVars Переменные текущего голосования
+ * @param {Object} result Объект возвращемый сервером
+ */
+ this.onVoteUser = function(iTargetId, iValue, sType, oVars, result) {
+ $('#user_skill_' + iTargetId).text(result.iSkill);
+ };
-
- this.onVoteUser = function(idTarget, objVote, value, type, result) {
- $('#user_skill_'+idTarget).text(result.iSkill);
- }
+ /**
+ * Голосование за топик
+ *
+ * @param {Number} iTargetId ID объекта
+ * @param {Number} iValue Значение
+ * @param {String} sType Тип голосования
+ * @param {Object} oVars Переменные текущего голосования
+ * @param {Object} result Объект возвращемый сервером
+ */
+ this.onVoteTopic = function(iTargetId, iValue, sType, oVars, result) {
+ oVars.vote.addClass('js-tooltip-vote-topic').tooltip('enter');
+ };
return this;
}).call(ls.vote || {},jQuery);
\ No newline at end of file
diff --git a/templates/skin/developer/actions/ActionBlog/blog.tpl b/templates/skin/developer/actions/ActionBlog/blog.tpl
index b0827c45..2e3b9711 100644
--- a/templates/skin/developer/actions/ActionBlog/blog.tpl
+++ b/templates/skin/developer/actions/ActionBlog/blog.tpl
@@ -28,26 +28,28 @@