Быстрая цитата при помощи Proxomitron!
Select messages from
# through # FAQ
[/[Print]\]

Total Commander -> Сайт Все о Total Commander

#1: Быстрая цитата при помощи Proxomitron! Author: CaptainFlintLocation: Москва PostPosted: Tue Aug 22, 2006 01:17
    —
Честно говоря, задолбало меня таскать кусочки текста в окно быстрого ответа и вручную обрамлять тегами QUOTE. И хотя у меня в Опере установлена менюшка Unnotable BBcode, существенно сие занятие облегчающая и ускоряющая, решил я это дело несколько облагородить. Понятное дело, самым удачным вариантом была бы установка нормального мода на форум - но это пока недоступно. А раз так - нам на помощь может прийти Проксомитрон, отличная программка, позволяющая корёжить HTML-код, как нам заблагорассудится. Smile Тем, кто пользуется этой программкой, и посвящён данный патчик. Тем же, кто ей не пользуется, советую начать пользоваться. Smile

Итак, качаем файлик http://flint-inc.ru/Temp/tc/forum_patch.rar (обновлено 28.08.2006 в 21:35 Мск), распаковываем - получаем файл forum.cfg. Далее в Проксомитроне вызываем пункт меню Файл -> Объединить файлы конфигурации (Ctrl+M), подсовываем этот файлик forum.cfg, после чего сохраняем полученную конфигурацию.

Вуаля! После обновления страницы видим следующую картинку:


Щелчок по нику добавляет ник в форму быстрого ответа; щелчок по картинке "Цитата" добавляет выделенный текст в виде именованной цитаты.

Аналогичная функциональность добавляется и на официальном форуме TC (ghisler.ch). Изначально там присутствует только возможность вставки быстрой цитаты. Данный патч добавляет вставку ника и именованной быстрой цитаты.


Разумеется, скрипт несовершенен. Во-первых, я его ещё толком не оттестировал, могут вылезти проблемы. Во-вторых, вставка цитаты не отслеживает, правильный ли текст выделен. Можно выделить текст сообщения одного пользователя, щёлкнуть по картинке "Цитата" у другого пользователя - и в ответ будет вставлено имя второго пользователя, а не первого (более того, так же вставится любой выделенный текст, не только из сообщений). В-третьих, не учитывается положение курсора. Ник/текст всегда жёстко добавляются в конец уже набранного текста. Возможно, найдутся ещё какие-то недочёты, которые для меня остались незамеченными или несущественными. Однако при достаточном знании JavaScript и HTML (которые у меня, вообще-то, довольно скудные Smile ) всё это может быть решено.

Протестированные браузеры:
IE 6, Opera 9.01, Firefox 1.5.0.6: скрипт работает корректно.


Last edited by CaptainFlint on Mon Aug 28, 2006 21:35; edited 3 times in total

#2:  Author: Lamer PostPosted: Tue Aug 22, 2006 02:18
    —
Интересная идея.И многообещающая! А можно ещё ссылочку на сам Проксомитрон присовокупить? Я нашёл это. Это он?

#3:  Author: CaptainFlintLocation: Москва PostPosted: Tue Aug 22, 2006 10:05
    —
Lamer wrote:
Я нашёл это. Это он?

Он самый.

#4:  Author: BatyaLocation: Москва, Россия PostPosted: Tue Aug 22, 2006 10:14
    —
Прикольно.
Только у меня картинка "Цитата" не грузится.

#5:  Author: CaptainFlintLocation: Москва PostPosted: Tue Aug 22, 2006 10:31
    —
Какой браузер? Картинка встроена в HTML, так что никаких недоступных серваков там быть не может в принципе. Разве что браузер такую возможность не поддерживает...
Сейчас проверил: Opera 9.01 нормально, Firefox 1.5 нормально, IE 6.0 - облом. В таком случае можно подправить текст замены, сделав картинку на локальном диске и прописав стандартный адрес, либо вообще обойтись без картинки и вставить текстовую ссылку.

Для этого надо открыть правило "wincmd.ru Add Quotes 2 (quotes) [Flint]", в тексте замены найти такую строку:
Code:
<a href="javascript:quoteSelection('\2')"><img src="data:image/png;base64,iVBORw0KGgo...5ErkJggg%3D%3D"></a>

(где многоточие - там много текста в base-64)
и заменить на, соответственно,
Code:
<a href="javascript:quoteSelection('\2')"><img src="file:///C:\\<путь>\\reply.png"></a>

(не забыть про двойные бек-слеши!)
или
Code:
<a href="javascript:quoteSelection('\2')">Цитата</a>

#6:  Author: BatyaLocation: Москва, Россия PostPosted: Tue Aug 22, 2006 10:56
    —
