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

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


=(

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


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

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

Рекомендация к использованию: Наследование шаблонов

19
На примере будущего jQuery-шаблона для ПриветСочи.ру решил выложить мини-инструкцию использования наследования шаблонов, сильно сокращающий количество часто повторяющегося Smarty-кода.

Коротко о файлах в примере (ссылка на архив внизу):

  • topic.prototype.tpl — прототип топика, содержащий всю повторяющуюся разметку. Использованы вложенные конструкции типа
    {block name=...}
  • topic_link.tpl, topic_photoset.tpl, topic_question.tpl, topic_topic.tpl — файлы, наследующие и заменяющие/дописывающие некоторые блоки прототипа топика (topic.prototype.tpl)
  • topic.social.tpl — включение с кодом кнопочек публикации в разные соц-сети.


Коротко о содержании файлов:

Посмотрев файлы примера, не сложно заметить, что файлы topic_*.tpl содержат:
  1. в начале каждого файла наличиствует код
    {extends file=topic.prototype.tpl}
  2. минимум специфической разметки, обрамленной в конструкции
    {block name=... флаг}
    — это замены и дополнения блоков. Флаг может либо отсутствовать (что означает полную замену содержимого блока), либо принимать принимать значения:
    • append — дописывает в конец содержимое блока к наследуемому блоку.
    • prepend — дописывает в начало содержимое блока к наследуемому блоку.
    • hide — скрывает блок (насколько я понял, если добавить в блок прототипа, то по умолчанию блок будет скрыт).
    • nocache — запрещает кеширование содержания блока (а это вообще актуально для LS?).


Документация


ZIP-архив с примером

QipSmiles hotfix (docker47.free.fr browser warning)

6

Замена смайл-пака maliste

smiley.s3.amazonaws.com/maliste.zip
Распаковать в qipsmiles/smiles/ с заменой файлов.

MySQL комманды для замены смайлов в уже сохраненном контенте




На 0:50 видно окошко, в котором надо вписать эти комманды:
update `prefix_topic_content` set `topic_text`=replace(`topic_text`,'http://moktoipas.com/smileys/','http://smiley.s3.amazonaws.com/maliste/');
update `prefix_topic_content` set `topic_text`=replace(`topic_text`,'http://docker47.free.fr/divers/smileys/basic/','http://smiley.s3.amazonaws.com/maliste/');
update `prefix_topic_content` set `topic_text`=replace(`topic_text`,'http://docker47.free.fr/divers/smileys/_MSN/','http://smiley.s3.amazonaws.com/maliste/');
update `prefix_topic_content` set `topic_text`=replace(`topic_text`,'http://docker47.free.fr/divers/smileys/_gg3d.com/','http://smiley.s3.amazonaws.com/maliste/');

update `prefix_topic_content` set `topic_text_short`=replace(`topic_text_short`,'http://moktoipas.com/smileys/','http://smiley.s3.amazonaws.com/maliste/');
update `prefix_topic_content` set `topic_text_short`=replace(`topic_text_short`,'http://docker47.free.fr/divers/smileys/basic/','http://smiley.s3.amazonaws.com/maliste/');
update `prefix_topic_content` set `topic_text_short`=replace(`topic_text_short`,'http://docker47.free.fr/divers/smileys/_MSN/','http://smiley.s3.amazonaws.com/maliste/');
update `prefix_topic_content` set `topic_text_short`=replace(`topic_text_short`,'http://docker47.free.fr/divers/smileys/_gg3d.com/','http://smiley.s3.amazonaws.com/maliste/');

update `prefix_comment` set `comment_text`=replace(`comment_text`,'http://moktoipas.com/smileys/','http://smiley.s3.amazonaws.com/maliste/');
update `prefix_comment` set `comment_text`=replace(`comment_text`,'http://docker47.free.fr/divers/smileys/basic/','http://smiley.s3.amazonaws.com/maliste/');
update `prefix_comment` set `comment_text`=replace(`comment_text`,'http://docker47.free.fr/divers/smileys/_MSN/','http://smiley.s3.amazonaws.com/maliste/');
update `prefix_comment` set `comment_text`=replace(`comment_text`,'http://docker47.free.fr/divers/smileys/_gg3d.com/','http://smiley.s3.amazonaws.com/maliste/');


После выполнения mysql-комманд не забудьте сбросить кеш объектов


Если что-то ну никак не получается, обращайтесь в аську (она в профиле написана).
  • +1
  • 01 апреля 2012, 23:45
  • 1d10t

Удаление UTF-8 BOM из консоли

5
linux (debian tested)
find путь/к/лайвстриту/ -type f \( -name '*.tpl' -o -name '*.php' \) -exec sed -i '1 s/^\xef\xbb\xbf//' {} \;


freebsd (7.2 tested)
find ./ -type f \( -name '*.tpl' -o -name '*.php' \) -exec sed -i -e '1 s/^\xef\xbb\xbf//' {} \;


найти файлы с BOM
find ./ -type f \( -name '*.tpl' -o -name '*.php' \) -print0 | xargs -0r awk '/^\xEF\xBB\xBF/ {print FILENAME}{nextfile}'


sed почему-то иногда не отрабатывает, поэтому php, find, awk, xargs:
php -r "ob_start();
passthru('find ./ -type f \( -name \'*.tpl\' -o -name \'*.php\' \) -print0 | xargs -0r awk \'/^\xEF\xBB\xBF/ {print FILENAME}{nextfile}\'');
foreach(array_filter(explode(\"\n\",ob_get_clean())) as \$f){
	echo \"remove BOM from \$f...\n\";
	file_put_contents(\$f, substr(file_get_contents(\$f), 3));
};"

Репозитории бесплатных расширений

29

Что здесь?

Стихийный список открытых репо на github и google-code (и прочих), в которых можно принять участие (форкнуть, модифицировать).

Оставляйте в комментах ссылки, а я буду добавлять их в топик.

Оглавление



Читать дальше
  • +11
  • 10 февраля 2012, 15:18
  • 1d10t

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

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

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

Мне кажется, верстальщикам будет больше счастья от этого
+ поддержка шаблонов станет проще
  • +3
  • 24 января 2012, 12:08
  • 1d10t

Некоторые ньюансы совместимости будущей версии XText для ветки LiveStreet 0.5

 
  • будет работать только на jquery-шаблонах
  • jquery-шаблоны должны будут в полной мере поддерживать список js-хуков и маркеров, которые мне понадобятся (полный список еще не отработан)
  • поддержки tinymce традиционно не предвидится
  • «из коробки» редактор будет поддерживаться только markItUp

вышеперечисленные моменты — отправная точка, без которой ничего не выйдет.

upd 18.01.2012

Разослал покупателям мыло со ссылкой на дев-релиз.
  1. я наверное победил глюки с делегированием и наследованием ;)
  2. карты теперь подгружаются асинхронно
  3. всё переписано на jquery
  4. требуются правки текущих версий шаблонов (см. мои коммиты с 20 декабря)
  5. в блоке «мои файлы» появилась вкладка «загрузить», список разрешенных расширений в основном конфиге (строки 45,46)
  6. иконочки почти все из tango (претти кул, мля)
  7. все кнопочки на панели собраны в дропдаун-менюшку

upd 19.01.2012

  1. откатан шаблон street-spirit на 2397.ru
  2. пофиксил пару мелких багов в js и отправил пулл-реквесты в на гитхаб

upd 20.01.2012

  1. наконец-то добавлен слой яндекс-карты

upd 21.01.2012

  1. откатан шаблон new-jquery на 4newpeople.com
  2. пофиксен баг в шаблоне тега toc (оглавления)

upd 23.01.2012

  1. мини-фикс совместимости с sitemap
  2. мои правки наконец-то склеены с основной веткой livestreet'а ;) а это значит, что 0.5.2 будет гарантированно поддерживать xtext
  • +1
  • 03 января 2012, 03:01
  • 1d10t

Угадайте, что это ? %) топик-ссылка

1
сабжище сабжовое. верстальщики просто обязаны угадать :)

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

6
Дабы не плодить кучи 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 версии включительно ... }
  • +5
  • 05 декабря 2011, 09:53
  • 1d10t

Генерим autocomplete для LiveStreet под Eclipse

4
1. ставим ls-yii из репозтария

2. делаем
chmod +x plugins/yii/include/framework/lsyiic
mkdir codedoc && chmod 0777 codedoc


3. запускаем генератор
plugins/yii/include/framework/lsyiic lsshell gencodedoc end


4. чекаем на ошибки получившиеся файлы

5. вписываем в проект external source


6. дико тащимся и говорим спасибо

траблашутинг:
— вырубите авадимовскую админку, у нее дикий автолоадер
— в GencodedocCommand закомментируйте 2 ob_start()'а
— смотрите на трейсы

чтобы поцоны совсем расслабились, методы для чистого движка
yaglov.ru/uploader/upload/0lvmlcc-01k50hc-0d1730z/files/codedoc.zip
  • +7
  • 03 декабря 2011, 07:57
  • 1d10t