Полезная информация

Хотите узнать больше о расширениях? Посмотрите ролики, рассказывающие о работе с расширениями Firefox.

№124-03-2008 22:32:02

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 2.0
Веб-сайт

Помогите: произвол кнопкописателей

Уважаемые форумчане !

Не знаю что и делать, надеюсь на вашу помощь. История такая: я, если кто не знает, занимаюсь разработкой оригинальной ветки расширения Custom Buttons. До версии 0.0.2.7 проблем особых не было. Но в 0.0.2.7 я решил реализовать несколько дополнительных нововведений, в числе которых поддержка API CB2 и расширенное контекстное меню. В той версии был баг с неработоспособностью "горячих" клавиш, я это заметил и выпустил 0.0.2.8. Но, кроме прочего там ещё были проблемы с контекстным меню, которые я не сразу заметил - мне просто не попадались кнопки, которые подменяют атрибут "context".

Сейчас я выложил 0.0.2.9 на AMO - ожидает рецензирования. Эта версия учитывает, что некоторые кнопки могут подменять атрибут context. Но, возникла такая проблема: заявился ко мне на форум на mozdev товарищ кнопкописатель, потестировал новую версию со своими кнопками и опять обнаружил "проблему" с контекстным меню. Тут-то я понял, почему жаловались пользователи на 0.0.2.7/0.0.2.8, и понимаю, они будут жаловаться и на 0.0.2.9.

Но. Дело всё в том, что его кнопки "бажные". Вкратце: они копируют контекстное меню расширения один-в-один, не заменяя даже идентификаторов, после чего контекстное меню ломается. В 0.0.2.6 и младших версиях этой проблемы не было видно, потому что расширения этих версий не работают с контекстным меню.

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

Прошу помощи в этом вопросе.

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

Благодарю за внимание, надеюсь на помощь.


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№225-03-2008 01:02:58

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 2.0

Re: Помогите: произвол кнопкописателей

В 0.0.2.6 и младших версиях этой проблемы не было видно, потому что расширения этих версий не работают с контекстным меню.

Т.е. document.getElementById("custombuttons-contextpopup") возвращает не тот popup – я правильно понял?
Бредовая идея: сделать что-нибудь с .cloneNode(true);
Начиная от грубого

Выделить код

Код:

Object.prototype._cloneNode = Object.prototype.cloneNode; // Object ли?
Object.prototype.cloneNode = function(param) {
  if(this.id == "custombuttons-contextpopup") { ... }
  else { this._cloneNode(param); }
}

и заканчивая

#custombuttons-contextpopup { -moz-binding: url( что-то там ); }
и
кодом, похожим на предыдущий.

А вообще лучше надо написать FAQ для кнопкоделателей на тему. :)

P.S. Кстати, а что будет, если до загрузки кнопок сохранить в какую-нибудь переменную document.getElementById("custombuttons-contextpopup") и работать потом уже с ней?


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№325-03-2008 06:03:01

Shutnik
Участник
 
Группа: Extensions
Зарегистрирован: 12-11-2005
Сообщений: 3785
UA: Firefox 2.0

Re: Помогите: произвол кнопкописателей

ну по-моему выход логичный: пуст переписывают свои глючные кнопки или работают со старыми версиями расширения.

Отсутствует

 

№425-03-2008 07:30:11

TLemur
Забанен
 
Группа: Members
Зарегистрирован: 18-10-2004
Сообщений: 1764
UA: Firefox 2.0

Re: Помогите: произвол кнопкописателей

Anton

А с английским я тебе помогу. Какая помощь тебе нужна?

Отсутствует

 

№525-03-2008 16:53:04

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 2.0
Веб-сайт

Re: Помогите: произвол кнопкописателей

Infocatcher

Т.е. document.getElementById("custombuttons-contextpopup") возвращает не тот popup – я правильно понял?

id'ы тут не причём, xml-всё таки. Это я не разобрался.
Однако, код этих кнопок основан на двух предположениях: 1) контекстное меню расширения всегда находится в актуальном состоянии и 2) контекстное меню расширения не содержит тега <menu>. Эти кнопки строят своё меню, в конце которого помещают <menu> с <menupopup>, на последний "вешают" обработчик onpopupshowing, который удаляет содержимое <menupopup>, а затем наполняет его клонами элементов меню расширения. Некоторые из пунктов меню расширения отображаются только при необходимости (например, если кнопка не имеет справки, то пункт меню "Справка" не отображается). Кроме того, кнопки CB2 помещают свои элементы в общее меню и обработчик расширения отображает нужные в зависимости от того, на какой кнопке контекстное меню "всплывает". Код кнопок эти моменты не учитывает. Это во-первых. Во-вторых, начиная с версии 0.0.2.7 в контекстном меню расширения есть вложенное подменю. Кнопки копируют и его тоже, и, ничего не зная о нём, обрабатывают событие popupshowing также и от него - то есть, меню кнопки уже давно открыто, а обработчик начинает удалять своё содержимое. После этого в приложении перестают работать вообще все popup'ы и не открываются новые окна.