CaptainFlint
У меня MyIE на основе IE 6.0.
Заменил на текстовую ссылку - красота Smile
... Только не работает Sad

#7:  Author: CaptainFlintLocation: Москва PostPosted: Tue Aug 22, 2006 12:12
    —
М-да... В IE цитата, действительно, не фурычит... Sad Ну что ж, значит, не судьба. Подгонять скрипты под это идиотское творение, лишь по недоразумению называемое браузером, я не собираюсь. Уже достаточно в своё время с ним поимел интимных отношений, на всю жизнь хватит.

Если у кого есть желание - препятствовать не буду. Smile

#8:  Author: ZorrozLocation: Россия, Иркутская обл., г. Ангарск PostPosted: Tue Aug 22, 2006 13:07
    —
CaptainFlint
Прикольная программа. Без «Щелчок по нику» жилось плоховато, сейчас все ОК. Но вот цитировать не получается. Вылазит сообщение: «Выделите фрагмент текста и повторите операцию!» Браузер Mozilla Firefox 1.5.0.6.

#9:  Author: CaptainFlintLocation: Москва PostPosted: Tue Aug 22, 2006 13:27
    —
Блин, а вот это я не проверил, забыл... Sad Щелчок по нику посмотрел по всех трёх браузерах, а цитату - только в Опере.
Что ж, опять-таки, если есть желающие помочь - велкам. Smile А у меня знаний JavaScript для этого недостаточно (да и времени сейчас не так много - в работу надо вливаться).

#10:  Author: Forward PostPosted: Tue Aug 22, 2006 14:04
    —
Quote:
И хотя у меня в Опере установлена менюшка Unnotable BBcode

Не подскажешь, где взять?

#11:  Author: CaptainFlintLocation: Москва PostPosted: Tue Aug 22, 2006 14:09
    —
Forward wrote:
Не подскажешь, где взять?

http://operafan.net/content/view/38/2/

#12:  Author: Forward PostPosted: Tue Aug 22, 2006 14:30
    —
2CaptainFlint
Спасибо.

#13:  Author: Forward PostPosted: Wed Aug 23, 2006 16:06
    —
В тему о BB-форумах...
Виджет для Opera BJustB: http://widgets.opera.com/widget/3783.
Возможностей, правда, маловато: B I U, гиперссылка, цитата и код, а также предварительный просмотр. Но все же удобно.

#14:  Author: BatyaLocation: Москва, Россия PostPosted: Fri Aug 25, 2006 15:12
    —
CaptainFlint wrote:
Что ж, опять-таки, если есть желающие помочь - велкам. А у меня знаний JavaScript для этого недостаточно (да и времени сейчас не так много - в работу надо вливаться).

Подсмотрел на старом форуме. Надо вместо
Code:
var selection = document.getSelection();

писать
Code:
var selection; if (document.getSelection){selection=document.getSelection()}else if (document.selection){selection=document.selection.createRange().text;};

#15:  Author: CaptainFlintLocation: Москва PostPosted: Fri Aug 25, 2006 16:53
    —
Так, в IE заработала цитата. Спасибо!
Но в огнелисе по-прежнему не фурычит.

PS: Сейчас обновлю архив в первом посте. Заодно добавлю протестированные браузеры.

#16:  Author: BatyaLocation: Москва, Россия PostPosted: Fri Aug 25, 2006 17:06
    —
CaptainFlint
Вот что нашел:
Quote:
Gecko (the renderer behind Firefox, Mozilla, et al) has a window.getSelection() method which has similar functionality to IEs document.selection() proprietry mechanism.

Добавь еще один else if (window.getSelection).

#17:  Author: CaptainFlintLocation: Москва PostPosted: Fri Aug 25, 2006 17:12
    —
Что-то не помогает window.getSelection... Точно так же говорит, мол, пусто всё.

#18:  Author: BatyaLocation: Москва, Россия PostPosted: Fri Aug 25, 2006 17:16
    —
А если убрать все if-ы и оставить только
Code:
var selection = window.getSelection();


... А то может где-то проваливается выше, хотя и возвращает пустую строку.

#19:  Author: CaptainFlintLocation: Москва PostPosted: Fri Aug 25, 2006 17:20
    —
