Виртуальный скроллинг. [Дозагрузка страниц блога при скроллинге]. Реально ли?

Добрый день, уважаемые!
Хотелось бы задать Вам, знатокам, вопрос. Поиском по сайту я к моему превеликому сожалению ничего не добился и через силу заставил себя создать этот топик рискуя быть подвергнутым массе восклицаний «Учи матчасть!» и пр…

К сути:
Уже много на каких проектах я и Вы могли замечать так называемый «Виртуальный скроллинг» при котором информация (в нашем случае — страницы блога\сайта) подгружается по мере скроллинга страницы при достижении определенной позиции. Например на одной стр. выводится 15 записей… как только дошли скроллингом до 15 у нас дозагрузились еще 15. Идея — уйти от постраничной навигации, а так-же всяких замыкающих нас футеров. Есть ли у кого-то опыт или идеи по реализации подобной схемы навигации на движке livestreet? На данный момент, погуглив, я к сожалению никакой полезной информации найти не смог. Может гуглил плохо, а может быть просто знаний не хватает. Так или иначе надеюсь на Ваши интересные, содержательные комментарии, идеи или предложения.

С уважением.

Подключение сторонних javascript библиотек в плагине

Суть задачи: плагин в своей работе задействует внешнюю js библиотеку. В моём случае — это Google Maps Api. При добавлении этой библиотеки таким образом:
$this->Viewer_AppendScript('http://maps.google.com/maps/api/js?sensor=true&libraries=drawing,geometry');

гугл посылает далеко и надолго.
Я обнаружил 2 решения проблемы:
1 (корявое). Отключить сжатие js файлов:
Config::Set('compress.js.merge',false);
Config::Set('compress.js.use',false);

Почему корявое, думаю, объяснять не стоит.
2 (приемлемое). Полез в код движка и обнаружил что подключить стороннюю js библиотеку можно без проблем, просто вьюверу указать чтоб не пытался объединить её код с остальным:
$this->Viewer_AppendScript('http://maps.google.com/maps/api/js?sensor=true&libraries=drawing,geometry',array('merge'=>false));

Вуаля! Работает!
Подскажите если есть ещё варианты решения данной проблемы

Есть мысль. (шаблоны, javascript)

Те части яваскриптов, что в шаблонах повторяются гарантированно, вынести в /engine/lib/internal/template/ с названиями
  • main.core.js
  • comments.core.js
и т.д.

А в шаблонах переопределять лишь необходимые части. В том числе, возможно, и с помощью ls.hook.inject вносить всякие незначительные поправки.

Мне кажется, верстальщикам будет больше счастья от этого
+ поддержка шаблонов станет проще

CSS-неймспейсы для Internet Explorer

Дабы не плодить кучи css-файлов для разных версий ишака, придумал такой скриптик:

/**
 * Adds css classes to body like ie, ie-6, ie-gte-5-5, ie-not-7, etc.
 * depends on msie browser version
 * 
 * @author Sergey S Yaglov
 * @link http://livestreet.ru/profile/1d10t/
 */
jQuery(function(){
	if(!jQuery.browser.msie){
		return;
	}
	var versions = ['5.5',6,7,8,9,10];
	var body = jQuery('body:eq(0)');
	var bv = jQuery.browser.version;
	var classes = ['ie'];
	var signs = {
		'==': '-',
		'>=': '-gte-',
		'>': '-gt-',
		'<=': '-lte-',
		'<': '-lt-',
		'!=': '-not-'
	};
	jQuery.each(versions, function(i,v){
		for(var sign in signs){
			var css_sign = signs[sign];
			eval('if(bv '+sign+' v){classes.push("ie"+css_sign+new String(v).replace(".","-"));};');
		}
	});
	body.addClass(classes.join(' '));
});


Применять в css-файлах можно, например, так:

.my-class { ... стиль для нормальных браузеров ... }
body.ie .my-class{ ... стиль для ненормальных браузеров :) ... }
body.ie-gte-7.ie-lte-8 .my-class{ ... стиль для ишаков от 7 до 8 версии включительно ... }

Javascript в начале кода

