+2.97
Рейтинг
8.18
Сила

Сергей Полищук

Очередной вопрос по Js к знатокам (.choose)

Наткнулся в profile.tpl на такой код:

<script type="text/javascript">
    jQuery(function($){
        $('#avatar-upload').file({ name:'avatar' }).choose(function(e, input) {
	    ls.user.uploadAvatar(null,input);
	});
    });
</script>

.file насколько я понял это jQuery плагин который позволяет заменить один элемент на другой. А вот что такое .choose не могу понять. Думал этот плагин, но там первым параметром идет не функция, да и по смыслу он как то не клеится.
Так что этот choose делает все таки?

Екшины, евенты и пр

Исходя из тех знаний что у меня есть запрос в движок формируется следующим образом:
my-site.ru/action/event
Т.е. первый параметр это экшин второй эвент.
Если я загружаю аватар то user.js, из ядра движка, формирует следующий запрос:
my-site.ru/settings/profile/upload-avatar/
В ActionSettings я нашел и EventProfile и EventUploadAvatar. Как это работает, ведь случай явно выходящий за рамки техинструкций по ЛС.

Ajax запрос к экшину плагина.

Если я делаю запрос через $.load то получаю ответ. А функция ls.ajaxForm по тому же урлу (именно при изменении урла) выдает ошибку. Даю запрос на site.my/mainpreview/upload-mainpreview/ физически файл находится /plugins/mainpreview/classes/actions/ActionMain.class.php
Консоль дебага выдает следующее:
"parsererror" 
SyntaxError
arguments: Array[1]
get message: function () { [native code] }
get stack: function () { [native code] }
set message: function () { [native code] }
set stack: function () { [native code] }
type: "unexpected_token"
__proto__: Error
arguments: undefined
constructor: function SyntaxError() { [native code] }
name: "SyntaxError"
stack: undefined
type: undefined
__proto__: SetUpError.d

Хуки в JS

Пожалуйста, поясните как использовать хуки в JS.
И чем отличаются:
ls.hook.marker
от
ls.hook.run
Вернее даже со вторым понятно, он запускает код, а первый под вопросом.

Вопрос по 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 так много параметров хотя должен быть только один да и тот объект?

Использование хука в плагине (баян)

Ребята знаю что тема уже не раз подымалась но пишу уже от безисходности — два часа на такую простую задачу это уже слишком…
Нужно добавить еще одно обязательное поле при регистрации пользователя. Есть действующий плагин, назвал я его Tweaker, т.к. с помощью его кастомизирую движок под себя. В папку plugins/tweaker/classes/hooks ложу файл HookTweaker.class.php следующего содержания:
class PluginTweaker_HookTweaker extends Hook {
	/**
	* Регистрируем хуки
	*/
	public function RegisterHook() {
		$this->AddHook('registration_begin','add',__CLASS__,-100);
	}
	
	public function add($aVars) {
		return "There are new input!";
	}
}

После чего чищу все что только можно но вывод не происходит.
Что еще нада? Помогите плииииз!

UPD
А теперь внимание правильный ответ — вместо:
$this->AddHook('registration_begin','add',__CLASS__,-100);

это:
$this->AddHook('template_registration_begin','add',__CLASS__,-100);

не забывайте добавлять template_ перед именем хука.
Документация по хукам здесь.
Спасибо Chiffa за правильный ответ и Chiliec за дальнейшие наставления.

Наследование шаблона

Привет!
Задался целью модифицировать стандартный шаблон Synio — все ж лучше чем с нуля писать :)
Вот теперь думаю как бы это сделать так чтобы не потерять изменения после обновления. Про наследование шаблонов здесь ничего не сказано. Отлично проработан механизм наследования шаблонов в WP. Может и у нас есть что-то подобное?
С CSS оно какбы и понятно, добавлю свой css и переопределю существующее классы и ИД, а вот с html разметкой не очень.

Переопределение core файлов

Привет всем. Только начинаю вникать в суть дела.
Поставил себе задачу отображения пользователей по настаящему имени. На данный момент в движке реализован поиск и фильтр пользователей по логинам. Для моего проэкта это не совсем удобно. Чаще всего будут искать пользователей по именам настоящим. Поэтому я несколько модифицировал MapperUser. В методах GetGroupPrefixUser и GetUsersByFilter заменил user_login на user_profile_name. Работает отлично и радует что так мало движений понадобилось. Но чувствую жо одним местом, что это не правильно, а при обновлении у меня все мои старания перезапишутся. Каким образом это сделать правильно?
Заранее благодарен за ваши ответы.