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

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

№121-06-2013 21:13:35

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

[CB]"Добавить закладку в папку" в контекстном меню

"Добавить закладку в папку" в контекстном меню на странице( Firefox 17 + )
Автор: bunda1
Версия: от 22.03.2018.
Описание: добавляет новый пункт Добавить как закладку в: [имя папки] в контекстном меню на странице как последний пункт, который добавляет страницу или ссылку в папку "Новая папка", если такая папка не существует код сам создаст папку на панели закладок.
Если нажать ПКМ на пункте откроется окошко для изменения папки добавления закладок, после вода названия новой папки соответственно поменяется пункт меню.
Использование: можно создать новую Custom Buttons кнопку или использовать уже существующую кнопку и положитъ код  в вкладку инициализации.

Выделить код

Код:

// "Добавить как закладку в папку" в контекстном меню на странице, от 22.03.2018. ..................
(()=> {
   var s = "CB.bookmarkFolderForSaving";
   var contextMenu = document.getElementById("contentAreaContextMenu");
   var alertsService = Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService);

   
   // Создать новый пункт в контекстном меню на странице ....
   var menuitem = contextMenu.appendChild(document.createElement("menuitem"));   
   menuitem.setAttribute("id", "context-addBookmark");
   menuitem.setAttribute("label", "Добавить закладку в: " + getFolderName());  
   addDestructor(()=> menuitem.remove());
   
   
   // Обрабатывать клики на пункте меню ....    
   addEventListener("click", e=> {     
      if ( e.button == 0 ) {  // ЛКМ добавить закладку
           gContextMenu.onLink 
           ? addBookmark(gContextMenu.getLinkURI(), gContextMenu.linkText(), gContextMenu.onLink) // на ссылке
           : addBookmark(gBrowser.selectedBrowser.webNavigation.currentURI, getDocTitle());       // на странице
           } 
      
      if ( e.button == 2 ) {  // ПКМ изменить папку для закладок 
           contextMenu.hidePopup();
                    
           var val = custombuttons.promptBox(menuitem.label, 'Отмена вернёт значение по умолчанию');
           var newFolder = val[0] ? val[1] : defaultFolder;           

           cbu.setPrefs(s, convertFromUnicode("UTF-8", newFolder));
           menuitem.setAttribute("label", "Добавить закладку в: " + newFolder);            
           
           alertsService.showAlertNotification("chrome://global/skin/icons/information-16.png", newFolder, "Папка для добавления закладок");
           setTimeout(()=> alertsService.closeAlert(), 3500);
           }                  
   }, false, menuitem);
   

   // Получить заголовк страницы или название вкладки ....
   function getDocTitle() {
      var docTitle = content.document.title || gBrowser.mCurrentTab.label;       
      var docTitle = docTitle.replace(/[:.\\\/<>?*|"]+/g, " ").replace(/\s\s+/g, " ");
      return docTitle.substring(0, 50);
   };
   
   
   // Получить из 'about:config' название папки для добавления закладок ....
   function getFolderName() { 
      var p = Services.prefs;
      try { return p.getStringPref ? p.getStringPref(s) : p.getComplexValue(s, Ci.nsISupportsString).data } 
      catch(e) { return "Новая папка" }; // папка по умолчанию 
   };
   
   
   // Конвертировать текст в Unicode ....
   function convertFromUnicode(charset, str) {
      var converter = Cc["@mozilla.org/intl/scriptableunicodeconverter"].createInstance(Ci.nsIScriptableUnicodeConverter);
      converter.charset = charset;
      str = converter.ConvertFromUnicode(str);
      return str + converter.Finish();
   };
   

   // Получить Id нужной папки закладок .... 
   function getBookFolderId(folderName, parentId = 3, res = false) {
      var parentFolder = PlacesUtils.getFolderContents(parentId).root;
      for ( var i = 0; i < parentFolder.childCount; i++ ) {
            var child = parentFolder.getChild(i);            
            if ( child.title == folderName ) {
                 res = child.itemId;
                 break;
                 }
            }      
      return res; 
   }; 
   
            
   // Добавить текущую страницу или ссылку в папку закладок ....
   function addBookmark(url, label, link) {
      var folderName = getFolderName();
      var folderId = getBookFolderId(folderName);
      
      !folderId && PlacesUtils.bookmarks.createFolder(3, folderName, -1); // создать папку если не существует
      PlacesUtils.bookmarks.insertBookmark(folderId, url, 0, label);
 
      var image = gBrowser.mCurrentTab.image || "chrome://global/skin/icons/information-16.png";
      alertsService.showAlertNotification(image, label, 'Добавил закладку в папку: ' + folderName);
      setTimeout(()=> alertsService.closeAlert(), 3500);
   };   
})();

За помощь с кнопкой спасибо Dumby и okkamas_knife

Отредактировано bunda1 (21-06-2013 23:24:58)

Отсутствует

 

№221-06-2013 23:32:14

Zaycoff
Участник
 
Группа: Extensions
Зарегистрирован: 18-02-2012
Сообщений: 1410
UA: Firefox 21.0

Re: [CB]"Добавить закладку в папку" в контекстном меню

Классная кнопка, спасиб! :music:

Можно её как-то настроить так, чтобы сохранять закладки в «Меню закладок», а не в «Панель закладок» (и вообще без папки, да, я знаю, что так делает стандартный пункт меню, но он у меня глючит, видимо конфликт с каким-то дополнением, но лень разбираться)?
А то я привык сортировать закладки потом, а вначале кидать их, чтобы они на виду висели в меню, всякие темы в новостях, где я слежу за дискуссией, а если что-то важное, то потом сортирую в подпапки, а ненужное удаляю...

Отсутствует

 

№322-06-2013 10:47:54

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

Re: [CB]"Добавить закладку в папку" в контекстном меню

Zaycoff пишет:

Можно её как-то настроить так, чтобы сохранять закладки в «Меню закладок»

Наверно можно, попробуй

1. Заменить var rootFolder = bmsvc.toolbarFolder; на var rootFolder = bmsvc.placesRoot;
2. ПКМ на пункте меню, ввести «Меню закладок»

Отсутствует

 

№422-06-2013 16:10:02

Zaycoff
Участник
 
Группа: Extensions
Зарегистрирован: 18-02-2012
Сообщений: 1410
UA: Firefox 21.0

Re: [CB]"Добавить закладку в папку" в контекстном меню

Dumby
О, спасибо огромное, шикарно работает =)

