Opera

индекс
155,07

Хабра-редактор комментариев ноль.один

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

В краце как оно работает:
В опере можно запускать свои скрпиты при входе на страницы, это очень удобная штука, позволяет избавляться от ненужных блоков и тому подобной нечисти. В общем, много не буду говорить, подключить скрипт можно в настройках (tools -> preferences -> content -> Javascript Options[это кнопка справа] -> user Javascript files[это текстовое поле в самом низу])



Там можно ввести путь, откуда опере стоит брать скрипты, браузер будет сканить все файлы и пытаться выполнить в них код по возможности. Я стараюсь для каждого сайта делать свой скрипт, в данном случае у нас будет вот такой код:
  1. if ( location.href.indexOf('habrahabr.ru') !== -1 )
  2. {
  3.     
  4.     var buttons = [
  5.         { caption: 'pre', openTag: '<pre %%%>',     closeTag: '</pre>' },
  6.         { caption: 'A',    openTag: '<a href="%%%">', closeTag: '</a>', correctTag: function(){ return prompt("Введи урл"); } },
  7.         { caption: 'user', openTag: '<hh user="%%%" />', correctTag: function(){ return prompt("Введи имя"); } },
  8.         { caption: 'img', openTag: '<img src="%%%" />', correctTag: function(){ return prompt("Введи урл"); } }
  9.     ]
  10.  
  11.     function addText()
  12.     {
  13.         var textarea = $('js-field-comment');
  14.         var button = buttons[event.target.id];
  15.         textarea.value += button.openTag.replace( '%%%', button.correctTag || '' );
  16.         if( button.closeTag )
  17.         {
  18.             textarea.value += button.closeTag;
  19.         }
  20.     }
  21.     
  22.     function drawButtons()
  23.     {
  24.         for( q = 0; q < buttons.length; q++ )
  25.         {
  26.             var element = buttons[q];
  27.  
  28.             var btn     = document.createElement( 'input' );
  29.             var textarea = $('js-field-comment');
  30.             
  31.             btn.type    = 'button';
  32.             btn.value  = element.caption;
  33.             btn.id     = q;
  34.             
  35.             btn.onclick = addText;
  36.             
  37.             textarea.parentNode.insertBefore( btn, textarea );
  38.         }
  39.         
  40.         var br = document.createElement('br');
  41.         textarea.parentNode.insertBefore( br, textarea );
  42.         
  43.     }
  44.     
  45.     document.onload = drawButtons;
  46.     
  47. }
* This source code was highlighted with Source Code Highlighter.


Если этот код вставить в любой файл с рзрешением js в папку указанную в настройках, то при ответе на коментарий, получится примерно такая штука:


Так как делалось для себя, возможности скудны, но пожелания и критика приветствуются, так как появилось желание эту фичу доделать.

зы: Чтоб добавить свою кнопку, нужно добавить в массив buttons элемент с полями:
caption — заголовок кнопки (обязательное поле)
openTag — открывающий тэг (обязательное поле)
closeTag — закрывающий тэг (не обязательное поле)
correctTag — функция заменяющая в открывающем тэге "%%%" такую строку (не обязательное поле)

upd: я не меряюсь ни с кем пиписьками, у меня просто есть время и желание сделать что нибудь полезное…
upd2: опера ругается на скрипт, если он не в кодировке utf8, ей не нравится русский в других кодировках

_________
Текст подготовлен в ХабраРедакторе
+21
15 октября 2009, 20:37
8

комментарии (54)

+9
homm #
Ну сколько можно плодить велосипеды (включая прототип). Все что нужно ужа давно придумано и сделано.
–11
differentlocal #
Давать в топике про Оперу ссылку на Greasemonkey — это конечно гениально. Читать перед комментированием не пробовали?
+8
ProRunner #
Так вы бы сначали попробовали этот скрипт. Он прекрасно работает в опере:

image
0
Wott #
Если честно «прекрасно» — это мягко говоря неправда. В скрипте как минимум две ошибки, которые не позволяются ему работать прекрасно.

