>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Сustom Buttons http://forum.mozilla-russia.org/viewforum.php?id=34 >[CB]"Добавить закладку в папку" в контекстном меню http://forum.mozilla-russia.org/viewtopic.php?id=59458 |
bunda1 > 21-06-2013 21:13:35 |
"Добавить закладку в папку" в контекстном меню на странице( Firefox 17 + ) Выделить код Код:// "Добавить как закладку в папку" в контекстном меню на странице, от 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 |
Zaycoff > 21-06-2013 23:32:14 |
Классная кнопка, спасиб! Можно её как-то настроить так, чтобы сохранять закладки в «Меню закладок», а не в «Панель закладок» (и вообще без папки, да, я знаю, что так делает стандартный пункт меню, но он у меня глючит, видимо конфликт с каким-то дополнением, но лень разбираться)? |
Dumby > 22-06-2013 10:47:54 |
Zaycoff пишет
Наверно можно, попробуй 1. Заменить var rootFolder = bmsvc.toolbarFolder; на var rootFolder = bmsvc.placesRoot; |
Zaycoff > 22-06-2013 16:10:02 |
Dumby |
wolwerine > 22-06-2013 21:25:42 |
bunda1 Dumby пишет
Для не корня можно ещё проще, заменив на bmsvc.bookmarksMenuFolder. |
Zaycoff > 10-06-2016 00:49:48 |
Поломалась кнопочка, если не сложно, почините плиз. |
bunda1 > 11-06-2016 13:36:04 |
Zaycoff пишет
|
Zaycoff > 11-06-2016 16:40:41 |
bunda1, благодарю! |
Stkvsky > 21-03-2018 18:50:32 |
Снова сломалась, будьте добры, почините пожалуйста если не сложно. |
drage2 > 22-03-2018 14:20:26 |
В Симанки работает, иконку присобачил...Надо правым кликом ID папки менять , а не название . Т.е не только на панели , в меню, к примеру... |
Stkvsky > 22-03-2018 16:27:59 |
drage2 пишет
Вы о чем? 55, не работает, проверял на двух профилях. |
drage2 > 22-03-2018 18:29:50 |
Stkvsky |
bunda1 > 22-03-2018 21:36:48 |
Stkvsky пишет
|
drage2 > 22-03-2018 22:45:21 |
Оперативненько! Ну, и иконку добавлю: Выделить код Код:// Создать новый пункт в контекстном меню на странице .... 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()) |
Stkvsky > 23-03-2018 09:50:58 |
bunda1 |