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

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

№647618-06-2013 01:43:38

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4780
UA: Firefox 3.6

Re: Custom Buttons

Как получить адреса всех закладок ?

Отсутствует

 

№647718-06-2013 03:46:11

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4780
UA: Firefox 3.6

Re: Custom Buttons

okkamas_knife пишет:

bunda1
не оно?https://developer.mozilla.org/en-US/doc … kURI%28%29

Странно но ни один метод не хочет отдать адрес.

Добавлено 18-06-2013 04:04:54
Вот теперь работает, надо придумать как тут цикл приделать:

Выделить код

Код:

alert( PlacesUtils.bookmarks.getBookmarkURI(30).spec );

Добавлено 18-06-2013 04:04:59
И как остановить цикл когда закладки закончатся:

Выделить код

Код:

for( var i = 0, str = ''; i < 400; i++ ) {
     try {
         if ( PlacesUtils.bookmarks.getBookmarkURI(i).spec.substring(0, 6) == 'place:') continue;
         str += i + '  ' + PlacesUtils.bookmarks.getItemTitle(i) + '  ' + PlacesUtils.bookmarks.getBookmarkURI(i).spec + '\n';
         }
     catch(e) {};
}
LOG( str );

Отредактировано bunda1 (18-06-2013 18:52:29)

Отсутствует

 

№647818-06-2013 16:00:00

vom
Участник
 
Группа: Members
Зарегистрирован: 30-08-2011
Сообщений: 155
UA: Firefox 22.0

Re: Custom Buttons

bunda1 пишет:

Да Quick bookmarks( Firefox 3.6 + ), но можно и жестом мыши.

Спасибо, нужно попробовать, тем более папки стало более комфортно использовать.

Pony_Smile_Pack пишет:

Column bookmarks - userstyles.org

Спасибо за код, попользовался, оказалось поразительно удобно, особенно с большим количеством закладок, даже несмотря на горизонтальную очередность. И отлично, что папки открываются тоже в несколько колонок, в них обычно накапливается много всего. Наглядность представления повысилась в несколько раз и не нужно делать лишних движений выискивая нужное, поэтому удивительно что нет полноценного поддерживаемого расширения или CB. Вот сделал несколько примеров 102, 205 и 315 закладок.

http://s018.radikal.ru/i520/1306/4c/b5eddeeb65dft.jpg          http://i022.radikal.ru/1306/32/9fb72a0e6ff6t.jpg          http://s017.radikal.ru/i424/1306/3e/00fcfc3b91bat.jpg

Отсутствует

 

№647919-06-2013 10:38:57

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

Re: Custom Buttons

okkamas_knife пишет:

в конфиге есть параметр config.trim_on_minimize (win only)
если его создать и поставить в true то при сворачивании окна [firefox][thunderbird][seamonkey] освобождают оперативку скидывая всё в своп.
собственно вопрос как вызвать эту функцию без сворачивания окна?

Вряд ли это возможно – «trim_on_minimize» находится только внутри xul.dll.


okkamas_knife пишет:

в симанки менеджер кук
...
как заставить открываться его в отдельном окошке?

Выделить код

Код:

var win = window.openDialog("about:data", "_blank", "chrome,all,centerscreen,resizable,dialog=0");
win.addEventListener("load", function initWindow() {
    win.removeEventListener("load", initWindow, false);
    win.document.documentElement.setAttribute("persist", "width height screenX screenY sizemode");
    win.gDataman.loadView("|cookies");
}, false);

okkamas_knife пишет:

а еще лучше в нижней панели в этой кнопке(внимание кнопка переделана под СМ)

Diff

Выделить код

Код:

--- a/panel.js
+++ b/panel.js
@@ -7,7 +7,7 @@
 }
 
 
