LINUX.ORG.RU

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

 


21

29

Скрипт добавляет панель тегов над формами ответа/треда/профиля/etc.
Кроме тегов на панели есть специальные функции:

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

Добавляет ссылки сверху постов:

  • «блок-цитата» вставляет выделенный текст (или все сообщение) в тегах [quote];
  • «цитата» вставляет текст, добавляя в начало каждой строки стрелочки цитирования (>);
  • «юзер» вставляет обращение через тег [user] к автору соответствующего поста.

Для установки скрипта в Firefox вам необходимо расширение Greasemonkey, по ссылке на скрипт будет предложено установить его.
В 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», без вас у меня ничего бы не вышло.



Последнее исправление: moscwich (всего исправлений: 20)

Ответ на: комментарий от nyash

И этот код работает аналогично глючено.

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

Где ты увидел у phpBB цитирование выделенного?

Ты наркоман, что-ли?

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

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
()
Ответ на: комментарий от nyash

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

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

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

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

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

nyash

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

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

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

moscwich
() автор топика
Ответ на: комментарий от nyash

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

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

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

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
()
Ответ на: омг от nyash

nyash

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

Никак :(

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

s/foo/bar/

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

moscwich
() автор топика
Ответ на: комментарий от nyash

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, однако, плевал (оно не нужно).

moscwich
() автор топика
Ответ на: LORCode Tools v. 0.13 от moscwich

moscwich

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

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

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

stolzus

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

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

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

Ок. Удалю и обновлюсь. Спасибо, что не бросаешь работу.

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

Ну он не поддерживает, но мы же можем немного починить/поломать ;)

Ja-Ja-Hey-Ho ★★★★
()
Ответ на: комментарий от Ja-Ja-Hey-Ho

Скорее всего неправильное предположение. Сейчас Firefox 3.6.x достану - посмотрю.

Ja-Ja-Hey-Ho ★★★★
()
Ответ на: комментарий от Ja-Ja-Hey-Ho

Да, так действительно правильнее. В следующей версии я полюбому так сделал бы. Только нельзя забывать return false.

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

Совместимость или экономия символов - выбирай :)
Я бы просто добавил такую проверку:

if(!document.head) {
    document.head = document.getElementsByTagName("head")[0];
}

Ja-Ja-Hey-Ho ★★★★
()

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

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

moscwich
() автор топика

LORCode Tools v. 0.2

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

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

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

moscwich
() автор топика
Ответ на: LORCode Tools v. 0.2 от moscwich

Когда в теме нет ни одного ответа, то не показывается «[юзер] [блок-цитата] [цитата]» у топика. Chrome 16.0.912.63.

stolz
()
Ответ на: LORCode Tools v. 0.2 от moscwich

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

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

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

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

moscwich
() автор топика
Ответ на: комментарий от Ja-Ja-Hey-Ho

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

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

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