Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
This commit is contained in:
John Molakvoæ (skjnldsv) 2021-03-17 08:25:31 +01:00
parent fb183b457c
commit 5d9bb5e247
No known key found for this signature in database
GPG Key ID: 60C25B8C072916CF
31 changed files with 122 additions and 279 deletions

View File

@ -4,4 +4,5 @@ node_modules/
**/vendor/ **/vendor/
**/l10n/ **/l10n/
**/js/* **/js/*
*.config.js *.config.js
tests/lib/

View File

@ -1,5 +1,4 @@
import './app' import './app'
import './templates'
import './filesplugin' import './filesplugin'
import './activitytabviewplugin' import './activitytabviewplugin'

View File

@ -1,123 +0,0 @@
(function() {
var template = Handlebars.template, templates = OCA.Comments.Templates = OCA.Comments.Templates || {};
templates['comment'] = template({"1":function(container,depth0,helpers,partials,data) {
return " unread";
},"3":function(container,depth0,helpers,partials,data) {
return " collapsed";
},"5":function(container,depth0,helpers,partials,data) {
return " currentUser";
},"7":function(container,depth0,helpers,partials,data) {
var helper;
return "data-username=\""
+ container.escapeExpression(((helper = (helper = helpers.actorId || (depth0 != null ? depth0.actorId : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"actorId","hash":{},"data":data}) : helper)))
+ "\"";
},"9":function(container,depth0,helpers,partials,data) {
return " <a href=\"#\" class=\"action more icon icon-more has-tooltip\"></a>\n <div class=\"deleteLoading icon-loading-small hidden\"></div>\n";
},"11":function(container,depth0,helpers,partials,data) {
return " <div class=\"message-overlay\"></div>\n";
},"compiler":[7,">= 4.0.0"],"main":function(container,depth0,helpers,partials,data) {
var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=helpers.helperMissing, alias3="function", alias4=container.escapeExpression;
return "<li class=\"comment"
+ ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.isUnread : depth0),{"name":"if","hash":{},"fn":container.program(1, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
+ ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.isLong : depth0),{"name":"if","hash":{},"fn":container.program(3, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
+ "\" data-id=\""
+ alias4(((helper = (helper = helpers.id || (depth0 != null ? depth0.id : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"id","hash":{},"data":data}) : helper)))
+ "\">\n <div class=\"authorRow\">\n <div class=\"avatar"
+ ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.isUserAuthor : depth0),{"name":"if","hash":{},"fn":container.program(5, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
+ "\" "
+ ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.actorId : depth0),{"name":"if","hash":{},"fn":container.program(7, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
+ "> </div>\n <div class=\"author"
+ ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.isUserAuthor : depth0),{"name":"if","hash":{},"fn":container.program(5, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
+ "\">"
+ alias4(((helper = (helper = helpers.actorDisplayName || (depth0 != null ? depth0.actorDisplayName : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"actorDisplayName","hash":{},"data":data}) : helper)))
+ "</div>\n"
+ ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.isUserAuthor : depth0),{"name":"if","hash":{},"fn":container.program(9, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
+ " <div class=\"date has-tooltip live-relative-timestamp\" data-timestamp=\""
+ alias4(((helper = (helper = helpers.timestamp || (depth0 != null ? depth0.timestamp : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"timestamp","hash":{},"data":data}) : helper)))
+ "\" title=\""
+ alias4(((helper = (helper = helpers.altDate || (depth0 != null ? depth0.altDate : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"altDate","hash":{},"data":data}) : helper)))
+ "\">"
+ alias4(((helper = (helper = helpers.date || (depth0 != null ? depth0.date : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"date","hash":{},"data":data}) : helper)))
+ "</div>\n </div>\n <div class=\"message\">"
+ ((stack1 = ((helper = (helper = helpers.formattedMessage || (depth0 != null ? depth0.formattedMessage : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"formattedMessage","hash":{},"data":data}) : helper))) != null ? stack1 : "")
+ "</div>\n"
+ ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.isLong : depth0),{"name":"if","hash":{},"fn":container.program(11, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
+ "</li>\n";
},"useData":true});
templates['commentsmodifymenu'] = template({"1":function(container,depth0,helpers,partials,data) {
var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=helpers.helperMissing, alias3="function", alias4=container.escapeExpression;
return " <li>\n <a href=\"#\" class=\"menuitem action "
+ alias4(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"name","hash":{},"data":data}) : helper)))
+ " permanent\" data-action=\""
+ alias4(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"name","hash":{},"data":data}) : helper)))
+ "\">\n"
+ ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.iconClass : depth0),{"name":"if","hash":{},"fn":container.program(2, data, 0),"inverse":container.program(4, data, 0),"data":data})) != null ? stack1 : "")
+ " <span>"
+ alias4(((helper = (helper = helpers.displayName || (depth0 != null ? depth0.displayName : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"displayName","hash":{},"data":data}) : helper)))
+ "</span>\n </a>\n </li>\n";
},"2":function(container,depth0,helpers,partials,data) {
var helper;
return " <span class=\"icon "
+ container.escapeExpression(((helper = (helper = helpers.iconClass || (depth0 != null ? depth0.iconClass : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"iconClass","hash":{},"data":data}) : helper)))
+ "\"></span>\n";
},"4":function(container,depth0,helpers,partials,data) {
return " <span class=\"no-icon\"></span>\n";
},"compiler":[7,">= 4.0.0"],"main":function(container,depth0,helpers,partials,data) {
var stack1;
return "<ul>\n"
+ ((stack1 = helpers.each.call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? depth0.items : depth0),{"name":"each","hash":{},"fn":container.program(1, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
+ "</ul>\n";
},"useData":true});
templates['edit_comment'] = template({"1":function(container,depth0,helpers,partials,data) {
var helper;
return " <div class=\"action-container\">\n <a href=\"#\" class=\"action cancel icon icon-close has-tooltip\" title=\""
+ container.escapeExpression(((helper = (helper = helpers.cancelText || (depth0 != null ? depth0.cancelText : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"cancelText","hash":{},"data":data}) : helper)))
+ "\"></a>\n </div>\n";
},"compiler":[7,">= 4.0.0"],"main":function(container,depth0,helpers,partials,data) {
var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=helpers.helperMissing, alias3="function", alias4=container.escapeExpression;
return "<"
+ alias4(((helper = (helper = helpers.tag || (depth0 != null ? depth0.tag : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"tag","hash":{},"data":data}) : helper)))
+ " class=\"newCommentRow comment\" data-id=\""
+ alias4(((helper = (helper = helpers.id || (depth0 != null ? depth0.id : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"id","hash":{},"data":data}) : helper)))
+ "\">\n <div class=\"authorRow\">\n <div class=\"avatar currentUser\" data-username=\""
+ alias4(((helper = (helper = helpers.actorId || (depth0 != null ? depth0.actorId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"actorId","hash":{},"data":data}) : helper)))
+ "\"></div>\n <div class=\"author currentUser\">"
+ alias4(((helper = (helper = helpers.actorDisplayName || (depth0 != null ? depth0.actorDisplayName : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"actorDisplayName","hash":{},"data":data}) : helper)))
+ "</div>\n"
+ ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.isEditMode : depth0),{"name":"if","hash":{},"fn":container.program(1, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
+ " </div>\n <form class=\"newCommentForm\">\n <div contentEditable=\"true\" class=\"message\" data-placeholder=\""
+ alias4(((helper = (helper = helpers.newMessagePlaceholder || (depth0 != null ? depth0.newMessagePlaceholder : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"newMessagePlaceholder","hash":{},"data":data}) : helper)))
+ "\">"
+ alias4(((helper = (helper = helpers.message || (depth0 != null ? depth0.message : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"message","hash":{},"data":data}) : helper)))
+ "</div>\n <input class=\"submit icon-confirm has-tooltip\" type=\"submit\" value=\"\" title=\""
+ alias4(((helper = (helper = helpers.submitText || (depth0 != null ? depth0.submitText : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"submitText","hash":{},"data":data}) : helper)))
+ "\"/>\n <div class=\"submitLoading icon-loading-small hidden\"></div>\n </form>\n</"
+ alias4(((helper = (helper = helpers.tag || (depth0 != null ? depth0.tag : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"tag","hash":{},"data":data}) : helper)))
+ ">\n";
},"useData":true});
templates['filesplugin'] = template({"compiler":[7,">= 4.0.0"],"main":function(container,depth0,helpers,partials,data) {
var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=helpers.helperMissing, alias3="function", alias4=container.escapeExpression;
return "<a class=\"action action-comment permanent\" title=\""
+ alias4(((helper = (helper = helpers.countMessage || (depth0 != null ? depth0.countMessage : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"countMessage","hash":{},"data":data}) : helper)))
+ "\" href=\"#\">\n <img class=\"svg\" src=\""
+ alias4(((helper = (helper = helpers.iconUrl || (depth0 != null ? depth0.iconUrl : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"iconUrl","hash":{},"data":data}) : helper)))
+ "\"/>\n</a>\n";
},"useData":true});
templates['view'] = template({"compiler":[7,">= 4.0.0"],"main":function(container,depth0,helpers,partials,data) {
var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=helpers.helperMissing, alias3="function", alias4=container.escapeExpression;
return "<ul class=\"comments\">\n</ul>\n<div class=\"emptycontent hidden\"><div class=\"icon-comment\"></div>\n <p>"
+ alias4(((helper = (helper = helpers.emptyResultLabel || (depth0 != null ? depth0.emptyResultLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"emptyResultLabel","hash":{},"data":data}) : helper)))
+ "</p></div>\n<input type=\"button\" class=\"showMore hidden\" value=\""
+ alias4(((helper = (helper = helpers.moreLabel || (depth0 != null ? depth0.moreLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"moreLabel","hash":{},"data":data}) : helper)))
+ "\" name=\"show-more\" id=\"show-more\" />\n<div class=\"loading hidden\" style=\"height: 50px\"></div>\n";
},"useData":true});
})();

View File

@ -6,6 +6,6 @@ module.exports = {
path: path.resolve(__dirname, './js'), path: path.resolve(__dirname, './js'),
publicPath: '/js/', publicPath: '/js/',
filename: 'dashboard.js', filename: 'dashboard.js',
jsonpFunction: 'webpackJsonpDashboard' jsonpFunction: 'webpackJsonpDashboard',
} },
} }

View File

@ -29,7 +29,6 @@ import axios from '@nextcloud/axios'
import Vue from 'vue' import Vue from 'vue'
import TemplatePickerView from './views/TemplatePicker' import TemplatePickerView from './views/TemplatePicker'
import { getCurrentUser } from '@nextcloud/auth'
import { showError } from '@nextcloud/dialogs' import { showError } from '@nextcloud/dialogs'
// Set up logger // Set up logger

View File

@ -1,4 +1,4 @@
const path = require('path'); const path = require('path')
module.exports = { module.exports = {
entry: { entry: {
@ -11,6 +11,6 @@ module.exports = {
path: path.resolve(__dirname, './js/dist/'), path: path.resolve(__dirname, './js/dist/'),
publicPath: '/js/', publicPath: '/js/',
filename: '[name].js', filename: '[name].js',
chunkFilename: 'files.[id].js' chunkFilename: 'files.[id].js',
} },
} }

View File

@ -20,80 +20,80 @@
*/ */
describe('OCA.Files_External.App tests', function() { describe('OCA.Files_External.App tests', function() {
var App = OCA.Files_External.App; const App = OCA.Files_External.App
var fileList; let fileList
beforeEach(function() { beforeEach(function() {
$('#testArea').append( $('#testArea').append(
'<div id="app-navigation">' + '<div id="app-navigation">'
'<ul><li data-id="files"><a>Files</a></li>' + + '<ul><li data-id="files"><a>Files</a></li>'
'<li data-id="sharingin"><a></a></li>' + + '<li data-id="sharingin"><a></a></li>'
'<li data-id="sharingout"><a></a></li>' + + '<li data-id="sharingout"><a></a></li>'
'</ul></div>' + + '</ul></div>'
'<div id="app-content">' + + '<div id="app-content">'
'<div id="app-content-files" class="hidden">' + + '<div id="app-content-files" class="hidden">'
'</div>' + + '</div>'
'<div id="app-content-extstoragemounts" class="hidden">' + + '<div id="app-content-extstoragemounts" class="hidden">'
'</div>' + + '</div>'
'</div>' + + '</div>'
'</div>' + '</div>'
); )
fileList = App.initList($('#app-content-extstoragemounts')); fileList = App.initList($('#app-content-extstoragemounts'))
}); })
afterEach(function() { afterEach(function() {
App.fileList = null; App.fileList = null
fileList.destroy(); fileList.destroy()
fileList = null; fileList = null
}); })
describe('initialization', function() { describe('initialization', function() {
it('inits external mounts list on show', function() { it('inits external mounts list on show', function() {
expect(App.fileList).toBeDefined(); expect(App.fileList).toBeDefined()
}); })
}); })
describe('file actions', function() { describe('file actions', function() {
it('provides default file actions', function() { it('provides default file actions', function() {
var fileActions = fileList.fileActions; const fileActions = fileList.fileActions
expect(fileActions.actions.all).toBeDefined(); expect(fileActions.actions.all).toBeDefined()
expect(fileActions.actions.all.Delete).toBeDefined(); expect(fileActions.actions.all.Delete).toBeDefined()
expect(fileActions.actions.all.Rename).toBeDefined(); expect(fileActions.actions.all.Rename).toBeDefined()
expect(fileActions.actions.all.Download).toBeDefined(); expect(fileActions.actions.all.Download).toBeDefined()
expect(fileActions.defaults.dir).toEqual('Open'); expect(fileActions.defaults.dir).toEqual('Open')
}); })
it('redirects to files app when opening a directory', function() { it('redirects to files app when opening a directory', function() {
var oldList = OCA.Files.App.fileList; const oldList = OCA.Files.App.fileList
// dummy new list to make sure it exists // dummy new list to make sure it exists
OCA.Files.App.fileList = new OCA.Files.FileList($('<table><thead></thead><tbody></tbody></table>')); OCA.Files.App.fileList = new OCA.Files.FileList($('<table><thead></thead><tbody></tbody></table>'))
var setActiveViewStub = sinon.stub(OCA.Files.App, 'setActiveView'); const setActiveViewStub = sinon.stub(OCA.Files.App, 'setActiveView')
// create dummy table so we can click the dom // create dummy table so we can click the dom
var $table = '<table><thead></thead><tbody id="fileList"></tbody></table>'; const $table = '<table><thead></thead><tbody id="fileList"></tbody></table>'
$('#app-content-extstoragemounts').append($table); $('#app-content-extstoragemounts').append($table)
App._inFileList = null; App._inFileList = null
fileList = App.initList($('#app-content-extstoragemounts')); fileList = App.initList($('#app-content-extstoragemounts'))
fileList.setFiles([{ fileList.setFiles([{
name: 'testdir', name: 'testdir',
type: 'dir', type: 'dir',
path: '/somewhere/inside/subdir', path: '/somewhere/inside/subdir',
counterParts: ['user2'], counterParts: ['user2'],
shareOwner: 'user2' shareOwner: 'user2',
}]); }])
fileList.findFileEl('testdir').find('td a.name').click(); fileList.findFileEl('testdir').find('td a.name').click()
expect(OCA.Files.App.fileList.getCurrentDirectory()).toEqual('/somewhere/inside/subdir/testdir'); expect(OCA.Files.App.fileList.getCurrentDirectory()).toEqual('/somewhere/inside/subdir/testdir')
expect(setActiveViewStub.calledOnce).toEqual(true); expect(setActiveViewStub.calledOnce).toEqual(true)
expect(setActiveViewStub.calledWith('files')).toEqual(true); expect(setActiveViewStub.calledWith('files')).toEqual(true)
setActiveViewStub.restore(); setActiveViewStub.restore()
// restore old list // restore old list
OCA.Files.App.fileList = oldList; OCA.Files.App.fileList = oldList
}); })
}); })
}); })

