Skip to content

Commit 4fce33a

Browse files
committed
Implementing clean tags functionality #65
1 parent dff0e60 commit 4fce33a

File tree

4 files changed

+56
-14
lines changed

4 files changed

+56
-14
lines changed

data/index.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -414,6 +414,7 @@ <h4 data-i18n="ns.dialogs:tagOperationTitle">Tag operation on multiple files</h4
414414
</div>
415415
</div>
416416
<div class="modal-footer">
417+
<button id="cleanTagsButton" class="btn btn-danger pull-left" data-dismiss="modal" aria-hidden="true" data-i18n="ns.dialogs:tagOperationCleanTags">Clean Tags</button>
417418
<button class="btn" data-dismiss="modal" aria-hidden="true"><i class="fa fa-times fa-lg"></i></button>
418419
<button id="removeTagsButton" class="btn btn-warning" data-dismiss="modal" aria-hidden="true" data-i18n="ns.dialogs:tagOperationRemoveTag">Remove Tags</button>
419420
<button id="addTagsButton" class="btn btn-primary" data-dismiss="modal" aria-hidden="true" data-i18n="ns.dialogs:tagOperationAddTag">Add Tags</button>

data/js/tags.ui.js

Lines changed: 30 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,17 @@
110110
);
111111
generateTagGroups();
112112
TSCORE.PerspectiveManager.refreshFileListContainer();
113-
});
113+
});
114+
115+
$( "#cleanTagsButton" ).click( function() {
116+
TSCORE.showConfirmDialog(
117+
$.i18n.t("ns.dialogs:cleanFilesTitleConfirm"),
118+
$.i18n.t("ns.dialogs:cleanFilesContentConfirm"),
119+
function() {
120+
TSCORE.TagUtils.cleanFilesFromTags(TSCORE.selectedFiles);
121+
}
122+
);
123+
});
114124

115125
$( "#addTagsButton" ).click( function() {
116126
var tags = $("#tags").val().split(",");
@@ -251,28 +261,37 @@
251261
); // end group
252262

253263
var tagButtons = $("<div>").appendTo( "#tagButtonsContent"+i );
264+
var tag;
265+
var tagTitle;
254266
for(var j=0; j < TSCORE.Config.Settings.tagGroups[i].children.length; j++) {
255-
var tagTitle;
256-
if(TSCORE.Config.Settings.tagGroups[i].children[j].description !== undefined) {
257-
tagTitle = TSCORE.Config.Settings.tagGroups[i].children[j].description;
267+
tag = TSCORE.Config.Settings.tagGroups[i].children[j];
268+
if(tag.description !== undefined) {
269+
tagTitle = tag.description;
258270
} else {
259-
tagTitle = "Opens context menu for "+TSCORE.Config.Settings.tagGroups[i].children[j].title;
271+
tagTitle = "Opens context menu for "+tag.title;
260272
}
261273
var tagIcon = "";
262-
if(TSCORE.Config.Settings.tagGroups[i].children[j].type === "smart"){
274+
if(tag.type === "smart"){
263275
tagIcon = "<span class='fa fa-flask'/> ";
264276
}
277+
// TODO Add keybinding to tags
278+
// if(tag.keyBinding !== undefined) {
279+
// tagIcon = "<span class='fa fa-key'/> ";
280+
// Mousetrap.bind(tag.keyBinding, (function(innerTag) {
281+
// TSCORE.TagUtils.addTag(TSCORE.selectedFiles, [innerTag]);
282+
// } (tag.title) ));
283+
// }
265284
var tagCount = "";
266-
if(TSCORE.Config.Settings.tagGroups[i].children[j].count !== undefined) {
267-
tagCount = " ("+TSCORE.Config.Settings.tagGroups[i].children[j].count+")";
285+
if(tag.count !== undefined) {
286+
tagCount = " ("+tag.count+")";
268287
}
269288
tagButtons.append($("<a>", {
270289
"class": "btn btn-sm tagButton",
271-
"tag": TSCORE.Config.Settings.tagGroups[i].children[j].title,
290+
"tag": tag.title,
272291
"parentKey": TSCORE.Config.Settings.tagGroups[i].key,
273292
"title": tagTitle,
274-
"text": TSCORE.Config.Settings.tagGroups[i].children[j].title+tagCount+" ",
275-
"style": generateTagStyle(TSCORE.Config.Settings.tagGroups[i].children[j])
293+
"text": tag.title+tagCount+" ",
294+
"style": generateTagStyle(tag)
276295
})
277296
.draggable({
278297
"appendTo": "body",

data/js/tagutils.js

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -310,9 +310,26 @@
310310

311311
TSCORE.IO.renameFile(filePath, containingDirectoryPath+TSCORE.dirSeparator+newFileName);
312312
}
313-
314-
315-
function addTag(filePathArray, tagArray) {
313+
314+
function cleanFileFromTags(filePath) {
315+
console.log("Cleaning file from tags: " + filePath);
316+
var fileTitle = extractTitle(filePath);
317+
var fileExt = extractFileExtension(filePath);
318+
var containingDirectoryPath = extractContainingDirectoryPath(filePath);
319+
if(fileExt.length > 0) {
320+
fileExt = "."+fileExt;
321+
}
322+
TSCORE.IO.renameFile(filePath, containingDirectoryPath+TSCORE.dirSeparator+fileTitle+fileExt);
323+
}
324+
325+
function cleanFilesFromTags(filePathArray) {
326+
console.log("Cleaning file from tags");
327+
for (var i=0; i < filePathArray.length; i++) {
328+
cleanFileFromTags(filePathArray[i]);
329+
}
330+
}
331+
332+
function addTag(filePathArray, tagArray) {
316333
console.log("Adding tags to files");
317334
for (var i=0; i < filePathArray.length; i++) {
318335
writeTagsToFile(filePathArray[i], tagArray);
@@ -455,6 +472,7 @@
455472
exports.removeTag = removeTag;
456473
exports.removeTags = removeTags;
457474
exports.addTag = addTag;
475+
exports.cleanFilesFromTags = cleanFilesFromTags;
458476
exports.changeTitle = changeTitle;
459477
exports.stringEndsWith = stringEndsWith;
460478

data/locales/en/ns.dialogs.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,9 @@
4444
"tagOperationTagsPlaceholder": "List of tags",
4545
"tagOperationAddTag": "Add Tags",
4646
"tagOperationRemoveTag": "Remove Tags",
47+
"tagOperationCleanTags": "Clean Tags",
48+
"cleanFilesTitleConfirm": "Clean Files from Tags",
49+
"cleanFilesContentConfirm": "Do you really want to remove all tags from the selected files?",
4750
"editTagMasterTitle": "Edit Tag",
4851
"editTagMasterName": "Name",
4952
"editTagMasterColor": "Color",
@@ -61,6 +64,7 @@
6164
"filePropertiesPath": "Path",
6265
"filePropertiesSize": "Size in Bytes",
6366
"filePropertiesLMDT": "Last Modified Datetime",
67+
"filePropertiesTags": "Tags",
6468
"createLocationTitle": "Connect a Location",
6569
"createLocationPath": "Location Path",
6670
"createLocationName": "Location Name",

0 commit comments

Comments
 (0)