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
()
Ответ на: В хроме работать не будет от 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
()
Ответ на: комментарий от kranky

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

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

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

Xenesz
()

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

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

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

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

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

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