LINUX.ORG.RU
 
moscwich

LORCode Tools: панель тегов и цитирование выделенного


2

27

Добавляемые ссылки рядом с [#], сверху постов:

  • Цитата: цитата выделенного текста или всего поста через стрелочки (>);
  • Блок-цитата: цитата выделенного текста или всего поста через теги [quote];
  • Юзер: обращение через теги [user] к автору соответствующего поста.

Специальные функции на добавляемой панели:

  • brs: добавление тегов [br] к переводам строк;
  • fix: превращение (c) в ©, (f) в £, " - " в " — " и еще многого;
  • deltags-in: удаление крайнего (внешнего) обрамления тегами в выделенном.

Установка:

  • Firefox: перейти по первой ссылке при установленном Greasemonkey;
  • Chrome: расширение по второй ссылке (предпочтительно) или юзерскрипт по первой;
  • Opera: настройки для сайта > скрипты > папка JavaScript, в которую и должен быть сохранен скрипт по первой ссылке.

Обновления:

  • 03.11.2011: v. 0.1
  • 04.11.2011: v. 0.11
  • 13.11.2011: v. 0.12
  • 14.12.2011: v. 0.13
  • 02.01.2012: v. 0.2
  • 14.04.2012: v. 0.21

Форки:

Официально поддерживается только тема black. Форки любого рода приветствуются.

При обновлениях обновляется все тот же файл, а равно ссылка не меняется (по крайней мере пока). Об обновлениях создаются соответствующие посты в треде, ChangeLog ведется на официальной странице. Рекомендую подписаться на тред.

Скрипт базируется на MultiCodePanel 2 (тоже мой проект) и распространяется на условиях лицензии Creative Commons Attribution 3.0 Unported.

Спасибо за помощь Yareg, спасибо авторам статей «Range, TextRange и Selection», «Учимся писать userscript'ы», «Textarea и управление им с помощью javascript», без вас у меня ничего бы не вышло.

НАУЧИ КОМПЬЮТЕР ВАРИТЬ КОФЕ

управление электрическими цепями с помощью компьютера
лучший подарок для техногика; только открытые программы
http://www.unicontrollers.com/products/unc01x

[#] Ответ на: комментарий от moscwich 10.12.2011 23:33:49  
nyash
>>-----Цитата---->>

moscwich

Круто, конечно, твой код работает: форма открыта, цитирую выделенное: форма сворачивается. (Opera)

<<-----Цитата----<<

а если так


if(seltxt != "") {
  var commendId = msg.id;
  commendId = commendId.replace("comment-","");
  if(!msg.getElementsByClassName("reply")[0].getElementsByTagName("div")[0] || msg.getElementsByClassName("reply")[0].getElementsByTagName("div")[0].style.display == "none")   {
     sh(1,commendId);
  }
  obj.wrtSel(addbr("[quote=" + msg.getElementsByClassName ("sign")[0].getElementsByTagName ("a")[0].innerHTML + "]" + seltxt.toString () + "[/quote]"));
}

т.е. добавляем проверку на открытость формы.

- в firefox'е всё работает..

()
[#] Ответ на: комментарий от nyash 11.12.2011 12:29:43  
moscwich

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

* ()
[#] Ответ на: комментарий от moscwich 11.12.2011 12:40:25  
nyash
>>-----Цитата---->>

случае уже раскрытой формы и цитирования другого поста (не того, на который отвечаешь), переключает ее на тот пост.

<<-----Цитата----<<

ну логично же. Если нужно вставлять цитаты из других постов в уже открытый, то это лучше реализовать с помошью кнопки "quote" на панели.

()
[#] Ответ на: комментарий от nyash 11.12.2011 12:45:08  
moscwich
>>-----Цитата---->>

nyash

Если нужно вставлять цитаты из других постов в уже открытый, то это лучше реализовать с помошью кнопки "quote" на панели.

<<-----Цитата----<<

Ага, бегать вниз-вверх...
А вот нажать лишний раз "Ответить на это сообщение" труда точно не составит.

Да, это, еще планируется кнопка, вставляющая обращение с кастом юзера.

* ()
[#] Ответ на: комментарий от moscwich 11.12.2011 13:46:29  
nyash

главное работает

>>-----Цитата---->>

moscwich

Кстати, а почему ты не используешь getElementBy...? Какой смысл его использовать или лучше не использовать?

<<-----Цитата----<<

так getElementById же только есть (а по id тут обращаться некчему, как мне показалось), остальные свойства (getElementsByTagName, getElementsByClassName, getElementsByName) возвращают весь найденный список элементов. поэтому тут без вариантов, как мне кажется.

А по поводу лечения "разворачивания" окна при цитировании разных постов, то можно переписать функцию q таким образом:

q = function (){
 obj = getObj ();
 var seltxt = window.getSelection();
 msg = seltxt.getRangeAt(0).commonAncestorContainer;
 while (msg.className != "msg"){
	msg = msg.parentNode;
 }
 f(seltxt != "") {
 var opFlag = false;
 var postEl = document.getElementsByClassName("reply");
 for(var i=1; i<postEl.length; i++) {
  if(postEl[i].getElementsByTagName("div").length != 0) {
   if(postEl[i].getElementsByTagName("div")[0].style.display == "" || postEl[i].getElementsByTagName("div")[0].style.display == "block") {
    opFlag = true;
    break;
   }
  }
 }
 if (opFlag !== true) {
    var commendId = msg.id;
    commendId = commendId.replace("comment-","");
    if(!msg.getElementsByClassName("reply")[0].getElementsByTagName("div")[0] || msg.getElementsByClassName("reply")[0].getElementsByTagName("div")[0].style.display == "none") {
      sh(1,commendId);
    }
 }
  obj.wrtSel(addbr("[quote=" + msg.getElementsByClassName ("sign")[0].getElementsByTagName ("a")[0].innerHTML + "]" + seltxt.toString () + "[/quote]"));
 }
}

()
[#] Ответ на: омг от nyash 11.12.2011 14:18:09  
moscwich
>>-----Цитата---->>

nyash

кстати, а как тут свои комменты редактировать?

<<-----Цитата----<<

Никак :(

Но обычно пишут еще каммент в стиле sed, но только если текстовые комментарии:

>>-----Цитата---->>

s/foo/bar/

<<-----Цитата----<<

Я же предпочитаю удалить и запостить снова.

* ()
[#] Ответ на: комментарий от nyash 11.12.2011 14:12:48  
moscwich
>>-----Цитата---->>

nyash

и новые цитаты по моему лучше вставлять в конец и на новой строке

<<-----Цитата----<<

Так было сначала, но удобнее если на место курсора. Курсор, кстати, должен устанавливаться после цитаты, так было, но видимо что-то в реализах потерялось, в 0.13 верну.

* ()
[#]  
moscwich

LORCode Tools v. 0.13

Изменения:

  • Bugfix: указатель вставляется после процитированного (странно, но так почему-то в начале было, а потом куда-то пропало)
  • Баги при цитировании топиков с оперой превратил в фичу: в Opera теперь можно цитировать текст с цитатой, вложенная цитата будет выделена тегами quote
  • Bugfix: панель не работала при изменении топиков
  • Bugfix: цвет ссылок панельки в FF
  • Маленькое изменение и багфикс в функции fix, теперь преобразуется тире прямой речи, исправлен парсинг звездочек
  • Чуть-чуть начата реструктуризация кода

Ссылка на UserScript не меняется: http://al-moscwich.tk/data/lor.user.js
На расширение Chrome, однако, плевал (оно не нужно).

* ()
[#] Ответ на: LORCode Tools v. 0.13 от moscwich 14.12.2011 21:48:23  
>>-----Цитата---->>

moscwich

На расширение Chrome, однако, плевал (оно не нужно).

<<-----Цитата----<<

Т.е. ты не будешь больше развивать и обновлять его? Можно удалить и поставить скрипт?

* ()
[#] Ответ на: комментарий от stolz 15.12.2011 0:15:05  
moscwich
>>-----Цитата---->>

stolzus

Т.е. ты не будешь больше развивать и обновлять его? Можно удалить и поставить скрипт?

<<-----Цитата----<<

Да. Просто оно от скрипта отличалось только наличием картинки и тем, что хром помнит о нем только на сайте linux.org.ru и показывает это юзеру. В самом расширении находился точно тот же скрипт.

* ()
[#]  
moscwich

Интерфейсная задача ко второй версии

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

* ()
[#]  
moscwich

LORCode Tools v. 0.2

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

  • Произведена реструктуризация кода, код стал правильнее, где-то рациональнее, а также читаемее.
  • Тихо и незаметно цитаты стрелочками (>) стали превращаться в годные на вид цитаты палочками, по этому поводу, а также в связи стем, что имена у цитат в большинстве случаев оказываются ненужны, по ссылке [цитата] текст стал цитироваться именно так.
  • LORCode же цитата с указанием автора теперь весит на линке [блок-цитата].
  • И нет никаких проблем при цитировании анонимусов.
  • При отсутствии выделения, любая функция цитирования процитируют весь пост, к какому она относится.
  • Наконец-то становится легко отвечать нескольким сразу, линка [юзер] вставляет каст участника, автора поста, к которому она относится.
  • Стиль в скрипте теперь приводит в порядок padding-и и margin-ы абзацов и цитатат в постах.
  • А еще панелькой можно воспользоваться при редактировании профиля, где нынче поддерживается LORCode.

Ссылка на UserScript не меняется: http://al-moscwich.tk/data/lor.user.js
Chrome не знает что 0.2 > 0.13, так что хромо-юзером придется самим удалить старую версию расширения. Возможно, этого не знает еще кто-нибудь...

* ()
[#] Ответ на: LORCode Tools v. 0.2 от moscwich 02.01.2012 23:54:58  
HerrWeigel

Кстати, вот я что спросить хотел: а почему расширение в Сhrome не синхронизируется? Все мои установленные расширения синхронизируются, а LORCode Tools нет. Нужно добавлять расширение в Chrome Web Store? Если да, то почему не добавишь?

* ()
[#] Ответ на: комментарий от HerrWeigel 03.01.2012 16:15:03  
moscwich
>>-----Цитата---->>

Кстати, вот я что спросить хотел: а почему расширение в Сhrome не синхронизируется? Все мои установленные расширения синхронизируются, а LORCode Tools нет. Нужно добавлять расширение в Chrome Web Store? Если да, то почему не добавишь?

<<-----Цитата----<<

Там надо 5$ заплатить, но с карточки. А карточки у меня нет.

* ()
[#] Ответ на: комментарий от Ja-Ja-Hey-Ho 03.01.2012 23:43:34  
moscwich
>>-----Цитата---->>

Например можно через терминалы оплаты Qiwi. Может еще как.

<<-----Цитата----<<

Прям карточку завести, с этого унылого киви? Я вообще с тем же успехом и в банк могу сходить завести... Не вопрос, конечно, но я не видел это расширение в каталоге столь нужным.

* ()