69 lines
1.7 KiB
JavaScript
69 lines
1.7 KiB
JavaScript
function print(subTree, level) {
|
|
let title = subTree.title;
|
|
let id = subTree.id;
|
|
let enabled = subTree.children.every(function(child) {
|
|
return child.children == null;
|
|
});
|
|
let indentation = ' '.repeat(level);
|
|
|
|
console.log(indentation + title + ' (' + id + '): ' + (enabled ? 'enabled' : 'disabled'));
|
|
|
|
let select = document.getElementById('select');
|
|
|
|
let option = document.createElement('option');
|
|
option.setAttribute('value', id);
|
|
if(!enabled) {
|
|
option.setAttribute('disabled', 'disabled');
|
|
}
|
|
option.innerHTML = indentation + title;
|
|
|
|
select.appendChild(option);
|
|
|
|
subTree.children.forEach(function (node) {
|
|
if(node.children == null) {
|
|
//bookmark
|
|
} else {
|
|
//folder
|
|
|
|
print(node, level + 1);
|
|
}
|
|
});
|
|
}
|
|
|
|
chrome.bookmarks.getTree(function(tree) {
|
|
tree[0].children.forEach(function(node) {
|
|
print(node, 0);
|
|
});
|
|
});
|
|
|
|
document.getElementById('exportButton').onclick = function() {
|
|
let deleteFolder = document.getElementById('delete').checked;
|
|
let includeNames = document.getElementById('includeNames').checked;
|
|
|
|
let select = document.getElementById('select');
|
|
let folderId = select.options[select.selectedIndex].value;
|
|
|
|
chrome.bookmarks.getSubTree(folderId, function(nodes) {
|
|
let folder = nodes[0];
|
|
console.log(folder);
|
|
let folderName = folder.title;
|
|
|
|
let fileContents = folderName + '\n\n';
|
|
|
|
for(bookmark of folder.children) {
|
|
if(includeNames) {
|
|
fileContents += bookmark.title + ': ' + bookmark.url + '\n';
|
|
} else {
|
|
fileContents += bookmark.url + '\n';
|
|
}
|
|
}
|
|
|
|
let fileBlob = new Blob([ fileContents ], { type: "text/plain;charset=utf-8" });
|
|
saveAs(fileBlob, folderName + '.txt');
|
|
|
|
if(deleteFolder && confirm('Delete folder?')) {
|
|
chrome.bookmarks.removeTree(folderId);
|
|
}
|
|
});
|
|
};
|