Очередной вопрос по 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 делает все таки?

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
Вернее даже со вторым понятно, он запускает код, а первый под вопросом.

Настроить прокрутку топиков (решено)

Делаю сайт с топиками в три столбика. Листая топики, приходится нажимать по три раза, чтобы переключиться на следующую строку с тремя топиками. В связи с этим возникла необходимость, сделать прокрутку не к следующему топику, а через два — то есть к следующей строке с тремя топиками. Если кто не понял, речь идет от toolbar.

Пробовал методом тыка поменять некоторые значения с 1 до 3, но не нашел решения.

Вот содержание toolbar.js чтобы было проще помочь:

var ls = ls || {};
ls.toolbar = ls.toolbar || {};

/**
 * Функционал тул-бара (плавающая пимпа) списка топиков
 */
ls.toolbar.topic = (function ($) {

	this.iCurrentTopic=-1;

	this.init = function() {
		var vars = [], hash;
		var hashes = window.location.hash.replace('#','').split('&');
		for(var i = 0; i < hashes.length; i++) {
			hash = hashes[i].split('=');
			vars.push(hash[0]);
			vars[hash[0]] = hash[1];
		}

		if (vars.goTopic!==undefined) {
			if (vars.goTopic=='last') {
				this.iCurrentTopic=$('.js-topic').length-2;
			} else {
				this.iCurrentTopic=parseInt(vars.goTopic)-1;
			}
			this.goNext();
		}
	};

	this.reset = function() {
		this.iCurrentTopic=-1;
	};

	/**
	 * Прокрутка следующему топику
	 */
	this.goNext = function() {
		this.iCurrentTopic++;
		var topic=$('.js-topic:eq('+this.iCurrentTopic+')');
		if (topic.length) {
			$.scrollTo(topic, 500);
		} else {
			this.iCurrentTopic=$('.js-topic').length-1;
			// переход на следующую страницу
			var page=$('.js-paging-next-page');
			if (page.length && page.attr('href')) {
				window.location=page.attr('href')+'#goTopic=0';
			}
		}

		return false;
	};

	/**
	 * Прокрутка предыдущему топику
	 */
	this.goPrev = function() {
		this.iCurrentTopic--;
		if (this.iCurrentTopic<0) {
			this.iCurrentTopic=0;
			// на предыдущую страницу
			var page=$('.js-paging-prev-page');
			if (page.length && page.attr('href')) {
				window.location=page.attr('href')+'#goTopic=last';
			}
		} else {
			var topic=$('.js-topic:eq('+this.iCurrentTopic+')');
			if (topic.length) {
				$.scrollTo(topic, 500);
			}
		}
		return false;
	};

	return this;
}).call(ls.toolbar.topic || {},jQuery);

/**
 * Функционал кнопки "UP"
 */
ls.toolbar.up = (function ($) {

	this.init = function() {
		$(window).scroll(function(){
			if ($(window).scrollTop() > $(window).height() / 2) {
				$('#toolbar_scrollup').fadeIn(500);
			} else {
				$('#toolbar_scrollup').fadeOut(500);
			}
		});
	};

	this.goUp = function() {
		ls.toolbar.topic.reset();
		$.scrollTo(0, 500);
		return false;
	};

	return this;
}).call(ls.toolbar.up || {},jQuery);


Решение от пользователя rsmike

livestreet.ru/blog/11285.html#comment174186

Пример работы можно посмотреть тут: neasa.ru

Самая настоящая МИСТИКА! СSS-склейка

Всех приветсвую, не давно начало происходить вот какая штука!

Не правильно сливаются css файлы!!!

например
1. стоит у меня в стиле opacity: 0.5; а css сливается и сохраняется вот так opacity: .5; ну и естественно браузер признает это, как ошибку.

2. вот такой пример еще стоит у меня в css стиль display: inline-block; а сохраняется css вот так display: inline; правда страшно?

страшно потому, что раз такие косяки в сливании получаются в CSS, а если такие косяки могут и в JS сливание…

что это может быть такое???

версиия 0.5.1, раньше такова не замечал, а вы видели?

UPD — починил но опасаюсь, есть новые вопросы

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

Оптимизация сайта

Не кидайте пожалуйста тапочками. С Лс столкнулась впервые. Читала много по ускорению работы сайта на Лс, но многое еще не понятно. Знаю что можно объединить css и js файлы в один и сжать их, для ускорения. Сделала так же css спрайты, указанных файлов по рекомендации Google.

Подскажите можно ли слить все css стили в grid.css например, и как если слить все js в один файл например -grid.js- как его правильно подключить?

Шаблон стоит simple.
Вот показатели:
MySql
query: 4
time: 0,001
Cache
query: 48
— set: 1
— get: 47
time: 0,81881
PHP
time load modules: 0,047
full time: 0,999

Заранее спасибо

Джаваскрипт в топиках [РЕШЕНО]

Навеяно постом!

И так, есть необходимость в некоторые топики вставлять js. Разрешать js через Jevix — не логично (во избежания xss/напихания рекламных js).
Подключать в файлах шаблона — некатит, так как в каждый топик разный js совать нужно.

Выслушаю все идеи и предложения!

UPD 2012.04.22
beauty_free предложил два варианта.

1. Все довольно просто, если менять файлы движка то нужно изменить файл livestreet/classes/actions/ActionTopic.class.php строка примерно 301
$oTopic->setText($this->Text_Parser($sTextNew));
                $oTopic->setTextShort($this->Text_Parser($sTextShort));

на
if($this->oUserCurrent->isAdministrator()) {
                $oTopic->setText($sTextNew);
                $oTopic->setTextShort($sTextShort);
} else {
                $oTopic->setText($this->Text_Parser($sTextNew));
                $oTopic->setTextShort($this->Text_Parser($sTextShort));
}


2. Либо как вариант изменить метод Parser в модуле Text
public function Parser($sText) {
                $sResult=$this->FlashParamParser($sText);               
                $sResult=$this->JevixParser($sResult);  
                $sResult=$this->VideoParser($sResult);  
                $sResult=$this->CodeSourceParser($sResult);
                return $sResult;
        }

на
public function Parser($sText) {
                $sResult=$this->FlashParamParser($sText);
                if(!$this->User_GetUserCurrent()->isAdministrator()) {          
                    $sResult=$this->JevixParser($sResult);
                }
                $sResult=$this->VideoParser($sResult);  
                $sResult=$this->CodeSourceParser($sResult);
                return $sResult;
        }

Второй вариант более правильный так как оставляет другие парсеры такие как подсветка кода, вставка видео.

Добавление JS, в топики

Доброго времени суток. Собственно сабж, нужно в топики добавить JS код (плеер проигрывающий видос), добавить сие невозможно, ибо jevix обрабатывает скрипты. Что-бы придумать незнаю, дабы обезопасить сайт от вставки эксплойта в комменты, но вставить код как-то надо. Пробовал в jevix воткнуть

array(
     'script',
     array('type', 'src', 'text', 'javascript')
),

Код все равно обрабатывается, хз что не так делаю. Прошу помощи, заранее благодарен.

Проблема с javascript-маркерами в FireFox

Заметил лажу в лисе. Ест маркеры. Даже строчные типа:
function (){
...
'*marker1*';
...
}


=(

Какая-то умная стремная минимизация яваскрипта появилась.
В консоли фаербага пишу:
>>> window.trololo=function(){/*bebe*/; alert(1); '*bebe2*'; };
function()
>>> window.trololo.toString();
"function () { alert(1); }"


Наглость мля =((( надо думать, что делать с маркерами, а то инъекции не выполняются.

Ковальски, варианты!