View File

@ -39,5 +39,5 @@ Vue.use(Vuex)
export { export {
Vue, Vue,
View View,
} }

View File

@ -30,8 +30,8 @@
:menu-position="'left'" :menu-position="'left'"
:url="share.shareWithAvatar" /> :url="share.shareWithAvatar" />
<component :is="share.shareWithLink ? 'a' : 'div'" <component :is="share.shareWithLink ? 'a' : 'div'"
:href="share.shareWithLink"
v-tooltip.auto="tooltip" v-tooltip.auto="tooltip"
:href="share.shareWithLink"
class="sharing-entry__desc"> class="sharing-entry__desc">
<h5>{{ title }}<span v-if="!isUnique" class="sharing-entry__desc-unique"> ({{ share.shareWithDisplayNameUnique }})</span></h5> <h5>{{ title }}<span v-if="!isUnique" class="sharing-entry__desc-unique"> ({{ share.shareWithDisplayNameUnique }})</span></h5>
<p v-if="hasStatus"> <p v-if="hasStatus">

View File

@ -33,7 +33,7 @@ import { CollectionList } from 'nextcloud-vue-collections'
export default { export default {
name: 'CollaborationView', name: 'CollaborationView',
components: { components: {
CollectionList CollectionList,
}, },
computed: { computed: {
fileId() { fileId() {
@ -47,7 +47,7 @@ export default {
return '' + this.$root.model.name return '' + this.$root.model.name
} }
return '' return ''
} },
} },
} }
</script> </script>