Отсутствует

 

№522-06-2013 21:25:42

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

Re: [CB]"Добавить закладку в папку" в контекстном меню

bunda1
Спасибо. Интересное решение проблемы.

Dumby пишет:

1. Заменить var rootFolder = bmsvc.toolbarFolder; на var rootFolder = bmsvc.placesRoot;
2. ПКМ на пункте меню, ввести «Меню закладок»

Для не корня можно ещё проще, заменив на bmsvc.bookmarksMenuFolder.

Отредактировано wolwerine (22-06-2013 21:30:01)

Отсутствует

 

№610-06-2016 00:49:48

Zaycoff
Участник
 
Группа: Extensions
Зарегистрирован: 18-02-2012
Сообщений: 1410
UA: Firefox 45.0

Re: [CB]"Добавить закладку в папку" в контекстном меню

Поломалась кнопочка, если не сложно, почините плиз.

Отсутствует

 

№711-06-2016 13:36:04

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

Re: [CB]"Добавить закладку в папку" в контекстном меню

Zaycoff пишет:

Поломалась кнопочка, если не сложно, почините плиз.

"Добавить закладку в папку" в контекстном меню на странице

Отсутствует

 

№811-06-2016 16:40:41

Zaycoff
Участник
 
Группа: Extensions
Зарегистрирован: 18-02-2012
Сообщений: 1410
UA: Firefox 45.0

Re: [CB]"Добавить закладку в папку" в контекстном меню

bunda1, благодарю! :music:

Отсутствует

 

№921-03-2018 18:50:32

Stkvsky
Участник
 
Группа: Members
Зарегистрирован: 26-06-2012
Сообщений: 901
UA: Firefox 55.0

Re: [CB]"Добавить закладку в папку" в контекстном меню

Снова сломалась, будьте добры, почините пожалуйста если не сложно.

Отредактировано Stkvsky (21-03-2018 18:56:58)

Отсутствует

 

№1022-03-2018 14:20:26

drage2
Участник
 
Группа: Members
Откуда: Донецк
Зарегистрирован: 23-11-2017
Сообщений: 261
UA: Firefox 57.0

