Вопрос по vote.js

Извиняюсь за придирку, но не могу понять зачем нужен фрагмент кода в vote.js. Рассматривая движок LS заметил одну особенность объекта vote, отвечающего за голосование. Основной метод голосования ls.vote.vote(idTarget, objVote, value, type) содержит маркер voidBefore, что позволяет делать инъекции в код (подробнее здесь) до начала обработки голосования. Маркер voteAfter не предусмотрен (. Но ниже по коду в окончании метода onVote, видим такие строки:
var method='onVote'+ls.tools.ucfirst(type);
if ($.type(this[method])=='function') {
     this[method].apply(this,[idTarget, objVote, value, type, result]);
}

То есть, например, что, для случая голосования за топик, будет вызван метод

ls.vote.onVoteTopic(idTarget, objVote, value, type, result),

если он существует. Сам метод не реализован в движке, поэтому мы можем реализовать его сами учитывая, что другие дополнения могут использовать этот метод.

Будет ли такой подход к перехвату голосования корректным? Я думаю Да, если признать приведенный выше вызов как официальный механизм наряду с хуками и маркерами — что само по себе неправильно. И нет, поскольку это артефакт в поведении объекта, на мой взгляд, поскольку фактически реализовано в движке только onVoteUser.
Если имеется ввиду предоставление потенциальной возможности пользователю обрабатывать успешное окончание голосования, то почему таким хитрым способом. Если предполагается будущее наращивание функционала, то вопрос снимается, но заглушки бы не помешали.
И собственно вопрос: Зачем нужен вызов this[method].apply(this,[idTarget, objVote, value, type, result]);. Могу ли я использовать эту лазейку в своих расширениях или нет

Еще раз про JS-хуки - мое представление о том, как должно быть

Ежу понятно, что гибкость и расширяемость – это одни из основных характеристик любой CMS. И LiveStreet в этом плане весьма неплохо организован. Но, на мой взгляд, иногда движку не хватает какой-то концептуальной структурированности. Давайте рассмотрим, как мы можем расширять и менять скины (шаблоны), серверную часть (PHP) и клиентскую часть (javascript).
Читать дальше →

Вопрос по JS

Уважаемые знатоки. В движке есть user.js в котором есть следующий код:
this.uploadAvatar = function(form,input) {
		if (!form && input) {
			var form = $('<form method="post" enctype="multipart/form-data"></form>').css({
				'display': 'none'
			}).appendTo('body');
			var clone=input.clone(true);
			input.hide();
			clone.insertAfter(input);
			input.appendTo(form);
		}

		ls.ajaxSubmit(aRouter['settings']+'profile/upload-avatar/',form,function(data){
			if (data.bStateError) {
				ls.msg.error(data.sMsgTitle,data.sMsg);
			} else {
				this.showResizeAvatar(data.sTmpFile);
			}
		}.bind(this));
	};

Внимание вопрос: почему у ajaxSubmit так много параметров хотя должен быть только один да и тот объект?

Открытый javascript в исходном коде сайта

Открывая исходный код любой страницы LS можно увидеть несколько javascript.
Например:
<script type="text/javascript">
		var DIR_WEB_ROOT 			= 'http://livestreet.ru';
		var DIR_STATIC_SKIN 		= 'http://livestreet.ru/templates/skin/synio';
		var DIR_ROOT_ENGINE_LIB 	= 'http://livestreet.ru/engine/lib';
		var LIVESTREET_SECURITY_KEY = 'd0ecdfcc43ff3f2abfc12b6aa114de5a';
		var SESSION_ID				= 'q28qloh13rsbiatnu6qtvt6ma6';
		var BLOG_USE_TINYMCE		= '';
		
		var TINYMCE_LANG = 'en';
					TINYMCE_LANG = 'ru';
		
		var aRouter = new Array();
					aRouter['error'] = 'http://livestreet.ru/error/';
					aRouter['registration'] = 'http://livestreet.ru/registration/';
					aRouter['profile'] = 'http://livestreet.ru/profile/';
					aRouter['my'] = 'http://livestreet.ru/my/';
					aRouter['blog'] = 'http://livestreet.ru/blog/';
					aRouter['personal_blog'] = 'http://livestreet.ru/log/';
					aRouter['index'] = 'http://livestreet.ru/index/';
					aRouter['topic'] = 'http://livestreet.ru/topic/';
					aRouter['login'] = 'http://livestreet.ru/login/';
					aRouter['people'] = 'http://livestreet.ru/people/';
					aRouter['settings'] = 'http://livestreet.ru/settings/';
					aRouter['tag'] = 'http://livestreet.ru/tag/';
					aRouter['talk'] = 'http://livestreet.ru/talk/';
					aRouter['comments'] = 'http://livestreet.ru/comments/';
					aRouter['rss'] = 'http://livestreet.ru/rss/';
					aRouter['link'] = 'http://livestreet.ru/link/';
					aRouter['question'] = 'http://livestreet.ru/question/';
					aRouter['blogs'] = 'http://livestreet.ru/blogs/';
					aRouter['search'] = 'http://livestreet.ru/search/';
					aRouter['admin'] = 'http://livestreet.ru/admin/';
					aRouter['ajax'] = 'http://livestreet.ru/ajax/';
					aRouter['feed'] = 'http://livestreet.ru/feed/';
					aRouter['stream'] = 'http://livestreet.ru/stream/';
					aRouter['photoset'] = 'http://livestreet.ru/photoset/';
					aRouter['subscribe'] = 'http://livestreet.ru/subscribe/';
					aRouter['article'] = 'http://livestreet.ru/article/';
					aRouter['page'] = 'http://livestreet.ru/page/';
					aRouter['alltopics'] = 'http://livestreet.ru/alltopics/';
					aRouter['seolib'] = 'http://livestreet.ru/seolib/';
					aRouter['articles'] = 'http://livestreet.ru/articles/';
					aRouter['titles'] = 'http://livestreet.ru/titles/';
			</script>

Я хотел бы узнать безопасен ли вывод подобных javascript в исходном коде и для чего он предназначен?
Можно ли как-то зашифровать их?

JS в ls 1.0

Что то не могу разобраться. Хотел сделать смену стилей для кнопки «читать блог» в активном и неактивном состоянии. Стили сменяются. То есть при вступлении кнопке добавляется класс Active, чем я и пользуюсь. но при перегазгрузке active удаляется. И кнопка теряет свое оформление. Вообщем, не подскажете, как реализовать нормальную смену стилей, чтобы она сохранялась?

Читать дальше →

Корректная локализация строк в JS-коде плагина

Уважаемые коллеги,

Как корректно локализовать строки, используемые в js-коде, который подключается моим плагином через Viewer_AppendScript? Например, различные сообщения и т.п. вспомогательные строки. Хотелось бы сделать изначально правильно.

Заранее благодарю за любую помощь.

Индексация ссылок Google'ом в Javascript

Добрый день. Может, кто подскажет, как скрыть от индексации ссылки, которые указаны в коде Javscript на странице в массиве aRouter? В нем перечислены все ссылки, известные движку, в том числе системные и ajax (/error/, /my/, /profile/ и др), индексировать которые не хотелось бы. Из-за этого в панели вебмастера очень много ошибок со статусом 404. Не знаю, на сколько это критично для продвижения в поиске Google, но как минимум неприятно (:

Топорным способом, закрыв их в robots.txt, решать эту проблему не хотелось бы.

0.5.1 new-jquery

Помощь по js =)

Вообщем, есть код friend.js, который отвечает за добавление/удаление друзей.
Изначально в профиле стоит текстовка:
<li id="add_friend_item"><a href="#"  title="{$aLang.user_friend_add}" id="add_friend_show">{$aLang.user_friend_add}</a>


При добавлении в друзья эта текстова заменяется на надпись «Заявка отправлена».

Я решил оформить кнопку картинкой и процесс замены нарушился. Получился такой код:
<li id="add_friend_item"><a href="#"  title="{$aLang.user_friend_add}" id="add_friend_show" class="add-friend"> </a>

При добавлении в друзья не происходит появления текстовки «Заявка отправлена». Она появляется только после перезагрузки страницы.

Вопрос: что поменять в js чтобы происходила смена не текстовок, а картинок. Или классов css, не знаю, как правильно.

Читать дальше →