View File

@ -1,12 +1,12 @@
const path = require('path'); const path = require('path')
module.exports = { module.exports = {
entry: { entry: {
'additionalScripts': path.join(__dirname, 'src', 'additionalScripts.js'), additionalScripts: path.join(__dirname, 'src', 'additionalScripts.js'),
'collaboration': path.join(__dirname, 'src', 'collaborationresourceshandler.js'), collaboration: path.join(__dirname, 'src', 'collaborationresourceshandler.js'),
'files_sharing_tab': path.join(__dirname, 'src', 'files_sharing_tab.js'), files_sharing_tab: path.join(__dirname, 'src', 'files_sharing_tab.js'),
'files_sharing': path.join(__dirname, 'src', 'files_sharing.js'), files_sharing: path.join(__dirname, 'src', 'files_sharing.js'),
'main': path.join(__dirname, 'src', 'index.js'), main: path.join(__dirname, 'src', 'index.js'),
'personal-settings': path.join(__dirname, 'src', 'personal-settings.js'), 'personal-settings': path.join(__dirname, 'src', 'personal-settings.js'),
}, },
output: { output: {
@ -14,6 +14,6 @@ module.exports = {
publicPath: '/js/', publicPath: '/js/',
filename: '[name].js', filename: '[name].js',
chunkFilename: 'files_sharing.[id].js?v=[chunkhash]', chunkFilename: 'files_sharing.[id].js?v=[chunkhash]',
jsonpFunction: 'webpackJsonpFilesSharing' jsonpFunction: 'webpackJsonpFilesSharing',
} },
} }

View File

@ -6,6 +6,6 @@ module.exports = {
path: path.resolve(__dirname, './js'), path: path.resolve(__dirname, './js'),
publicPath: '/js/', publicPath: '/js/',
filename: 'files_trashbin.js', filename: 'files_trashbin.js',
jsonpFunction: 'webpackJsonpFilesTrashbin' jsonpFunction: 'webpackJsonpFilesTrashbin',
} },
} }

