LINUX.ORG.RU
ФорумTalks

Я даже не знаю что сказать, на лоре появились смайлы.


0

1

анимированные.

// ==UserScript==
// @name           Подпесь
// @namespace      linux.org.ru
// @include        http://www.linux.org.ru/forum/*
// ==/UserScript==

//smiles
function Smiles() {
  var site = "http://www.kolobok.us/smiles/standart/";
  var smiles = {
	  "*acute*":"acute.gif",
	  "*aggressive*":"aggressive.gif",
	  "*agree*":"agree.gif",
	  "*air_kiss*":"air_kiss.gif",
	  "*bad*":"bad.gif",
	  "*beee*":"beee.gif",
	  "*black_eye*":"black_eye.gif",
	  "*blum2*":"blum2.gif",
	  "*blum3*":"blum3.gif",
	  "*blush2*":"blush2.gif",
	  "*blush*":"blush.gif",
	  "*boast*":"boast.gif",
	  "*boredom*":"boredom.gif",
	  "*censored*":"censored.gif",
	  "*clapping*":"clapping.gif",
	  "*cray2*":"cray2.gif",
	  "*cray*":"cray.gif",
	  "*dance2*":"dance2.gif",
	  "*dance3*":"dance3.gif",
	  "*dance4*":"dance4.gif",
	  "*dance*":"dance.gif",
	  "*declare*":"declare.gif",
	  "*derisive*":"derisive.gif",
	  "*dirol*":"dirol.gif",
	  "*dntknw*":"dntknw.gif",
	  "*don-t_mention*":"don-t_mention.gif",
	  "*download*":"download.gif",
	  "*drinks*":"drinks.gif",
	  "*fool*":"fool.gif",
	  "*friends*":"friends.gif",
	  "*good2*":"good2.gif",
	  "*good3*":"good3.gif",
	  "*good*":"good.gif",
	  "*grin*":"grin.gif",
	  "*heat*":"heat.gif",
	  "*help*":"help.gif",
	  "*i-m_so_happy*":"i-m_so_happy.gif",
	  "*ireful1*":"ireful1.gif",
	  "*ireful2*":"ireful2.gif",
	  "*ireful3*":"ireful3.gif",
	  "*kiss*":"kiss.gif",
	  "*laugh*":"laugh1.gif",
	  "*laugh2*":"laugh2.gif",
	  "*laugh3*":"laugh3.gif",
	  "*lazy2*":"lazy2.gif",
	  "*lazy3*":"lazy3.gif",
	  "*lazy*":"lazy.gif",
	  "*mda*":"mda.gif",
	  "*meeting*":"meeting.gif",
	  "*mosking*":"mosking.gif",
	  "*nea*":"nea.gif",
	  "*negative*":"negative.gif",
	  "*no2*":"no2.gif",
	  "*not_i*":"not_i.gif",
	  "*offtopic*":"offtopic.gif",
	  "*ok*":"ok.gif",
	  "*pardon*":"pardon.gif",
	  "*party*":"party.gif",
	  "*pleasantry*":"pleasantry.gif",
	  "*polling*":"polling.gif",
	  "*popcorm1*":"popcorm1.gif",
	  "*popcorm2*":"popcorm2.gif",
	  "*punish2*":"punish2.gif",
	  "*punish*":"punish.gif",
	  "*read*":"read.gif",
	  "*resent*":"resent.gif",
	  "*rofl*":"rofl.gif",
	  "*sad*":"sad.gif",
	  "*scare2*":"scare2.gif",
	  "*scare*":"scare.gif",
	  "*sclerosis*":"sclerosis.gif",
	  "*scratch_one-s_head*":"scratch_one-s_head.gif",
	  "*search*":"search.gif",
	  "*secret*":"secret.gif",
	  "*padonak*":"SHABLON_padonak_04.gif",
	  "*SHABLON_padonak_05*":"SHABLON_padonak_05.gif",
	  "*SHABLON_padonak_06*":"SHABLON_padonak_06.gif",
	  "*shout*":"shout.gif",
	  "*smile*":"smile3.gif",
	  "*smoke*":"smoke.gif",
	  "*snooks*":"snooks.gif",
	  "*sorry2*":"sorry2.gif",
	  "*sorry*":"sorry.gif",
	  "*stink*":"stink.gif",
	  "*stop*":"stop.gif",
	  "*superstition*":"superstition.gif",
	  "*swoon2*":"swoon2.gif",
	  "*swoon*":"swoon.gif",
	  "*take_example*":"take_example.gif",
	  "*taunt*":"taunt.gif",
	  "*thank_you2*":"thank_you2.gif",
	  "*thank_you*":"thank_you.gif",
	  "*this*":"this.gif",
	  "*threaten*":"threaten.gif",
	  "*to_clue*":"to_clue.gif",
	  "*tongue*":"tongue.gif",
	  "*to_take_umbrage*":"to_take_umbrage.gif",
	  "*umnik2*":"umnik2.gif",
	  "*umnik*":"umnik.gif",
	  "*unsure*":"unsure.gif",
	  "*victory*":"victory.gif",
	  "*whistle2*":"whistle2.gif",
	  "*whistle3*":"whistle3.gif",
	  "*whistle*":"whistle.gif",
	  "*wink3*":"wink3.gif",
	  "*yahoo*":"yahoo.gif",
	  "*yes2*":"yes2.gif",
	  "*yes3*":"yes3.gif",
	  "*yes4*":"yes4.gif",
	  "*yes*":"yes.gif",
	  "*yu*":"yu.gif"
  }
  var thiz = this;
  this.subtitute = function(i, node) {
	if(node.nodeName == "#text") {
	  var str = node.nodeValue;
	  var parsed = [];
	  for(var i = 0; i >= 0 && i < str.length; ) {
		i = str.indexOf("*", i);
		if(i < 0) {
		  break;
		}
		var end = str.indexOf("*", i  + 1) + 1;
		if(end < 1) {
		  break;
		}
		var smile = str.substring(i, end);
		var gif = smiles[smile.toLowerCase()];
		//console.debug(smile);
	    if(smile && gif) {
		  parsed.push({
			s: i,
			e: end,
			gif: gif
		  });
		}
		i = end + 1;
	  }
	  //замена
	  var parent = node.parentNode;
	  for(var i = parsed.length - 1; i >= 0 ; --i) {
		var p = parsed[i];
		var text = node.splitText(p.s);
		text.deleteData(0, p.e - p.s);//удаление смайла
		var img = document.createElement("img");
		img.src = site + p.gif;
		parent.insertBefore(img, text);
	  }
	}
	for(var i = 0 ; i < node.childNodes.length; ++i) {
	  thiz.subtitute(i, node.childNodes[i]);
	}
  }
  
  this.createMenu = function(handler) {
	var menu = document.createElement("div");
	for(var s in smiles) {
	  var se = document.createElement("img");
	  se.src = site + smiles[s];
	  se.addEventListener("click", (function(s){
	    return function(){handler(s)};
	  })(s), false);
	  menu.appendChild(se);
	}
	return menu;
  }
}

