Move getDescriptiveTag to core

This commit is contained in:
Joas Schilling 2016-01-21 15:35:15 +01:00
parent 2b4532c6b9
commit f108dbfa6a
4 changed files with 99 additions and 3 deletions

View File

@ -45,6 +45,7 @@
"mimetypelist.js",
"files/fileinfo.js",
"files/client.js",
"systemtags/systemtags.js",
"systemtags/systemtagmodel.js",
"systemtags/systemtagscollection.js",
"systemtags/systemtagsmappingcollection.js",

View File

@ -43,9 +43,6 @@
}
});
/**
* @namespace
*/
OC.SystemTags = OC.SystemTags || {};
OC.SystemTags.SystemTagModel = SystemTagModel;
})(OC);

View File

@ -0,0 +1,47 @@
/*
* Copyright (c) 2016
*
* This file is licensed under the Affero General Public License version 3
* or later.
*
* See the COPYING-README file.
*
*/
(function(OC) {
/**
* @namespace
*/
OC.SystemTags = {
/**
*
* @param {OC.SystemTags.SystemTagModel|Object|String} tag
* @return {jQuery}
*/
getDescriptiveTag: function(tag) {
if (_.isUndefined(tag.name) && !_.isUndefined(tag.toJSON)) {
tag = tag.toJSON();
}
if (_.isUndefined(tag.name)) {
return $('<span>').addClass('non-existing-tag').text(
t('core', 'Non-existing tag #{tag}', {
tag: tag
})
);
}
var $span = $('<span>'),
$tag = $('<em>').text(
t('core', '({uservisible}, {userassignable})', {
uservisible: tag.userVisible ? t('core', 'visible') : t('core', 'invisible'),
userassignable: tag.userAssignable ? t('core', 'assignable') : t('core', 'not assignable')
})
);
$span.append(escapeHTML(tag.name) + ' ');
$span.append($tag);
return $span;
}
};
})(OC);

View File

@ -0,0 +1,51 @@
/**
* ownCloud
*
* @author Joas Schilling
* @copyright 2016 Joas Schilling <nickvergessen@owncloud.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
* License as published by the Free Software Foundation; either
* version 3 of the License, or any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU AFFERO GENERAL PUBLIC LICENSE for more details.
*
* You should have received a copy of the GNU Affero General Public
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
*
*/
describe('OC.SystemTags tests', function() {
it('describes non existing tag', function() {
var $return = OC.SystemTags.getDescriptiveTag('23');
expect($return.text()).toEqual('Non-existing tag #23');
expect($return.hasClass('non-existing-tag')).toEqual(true);
});
it('describes SystemTagModel', function() {
var tag = new OC.SystemTags.SystemTagModel({
id: 23,
name: 'Twenty Three',
userAssignable: true,
userVisible: true
});
var $return = OC.SystemTags.getDescriptiveTag(tag);
expect($return.text()).toEqual('Twenty Three (visible, assignable)');
expect($return.hasClass('non-existing-tag')).toEqual(false);
});
it('describes JSON tag object', function() {
var $return = OC.SystemTags.getDescriptiveTag({
id: 42,
name: 'Fourty Two',
userAssignable: false,
userVisible: false
});
expect($return.text()).toEqual('Fourty Two (invisible, not assignable)');
expect($return.hasClass('non-existing-tag')).toEqual(false);
});
});