View File

@ -6,6 +6,6 @@ module.exports = {
path: path.resolve(__dirname, 'js'), path: path.resolve(__dirname, 'js'),
publicPath: '/js/', publicPath: '/js/',
filename: 'files_versions.js', filename: 'files_versions.js',
jsonpFunction: 'webpackJsonpFilesVersions' jsonpFunction: 'webpackJsonpFilesVersions',
} },
} }

View File

@ -28,9 +28,7 @@
<table v-if="clients.length > 0" class="grid"> <table v-if="clients.length > 0" class="grid">
<thead> <thead>
<tr> <tr>
<th id="headerContent"> <th id="headerContent" />
</th>
<th id="headerRemove"> <th id="headerRemove">
&nbsp; &nbsp;
</th> </th>

View File

@ -6,6 +6,6 @@ module.exports = {
path: path.resolve(__dirname, './js'), path: path.resolve(__dirname, './js'),
publicPath: '/js', publicPath: '/js',
filename: 'oauth2.js', filename: 'oauth2.js',
jsonpFunction: 'webpackJsonpOauth' jsonpFunction: 'webpackJsonpOauth',
} },
} }

View File

@ -1,40 +0,0 @@
<!--
- @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>
-
- @author John Molakvoæ <skjnldsv@protonmail.com>
-
- @license GNU AGPL version 3 or any later version
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation, either version 3 of the
- License, or (at your option) any later version.
-
- This program 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 program. If not, see <http://www.gnu.org/licenses/>.
-
-->
<template>
<ul>
<popover-item v-for="(item, key) in menu" :item="item" :key="key" />
</ul>
</template>
<script>
import popoverItem from './popoverMenu/popoverItem';
export default {
name: 'popoverMenu',
props: ['menu'],
components: {
popoverItem
}
}
</script>