Уже проверил.
Code:
function quoteSelection(name) {var selection=window.getSelection(); alert("line: "+selection); ...

На Опере 9.01, кстати, срабатывает правильно, а на Огнелисе выдаёт "line:" (пусто).

#20:  Author: BatyaLocation: Москва, Россия PostPosted: Fri Aug 25, 2006 17:21
    —
CaptainFlint
А попробуй-ка вот так:
Code:
window.getSelection().toString()

#21:  Author: CaptainFlintLocation: Москва PostPosted: Fri Aug 25, 2006 17:24
    —
Не идёт.

#22:  Author: BatyaLocation: Москва, Россия PostPosted: Fri Aug 25, 2006 17:31
    —
CaptainFlint wrote:
Не идёт.

Хм... Тогда я пас. Хотя, порылся в поиске, вроде все должно работать:
Quote:
if (window.getSelection) { selection = window.getSelection().toString(); }
else if (document.getSelection) { selection = document.getSelection(); }
else if (document.selection) { selection = document.selection.createRange().text; }



Кстати, вопрос.
А можно ли после изменения default.cfg чтоб изменения вступили в силу без перегрузи Proxomitron-а и браузера?

#23:  Author: CaptainFlintLocation: Москва PostPosted: Fri Aug 25, 2006 17:56
    —
Ура! Нашёл относительно простой способ для Лисы! Сейчас обновлю архив в первом посте.

Batya wrote:
А можно ли после изменения default.cfg чтоб изменения вступили в силу без перегрузи Proxomitron-а и браузера?

В Проксомитроне: Файл - Перезагрузить настройки по умолчанию. А браузера это вообще не касается, его и не надо перезапускать.

#24:  Author: BatyaLocation: Москва, Россия PostPosted: Fri Aug 25, 2006 18:21
    —
CaptainFlint wrote:
В Проксомитроне: Файл - Перезагрузить настройки по умолчанию. А браузера это вообще не касается, его и не надо перезапускать.

Спасибо!

CaptainFlint wrote:
Ура! Нашёл относительно простой способ для Лисы!

Чё-то я смотрю код и _совсем_ не понимаю, как это теперь работает. Так что, для хитрой Лисы это может и просто, а для обычного программера в конце пятницы - темный лес Smile

#25:  Author: CaptainFlintLocation: Москва PostPosted: Fri Aug 25, 2006 18:33
    —
Ты, наверное, одну маленькую фичу не заметил. Wink
Вот код с форматированием:
Code:
var text_to_add = '';

function copy_add_text() {
   var txt = '';
   if (document.getSelection) {
      txt = document.getSelection()
   } else if (document.selection) {
      txt = document.selection.createRange().text;
   }
   if (txt != '') {
      text_to_add = txt;
   }
}

function quoteSelection(name) {
   var selection;
   if (document.getSelection) {
      selection = document.getSelection()
   } else if (document.selection) {
      selection = document.selection.createRange().text;
   }
   if (selection == '') {
      selection = text_to_add;
   }
   if (selection) {
      input_add_text('[quote="' + name + '"]' + selection + '[/quote]\\n');
   } else {
      alert('Выделите фрагмент текста и повторите операцию!');
   }
}

А в ссылку картинки добавляется вызов обработчика:
Code:
<a href="javascript:quoteSelection('Batya')" onMouseOver="copy_add_text()"><img src="data:image/png;base64,iVBORw....gg%3D%3D"></a>

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

#26:  Author: CaptainFlintLocation: Москва PostPosted: Mon Aug 28, 2006 21:35
    —
Сделал аналогичную вещь для оф. форума по Тоталу. А то там можно только неименованные быстрые цитаты вставлять - ни ник (кстати, непонятно, почему - JS-функцию куда-то протеряли), ни именованные цитаты не добавить.

#27:  Author: BatyaLocation: Москва, Россия PostPosted: Tue Aug 29, 2006 09:49
    —
CaptainFlint wrote:
Сделал аналогичную вещь для оф. форума по Тоталу. А то там можно только неименованные быстрые цитаты вставлять - ни ник (кстати, непонятно, почему - JS-функцию куда-то протеряли), ни именованные цитаты не добавить.

ОК. Только, к сожалению, мне это не надо (у меня с языками туго), а других, судя по постам в теме, эта фича не интересует.

Мне все же интересно другое:
CaptainFlint wrote:
Соответственно, когда мыша наводится на ссылку-картинку, выделенный текст копируется в переменную, а в обработчике щелчка эта переменная используется, если ни один нормальный способ не сработал.

Почему в FireFox аналогичная js-функция нормально отрабатывает при наведении мыши и не отрабатывает при щелчке по ссылке? Ведь по сути в обоих случаях проверяются только document.getSelection() и document.selection.createRange().

Кстати, я у себя сделал, что если текст не выделен, вставляется:
Code:
[quote][/quote]

По-моему, это практичней.

#28:  Author: CaptainFlintLocation: Москва PostPosted: Tue Aug 29, 2006 10:14
    —
Batya wrote:
Только, к сожалению, мне это не надо (у меня с языками туго), а других, судя по постам в теме, эта фича не интересует.

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

Batya wrote:
Почему в FireFox аналогичная js-функция нормально отрабатывает при наведении мыши и не отрабатывает при щелчке по ссылке? Ведь по сути в обоих случаях проверяются только document.getSelection() и document.selection.createRange().

Видимо из-за того, что при щелчке выделение снимается. Обрати внимание: ты только нажимаешь ссылку - а выделение уже снято. Отпускаешь кнопку мыши - запускается скрипт, пытается получить выделенный текст, а его уже и нетути. А когда только наводишь мышу он ещё выделен, ну и сохраняется.

Batya wrote:
Кстати, я у себя сделал, что если текст не выделен, вставляется:
Code:
[quote][/quote]

Лично мне это будет неудобно. Я пустую цитату никогда не вставляю. Соответственно, если случайно перед щелчком выделение по какой-то причине исчезнет, то мне мало того, что придётся заново выделять текст и щёлкать, так ещё нужно будет эту добавленную пустую цитату прибивать.

#29:  Author: StrangeRRor PostPosted: Fri Sep 01, 2006 12:51
    —
Для тех, у кого есть проблемы с ипользованием Proxomitron в FireFox.
Есть расширение BBCode Extra, кторое позволяет вставлять быстрые цитаты в сообщение, отличие (недостаток) - имя нужно вводить вручную.

#30:  Author: StaniclawLocation: Ташкент PostPosted: Sun Jun 17, 2012 19:08
    —
Сам постоянно использую "Проксомитрон" для удаления рекламных блоков с часто посещаемых сайтов. Поставил ещё эти четыре фильтра, остался доволен.
Есть, правда, замечание.
CaptainFlint wrote:
и заменить на, соответственно,
Code:
<a href="javascript:quoteSelection('\2')"><img src="file:///C:\\<путь>\\reply.png"></a>

(не забыть про двойные бек-слеши!)
В указании абсолютного пути нет необходимости. "Проксомитрон" создаёт псевдодомен local.ptron. В файл hosts ему для этого лезть не нужно, он просто перехватывает запросы туда (браузерный-то трафик весь всё равно идёт через него). По адресу local.ptron/.pinfo/ "Проксомитрон" показывает краткую информацию о своём состоянии, позволяя также просмотреть список последних запрошенных адресов и содержимое блок-списков (причём отформатированными для удобного просмотра).

А вот корень этого псевдодомена содержит файлы, которые помещены в подпапку HTML программной папки прокси-сервера. Там уже лежит кое-что: в частности, картинки, используемые в сообщениях "Проксомитрона" о каких-либо ошибках; Ява-скрипты, используемые кое-какими входящими в комплект поставки фильтрами; стили и т. п. Я закинул туда ещё справку на обоих языках, favicon.ico, с мясом выдранный из исполняемого файла и кое-что по мелочи.

В эту подпапку HTML и нужно закинуть reply.png (local.ptron/reply.png).

CaptainFlint wrote:
Batya wrote:
А можно ли после изменения default.cfg чтоб изменения вступили в силу без перегрузи Proxomitron-а и браузера?

В Проксомитроне: Файл - Перезагрузить настройки по умолчанию. А браузера это вообще не касается, его и не надо перезапускать.
Перезапускать "Проксомитрон", не сохранив изменения, не стоит: вы их потеряете. Потеряете вы их и последовав процитированному совету, потому что указанный пункт меню "Перезагрузить настройки по умолчанию" (Ctrl+R) сбрасывает изменения, в отличие от располагающегося через место от него пункта "Сохранить конфигурацию" (Ctrl+S), аналогичного по действию первой кнопке (с зелёной дискетой), т. е. сохраняющего их.

Изменения вступают в силу сразу после сохранения (вышеупомянутые пункт меню, сочетание клавиш и кнопка). Перезапуск "Проксомитрона" не требуется. Перезапуск же браузера бессмысленен, потому что настройки относятся только к обработке трафика самим "Проксомитроном" -- браузеру неоткуда знать, что он вообще получает изменённый HTML-код.

#31:  Author: CaptainFlintLocation: Москва PostPosted: Sun Jun 17, 2012 22:18
    —
 !  CaptainFlint:
iNorbert: третье по счёту замечание за флуд. Это последнее предупреждение. Ещё одна подобная выходка, и я буду вынужден лишить наш форум твоего ценного присутствия.

Флудовое сообщение удалено.


Staniclaw wrote:
В указании абсолютного пути нет необходимости. "Проксомитрон" создаёт псевдодомен local.ptron. В файл hosts ему для этого лезть не нужно, он просто перехватывает запросы туда (браузерный-то трафик весь всё равно идёт через него).

Поскольку все современные браузеры поддерживают внедрённые изображения, нет необходимости применять этот костыль. Он был только для старых версий IE.



Total Commander -> Сайт Все о Total Commander


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Page 1 of 1

Powered by phpBB © 2001, 2005 phpBB Group