try{
  var smiles = new Smiles();
  var jQuery = unsafeWindow.jQuery;
  jQuery(".msg_body p").each(smiles.subtitute);
  var msg = document.getElementById("msg");
  var menu = smiles.createMenu(function(smile) {
 	var val = msg.value;
	var s = msg.selectionStart;
	var e = msg.selectionEnd;
	msg.value = val.substring(0, s) + smile + val.substring(s, val.length);
  });
  msg.parentNode.insertBefore(menu, msg);
} catch(e) {
//  console.debug(e);
}

Вот как выглядит форма отправки:

http://img153.imageshack.us/img153/3406/55203891.png

Вот результат:

http://img708.imageshack.us/img708/7928/78667317.png

★★☆
Ответ на: комментарий от JN

Ничго не поделаешь, это Flash.

Да, смайлы на флеше это именно то, чего нехватает L.o.r.'у.

Camel ★★★★★
()
Ответ на: комментарий от jcd

В хроме работать не будет

ибо тяне с лора jQuery, а это возможно лишь через unsafeWindow и все.

Возможно будет работать с https://chrome.google.com/extensions/detail/dhdgffkkebhmkfjojejmpbldmpobfkfo?...

зы. хром говно *bad*, я почитал срач с разработчиками отчего они не реализовали unsafewindow _____________

© Белка Inc.

wfrr ★★☆
() автор топика

Если не отобрать у белки грибы, она сейчас ещё и постинг картинок прикрутит, и Толксы в /b/ переименует.

dogbert ★★★★★
()
Ответ на: комментарий от dogbert

Отображение картинок уже есть в LORTreeView.

GotF ★★★★★
()
Ответ на: В хроме работать не будет от wfrr

> ибо тяне с лора jQuery

Не юзай. Она там у тебя в одном месте, которое конечно не очень красиво, но можно переписать и без неё, а с ней всё остальное можно реализовать поэлегантнее.

iBliss
()

