mirror of
http://git.whoc.org.uk/git/password-manager.git
synced 2025-10-25 17:47:34 +02:00
Improved tag handling
Now tag counting reflects whether archived cards are shown or not. Also available the option to select all untagged cards, with matching counter. Card deletion is now broken, while I found a way to handle the confirmation dialog (see DialogBox component)
This commit is contained in:
@@ -155,12 +155,8 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.Record, Clipperz.PM.DataModel.Encrypt
|
||||
|
||||
//............................................................................
|
||||
|
||||
'tagChar': function () {
|
||||
return Clipperz.PM.DataModel.Record.tagChar;
|
||||
},
|
||||
|
||||
'tagRegExp': function () {
|
||||
return new RegExp('\\' + this.tagChar() + '(\\w+)', 'g');
|
||||
return new RegExp('\\' + Clipperz.PM.DataModel.Record.tagChar + '(' + Clipperz.PM.DataModel.Record.specialTagChar + '?\\w+)', 'g');
|
||||
},
|
||||
|
||||
'trimSpacesRegExp': function () {
|
||||
@@ -1006,14 +1002,23 @@ Clipperz.PM.DataModel.Record.defaultCardInfo = {
|
||||
Clipperz.PM.DataModel.Record.defaultSearchField = '_searchableContent';
|
||||
|
||||
Clipperz.PM.DataModel.Record.tagChar = '\uE009';
|
||||
Clipperz.PM.DataModel.Record.specialTagsWrapper = '___';
|
||||
Clipperz.PM.DataModel.Record.specialTagChar = '\uE010';
|
||||
Clipperz.PM.DataModel.Record.specialTagsConstructor = function (aTag) {
|
||||
return Clipperz.PM.DataModel.Record.specialTagsWrapper + aTag + Clipperz.PM.DataModel.Record.specialTagsWrapper;
|
||||
return Clipperz.PM.DataModel.Record.specialTagChar + aTag;
|
||||
}
|
||||
Clipperz.PM.DataModel.Record.archivedTag = Clipperz.PM.DataModel.Record.specialTagsConstructor('archived');
|
||||
Clipperz.PM.DataModel.Record.archivedTag = Clipperz.PM.DataModel.Record.specialTagsConstructor('ARCH');
|
||||
Clipperz.PM.DataModel.Record.regExpForTag = function (aTag) {
|
||||
return new RegExp('\\' + Clipperz.PM.DataModel.Record.tagChar + aTag, 'g');
|
||||
};
|
||||
Clipperz.PM.DataModel.Record.regExpForNoTag = function () {
|
||||
return new RegExp('^((?!\\' + Clipperz.PM.DataModel.Record.tagChar + '[^' + Clipperz.PM.DataModel.Record.specialTagChar + ']).)*$', 'g');
|
||||
}
|
||||
Clipperz.PM.DataModel.Record.isSpecialTag = function (aTag) {
|
||||
return aTag.indexOf(Clipperz.PM.DataModel.Record.specialTagChar) == 0;
|
||||
};
|
||||
Clipperz.PM.DataModel.Record.isRegularTag = function (aTag) {
|
||||
return !Clipperz.PM.DataModel.Record.isSpecialTag(aTag);
|
||||
};
|
||||
Clipperz.PM.DataModel.Record.regExpForSearch = function (aSearch) {
|
||||
return new RegExp(aSearch.replace(/[^A-Za-z0-9]/g, '\\$&'), 'i');
|
||||
};
|
||||
|
||||
@@ -509,11 +509,18 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.User, Object, {
|
||||
|
||||
//=========================================================================
|
||||
|
||||
'getTags': function () {
|
||||
'getTags': function (shouldIncludeArchivedCards) {
|
||||
var archivedCardsFilter = (shouldIncludeArchivedCards || false)
|
||||
? MochiKit.Async.succeed
|
||||
: MochiKit.Base.partial(MochiKit.Base.filter, function (someTags) {
|
||||
return someTags.indexOf(Clipperz.PM.DataModel.Record.archivedTag) == -1;
|
||||
});
|
||||
|
||||
return Clipperz.Async.callbacks("User.getTags", [
|
||||
MochiKit.Base.method(this, 'getRecords'),
|
||||
MochiKit.Base.partial(MochiKit.Base.map, MochiKit.Base.methodcaller('tags')),
|
||||
Clipperz.Async.collectAll,
|
||||
archivedCardsFilter,
|
||||
MochiKit.Base.flattenArray,
|
||||
MochiKit.Iter.groupby,
|
||||
function (someGroups) {
|
||||
@@ -556,6 +563,7 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.User, Object, {
|
||||
|
||||
], {trace:false});
|
||||
},
|
||||
|
||||
/*
|
||||
'filterRecordsInfo': function (someArgs) {
|
||||
var info = (someArgs.info ? someArgs.info : Clipperz.PM.DataModel.Record.defaultCardInfo);
|
||||
|
||||
Reference in New Issue
Block a user