View File

@ -6,6 +6,6 @@ module.exports = {
path: path.resolve(__dirname, './js'), path: path.resolve(__dirname, './js'),
publicPath: '/js/', publicPath: '/js/',
filename: 'systemtags.js', filename: 'systemtags.js',
jsonpFunction: 'webpackJsonpSystemtags' jsonpFunction: 'webpackJsonpSystemtags',
} },
} }

View File

@ -6,6 +6,6 @@ module.exports = {
path: path.resolve(__dirname, 'js'), path: path.resolve(__dirname, 'js'),
publicPath: '/js', publicPath: '/js',
filename: 'settings.js', filename: 'settings.js',
jsonpFunction: 'webpackJsonpTwofactorBackupcodes' jsonpFunction: 'webpackJsonpTwofactorBackupcodes',
} },
} }

View File

@ -93,7 +93,7 @@
<span id="channel_save_msg" class="msg" /><br> <span id="channel_save_msg" class="msg" /><br>
<p> <p>
<em>{{ t('updatenotification', 'You can always update to a newer version. But you can never downgrade to a more stable version.') }}</em><br> <em>{{ t('updatenotification', 'You can always update to a newer version. But you can never downgrade to a more stable version.') }}</em><br>
<em v-html="noteDelayedStableString"></em> <em v-html="noteDelayedStableString" />
</p> </p>
<p id="oca_updatenotification_groups"> <p id="oca_updatenotification_groups">