-this.bottomPanel = function(aURL) {
+this.bottomPanel = function(aURL, aCallback) {
   var prefBranch = "custombuttons.button.bottomPanel."
 
   if(!aURL && aURL != "") {
@@ -34,10 +34,11 @@
 
   if(gPanel) {
 
-    var src = gPanel.firstChild.nextSibling.getAttribute("src");
+    var ifr = gPanel.firstChild.nextSibling;
+    var src = ifr.getAttribute("src");
     if(aURL != src) {
-      gPanel.firstChild.nextSibling.setAttribute("src", aURL);
-      //gPanel.firstChild.nextSibling.loadURI(aURL);
+      ifr.setAttribute("src", aURL);
+      //ifr.loadURI(aURL);
     } else {
     custombuttons.setPrefs("dom.disable_open_during_load", false);
     //  gPrefService.setIntPref(prefBranch + "height", gPanel.height);
@@ -97,6 +98,14 @@
         ifr.setAttribute("contentcontextmenu", "contentAreaContextMenu");
   }
 
+  if(aCallback) {
+    ifr.addEventListener("load", function initPanel() {
+       ifr.removeEventListener("load", initPanel, false);
+       var win = ifr.contentWindow;
+       aCallback(win.wrappedJSObject || win);
+    }, false);
+  }
+
   custombuttons.setPrefs(prefBranch + "url", aURL);
 
 }  
@@ -123,11 +132,12 @@
 //------------------------------------
 
 
-function addMenuitem(aLabel, aURL, aNode, aObjString) {
+function addMenuitem(aLabel, aURL, aNode, aObjString, aCallback) {
   var mItem = aNode.appendChild(document.createElement("menuitem"));
   mItem.setAttribute("label", aLabel);
   mItem.setAttribute("oncommand",
-                     aObjString + ".bottomPanel('" + aURL + "');");
+                     aObjString + ".bottomPanel('" + aURL + "', this._callback);");
+  mItem._callback = aCallback;
 }
 
 
@@ -177,6 +187,9 @@
 addMenuitem("Показать исходный код", "view-source:' + content.location.href +'", mPopup, objString);
 addMenuitem("Открыть файл", "' + this.parentNode.parentNode.getFile() + '", mPopup, objString);
 addSeparator(mPopup, 0);
+addMenuitem("Управление cookies", "about:data", mPopup, objString, function(win) {
+  win.gDataman.loadView("|cookies");
+});
 
 this.appendChild(mPopup);
 this.type = "menu";


Результат

Выделить код

Код:

 var brand = document.getElementById("bundle_brand"),appName = brand.getString("brandShortName");
var placesurl;
if (appName=="Firefox"){ placesurl = "chrome://browser/content/places/places.xul";}else{
if (appName=="SeaMonkey"){ placesurl = "chrome://communicator/content/bookmarks/bookmarksManager.xul";}else{
alert("Browser "+appName+" unsupported!")
}
}


this.bottomPanel = function(aURL, aCallback) {
  var prefBranch = "custombuttons.button.bottomPanel."

  if(!aURL && aURL != "") {
    try {
     aURL = custombuttons.getPrefs(prefBranch + "url", false);
      //aURL = gPrefService.getCharPref(prefBranch + "url");
    } catch(ex) {
      aURL = "";
    }
  }
  if(aURL == "") return;

  if(aURL == gURLBar.value && !aURL.match(/^\w+?\:/)) aURL = "http://" + aURL;

  var panelID = "bottom-panel";
  var gPanel = document.getElementById(panelID);
  var height;
  try {
 height =  custombuttons.getPrefs(prefBranch + "height", false);
  //  height = gPrefService.getIntPref(prefBranch + "height");
  } catch(ex) {
    height = 400;
  }

  if(gPanel) {

    var ifr = gPanel.firstChild.nextSibling;
    var src = ifr.getAttribute("src");
    if(aURL != src) {
      ifr.setAttribute("src", aURL);
      //ifr.loadURI(aURL);
    } else {
    custombuttons.setPrefs("dom.disable_open_during_load", false);
    //  gPrefService.setIntPref(prefBranch + "height", gPanel.height);
      gPanel.parentNode.removeChild(gPanel.previousSibling);
      gPanel.parentNode.removeChild(gPanel);
    }

  } else {

    var appContent = document.getElementById("appcontent");

    var spl = appContent.appendChild(document.createElement("splitter"));
        spl.setAttribute("collapse", "after");
        spl.style.border = "none";
        spl.style.borderTop = "1px solid threedhighlight";
        spl.setAttribute("onclick", "this.setAttribute('state', '');");

    var box = appContent.appendChild(document.createElement("hbox"));
        box.id = panelID;
        box.height = height;
        box.orient = "vertical";

    var tbr = box.appendChild(document.createElement("toolbar"));
        tbr.setAttribute("fullscreentoolbar", true);

    var spr = tbr.appendChild(document.createElement("spacer"));
        spr.setAttribute("flex", 1);

    var btn = tbr.appendChild(document.createElement("toolbarbutton"));
        btn.style.listStyleImage = "url(chrome://global/skin/icons/Minimize.gif)";
        btn.minimize = function() {
          var gPanel = document.getElementById("bottom-panel");
          gPanel.previousSibling.setAttribute("state", "collapsed");
        }
        btn.setAttribute("oncommand", "this.minimize()");

    var btc = tbr.appendChild(document.createElement("toolbarbutton"));
        btc.className = "tabs-closebutton1";
        btc.style.listStyleImage = "url(chrome://global/skin/icons/Close.gif)";
        btc.closePanel = function() {
                 var gPanel = document.getElementById("bottom-panel");
          custombuttons.setPrefs(prefBranch + "height", gPanel.height, false);
          //gPrefService.setIntPref(prefBranch + "height", gPanel.height);
          gPanel.parentNode.removeChild(gPanel.previousSibling);
          gPanel.parentNode.removeChild(gPanel);
        }
        btc.setAttribute("oncommand", "this.closePanel()");

    var ifr = box.appendChild(document.createElement("browser"));
        ifr.setAttribute("type", "content");
        ifr.setAttribute("flex", 1);
        ifr.setAttribute("src", aURL);
        ifr.setAttribute("tooltip", "aHTMLTooltip");
        ifr.setAttribute("onclick", "return contentAreaClick(event, true)");
        ifr.setAttribute("autocompletepopup", "PopupAutoComplete");
        ifr.setAttribute("contextmenu", "contentAreaContextMenu");
        ifr.setAttribute("contentcontextmenu", "contentAreaContextMenu");
  }

  if(aCallback) {
    ifr.addEventListener("load", function initPanel() {
       ifr.removeEventListener("load", initPanel, false);
       var win = ifr.contentWindow;
       aCallback(win.wrappedJSObject || win);
    }, false);
  }

  custombuttons.setPrefs(prefBranch + "url", aURL);

}  
//------------------------------------
this.getFile = function() {
  try {
    const nsIFilePicker = Components.interfaces.nsIFilePicker;
    var fp = Components.classes['@mozilla.org/filepicker;1']
                .createInstance(nsIFilePicker);
    fp.init(window, gNavigatorBundle.getString("openFile"),
                     nsIFilePicker.modeOpen);
    fp.appendFilters(nsIFilePicker.filterAll |
                     nsIFilePicker.filterText |
                     nsIFilePicker.filterImages |
                     nsIFilePicker.filterXML |
                     nsIFilePicker.filterHTML);
    if(fp.show() == nsIFilePicker.returnOK)
      return fp.fileURL.spec;
    else return "";
  } catch (ex) {
  }
}

//------------------------------------


function addMenuitem(aLabel, aURL, aNode, aObjString, aCallback) {
  var mItem = aNode.appendChild(document.createElement("menuitem"));
  mItem.setAttribute("label", aLabel);
  mItem.setAttribute("oncommand",
                     aObjString + ".bottomPanel('" + aURL + "', this._callback);");
  mItem._callback = aCallback;
}


function addSeparator(aNode, aNum) {
  var separator = aNode.appendChild(document.createElement("menuseparator"));
  separator.id = "bottom-panel-button-separator" + aNum;
}

var mPopup = document.createElement("menupopup");
mPopup.setAttribute("oncommand", "event.stopPropagation()");
mPopup.setAttribute("onpopupshowing", "this.parentNode.popupShowing(this)");


objString = "this.parentNode.parentNode";
addMenuitem("about:config", "about:config", mPopup, objString);
addMenuitem("Error Console", "chrome://global/content/console.xul", mPopup, objString);
addMenuitem("Закладки", placesurl, mPopup, objString);
addMenuitem("about:data", "about:data", mPopup, objString);
addMenuitem("about:about", "about:about", mPopup, objString);
addMenuitem("about:support", "about:support", mPopup, objString);
addMenuitem("about:memory", "about:memory", mPopup, objString);
addMenuitem("about:plugins", "about:plugins", mPopup, objString);
addMenuitem("about:cache", "about:cache", mPopup, objString);
addMenuitem("about:cache?device=disk", "about:cache?device=disk", mPopup, objString);
addMenuitem("about:cache?device=memory", "about:cache?device=memory", mPopup, objString);
addMenuitem("about:cache?device=offline", "about:cache?device=offline", mPopup, objString);
addSeparator(mPopup, 0);
addMenuitem("Настройки", "chrome://communicator/content/pref/preferences.xul", mPopup, objString);
addMenuitem("Дополнения", "chrome://mozapps/content/extensions/extensions.xul?type=extensions", mPopup, objString);
addMenuitem("Менеджер Паролей", "chrome://passwordmgr/content/passwordManager.xul", mPopup, objString);
addMenuitem("Импорт/Экспорт Паролей", "chrome://passwordexporter/content/pwdexDialog.xul", mPopup, objString);
addMenuitem("Управление Cookies", "about:data", mPopup, objString);
addMenuitem("DOM Inspector", "chrome://inspector/content/inspector.xul", mPopup, objString);
addSeparator(mPopup, 0);
addMenuitem("Загрузки", "chrome://mozapps/content/downloads/downloads.xul", mPopup, objString);
addMenuitem("История", "chrome://communicator/content/history/history.xul", mPopup, objString);


addSeparator(mPopup, 0);

var homePages = custombuttons.getPrefs("browser.startup.homepage", false).split("|");
var homePage = homePages[0];

addMenuitem("Домашняя страница", homePage, mPopup, objString);

addMenuitem("Текущая страница", "' + content.location.href + '", mPopup, objString);
addMenuitem("Показать исходный код", "view-source:' + content.location.href +'", mPopup, objString);
addMenuitem("Открыть файл", "' + this.parentNode.parentNode.getFile() + '", mPopup, objString);
addSeparator(mPopup, 0);
addMenuitem("Управление cookies", "about:data", mPopup, objString, function(win) {
  win.gDataman.loadView("|cookies");
});

this.appendChild(mPopup);
this.type = "menu";
this.orient = "horizontal";

var that = this;
this.hideDropMarker = function() {
  var dropMarker = document.getAnonymousElementByAttribute(that, "class", "toolbarbutton-menu-dropmarker");
  if (dropMarker) {
    dropMarker.setAttribute("hidden", "true");
  } else {
    setTimeout(that.hideDropMarker, 10);
  }
}
this.hideDropMarker();


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

Отсутствует

 

№648019-06-2013 12:15:33

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

Re: Custom Buttons

Ой, вместо

Выделить код

Код:

  if(aCallback) {
    ifr.addEventListener("load", function initPanel() {
       ifr.removeEventListener("load", initPanel, false);
       var win = ifr.contentWindow;
       aCallback(win.wrappedJSObject || win);
    }, false);
  }

должно быть

Выделить код

Код:

  if(aCallback) {
    var win = ifr.contentWindow;
    win.addEventListener("load", function initPanel() {
       win.removeEventListener("load", initPanel, false);
       aCallback(win.wrappedJSObject || win);
    }, false);
  }

Но проблема все равно в том, что gDataman.loadView() из chrome://communicator/content/dataman/dataman.js

Выделить код

Код:

  loadView: function dataman_loadView(aView) {
    // Set variable, used in initizalization routine.
    // Syntax: <domain>|<pane> (|<pane> is optional)
    // Examples: example.com
    //           example.org|permissions
    //           example.org:8888|permissions|add|popup
    //           |cookies
    // Allowed pane names:
    //   cookies, permissions, preferences, passwords, formdata
    // Invalid views fall back to the default available ones
    // Full host names (even including ports) for domain are allowed
    // Empty domain with a pane specified will only list this data type
    // Permissions allow specifying "add" and type to prefill the adding field
    this.viewToLoad = aView.split('|');
    if (gDomains.listLoadCompleted)
      gDomains.loadView();
    // Else will call this at the end of loading the list.
  },

не работает.

Добавлено 19-06-2013 12:38:27
Но можно заменить

Выделить код

Код:

win.gDataman.loadView("|cookies");

на

Выделить код

Код:

win.document.getElementById("typeSelect").value = "Cookies";

и, вроде, начинает работать.

Отредактировано Infocatcher (19-06-2013 12:38:27)


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

Отсутствует

 

№648120-06-2013 10:50:26

villa7
Участник
 
Группа: Members
Зарегистрирован: 21-07-2012
Сообщений: 2235
UA: Firefox 23.0

Re: Custom Buttons

Ребята, может кто поможет, есть такой жест - 'R':{name:'Закладки',cmd:function() и такая команда - BookmarksEventHandler.onCommand(event, this.parentNode._placesView); как их состыковать чтобы жестом меню закладок открывалось, сниппеты просматривал, но для меня это темный лес, ни ума, ни знаний не хватает.


Лучше спросить у знающих - чем лезть не зная.

Отсутствует

 

№648220-06-2013 17:10:11

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

Re: Custom Buttons

okkamas_knife
То есть в SeaMonkey 2.14

Выделить код

Код:

gDataman.loadView("|cookies");

еще работает, а сломали его позже? :D Прелестно, прелестно.
А то я в 2.17.1 и 23.0a1 проверял.

Отредактировано Infocatcher (20-06-2013 17:10:43)


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

Отсутствует

 

№648320-06-2013 20:15:09

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

Re: Custom Buttons

okkamas_knife пишет:

единственный глюк который обнаружил это то что переход на куки не срабатывает если нижнее окошко не открывать заново а переключать то бишь открыл консоль а потом не закрывая перешел в куки .. тогда открывается только about:data

И правда.
Вот так, вроде, в обоих случаях работает:

Выделить код

Код:

  if(aCallback) {
    ifr.addEventListener("load", function initPanel() {
      ifr.removeEventListener("load", initPanel, true);
      var win = ifr.contentWindow;
      aCallback(win.wrappedJSObject || win);
    }, true);
  }

(заменять точно там же)


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

Отсутствует

 

№648420-06-2013 20:46:47

wolwerine
╒╤╬╧╣╠═╝
 
Группа: Members
Зарегистрирован: 15-04-2009
Сообщений: 159
UA: Firefox 23.0

Re: Custom Buttons

А есть ли такая кнопка, добавляющая ссылку/открытую страницу в конкретную папку закладок (без показа диалога) через пункт контекстного меню ссылки/страницы? У этого расширения - Desktop, нет возможности добавления закладки, но есть папка Desktop (откуда и черпаются ссылки) в закладках, было-бы неплохо добавлять туда ссылки через контекстный пункт.
PS: совсем хорошо будет, если ещё и подпункты будут для подпапок фолдера Desktop (которые и выполняют роль папок этого speeddial'а), т.е. чтобы каждый пункт был двухфункционным: нажатие - добавление в конкретную папку, удержание курсора - появление других меню подпапок.

Отредактировано wolwerine (20-06-2013 20:54:37)

Отсутствует

 

№648520-06-2013 21:08:24

Pony_Smile_Pack
Участник
 
Группа: Members
Зарегистрирован: 13-01-2012
Сообщений: 1144
UA: Firefox 21.0

Re: Custom Buttons

wolwerine пишет:

А есть ли такая кнопка, добавляющая ссылку/открытую страницу в конкретную папку закладок

№7202

Отсутствует

 

№648620-06-2013 21:19:57

wolwerine
╒╤╬╧╣╠═╝
 
Группа: Members
Зарегистрирован: 15-04-2009
Сообщений: 159
UA: Firefox 23.0

Re: Custom Buttons

Pony_Smile_Pack пишет:

wolwerine пишет:

А есть ли такая кнопка, добавляющая ссылку/открытую страницу в конкретную папку закладок

№7202

Надо бы через контекстный пункт страницы/ссылки. Перетащить в уже открытую панель закладок вкладку/ссылку я и сам смогу, но открывать панель каждый раз по этому поводу долговато :)

Отсутствует

 

№648720-06-2013 21:23:07

Pony_Smile_Pack
Участник
 
Группа: Members
Зарегистрирован: 13-01-2012
Сообщений: 1144
UA: Firefox 21.0

Re: Custom Buttons

wolwerine пишет:

Надо бы через контекстный пункт страницы/ссылки.

Context Bookmarks :: Дополнения Firefox

Отсутствует

 

№648820-06-2013 21:32:58

wolwerine
╒╤╬╧╣╠═╝
 
Группа: Members
Зарегистрирован: 15-04-2009
Сообщений: 159
UA: Firefox 23.0

Re: Custom Buttons

Pony_Smile_Pack пишет:

wolwerine пишет:

Надо бы через контекстный пункт страницы/ссылки.

Context Bookmarks :: Дополнения Firefox

Из главного - не умеет оно добавлять закладки текущей страницы.

Отсутствует

 

№648920-06-2013 21:39:59

Pony_Smile_Pack
Участник
 
Группа: Members
Зарегистрирован: 13-01-2012
Сообщений: 1144
UA: Firefox 21.0

Re: Custom Buttons

wolwerine пишет:

Pony_Smile_Pack пишет:

wolwerine пишет:

Надо бы через контекстный пункт страницы/ссылки.

Context Bookmarks :: Дополнения Firefox

Из главного - не умеет оно добавлять закладки текущей страницы.

Нет, поставить это и ту кнопку. И добавлять текущую страницу в закладки через контекстное меню.

Отсутствует

 

№649020-06-2013 21:46:40

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4780
UA: Firefox 3.6

Re: Custom Buttons

Отсутствует

 

№649120-06-2013 21:58:59

wolwerine
╒╤╬╧╣╠═╝
 
Группа: Members
Зарегистрирован: 15-04-2009
Сообщений: 159
UA: Firefox 23.0

Re: Custom Buttons

Pony_Smile_Pack пишет:

Нет, поставить это и ту кнопку. И добавлять текущую страницу в закладки через контекстное меню.

Хороший вариант для навигации в fullscreen режиме, когда панель скрыта. Но для каждодневного режима это не быстрее, чем открыть панель вкладок F4 -> перетащить вкладку -> закрыть панель F4 (учитывая нахождение главной папки Desktop в громоздком подменю "Закладки", появление которого ещё надо подождать, а не в корне самого контекстного меню.
PS: нужен только пункт контекстного меню страницы/ссылки. Всё остальное уже перепробовано и является более медленным, поэтому и пишу сюда.

Добавлено 20-06-2013 22:00:32

bunda1 пишет:

wolwerine
Quick bookmarks( Firefox 3.6 + )

А она и в не контекстном меню, опять-таки, долговато цельться/тянуться за шорткатом :)
А меню в любом месте страницы.

Спасибо всем за попытки, буду копать/осваивать и это. Слишком велики мои запросы :cool:

Отредактировано wolwerine (20-06-2013 22:05:52)

Отсутствует

 

№649220-06-2013 23:10:58

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4780
UA: Firefox 3.6

Re: Custom Buttons

wolwerine

Выделить код

Код:

 //Добавить новый пункт "Сохранить как закладку в папке" в контекстном меню на странице ......................................
(function () { 

// Объявляем переменные ....
var button = this;
var folderName = "Новая папка";


// Добавить новый пункт "Сохранить как закладку в папке" в контекстном меню на странице ....
(function() {
   var menuitem = document.createElement("menuitem");   
   menuitem.setAttribute("id", "context-addBookmark");;
   menuitem.setAttribute("label", "Сохранить как закладку в папке");
      
   var contextMenu = document.getElementById("contentAreaContextMenu")
   contextMenu.appendChild( menuitem );     
   addDestructor(function() { contextMenu.removeChild( menuitem ) });
     
   addEventListener("click", function(e) {        
      if ( gContextMenu.onLink ) {
           var url = gContextMenu.getLinkURL();          
           //var url = encodeURIComponent( gContextMenu.getLinkURL() );
           var label = gContextMenu.linkText();
           }
 
      else {
           var br = gBrowser. getBrowserForTab (gBrowser. mCurrentTab);            
           var url = br.webNavigation.currentURI;
           var label = getDocTitle();               
           }
              
      addBookmark(url, label)              
   }, false, menuitem );
})();


// Получить заголовк страницы или название вкладки ....
function getDocTitle() {
   var docTitle = content.document.title || gBrowser.mCurrentTab.label;       
   // заменить недопустимые символы и удалить лишние пробелы 
   var docTitle = docTitle.replace(/[:.\\\/<>?*|"]+/g, " ")
   var docTitle = docTitle.replace(/\s\s+/g, " "); 

   return docTitle.substring(0, 50);
};

          
// Добавить текущую вкладку в папку закладок ....
function addBookmark(url, label) {
   var bmsvc = Components.classes ["@mozilla.org/browser/nav-bookmarks-service;1"].getService(Components.interfaces.nsINavBookmarksService);
   var rootFolder = bmsvc.toolbarFolder;
   var f = getChildFolder( rootFolder, folderName );
   if ( !f ) {
        bmsvc.createFolder( rootFolder, folderName, bmsvc.DEFAULT_INDEX );
        f = getChildFolder( rootFolder, folderName );
        }  
   bmsvc.insertBookmark( f, url, bmsvc.DEFAULT_INDEX, label );
   
   var image = gBrowser.mCurrentTab.image ? gBrowser.mCurrentTab.image : "chrome://global/skin/icons/information-16.png";
   var alertsService = Components.classes["@mozilla.org/alerts-service;1"].getService(Components.interfaces.nsIAlertsService);
   alertsService.showAlertNotification( image, label, 'Добавил вкладку в папку закладок: ' + folderName, false, "", null, "");
};


// Получить нужную папку закладок .... 
function getChildFolder( parentId, title ) {
   var res = null;
   try {
        var hs = Cc ["@mozilla.org/browser/nav-history-service;1"].getService(Ci.nsINavHistoryService);
        var options = hs.getNewQueryOptions();
        options.excludeItems = true;
        var query = hs.getNewQuery();
        query.setFolders( [parentId], 1 );
        var result = hs.executeQuery( query, options );
        var rn = result.root;
        rn.containerOpen = true;
        var i, node;
        for ( i = 0; i < rn.childCount; i++ ){
              var node = rn.getChild(i);
              if ( node.title == title ) {
                   res = node.itemId;
                   break;
                   }
              }
        rn.containerOpen = false;
       } 
   catch(e) {}
   
   return res;
};

})();

Добавлено 20-06-2013 23:14:07
Страницу сохраняет :) а вот ссылки не хочет :(, потому что я не знаю как перекодировать

Выделить код

Код:

var url = gContextMenu.getLinkURL(); 

Добавлено 20-06-2013 23:35:29

villa7 пишет:

Ребята, может кто поможет, есть такой жест - 'R':{name:'Закладки',cmd:function() и такая команда - BookmarksEventHandler.onCommand(event, this.parentNode._placesView); как их состыковать чтобы жестом меню закладок открывалось, сниппеты просматривал, но для меня это темный лес, ни ума, ни знаний не хватает.

Выделить код

Код:

    var menus = {}, 
        menu = null, 
        anchor = document.getElementById('appmenu-button');
        menuName = 'bookmarksMenuPopup',
        uid = 'myext-'; 
    if(menus[menuName] !== undefined) menu = this.menus[menuName];
    else{
        let element = document.createElement('popupset');
        element.setAttribute('id', uid+menuName+'-set');
        menu = document.getElementById(menuName).cloneNode(true);
        menu.setAttribute('id', uid+menuName);
        element.appendChild(menu);
        document.documentElement.appendChild(element);
        menus[menuName] = menu;
    }
    menu.openPopup(anchor,'after_start', 400, 250, true);

Отредактировано bunda1 (20-06-2013 23:35:29)

Отсутствует

 

№649320-06-2013 23:54:54

voqabuhe
Участник
 
Группа: Members
Зарегистрирован: 06-12-2011
Сообщений: 2447
UA: Firefox 24.0

Re: Custom Buttons

bunda1

скрытый текст

Выделить код

Код:

    var menus = {}, 
        menu = null, 
        anchor = document.getElementById('appmenu-button');
        menuName = 'bookmarksMenuPopup',
        uid = 'myext-'; 
    if(menus[menuName] !== undefined) menu = this.menus[menuName];
    else{
        let element = document.createElement('popupset');
        element.setAttribute('id', uid+menuName+'-set');
        menu = document.getElementById(menuName).cloneNode(true);
        menu.setAttribute('id', uid+menuName);
        element.appendChild(menu);
        document.documentElement.appendChild(element);
        menus[menuName] = menu;
    }
    menu.openPopup(anchor,'after_start', 400, 250, true);


А чтобы сразу в панель закладок попадать, можешь сделать?

Отсутствует

 

№649421-06-2013 00:15:14

villa7
Участник
 
Группа: Members
Зарегистрирован: 21-07-2012
Сообщений: 2235
UA: Firefox 23.0

Re: Custom Buttons

bunda1
Ничего себе, сколько кода, а я то думал там пару запятых поставить где надо, это мне если бы даже лоб разбить всё ровно не сделать. Теперь стало то что и хотел, как всегда, спасибо огромное.


Лучше спросить у знающих - чем лезть не зная.

Отсутствует

 

№649521-06-2013 23:34:31

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4780
UA: Firefox 3.6

Re: Custom Buttons

villa7 пишет:

Ребята, может кто поможет, есть такой жест - 'R':{name:'Закладки',cmd:function() как их состыковать чтобы жестом меню закладок открывалось

Выделить код

Код:

'R':{name:'Открыть меню закладок',cmd:function(self,event){ 
     var menus = {}, 
     menu = null, 
     anchor = document.getElementById('appmenu-button');
     var menuName = 'bookmarksMenuPopup',
     uid = 'myext-'; 
     if ( menus[menuName] !== undefined ) menu = this.menus[menuName];
     else {
          let element = document.createElement('popupset');
          element.setAttribute('id', uid+menuName+'-set');
          menu = document.getElementById(menuName).cloneNode(true);
          menu.setAttribute('id', uid + menuName);
          element.appendChild( menu );
          document.documentElement.appendChild(element);
          menus[menuName] = menu;
          }
     menu.openPopup(anchor,'after_start', event.screenX, event.screenY, true);                       
    }},

Отсутствует

 

№649622-06-2013 10:40:02

villa7
Участник
 
Группа: Members
Зарегистрирован: 21-07-2012
Сообщений: 2235
UA: Firefox 23.0

Re: Custom Buttons

bunda1
Подставить готовый код на это у меня ума хватило:) Спасибо. У меня вот тут другой вопрос возник, может есть для этой кнопки Open Firefox folders and files команда открывать главную папку а не только подпапки.
http://s018.radikal.ru/i500/1306/f5/77a441a3f617t.jpg
Иногда возникает необходимость по быстрому сменить профиль, приходится добираться через мой компьютер. Не хотелось бы ставить для этого отдельную кнопку, а так было бы все в куче.

Отредактировано villa7 (22-06-2013 10:40:45)


Лучше спросить у знающих - чем лезть не зная.

Отсутствует

 

№649723-06-2013 14:33:02

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 980
UA: Firefox 10.0

Re: Custom Buttons

villa7 пишет:

все в куче

Может попробуй прописать абсолютный путь до нужной папки

скрытый текст

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3EOpen%20Firefox%20folders%20and%20files%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAABsAAAAoAAAAFgAAAAAAAAAADggMA0MoOjIXDxQWAAAAAAEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBCgAAADksLCytMDAw4gAAAI0bHBuDKR8lan1IaZfSg7XS+K3f/zwtN2IAAAAAAwIDAwAAAAAAAAAAAAAAAQMDAwADAwMUAgICZUtLS+xgYWH/RURF8W1tbfpQS07/hm99/8Czu/2tsK7/IiMijwAAAAADAgMCAAAAAAAAAAAAAAAAJSUlH1dXV8ROTk7cl5eX/7Gxsfytra3/fX19/UpMS/t2enf7tLe1+7u7u/8lJCSkAAAAGQUFBQABAQECAAAAAAAAAAAfHx8tYGBg8ZiYmP+Li4v9UlJS/pubm/6xsbH+paWl/qWlpf6GhYX+xsjH/1Q9R+JxQV3LRzFAWQAAAAACAQICAAAAAAMDAwNhYWHViIiI/zMzM/xvb2/+ioqK/p2dnf7n5+f+u7u7/pycnP7IyMj+WFBT/HZkb/9JQUeTAAAAAgMDAwESEhIAWlpaj4KCgv9aWlr+SUlJ/pGRkf6RkZH+i4uL/tzc3P6AgID+ysrK/sfHx/5MTk36U1ZU/zc4N4MBAAEBAgICAgkJCQB2dna+lZWV/2lpaf05OTn+bm5u/l9fX/7AwMD++vr6/ru7u/7CwsL+ysrK/lRUVPtkY2T/SEhIaQAAAAACAgIEAAAAAwcHBwBVVVWBqamp/5ubm/qQkJD+ysrK/uDg4P7b29v+0NDQ/sPDw/7Nzc3+WFhY+2xsbP9ISEhiAAAAAAICAgQCAgIFAAAAAFtbW3bKysr/x8fH+vX19f729vb+pKSk/re3t/7FxcX+zc3N/tLS0v5cXFz7dHR0/0hISGIAAAAAAwMDBAICAgQAAAAAMTExdY2Njf91dXX6tLS0/uDg4P65ubn+wsLC/s3Nzf7W1tb+29vb/mBgYPt6enr/S0tLYgAAAAADAwMEAgICBAAAAAAtLS1zd3d3/4qKivqdnZ3+pqam/re3t/7Gxsb+1NTU/t3d3f7f39/+Y2Nj+4CAgP9OTk5iAAAAAAMDAwQCAgIEAAAAAC4uLnN/f3//jIyM+p2dnf6pqan+tra2/sfHx/7Z2dn+6Ojo/u/v7/5sbGz7g4OD/1FRUWIAAAAAAwMDBAICAgQAAAAALy8vc39/f/+JiYn6nZ2d/rCwsP7AwMD+ysrK/sfHx/60tLT+mZmZ/mBgYPuTk5P/UlJSYgAAAAADAwMEAgICBAAAAAAvLy9zhISE/5CQkPmYmJj9i4uL/XZ2dv1lZWX9XFxc/WJiYv14eHj9mpqa+snJyf9RUVFhAAAAAAMDAwQCAgIEAAAAADAwMHRoaGj/SUlJ+z09Pf86Ojr/SEhI/2JiYv99fX3/lpaW/6ysrP+8vLz70tLS/1JSUmIAAAAAAwMDBAEBAQQAAAAAIyMjVzY2Nu8wMDDjS0tL5mFhYedzc3PnfHx85oeHh+WWlpbkqKio5La1tuHNzMzzb29vWAAAAAAEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bconst%20data%20%3D%20%5B%0A%09%5B%22Main%20Folder%22%2C%20%22%u0417%u0414%u0415%u0421%u042C%20%u041F%u0423%u0422%u042C%20%u0414%u041E%20%u0413%u041B%u0410%u0412%u041D%u041E%u0419%20%u041F%u0410%u041F%u041A%u0418%20%28%u0442%u0438%u043F%u0430%20D%3A%5C%5CProgram%20Files%20Portable%5C%5CFirefoxPortable%2023%29%22%2C%20%22chrome%3A//global/skin/icons/warning-16.png%22%5D%2C%0A%09%5B%22Firefox%22%2C%20%22CurProcD%22%2C%20%22chrome%3A//branding/content/icon16.png%22%5D%2C%0A%09%5B%22Profile%22%2C%20%22ProfD%22%2C%20%22chrome%3A//mozapps/skin/profile/profileicon.png%22%5D%2C%0A%09%5B%22Downloads%22%2C%20Application.prefs.getValue%28%22browser.download.dir%22%2C%20%22%22%29%2C%20%22chrome%3A//mozapps/skin/downloads/downloadIcon.png%22%5D%2C%0A%090%2C%0A%09%5B%22Extensions%22%2C%20%22ProfD%5C%5Cextensions%22%2C%20%22chrome%3A//mozapps/skin/extensions/extensionGeneric-16.png%22%5D%2C%0A%09%5B%22Custom%20Buttons%22%2C%20%22ProfD%5C%5Ccustombuttons%22%2C%20%22chrome%3A//custombuttons/skin/cbicon.png%22%5D%2C%0A%09%5B%22Bookmark%20backups%22%2C%20%22ProfD%5C%5Cbookmarkbackups%22%2C%20%22chrome%3A//custombuttons/skin/button.png%22%5D%2C%0A%09%5B%22Search%20plugins%20%28default%29%22%2C%20%22CurProcD%5C%5Csearchplugins%22%2C%20%22chrome%3A//global/skin/icons/Search-glass.png%22%2C%20%220%2C%2016px%2C%2016px%2C%200%22%5D%2C%0A%09%5B%22Search%20plugins%20%28user-defined%29%22%2C%20%22UsrSrchPlugns%22%2C%20%22chrome%3A//global/skin/icons/Search-glass.png%22%2C%20%220%2C%2016px%2C%2016px%2C%200%22%5D%2C%0A%090%2C%0A%09%5B%22Chrome%22%2C%20%22UChrm%22%2C%20%22chrome%3A//global/skin/dirListing/folder.png%22%5D%2C%0A%09%5B%22userChrome.css%22%2C%20%22UChrm%5C%5CuserChrome.css%22%2C%20%22chrome%3A//global/skin/icons/folder-item.png%22%2C%20%220%2C%2016px%2C%2016px%2C%200%22%5D%2C%0A%09%5B%22userContent.css%22%2C%20%22UChrm%5C%5CuserContent.css%22%2C%20%22chrome%3A//global/skin/icons/folder-item.png%22%2C%20%220%2C%2016px%2C%2016px%2C%200%22%5D%0A%5D%3B%0Aconst%20id%20%3D%20_id.replace%28%22custombuttons-button%22%2C%20%22CB-%22%29%3B%0Afunction%20appendNode%28nodeName%2C%20parent%2C%20attrs%29%20%7B%0A%09var%20node%20%3D%20document.createElement%28nodeName%29%3B%0A%09for%20%28var%20attr%20in%20attrs%29%20node.setAttribute%28attr%2C%20attrs%5Battr%5D%29%3B%0A%09return%20parent.appendChild%28node%29%3B%0A%7D%0Athis.popup%20%3D%20appendNode%28%22menupopup%22%2C%20this%2C%20%7B%0A%09id%3A%20id%20+%20%22-popup%22%2C%0A%09position%3A%20%22after_start%22%2C%0A%09oncommand%3A%20%22this.parentNode.openFFF%28event.target.value%29%22%2C%0A%09oncontextmenu%3A%20%22return%20false%22%0A%7D%29%3B%0Adata.forEach%28function%28attrs%2C%20i%29%20%7B%0A%09i++%3B%20if%20%28%21attrs%29%20%7B%0A%09%09appendNode%28%22menuseparator%22%2C%20self.popup%2C%20%7Bid%3A%20id%20+%20%22-menuitem-%22%20+%20i%20+%20%22-separator%22%7D%29%3B%0A%09%09return%3B%0A%09%7D%0A%09var%20menuitem%20%3D%20appendNode%28%22menuitem%22%2C%20self.popup%2C%20%7B%0A%09%09id%3A%20id%20+%20%22-menuitem-%22%20+%20i%2C%0A%09%09class%3A%20%22menuitem-iconic%22%2C%0A%09%09label%3A%20attrs%5B0%5D%2C%0A%09%09value%3A%20attrs%5B1%5D%0A%09%7D%29%3B%0A%09var%20style%20%3D%20%22%22%3B%0A%09if%20%28attrs%5B2%5D%29%20style%20+%3D%20%22list-style-image%3A%20url%28%27%22%20+%20attrs%5B2%5D%20+%20%22%27%29%22%3B%0A%09if%20%28attrs%5B3%5D%29%20style%20+%3D%20%22%3B%20-moz-image-region%3A%20rect%28%22%20+%20attrs%5B3%5D%20+%20%22%29%3B%22%3B%0A%09if%20%28style%29%20menuitem.setAttribute%28%22style%22%2C%20style%29%3B%0A%7D%29%3B%0Athis.openFFF%20%3D%20function%28val%29%20%7B%0A%09if%20%28%21val%29%20return%3B%0A%09var%20root%20%3D%20val.substring%280%2C%20val.indexOf%28%22%5C%5C%22%29%29%20%7C%7C%20val%3B%0A%09if%20%28/%5E%28%5BA-Z%5D%3A%29/.test%28root%29%29%20%7B%0A%09%09var%20file%20%3D%20Cc%5B%22@mozilla.org/file/local%3B1%22%5D.createInstance%28Ci.nsILocalFile%29%3B%0A%09%09file.initWithPath%28val%29%3B%0A%09%7D%20else%20%7B%0A%09%09var%20file%20%3D%20Cc%5B%27@mozilla.org/file/directory_service%3B1%27%5D.getService%28Ci.nsIProperties%29.get%28root%2C%20Ci.nsILocalFile%29%3B%0A%09%09file.initWithPath%28val.replace%28root%2C%20file.path%29%29%3B%0A%09%7D%0A//%09if%20%28file.exists%28%29%29%20file.reveal%28%29%3B%0A%09if%20%28file.exists%28%29%29%20file.launch%28%29%3B%0A%7D%3B%0A%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bthis.popup.openPopup%28this%29%3B%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Отредактировано Dumby (24-06-2013 23:32:57)

Отсутствует

 

№649823-06-2013 15:47:45

villa7
Участник
 
Группа: Members
Зарегистрирован: 21-07-2012
Сообщений: 2235
UA: Firefox 23.0

Re: Custom Buttons

Dumby
Да, теперь отлично, добавил себе ещё prefs.js и user.js стал полный комплект. Спасибо большое.


Лучше спросить у знающих - чем лезть не зная.

Отсутствует

 

№649924-06-2013 20:10:04

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4780
UA: Firefox 3.6

Re: Custom Buttons

villa7 пишет:

Подставить готовый код на это у меня ума хватило:) Спасибо.

:) Тут код немного другой, такой который должен открываться рядом с жестом мыши.

Добавлено 24-06-2013 20:12:39

voqabuhe пишет:

А чтобы сразу в панель закладок попадать, можешь сделать?

Попробуй:

Выделить код

Код:

var menus = {}, 
     menu = null, 
     anchor = document.getElementById('appmenu-button');
     var menuName = 'bookmarksMenuPopup',
     uid = 'myext-'; 
     if ( menus[menuName] !== undefined ) menu = this.menus[menuName];
     else {
          let element = document.createElement('popupset');
          element.setAttribute('id', uid+menuName+'-set');
          menu = document.getElementById(menuName).cloneNode(true);
          menu.setAttribute('id', uid + menuName);
          element.appendChild( menu );
          document.documentElement.appendChild(element);
          menus[menuName] = menu;
          }
     menu.openPopup(anchor,'after_start', event.screenX, event.screenY, true);

Отредактировано bunda1 (24-06-2013 20:13:46)

Отсутствует

 

№650024-06-2013 22:09:56

voqabuhe
Участник
 
Группа: Members
Зарегистрирован: 06-12-2011
Сообщений: 2447
UA: Firefox 24.0

Re: Custom Buttons

bunda1 пишет:

Попробуй:

Да также, открывается меню закладок.

Отсутствует

 

Board footer

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