Re: [CB]"Добавить закладку в папку" в контекстном меню

В Симанки работает, иконку присобачил...Надо правым кликом ID папки менять , а не название . Т.е не только на панели , в меню, к примеру...

Отсутствует

 

№1122-03-2018 16:27:59

Stkvsky
Участник
 
Группа: Members
Зарегистрирован: 26-06-2012
Сообщений: 901
UA: Firefox 55.0

Re: [CB]"Добавить закладку в папку" в контекстном меню

drage2 пишет:

Т.е не только на панели , в меню, к примеру...

Вы о чем? [firefox] 55, не работает, проверял на двух профилях.

Отредактировано Stkvsky (22-03-2018 16:57:06)

Отсутствует

 

№1222-03-2018 18:29:50

drage2
Участник
 
Группа: Members
Откуда: Донецк
Зарегистрирован: 23-11-2017
Сообщений: 261
UA: Firefox 57.0

Re: [CB]"Добавить закладку в папку" в контекстном меню

Stkvsky
В 57 работает, но не создает новые папки...В 52 - работает полностью.

Отсутствует

 

№1322-03-2018 21:36:48

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

Re: [CB]"Добавить закладку в папку" в контекстном меню

Stkvsky пишет:

Снова сломалась, будьте добры, почините пожалуйста если не сложно.

"Добавить закладку в папку" в контекстном меню на странице

Отсутствует

 

№1422-03-2018 22:45:21

drage2
Участник
 
Группа: Members
Откуда: Донецк
Зарегистрирован: 23-11-2017
Сообщений: 261
UA: Firefox 57.0

Re: [CB]"Добавить закладку в папку" в контекстном меню

Оперативненько! Ну, и иконку добавлю:

Выделить код

Код:

// Создать новый пункт в контекстном меню на странице ....
   var menuitem = contextMenu.appendChild(document.createElement("menuitem"));   
   menuitem.setAttribute("id", "context-addBookmark");
   menuitem.setAttribute("label", "Добавить закладку в: " + getFolderName()); 
   menuitem.setAttribute("class", "menu-iconic");
   menuitem.setAttribute("image", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACD0lEQVR42oWTXUhTYRiAP89qziAYepG6TfAiyV1JsFojMJrVjf3dDOsmMoOwCwnSXLSJXgWDqAWBF7aGoFGGV0EUrL9FERoh1bQsqeiXfrzoB0N6es8528ncaC88fOfwnff53vN976eUUprafJk8lPIKS1XRkI8LRVayUVgmLBFsQklBwfhb8rAkRauSidQLDK49/zvqFKmqxBKcn4BzDzBGnU39BVZfTMOxQ6ZIXk6msdh7wUz+9IP/RraaLYYgfAUL73Fz8tJjs5rBh3B2HPrvQ/P+N8TvYJAVdBqCfRcxWH8aYm0dpCIRxvr6SG7bSWLrDsZ6e7ke7SESaiV61UoeFVoMwfYEBrGWNr6NjEAmY5JKmUxPw9QU35NJDq/ekBOcEqoNQSAOnh5Ih0IwPAwJsQ0MSP2DMDTEfDTKV7+f904nN12uBavr/SECZ6dZ1u11Aejqgu5u2ZAwv9vbmfP5mLXZeK0UrzSNGy53bnWXdYw6K47CEX8znwMB5oNBvtTX87G0lA+SmEueqazkYHWdLtgl1OVaybvwfPd41vLI42HGbicjiZPCy7IyntTUcKBqpZ58Iru61dZ6a64RwkJMmGi022dv1dbyrKKCp+XlpOW5yeH4KXPvhMbs3fgndJtDqDJ3VjX4NO3MqNs9J/xapWn3sv/dlJfcGr+rFbijunC5EBQ6hN2C27j6i+IP/uDMhPNYgHUAAAAASUVORK5CYII="); 
   addDestructor(()=> menuitem.remove())

Отсутствует

 

№1523-03-2018 09:50:58

Stkvsky
Участник
 
Группа: Members
Зарегистрирован: 26-06-2012
Сообщений: 901
UA: Firefox 55.0

Re: [CB]"Добавить закладку в папку" в контекстном меню

bunda1
Благодарю.

Отсутствует

 

Board footer

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