Shutnik

ну по-моему выход логичный: пуст переписывают свои глючные кнопки или работают со старыми версиями расширения.

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

TLemur
Я хочу разместить предупреждение на AMO: "Будьте внимательны! Некоторые старые кнопки содержат ошибки, которые не проявлялись в ранних версиях расширения. Если какие-либо из ваших кнопок не работают с новой версией, создайте баг (http://custombuttons.mozdev.org/bugs.html) или обратитесь на форум (http://custombuttons.mozdev.org/drupal/forum), чтобы исправить эти ошибки. Пожалуйста, не забудьте указать код неработающей кнопки или место, где её можно найти."

Боюсь, правда, там только писатели отмечаются.


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№625-03-2008 17:06:14

memini
Gone
 
Группа: Members
Откуда: no tresspassing
Зарегистрирован: 19-03-2005
Сообщений: 2055
UA: Firefox 2.0
Веб-сайт

Re: Помогите: произвол кнопкописателей

Anton
Attention! Some old buttons contain bugs that only appear in the new version of extension [тут бы указать >=0.0.2.7]. If some of your buttons don't work with the new version, submit the bug-report on http://custombuttons.mozdev.org/bugs.html or post about it on http://custombuttons.mozdev.org/drupal/forum to make them work. Don't forget to specify the code of non-working button or the place, where it can be found.

PS Исправил Warning на Attention.

Отредактировано memini (26-03-2008 08:40:20)


I'm on my way home | I left three days ago | But no one seems to know I'm gone
Home is where the hatred is | Home is filled with pain and it
Might not be such a bad idea if I never | Never went home again.

Отсутствует

 

№725-03-2008 17:15:10

Shutnik
Участник
 
Группа: Extensions
Зарегистрирован: 12-11-2005
Сообщений: 3785
UA: Firefox 2.0

Re: Помогите: произвол кнопкописателей

Anton пишет

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

ну тогда можно сделать режим совместимости со старыми кнопками :D

Отсутствует

 

№825-03-2008 18:02:53

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 2.0
Веб-сайт

Re: Помогите: произвол кнопкописателей

memini
Спасибо.

Shutnik
Поддержка кнопок с кривой реализацией, я думаю, потребует добавления кода соответствующей кривизны. Тогда расширение превратится в что-то подобное CB2. Согласен, пусть разработчики переделывают свои кнопки, но как их заставить ?


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№925-03-2008 19:01:44

krigstask
друг народа
 
Группа: Members
Откуда: Rampova, Inkerimaa
Зарегистрирован: 13-09-2005
Сообщений: 4593
UA: Opera 9.5
Веб-сайт

Re: Помогите: произвол кнопкописателей

Anton
Новая версия заставит (-%Е


Ядрёная консоль делает меня сильней!

Отсутствует

 

№1025-03-2008 21:25:03

Unghost
Призрак-админ
 
Группа: Administrators
Откуда: Moscow, Russia
Зарегистрирован: 08-10-2004
Сообщений: 11771
UA: Minefield 3.0

Re: Помогите: произвол кнопкописателей

Anton

Согласен, пусть разработчики переделывают свои кнопки, но как их заставить ?

А расширение не может определить наличие глючной кнопки и выдать соответствующее предупреждение пользователю?


Do not meddle in the affairs of Wizards, for they are subtle and quick to anger.

Отсутствует

 

№1127-03-2008 01:27:34

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 2.0
Веб-сайт

Re: Помогите: произвол кнопкописателей

А расширение не может определить наличие глючной кнопки и выдать соответствующее предупреждение пользователю?

Простая проверка будет ненадёжной, сложная потребует ресурсов (хотя бы: таскаем правильную реализацию в пакете, если обнаружили - заменяем, но, это неправильно). И, боюсь, пользователям может не понравиться. Хотя, вопрос натолкнул на мысль использовать контроль версий целевого приложения/расширения - надо будет обдумать.

К следующей версии попробую реализовать содержание контекстного меню всегда в актуальном состоянии.

Спасибо за поддержку.


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]