Кто знает зачем этот код

	<script language="JavaScript" type="text/javascript">
	var DIR_WEB_ROOT 			= 'http://livestreet.ru';
	var DIR_STATIC_SKIN 		= 'http://livestreet.ru/templates/skin/new-jquery';
	var DIR_ROOT_ENGINE_LIB     = 'http://livestreet.ru/engine/lib'; 
	var LIVESTREET_SECURITY_KEY = '5d99568b7f60f44bb29906d9b44bf1c9';
	var SESSION_ID              = 'hjehm4g802uq5p0galbmeir735'; 
	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['top'] = 'http://livestreet.ru/top/';
			aRouter['index'] = 'http://livestreet.ru/index/';
			aRouter['new'] = 'http://livestreet.ru/new/';
			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['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>

Скрипт Universal Subtitles - как интегрировать с блогом...

Есть такой очень полезный онлайн сервис universalsubtitles.org он позволяет вам взять любое видео из интернета, создать к нему субтитры прямо на сайте (или загрузить уже готовые). И потом встроить это видео — так что ваши субтитры будут идти поверх него, с возможностью выбора языков. (Чтобы добавлять субтитры на ютубе, к примеру, надо быть владельцем этого видео, а тут — не надо быть владельцем, просто идет наложение на стороннее видео)

Так вот, встраиваются видео почему-то только таким способом

<script type="text/javascript" src="http://s3.www.universalsubtitles.org/embed.js">
(
  {"video_url": "http://www.youtube.com/watch?v=nTFEUsudhfs"}
)
</script>


Разумеется, это блокируется.

Вопрос: как переделать скрипт, чтобы будучи включённым в шаблоне сайта, в теле статей пользователи могли бы добавлять код вроде

{«video_url»: «www.youtube.com/watch?v=nTFEUsudhfs»}

(не важно какой, лишь бы его не зарубали на полпути)
и чтобы скрипт автоматически встраивал на это место видео.

Вообще, дайте пожалуйста наводку, в каком направлении двигаться. Я нечто подобное уже читал здесь. Там мелькала идея к создателям скрипта «напишите плагин». Но я не понял если честно.

Несовместимость эффектов jquery с файлами .js от LiveStreet

Появилась необходимость подключить таб-эффект от jquery. Когда всё настроил и подключил библиотеки:
<script type="text/javascript" src="js/jquery-1.5.1.min.js"></script>
<script type="text/javascript" src="js/jquery-ui-1.8.13.custom.min.js"></script>

Эффект заработал как нужно, но на сайте перестали работать родные .js эффекты, такие как переключение в прямом эфире между комментариями и топиками, развертыванием формы добавления комментария и т.д. Когда отключаю эти библиотеки всё начинает работать.
Вопрос. Как подружить новые библиотеки jquery с родными .js файлами LiveStreet?

aceCheckBrowser - новая версия для особо продвинутых

Я уже писал про свой новый плагин aceCheckBrowser. Это плагин, который умеет проверять браузер, поддержку яваскрипта и даже подсовывать посетителю специальный шаблон, если тот зашел с мобильного устройства.

Но некоторым этого показалось мало. Хотелось знать о браузере больше, гораздо больше. Что ж, встречайте — новая версия плагина, который рассказывает о браузере все, что только можно рассказать. А если юзер с мобильника зашел — то и про мобилку его кое-что интересное рассказать может.
Читать дальше →

aceCheckBrowser - БЕСПЛАТНЫЙ плагин для проверки браузера посетителя сайта

Подобные плагины уже были. Но я решил написать свой, потому что:
а) хотел в одном плагине совместить несколько функций и сделать его максимально гибким
б) нужно было отработать новый механизм настройки плагина через админку.

И вот, что получилось в итоге.
Читать дальше →

Как добавить свой стиль в редактор сообщений

Хотелось бы добавить свои стили, чтобы при нажатии на кнопку в редакторе вставлялся определенный css-класс. Например,

<div class="break">здесь текст</div>

Нашел такой код для выравнивания, но не знаю, как приписать к диву класс.
<a href="#" onclick="lsPanel.putTagAround('topic_text','div align=left','div'); return false;" class="button">*</a> 

Пробовал писать div class=«777» вместо div align=«left», но так кнопка не работает.
Подскажите, пожалуйста :(