Немного предыстории...
Движок форума, на котором я часто сидел, криво поддерживал Firefox – кнопки форматирования добавляли тэги в конец сообщения. Жутко неудобно... Да и кнопки эти были только на странице ответа – функция быстрого ответа была совсем голенькой.
А потом я узнал про существование расширений.
Пробовал BBCode – вроде и неплохо, но дополнительные тэги подглючивают – дублируют выбранные кнопки, коды смайлов не те, и контекстное меню, в общем-то, не так и удобно. BBCodeXtra – не хватило кастомности (как же все-таки custom одним лаконичным словом перевести?), контекстное меню опять же...
Потом накопал PHPkod – на шведском, ага.
Но, елки-палки, благословите тулбары!
Сначала перевел, изменил тэги...
А потом захотелось большего...
Даже автора помучал – на своем ломаном (в силу того, что изучал я по большей части французский – так уж сложилось) английском:
You should know, however, that I'm not a XUL or XPCOM expert myself, but I will try to help you if I have time.
То, что получилось, перед вами:
PHPcode 0.1RC1 [46,2 кб]
А теперь, собственно, что мы умеем.
1. Панель инструментов и контекстное меню для вставления тэгов.
2. Настройка сайтов, на которых будет показываться контекстное меню.
3. Все кнопки при наличии выделения текста используют выделенное, иначе – содержимое буфера.
4. При наличии в буфере ссылки и выделенного текста кнопка URL делает следующее:
5. Настраиваемые списки цветов, размеров шрифта, шрифтов, символов, смайлов (и бонус – полностью настраиваемые тэги).
6. Настраиваемые горячие клавиши для основных функций (можно выключить).
7. Создание списка или по маркировке нового пункта звездочкой (*), или новая строка – новый пункт.
8. Экспорт-импорт всех настроек.
9. Увы, не до конца доведенная до ума кнопка «Стиль», преобразующая прямые кавычки ("") в парные («»), короткие тире в длинные, плюс автозамена символов вроде (с) и исправление пробелов при знаках препинания (я ее использую для быстрой правки скачанных с нета рефератов ).
10. Быстрое редактирование настраиваемых элементов прямо на месте:
– ПКМ запускает редактор (при этом можно увидеть, как будет выглядеть пункт меню, например, внешний вид смайла);
– Shift+ЛКМ по самому меню или СКМ (Shift+ПКМ) по любому пункту меню показывают все элементы (элементы с некорректными настройками изначально скрываются);
– Ctrl+ПКМ (Ctrl+СКМ) – копирование настроек (появится рамка и соответствующая всплывающая подсказка) для того, чтобы поменять два элемента местами (второй элемент выбирается аналогично).
11. Также происходит перевод курсора внутрь скобок ([В]|[/В], например; | – позиция курсора). И два варианта вставки: курсор после текста или выделение вставленного (можно быстро переключить кликом СКМ или Ctrl+ЛКМ по кнопке вызова настроек).
12. Для картинок (смайлы, иконки дополнительных тэгов) можно использовать не абсолютный путь (file:///, http://), а относительный путь к папке профиля, например, %profile%/my_smiles/smile.gif
Вроде ничего не упустил...
Код инициализации горячих клавиш (да и не только) несколько кривоват (однако работает ) – всякие фичи добавлялись постепенно, а в уже имеющийся код просто вносились нужные изменения...
Да, имеются скрытые настройки phpcode.urlImgMask и phpcode.urlMask (см. about:config) для определения ссылок и ссылок на изображения соответственно (по умолчанию некорректные ссылки не будут использоваться) – сначала я долго мучался с универсальным RegExp'ом, потом сделал опцию для выключения проверки...
Корректный импорт удалось организовать совсем недавно (а знаете ли вы, что код из IE Tab, экспортирующий в UTF-8, при большом размере файла не загрузит все настройки?), поэтому имеются примеры иконок (chrome://...). Потом, наверное, конвертну в base64...
Замечания и предложения приветствуются!
А особенно приветствуется тестирование!
И надо бы придумать название расширению... То, что сейчас, – простой перевод оригинального... И сути дела не отражает...
Пока не забыл.
Никто не может помочь с написанием скрипта, копирующего картинку по ссылке в папку в профиле? Есть не примете расширение, которое делает это в скрытом виде (без открытия диалога сохранения) – Save Image in Folder, но всегда проще спросить.
P. S. Уже гораздо позже нашел Custom Buttons... Для единичных кнопок – превосходно, а вот менять уже имеющиеся неудобно, да и не силен я в JavaScript (и всякие менюшки создавать не очень удобно). Так я это расширение и не поставил – только на дополнительном, так сказать, профиле – скрипты тестировать.
P. P. S. Уж прошу прощения за то что так много «букофф».
Отредактировано Infocatcher (07-06-2007 23:59:25)
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Нда, тема не очень-то популярна...
Повторюсь. По-моему, весьма удобная альтернатива расширению BBCode.
PHPcode 0.1RC1.2007.06.14 [46,1 кб] (зеркало)
– Исправлена ошибка (весьма глупая, надо признать), из-за которой горячие клавиши прописывались даже при их отключении.
* Оптимизирован способ чтения настроек.
Собственно, меня интересуют предложения и замечания.
Отредактировано Infocatcher (14-06-2007 00:20:10)
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
PHPcode 0.1RC2 [48,0 кб]
Изменения
1. Добавлена возможность предпросмотра смайлов-ссылок - всплывающая подсказка (при неведении курсора на [?]).
2. Добавлено автоматическое открытие меню на панели инструментов, если другое меню уже открыто (нагло взято из Web Developer'а).
3. Добавлены всплывающие подсказки с командами для редактирования пунктов меню (можно отключить из настроек).
4. Для дополнительных тэгов.
Добавлена возможность запроса текста.
Пример:
открывающий тэг: [multitag attribute1="%Attribute 1:%" attribute2="%Attribute 2:%"]
при каждом клике по соответствующему пункту меню атрибуты будут запрашаваться
в результате: [multitag attribute1="введенный вручную тект – 1" attribute2="введенный вручную тект – 2"]
Добавлена возможность указания количества символов.
Пример:
закрывающий тэг: ...a{3}+b{4}...
в результате: ...aaa+bbbb...
Допустимы значения от 1 до 99 (даже 0, но сие есть глупость) – иначе преобразования не будет.
Исправлена ошибка, из-за которой при установке на новом профиле не работали tooltip'ы (однако, после установки любого расширения с tooltip'ами все включалось).
Добавлена скрытая настройка phpcode.invCommasUseClipboard:
true => кнопка "Кавычки" использует содержимое буфера обмена: "«содержимое буфера»"
false => если нет выделения, происходит поочередный ввод открывающих и закрывающих кавычек
+ Исправлены некоторые ошибки
______________________________________
P. S. Вопрос к знатокам JavaScript.
Как можно сделать что-то вроде var text = prompt("Текст:", "", "Заголовок окна"), чтобы содержимое текущей страницы было доступно (а то prompt висит поверх вызвавшего его документа)?
Отредактировано Infocatcher (24-06-2007 21:46:22)
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
P. S. Уже гораздо позже нашел Custom Buttons... Для единичных кнопок – превосходно, а вот менять уже имеющиеся неудобно, да и не силен я в JavaScript (и всякие менюшки создавать не очень удобно).
по поводу последнего - я в связи с этим написал customitems, где нормальным xul-ом это задаётся
вообще, круто, конечно, но мне хватает моих кнопочек...
Отредактировано Dark-Demon (24-06-2007 21:07:11)
!
Отсутствует
по поводу последнего - я в связи с этим написал customitems, где нормальным xul-ом это задаётся
Ну, каждому свое... А как в customitems с редактированием уже имеющегося? Например, есть <grid>-таблица со смайлами и нужно их отсортировать по-другому (или новых добавить).
вообще, круто, конечно, но мне хватает моих кнопочек...
А мне – моих Изначально делал под себя, но потом достало в случае чего исходный код ковырять (да-да, лень – двигатель прогресса).
Теперь вот думаю, прикручивать ли настройку показа / скрытия элементов контекстного меню или таки пусть юзеры с userChrome.css развлекаются...
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Расширение понравилось. Пару пожеланий:
1. Возможность добавить на панель PHPcode дополнительные теги.
2. Хотелось бы более внятный диалог выбора цвета шрифта. Например как в BBCode Formatting Extension (Alpha).
Отсутствует
Philip
1. Возможность добавить на панель PHPcode дополнительные теги.
В принципе, реализуемо... Но сложность в том, что сейчас все кнопки-менюшки задаются через XUL, а (в соответствии с настройками) через JavaScript на них навешиваются нужные свойства (отсюда и ограничение на количество).
За созданием кнопочек – это к Custom Buttons. Динамическое создание через скрипт пунктов в уже имеющимся меню я еще (теоретически) могу реализовать, с кнопками же труднее.
Я же могу только сделать фиксированное количество кнопок (toolbarbutton'ов) и при открытии окна навешивать на них необходимые свойства.
2. Хотелось бы более внятный диалог выбора цвета шрифта. Например как в BBCode Formatting Extension (Alpha).
Что-то я не вижу никаких настроек... В install.rdf настройки отключены (<!-- присутствуют в виде комментария -->), а скрипт для их сохранения пустой...
В общем, опишите словами / предоставьте скриншот.
Спасибо за внимание и участие
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Совсем забыл...
В некоторых темах оформления будут криво (в уменьшенном виде) отображаться смайлы. Это происходит из-за того, что авторы зачем-то добавляют в стили что-то вроде width: 16px !important;
Как с этим бороться – не знаю. Разве что жаловаться авторам или вручную соответствующие строки удалять...
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Изменения
* Добавлены 5 настраиваемых кнопок на панель инструментов (и 5 пунктов контекстного меню) - аналогично дополнительным тэгам.
* Переименование в CustomBB.
* Изменены иконки расширения.
* Исправлена ошибка, из-за которой были доступны только 5 размеров шрифта.
* Исправлена ошибка, из-за которой не сохранялось состояние символов при сортировке элементов (с некорректными настройками всегда скрывались).
* Коррекция CSS.
* Общие скрипты вынесены в отдельный файл (исправляет ошибку в консоли вида document.getElementById("...") has no properties).
* Коррекция поведения всплывающих подсказок.
...и прочие мелкие исправления.
Для установки CustomBB после PHPcode:
1) экспортировать настройки в файл (см. главное окно настроек);
2) сбросить настройки на значения по умолчанию; *
3) удалить PHPcode; **
4) сбросить временные настройки phpcode.profileDir и phpcode.tempReplaceCache через about:config; *
5) установить CustomBB;
6) импортировать сохраненные ранее настройки (при этом будут произведены все необходимые преобразования).
* Пункты 2 и 4 необязательны, но зачем же зря хранить ненужные настройки?
** Пункт 3 также необязателен (оба расширения будут работать, разве что горячие клавиши будут перехватываться тем, что было установлено раньше).
CustomBB 0.1RC3 [51,1 кб]
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Ещё есть Copy URL Plus
http://copyurlplus.mozdev.org
У меня примерно так:
http://fotoleto.ru/seamonkey/extensions-v.html#copyurlplus
Отсутствует
vladmir
Эээ... не вижу связи с сабжем.
Интересующимся:
CustomBB 0.1RC4pre
Однако, лучше все же подождать, пока я найду время и прочешу хотя бы основной код (окно основных настроек пока подождет)...
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Изменения
* Общая оптимизация скриптов.
* Если текстовое поле не выделено (если выделено что-то другое, например, ссылка или кнопка, то результата не будет, но консоль будет ругаться...), то текст (или из выделения на странице, или из буфера обмена) вставляется в последнюю <textarea> на странице, и происходит фокусирование на этой <textarea>.
CustomBB 0.1RC4 [51,2 51,3 кб] *
* Забыл кое-что учесть – перезалил.
Отредактировано Infocatcher (24-07-2007 20:11:20)
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Изменения (см. предыдущий пост)
* Теперь быстрая вставка работает при выделении ссылок, кнопок и элементов выбора (<a>, <input> и <select>).
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Изменения (расширение опять перезалил – см. сообщение №12)
* Теперь быстрая вставка работает только если нет выделенного текстового поля (предыдущая версия, например, не работала в <input type="text">).
* Улучшен автоматический перевод курсора / выделение текста.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Изменения
► При быстрой вставке (текст добавляется в конец) поле для ввода прокручивается в самый низ.
► Добавлены настройки для автопоказа панели CustomBB: панель показывается при наведении курсора на панели инструментов или на всех сайтах, или только на разрешенных в настройках (на которых показывается контекстное меню).
Автопоказ можно запретить простым скрытием панели (горячими клавишами или Вид – Панели инструментов).
► Коррекция функции импорта.
► Упрощено получение текста из буфера обмена.
► Упрощено вставление текста.
► Добавлено восстановление позиции вертикальной прокрутки после вставки (раньше прокручивалось в конец выделенного фрагмента).
► Пустые всплывающие подсказки больше не показываются.
► Оптимизация добавления дополнительных настроек горячих клавиш.
► Коррекция перевода курсора при быстрой вставке.
► Оптимизация функций для отображения настраиваемых вручную элементов.
► Исправлены всплывающие подсказки для настраиваемых элементов.
► Добавлена возможность использования цвета вида rgb(#, #, #).
► Исправлен сброс на значение по умолчанию для отдельных элементов.
► Все изображения-примеры удалены (если они вам нравились, сохраните их перед установкой новой версии).
CustomBB 0.1.0.1 [48,6 кб]
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Infocatcher хотел поставить на SeaMonkey 1.1.8, пишет - не найден сценарий установки. Можно сделать это дополнение к SeaMonkey 1.1.8?
Отсутствует
seleal
Можно сделать это дополнение к SeaMonkey 1.1.8?
Теоретически, конечно, да. Но с установочными скриптами мне работать не доводилось...
А пока – так и вовсе идет вялотекущая разработка новой версии.
Скажем так, будет время – посмотрю (к сожалению, на его появление пока рассчитывать не приходится).
Отредактировано Infocatcher (15-02-2008 20:21:26)
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
MySh
Ага, мне оно тоже полезно. А пока я начинаю постепенно склоняться к мысли, что код версии 0.2 придется как минимум капитально пересматривать...
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
жаль что под третий фокс CustomBB не ставится
попробовал BBCode - не, не то...
не хватает вставки их буфера горячими клавишами сразу в ВВ кодах....
через правы клик и потом по менюшке - долго.
а что CustomBB все, загнулся совсем? может его к тройке как-то прикрутить можно?
Отсутствует
не хватает вставки их буфера горячими клавишами сразу в ВВ кодах....
ZanZag
а в этих нет такого?
https://addons.mozilla.org/en-US/firefox/addon/491
https://addons.mozilla.org/en-US/firefox/addon/1505
https://addons.mozilla.org/en-US/firefox/addon/3795
Отсутствует
а что CustomBB все, загнулся совсем? может его к тройке как-то прикрутить можно?
Не то что бы совсем загнулось, но времени у меня на него сейчас нет, а менять по-хорошему надо много (пересмотреть всю структуру). Или хотя бы предпросмотр допилить.
Вообще же, все версии должны работать через обход проверки совместимости (сильной привязки к структуре Firefox нет).
Обновленные версии лежат здесь:
cbb_releases.html
Если только я ничего лишнего не крутанул, потому как особо не тестировал, но изменение фона пунктов меню в Firefox 3.0+ я, вроде, починил.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Обзор дополнения (статья).
Отсутствует
Обзор дополнения (статья).
Как мило. Как раз то, на что у меня никогда не хватает времени.
Только после смены названия имена настроек тоже сменились – т.е. не «phpcode.invCommasUseClipboard», а
«custombb.invCommasUseClipboard».
P.S. Поскольку я сам расширением пользуюсь, новые версии будут, но вот когда – вопрос еще тот.
Добавлено 20-12-2008 16:33:53
P.P.S. А автообновления в расширении, увы, до сих пор нет... *обещает прикрутить*
Отредактировано Infocatcher (20-12-2008 16:34:28)
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Только после смены названия имена настроек тоже сменились – т.е. не «phpcode.invCommasUseClipboard», а
«custombb.invCommasUseClipboard».
Спасибо, исправлено.
А почему CustomBB нет на https://addons.mozilla.org/?
Кнопка "Обзор" вроде нигде не работает - файл можно выбрать, но поля не заполняются. Это баг?
А что означает "папка профиля, например, %profile%"? Я подумал, что это C:\Documents and Settings\user\, но это не сработало, вроде.
Отсутствует