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

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

View File

@ -1,5 +1,4 @@
import './app'
import './templates'
import './filesplugin'
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'),
publicPath: '/js/',
filename: 'dashboard.js',
jsonpFunction: 'webpackJsonpDashboard'
}
jsonpFunction: 'webpackJsonpDashboard',
},
}

View File

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

View File

@ -1,4 +1,4 @@
const path = require('path');
const path = require('path')
module.exports = {
entry: {
@ -11,6 +11,6 @@ module.exports = {
path: path.resolve(__dirname, './js/dist/'),
publicPath: '/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() {
var App = OCA.Files_External.App;
var fileList;
const App = OCA.Files_External.App
let fileList
beforeEach(function() {
$('#testArea').append(
'<div id="app-navigation">' +
'<ul><li data-id="files"><a>Files</a></li>' +
'<li data-id="sharingin"><a></a></li>' +
'<li data-id="sharingout"><a></a></li>' +
'</ul></div>' +
'<div id="app-content">' +
'<div id="app-content-files" class="hidden">' +
'</div>' +
'<div id="app-content-extstoragemounts" class="hidden">' +
'</div>' +
'</div>' +
'</div>'
);
fileList = App.initList($('#app-content-extstoragemounts'));
});
'<div id="app-navigation">'
+ '<ul><li data-id="files"><a>Files</a></li>'
+ '<li data-id="sharingin"><a></a></li>'
+ '<li data-id="sharingout"><a></a></li>'
+ '</ul></div>'
+ '<div id="app-content">'
+ '<div id="app-content-files" class="hidden">'
+ '</div>'
+ '<div id="app-content-extstoragemounts" class="hidden">'
+ '</div>'
+ '</div>'
+ '</div>'
)
fileList = App.initList($('#app-content-extstoragemounts'))
})
afterEach(function() {
App.fileList = null;
fileList.destroy();
fileList = null;
});
App.fileList = null
fileList.destroy()
fileList = null
})
describe('initialization', function() {
it('inits external mounts list on show', function() {
expect(App.fileList).toBeDefined();
});
});
expect(App.fileList).toBeDefined()
})
})
describe('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.Delete).toBeDefined();
expect(fileActions.actions.all.Rename).toBeDefined();
expect(fileActions.actions.all.Download).toBeDefined();
expect(fileActions.actions.all).toBeDefined()
expect(fileActions.actions.all.Delete).toBeDefined()
expect(fileActions.actions.all.Rename).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() {
var oldList = OCA.Files.App.fileList;
const oldList = OCA.Files.App.fileList
// 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
var $table = '<table><thead></thead><tbody id="fileList"></tbody></table>';
$('#app-content-extstoragemounts').append($table);
const $table = '<table><thead></thead><tbody id="fileList"></tbody></table>'
$('#app-content-extstoragemounts').append($table)
App._inFileList = null;
fileList = App.initList($('#app-content-extstoragemounts'));
App._inFileList = null
fileList = App.initList($('#app-content-extstoragemounts'))
fileList.setFiles([{
name: 'testdir',
type: 'dir',
path: '/somewhere/inside/subdir',
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.calledWith('files')).toEqual(true);
expect(setActiveViewStub.calledOnce).toEqual(true)
expect(setActiveViewStub.calledWith('files')).toEqual(true)
setActiveViewStub.restore();
setActiveViewStub.restore()
// restore old list
OCA.Files.App.fileList = oldList;
});
});
});
OCA.Files.App.fileList = oldList
})
})
})

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -6,6 +6,6 @@ module.exports = {
path: path.resolve(__dirname, './js'),
publicPath: '/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'),
publicPath: '/js/',
filename: 'systemtags.js',
jsonpFunction: 'webpackJsonpSystemtags'
}
jsonpFunction: 'webpackJsonpSystemtags',
},
}

View File

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

View File

@ -93,7 +93,7 @@
<span id="channel_save_msg" class="msg" /><br>
<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 v-html="noteDelayedStableString"></em>
<em v-html="noteDelayedStableString" />
</p>
<p id="oca_updatenotification_groups">

View File

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

View File

@ -2,18 +2,18 @@ const path = require('path')
module.exports = {
entry: {
'weather-status': path.join(__dirname, 'src', 'weather-status')
'weather-status': path.join(__dirname, 'src', 'weather-status'),
},
output: {
path: path.resolve(__dirname, './js'),
publicPath: '/js/',
filename: '[name].js?v=[chunkhash]',
jsonpFunction: 'webpackJsonpWeatherStatus'
jsonpFunction: 'webpackJsonpWeatherStatus',
},
optimization: {
splitChunks: {
automaticNameDelimiter: '-',
}
},
},
module: {
rules: [

View File

@ -1,4 +1,4 @@
const path = require('path');
const path = require('path')
module.exports = {
entry: path.join(__dirname, 'src', 'workflowengine.js'),
@ -6,6 +6,6 @@ module.exports = {
path: path.resolve(__dirname, './js'),
publicPath: '/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>
*
* @author 2020 Christoph Wurst <christoph@winzerhof-wurst.at>

View File

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

View File

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

View File

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

View File

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

View File

@ -37,7 +37,7 @@ const modules = {
weather_status,
twofactor_backupscodes,
updatenotification,
workflowengine
workflowengine,
}
const modulesToBuild = () => {

View File

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

View File

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