Skip navigation.
Home

Custom Buttons

Version 0.0.4.5 released

Changelog:

# Fixed: Bug 21641 'CB 0.0.4.4 doesn't work in Thunderbird Compose/View windows'

Version 0.0.4.4 released

Changelog:

+ Added: Firefox 3.7a1pre support
+ Added: Thunderbird 3.0b4pre support
# Fixed: Bug 21391 "ABP 1.1.1 breaks Custom Buttons extension"
# Fixed: CB doesn't preserve XML.prettyPrinting field value
# Fixed: readFile doesn't close input stream
! Changed: error line number definition code

Version 0.0.4.3 released

Changelog:

+ Added: KompoZer 0.8a2 (0.7.99) support
# Fixed: 'toggle comments' feature doesn't work

Version 0.0.4.2 released

Changelog:

+ Added: new features in code editor component:


  • search ([Shift+]Ctrl+F / [Shift+]F3)

  • search and replace ([Shift+]Ctrl+H)

  • type ahead find (Ctrl+/)

  • go to line (Ctrl+G)

  • toggle word wrapping (Ctrl+W)


# Fixed: "open button by link" feature doesn't work in console2 window

Version 0.0.4.1 released

Changelog:

# Fixed: undo sequence sets default value in editor's code sections

Version 0.0.4.0 released

Changelog:

+ Added: three predefined icons for new buttons
+ Added: more than one code editor can be opened at same time
+ Added: code editor doesn't depends on main window
+ Added: Firefox 3.6a1pre support
! Changed: code architecture

Version 0.0.3.9 released

Changelog:

+ Added: Thunderbird 3.0b3pre support
+ Added: Calendar 1.0pre support
+ Added: Lightning extension support (experimental)
+ Added: 'hidelabel' value for 'cb-style' attribute (to hide button's label)
+ Added: "Add new button..." menu item for toolbars context menu

Version 0.0.3.8 released

Changelog:

! Changed: ui code logic
# Fixed: 'custombuttons' protocol vulnerability

Version 0.0.3.7 released

Changelog:

+ Added: Thunderbird 3.0b2pre support
# Fixed: JavaScript console binding opened buttons only in main Thunderbird window

Version 0.0.3.6 released

Changelog:

+ Added: Firefox 3.1 support
+ Added: Sunbird 0.9 support
# Fixed: some Thunderbird/Sunbird ui bugs

Хочется материться

в FF3.1 мне уже нельзя пользоваться document.load'ом:

Quote:
Warning: Cross site loading using document.load is no longer supported. Use XMLHttpRequest instead.
Source File: about:blank
Line: 0

собственно, сабж

Думы

Оказывается, уже который год не работает инициализация кнопок в диалоге настройки панелей инструментов.
Причина - на customizeToolbar.xul не "подшивается" overlay.css, в котором нужные -moz-binding'и.
Не помню, как такое могло случиться.
Кажется, был какой-то баг в Thunderbird с отображением кнопок.
Перенёс инструкции из overlay.css в custombuttons.css - ничего странного не наблюдаю.
То ли надо совсем избавиться от overlay.css, то ли прописать его как надо в chrome.manifest.

Version 0.0.3.5 released

# Fixed: "Ctrl+Enter cannot be bound to a button" bug

Ctrl+Enter

В форуме заметил не сразу - ник пользователя начинается теми же двумя буквами, что и мой, и такой же длины.
Уже исправил. Причина была в том, что в случае "Enter" event.which==event.keyCode.
Протестирую на FF1.5, TB, SB и сделаю релиз.

Автообновление на mozdev

Опять на память. Разбирался сегодня с автообновлением на mozdev.
Порядок такой. Перед сборкой расширения идём на https://www.mozdev.org/profile/file_management.html и берём ссылку на update.rdf ("Generate update.rdf URL from install.rdf").
Одного раза достаточно, ссылка не меняется. Помещаем эту ссылку в <updateURL> в install.rdf. Собираем расширение, делаем commit, ставим галочку в "Released" там же, в /file_management.html. Потом подтверждаем хэш (ссылка "verified").
Хэш можно посчитать HashTab'ом (http://beeblebrox.org/hashtab/) - правой кнопкой по xpi, "Свойства", на вкладке "Контрольные суммы" берём любую (рекомендуют sha*).
Это всё, а опционально можно ещё указать Update Info URL (ссылка "url").
Файл информации об обновлении - xhtml. Примерный формат (подсмотрел в help'е Firefox):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<title>...</title>
	</head>
	<body>
		...
	</body>
</html>

Поддерживаемые теги - <h1>, <h2>, <h3>, <p>, <ul>, <ol>, <li>, <b>, <i>. Текст должен быть в этих тегах, если просто текст в <body>...</body> - просто не будет отображаться.

Интереса ради сделал такой файлик:

<?php
	$applocale = strtolower ($_GET ['applocale']);
	$version = $_GET ['version'];
	if (strlen ($applocale) > 255) exit ();
	if (strlen ($version) > 255) exit ();
	if (!ereg ("[0-9]+(\.[0-9]+)+", $version, $regs))
		$version = "";
	if (($applocale == "ru") ||
		($applocale == "ru-ru"))
		$updateinfourl .= "ru-RU/";
	else
		$updateinfourl .= "en-US/";
	$updateinfourl .= "updateinfo" . $version . ".xhtml";
	if (!file_exists ($updateinfourl))
		$updateinfourl = "updateinfourl.xhtml";
	header ("Location: $updateinfourl");
	exit ();
?>

Работает.
URL к нему такой: http://custombuttons.mozdev.org/updateinfo/updateinfo.php?applocale=%APP_LOCALE%&amp;amp;version=%ITEM_VERSION%
Если написать просто ..&version=.., амперсэнд и всё после него отрежет, так что надо именно ..&amp;version=...
Соответственно два новых каталога в /www: updateinfo/en-US и updateinfo/ru-RU.

Правда, придётся ещё подумать как собирать две разные версии - одну для AMO (без <updateURL> в install.rdf), а вторую для mozdev (с <updateURL>). Так что с внедрением повременю.


UPDATE: По поводу %ITEM_VERSION%. Положим, обновляется версия 0.0.3.3 до 0.0.3.4 и ей будет отдан updateinfo0.0.3.3.xhtml с одной информацией об обновлении, а если обновляется версия 0.0.3.2 до 0.0.3.4, ей будет отдан updateinfo0.0.3.2.xhtml с другой информацией об обновлении. Это значит, что надо либо как-то дублировать сведения из updateinfo0.0.3.3.xhtml в updateinfo0.0.3.2.xhtml, либо сочинять какой-то аггрегатор на php. Либо просто отказаться от version и отдавать на updateinfourl весь наличный changelog.
На AMO, видимо, придётся тоже в "примечаниях к версии" указывать полный changelog, потому что, например при обновлении 0.0.3.2 до 0.0.3.4 и 0.0.3.3 до 0.0.3.4 с AMO информация к обновлению идентична, именно - то, что сейчас "висит" на сайте.
Думаю.

Syndicate content