From 252f56adfb8d453171677a21132a77c32d97a41e Mon Sep 17 00:00:00 2001 From: "ben%netscape.com" Date: Sat, 5 May 2007 04:35:25 +0000 Subject: [PATCH] Fix for 128815 - numerous bookmarks improvements, including fixes for bugs: 77411, 114142, 126748, 128571. r=blake, sr=hyatt, a=asa git-svn-id: svn://10.0.0.236/trunk@225800 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/suite/common/bookmarks/addBookmark.js | 2 +- mozilla/suite/common/bookmarks/bm-panel.xul | 2 +- mozilla/suite/common/bookmarks/bookmarks.js | 141 ++++++++++++++++-- .../chrome/common/bookmarks/bookmarks.dtd | 22 ++- 4 files changed, 145 insertions(+), 22 deletions(-) diff --git a/mozilla/suite/common/bookmarks/addBookmark.js b/mozilla/suite/common/bookmarks/addBookmark.js index d9b1b1847e1..bc33cb60d33 100644 --- a/mozilla/suite/common/bookmarks/addBookmark.js +++ b/mozilla/suite/common/bookmarks/addBookmark.js @@ -234,7 +234,7 @@ function onOK() catch (e) { } - kBMS.createBookmarkEx(gFld_Name.value, url, gBookmarkCharset, rFolder, -1); + kBMS.createBookmarkWithDetails(gFld_Name.value, url, gBookmarkCharset, rFolder, -1); } } diff --git a/mozilla/suite/common/bookmarks/bm-panel.xul b/mozilla/suite/common/bookmarks/bm-panel.xul index 4c28105d231..d1866bc63b9 100644 --- a/mozilla/suite/common/bookmarks/bm-panel.xul +++ b/mozilla/suite/common/bookmarks/bm-panel.xul @@ -82,5 +82,5 @@ oncommand="document.getElementById('bookmarks-view').openFindDialog();"/> - + diff --git a/mozilla/suite/common/bookmarks/bookmarks.js b/mozilla/suite/common/bookmarks/bookmarks.js index 8317b7c0fcf..06dc8b10672 100644 --- a/mozilla/suite/common/bookmarks/bookmarks.js +++ b/mozilla/suite/common/bookmarks/bookmarks.js @@ -27,16 +27,10 @@ function Startup() { var bookmarksView = document.getElementById("bookmarks-view"); - // Set up the outliner controller - // gBookmarksShell = new nsBookmarksShell("bookmarks-outliner", "bookmarks-outlinerbody"); - // var rdflinerObserver = new nsBookmarksRDFLinerObserver(); - // var builder = bookmarksBody.builder.QueryInterface(Components.interfaces.nsIXULOutlinerBuilder); - // builder.addObserver(rdflinerObserver); const windowNode = document.getElementById("bookmark-window"); // If we've been opened with a parameter, root the outliner on it. if ("arguments" in window && window.arguments[0]) { var uri = window.arguments[0]; - dump(uri); bookmarksView.outliner.setAttribute("ref", uri); var title = ""; @@ -99,14 +93,135 @@ function sendBookmarksLink() outliner.sendLink(); } -function importIEFavorites() +var gConstructedViewMenuSortItems = false; +function fillViewMenu(aEvent) { - var bookmarksView = document.getElementById("bookmarks-view"); - var RDFS = bookmarksView.rdf; + var adjacentElement = document.getElementById("fill-before-this-node"); + var popupElement = aEvent.target; - var BMDS = bookmarksView.bookmarksDS; - var BMSvc = BMDS.QueryInterface(Components.interfaces.nsIBookmarksService); - var favFolder = BMSvc.createFolder("Imported IE Favorites", RDFS.GetResource("NC:BookmarksRoot")); - BMSvc.importSystemBookmarks(favFolder) + var bookmarksView = document.getElementById("bookmarks-view"); + var columns = bookmarksView.columns; + + if (!gConstructedViewMenuSortItems) { + for (var i = 0; i < columns.length; ++i) { + var name = columns[i].name; + var accesskey = columns[i].accesskey; + + var menuitem = document.createElement("menuitem"); + var nameTemplate = bookmarksView._bundle.GetStringFromName("SortMenuItem"); + var name = nameTemplate.replace(/%NAME%/g, columns[i].label); + menuitem.setAttribute("label", name); + menuitem.setAttribute("accesskey", columns[i].accesskey); + menuitem.setAttribute("resource", columns[i].resource); + menuitem.setAttribute("id", "sortMenuItem:" + columns[i].resource); + menuitem.setAttribute("checked", columns[i].sortActive); + menuitem.setAttribute("name", "sortSet"); + menuitem.setAttribute("type", "radio"); + + popupElement.insertBefore(menuitem, adjacentElement); + } + + gConstructedViewMenuSortItems = true; + } + + const kPrefSvcContractID = "@mozilla.org/preferences;1"; + const kPrefSvcIID = Components.interfaces.nsIPrefService; + var prefSvc = Components.classes[kPrefSvcContractID].getService(kPrefSvcIID); + var bookmarksSortPrefs = prefSvc.getBranch("browser.bookmarks.sort."); + + if (gConstructedViewMenuSortItems) { + var resource = bookmarksSortPrefs.getCharPref("resource"); + var element = document.getElementById("sortMenuItem:" + resource); + if (element) + element.setAttribute("checked", "true"); + } + + var sortAscendingMenu = document.getElementById("ascending"); + var sortDescendingMenu = document.getElementById("descending"); + var noSortMenu = document.getElementById("natural"); + + sortAscendingMenu.setAttribute("checked", "false"); + sortDescendingMenu.setAttribute("checked", "false"); + noSortMenu.setAttribute("checked", "false"); + var direction = bookmarksSortPrefs.getCharPref("direction"); + if (direction == "natural") + sortAscendingMenu.setAttribute("checked", "true"); + else if (direction == "ascending") + sortDescendingMenu.setAttribute("checked", "true"); + else + noSortMenu.setAttribute("checked", "true"); +} + +function onViewMenuSortItemSelected(aEvent) +{ + var resource = aEvent.target.getAttribute("resource"); + + const kPrefSvcContractID = "@mozilla.org/preferences;1"; + const kPrefSvcIID = Components.interfaces.nsIPrefService; + var prefSvc = Components.classes[kPrefSvcContractID].getService(kPrefSvcIID); + var bookmarksSortPrefs = prefSvc.getBranch("browser.bookmarks.sort."); + + switch (resource) { + case "": + break; + case "direction": + var dirn = bookmarksSortPrefs.getCharPref("direction"); + if (aEvent.target.id == "ascending") + bookmarksSortPrefs.setCharPref("direction", "natural"); + else if (aEvent.target.id == "descending") + bookmarksSortPrefs.setCharPref("direction", "ascending"); + else + bookmarksSortPrefs.setCharPref("direction", "descending"); + break; + default: + bookmarksSortPrefs.setCharPref("resource", resource); + var direction = bookmarksSortPrefs.getCharPref("direction"); + if (direction == "descending") + bookmarksSortPrefs.setCharPref("direction", "natural"); + break; + } + + aEvent.preventCapture(); +} + +var gConstructedColumnsMenuItems = false; +function fillColumnsMenu(aEvent) +{ + var bookmarksView = document.getElementById("bookmarks-view"); + var columns = bookmarksView.columns; + + if (!gConstructedColumnsMenuItems) { + for (var i = 0; i < columns.length; ++i) { + var menuitem = document.createElement("menuitem"); + menuitem.setAttribute("label", columns[i].label); + menuitem.setAttribute("resource", columns[i].resource); + menuitem.setAttribute("id", "columnMenuItem:" + columns[i].resource); + menuitem.setAttribute("type", "checkbox"); + menuitem.setAttribute("checked", columns[i].hidden != "true"); + aEvent.target.appendChild(menuitem); + } + + gConstructedColumnsMenuItems = true; + } + else { + for (var i = 0; i < columns.length; ++i) { + var element = document.getElementById("columnMenuItem:" + columns[i].resource); + if (element && columns[i].hidden != "true") + element.setAttribute("checked", "true"); + } + } + + aEvent.preventBubble(); +} + +function onViewMenuColumnItemSelected(aEvent) +{ + var resource = aEvent.target.getAttribute("resource"); + if (resource != "") { + var bookmarksView = document.getElementById("bookmarks-view"); + bookmarksView.toggleColumnVisibility(resource); + } + + aEvent.preventBubble(); } diff --git a/mozilla/suite/locales/en-US/chrome/common/bookmarks/bookmarks.dtd b/mozilla/suite/locales/en-US/chrome/common/bookmarks/bookmarks.dtd index 7a1c6760db9..768dd4f68d7 100644 --- a/mozilla/suite/locales/en-US/chrome/common/bookmarks/bookmarks.dtd +++ b/mozilla/suite/locales/en-US/chrome/common/bookmarks/bookmarks.dtd @@ -66,12 +66,20 @@ - - - - - - - + + + + + + + + + + + + + + +