diff options
author | Lucas Azevedo <lhs_azevedo@hotmail.com> | 2023-09-04 07:52:35 -0300 |
---|---|---|
committer | John Molakvoæ <skjnldsv@users.noreply.github.com> | 2023-09-13 10:23:10 +0200 |
commit | 146e9eeb9f3c7d4462ea575788be9327a51413ea (patch) | |
tree | aca3efac658bca621b539ef3d054c1e52a6c512d /apps/files/js | |
parent | c6e6ebb9992882ad2a2bcd49252bffe2248103c4 (diff) | |
download | nextcloud-server-146e9eeb9f3c7d4462ea575788be9327a51413ea.tar.gz nextcloud-server-146e9eeb9f3c7d4462ea575788be9327a51413ea.zip |
Render inline system tags using new DAV properties API
Signed-off-by: Lucas Azevedo <lhs_azevedo@hotmail.com>
Diffstat (limited to 'apps/files/js')
-rw-r--r-- | apps/files/js/merged-index.json | 1 | ||||
-rw-r--r-- | apps/files/js/systemtagsplugin.js | 128 |
2 files changed, 0 insertions, 129 deletions
diff --git a/apps/files/js/merged-index.json b/apps/files/js/merged-index.json index 293aea30d5c..870a807f718 100644 --- a/apps/files/js/merged-index.json +++ b/apps/files/js/merged-index.json @@ -24,6 +24,5 @@ "sidebarpreviewmanager.js", "sidebarpreviewtext.js", "tagsplugin.js", - "systemtagsplugin.js", "templates.js" ] diff --git a/apps/files/js/systemtagsplugin.js b/apps/files/js/systemtagsplugin.js deleted file mode 100644 index f92e6879a3f..00000000000 --- a/apps/files/js/systemtagsplugin.js +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Copyright (c) 2014 Vincent Petry <pvince81@owncloud.com> - * - * This file is licensed under the Affero General Public License version 3 - * or later. - * - * See the COPYING-README file. - * - */ - -/* global Handlebars */ - -(function (OCA) { - - _.extend(OC.Files.Client, { - PROPERTY_SYSTEM_TAGS: '{' + OC.Files.Client.NS_NEXTCLOUD + '}system-tags', - }); - - OCA.Files = OCA.Files || {}; - - /** - * Extends the file actions and file list to add system tags inline - * - * @namespace OCA.Files.SystemTagsPlugin - */ - OCA.Files.SystemTagsPlugin = { - name: 'SystemTags', - - allowedLists: [ - 'files', - 'favorites', - 'shares.self', - 'shares.others', - 'shares.link' - ], - - _buildTagSpan: function(tag, isMore = false) { - var $tag = $('<li class="system-tags__tag"></li>'); - $tag.text(tag).addClass(isMore ? 'system-tags__tag--more' : ''); - return $tag; - }, - - _buildTagsUI: function(tags) { - $systemTags = $('<ul class="system-tags"></ul>'); - if (tags.length === 1) { - $systemTags.attr('aria-label', t('files', 'This file has the tag {tag}', { tag: tags[0] })); - } else if (tags.length > 1) { - var firstTags = tags.slice(0, -1).join(', '); - var lastTag = tags[tags.length - 1]; - $systemTags.attr('aria-label', t('files', 'This file has the tags {firstTags} and {lastTag}', { firstTags, lastTag })); - } - - if (tags.length > 0) { - $systemTags.append(this._buildTagSpan(tags[0])); - } - - // More tags than the one we're showing - if (tags.length > 1) { - $moreTag = this._buildTagSpan('+' + (tags.length - 1), true) - $moreTag.attr('title', tags.slice(1).join(', ')); - $systemTags.append($moreTag); - } - - return $systemTags; - }, - - _extendFileList: function(fileList) { - var self = this; - - // extend row prototype - var oldCreateRow = fileList._createRow; - fileList._createRow = function(fileData) { - var $tr = oldCreateRow.apply(this, arguments); - var systemTags = fileData.systemTags || []; - - // Update tr data list - $tr.attr('data-systemTags', systemTags.join('|')); - - // No tags, no need to do anything - if (systemTags.length === 0) { - return $tr; - } - - // Build tags ui and inject - $systemTags = self._buildTagsUI.apply(self, [systemTags]) - $systemTags.insertAfter($tr.find('td.filename .nametext')); - return $tr; - }; - - var oldElementToFile = fileList.elementToFile; - fileList.elementToFile = function ($el) { - var fileInfo = oldElementToFile.apply(this, arguments); - var systemTags = $el.attr('data-systemTags'); - fileInfo.systemTags = systemTags?.split?.('|') || []; - return fileInfo; - }; - - var oldGetWebdavProperties = fileList._getWebdavProperties; - fileList._getWebdavProperties = function () { - var props = oldGetWebdavProperties.apply(this, arguments); - props.push(OC.Files.Client.PROPERTY_SYSTEM_TAGS); - return props; - }; - - fileList.filesClient.addFileInfoParser(function (response) { - var data = {}; - var props = response.propStat[0].properties; - var systemTags = props[OC.Files.Client.PROPERTY_SYSTEM_TAGS] || []; - if (systemTags && systemTags.length) { - data.systemTags = systemTags - .filter(xmlvalue => xmlvalue.namespaceURI === OC.Files.Client.NS_NEXTCLOUD && xmlvalue.nodeName.split(':')[1] === 'system-tag') - .map(xmlvalue => xmlvalue.textContent || xmlvalue.text); - } - return data; - }); - }, - - attach: function(fileList) { - if (this.allowedLists.indexOf(fileList.id) < 0) { - return; - } - this._extendFileList(fileList); - }, - }; -}) -(OCA); - -OC.Plugins.register('OCA.Files.FileList', OCA.Files.SystemTagsPlugin); |