Вот ссылка не предыдущий топик с подобной тулзой и моим окментом что не работало в вышеуказанном скрипте
+3
homm #
Слушай, у всех работает, у тебя не работает, какой можно сделать вывод? Попробуй на чистой установке.
0
Wott #
Вообще-то я в коментарии написал что со скриптом не так. Да может работать иногда. Че тут пробывать?
Я исправил проверил — работает, но скрипт от nagato мне нравиться больше — он интереснее написан.
0
nagato #
я, когда писал, тоже не знал, что подобный скрипт уже был)
+1
posix #
Спасибо за ссылку на скрипт, не знал о существовании такой полезной штуковины.
+1
Hest #
Версия:
10.00

Сборка:
1750

не работает напрочь
0
posix #
В 10.00 4585 работает отлично.
+1
koreec #
подтверждаю, не работает, в отличие от скрипта из поста.
+1
shifttstas #
Запаковал в *.crx файл для последних версий Chrome что поддерживают плагины
скачать тут chromeplugins.googlecode.com/files/Habracomment.crx
Выглядит аналогично
+3
dariy #
У меня не работал (Opera/9.80 (Windows NT 6.1; U; en) Presto/2.2.15 Version/10.00).
Подпилил немного под руководством "UserJS. Часть I: Введение" — у меня заработало. Может, кому сгодится моя доработка.
0
LevaniD #
спасибо большое, ваш скрипт заработал у меня
Версия:
10.10 Beta

Сборка:
1833
0
dariy #
Хе-хе, не заблокировал запись доработки — сам виноват. Теперь народец переписывает её всякой шнягой.
Правильная ревизия.
0
falone #
Картинки с пикаматика удалены и получилось некрасиво (
0
dariy #
Согласен, некрасиво. Но у меня нет картинок, чтобы их перезалить. А заниматься художественным выпиливанием из скриншотов пока влом. Если авторы пикаматика восстановят старые картинки, как "обещают" — проблема исчезнет. Или авторы оригинального SuperHabraImagination перезальют их куда-нибудь ещё — обновлю.
+5
taliban #
плодить велосипеды буду до тех пор пока я программирую, это мой заработок, это мой хлеб, и я стараюсь открывать для себя что-то новое, я не спорю что есть лучше, но я не хочу довольствоваться тем что есть, мне интересно сделать что-то самому, а еще я могу этот скрипт переделать как мне угодно, я собственно это и спросил, какие улучшения %username% хотел бы увидеть, появилось время, заметил старые скрипты
0
homm #
плодить велосипеды буду до тех пор пока я программирую, это мой заработок, это мой хлеб
Что-то я сомневаюсь, что вам платят за создание вещей, у которых уже есть бесплатные более функциональные аналоги.
0
taliban #
я за это получаю намного больше чем деньги, как бы пафосно это не звучало, мне нравится учиться, и пока нравится учиться я буду делать аналоги бесплатных и более функциональных вещей… кстати мои кнопочки уже выглядят вот так:
0
homm #
Нам зачем показывать результаты вашего обучения?
–1
taliban #
а чем сейчас мой скрипт хуже, чем предложенный Вами?
+1
ozonar #
А чем лучше?
–1
taliban #
давайте больше ничего не делать, зачем? уже ведь все сделано… а вот Вы например сказали что бы Вы хотели видеть на этой панели? сейчас в планах вставить простенькое форматирование кода, символы всякие (© и подобные)

идей мало, а руки чешутся, странно что угнетать на хабре умеют, а посоветовать что-то нет
+1
ozonar #
Ещё раз повторю что я не против обучения и целиком вас поддерживаю.

Но если каждый будет выкладывать сюда свой собственный, неповторимый, но и не отличающийся от других велосипед, то будет как-то не прикольно.

Если бы вы сразу придумали идею (ставит знак ©, автоматически форматирует текст внутри, та-же простая добавлялка новых кнопок) и поставили её во главе разработки, сказав что это главная фича — то приняли бы на Хабре намного теплее.

А допиливать что-то самому, до уровня редактора, который уже существует — это ни к чему.

Вот =)
+1
nett00n #
Не в укор автору поста, но скрипт данный homm действительно удобнее и визуально приятнее
image
0
nett00n #
На мой взгляд — следовало бы объеденить усилия и вместо двух разных юзерскриптов — написать один совместно, используя наработки друг друга
0
mvgolubev #
Смотрю на ваш скриншот и понимаю, что не у меня одного такая кривость выползает. Серая шапка окна редактирования справа вылезает за край текстового поля и торчит дальше скрол-бара. Причём это не зависит от ширины окна. У меня в Opera 10.0 это выглядит так же. По-моему, смотрится некрасиво, и это явный баг.
0
taliban #
это просто ширина серой шапки в 100%, поле для ввода коментария имеет 95%
–24
Dangelweb #
Что-то пользователи хабра оперу в последние время полюбили, не к добру все это…
+7
taliban #
что плохого в опере?
+5
AHrEJI #
Пользователи Хабра и не только Хабра всегда любили Оперу :)
+1
Blandinka #
К добру, к добру! :)
0
DreamWalker #
Было бы здорово сделать Хабра-редактор комментариев для всех браузеров
+4
Matsutoka #
Может проще тогда ввести функцию редактирования комментов на самом хабре? Или это т.н. защита от дурака?
0
taliban #
это не просто, каждый браузер представляет свои средства для этого
0
ChemAli #
Если ничего не вводить в окне запроса, тег все равно добавляется, что нехорошо.
0
not_ice #
Лучше бы кто-то сделал функцию а ля gmail для отложенной отправки комментария скажем через 10 секунд )
0
homm #
Тут нужна серверная поддержа, либо придется эти 10 секунд не закрывать окно с комментариями и не переходить на другие страницы.
0
not_ice #
это да, но обычно после отправки комментария я остаюсь на странице )
кстати, можно ли в этом случае каким-то образом повесить отправку комментария принудительно при закрытии страницы через onUnload?
+1
ozonar #
Можно вопрос?
А зачем это нужно выкладывать здесь, если сущеструют более удобные редакторы, и хабровцы об этом знают?
0
taliban #
0
ozonar #
Да я не против обучения и целиком вас поддерживаю. Но зачем выкладывать каждый шаг обучения на хабре?

