65 lines
2.3 KiB
JavaScript
65 lines
2.3 KiB
JavaScript
/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
var gMoveBookmarksDialog = {
|
|
_nodes: null,
|
|
|
|
_foldersTree: null,
|
|
get foldersTree() {
|
|
if (!this._foldersTree)
|
|
this._foldersTree = document.getElementById("foldersTree");
|
|
|
|
return this._foldersTree;
|
|
},
|
|
|
|
init: function() {
|
|
this._nodes = window.arguments[0];
|
|
|
|
this.foldersTree.place =
|
|
"place:excludeItems=1&excludeQueries=1&excludeReadOnlyFolders=1&folder=" +
|
|
PlacesUIUtils.allBookmarksFolderId;
|
|
},
|
|
|
|
onOK: function MBD_onOK(aEvent) {
|
|
let selectedNode = this.foldersTree.selectedNode;
|
|
let selectedFolderId = PlacesUtils.getConcreteItemId(selectedNode);
|
|
|
|
if (!PlacesUIUtils.useAsyncTransactions) {
|
|
let transactions = [];
|
|
for (var i=0; i < this._nodes.length; i++) {
|
|
// Nothing to do if the node is already under the selected folder
|
|
if (this._nodes[i].parent.itemId == selectedFolderId)
|
|
continue;
|
|
|
|
let txn = new PlacesMoveItemTransaction(this._nodes[i].itemId,
|
|
selectedFolderId,
|
|
PlacesUtils.bookmarks.DEFAULT_INDEX);
|
|
transactions.push(txn);
|
|
}
|
|
if (transactions.length != 0) {
|
|
let txn = new PlacesAggregatedTransaction("Move Items", transactions);
|
|
PlacesUtils.transactionManager.doTransaction(txn);
|
|
}
|
|
return;
|
|
}
|
|
|
|
PlacesTransactions.batch(function* () {
|
|
let newParentGuid = yield PlacesUtils.promiseItemGuid(selectedFolderId);
|
|
for (let node of this._nodes) {
|
|
// Nothing to do if the node is already under the selected folder.
|
|
if (node.parent.itemId == selectedFolderId)
|
|
continue;
|
|
yield PlacesTransactions.Move({ guid: node.bookmarkGuid
|
|
, newParentGuid }).transact();
|
|
}
|
|
}.bind(this)).then(null, Components.utils.reportError);
|
|
},
|
|
|
|
newFolder: function MBD_newFolder() {
|
|
// The command is disabled when the tree is not focused
|
|
this.foldersTree.focus();
|
|
goDoCommand("placesCmd_new:folder");
|
|
}
|
|
};
|