>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Сustom Buttons http://forum.mozilla-russia.org/viewforum.php?id=34 >[CB]Cookies Permissions http://forum.mozilla-russia.org/viewtopic.php?id=56039 |
Infocatcher > 17-08-2012 23:19:29 |
Cookies Permissions 0.2.0.1 (2013-05-14) Установить: cookiesPermissions.html Исходный код, инициализация: cookiesPermissions.js |
Infocatcher > 17-08-2012 23:26:16 |
Тестовая версия, будьте осторожны! |
Zhorik > 03-09-2012 18:45:53 |
Суперская кнопка! Огромное спасибо! Перепробовал несколько расширения для управления кукисами - всё не то. Максимально приближенным к идеалу оказался CookieSafe (идеология интерфейса как у NoScript). Но к сожалению это расширения оказалось сырым и местами сильно глючным И тут я нашёл эту кнопку Cookies Permissions - это просто праздник какой-то! Правда сразу захотелось слегка изменить функционал. Насколько я понимаю, CB-кнопки не могут сохранять свои настройки (в файл или ещё куда-то). Но вот если поместить некие константы в начало программы и юзер смог бы их править ручками - возможно это было бы решением для индивидуальных настроек? Хотелось бы немного. 1. Отключить таймер и автоматическое удаление кукисов (подскажите где подправить?) 2. Картинка-статус кукисов имеет в данный момент четыре положения: - если сайт есть в списке исключений, то показывается статус из этого списка (кукисы разрешены полностью, только на сессию, заблокированы). - если сайта нет в списке исключений, то показывается состояние Default. Однако, в зависимости от настроек в браузере, Default фактически также имеет одно из значений: кукисы разрешены полностью, только на сессию, заблокированы. Нельзя ли в качестве картинки показывать фактическое состояние кукисов для текущей страницы? Т.е. если сайта нет в списке исключений, а в настройках браузера кукисы заблокированы, то и картинка должна показывать, что кукисы заблокированы, а не Default. Я понимаю, что для этого необходимо считать настройки браузера и выяснить, что фактически означает Default. Но возможно это легко сделать? Ещё раз спасибо за отличную кнопку! Надеюсь, автор посчитает моё предложение по изменению поведения кнопки разумным |
Infocatcher > 03-09-2012 19:34:05 |
Zhorik пишет
Могут. Просто нет API для простого добавления настроек, так что или в about:config править придется, или нужно писать дополнительный код. Zhorik пишет
Такие настройки уже есть: Выделить код Код:this.options = { removeUnprotectedCookiesInterval: 30*60*1000, // -1 for disable useBaseDomain: false // Use google.com instead of www.google.com }; и в разрабатываемой версии: Выделить код Код:var options = { removeUnprotectedCookiesInterval: 30*60*1000, // -1 to disable removeAllUnprotectedCookies: false, useBaseDomain: { // If set to true, will use short domain like google.com instead of www.google.com addPermission: false, openPermissions: false, showCookies: true, removeCurrentSiteCookies: true, preserveCurrentSiteCookies: true }, prefillMode: 1, // 0 - move caret to start, 1 - select all, 2 - move caret to end }; В частности, Zhorik пишет
– это
Zhorik пишет
Это не реализовано, но сделать можно. |
Zhorik > 03-09-2012 20:11:27 |
Infocatcher пишет
Вечный праздник!
Я думаю, можно для состояния Default использовать те же иконки, что и для списка исключений, добавив где-нибудь в углу какую нибудь точку, или слегка изменив цвет печенек, или ещё что-то. Тогда будет сразу видна разница между состояниями "кукис только на текущую сессию" и "Default - кукис только на текущую сессию". Нельзя ли ещё сделать, чтобы при left-click мышью проходились по кругу все состояния Default->Session->Allow->Block? В настоящий момент сделано Default->Allow. Приходится лезть в меню по right-click и выбирать Session. Я думаю, это имело бы смысл, т.к. сценарий использования браузера "Block all cookies, but allow session cookies for selected sites" достаточно распространён. |
Infocatcher > 03-09-2012 22:07:55 |
Zhorik пишет
Есть же контекстное меню со всеми этими пунктами. Zhorik пишет
Это задается в Выделить код Код:this.onclick = function(e) { ... if(but == 0 && !hasModifier) { this.permissions.togglePermission(this.permissions.cp.ACCESS_ALLOW); Там три варианта значений: ACCESS_DENY, ACCESS_SESSION и ACCESS_ALLOW. Приделал нечто вроде: https://github.com/Infocatcher/Custom_B … b91cdf127e Итого: |
Inko7 > 04-09-2012 09:44:28 |
Zhorik пишет
Не поддерживаю! Будет очень неудобно! Для этого используй контекстное меню. |
angryCat > 04-09-2012 10:19:46 |
Мне кажется или ссылки на тестовую версию и стабильную совпадают? |
voqabuhe > 04-09-2012 10:24:15 |
angryCat пишет
Кажется |
angryCat > 04-09-2012 10:25:58 |
А что насчет DOM Storage куков? Я не знаю ни одного расширения которое позволяет управлять ими. На странице about:permissions есть пункт который можно ставить в спрашивать/разрешать/блокировать. И есть расширение которое позволяет просматривать/удалять/изменять их:
Можете взять оттуда код и обьединить с вызовом функций со страницы about:permissions? Кстати, не плохо бы было, если с помощью кнопки можно изменять куки. |
Zhorik > 04-09-2012 11:58:09 |
Это уже не сюда. Обсуждаемая чудесная кнопка делает не более, чем может сам браузер (на самом деле чуть больше). Т.е. фактически стандартные функции браузера вынесены в отдельную удобную кнопку. И это есть гуд! Для изменения кукисов есть несколько отдельных расширений. |
Infocatcher > 04-09-2012 12:32:04 |
okkamas_knife пишет
Не, с точками-то я справлюсь, только точки в данном случае как-то совсем не интуитивны. angryCat пишет
Во-первых, это нужно совсем другую кнопку делать – как-то я плохо представляю как отображать и удобно переключать сразу два вида разрешений. А во-вторых, там же «всегда спрашивать» по умолчанию. Так часто спрашивает? angryCat пишет
Это вряд ли. И приделывать полноценный редактор из кнопки не очень-то удобно. |
Zhorik > 04-09-2012 13:00:21 |
Только что опробовал последний вариант кнопки. Прозрачные значки для Default-состояний - это просто гениально! Поставил кнопку на постоянное использование. Спасибо! Считаю, что данная кнопка может по праву претендовать на звание лучшего менеджера кукисов. Думаю, можно ещё немного улучшить несколько непринципиальных мелочей, если автор сочтёт это разумным. 1. Заменить слово Deny на Block. В настройках браузера используется именно термин Block Cookies. 2. Добавить комментарии к опциям в useBaseDomain. Сразу было трудно разобраться, что означает каждая переменная - пришлось просматривать программу 3. Внести опции для скрытия/показа пунктов контекстного меню. Например, для отключения пунктов Remove*. 4. Пункты Remove* назвать точнее (поначалу проходится долго ломать голову). В названии всех пунктов использовать уточнения вроде "for current site only", "all sites include current site", "all sites except current site". Кстати, можно пояснить, что означает "protected cookies"? Методом тыка точно определить не удалось. Сначала думал, что это кукисы, внесённые в список исключений, но потом вроде бы оказалось, что нет. P.S. Не надо больше точек! Прозрачные значки для Default-состояний - просто гениальное решение! |
Infocatcher > 04-09-2012 13:47:39 |
Zhorik пишет
Согласен. Zhorik пишет
Да, надо. Осталось только понятно сформулировать. Zhorik пишет
Можно их скрыть:
Zhorik пишет
Слишком длинно. Zhorik пишет
Остаются только внесенные в список исключений как «разрешить». |
villa7 > 04-09-2012 14:08:51 |
Infocatcher |
Infocatcher > 04-09-2012 14:18:39 |
villa7 пишет
У гугла выставляются cookies с доменом «.google.ru», так что в исключениях должен быть «google.ru», а не «www.google.ru». 04-09-2012 14:22:10 |
Zhorik > 04-09-2012 14:35:52 |
Infocatcher Происходит странное! Написал removeUnprotectedCookiesInterval: -1. В стабильном релизе работает как надо. Т.е. никакие кукисы по таймеру не стираются. В последней версии, стираются время от времени все кукисы, кроме сайтов Allow в exception list! Нельзя ли проверить? P.S. Ну точно! Пришёл с обеда, кукисы потёрты, с форума выкинуло! |
Infocatcher > 04-09-2012 15:27:17 |
Zhorik 04-09-2012 15:47:53 |
Zhorik > 04-09-2012 19:17:27 |
Infocatcher В общем, перестартовал браузер и всё стало нормально (кукисы больше не автоудаляются). Кстати, я бы по умолчанию эту фичу выключил. У непродвинутых пользователей могут возникнуть проблемы (особенно, если невнимательно прочитать описание кнопки и не узнать про наличие фичи автоудаления). А продвинутые пользователи сами включат Вероятно, "баго-фича" была связана с: Я действительно редактировал кнопку "по живому" и, видимо, таймер оставался после самого первого запуска. Нельзя ли заодно пояснить на счёт самого Custom Buttons. Давно не заходил на addons.mozilla.org. А сегодня смотрю - есть какой то "Custom Buttons 2" - это плагиат, дериват или принципиально другое расширение? Можно ли CB-кнопку засунуть вниз в статус-бар? Было бы очень полезно разместить Cookies Permissions рядом с иконкой NoScript в статус-баре. Нашёл расширение с подходящим названием Status-Bar Custom Buttons, но ещё не пробовал, будет ли оно работать с CB-кнопками. |
Infocatcher > 04-09-2012 20:26:21 |
Zhorik пишет
Да, пожалуй. Zhorik пишет
Да, вероятно. Но повторить у меня не получается. Zhorik пишет
Можно, но только в Firefox. Zhorik пишет
Если там не реализован this.onDestroy = ... , могут быть утечки памяти. И после редактирования надо будет перезапускаться. Zhorik пишет
Custom Buttons 2 – это продолжение альфа-версии Custom Buttons. |
Infocatcher > 04-09-2012 20:45:51 |
okkamas_knife пишет
Я про встроенную возможность размещать кнопки в строке состояния. okkamas_knife пишет
Будет две инициализации, кстати.
А при редактировании сработает только
|
Kaban > 05-09-2012 01:34:43 |
Хорошая кнопка! Готов принять участие в тестировании. Допинайте, плиз, чтобы была настройка, засовывать кнопку в статус-бар или стандартным для CB способом выносить на панель инструментов. Infocatcher
Вот тут я вообще не понял. Способ включения иконки в статус-бар от okkamas_knife будет приводить к нежелательным последствиям? Из треда не совсем понятно, что же самое актуальное на сегодняшний момент: CB или CB2? |
Infocatcher > 05-09-2012 02:47:51 |
Kaban И что считать нежелательным? 05-09-2012 02:56:41 Выделить код Код:this.classList.remove("toolbarbutton-1"); document.getElementById("statusbar-display").appendChild(this); Хоть панель не распирает. |
Zhorik > 05-09-2012 14:01:34 |
Infocatcher
Боюсь к этому и идёт
Почему? Один раз за счёт того, что кнопка будет приписана к статус-бару, и один раз за счёт того, что CB инициализирует все CB-кнопки, находящиеся в браузере?
Ээээ.... Сорри, я тут уже потерял нить. А можно сделать ещё одну настройку "стартовать также в статус-баре" и нужный код инициализации запускать соответственно этой настройке? Новую версию со всеми изменениями готов протестировать немедленно Кстати, при left-click состояние меняется Default->Allow. Это можно также вынести в настройку, типа ToggleMode = ALLOW | SESSION | BLOCK |
Infocatcher > 05-09-2012 20:00:55 |
Zhorik пишет
При удалении DOM-узла из дерева сработает XBL-деструктор, а при добавлении – конструктор. В общем, это все особенности реализации. Zhorik пишет
«Также» сложно. Zhorik пишет
Add "toggleMode" options, version 0.2.0pre10 - 2012-09-05 Cookies Permissions 0.2.0pre10 (2012-09-05) |
Kaban > 06-09-2012 00:52:11 |
Infocatcher
Извиняюсь, возможно я сейчас скажу глупость (в программировании под XUL я не в зуб ногой). А нельзя ли сделать статическую переменную-счётчик и вызывать инициализацию только один раз (самый самый первый)? Типа синглтона? Протестировал сейчас кнопочку в статус-баре. Чтобы смотрелось хорошо, нужно стереть название кнопки (в CB-редакторе), иначе рядом с иконкой будет очень много букв. Выглядит и работает почти замечательно. Два момента: 1. Когда наводишь на иконку, она "подсвечивается" прямоугольником, как пункт меню. Вероятно иконка добавляется как класс "панель" или что-то в этом роде. 2. Иконка в статус-бар добавляется с помощью appendChild(). Тут-то и порылась собака! Дело в том, что в статус-баре (это моя догадка, но вполне очевидно) присутствует прогресс-бар - ползущая шкала, которая появляется при загрузке страницы. В нормальном состоянии этот прогресс-бар либо невидим, либо имеет минимальные размеры. Иконка Cookie Permissions располагается после прогресс-бара (на экране - максимально влево). В итоге, при загрузке новой страницы появляется прогресс-бар и иконка Cookie Permissions начинает сильно прыгать влево-вправо. Решением я вижу использовать не addChild, а какой нибудь insertChildByIndex. Если по индексу вставлять дочерние элементы невозможно (нет такой функции), нужно сделать enumeration и загрузить в массив все чайлды из статус-бара, по-ходу дела удаляя их из статус-бара. Потом добавить все элементы обратно по addChild и в нужном месте втавить иконку Cookie Permissions. Причём уже можно по желанию засунуть Cookie Permissions на первое, второе, энное место. Что скажете, возможно такое запрограммировать под XUL? |
Infocatcher > 06-09-2012 10:18:15 |
Kaban пишет
Если что-то и править, то в Custom Buttons. Kaban пишет
В общем случае от стилей для <toolbarbutton> никуда не деться. Kaban пишет
Да, надо добавлять в другое место. Add "moveToSeaMonkeyStatusBar" option 06-09-2012 10:37:39 |
Zhorik > 06-09-2012 13:05:41 |
Infocatcher
Когда можно будет протестировать новую версию? |
Infocatcher > 06-09-2012 13:49:44 |
Zhorik 06-09-2012 13:50:28 |
Zhorik > 06-09-2012 19:28:34 |
Infocatcher Ураааа!!! Работает супер! Засунул иконку точно туда, куда мне надо! На почётное место слева от NoScript Вот, может кому-то пригодятся классы некоторых элементов: Сначала лазил по исходникам расширений в поисках названий классов иконок. Потом открыл для себя DOM-инспектор! Там можно сразу элементарно найти название нужного класса. Для insertAfter нужно указывать название класса statusbarpanel для соответствующей иконки. Считаю, что можно оформлять 0.2.0pre11 P.S. Ещё бы настроечку, чтобы при наведении курсора на иконку он превращался в палец, как у NoScript и некоторых других расширений |
Infocatcher > 06-09-2012 22:21:36 |
А у меня Attributes Inspector есть |
Infocatcher > 08-09-2012 00:30:20 |
Cookies Permissions 0.2.0pre11 (2012-09-08) |
Infocatcher > 05-12-2012 23:29:06 |
Cookies Permissions 0.2.0pre12 (2012-12-05) Cookies Permissions 0.1.10.1 (2012-12-05) |
Infocatcher > 12-12-2012 20:23:48 |
Экспериментальное: Используется только API, так что добавленные за время действия разрешения cookies никуда сами по себе не исчезнут. |
Infocatcher > 03-03-2013 23:42:41 |
Cookies Permissions 0.2.0 (2013-03-02) |
Raf-9600 > 24-03-2013 16:28:50 |
Вот только что перешел на эту версию из древней, от 2011 года. Перечень того, что раньше больше нравилось: |
Infocatcher > 24-03-2013 16:51:02 |
Raf-9600 пишет
Они и сейчас разные, но дополнительно отображается состояние по умолчанию полупрозрачным значком. – сменить «true» на «false». Raf-9600 пишет
Ммм... не было, вроде, такого. |
Raf-9600 > 24-03-2013 17:10:35 |
Infocatcher пишет
Было!!! Я тысщю раз пользовался этой кнопкой! Хотя возможно это была не конкретно твоя, а чья-то модификация, этого уже не помню... Infocatcher пишет
Хмм... Если честно, то на той картинке ссылку на которую дал, иконки "Разрешить" и "По умолчанию разрешить" практически идентичны. Кстати, как задать чтобы по умолчанию куки были временно разрешены? |
Infocatcher > 24-03-2013 18:01:19 |
Raf-9600 пишет
На такие случаи надо делать резервные копии. Raf-9600 пишет
Да я не спорю. (Что-то я не поспеваю за меняющимся текстом. Править лень. ) Raf-9600 пишет
Взять отсюда исходник или готовую картинку с иконками, отредактировать, сохранить в PNG, закодировать в base64 и вставить сюда: Raf-9600 пишет
Ну, не знаю. Или что-то все-таки не срабатывает, или монитор такой. Raf-9600 пишет
Настройки – Приватность – Firefox: будет использовать ваши настройки хранения истории |
Raf-9600 > 24-03-2013 18:23:10 |
Infocatcher пишет
Скопипастил в "инициализацию", потом кликнул ПКМ по кнопке и браузер "испортился" - пришлось перезапускать =\ Infocatcher пишет
Но там есть только либо хранить, либо не хранить, либо хранить до закрытия, а пункта "хранить определённое время" - нет. Вот прошлая кнопка как рас по умолчанию временно хранила. Infocatcher пишет
Вот Выделить код Код:// http://infocatcher.ucoz.net/js/cb/cookiesPermissions.js // Cookies Permissions button for Custom Buttons // (code for "initialization" section) // (c) Infocatcher 2010-2011 // version 0.1.10 - 2011-07-13 //= Settings begin this.options = { removeUnprotectedCookiesInterval: 30*60*1000, // -1 for disable useBaseDomain: false // Use google.com instead of www.google.com }; this._images = { // Used Fugue and Diagona icons (http://p.yusukekamiyamane.com/) default: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABTVBMVEW2XQONRwG6XwSJRQGEQwC+YQS8YAXbnVu2XQO+YQSlaCqJRQGxWwPIgTfTij+MRgGNRwG3XgStbCyTSgGEQwCHRAC/YgS7gEa6XwSDQgDruH6CQgCsVwO/YgSCQgClVALKlF6YTQKfUAK/YgTao2rPl1/zyJPMgDPltIC/YgTeq3a4XgSuZyLMlFyRSQHns3fbp3OCQgDZpnLir3visHxFIwFHJAH0ypfpuofwxJHqvInltYKATSTXlE/frXrTk1H40J3erHn2zZq8dzDisX7tvIPxxJH816Ten1rrt3rsv4yseVHgr3zrvInvw5Dzypd7TCb1zZrDoG3zx5PyyJX81qPcp27vwY3dqXZxOByAVivIhkPYnWHalkzXlVDyxpLmtoPdn13js4Dnt4KEXi/50p/hr3yka0jhp2q7kWP+26jbp3P3z5y5jWHuwY6VLnI4AAAAN3RSTlMAAAAAAAB0zgkJ2BhDurOcDHjRUQygPeIRWOOffoXAn/GOpW7o7fnz+gD6tPr60fT7APz8+wAAOKgm0AAAAOBJREFUeF5Fy8V2wzAUANHnJDWHmRnKXMl2mJlTZub/X1ayF13MZs65AKY1kuBLR6Npn2ACYwRYWyiXC9nYgDF4J4dWn/MV4pw8Heuyddx5Ri/Vztgq634zf9PtnSnKxywT0f3u4q71UCr20fdG/N+/3z6py70UUF/VfeV6gLNJiGRm9UuF+tOrUdnlhnjh53fSnxJ/3qj57Q5IHSEV4zZWl19boldiIJnF+ELTtAHe3gl6zAy4XeX7UbP5SP2+hQyH3V8bvr4NqWfoYCSvmDg4TFBvDLMnGI7FwsSTcXzyBxn2Ki7PT5A9AAAAAElFTkSuQmCC", deny: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABoVBMVEW2XQO6XwTMIgC+YQS/YgS6XwS3XgS2XQPbnVvIgTexWwPTij+8YAXzyJO/YgSDQgCCQgC/YgSEQwCTSgHao2qsVwOfUAKNRwGMRgGHRAClVAKNRwGYTQK/YgSCQgDruH6+YQTmek7bp3Peq3bns3fRVCTltIDuUi/isHzPl1+4XgTMgDOtbCz////rSynbNhS7gEbtTizzVjTVLgyJRQGlaCrKlF7ZpnLir3vNWy/QJwXQJwWJRQGvLwDLIwDMIgDMIgD0ypf/ZkTMIgDpuofwxJHdORfuTy3qSijhPhziPx340J350p/sv4z3z5zuwY71zZrpSSf816TqvIn5f1i5jWHvw5D81qPyyJX2Wjjrt3pxOBzltYKEXi/7YT+seVHDoG3vwY3alkz+26jfrXrmtoPrvInisX7dWjPzypfIhkP6a0jzx5PyxpLlYz3erHngr3zhr3y1VjPVLgzrVjTdqXbyn3LYMxG7kWPkYjv/d1XOUC2ATST6l234p3rQJwXbNRP2eU/wUzHXlE/2zZqAViv3pnntvIPdn13en1rcp271qEeUAAAAQXRSTlMAAAAJPRF4Cc66Q7N0+W5YwIUMUeh+pQycoJ8AjgCf4wD2+/r0jvq4++2089EAurXiuvxZGNjx/Pz4ggAAkri1WY/ZPZMAAAD5SURBVHhePYtTkwNBGAC/ZHdj2znaNmZmGTtH27aNX32bpOoe+qG7qgEUVTIUbbJaTTSlgEpgDPqw0RjWG5hKUKs0qLi2XEQalboUgjptIbOAYtFMQasr/y2tqz+zKxx3nXI4y3/d/sHX99t9HCVqff//4wvGuc8aF5T+KIo9vPKE8IvVAXA6Uu8f3KVwdfO7i/dm6sHXkE/uxO+kw8QFviVSI7iaUJZl01J2WnavlIZAM8vOzUfEJdnNNjEC9rb1jc2tbVF2e3uH2AluT9fR8cnp2TnxuLt7+F7w93n7BwaHhp8EjIXnkVHwj9nMIYslND5ByOSUUvkHLXQ4wgD5LHQAAAAASUVORK5CYII=", allowSession: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABlVBMVEW2XQO6XwSNRwG2XQO+YQS8YAXTij/bnVu6XwS/YgSxWwPIgTe3XgSYTQK/YgSCQgDao2qsVwO/YgTzyJPruH5mZmalVAK+YQSCQgCfUALMgDPns3eRdlvltIC4XgSwlnyKiYjisHzeq3bPl1+/YgSTSgGtbCx1dXWMRgG7gEZvb2+JRQGHRAClaCrKlF7ZpnLir3uYfmTbp3NqampqamqJRQGEQwCDQgBxWD5mZWRmZmZmZmaNRwH0ypdmZmb3+//l8v/x+P/r9f/wxJGZmZn8/f/puof81qO5jWHuwY7vw5C8xMzd7v+IjI/Q3uv1zZqtra3sv4yoqKn////50p/t7vCorbL816SEiIv40J2zvch8fHyDg4PY2NjP0dTalkyVhnjen1rrt3qlrLLg8P/Ky8yunYu7kWPerHngr3zhr3ySbFbtvIPdn13XlE+xo5TqvIn3z5yAVivvwY3UuZjOspFxOBz+26jTuJbltYLzx5PDoG3yxpLzypfGspmGeG3isX72zZqEXi/frXrmtoPrvImATSRVZpH6AAAAPXRSTlMAAAAJCXSzzhE9Q7p4jm7A6H6F+eMAnwCfpfP0jvq09rj7+u0AUdG1nOJZGKDY8fz8+PuCAAAMWJK4tVkMLKHsBAAAAPdJREFUeF49i+OPA1EcAH/tbm1ee7ZtvffWtc2zbRt/923b5CaZL5MMgKJJltaZ7XazjlZAI2hVaqfD4VSrtI1AGTXId/fkQxojVQu9ekMw94nShVzQoK//7c1rG5tXPL8Xs9rqf8vj8/HJ6W8CXXS7///rXUE4u5/2Qu0voPRrvJJKVeIdJrBZYx+X/E0yI+6IYibZCu42f+Al8VYlRCCEVDvB24XOJanMsqwgy5bB1CNJtw8ljuMwxlmuBH39X98/7+shZouRCQ3A6uDQ/sHhUSS6LRONDINyZHRsfGJyKl8Mh4v5mVlQzs0veCwWz+ISxssrLtcfnUo4lyXB664AAAAASUVORK5CYII=", allow: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABfVBMVEW2XQNVu1W6XwRbwVvIgTfbnVu/YgSNRwGxWwO3XgS6XwS8YAXTij++YQS2XQOCQgDKlF6/YgSsVwPzyJOlVALao2q+YQQRdxG/YgSCQgCDQgDruH64XgTMgDPns3fltICfUALeq3a/YgSYTQLPl18rkSuTSgGtbCyI7ogjiSONRwGMRgG7gEYbgRvisHyJRQGHRAClaCrZpnLir3vbp3NohyoVexWJRQGEQwD0ypfpuoeI7oj81qNv1G9kymTwxJErkSs6oDoymDJ533lEqkRApkDyyJVVu1UbgRvvw5D816QjiSPsv4z3z5z1zZrDoG3+26jYnWHrvInqvIn40J0VexURdxHfrXrzx5PyxpLTk1Halkzen1risX7rt3rvwY350p/zypeseVHdqXa8dzDerHngr3zhr3yka0jdn13XlE+ATSSC6ILIhkPnt4Lcp27bp3PXlVC7kWPhp2rltYLtvINbwVtxOBy5jWHuwY6EXi/mtoP2zZqAViuYtWjcX2nxAAAAOXRSTlMAAAAAus49AEN4EXSzCQnA8YV++Z/oAABun1jjtPP0+qX6AI7tAFHRAAAMnOIA+xig2Pz8+9IAAAzfXL77AAAA80lEQVR4XkXLVXODQBiF4Y8EEuLeRurubruLE3dP1d3d5bcXyEXPzLl5Zx4AU4d2lyXs84UtLhO0g93hjAUCMafD3g5uG4O4colDjM2thwGWzmQ/0X49m6FZw3d1b23v7oniYzHkN3zP+sbLxeVVHhX6g//+6eG2llxaBt3XDb9ZOcTxOPhDxe8f8VfzdzfVBElAsPf94yAvy6hwdCyTaxn6ZlANY4UoyXuFqKoCg0MYvz1LPJEkwvPSMIyMtr6qOzlBIEQQcmPjMDE5dXJ6dp5+1ZY2m6fBOjs3711Y9DZSqQZFUStgXV2LRjyeSLTZ7NT3B27ZNHT6lMZzAAAAAElFTkSuQmCC", notAvailable: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABL1BMVEVdXV1HR0dfX19FRUVhYWFCQkJgYGCbm5thYWFCQkJeXl5aWlqAgICAgIBCQkJdXV1oaGhERERfX19iYmJGRkaJiYlsbGxKSkpFRUVHR0diYmJQUFCXl5dBQUGUlJRiYmLExMRNTU2ioqJBQUG1tbVXV1dUVFSzs7Oqqqqvr6+np6doaGheXl6AgICUlJRJSUmwsLBBQUFiYmKmpqavr68jIyMkJCTGxsa6urq4uLjR0dG0tLTAwMCdnZ3BwcHExMSwsLDJycm9vb2tra21tbWsrKyysrLNzc2/v7/MzMyurq6mpqbCwsJ9fX2UlJR2dnZERERWVlaPj4+NjY2GhoZaWlqnp6eampqSkpJQUFC5ubmTk5Ovr690dHTV1dWzs7PDw8OlpaVRUVHLy8upqalgbY2aAAAAN3RSTlMAAAAAAAB0zgkMeEO64lgJ2KARPZyz0VEYDG6l7cDxhfmO6J/jfp/6+vv7+rTz+tH0AAD8/AAA+SwWFgAAANxJREFUeF5Fy0VyxDAUANHvmcQ4zMwcRklGGMYwM9z/DJHsRRa96aoHENiiiclCtVpIigHwR4JPt2q1VppP+CMqC0h9f1CRIEfZOFZCunqHpnNVDyme393bGB8z07x2Gm3PH1qfz8bLt4t+ep1/v9yMsDUoAvNzzz8aa1KqQ7vhOFcm81+3eJjJQqd7M0PuE/W/F+NwKg/FPsKErAi27ndi8RwH9RIhl5qmrcn+QUQKcpDNDEfYtifMH23TkU+Fx4vXtwXzHBtcLh6rnJxWmPdHUIo0y+Um9XScnf8BesYnYJJTobwAAAAASUVORK5CYII=", unknown: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABd1BMVEW2XQO6XwSNRwG/YgTbnVu2XQPIgTexWwO+YQS3XgTTij+6XwS8YAXzyJO/YgS/YgSsVwPruH6fUAK/YgSlVAKMRgGtbCzao2qNRwGYTQLPl1+TSgG+YQTeq3bisHzns3fCjQDHlAC4XgTMgDPAjQDltIC5hgC7gEaJRQGHRAClaCrKlF7ZpnLbp3OJRQGEQwCDQgCCQgCCQgCZYACqdwD0ypfMmQDpuofwxJEzMzPsv4z/2DX/0RbqzmSzgAD/4Vvjv0H/+sf1zZrVogD40J3ltYLcrxverHngr3z816T//93AjQD/86i/jADZpgDdqgD/6oLvw5D/zADOmwD81qP2zZquewBxOBzdn13Zpz3tvIPfqTXImTHmtoPrvInisX7Nmz/Yp0PyxpLyyCjMrzTzx5PvwY3zypd7TCbhr3yATSTfrXr3z5zjs0TXlE/rt3ren1ruwY7yyJX50p+EXi/qvInxxJHalky7kWO5jWH+26iAVivDoG1a7qJEAAAANXRSTlMAAAA9zgm6Qwl4sxF0+YVufuOlAJ+c0egMju1RAPr79IwAtPMA+oDiGKDY8fz7AAxYn8DggGfepWIAAADwSURBVHheRctjcwNhFIbhk+zGtmrbL9axrdq23R/fbNKZnpnnfLhnLgBNX2dGxmG3OxijBnrBYjW7bDaX2WrpBZ2JRc2vnyZiTTo1eAz6Wu4FPSdzNb2h60dG3x/uzyj9iAecXT94erS1cXfFo5t+77/frlRun+bdoPqk6sv5fJmEQ+AMxFvflNIdKRaTNv0R8I5/Pp7zF3yjiLliwxcE9wB6JeTtMFrFXDU6NAyhMCHrqVRBUTCnKIUxiPivd/f2D9KCcHwiCOkJCPomM9lLWRRFzHWeDNqp6ZnZuXb979qgXVhcWl5ZlUs4kcAlee0XlMM0PA1YpgYAAAAASUVORK5CYII=" }; this._strings = { en: { // First entry used as default defaultTooltiptext: "Cookies: Default", denyTooltiptext: "Cookies: Deny", allowSessionTooltiptext: "Cookies: Allow Session", allowTooltiptext: "Cookies: Allow", notAvailableTooltiptext: "Cookies: n/a", unknownTooltiptext: "Cookies: ???", defaultLabel: "Default", defaultAccesskey: "f", denyLabel: "Deny", denyAccesskey: "D", allowSessionLabel: "Allow Session", allowSessionAccesskey: "S", allowLabel: "Allow", allowAccesskey: "A", showPermissionsLabel: "Show Exceptions…", showPermissionsAccesskey: "x", showCookiesLabel: "Show Cookies…", showCookiesAccesskey: "h", removeUnprotectedCookiesLabel: "Remove Unprotected Cookies", removeUnprotectedCookiesAccesskey: "R", buttonMenu: "Button menu", buttonMenuAccesskey: "m" }, ru: { defaultTooltiptext: "Cookies: По умолчанию", denyTooltiptext: "Cookies: Блокировать", allowSessionTooltiptext: "Cookies: Разрешить на сессию", allowTooltiptext: "Cookies: Разрешить", notAvailableTooltiptext: "Cookies: н/д", unknownTooltiptext: "Cookies: ???", defaultLabel: "По умолчанию", defaultAccesskey: "у", denyLabel: "Блокировать", denyAccesskey: "Б", allowSessionLabel: "Разрешить на сессию", allowSessionAccesskey: "с", allowLabel: "Разрешить", allowAccesskey: "Р", showPermissionsLabel: "Показать исключения…", showPermissionsAccesskey: "и", showCookiesLabel: "Показать cookies…", showCookiesAccesskey: "П", removeUnprotectedCookiesLabel: "Удалить незащищённые cookies", removeUnprotectedCookiesAccesskey: "д", buttonMenu: "Меню кнопки", buttonMenuAccesskey: "М" } }; //= Settings end this.hasModifier = function(e) { return e.ctrlKey || e.shiftKey || e.altKey || e.metaKey; }; this.onclick = function(e) { if(e.target != this) return; var but = e.button; var hasModifier = this.hasModifier(e); if(but == 0 && !hasModifier) { this.togglePermission(this.cp.ACCESS_ALLOW); // Allow use "command" section only from hotkey: e.preventDefault(); e.stopPropagation(); } else if(but == 1 || but == 0 && hasModifier) this.openCookiesPermissions(); }; if(!this.hasOwnProperty("defaultContextId")) this.defaultContextId = this.getAttribute("context") || "custombuttons-contextpopup"; this.oncontextmenu = function(e) { if(e.target != this) return; this.setAttribute( "context", this.hasModifier(e) ? this.defaultContextId : this._mpId ); }; var s = this._strings; for(var p in s) if(s.hasOwnProperty(p)) { this._defaultLocale = this._locale = p; break; } var currentLocale = Application.prefs.getValue("general.useragent.locale", "en"); if(s.hasOwnProperty(currentLocale)) this._locale = currentLocale; // e.g. "ru-RU" else if(/^([a-z]+)-/.test(currentLocale) && s.hasOwnProperty(RegExp.$1)) this._locale = RegExp.$1; // e.g. "ru" this._localeStrings = s[this._locale]; this._defaultStrings = s[this._defaultLocale]; delete this._strings; this._string = function(sid) { return this._localeStrings[sid] || this._defaultStrings[sid] || "(" + sid + ")"; }; this.permissionType = "cookie"; var cp = this.cp = Components.interfaces.nsICookiePermission; this.PERMISSIONS_NOT_SUPPORTED = -1; var parseFromXML = function(xml) { var pp = XML.prettyPrinting; XML.prettyPrinting = false; var elt = new DOMParser().parseFromString(xml.toXMLString(), "application/xml").documentElement; XML.prettyPrinting = pp; return elt; }; this._mpId = this.id + "-context"; var mp = this._mp = this.appendChild(parseFromXML( <menupopup xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" id={this._mpId} onpopupshowing=" if(event.target != this) return true; document.popupNode = this.parentNode; return this.parentNode.updMenu();" onpopuphidden="if(event.target == this) document.popupNode = null;"> <menuitem type="radio" cb_permission={cp.ACCESS_DEFAULT} oncommand="this.parentNode.parentNode.removePermission();" label={this._string("defaultLabel")} accesskey={this._string("defaultAccesskey")} /> <menuseparator /> <menuitem type="radio" cb_permission={cp.ACCESS_DENY} oncommand="this.parentNode.parentNode.addPermission(Components.interfaces.nsICookiePermission.ACCESS_DENY);" label={this._string("denyLabel")} accesskey={this._string("denyAccesskey")} /> <menuitem type="radio" cb_permission={cp.ACCESS_SESSION} oncommand="this.parentNode.parentNode.addPermission(Components.interfaces.nsICookiePermission.ACCESS_SESSION);" label={this._string("allowSessionLabel")} accesskey={this._string("allowSessionAccesskey")} /> <menuitem type="radio" cb_permission={cp.ACCESS_ALLOW} oncommand="this.parentNode.parentNode.addPermission(Components.interfaces.nsICookiePermission.ACCESS_ALLOW);" label={this._string("allowLabel")} accesskey={this._string("allowAccesskey")} /> <menuseparator /> <menuitem oncommand="this.parentNode.parentNode.openCookiesPermissions();" label={this._string("showPermissionsLabel")} accesskey={this._string("showPermissionsAccesskey")} /> <menuitem oncommand="this.parentNode.parentNode.showCookies();" label={this._string("showCookiesLabel")} accesskey={this._string("showCookiesAccesskey")} /> <menuseparator /> <menuitem oncommand="this.parentNode.parentNode.removeUnprotectedCookies();" label={this._string("removeUnprotectedCookiesLabel")} accesskey={this._string("removeUnprotectedCookiesAccesskey")} /> <menuseparator /> <menu label={this._string("buttonMenu")} accesskey={this._string("buttonMenuAccesskey")} /> </menupopup> )); var cbPopup = document.getElementById(this.defaultContextId); if(!cbPopup) Components.utils.reportError("[Custom Buttons :: Cookies Permissions]: cb menu not found"); else { cbPopup = cbPopup.cloneNode(true); let id = "-" + this.id.match(/\d*$/)[0] + "-cloned"; cbPopup.id += id; Array.slice(cbPopup.getElementsByAttribute("id", "*")).forEach(function(node) { node.id += id; }); let menu = mp.lastChild; menu.appendChild(cbPopup); } this.__defineGetter__("pm", function() { delete this.pm; return this.pm = Components.classes["@mozilla.org/permissionmanager;1"] .getService(Components.interfaces.nsIPermissionManager); }); this.__defineGetter__("io", function() { delete this.io; return this.io = Components.classes["@mozilla.org/network/io-service;1"] .getService(Components.interfaces.nsIIOService); }); this.__defineGetter__("oSvc", function() { return Components.classes["@mozilla.org/observer-service;1"] .getService(Components.interfaces.nsIObserverService); }); this.__defineGetter__("wm", function() { return Components.classes["@mozilla.org/appshell/window-mediator;1"] .getService(Components.interfaces.nsIWindowMediator); }); this.__defineGetter__("tld", function() { delete this.tld; return this.tld = Components.classes["@mozilla.org/network/effective-tld-service;1"] .getService(Components.interfaces.nsIEffectiveTLDService); }); this.__defineGetter__("currentHost", function() { var loc = content.location; if(["view-source:", "about:", "chrome:", "resource:", "javascript:", "data:"].indexOf(loc.protocol) == -1) try { return loc.hostname; } catch(e) { } return ""; }); this.__defineGetter__("currentBaseDomain", function() { var host = this.currentHost; if(host) try { return this.tld.getBaseDomainFromHost(host); } catch(e) { } return host; }); this.__defineGetter__("isSeaMonkey", function() { return Components.classes["@mozilla.org/xre/app-info;1"] .getService(Components.interfaces.nsIXULAppInfo) .name == "SeaMonkey"; }); this.getURI = function(host) { if(host.indexOf(":") != -1 && /^[:\da-f.]+$/.test(host)) // IPv6 host = "[" + host + "]"; try { return this.io.newURI("http://" + host, null, null); } catch(e) { Components.utils.reportError("[Custom Buttons :: Cookies Permissions] Invalid host: \"" + host + "\""); throw e; } }; this.showMenu = function(e, isContext, mp) { document.popupNode = this.ownerDocument.popupNode = this; if(!mp) mp = this._mp; if("openPopupAtScreen" in mp) mp.openPopupAtScreen(e.screenX, e.screenY, isContext); else mp.showPopup(this, e.screenX, e.screenY, isContext ? "context" : "popup", null, null); }; this.updMenu = function() { var permission = this.getPermission(); //if(permission == this.PERMISSIONS_NOT_SUPPORTED) // return false; var noPermissions = permission == this.PERMISSIONS_NOT_SUPPORTED; Array.forEach( this._mp.getElementsByAttribute("cb_permission", "*"), function(mi) { mi.hidden = noPermissions; var ns = mi.nextSibling; if(ns && ns.localName == "menuseparator") ns.hidden = noPermissions; } ); var mi = this._mp.getElementsByAttribute("cb_permission", permission); mi.length && mi[0].setAttribute("checked", "true"); return true; }; this.openCookiesPermissions = function() { if(this.isSeaMonkey) { this.openCookiesPermissionsSM(); return; } // chrome://browser/content/preferences/privacy.js // gPrivacyPane.showCookieExceptions() var bundle = Components.classes["@mozilla.org/intl/stringbundle;1"] .getService(Components.interfaces.nsIStringBundleService) .createBundle("chrome://browser/locale/preferences/preferences.properties"); var params = { blockVisible : true, sessionVisible : true, allowVisible : true, prefilledHost : this.currentHost, permissionType : this.permissionType, windowTitle : bundle.GetStringFromName("cookiepermissionstitle"), introText : bundle.GetStringFromName("cookiepermissionstext") }; var win = this.wm.getMostRecentWindow("Browser:Permissions"); if(win) win.focus(); else win = window.openDialog("chrome://browser/content/preferences/permissions.xul", "_blank", "", params); this.tweakWindow(win); }; this.openCookiesPermissionsSM = function() { var host = this.currentHost; var win = this.wm.getMostRecentWindow("mozilla:cookieviewer"); var select = function select(e) { win.removeEventListener("load", select, false); var doc = win.document; doc.getElementById("tabbox").selectedTab = doc.getElementById("permissionsTab"); var tb = doc.getElementById("cookie-site"); tb.value = host; win.buttonEnabling(tb); }; if(win) { win.focus(); select(); } else { win = window.openDialog("chrome://communicator/content/permissions/cookieViewer.xul", "_blank", ""); win.addEventListener("load", select, false); } }; this.tweakWindow = function(win) { var keypressHandler = function(e) { if(e.keyCode == e.DOM_VK_ESCAPE) win.close(); }; win.addEventListener("keypress", keypressHandler, false); win.addEventListener("unload", function destroy(e) { var win = e.target.defaultView; if(win !== win.top || e.target.location.protocol != "chrome:") return; win.removeEventListener(e.type, destroy, false); win.removeEventListener("keydown", keypressHandler, false); }, false); }; this.addPermission = function(capability) { // capability: // this.cp.ACCESS_DENY // this.cp.ACCESS_SESSION // this.cp.ACCESS_ALLOW var host = this.options.useBaseDomain ? this.currentBaseDomain : this.currentHost; if(!host) return; var pm = this.pm; var enumerator = pm.enumerator; while(enumerator.hasMoreElements()) { var permission = enumerator.getNext() .QueryInterface(Components.interfaces.nsIPermission); if(permission.type == this.permissionType && permission.host == host && permission.capability == capability) return; } pm.add(this.getURI(host), this.permissionType, capability); }; this.removePermission = function() { var host = this.currentHost; if(!host) return; var uri = this.getURI(host); var permission = this.pm.testPermission(uri, this.permissionType); this.pm.remove(host, this.permissionType); while(this.pm.testPermission(uri, this.permissionType) == permission) { var parentHost = host.replace(/^[^.]*\./, ""); if(parentHost == host) break; host = parentHost; this.pm.remove(host, this.permissionType); } }; this.togglePermission = function(capability) { var permission = this.getPermission(); if(permission == this.PERMISSIONS_NOT_SUPPORTED) return; if(permission == capability) this.removePermission(); else this.addPermission(capability); }; this.getPermission = function() { var host = this.currentHost; return host ? this.pm.testPermission(this.getURI(host), this.permissionType) : this.PERMISSIONS_NOT_SUPPORTED; }; this.showCookies = function() { if(this.isSeaMonkey) { this.showCookiesSM(); return; } var win = this.wm.getMostRecentWindow("Browser:Cookies"); var host = this.currentHost; var setFilter = function setFilter(e) { win.removeEventListener("load", setFilter, false); var doc = win.document; var tb = doc.getElementById("filter"); if(!tb) return; tb.value = host; tb.doCommand(); }; if(win) { win.focus(); host && setFilter(); } else { win = window.openDialog("chrome://browser/content/preferences/cookies.xul", "_blank", ""); host && win.addEventListener("load", setFilter, false); } this.tweakWindow(win); }; this.showCookiesSM = function() { var host = this.currentHost; var win = this.wm.getMostRecentWindow("mozilla:cookieviewer"); var setFilter = function setFilter(e) { win.removeEventListener("load", setFilter, false); var doc = win.document; doc.getElementById("tabbox").selectedTab = doc.getElementById("cookiesTab"); var tb = doc.getElementById("filter"); tb.value = host; tb.doCommand(); }; if(win) { win.focus(); setFilter(); } else { win = window.openDialog("chrome://communicator/content/permissions/cookieViewer.xul", "_blank", ""); win.addEventListener("load", setFilter, false); } }; this.removeUnprotectedCookies = function() { var cm = Components.classes["@mozilla.org/cookiemanager;1"] .getService(Components.interfaces.nsICookieManager); var cp = this.cp; var pm = this.pm; var remove = [ cp.ACCESS_DEFAULT, /*cp.ACCESS_ALLOW,*/ cp.ACCESS_DENY, cp.ACCESS_SESSION ]; var cookies = cm.enumerator; while(cookies.hasMoreElements()) { var cookie = cookies.getNext() .QueryInterface(Components.interfaces.nsICookie); var host = cookie.host; var uri = this.getURI(host); if(remove.indexOf(pm.testPermission(uri, this.permissionType)) != -1) cm.remove(host, cookie.name, cookie.path, false); } }; this.updButtonState = function() { var cp = this.cp; var permission = this.getPermission(); this.disabled = permission == this.PERMISSIONS_NOT_SUPPORTED; switch(permission) { case this.PERMISSIONS_NOT_SUPPORTED: this.image = this._images.notAvailable || this._images.default; this.tooltipText = this._string("notAvailableTooltiptext"); break; case cp.ACCESS_DEFAULT: this.image = this._images.default; this.tooltipText = this._string("defaultTooltiptext"); break; case cp.ACCESS_ALLOW: this.image = this._images.allow || this._images.default; this.tooltipText = this._string("allowTooltiptext"); break; case cp.ACCESS_DENY: this.image = this._images.deny || this._images.default; this.tooltipText = this._string("denyTooltiptext"); break; case cp.ACCESS_SESSION: this.image = this._images.allowSession || this._images.default; this.tooltipText = this._string("allowSessionTooltiptext"); break; default: this.image = this._images.unknown || this._images.default; this.tooltipText = this._string("unknownTooltiptext"); } }; var dummy = function() {}; this.progressListener = { button: this, onStateChange: dummy, onProgressChange: dummy, onLocationChange: function(aWebProgress, aRequest, aLocation) { this.button.updButtonState(); }, onStatusChange: dummy, onSecurityChange: dummy }; gBrowser.addProgressListener(this.progressListener/*, Components.interfaces.nsIWebProgress.NOTIFY_LOCATION*/); this.permissionsObserver = { button: this, observe: function(subject, topic, data) { if(topic != "perm-changed") return; var permission = subject.QueryInterface(Components.interfaces.nsIPermission); if(permission.type == this.button.permissionType /*&& permission.host == this.button.currentHost*/) this.button.updButtonState(); } }; this.oSvc.addObserver(this.permissionsObserver, "perm-changed", false); if(this.options.removeUnprotectedCookiesInterval > 0) { setInterval(function(_this) { _this.removeUnprotectedCookies(); }, this.options.removeUnprotectedCookiesInterval, this); } this.updButtonState(); this.onDestroy = function() { gBrowser.removeProgressListener(this.progressListener); this.oSvc.removeObserver(this.permissionsObserver); }; |
Infocatcher > 24-03-2013 18:36:42 |
Raf-9600 пишет
Прошлая кнопка не могла ничего делать сверх настроек Firefox. Raf-9600 пишет
Это оригинальная кнопка. И у меня она только переключает разрешить/по умолчанию. 24-03-2013 18:38:20 Raf-9600 пишет
Странно. Копировать, кстати, лучше по ссылке «Raw» – там отступы не ломаются. |
Raf-9600 > 24-03-2013 20:28:40 |
Infocatcher пишет
Помогло. Infocatcher пишет
У меня галлюцинации походу |
villa7 > 14-05-2013 14:23:39 |
На 21 стал удалять защищенные куки при нажатии на "удалить незащищенные куки". |
Infocatcher > 14-05-2013 15:39:31 |
villa7 пишет
А так? |
villa7 > 14-05-2013 21:08:33 |
Infocatcher пишет
Так работает, спасибо. |
Infocatcher > 14-05-2013 21:29:03 |
villa7 пишет
Это хорошо. Cookies Permissions 0.2.0.1 (2013-05-14) (это версия 0.2.0 - 2013-03-02 + это исправление) |
Kiril__777 > 14-07-2013 16:12:41 |
Замечательная кнопка, спасибо |
trionZabilParol > 14-07-2013 16:16:29 |
Лучше бы вы ее в дополнение переделали. И популярность и баг репорты. |
pohunohi > 09-01-2014 21:53:45 |
Где в коде выставить useBaseDomain в true чтобы убрать www. ? |
Infocatcher > 10-01-2014 00:18:22 |
pohunohi пишет
Откуда убрать?
|
pohunohi > 10-01-2014 13:02:11 |
Infocatcher пишет
При добавлении в исключения. В исключения добавляется как www.site.com, а в куках отображается как site.com. И при removeAllUnprotectedCookies по таймеру они удаляются. Infocatcher пишет
Тогда в исключения добавляется только домен. А хочется чтобы просто убиралось www. |
Infocatcher > 12-01-2014 22:13:50 |
(осторожно, это тестовые версии!) Cookies Permissions 0.2.1pre2 (2014-01-12) (и для истории) |
pohunohi > 12-01-2014 23:14:39 |
Infocatcher пишет
Спасибо. |
MySh > 21-01-2014 00:56:33 |
Infocatcher |
Infocatcher > 21-01-2014 10:09:57 |
MySh скрытый текст Выделить код Код:var options = { removeUnprotectedCookiesInterval: -1, // Periodically remove unprotected cookies (leave only cookies with "Allow" permission) // Time in milliseconds like 30*60*1000 (30 minutes) or -1 to disable removeAllUnprotectedCookies: false, // true - periodically ("removeUnprotectedCookiesInterval" option) remove all unprotected cookies // false - or exclude cookies from opened sites ... useBaseDomain: { // If set to true, will use short domain like google.com instead of www.google.com ... preserveCurrentSitesCookies: true // For "removeAllUnprotectedCookies: false" } |
MySh > 23-01-2014 00:11:57 |
Infocatcher Смущает только то, что эта настройка в коде прописана. Это значит, что при каждом обновлении кнопки придётся снова искать это место в коде и исправлять вручную? |
Infocatcher > 23-01-2014 00:47:11 |
MySh пишет
Да, с заданной периодичностью перебираются вообще все cookies и незащищенные удаляются. MySh пишет
Да, придется... MySh пишет
Я все надеюсь, что появится какой-нибудь простой API со стороны Custom Buttons. Иначе в каждой кнопке надо дублировать один и тот же код и обрабатывать изменения настроек. Или в самом простом варианте можно считывать настройки в текущем виде через JSON, но редактировать такое будет сомнительным удовольствием (вдобавок будут проблемы, если понадобится что-то поменять в настройках по умолчанию). 23-01-2014 00:55:25 |
MySh > 26-01-2014 00:17:30 |
Infocatcher
ОК, ладно. В конце концов, поменять один параметр не так и сложно. Пользуясь случаем, хочу ещё раз сказать спасибо за эту замечательную кнопку и отдельное спасибо за поддержку SeaMonkey! |
Infocatcher > 26-01-2014 01:04:18 |
MySh пишет
Я на днях снова попробовал сделать с обработкой настроек из about:config... это где-то по 100 дополнительных строк на каждую кнопку. Опять же, если это все как-то частично встраивать в Custom Buttons, то нужно предусмотреть задание подписей для настроек и какие-нибудь ограничения на вводимые данные. Пояснения к данным, опять же, нужны. Это если выводить настройки отдельной вкладкой в редакторе кнопки. А если не выводить, то или пользоваться неудобно, или надо делать интерфейс настроек из самой кнопки... MySh пишет
Пожалуйста. |
Три рубля > 21-07-2015 17:06:51 |
Сайт Tumblr добавляется в исключения, как www.tumblr.com, из-за этого при переходе, например, на http://intellicat.tumblr.com/ куки не сохраняются. Сайт следует добавлять в исключения, как tumblr.com |
Infocatcher > 21-07-2015 19:50:55 |
Три рубля пишет
Можно открыть список исключений из меню или кликом средней кнопкой мыши по кнопке и добавить нужное исключение вручную. Выделить код Код:var options = { ... useBaseDomain: { // If set to true, will use short domain like google.com instead of www.google.com addPermission: false, // Add (and toggle) permission action В разрабатываемой версии добавлена специальная обработка для www.site.com, но суть та же: Выделить код Код:var options = { ... useBaseDomain: { // 0 - use full domain name: addons.mozilla.org, www.google.com // 1 - strip "www." prefix from full domain name: addons.mozilla.org, google.com // 2 - use top-level domains (TLDs): mozilla.org, google.com addPermission: 1, // Add (and toggle) permission action |
Три рубля > 03-09-2015 21:32:43 |
А как установить разрабатываемую версию с гитхаба? |
Coroner > 03-09-2015 22:06:00 |
Три рубля скрытый текст |
Infocatcher > 04-09-2015 00:36:02 |
Вообще говоря, там три разных версии:
предварительная версия в *.html: https://github.com/Infocatcher/Custom_B … ns.html#L5 (там или сохранить по ссылке Raw и открыть, или так скопировать) самая свежая разрабатываемая версия в *.js: https://github.com/Infocatcher/Custom_B … issions.js (эта уже ставится только вручную, нужно скопировать в код/инициализацию согласно описанию) Ну, и это не считая того, что можно вытянуть любую старую версию из истории правок. |
Три рубля > 04-09-2015 13:22:12 |
Спасибо! |
Infocatcher > 04-09-2015 20:36:39 |
Три рубля пишет
О какой настройке речь? |
voqabuhe > 05-09-2015 23:05:33 |
Infocatcher |
Infocatcher > 06-09-2015 01:38:03 |
voqabuhe пишет
https://bugzilla.mozilla.org/show_bug.cgi?id=1170200 |
voqabuhe > 06-09-2015 02:07:06 |
Infocatcher пишет
А где сама кнопка то, или чё с этим "распорками" делать? Куда их теперь все? |
Infocatcher > 06-09-2015 02:12:56 |
Кнопка пока что только в таком виде: А если прямо из предыдущей ссылки, то там у «Cookies_Permissions/cookiesPermissions.js» справа View, затем Raw. |
voqabuhe > 06-09-2015 12:15:24 |
Infocatcher |
Infocatcher > 09-09-2015 20:17:58 |
Поскольку разрешения для http:// и https:// в Firefox 42+ теперь различаются, понадобилось еще немного распорок: |
humnmind > 26-11-2015 21:30:04 |
Баг в разрабатываемой версии кнопки: если включить удаление незащищенных печенек (removeUnprotectedCookiesInterval), то при добавлении в исключения правила с одним протоколом, например https://forum.mozilla-russia.org, печеньки все равно удаляются. Если добавить в исключения оба протокола - https://forum.mozilla-russia.org и http://forum.mozilla-russia.org, то печеньки не удаляются. То бишь для каждого сайта надо добавлять оба правила, независимо от того по какому протоколу сайт доступен. |
Infocatcher > 26-11-2015 23:01:10 |
humnmind пишет
Вроде, подправил: https://github.com/Infocatcher/Custom_B … d1ed5f09ef |
humnmind > 26-11-2015 23:17:10 |
Infocatcher |
PetrN > 02-08-2016 11:34:29 |
Infocatcher пишет
Infocatcher не могу поправить код инициализации с Вашей правкой. Заменить строки . Пожалуйста выставьте прописанный код с правкой |
Infocatcher > 02-08-2016 15:17:28 |
PetrN |
PetrN > 02-08-2016 18:19:06 |
Infocatcher |
humnmind > 22-11-2016 16:58:26 |
Feature Request: добавить возможность временной приостановки удаления печенек как в расширении Self-Destructing Cookies (до ручного отключения приостановки или до перезапуска браузера). |
Infocatcher > 24-11-2016 22:04:44 |
humnmind пишет
Приделал галочку «Автоматически удалять незащищённые cookies»: Вот версия 0.2.1pre4 - 2016-11-24: https://github.com/Infocatcher/Custom_B … ermissions humnmind пишет
Пока что Custom Buttons все еще можно оживить на Nightly, у меня пока работает. |
villa7 > 24-11-2016 23:01:36 |
Infocatcher
Установил версию 0.2.1pre4 - 2016-11-24 пункт «Автоматически удалять незащищённые cookies» не появился, чистый профиль 50 , правда ОС ХР, или не важно? |
Infocatcher > 24-11-2016 23:31:35 |
villa7 Выделить код Код:var options = { removeUnprotectedCookiesInterval: -1, // Periodically remove unprotected cookies (leave only cookies with "Allow" permission) // Time in milliseconds like 30*60*1000 (30 minutes) or -1 to disable |
villa7 > 24-11-2016 23:39:34 |
Infocatcher |
humnmind > 24-11-2016 23:44:46 |
Infocatcher пишет
Годнота. Спасибо. Infocatcher пишет
А про сроки этого как раз новости свежие 1, 2. 24-11-2016 23:57:52 |
lokiju > 02-12-2016 22:29:33 |
Кому нетрудно, подскажите: какие должны быть настройки, чтобы кнопка копировала поведение по умолчанию Self-Destructing Cookies. Т.е. красная иконка для текущего сайта - удаление кукис после закрытия вкладки, если выбрана зелёная иконка никогда не удалять. Ридми читал, но уж очень лаконичное - не понял. Експериментировать опасаюсь. |
humnmind > 03-12-2016 00:11:04 |
lokiju |
lokiju > 03-12-2016 19:52:18 |
humnmind пишет
Удаляются открытые сайты, если они незащищённые |
Infocatcher > 03-12-2016 21:03:56 |
lokiju пишет
Не воспроизводится. |
humnmind > 03-12-2016 21:21:09 |
lokiju пишет
Смотри предыдущее сообщение от Infocatcher, и уточни еще - по таймеру удаляются или при закрытии браузера? |
manuk > 03-12-2016 21:27:29 |
Как должно работать "Удалить все незащищённые cookies"? Например, у меня в исключениях десяток сайтов. Я открыл пять сайтов, куки которых появились в списке. Закрыл все вкладки, кроме домашней (FastDial). Нажал "Удалить все незащищённые cookies". Куки сайтов, которых нет в исключениях не удалились. ЧЯДНТ? FF 48, XP SP3. Настройки CP: скрытый текст var options = { removeUnprotectedCookiesEnabled: true, // true - periodically remove unprotected cookies by default // false - don't remove by default removeUnprotectedCookiesInterval: 5000, // Periodically remove unprotected cookies (leave only cookies with "Allow" permission) // Time in milliseconds like 30*60*1000 (30 minutes) or -1 to disable removeAllUnprotectedCookies: true, // true - periodically ("removeUnprotectedCookiesInterval" option) remove all unprotected cookies // false - or exclude cookies from opened sites showTempPermissions: true, // Show items about temporary permissions (only Gecko 2.0+) tempExpire: -1, // Type of temporary permissions // -1 - session, otherwise - expire after given time (in milliseconds) useBaseDomain: { // 0 - use full domain name: addons.mozilla.org, www.google.com // 1 - strip "www." prefix from full domain name: addons.mozilla.org, google.com // 2 - use top-level domains (TLDs): mozilla.org, google.com addPermission: 1, // Add (and toggle) permission action openPermissions: 0, // Filter in "Show Exceptions" window showCookies: 2, // Filter in "Show Cookies" window removeCurrentSiteCookies: 2, // For "Remove All Current Site Cookies" action preserveCurrentSitesCookies: 2 // For "removeAllUnprotectedCookies: false" }, |
humnmind > 03-12-2016 22:07:57 |
manuk |
manuk > 03-12-2016 22:19:37 |
В том и дело, что не удаляются. Всего месяц, как вернулся на FF с PM. На PM кнопка работала. Может я чего в about:config наваял? |
lokiju > 03-12-2016 23:25:30 |
Infocatcher пишет
Спасибо, оно. Было true. Есть пункт "Удалить все сookies", но нет "Показать все сookies" Спасибо,humnmind, |
humnmind > 03-12-2016 23:49:42 |
manuk пишет
Нормально, у меня те же самые. Если еще не пробовал, то переустанови кнопку - замени код в инициализации на этот код и потестируй - работает удаление из контекстного меню или нет. |
Infocatcher > 10-12-2016 23:36:04 |
lokiju пишет
Хм, ну это же просто заполненный фильтр, который можно быстро очистить. |
Echotony > 29-04-2017 18:26:26 |
Подскажите пожалуйста, как установить самую крайнюю актуальную версию? По ссылке "Разрабатываемая версия" нет по отдельности "Кода" и "Инициализации", а так она не ставится. |
Infocatcher > 30-04-2017 15:15:21 |
Echotony пишет
См. cookiesPermissions.js, далее там ссылка Raw – это код инициализации кнопки. |
Echotony > 30-04-2017 16:34:52 |
Infocatcher А с какой периодичностью происходит "Автоматическое удаление незащищённых кук"? Это изменяется только в коде или и в about:config? И как правильно поставить 12 и 24 часа? |
okkamas_knife > 30-04-2017 16:44:13 |
в коде.
|
Echotony > 30-04-2017 17:14:10 |
okkamas_knife |
okkamas_knife > 30-04-2017 18:20:08 |
написано же ИНТЕРВАЛ |
Echotony > 30-04-2017 18:52:54 |
okkamas_knife |
yup > 30-04-2017 19:50:35 |
Echotony пишет
Для лучшего понимания и удобства изменения. Echotony пишет
|
Echotony > 01-05-2017 21:10:27 |
yup |
vzli_izv > 04-05-2017 10:22:29 |
Подскажите, пожалуйста, где в коде можно переназначить кнопки мыши, что бы при левом клике всегда показывалось меню, без дополнительных возможностей как сейчас. |
Infocatcher > 04-05-2017 17:14:53 |
vzli_izv пишет
Заменить Выделить код Код:this.onclick = function(e) { if(e.target != this) return; var btn = e.button; if(btn == 1 || btn == 0 && this.permissions.hasModifier(e)) this.permissions.openPermissions(); else if(btn == 0) { this.permissions.togglePermission(this.permissions.options.toggleMode); // Prevent "command" event to use "command" section only from hotkey e.preventDefault(); e.stopPropagation(); } }; на Выделить код Код:this.onclick = function(e) { if(e.target != this) return; var btn = e.button; if(btn == 1 || btn == 0 && this.permissions.hasModifier(e)) this.permissions.openPermissions(); else if(btn == 0) { //this.permissions.togglePermission(this.permissions.options.toggleMode); this.permissions.initContextOnce(); this.permissions.mp.openPopup(this, "after_start"); // Prevent "command" event to use "command" section only from hotkey e.preventDefault(); e.stopPropagation(); } }; |
vzli_izv > 05-05-2017 02:14:30 |
Infocatcher |
Echotony > 23-05-2017 13:10:47 |
Ребята, а почему опция "Автоматически удалять незащищённые cookies" сбрасывается, при закрытии браузера? |
Infocatcher > 23-05-2017 20:02:43 |
Echotony пишет
Это временное включение/выключение, для постоянного удаления нужно отредактировать код кнопки, вот так: Выделить код Код:var options = { removeUnprotectedCookiesEnabled: true, // true - periodically remove unprotected cookies by default // false - don't remove by default |
Echotony > 23-05-2017 21:42:51 |
Infocatcher |
Infocatcher > 23-05-2017 22:50:37 |
Echotony пишет
Параметр removeAllUnprotectedCookies отвечает только за разрешение автоматического удаления cookies, для которых не задано исключений, но при этом открыта вкладка с этим сайтом. |
cookiefox > 13-06-2017 03:43:08 |
Хорошо бы добавить импорт и экспорт |
rubel > 26-11-2017 17:01:43 |
А где сохраняется список исключений, да и вообще все настройки этой кнопки ? |
Infocatcher > 26-11-2017 21:48:03 |
rubel пишет
Это надстройка над встроенным списком исключений, который хранится в файле permissions.sqlite в папке профиля. |
suz191 > 25-02-2018 05:42:41 |
Добрый день! |
okkamas_knife > 25-02-2018 08:18:34 |
а прочитать предыдущее сообщение не судьба? |
suz191 > 25-02-2018 17:04:05 |
okkamas_knife пишет
Просто установил все настроил! очень понравилось и увидел новую версию. |
suz191 > 26-02-2018 06:10:36 |
Добрый день... И ERS и RELEAS проявляется одинаково... Удаление просто игнорится... |
rubel > 31-12-2018 10:36:04 |
Infocatcher Выделить код Код:Firefox не может найти файл jar:file:///D:/64/browser/omni.ja!/chrome/browser/content/browser/preferences/cookies.xul. Проверьте правильность введённого имени файла, соответствие регистра и отсутствие других ошибок в имени файла. Проверьте, не был ли файл переименован, удалён или перемещён. |
Infocatcher > 31-12-2018 13:36:44 |
rubel пишет
А разве встроенную возможность посмотреть сохраненные cookies еще не выпилили? Собирались же. |
rubel > 31-12-2018 14:01:46 |
Infocatcher пишет
Посмотреть можно через Настройки-Приватность и защита-Куки и данные сайтов-Управление данными. Канитель, короче.... |
Infocatcher > 04-03-2019 17:40:00 |
rubel пишет
Добавил открытие странного окошка chrome://browser/content/preferences/siteDataSettings.xul. |
kokoss > 04-03-2019 20:57:08 |
Infocatcher пишет
В esr 60 (64-бит) не работает. И как, если это возможно, сделать выпадающее меню кнопки на русском? |
Infocatcher > 04-03-2019 21:13:54 |
kokoss пишет
Ну я не знаю… Или не так установлено, или конфликт какой. kokoss пишет
Эмм, переключить интерфейс браузера на русский язык? |
kokoss > 04-03-2019 21:51:11 |
Infocatcher Infocatcher пишет
Он у меня и так на русском! |
Dumby > 04-03-2019 22:00:43 |
Infocatcher пишет
По-моему, как не работало без SiteDataManager.updateSites(), Вроде так чуть получше скрытый текст Выделить код Код://if(this.app.name == "Firefox" && parseFloat(this.app.version) >= 62) { //~ todo: check versions // this.showSiteDate(host); if(this.app.name == "Firefox" && parseFloat(this.app.version) >= 61) { this.showSiteData(host); return; } ... //showSiteDate: function(host) { // var win = this.wm.getMostRecentWindow("Browser:Cookies"); showSiteData: function(host) { var win = this.wm.getMostRecentWindow("Browser:SiteDataSettings"); var _this = this; var setFilter = function setFilter(e) { e && win.removeEventListener("load", setFilter, false); _this.setTextboxValue(win.document.getElementById("searchBox"), host); }; if(win) { win.focus(); host && setFilter(); } else { //win = window.openDialog("chrome://browser/content/preferences/siteDataSettings.xul", "_blank", ""); //host && win.addEventListener("load", setFilter, false); Cu.import("resource:///modules/SiteDataManager.jsm", {}).SiteDataManager.updateSites().then(function() { win = window.openDialog("chrome://browser/content/preferences/siteDataSettings.xul", "_blank", ""); host && win.addEventListener("load", setFilter, false); }, Cu.reportError); } }, |
Infocatcher > 04-03-2019 23:33:43 |
Dumby Странно, я, вроде, менял на "Browser:SiteDataSettings", но, видимо, отвлекли в процессе. Dumby пишет
Задорные нынче пошли API... |
voqabuhe > 25-01-2020 02:28:05 |
del |
voqabuhe > 14-02-2020 19:31:41 |
Infocatcher |
Infocatcher > 17-02-2020 20:00:26 |
voqabuhe пишет
Добавил, спасибо. На удивление безболезненно починилось. |
Dumby > 03-06-2020 11:39:23 |
Infocatcher |
Infocatcher > 02-07-2020 20:16:27 |
Dumby пишет
Я наконец-то добрался… |
harryk > 12-02-2021 20:21:07 |
Скажите как подружить скрипт с Waterfox G3 (FF78)? При нажатии на Show Cookies... выводит 3 стандартные кнопки - свернуть, развернуть, закрыть. Самого окна нет. Нажимаю Развернуть окно, открывается такое скрытый текст Выделить код Код:File not found can’t find the file at jar:file:///J:/WFG31/core/browser/omni.ja!/chrome/browser/content/browser/preferences/cookies.xul. Check the file name for capitalization or other typing errors. Check to see if the file was moved, renamed or deleted. Ни в FF, ни в WF в omni.ja по указанному пути файла cookies.xul нет. Но FF открывает окно Manage Cookies and Site Data, а WF - нет. |
Infocatcher > 12-02-2021 21:17:09 |
harryk пишет
Мне не поставить Waterfox, но, предположительно, вот так: Выделить код Код:… showCookies: function(showAll) { … //if(this.app.name == "Firefox" && parseFloat(this.app.version) >= 61) { if( (this.app.name == "Firefox" || this.app.name == "Waterfox") && parseFloat(this.app.version) >= 61 ) { this.showSiteData(host); return; } |
harryk > 12-02-2021 22:37:01 |
Infocatcher |