Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>tags/v22.0.0beta1
**/vendor/ | **/vendor/ | ||||
**/l10n/ | **/l10n/ | ||||
**/js/* | **/js/* | ||||
*.config.js | |||||
*.config.js | |||||
tests/lib/ |
import './app' | import './app' | ||||
import './templates' | |||||
import './filesplugin' | import './filesplugin' | ||||
import './activitytabviewplugin' | import './activitytabviewplugin' | ||||
(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}); | |||||
})(); |
path: path.resolve(__dirname, './js'), | path: path.resolve(__dirname, './js'), | ||||
publicPath: '/js/', | publicPath: '/js/', | ||||
filename: 'dashboard.js', | filename: 'dashboard.js', | ||||
jsonpFunction: 'webpackJsonpDashboard' | |||||
} | |||||
jsonpFunction: 'webpackJsonpDashboard', | |||||
}, | |||||
} | } |
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 |
const path = require('path'); | |||||
const path = require('path') | |||||
module.exports = { | module.exports = { | ||||
entry: { | entry: { | ||||
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', | |||||
}, | |||||
} | } |
*/ | */ | ||||
describe('OCA.Files_External.App tests', function() { | 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() { | beforeEach(function() { | ||||
$('#testArea').append( | $('#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() { | afterEach(function() { | ||||
App.fileList = null; | |||||
fileList.destroy(); | |||||
fileList = null; | |||||
}); | |||||
App.fileList = null | |||||
fileList.destroy() | |||||
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.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() { | 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>'; | |||||
$('#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([{ | 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.calledWith('files')).toEqual(true); | |||||
expect(setActiveViewStub.calledOnce).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 | |||||
}) | |||||
}) | |||||
}) |
export { | export { | ||||
Vue, | Vue, | ||||
View | |||||
View, | |||||
} | } |
: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"> |
export default { | export default { | ||||
name: 'CollaborationView', | name: 'CollaborationView', | ||||
components: { | components: { | ||||
CollectionList | |||||
CollectionList, | |||||
}, | }, | ||||
computed: { | computed: { | ||||
fileId() { | fileId() { | ||||
return '' + this.$root.model.name | return '' + this.$root.model.name | ||||
} | } | ||||
return '' | return '' | ||||
} | |||||
} | |||||
}, | |||||
}, | |||||
} | } | ||||
</script> | </script> |
const path = require('path'); | |||||
const path = require('path') | |||||
module.exports = { | module.exports = { | ||||
entry: { | 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'), | 'personal-settings': path.join(__dirname, 'src', 'personal-settings.js'), | ||||
}, | }, | ||||
output: { | output: { | ||||
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', | |||||
}, | |||||
} | } |
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', | |||||
}, | |||||
} | } |
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', | |||||
}, | |||||
} | } |
<table v-if="clients.length > 0" class="grid"> | <table v-if="clients.length > 0" class="grid"> | ||||
<thead> | <thead> | ||||
<tr> | <tr> | ||||
<th id="headerContent"> | |||||
</th> | |||||
<th id="headerContent" /> | |||||
<th id="headerRemove"> | <th id="headerRemove"> | ||||
| | ||||
</th> | </th> |
path: path.resolve(__dirname, './js'), | path: path.resolve(__dirname, './js'), | ||||
publicPath: '/js', | publicPath: '/js', | ||||
filename: 'oauth2.js', | filename: 'oauth2.js', | ||||
jsonpFunction: 'webpackJsonpOauth' | |||||
} | |||||
jsonpFunction: 'webpackJsonpOauth', | |||||
}, | |||||
} | } |
<!-- | |||||
- @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> |
path: path.resolve(__dirname, './js'), | path: path.resolve(__dirname, './js'), | ||||
publicPath: '/js/', | publicPath: '/js/', | ||||
filename: 'systemtags.js', | filename: 'systemtags.js', | ||||
jsonpFunction: 'webpackJsonpSystemtags' | |||||
} | |||||
jsonpFunction: 'webpackJsonpSystemtags', | |||||
}, | |||||
} | } |
path: path.resolve(__dirname, 'js'), | path: path.resolve(__dirname, 'js'), | ||||
publicPath: '/js', | publicPath: '/js', | ||||
filename: 'settings.js', | filename: 'settings.js', | ||||
jsonpFunction: 'webpackJsonpTwofactorBackupcodes' | |||||
} | |||||
jsonpFunction: 'webpackJsonpTwofactorBackupcodes', | |||||
}, | |||||
} | } |
<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"> |
path: path.resolve(__dirname, './js'), | path: path.resolve(__dirname, './js'), | ||||
publicPath: '/js/', | publicPath: '/js/', | ||||
filename: 'updatenotification.js', | filename: 'updatenotification.js', | ||||
jsonpFunction: 'webpackJsonpUpdatenotification' | |||||
} | |||||
jsonpFunction: 'webpackJsonpUpdatenotification', | |||||
}, | |||||
} | } |
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: [ | |||||
{ | |||||
test: /\.(png|jpg|gif|svg|woff|woff2|eot|ttf)$/, | |||||
loader: 'url-loader', | |||||
}, | |||||
], | |||||
rules: [ | |||||
{ | |||||
test: /\.(png|jpg|gif|svg|woff|woff2|eot|ttf)$/, | |||||
loader: 'url-loader', | |||||
}, | |||||
], | |||||
}, | }, | ||||
} | } |
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'), | ||||
path: path.resolve(__dirname, './js'), | path: path.resolve(__dirname, './js'), | ||||
publicPath: '/js/', | publicPath: '/js/', | ||||
filename: 'workflowengine.js', | filename: 'workflowengine.js', | ||||
jsonpFunction: 'webpackJsonpWorkflowengine' | |||||
} | |||||
jsonpFunction: 'webpackJsonpWorkflowengine', | |||||
}, | |||||
} | } |
module.exports = { | |||||
globals: { | |||||
jsdom: true, | |||||
sinon: true, | |||||
}, | |||||
rules: { | |||||
"node/no-unpublished-import": 'off' | |||||
} | |||||
} |
/* | |||||
/** | |||||
* @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> | ||||
* 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 {subscribe, unsubscribe} from '@nextcloud/event-bus' | |||||
import { JSDOM } from 'jsdom' | |||||
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', () => { | ||||
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' }) | |||||
}) | }) | ||||
}) | }) | ||||
require('jsdom-global')() | require('jsdom-global')() | ||||
const chai = require('chai') | 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) | chai.use(sinonChai) | ||||
global.expect = chai.expect | global.expect = chai.expect |
}, | }, | ||||
hideLoginForm: { | hideLoginForm: { | ||||
type: Boolean, | type: Boolean, | ||||
default: false | |||||
} | |||||
default: false, | |||||
}, | |||||
}, | }, | ||||
data() { | data() { | ||||
return { | return { |
}, | }, | ||||
plugins: [ | plugins: [ | ||||
new webpack.ProvidePlugin({ | new webpack.ProvidePlugin({ | ||||
'_': 'underscore', | |||||
_: 'underscore', | |||||
$: 'jquery', | $: 'jquery', | ||||
jQuery: 'jquery', | jQuery: 'jquery', | ||||
}), | }), |
* 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 common = require('./webpack.js'); | |||||
const { merge } = require('webpack-merge') | |||||
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()], | |||||
}) | }) |
weather_status, | weather_status, | ||||
twofactor_backupscodes, | twofactor_backupscodes, | ||||
updatenotification, | updatenotification, | ||||
workflowengine | |||||
workflowengine, | |||||
} | } | ||||
const modulesToBuild = () => { | 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) | ||||
} | } |
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( | module.exports = common.map( | ||||
config => merge(config, { | config => merge(config, { |
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, { |