View File

@ -6,6 +6,6 @@ module.exports = {
path: path.resolve(__dirname, './js'), path: path.resolve(__dirname, './js'),
publicPath: '/js/', publicPath: '/js/',
filename: 'updatenotification.js', filename: 'updatenotification.js',
jsonpFunction: 'webpackJsonpUpdatenotification' jsonpFunction: 'webpackJsonpUpdatenotification',
} },
} }

View File

@ -2,25 +2,25 @@ const path = require('path')
module.exports = { module.exports = {
entry: { entry: {
'weather-status': path.join(__dirname, 'src', 'weather-status') 'weather-status': path.join(__dirname, 'src', 'weather-status'),
}, },
output: { output: {
path: path.resolve(__dirname, './js'), path: path.resolve(__dirname, './js'),
publicPath: '/js/', publicPath: '/js/',
filename: '[name].js?v=[chunkhash]', filename: '[name].js?v=[chunkhash]',
jsonpFunction: 'webpackJsonpWeatherStatus' jsonpFunction: 'webpackJsonpWeatherStatus',
}, },
optimization: { optimization: {
splitChunks: { splitChunks: {
automaticNameDelimiter: '-', automaticNameDelimiter: '-',
} },
}, },
module: { module: {
rules: [ rules: [
{ {
test: /\.(png|jpg|gif|svg|woff|woff2|eot|ttf)$/, test: /\.(png|jpg|gif|svg|woff|woff2|eot|ttf)$/,
loader: 'url-loader', loader: 'url-loader',
}, },
], ],
}, },
} }

View File

@ -1,4 +1,4 @@
const path = require('path'); const path = require('path')
module.exports = { module.exports = {
entry: path.join(__dirname, 'src', 'workflowengine.js'), entry: path.join(__dirname, 'src', 'workflowengine.js'),
@ -6,6 +6,6 @@ module.exports = {
path: path.resolve(__dirname, './js'), path: path.resolve(__dirname, './js'),
publicPath: '/js/', publicPath: '/js/',
filename: 'workflowengine.js', filename: 'workflowengine.js',
jsonpFunction: 'webpackJsonpWorkflowengine' jsonpFunction: 'webpackJsonpWorkflowengine',
} },
} }

View File