>if(node.nodeName == «#text»)

А разве нет проверки типа узла или так кошернее нынче?

Deleted
()
Ответ на: комментарий от Deleted

есть но мне было лень разбираться, там и как верно сказал iBliss можно без jquery оботись, но хромом я не пользуюсь, также там можно сделать поддержку смайлов вида :) и 8) в общем много чего

_____________

© Белка Inc.

wfrr ★★☆
() автор топика

белка, если тебя так пробило на скриптинг для родного лора, доведи пжлст эту хрень до вменяемого вида и функционала, никак руки не доходят… :(

arsi ★★★★★
()
Ответ на: комментарий от arsi

я про сие думал, но лоркод *bad* делает сообщения нечитабельными до ужаса, даже если его встялять автоматом, то потом разобраться в этом нереально. (сколько раз на дурацких phpbb форумах я искал гдеже забыл закрыть тег bbкода отчего все не работает)

_____________

© Белка Inc.

wfrr ★★☆
() автор топика

нет, неосилю/лень прикручивать это к ароре, а файрфокс не умеет адресную строку в низу окна отображать, для меня эта функция важнее смайликов

Liteblackk
()
Ответ на: комментарий от Artificial_Thought

Белка, сделай карму.

Лучше анонимизацию постера.

ados ★★★★★
()
Ответ на: комментарий от wfrr

>панки, эмо и прочие товарищи которые одеты не не в чорный спортивный костюм, требуют немедленого уничтожения?

я где-то сказал, что тех, кто вызывает раздражение надо уничтожать? я лишь сказал, что на мой взгляд вызывать раздражение у других людей преднамеренно - дурной тон, ничего более.

Pinkbyte ★★★★★
()

[code]
«*laugh*»:«laugh.gif»,
«*smile*»:«smile3.gif»,
[/code]

Белка! Что это за безобразие? Графические смайлы должны быть только оберткой к уже существующим текстовым (бери пример с гугла)

Делай так:

[code]
«*:D*»:«laugh.gif»,
«*:-D*»:«laugh.gif»,
«*:)*»:«smile3.gif»,
«*:-)*»:«smile3.gif»,
[/code]

Siado ★★★★★
()
Ответ на: комментарий от wfrr

в принципе если меня не забанят то попробую сваять именно подсветку обычных смайлов это будет «тоньше»

wfrr ★★☆
() автор топика

ну почему колобки? они уже вызывают рвотный рефлекс...

tango же круче...

ipeacocks ★★★★★
()
Ответ на: комментарий от Nebuchadnezzar

>но теперь я - единственный администратор linux.org.ru

fixed

Deleted
()

а когда будет приват-сообщения? =))))

ipeacocks ★★★★★
()
Ответ на: комментарий от wfrr

вот тебе задание посерьезнее. Напиши скрипт который суммарное кол-во буковок написое определенным пользователем на этом сайте и помножает на скорость печати(задается самим пользователем)и все это делит на кол-во дней с момента регистрации по сегодняшний. Это будет среднее время преведения юзера на сейте в день. + считай время на сайте за каджый день (хранить в localStorage от первого onload в сутках до последнего onunload без учета когда все страницы закрыты (мониторится localStorage/onstorage или сниффингом куков) ). Юзер должен знать сколько времени он потратил сегодня на лор сделать соотвествующие выводы. Также реально полезный userjs это превращение лора в некое подобие настоящего чатика аля твиттер те реалтайм появление новых сообщений без f5 + отображение не прочитанных в document.title и догрузка старых сообщений по кнопки 'more'. Из вкусного это водить стрелки между ответами для облегчения чтения или как то отображать деревом (как в жж например или дтф).

bga_ ★★★★
()
Ответ на: комментарий от bga_

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

wfrr ★★☆
() автор топика
Ответ на: комментарий от wfrr

коротко: ЛОР с функционалом форумов на движке phpbb)

aydar ★★★★★
()
Ответ на: комментарий от bga_

отображать деревом

lortree уже сто лет как есть.

Xellos ★★★★★
()
Ответ на: комментарий от kranky

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

Назовём это «микроядерность». Или Коммьюнити/ЛОР. :)

// Хорошие смайлики - дезанимированные смайлики. Так-то!

Xenesz ★★★★
()

Спасибо, белк, за наше счастливое!

Xenesz ★★★★
()
Ответ на: комментарий от keiner

будет время попробую допилить, надо:

избавится от jquery

добавить подстановку оьычных смайлов типа *) , при это сохранить скорость парсинга

wfrr ★★☆
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.