*А я сегодня сделал бутерброд. Ждите подробную поэтапную сборку из ингридиентов. Скрины, Траффик =))*
0
taliban #
следующая версия будет полноценная, и не хуже чем предложенный вариант в первом коменте, просто хотелось взглянуть на реакцию, и посмотреть чего люди хотят, но увы кроме аналогов ничего путного не услышал, поэтому пока копирую функционал :(
0
kost #
При вставке </сcode> укажите alt="".
0
kost #
Парсер — лох.

При вставке <img /> пропишите alt="", ибо это есть обязательный атрибут.
0
kost #
А SuperHabraImagination при клике на иконку <code> вставляет тег <pre>.

Code
0
taliban #
а мой скрипт очень легко изменяемый, и ему можно добавить свои фичи :)
0
homm #
а от нифига не изменяемый. На камне вытесан, наверное.
0
taliban #
в отличии от предложенного Вами скрипта, мне чтоб добавить кнопку нужно добавить один элемент массива
0
mvgolubev #
Можно ещё вот какую фичу реализовать. Чтобы скрипт понимал, под кем ты сейчас залогинен, и смотрел текущее значение кармы. Если карма меньше нуля, то вместо этих кнопочек тэговой разметки писал: «Вы не можете использовать тэги (карма < 0)». А то некоторые пытаются использовать теги, а потом удивляются, почему же разметки не видно.
0
taliban #
это было бы просто если бы значения кармы были бы на текущей странице, а так они в профиле, хотя можно покапаться в коде, где-то возможно лежит, хорошая идея
0
pxx #
Подскажите, что я делаю не так?

1. Сохранил C:/userJs/habr.user.js в UTF-8
2. Прописал C:/userJs в опциях оперы. Включил консоль при ошибках.
3. При перезагрузке страницы никакого тулбара и ошибки:
0
pxx #
Черт, не туда запостил. Проигнорируйте тут, лучше в новом посте.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.