@ -0,0 +1,9 @@
module.exports = {
globals: {
jsdom: true,
sinon: true,
},
rules: {
"node/no-unpublished-import": 'off'
}
}

View File

@ -1,4 +1,4 @@
/* /**
* @copyright 2020 Christoph Wurst <christoph@winzerhof-wurst.at> * @copyright 2020 Christoph Wurst <christoph@winzerhof-wurst.at>
* *
* @author 2020 Christoph Wurst <christoph@winzerhof-wurst.at> * @author 2020 Christoph Wurst <christoph@winzerhof-wurst.at>
@ -19,10 +19,10 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
import {JSDOM} from 'jsdom' import { JSDOM } from 'jsdom'
import {subscribe, unsubscribe} from '@nextcloud/event-bus' import { subscribe, unsubscribe } from '@nextcloud/event-bus'
import {manageToken, setToken} from '../../OC/requesttoken' import { manageToken, setToken } from '../../OC/requesttoken'
describe('request token', () => { describe('request token', () => {
@ -66,7 +66,7 @@ describe('request token', () => {
it('fires off an event for @nextcloud/auth', () => { it('fires off an event for @nextcloud/auth', () => {
setToken('123') setToken('123')
expect(listener).to.have.been.calledWith({token: '123'}) expect(listener).to.have.been.calledWith({ token: '123' })
}) })
}) })

View File

@ -21,8 +21,8 @@
require('jsdom-global')() require('jsdom-global')()
const chai = require('chai') const chai = require('chai')
var sinon = require('sinon') const sinon = require('sinon')
var sinonChai = require('sinon-chai'); const sinonChai = require('sinon-chai')
chai.use(sinonChai) chai.use(sinonChai)
global.expect = chai.expect global.expect = chai.expect

View File

@ -164,8 +164,8 @@ export default {
}, },
hideLoginForm: { hideLoginForm: {
type: Boolean, type: Boolean,
default: false default: false,
} },
}, },
data() { data() {
return { return {

View File

@ -33,7 +33,7 @@ module.exports = [
}, },
plugins: [ plugins: [
new webpack.ProvidePlugin({ new webpack.ProvidePlugin({
'_': 'underscore', _: 'underscore',
$: 'jquery', $: 'jquery',
jQuery: 'jquery', jQuery: 'jquery',
}), }),

View File

@ -19,13 +19,13 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
const { merge } = require('webpack-merge'); const { merge } = require('webpack-merge')
const common = require('./webpack.js'); const common = require('./webpack.js')
// webpack.config.js // webpack.config.js
const nodeExternals = require('webpack-node-externals') const nodeExternals = require('webpack-node-externals')
module.exports = merge(common[0], { module.exports = merge(common[0], {
mode: 'development', mode: 'development',
devtool: 'inline-cheap-module-source-map', devtool: 'inline-cheap-module-source-map',
externals: [nodeExternals()] externals: [nodeExternals()],
}) })

View File

@ -37,7 +37,7 @@ const modules = {
weather_status, weather_status,
twofactor_backupscodes, twofactor_backupscodes,
updatenotification, updatenotification,
workflowengine workflowengine,
} }
const modulesToBuild = () => { const modulesToBuild = () => {
@ -46,7 +46,7 @@ const modulesToBuild = () => {
if (!modules[MODULE]) { if (!modules[MODULE]) {
throw new Error(`No module "${MODULE}" found`) throw new Error(`No module "${MODULE}" found`)
} }
return [ modules[MODULE] ] return [modules[MODULE]]
} }
return Object.values(modules) return Object.values(modules)
} }

View File

@ -1,5 +1,5 @@
const { merge } = require('webpack-merge'); const { merge } = require('webpack-merge')
const common = require('./webpack.common.js'); const common = require('./webpack.common.js')
module.exports = common.map( module.exports = common.map(
config => merge(config, { config => merge(config, {

View File

@ -1,6 +1,6 @@
const { merge } = require('webpack-merge') const { merge } = require('webpack-merge')
const common = require('./webpack.common.js') const common = require('./webpack.common.js')
const TerserPlugin = require('terser-webpack-plugin'); const TerserPlugin = require('terser-webpack-plugin')
module.exports = common.map( module.exports = common.map(
config => merge(config, { config => merge(config, {