Compare commits
109 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| fe6fdfe50d | |||
| 8c229684d7 | |||
| f012f0a353 | |||
| 32b00cee4f | |||
| df2c2d48cc | |||
| b2b7587f54 | |||
| dae2fdaae2 | |||
| 381d15850b | |||
| 5919bd97d5 | |||
| 035fe3db7b | |||
| d92500178f | |||
| fe9f53259d | |||
| 39a28b4bfb | |||
| dc36724f78 | |||
| a416baa946 | |||
| be497b3bce | |||
| 77cf9dfbe7 | |||
| c089cb21e7 | |||
| 2ecb952156 | |||
| 1818ef9ef8 | |||
| 20303281f0 | |||
| 827cfc8ede | |||
| 1072b70210 | |||
| 9e6c37c3c6 | |||
| fa43738b61 | |||
| 986ac005e0 | |||
| 62591b2e8b | |||
| 2495570889 | |||
| a4906451e2 | |||
| 5829f21b19 | |||
| e30c533644 | |||
| 90f5e066c3 | |||
| bcb8ce3e07 | |||
| 3b6a1254cf | |||
| 03de502f1f | |||
| fac588297d | |||
| 940b73280d | |||
| 1a5e67a270 | |||
| 6a60a01e4f | |||
| 7d205402ea | |||
| 7a79e95254 | |||
| 408f7ae133 | |||
| 9321364587 | |||
| dda212a48e | |||
| 4a05982983 | |||
| 900acafa88 | |||
| eba07843f5 | |||
| 0915c6223d | |||
| b75d4c08dc | |||
| 1aa91f649f | |||
| 8cf4e6107f | |||
| ad41056865 | |||
| b7a6a9d4a2 | |||
| dcd5b15443 | |||
| e4dd609b67 | |||
| c7470648b7 | |||
| 5750612ca2 | |||
| 14f6030140 | |||
| 3085e2e8b2 | |||
| 084b342c84 | |||
| 5641871d97 | |||
| 889933b353 | |||
| 8b4b3e19bb | |||
| 1d63af5d95 | |||
| d49923c880 | |||
| 457e7c2a7d | |||
| fd243ff5c4 | |||
| dffd76d4ee | |||
| 4606ec5ed6 | |||
| 787aa98b8a | |||
| 4506868dd4 | |||
| 26e2fc3368 | |||
| 7c6dbd12c5 | |||
| 0271f5e95c | |||
| ffabd58d2f | |||
| 164ff8335a | |||
| 13a6d52cef | |||
| 73be85e0b0 | |||
| 74db98cc69 | |||
| a9e3253de0 | |||
| c2ff14bcf1 | |||
| 687715c877 | |||
| e71bc1d212 | |||
| 7dc36156c2 | |||
| dca6dbb387 | |||
| bdebfc5558 | |||
| dc95fc25e2 | |||
| 3b68153718 | |||
| eb014fb0a1 | |||
| 7d9b728ee5 | |||
| ca17989d0f | |||
| b219d5b68d | |||
| 6adea4c208 | |||
| c7f47e4dda | |||
| 4f8e3cfced | |||
| 5d10bff7e8 | |||
| 1b7c5fa6a3 | |||
| f2575ccdb5 | |||
| 95079dfe05 | |||
| 029999049c | |||
| 18315f44b8 | |||
| 8827c22973 | |||
| a7d1ce3adc | |||
| 837d3ea4f9 | |||
| 1a948d713f | |||
| 7768cbb19e | |||
| 15665616f4 | |||
| 5fdac43d5b | |||
| abd4bf1f27 |
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+10
-17
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+79
-22
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
@@ -630,7 +630,7 @@
|
||||
* @param {string|OCA.Files.FileInfoModel} fileName file name from the current list or a FileInfoModel object
|
||||
* @param {boolean} [show=true] whether to open the sidebar if it was closed
|
||||
*/
|
||||
_updateDetailsView: function(fileName) {
|
||||
_updateDetailsView: function(fileName, show) {
|
||||
if (!(OCA.Files && OCA.Files.Sidebar)) {
|
||||
console.error('No sidebar available');
|
||||
return;
|
||||
@@ -650,8 +650,18 @@
|
||||
var model = this.getModelForFile(tr)
|
||||
var path = model.attributes.path + '/' + model.attributes.name
|
||||
|
||||
// make sure the file list has the correct context available
|
||||
if (this._currentFileModel) {
|
||||
this._currentFileModel.off();
|
||||
}
|
||||
this.$fileList.children().removeClass('highlighted');
|
||||
tr.addClass('highlighted');
|
||||
this._currentFileModel = model;
|
||||
|
||||
// open sidebar and set file
|
||||
OCA.Files.Sidebar.open(path.replace('//', '/'))
|
||||
if (typeof show === 'undefined' || !!show || (OCA.Files.Sidebar.file !== '')) {
|
||||
OCA.Files.Sidebar.open(path.replace('//', '/'))
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
|
||||
+247
-102
@@ -1,279 +1,424 @@
|
||||
(function() {
|
||||
var template = Handlebars.template, templates = OCA.Files.Templates = OCA.Files.Templates || {};
|
||||
templates['detailsview'] = template({"1":function(container,depth0,helpers,partials,data) {
|
||||
var stack1;
|
||||
var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {
|
||||
if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
|
||||
return parent[propertyName];
|
||||
}
|
||||
return undefined
|
||||
};
|
||||
|
||||
return "<ul class=\"tabHeaders\">\n"
|
||||
+ ((stack1 = helpers.each.call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? depth0.tabHeaders : depth0),{"name":"each","hash":{},"fn":container.program(2, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":4,"column":1},"end":{"line":9,"column":10}}})) != null ? stack1 : "")
|
||||
+ ((stack1 = lookupProperty(helpers,"each").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,"tabHeaders") : depth0),{"name":"each","hash":{},"fn":container.program(2, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":4,"column":1},"end":{"line":9,"column":10}}})) != null ? stack1 : "")
|
||||
+ "</ul>\n";
|
||||
},"2":function(container,depth0,helpers,partials,data) {
|
||||
var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression;
|
||||
var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
|
||||
if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
|
||||
return parent[propertyName];
|
||||
}
|
||||
return undefined
|
||||
};
|
||||
|
||||
return " <li class=\"tabHeader\" data-tabid=\""
|
||||
+ alias4(((helper = (helper = helpers.tabId || (depth0 != null ? depth0.tabId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"tabId","hash":{},"data":data,"loc":{"start":{"line":5,"column":35},"end":{"line":5,"column":44}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"tabId") || (depth0 != null ? lookupProperty(depth0,"tabId") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"tabId","hash":{},"data":data,"loc":{"start":{"line":5,"column":35},"end":{"line":5,"column":44}}}) : helper)))
|
||||
+ "\" tabindex=\"0\">\n "
|
||||
+ ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.tabIcon : depth0),{"name":"if","hash":{},"fn":container.program(3, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":6,"column":5},"end":{"line":6,"column":65}}})) != null ? stack1 : "")
|
||||
+ ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"tabIcon") : depth0),{"name":"if","hash":{},"fn":container.program(3, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":6,"column":5},"end":{"line":6,"column":65}}})) != null ? stack1 : "")
|
||||
+ "\n <a href=\"#\" tabindex=\"-1\">"
|
||||
+ alias4(((helper = (helper = helpers.label || (depth0 != null ? depth0.label : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"label","hash":{},"data":data,"loc":{"start":{"line":7,"column":28},"end":{"line":7,"column":37}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"label") || (depth0 != null ? lookupProperty(depth0,"label") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"label","hash":{},"data":data,"loc":{"start":{"line":7,"column":28},"end":{"line":7,"column":37}}}) : helper)))
|
||||
+ "</a>\n </li>\n";
|
||||
},"3":function(container,depth0,helpers,partials,data) {
|
||||
var helper;
|
||||
var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {
|
||||
if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
|
||||
return parent[propertyName];
|
||||
}
|
||||
return undefined
|
||||
};
|
||||
|
||||
return "<span class=\"icon "
|
||||
+ container.escapeExpression(((helper = (helper = helpers.tabIcon || (depth0 != null ? depth0.tabIcon : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"tabIcon","hash":{},"data":data,"loc":{"start":{"line":6,"column":38},"end":{"line":6,"column":49}}}) : helper)))
|
||||
+ container.escapeExpression(((helper = (helper = lookupProperty(helpers,"tabIcon") || (depth0 != null ? lookupProperty(depth0,"tabIcon") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"tabIcon","hash":{},"data":data,"loc":{"start":{"line":6,"column":38},"end":{"line":6,"column":49}}}) : helper)))
|
||||
+ "\"></span>";
|
||||
},"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) {
|
||||
var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {});
|
||||
var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {
|
||||
if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
|
||||
return parent[propertyName];
|
||||
}
|
||||
return undefined
|
||||
};
|
||||
|
||||
return "<div class=\"detailFileInfoContainer\"></div>\n"
|
||||
+ ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.tabHeaders : depth0),{"name":"if","hash":{},"fn":container.program(1, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":2,"column":0},"end":{"line":11,"column":7}}})) != null ? stack1 : "")
|
||||
+ ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"tabHeaders") : depth0),{"name":"if","hash":{},"fn":container.program(1, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":2,"column":0},"end":{"line":11,"column":7}}})) != null ? stack1 : "")
|
||||
+ "<div class=\"tabsContainer\"></div>\n<a class=\"close icon-close\" href=\"#\"><span class=\"hidden-visually\">"
|
||||
+ container.escapeExpression(((helper = (helper = helpers.closeLabel || (depth0 != null ? depth0.closeLabel : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(alias1,{"name":"closeLabel","hash":{},"data":data,"loc":{"start":{"line":13,"column":67},"end":{"line":13,"column":81}}}) : helper)))
|
||||
+ container.escapeExpression(((helper = (helper = lookupProperty(helpers,"closeLabel") || (depth0 != null ? lookupProperty(depth0,"closeLabel") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(alias1,{"name":"closeLabel","hash":{},"data":data,"loc":{"start":{"line":13,"column":67},"end":{"line":13,"column":81}}}) : helper)))
|
||||
+ "</span></a>\n";
|
||||
},"useData":true});
|
||||
templates['favorite_mark'] = template({"1":function(container,depth0,helpers,partials,data) {
|
||||
return "permanent";
|
||||
},"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) {
|
||||
var stack1, helper, options, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, buffer =
|
||||
var stack1, helper, options, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
|
||||
if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
|
||||
return parent[propertyName];
|
||||
}
|
||||
return undefined
|
||||
}, buffer =
|
||||
"<div class=\"favorite-mark ";
|
||||
stack1 = ((helper = (helper = helpers.isFavorite || (depth0 != null ? depth0.isFavorite : depth0)) != null ? helper : alias2),(options={"name":"isFavorite","hash":{},"fn":container.program(1, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":1,"column":26},"end":{"line":1,"column":65}}}),(typeof helper === alias3 ? helper.call(alias1,options) : helper));
|
||||
if (!helpers.isFavorite) { stack1 = container.hooks.blockHelperMissing.call(depth0,stack1,options)}
|
||||
stack1 = ((helper = (helper = lookupProperty(helpers,"isFavorite") || (depth0 != null ? lookupProperty(depth0,"isFavorite") : depth0)) != null ? helper : alias2),(options={"name":"isFavorite","hash":{},"fn":container.program(1, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":1,"column":26},"end":{"line":1,"column":65}}}),(typeof helper === alias3 ? helper.call(alias1,options) : helper));
|
||||
if (!lookupProperty(helpers,"isFavorite")) { stack1 = container.hooks.blockHelperMissing.call(depth0,stack1,options)}
|
||||
if (stack1 != null) { buffer += stack1; }
|
||||
return buffer + "\">\n <span class=\"icon "
|
||||
+ alias4(((helper = (helper = helpers.iconClass || (depth0 != null ? depth0.iconClass : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"iconClass","hash":{},"data":data,"loc":{"start":{"line":2,"column":19},"end":{"line":2,"column":32}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"iconClass") || (depth0 != null ? lookupProperty(depth0,"iconClass") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"iconClass","hash":{},"data":data,"loc":{"start":{"line":2,"column":19},"end":{"line":2,"column":32}}}) : helper)))
|
||||
+ "\" />\n <span class=\"hidden-visually\">"
|
||||
+ alias4(((helper = (helper = helpers.altText || (depth0 != null ? depth0.altText : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"altText","hash":{},"data":data,"loc":{"start":{"line":3,"column":31},"end":{"line":3,"column":42}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"altText") || (depth0 != null ? lookupProperty(depth0,"altText") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"altText","hash":{},"data":data,"loc":{"start":{"line":3,"column":31},"end":{"line":3,"column":42}}}) : helper)))
|
||||
+ "</span>\n</div>\n";
|
||||
},"useData":true});
|
||||
templates['file_action_trigger'] = template({"1":function(container,depth0,helpers,partials,data) {
|
||||
var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression;
|
||||
var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
|
||||
if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
|
||||
return parent[propertyName];
|
||||
}
|
||||
return undefined
|
||||
};
|
||||
|
||||
return " <img class=\"svg\" alt=\""
|
||||
+ alias4(((helper = (helper = helpers.altText || (depth0 != null ? depth0.altText : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"altText","hash":{},"data":data,"loc":{"start":{"line":3,"column":24},"end":{"line":3,"column":35}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"altText") || (depth0 != null ? lookupProperty(depth0,"altText") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"altText","hash":{},"data":data,"loc":{"start":{"line":3,"column":24},"end":{"line":3,"column":35}}}) : helper)))
|
||||
+ "\" src=\""
|
||||
+ alias4(((helper = (helper = helpers.icon || (depth0 != null ? depth0.icon : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"icon","hash":{},"data":data,"loc":{"start":{"line":3,"column":42},"end":{"line":3,"column":50}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"icon") || (depth0 != null ? lookupProperty(depth0,"icon") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"icon","hash":{},"data":data,"loc":{"start":{"line":3,"column":42},"end":{"line":3,"column":50}}}) : helper)))
|
||||
+ "\" />\n";
|
||||
},"3":function(container,depth0,helpers,partials,data) {
|
||||
var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {});
|
||||
var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {
|
||||
if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
|
||||
return parent[propertyName];
|
||||
}
|
||||
return undefined
|
||||
};
|
||||
|
||||
return ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.iconClass : depth0),{"name":"if","hash":{},"fn":container.program(4, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":5,"column":2},"end":{"line":7,"column":9}}})) != null ? stack1 : "")
|
||||
+ ((stack1 = helpers.unless.call(alias1,(depth0 != null ? depth0.hasDisplayName : depth0),{"name":"unless","hash":{},"fn":container.program(6, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":8,"column":2},"end":{"line":10,"column":13}}})) != null ? stack1 : "");
|
||||
return ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"iconClass") : depth0),{"name":"if","hash":{},"fn":container.program(4, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":5,"column":2},"end":{"line":7,"column":9}}})) != null ? stack1 : "")
|
||||
+ ((stack1 = lookupProperty(helpers,"unless").call(alias1,(depth0 != null ? lookupProperty(depth0,"hasDisplayName") : depth0),{"name":"unless","hash":{},"fn":container.program(6, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":8,"column":2},"end":{"line":10,"column":13}}})) != null ? stack1 : "");
|
||||
},"4":function(container,depth0,helpers,partials,data) {
|
||||
var helper;
|
||||
var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {
|
||||
if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
|
||||
return parent[propertyName];
|
||||
}
|
||||
return undefined
|
||||
};
|
||||
|
||||
return " <span class=\"icon "
|
||||
+ container.escapeExpression(((helper = (helper = helpers.iconClass || (depth0 != null ? depth0.iconClass : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"iconClass","hash":{},"data":data,"loc":{"start":{"line":6,"column":21},"end":{"line":6,"column":34}}}) : helper)))
|
||||
+ container.escapeExpression(((helper = (helper = lookupProperty(helpers,"iconClass") || (depth0 != null ? lookupProperty(depth0,"iconClass") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"iconClass","hash":{},"data":data,"loc":{"start":{"line":6,"column":21},"end":{"line":6,"column":34}}}) : helper)))
|
||||
+ "\" />\n";
|
||||
},"6":function(container,depth0,helpers,partials,data) {
|
||||
var helper;
|
||||
var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {
|
||||
if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
|
||||
return parent[propertyName];
|
||||
}
|
||||
return undefined
|
||||
};
|
||||
|
||||
return " <span class=\"hidden-visually\">"
|
||||
+ container.escapeExpression(((helper = (helper = helpers.altText || (depth0 != null ? depth0.altText : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"altText","hash":{},"data":data,"loc":{"start":{"line":9,"column":33},"end":{"line":9,"column":44}}}) : helper)))
|
||||
+ container.escapeExpression(((helper = (helper = lookupProperty(helpers,"altText") || (depth0 != null ? lookupProperty(depth0,"altText") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"altText","hash":{},"data":data,"loc":{"start":{"line":9,"column":33},"end":{"line":9,"column":44}}}) : helper)))
|
||||
+ "</span>\n";
|
||||
},"8":function(container,depth0,helpers,partials,data) {
|
||||
var helper;
|
||||
var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {
|
||||
if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
|
||||
return parent[propertyName];
|
||||
}
|
||||
return undefined
|
||||
};
|
||||
|
||||
return "<span> "
|
||||
+ container.escapeExpression(((helper = (helper = helpers.displayName || (depth0 != null ? depth0.displayName : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"displayName","hash":{},"data":data,"loc":{"start":{"line":12,"column":27},"end":{"line":12,"column":42}}}) : helper)))
|
||||
+ container.escapeExpression(((helper = (helper = lookupProperty(helpers,"displayName") || (depth0 != null ? lookupProperty(depth0,"displayName") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"displayName","hash":{},"data":data,"loc":{"start":{"line":12,"column":27},"end":{"line":12,"column":42}}}) : helper)))
|
||||
+ "</span>";
|
||||
},"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) {
|
||||
var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression;
|
||||
var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
|
||||
if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
|
||||
return parent[propertyName];
|
||||
}
|
||||
return undefined
|
||||
};
|
||||
|
||||
return "<a class=\"action action-"
|
||||
+ alias4(((helper = (helper = helpers.nameLowerCase || (depth0 != null ? depth0.nameLowerCase : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"nameLowerCase","hash":{},"data":data,"loc":{"start":{"line":1,"column":24},"end":{"line":1,"column":41}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"nameLowerCase") || (depth0 != null ? lookupProperty(depth0,"nameLowerCase") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"nameLowerCase","hash":{},"data":data,"loc":{"start":{"line":1,"column":24},"end":{"line":1,"column":41}}}) : helper)))
|
||||
+ "\" href=\"#\" 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,"loc":{"start":{"line":1,"column":65},"end":{"line":1,"column":73}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"name") || (depth0 != null ? lookupProperty(depth0,"name") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"name","hash":{},"data":data,"loc":{"start":{"line":1,"column":65},"end":{"line":1,"column":73}}}) : helper)))
|
||||
+ "\">\n"
|
||||
+ ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.icon : depth0),{"name":"if","hash":{},"fn":container.program(1, data, 0),"inverse":container.program(3, data, 0),"data":data,"loc":{"start":{"line":2,"column":1},"end":{"line":11,"column":8}}})) != null ? stack1 : "")
|
||||
+ ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"icon") : depth0),{"name":"if","hash":{},"fn":container.program(1, data, 0),"inverse":container.program(3, data, 0),"data":data,"loc":{"start":{"line":2,"column":1},"end":{"line":11,"column":8}}})) != null ? stack1 : "")
|
||||
+ " "
|
||||
+ ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.displayName : depth0),{"name":"if","hash":{},"fn":container.program(8, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":12,"column":1},"end":{"line":12,"column":56}}})) != null ? stack1 : "")
|
||||
+ ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"displayName") : depth0),{"name":"if","hash":{},"fn":container.program(8, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":12,"column":1},"end":{"line":12,"column":56}}})) != null ? stack1 : "")
|
||||
+ "\n</a>\n";
|
||||
},"useData":true});
|
||||
templates['fileactionsmenu'] = template({"1":function(container,depth0,helpers,partials,data) {
|
||||
var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression;
|
||||
var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
|
||||
if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
|
||||
return parent[propertyName];
|
||||
}
|
||||
return undefined
|
||||
};
|
||||
|
||||
return " <li class=\""
|
||||
+ ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.inline : depth0),{"name":"if","hash":{},"fn":container.program(2, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":3,"column":13},"end":{"line":3,"column":40}}})) != null ? stack1 : "")
|
||||
+ ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"inline") : depth0),{"name":"if","hash":{},"fn":container.program(2, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":3,"column":13},"end":{"line":3,"column":40}}})) != null ? stack1 : "")
|
||||
+ " action-"
|
||||
+ alias4(((helper = (helper = helpers.nameLowerCase || (depth0 != null ? depth0.nameLowerCase : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"nameLowerCase","hash":{},"data":data,"loc":{"start":{"line":3,"column":48},"end":{"line":3,"column":65}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"nameLowerCase") || (depth0 != null ? lookupProperty(depth0,"nameLowerCase") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"nameLowerCase","hash":{},"data":data,"loc":{"start":{"line":3,"column":48},"end":{"line":3,"column":65}}}) : helper)))
|
||||
+ "-container\">\n <a href=\"#\" class=\"menuitem action action-"
|
||||
+ alias4(((helper = (helper = helpers.nameLowerCase || (depth0 != null ? depth0.nameLowerCase : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"nameLowerCase","hash":{},"data":data,"loc":{"start":{"line":4,"column":45},"end":{"line":4,"column":62}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"nameLowerCase") || (depth0 != null ? lookupProperty(depth0,"nameLowerCase") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"nameLowerCase","hash":{},"data":data,"loc":{"start":{"line":4,"column":45},"end":{"line":4,"column":62}}}) : 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,"loc":{"start":{"line":4,"column":87},"end":{"line":4,"column":95}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"name") || (depth0 != null ? lookupProperty(depth0,"name") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"name","hash":{},"data":data,"loc":{"start":{"line":4,"column":87},"end":{"line":4,"column":95}}}) : helper)))
|
||||
+ "\">\n "
|
||||
+ ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.icon : depth0),{"name":"if","hash":{},"fn":container.program(4, data, 0),"inverse":container.program(6, data, 0),"data":data,"loc":{"start":{"line":5,"column":4},"end":{"line":12,"column":11}}})) != null ? stack1 : "")
|
||||
+ ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"icon") : depth0),{"name":"if","hash":{},"fn":container.program(4, data, 0),"inverse":container.program(6, data, 0),"data":data,"loc":{"start":{"line":5,"column":4},"end":{"line":12,"column":11}}})) != 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,"loc":{"start":{"line":13,"column":10},"end":{"line":13,"column":25}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"displayName") || (depth0 != null ? lookupProperty(depth0,"displayName") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"displayName","hash":{},"data":data,"loc":{"start":{"line":13,"column":10},"end":{"line":13,"column":25}}}) : helper)))
|
||||
+ "</span>\n </a>\n </li>\n";
|
||||
},"2":function(container,depth0,helpers,partials,data) {
|
||||
return "hidden";
|
||||
},"4":function(container,depth0,helpers,partials,data) {
|
||||
var helper;
|
||||
var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {
|
||||
if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
|
||||
return parent[propertyName];
|
||||
}
|
||||
return undefined
|
||||
};
|
||||
|
||||
return "<img class=\"icon\" src=\""
|
||||
+ container.escapeExpression(((helper = (helper = helpers.icon || (depth0 != null ? depth0.icon : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"icon","hash":{},"data":data,"loc":{"start":{"line":5,"column":39},"end":{"line":5,"column":47}}}) : helper)))
|
||||
+ container.escapeExpression(((helper = (helper = lookupProperty(helpers,"icon") || (depth0 != null ? lookupProperty(depth0,"icon") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"icon","hash":{},"data":data,"loc":{"start":{"line":5,"column":39},"end":{"line":5,"column":47}}}) : helper)))
|
||||
+ "\"/>\n";
|
||||
},"6":function(container,depth0,helpers,partials,data) {
|
||||
var stack1;
|
||||
var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {
|
||||
if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
|
||||
return parent[propertyName];
|
||||
}
|
||||
return undefined
|
||||
};
|
||||
|
||||
return ((stack1 = helpers["if"].call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? depth0.iconClass : depth0),{"name":"if","hash":{},"fn":container.program(7, data, 0),"inverse":container.program(9, data, 0),"data":data,"loc":{"start":{"line":7,"column":5},"end":{"line":11,"column":12}}})) != null ? stack1 : "");
|
||||
return ((stack1 = lookupProperty(helpers,"if").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,"iconClass") : depth0),{"name":"if","hash":{},"fn":container.program(7, data, 0),"inverse":container.program(9, data, 0),"data":data,"loc":{"start":{"line":7,"column":5},"end":{"line":11,"column":12}}})) != null ? stack1 : "");
|
||||
},"7":function(container,depth0,helpers,partials,data) {
|
||||
var helper;
|
||||
var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {
|
||||
if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
|
||||
return parent[propertyName];
|
||||
}
|
||||
return undefined
|
||||
};
|
||||
|
||||
return " <span class=\"icon "
|
||||
+ container.escapeExpression(((helper = (helper = helpers.iconClass || (depth0 != null ? depth0.iconClass : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"iconClass","hash":{},"data":data,"loc":{"start":{"line":8,"column":24},"end":{"line":8,"column":37}}}) : helper)))
|
||||
+ container.escapeExpression(((helper = (helper = lookupProperty(helpers,"iconClass") || (depth0 != null ? lookupProperty(depth0,"iconClass") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"iconClass","hash":{},"data":data,"loc":{"start":{"line":8,"column":24},"end":{"line":8,"column":37}}}) : helper)))
|
||||
+ "\"></span>\n";
|
||||
},"9":function(container,depth0,helpers,partials,data) {
|
||||
return " <span class=\"no-icon\"></span>\n";
|
||||
},"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) {
|
||||
var stack1;
|
||||
var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {
|
||||
if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
|
||||
return parent[propertyName];
|
||||
}
|
||||
return undefined
|
||||
};
|
||||
|
||||
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,"loc":{"start":{"line":2,"column":1},"end":{"line":16,"column":10}}})) != null ? stack1 : "")
|
||||
+ ((stack1 = lookupProperty(helpers,"each").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,"items") : depth0),{"name":"each","hash":{},"fn":container.program(1, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":2,"column":1},"end":{"line":16,"column":10}}})) != null ? stack1 : "")
|
||||
+ "</ul>\n";
|
||||
},"useData":true});
|
||||
templates['filemultiselectmenu'] = template({"1":function(container,depth0,helpers,partials,data) {
|
||||
var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression;
|
||||
var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
|
||||
if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
|
||||
return parent[propertyName];
|
||||
}
|
||||
return undefined
|
||||
};
|
||||
|
||||
return " <li class=\"item-"
|
||||
+ alias4(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"name","hash":{},"data":data,"loc":{"start":{"line":3,"column":18},"end":{"line":3,"column":26}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"name") || (depth0 != null ? lookupProperty(depth0,"name") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"name","hash":{},"data":data,"loc":{"start":{"line":3,"column":18},"end":{"line":3,"column":26}}}) : helper)))
|
||||
+ "\">\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,"loc":{"start":{"line":4,"column":38},"end":{"line":4,"column":46}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"name") || (depth0 != null ? lookupProperty(depth0,"name") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"name","hash":{},"data":data,"loc":{"start":{"line":4,"column":38},"end":{"line":4,"column":46}}}) : 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,"loc":{"start":{"line":4,"column":71},"end":{"line":4,"column":79}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"name") || (depth0 != null ? lookupProperty(depth0,"name") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"name","hash":{},"data":data,"loc":{"start":{"line":4,"column":71},"end":{"line":4,"column":79}}}) : 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,"loc":{"start":{"line":5,"column":4},"end":{"line":9,"column":11}}})) != null ? stack1 : "")
|
||||
+ ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"iconClass") : depth0),{"name":"if","hash":{},"fn":container.program(2, data, 0),"inverse":container.program(4, data, 0),"data":data,"loc":{"start":{"line":5,"column":4},"end":{"line":9,"column":11}}})) != null ? stack1 : "")
|
||||
+ " <span class=\"label\">"
|
||||
+ alias4(((helper = (helper = helpers.displayName || (depth0 != null ? depth0.displayName : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"displayName","hash":{},"data":data,"loc":{"start":{"line":10,"column":24},"end":{"line":10,"column":39}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"displayName") || (depth0 != null ? lookupProperty(depth0,"displayName") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"displayName","hash":{},"data":data,"loc":{"start":{"line":10,"column":24},"end":{"line":10,"column":39}}}) : helper)))
|
||||
+ "</span>\n </a>\n </li>\n";
|
||||
},"2":function(container,depth0,helpers,partials,data) {
|
||||
var helper;
|
||||
var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {
|
||||
if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
|
||||
return parent[propertyName];
|
||||
}
|
||||
return undefined
|
||||
};
|
||||
|
||||
return " <span class=\"icon "
|
||||
+ container.escapeExpression(((helper = (helper = helpers.iconClass || (depth0 != null ? depth0.iconClass : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"iconClass","hash":{},"data":data,"loc":{"start":{"line":6,"column":23},"end":{"line":6,"column":36}}}) : helper)))
|
||||
+ container.escapeExpression(((helper = (helper = lookupProperty(helpers,"iconClass") || (depth0 != null ? lookupProperty(depth0,"iconClass") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"iconClass","hash":{},"data":data,"loc":{"start":{"line":6,"column":23},"end":{"line":6,"column":36}}}) : helper)))
|
||||
+ "\"></span>\n";
|
||||
},"4":function(container,depth0,helpers,partials,data) {
|
||||
return " <span class=\"no-icon\"></span>\n";
|
||||
},"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) {
|
||||
var stack1;
|
||||
var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {
|
||||
if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
|
||||
return parent[propertyName];
|
||||
}
|
||||
return undefined
|
||||
};
|
||||
|
||||
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,"loc":{"start":{"line":2,"column":1},"end":{"line":13,"column":10}}})) != null ? stack1 : "")
|
||||
+ ((stack1 = lookupProperty(helpers,"each").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,"items") : depth0),{"name":"each","hash":{},"fn":container.program(1, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":2,"column":1},"end":{"line":13,"column":10}}})) != null ? stack1 : "")
|
||||
+ "</ul>\n";
|
||||
},"useData":true});
|
||||
templates['filesummary'] = template({"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) {
|
||||
var helper;
|
||||
var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {
|
||||
if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
|
||||
return parent[propertyName];
|
||||
}
|
||||
return undefined
|
||||
};
|
||||
|
||||
return "<span class=\"info\">\n <span class=\"dirinfo\"></span>\n <span class=\"connector\">"
|
||||
+ container.escapeExpression(((helper = (helper = helpers.connectorLabel || (depth0 != null ? depth0.connectorLabel : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"connectorLabel","hash":{},"data":data,"loc":{"start":{"line":3,"column":25},"end":{"line":3,"column":43}}}) : helper)))
|
||||
+ container.escapeExpression(((helper = (helper = lookupProperty(helpers,"connectorLabel") || (depth0 != null ? lookupProperty(depth0,"connectorLabel") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"connectorLabel","hash":{},"data":data,"loc":{"start":{"line":3,"column":25},"end":{"line":3,"column":43}}}) : helper)))
|
||||
+ "</span>\n <span class=\"fileinfo\"></span>\n <span class=\"hiddeninfo\"></span>\n <span class=\"filter\"></span>\n</span>\n";
|
||||
},"useData":true});
|
||||
templates['mainfileinfodetailsview'] = template({"1":function(container,depth0,helpers,partials,data) {
|
||||
var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression;
|
||||
var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
|
||||
if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
|
||||
return parent[propertyName];
|
||||
}
|
||||
return undefined
|
||||
};
|
||||
|
||||
return " <a href=\"#\" class=\"action action-favorite favorite permanent\">\n <span class=\"icon "
|
||||
+ alias4(((helper = (helper = helpers.starClass || (depth0 != null ? depth0.starClass : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"starClass","hash":{},"data":data,"loc":{"start":{"line":13,"column":22},"end":{"line":13,"column":35}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"starClass") || (depth0 != null ? lookupProperty(depth0,"starClass") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"starClass","hash":{},"data":data,"loc":{"start":{"line":13,"column":22},"end":{"line":13,"column":35}}}) : helper)))
|
||||
+ "\" title=\""
|
||||
+ alias4(((helper = (helper = helpers.starAltText || (depth0 != null ? depth0.starAltText : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"starAltText","hash":{},"data":data,"loc":{"start":{"line":13,"column":44},"end":{"line":13,"column":59}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"starAltText") || (depth0 != null ? lookupProperty(depth0,"starAltText") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"starAltText","hash":{},"data":data,"loc":{"start":{"line":13,"column":44},"end":{"line":13,"column":59}}}) : helper)))
|
||||
+ "\"></span>\n </a>\n";
|
||||
},"3":function(container,depth0,helpers,partials,data) {
|
||||
var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression;
|
||||
var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
|
||||
if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
|
||||
return parent[propertyName];
|
||||
}
|
||||
return undefined
|
||||
};
|
||||
|
||||
return "<span class=\"size\" title=\""
|
||||
+ alias4(((helper = (helper = helpers.altSize || (depth0 != null ? depth0.altSize : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"altSize","hash":{},"data":data,"loc":{"start":{"line":16,"column":43},"end":{"line":16,"column":54}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"altSize") || (depth0 != null ? lookupProperty(depth0,"altSize") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"altSize","hash":{},"data":data,"loc":{"start":{"line":16,"column":43},"end":{"line":16,"column":54}}}) : helper)))
|
||||
+ "\">"
|
||||
+ alias4(((helper = (helper = helpers.size || (depth0 != null ? depth0.size : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"size","hash":{},"data":data,"loc":{"start":{"line":16,"column":56},"end":{"line":16,"column":64}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"size") || (depth0 != null ? lookupProperty(depth0,"size") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"size","hash":{},"data":data,"loc":{"start":{"line":16,"column":56},"end":{"line":16,"column":64}}}) : helper)))
|
||||
+ "</span>, ";
|
||||
},"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) {
|
||||
var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression;
|
||||
var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
|
||||
if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
|
||||
return parent[propertyName];
|
||||
}
|
||||
return undefined
|
||||
};
|
||||
|
||||
return "<div class=\"thumbnailContainer\"><a href=\"#\" class=\"thumbnail action-default\"><div class=\"stretcher\"/></a></div>\n<div class=\"file-details-container\">\n <div class=\"fileName\">\n <h3 title=\""
|
||||
+ alias4(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"name","hash":{},"data":data,"loc":{"start":{"line":4,"column":13},"end":{"line":4,"column":21}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"name") || (depth0 != null ? lookupProperty(depth0,"name") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"name","hash":{},"data":data,"loc":{"start":{"line":4,"column":13},"end":{"line":4,"column":21}}}) : helper)))
|
||||
+ "\" class=\"ellipsis\">"
|
||||
+ alias4(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"name","hash":{},"data":data,"loc":{"start":{"line":4,"column":40},"end":{"line":4,"column":48}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"name") || (depth0 != null ? lookupProperty(depth0,"name") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"name","hash":{},"data":data,"loc":{"start":{"line":4,"column":40},"end":{"line":4,"column":48}}}) : helper)))
|
||||
+ "</h3>\n <a class=\"permalink\" href=\""
|
||||
+ alias4(((helper = (helper = helpers.permalink || (depth0 != null ? depth0.permalink : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"permalink","hash":{},"data":data,"loc":{"start":{"line":5,"column":29},"end":{"line":5,"column":42}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"permalink") || (depth0 != null ? lookupProperty(depth0,"permalink") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"permalink","hash":{},"data":data,"loc":{"start":{"line":5,"column":29},"end":{"line":5,"column":42}}}) : helper)))
|
||||
+ "\" title=\""
|
||||
+ alias4(((helper = (helper = helpers.permalinkTitle || (depth0 != null ? depth0.permalinkTitle : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"permalinkTitle","hash":{},"data":data,"loc":{"start":{"line":5,"column":51},"end":{"line":5,"column":69}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"permalinkTitle") || (depth0 != null ? lookupProperty(depth0,"permalinkTitle") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"permalinkTitle","hash":{},"data":data,"loc":{"start":{"line":5,"column":51},"end":{"line":5,"column":69}}}) : helper)))
|
||||
+ "\" data-clipboard-text=\""
|
||||
+ alias4(((helper = (helper = helpers.permalink || (depth0 != null ? depth0.permalink : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"permalink","hash":{},"data":data,"loc":{"start":{"line":5,"column":92},"end":{"line":5,"column":105}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"permalink") || (depth0 != null ? lookupProperty(depth0,"permalink") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"permalink","hash":{},"data":data,"loc":{"start":{"line":5,"column":92},"end":{"line":5,"column":105}}}) : helper)))
|
||||
+ "\">\n <span class=\"icon icon-clippy\"></span>\n <span class=\"hidden-visually\">"
|
||||
+ alias4(((helper = (helper = helpers.permalinkTitle || (depth0 != null ? depth0.permalinkTitle : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"permalinkTitle","hash":{},"data":data,"loc":{"start":{"line":7,"column":33},"end":{"line":7,"column":51}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"permalinkTitle") || (depth0 != null ? lookupProperty(depth0,"permalinkTitle") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"permalinkTitle","hash":{},"data":data,"loc":{"start":{"line":7,"column":33},"end":{"line":7,"column":51}}}) : helper)))
|
||||
+ "</span>\n </a>\n </div>\n <div class=\"file-details ellipsis\">\n"
|
||||
+ ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.hasFavoriteAction : depth0),{"name":"if","hash":{},"fn":container.program(1, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":11,"column":2},"end":{"line":15,"column":9}}})) != null ? stack1 : "")
|
||||
+ ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"hasFavoriteAction") : depth0),{"name":"if","hash":{},"fn":container.program(1, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":11,"column":2},"end":{"line":15,"column":9}}})) != null ? stack1 : "")
|
||||
+ " "
|
||||
+ ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.hasSize : depth0),{"name":"if","hash":{},"fn":container.program(3, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":16,"column":2},"end":{"line":16,"column":80}}})) != null ? stack1 : "")
|
||||
+ ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"hasSize") : depth0),{"name":"if","hash":{},"fn":container.program(3, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":16,"column":2},"end":{"line":16,"column":80}}})) != null ? stack1 : "")
|
||||
+ "<span class=\"date 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,"loc":{"start":{"line":16,"column":139},"end":{"line":16,"column":152}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"timestamp") || (depth0 != null ? lookupProperty(depth0,"timestamp") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"timestamp","hash":{},"data":data,"loc":{"start":{"line":16,"column":139},"end":{"line":16,"column":152}}}) : 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,"loc":{"start":{"line":16,"column":161},"end":{"line":16,"column":172}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"altDate") || (depth0 != null ? lookupProperty(depth0,"altDate") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"altDate","hash":{},"data":data,"loc":{"start":{"line":16,"column":161},"end":{"line":16,"column":172}}}) : 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,"loc":{"start":{"line":16,"column":174},"end":{"line":16,"column":182}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"date") || (depth0 != null ? lookupProperty(depth0,"date") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"date","hash":{},"data":data,"loc":{"start":{"line":16,"column":174},"end":{"line":16,"column":182}}}) : helper)))
|
||||
+ "</span>\n </div>\n</div>\n<div class=\"hidden permalink-field\">\n <input type=\"text\" value=\""
|
||||
+ alias4(((helper = (helper = helpers.permalink || (depth0 != null ? depth0.permalink : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"permalink","hash":{},"data":data,"loc":{"start":{"line":20,"column":27},"end":{"line":20,"column":40}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"permalink") || (depth0 != null ? lookupProperty(depth0,"permalink") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"permalink","hash":{},"data":data,"loc":{"start":{"line":20,"column":27},"end":{"line":20,"column":40}}}) : helper)))
|
||||
+ "\" placeholder=\""
|
||||
+ alias4(((helper = (helper = helpers.permalinkTitle || (depth0 != null ? depth0.permalinkTitle : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"permalinkTitle","hash":{},"data":data,"loc":{"start":{"line":20,"column":55},"end":{"line":20,"column":73}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"permalinkTitle") || (depth0 != null ? lookupProperty(depth0,"permalinkTitle") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"permalinkTitle","hash":{},"data":data,"loc":{"start":{"line":20,"column":55},"end":{"line":20,"column":73}}}) : helper)))
|
||||
+ "\" readonly=\"readonly\"/>\n</div>\n";
|
||||
},"useData":true});
|
||||
templates['newfilemenu'] = template({"1":function(container,depth0,helpers,partials,data) {
|
||||
var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression;
|
||||
var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
|
||||
if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
|
||||
return parent[propertyName];
|
||||
}
|
||||
return undefined
|
||||
};
|
||||
|
||||
return " <li>\n <a href=\"#\" class=\"menuitem\" data-templatename=\""
|
||||
+ alias4(((helper = (helper = helpers.templateName || (depth0 != null ? depth0.templateName : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"templateName","hash":{},"data":data,"loc":{"start":{"line":7,"column":51},"end":{"line":7,"column":67}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"templateName") || (depth0 != null ? lookupProperty(depth0,"templateName") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"templateName","hash":{},"data":data,"loc":{"start":{"line":7,"column":51},"end":{"line":7,"column":67}}}) : helper)))
|
||||
+ "\" data-filetype=\""
|
||||
+ alias4(((helper = (helper = helpers.fileType || (depth0 != null ? depth0.fileType : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"fileType","hash":{},"data":data,"loc":{"start":{"line":7,"column":84},"end":{"line":7,"column":96}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"fileType") || (depth0 != null ? lookupProperty(depth0,"fileType") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"fileType","hash":{},"data":data,"loc":{"start":{"line":7,"column":84},"end":{"line":7,"column":96}}}) : helper)))
|
||||
+ "\" data-action=\""
|
||||
+ alias4(((helper = (helper = helpers.id || (depth0 != null ? depth0.id : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"id","hash":{},"data":data,"loc":{"start":{"line":7,"column":111},"end":{"line":7,"column":117}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"id") || (depth0 != null ? lookupProperty(depth0,"id") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"id","hash":{},"data":data,"loc":{"start":{"line":7,"column":111},"end":{"line":7,"column":117}}}) : helper)))
|
||||
+ "\"><span class=\"icon "
|
||||
+ alias4(((helper = (helper = helpers.iconClass || (depth0 != null ? depth0.iconClass : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"iconClass","hash":{},"data":data,"loc":{"start":{"line":7,"column":137},"end":{"line":7,"column":150}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"iconClass") || (depth0 != null ? lookupProperty(depth0,"iconClass") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"iconClass","hash":{},"data":data,"loc":{"start":{"line":7,"column":137},"end":{"line":7,"column":150}}}) : helper)))
|
||||
+ " svg\"></span><span class=\"displayname\">"
|
||||
+ alias4(((helper = (helper = helpers.displayName || (depth0 != null ? depth0.displayName : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"displayName","hash":{},"data":data,"loc":{"start":{"line":7,"column":189},"end":{"line":7,"column":204}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"displayName") || (depth0 != null ? lookupProperty(depth0,"displayName") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"displayName","hash":{},"data":data,"loc":{"start":{"line":7,"column":189},"end":{"line":7,"column":204}}}) : helper)))
|
||||
+ "</span></a>\n </li>\n";
|
||||
},"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) {
|
||||
var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression;
|
||||
var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
|
||||
if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
|
||||
return parent[propertyName];
|
||||
}
|
||||
return undefined
|
||||
};
|
||||
|
||||
return "<ul>\n <li>\n <label for=\"file_upload_start\" class=\"menuitem\" data-action=\"upload\" title=\""
|
||||
+ alias4(((helper = (helper = helpers.uploadMaxHumanFilesize || (depth0 != null ? depth0.uploadMaxHumanFilesize : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"uploadMaxHumanFilesize","hash":{},"data":data,"loc":{"start":{"line":3,"column":78},"end":{"line":3,"column":104}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"uploadMaxHumanFilesize") || (depth0 != null ? lookupProperty(depth0,"uploadMaxHumanFilesize") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"uploadMaxHumanFilesize","hash":{},"data":data,"loc":{"start":{"line":3,"column":78},"end":{"line":3,"column":104}}}) : helper)))
|
||||
+ "\" tabindex=\"0\"><span class=\"svg icon icon-upload\"></span><span class=\"displayname\">"
|
||||
+ alias4(((helper = (helper = helpers.uploadLabel || (depth0 != null ? depth0.uploadLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"uploadLabel","hash":{},"data":data,"loc":{"start":{"line":3,"column":187},"end":{"line":3,"column":202}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"uploadLabel") || (depth0 != null ? lookupProperty(depth0,"uploadLabel") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"uploadLabel","hash":{},"data":data,"loc":{"start":{"line":3,"column":187},"end":{"line":3,"column":202}}}) : helper)))
|
||||
+ "</span></label>\n </li>\n"
|
||||
+ ((stack1 = helpers.each.call(alias1,(depth0 != null ? depth0.items : depth0),{"name":"each","hash":{},"fn":container.program(1, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":5,"column":1},"end":{"line":9,"column":10}}})) != null ? stack1 : "")
|
||||
+ ((stack1 = lookupProperty(helpers,"each").call(alias1,(depth0 != null ? lookupProperty(depth0,"items") : depth0),{"name":"each","hash":{},"fn":container.program(1, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":5,"column":1},"end":{"line":9,"column":10}}})) != null ? stack1 : "")
|
||||
+ "</ul>\n";
|
||||
},"useData":true});
|
||||
templates['newfilemenu_filename_form'] = template({"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) {
|
||||
var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression;
|
||||
var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
|
||||
if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
|
||||
return parent[propertyName];
|
||||
}
|
||||
return undefined
|
||||
};
|
||||
|
||||
return "<form class=\"filenameform\">\n <input id=\""
|
||||
+ alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"cid","hash":{},"data":data,"loc":{"start":{"line":2,"column":12},"end":{"line":2,"column":19}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"cid") || (depth0 != null ? lookupProperty(depth0,"cid") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"cid","hash":{},"data":data,"loc":{"start":{"line":2,"column":12},"end":{"line":2,"column":19}}}) : helper)))
|
||||
+ "-input-"
|
||||
+ alias4(((helper = (helper = helpers.fileType || (depth0 != null ? depth0.fileType : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"fileType","hash":{},"data":data,"loc":{"start":{"line":2,"column":26},"end":{"line":2,"column":38}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"fileType") || (depth0 != null ? lookupProperty(depth0,"fileType") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"fileType","hash":{},"data":data,"loc":{"start":{"line":2,"column":26},"end":{"line":2,"column":38}}}) : helper)))
|
||||
+ "\" type=\"text\" value=\""
|
||||
+ alias4(((helper = (helper = helpers.fileName || (depth0 != null ? depth0.fileName : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"fileName","hash":{},"data":data,"loc":{"start":{"line":2,"column":59},"end":{"line":2,"column":71}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"fileName") || (depth0 != null ? lookupProperty(depth0,"fileName") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"fileName","hash":{},"data":data,"loc":{"start":{"line":2,"column":59},"end":{"line":2,"column":71}}}) : helper)))
|
||||
+ "\" autocomplete=\"off\" autocapitalize=\"off\">\n <input type=\"submit\" value=\" \" class=\"icon-confirm\" />\n</form>\n";
|
||||
},"useData":true});
|
||||
templates['operationprogressbar'] = template({"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) {
|
||||
var helper;
|
||||
var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {
|
||||
if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
|
||||
return parent[propertyName];
|
||||
}
|
||||
return undefined
|
||||
};
|
||||
|
||||
return "<div id=\"uploadprogressbar\">\n <em class=\"label outer\" style=\"display:none\"></em>\n</div>\n<button class=\"stop icon-close\" style=\"display:none\">\n <span class=\"hidden-visually\">"
|
||||
+ container.escapeExpression(((helper = (helper = helpers.textCancelButton || (depth0 != null ? depth0.textCancelButton : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"textCancelButton","hash":{},"data":data,"loc":{"start":{"line":5,"column":31},"end":{"line":5,"column":51}}}) : helper)))
|
||||
+ container.escapeExpression(((helper = (helper = lookupProperty(helpers,"textCancelButton") || (depth0 != null ? lookupProperty(depth0,"textCancelButton") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"textCancelButton","hash":{},"data":data,"loc":{"start":{"line":5,"column":31},"end":{"line":5,"column":51}}}) : helper)))
|
||||
+ "</span>\n</button>\n";
|
||||
},"useData":true});
|
||||
templates['operationprogressbarlabel'] = template({"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) {
|
||||
var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression;
|
||||
var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
|
||||
if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
|
||||
return parent[propertyName];
|
||||
}
|
||||
return undefined
|
||||
};
|
||||
|
||||
return "<em class=\"label\">\n <span class=\"desktop\">"
|
||||
+ alias4(((helper = (helper = helpers.textDesktop || (depth0 != null ? depth0.textDesktop : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"textDesktop","hash":{},"data":data,"loc":{"start":{"line":2,"column":23},"end":{"line":2,"column":38}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"textDesktop") || (depth0 != null ? lookupProperty(depth0,"textDesktop") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"textDesktop","hash":{},"data":data,"loc":{"start":{"line":2,"column":23},"end":{"line":2,"column":38}}}) : helper)))
|
||||
+ "</span>\n <span class=\"mobile\">"
|
||||
+ alias4(((helper = (helper = helpers.textMobile || (depth0 != null ? depth0.textMobile : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"textMobile","hash":{},"data":data,"loc":{"start":{"line":3,"column":22},"end":{"line":3,"column":36}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"textMobile") || (depth0 != null ? lookupProperty(depth0,"textMobile") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"textMobile","hash":{},"data":data,"loc":{"start":{"line":3,"column":22},"end":{"line":3,"column":36}}}) : helper)))
|
||||
+ "</span>\n</em>\n";
|
||||
},"useData":true});
|
||||
templates['template_addbutton'] = template({"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) {
|
||||
var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression;
|
||||
var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
|
||||
if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
|
||||
return parent[propertyName];
|
||||
}
|
||||
return undefined
|
||||
};
|
||||
|
||||
return "<a href=\"#\" class=\"button new\">\n <span class=\"icon "
|
||||
+ alias4(((helper = (helper = helpers.iconClass || (depth0 != null ? depth0.iconClass : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"iconClass","hash":{},"data":data,"loc":{"start":{"line":2,"column":19},"end":{"line":2,"column":32}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"iconClass") || (depth0 != null ? lookupProperty(depth0,"iconClass") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"iconClass","hash":{},"data":data,"loc":{"start":{"line":2,"column":19},"end":{"line":2,"column":32}}}) : helper)))
|
||||
+ "\"></span>\n <span class=\"hidden-visually\">"
|
||||
+ alias4(((helper = (helper = helpers.addText || (depth0 != null ? depth0.addText : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"addText","hash":{},"data":data,"loc":{"start":{"line":3,"column":31},"end":{"line":3,"column":42}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"addText") || (depth0 != null ? lookupProperty(depth0,"addText") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"addText","hash":{},"data":data,"loc":{"start":{"line":3,"column":31},"end":{"line":3,"column":42}}}) : helper)))
|
||||
+ "</span>\n</a>\n";
|
||||
},"useData":true});
|
||||
})();
|
||||
@@ -248,6 +248,8 @@ class ViewController extends Controller {
|
||||
$nav->assign('quota', $storageInfo['quota']);
|
||||
$nav->assign('usage_relative', $storageInfo['relative']);
|
||||
|
||||
$nav->assign('webdav_url', \OCP\Util::linkToRemote('dav/files/' . $user));
|
||||
|
||||
$contentItems = [];
|
||||
|
||||
// render the container content for every navigation item
|
||||
|
||||
@@ -39,6 +39,9 @@ class LoadSidebarListener implements IEventListener {
|
||||
}
|
||||
|
||||
Util::addScript(Application::APP_ID, 'dist/sidebar');
|
||||
// needed by the Sidebar legacy tabs
|
||||
// TODO: remove when all tabs migrated to the new api
|
||||
Util::addScript('files', 'fileinfomodel');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -73,9 +73,6 @@ export default {
|
||||
}
|
||||
},
|
||||
},
|
||||
beforeMount() {
|
||||
this.setFileInfo(this.fileInfo)
|
||||
},
|
||||
mounted() {
|
||||
// append the backbone element and set the FileInfo
|
||||
this.component.$el.appendTo(this.$el)
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
<div>
|
||||
<h3>{{ t('files', 'Transfer ownership of a file or folder') }} </h3>
|
||||
<form @submit.prevent="submit">
|
||||
<p>
|
||||
<p class="transfer-select-row">
|
||||
<span>{{ readableDirectory }}</span>
|
||||
<button v-if="directory === undefined" @click.prevent="start">
|
||||
{{ t('files', 'Choose file or folder to transfer') }}
|
||||
@@ -172,7 +172,7 @@ export default {
|
||||
}
|
||||
|
||||
this.userSuggestions = {}
|
||||
response.data.ocs.data.users.forEach(user => {
|
||||
response.data.ocs.data.exact.users.concat(response.data.ocs.data.users).forEach(user => {
|
||||
Vue.set(this.userSuggestions, user.value.shareWith, {
|
||||
uid: user.value.shareWith,
|
||||
displayName: user.label,
|
||||
@@ -243,4 +243,9 @@ p {
|
||||
}
|
||||
}
|
||||
}
|
||||
.transfer-select-row {
|
||||
span {
|
||||
margin-right: 8px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -30,15 +30,14 @@ Vue.use(VueClipboard)
|
||||
|
||||
Vue.prototype.t = t
|
||||
|
||||
// Init Sidebar Service
|
||||
if (!window.OCA.Files) {
|
||||
window.OCA.Files = {}
|
||||
}
|
||||
Object.assign(window.OCA.Files, { Sidebar: new Sidebar() })
|
||||
Object.assign(window.OCA.Files.Sidebar, { Tab })
|
||||
|
||||
window.addEventListener('DOMContentLoaded', () => {
|
||||
|
||||
// Init Sidebar Service
|
||||
if (!window.OCA.Files) {
|
||||
window.OCA.Files = {}
|
||||
}
|
||||
Object.assign(window.OCA.Files, { Sidebar: new Sidebar() })
|
||||
Object.assign(window.OCA.Files.Sidebar, { Tab })
|
||||
|
||||
// Make sure we have a proper layout
|
||||
if (document.getElementById('content')) {
|
||||
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
v-if="file"
|
||||
ref="sidebar"
|
||||
v-bind="appSidebar"
|
||||
:force-menu="true"
|
||||
@close="onClose"
|
||||
@update:active="setActiveTab"
|
||||
@update:starred="toggleStarred"
|
||||
@@ -37,6 +38,19 @@
|
||||
:file-info="fileInfo" />
|
||||
</template>
|
||||
|
||||
<!-- Actions menu -->
|
||||
<template v-if="fileInfo" #secondary-actions>
|
||||
<!-- TODO: create proper api for apps to register actions
|
||||
And inject themselves here. -->
|
||||
<ActionButton
|
||||
v-if="isSystemTagsEnabled"
|
||||
:close-after-click="true"
|
||||
icon="icon-tag"
|
||||
@click="toggleTags">
|
||||
{{ t('files_sharing', 'Tags') }}
|
||||
</ActionButton>
|
||||
</template>
|
||||
|
||||
<!-- Error display -->
|
||||
<div v-if="error" class="emptycontent">
|
||||
<div class="icon-error" />
|
||||
@@ -60,6 +74,7 @@
|
||||
import $ from 'jquery'
|
||||
import axios from '@nextcloud/axios'
|
||||
import AppSidebar from 'nextcloud-vue/dist/Components/AppSidebar'
|
||||
import ActionButton from 'nextcloud-vue/dist/Components/ActionButton'
|
||||
import FileInfo from '../services/FileInfo'
|
||||
import LegacyTab from '../components/LegacyTab'
|
||||
import LegacyView from '../components/LegacyView'
|
||||
@@ -69,6 +84,7 @@ export default {
|
||||
name: 'Sidebar',
|
||||
|
||||
components: {
|
||||
ActionButton,
|
||||
AppSidebar,
|
||||
LegacyView,
|
||||
},
|
||||
@@ -176,6 +192,7 @@ export default {
|
||||
starred: this.fileInfo.isFavourited,
|
||||
subtitle: this.subtitle,
|
||||
title: this.fileInfo.name,
|
||||
'data-mimetype': this.fileInfo.mimetype,
|
||||
}
|
||||
} else if (this.error) {
|
||||
return {
|
||||
@@ -217,6 +234,10 @@ export default {
|
||||
defaultActionListener() {
|
||||
return this.defaultAction ? 'figure-click' : null
|
||||
},
|
||||
|
||||
isSystemTagsEnabled() {
|
||||
return OCA && 'SystemTags' in OCA
|
||||
}
|
||||
},
|
||||
|
||||
watch: {
|
||||
@@ -376,13 +397,31 @@ export default {
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Toggle the tags selector
|
||||
*/
|
||||
toggleTags() {
|
||||
if (OCA.SystemTags && OCA.SystemTags.View) {
|
||||
OCA.SystemTags.View.toggle()
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
#app-sidebar {
|
||||
&.has-preview::v-deep .app-sidebar-header__figure {
|
||||
background-size: cover;
|
||||
&.has-preview::v-deep {
|
||||
.app-sidebar-header__figure {
|
||||
background-size: cover;
|
||||
}
|
||||
|
||||
&[data-mimetype="text/plain"],
|
||||
&[data-mimetype="text/markdown"] {
|
||||
.app-sidebar-header__figure {
|
||||
background-size: contain;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
</div>
|
||||
<label for="webdavurl"><?php p($l->t('WebDAV')); ?></label>
|
||||
<input id="webdavurl" type="text" readonly="readonly"
|
||||
value="<?php p(\OCP\Util::linkToRemote('webdav')); ?>"/>
|
||||
value="<?php p($_['webdav_url']); ?>"/>
|
||||
<em><?php print_unescaped($l->t('Use this address to <a href="%s" target="_blank" rel="noreferrer noopener">access your Files via WebDAV</a>', array(link_to_docs('user-webdav')))); ?></em>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -147,7 +147,7 @@ class ViewControllerTest extends TestCase {
|
||||
$nav->assign('usage', '123 B');
|
||||
$nav->assign('quota', 100);
|
||||
$nav->assign('total_space', '100 B');
|
||||
//$nav->assign('webdavurl', '');
|
||||
$nav->assign('webdav_url', 'http://localhost/remote.php/dav/files/testuser1/');
|
||||
$nav->assign('navigationItems', [
|
||||
'files' => [
|
||||
'id' => 'files',
|
||||
|
||||
@@ -1,37 +1,47 @@
|
||||
(function() {
|
||||
var template = Handlebars.template, templates = OCA.Files_External.Templates = OCA.Files_External.Templates || {};
|
||||
templates['credentialsDialog'] = template({"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) {
|
||||
var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression;
|
||||
var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
|
||||
if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
|
||||
return parent[propertyName];
|
||||
}
|
||||
return undefined
|
||||
};
|
||||
|
||||
return "<div id=\"files_external_div_form\"><div>\n <div>"
|
||||
+ alias4(((helper = (helper = helpers.credentials_text || (depth0 != null ? depth0.credentials_text : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"credentials_text","hash":{},"data":data,"loc":{"start":{"line":2,"column":6},"end":{"line":2,"column":26}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"credentials_text") || (depth0 != null ? lookupProperty(depth0,"credentials_text") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"credentials_text","hash":{},"data":data,"loc":{"start":{"line":2,"column":6},"end":{"line":2,"column":26}}}) : helper)))
|
||||
+ "</div>\n <form>\n <input type=\"text\" name=\"username\" placeholder=\""
|
||||
+ alias4(((helper = (helper = helpers.placeholder_username || (depth0 != null ? depth0.placeholder_username : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"placeholder_username","hash":{},"data":data,"loc":{"start":{"line":4,"column":51},"end":{"line":4,"column":75}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"placeholder_username") || (depth0 != null ? lookupProperty(depth0,"placeholder_username") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"placeholder_username","hash":{},"data":data,"loc":{"start":{"line":4,"column":51},"end":{"line":4,"column":75}}}) : helper)))
|
||||
+ "\"/>\n <input type=\"password\" name=\"password\" placeholder=\""
|
||||
+ alias4(((helper = (helper = helpers.placeholder_password || (depth0 != null ? depth0.placeholder_password : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"placeholder_password","hash":{},"data":data,"loc":{"start":{"line":5,"column":55},"end":{"line":5,"column":79}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"placeholder_password") || (depth0 != null ? lookupProperty(depth0,"placeholder_password") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"placeholder_password","hash":{},"data":data,"loc":{"start":{"line":5,"column":55},"end":{"line":5,"column":79}}}) : helper)))
|
||||
+ "\"/>\n </form>\n </div>\n</div>\n";
|
||||
},"useData":true});
|
||||
templates['mountOptionsDropDown'] = template({"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) {
|
||||
var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression;
|
||||
var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
|
||||
if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
|
||||
return parent[propertyName];
|
||||
}
|
||||
return undefined
|
||||
};
|
||||
|
||||
return "<div class=\"popovermenu open\">\n <ul>\n <li class=\"optionRow\">\n <span class=\"menuitem\">\n <input id=\"mountOptionsEncrypt\" class=\"checkbox\" name=\"encrypt\" type=\"checkbox\" value=\"true\" checked=\"checked\"/>\n <label for=\"mountOptionsEncrypt\">"
|
||||
+ alias4(((helper = (helper = helpers.mountOptionsEncryptLabel || (depth0 != null ? depth0.mountOptionsEncryptLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"mountOptionsEncryptLabel","hash":{},"data":data,"loc":{"start":{"line":6,"column":37},"end":{"line":6,"column":65}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"mountOptionsEncryptLabel") || (depth0 != null ? lookupProperty(depth0,"mountOptionsEncryptLabel") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"mountOptionsEncryptLabel","hash":{},"data":data,"loc":{"start":{"line":6,"column":37},"end":{"line":6,"column":65}}}) : helper)))
|
||||
+ "</label>\n </span>\n </li>\n <li class=\"optionRow\">\n <span class=\"menuitem\">\n <input id=\"mountOptionsPreviews\" class=\"checkbox\" name=\"previews\" type=\"checkbox\" value=\"true\" checked=\"checked\"/>\n <label for=\"mountOptionsPreviews\">"
|
||||
+ alias4(((helper = (helper = helpers.mountOptionsPreviewsLabel || (depth0 != null ? depth0.mountOptionsPreviewsLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"mountOptionsPreviewsLabel","hash":{},"data":data,"loc":{"start":{"line":12,"column":38},"end":{"line":12,"column":67}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"mountOptionsPreviewsLabel") || (depth0 != null ? lookupProperty(depth0,"mountOptionsPreviewsLabel") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"mountOptionsPreviewsLabel","hash":{},"data":data,"loc":{"start":{"line":12,"column":38},"end":{"line":12,"column":67}}}) : helper)))
|
||||
+ "</label>\n </span>\n </li>\n <li class=\"optionRow\">\n <span class=\"menuitem\">\n <input id=\"mountOptionsSharing\" class=\"checkbox\" name=\"enable_sharing\" type=\"checkbox\" value=\"true\"/>\n <label for=\"mountOptionsSharing\">"
|
||||
+ alias4(((helper = (helper = helpers.mountOptionsSharingLabel || (depth0 != null ? depth0.mountOptionsSharingLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"mountOptionsSharingLabel","hash":{},"data":data,"loc":{"start":{"line":18,"column":37},"end":{"line":18,"column":65}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"mountOptionsSharingLabel") || (depth0 != null ? lookupProperty(depth0,"mountOptionsSharingLabel") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"mountOptionsSharingLabel","hash":{},"data":data,"loc":{"start":{"line":18,"column":37},"end":{"line":18,"column":65}}}) : helper)))
|
||||
+ "</label>\n </span>\n </li>\n <li class=\"optionRow\">\n <span class=\"menuitem icon-search\">\n <label for=\"mountOptionsFilesystemCheck\">"
|
||||
+ alias4(((helper = (helper = helpers.mountOptionsFilesystemCheckLabel || (depth0 != null ? depth0.mountOptionsFilesystemCheckLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"mountOptionsFilesystemCheckLabel","hash":{},"data":data,"loc":{"start":{"line":23,"column":45},"end":{"line":23,"column":81}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"mountOptionsFilesystemCheckLabel") || (depth0 != null ? lookupProperty(depth0,"mountOptionsFilesystemCheckLabel") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"mountOptionsFilesystemCheckLabel","hash":{},"data":data,"loc":{"start":{"line":23,"column":45},"end":{"line":23,"column":81}}}) : helper)))
|
||||
+ "</label>\n <select id=\"mountOptionsFilesystemCheck\" name=\"filesystem_check_changes\" data-type=\"int\">\n <option value=\"0\">"
|
||||
+ alias4(((helper = (helper = helpers.mountOptionsFilesystemCheckOnce || (depth0 != null ? depth0.mountOptionsFilesystemCheckOnce : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"mountOptionsFilesystemCheckOnce","hash":{},"data":data,"loc":{"start":{"line":25,"column":23},"end":{"line":25,"column":58}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"mountOptionsFilesystemCheckOnce") || (depth0 != null ? lookupProperty(depth0,"mountOptionsFilesystemCheckOnce") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"mountOptionsFilesystemCheckOnce","hash":{},"data":data,"loc":{"start":{"line":25,"column":23},"end":{"line":25,"column":58}}}) : helper)))
|
||||
+ "</option>\n <option value=\"1\" selected=\"selected\">"
|
||||
+ alias4(((helper = (helper = helpers.mountOptionsFilesystemCheckDA || (depth0 != null ? depth0.mountOptionsFilesystemCheckDA : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"mountOptionsFilesystemCheckDA","hash":{},"data":data,"loc":{"start":{"line":26,"column":43},"end":{"line":26,"column":76}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"mountOptionsFilesystemCheckDA") || (depth0 != null ? lookupProperty(depth0,"mountOptionsFilesystemCheckDA") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"mountOptionsFilesystemCheckDA","hash":{},"data":data,"loc":{"start":{"line":26,"column":43},"end":{"line":26,"column":76}}}) : helper)))
|
||||
+ "</option>\n </select>\n </span>\n </li>\n <li class=\"optionRow\">\n <span class=\"menuitem\">\n <input id=\"mountOptionsEncoding\" class=\"checkbox\" name=\"encoding_compatibility\" type=\"checkbox\" value=\"true\"/>\n <label for=\"mountOptionsEncoding\">"
|
||||
+ alias4(((helper = (helper = helpers.mountOptionsEncodingLabel || (depth0 != null ? depth0.mountOptionsEncodingLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"mountOptionsEncodingLabel","hash":{},"data":data,"loc":{"start":{"line":33,"column":38},"end":{"line":33,"column":67}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"mountOptionsEncodingLabel") || (depth0 != null ? lookupProperty(depth0,"mountOptionsEncodingLabel") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"mountOptionsEncodingLabel","hash":{},"data":data,"loc":{"start":{"line":33,"column":38},"end":{"line":33,"column":67}}}) : helper)))
|
||||
+ "</label>\n </span>\n </li>\n <li class=\"optionRow\">\n <span class=\"menuitem\">\n <input id=\"mountOptionsReadOnly\" class=\"checkbox\" name=\"readonly\" type=\"checkbox\" value=\"true\"/>\n <label for=\"mountOptionsReadOnly\">"
|
||||
+ alias4(((helper = (helper = helpers.mountOptionsReadOnlyLabel || (depth0 != null ? depth0.mountOptionsReadOnlyLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"mountOptionsReadOnlyLabel","hash":{},"data":data,"loc":{"start":{"line":39,"column":38},"end":{"line":39,"column":67}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"mountOptionsReadOnlyLabel") || (depth0 != null ? lookupProperty(depth0,"mountOptionsReadOnlyLabel") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"mountOptionsReadOnlyLabel","hash":{},"data":data,"loc":{"start":{"line":39,"column":38},"end":{"line":39,"column":67}}}) : helper)))
|
||||
+ "</label>\n </span>\n </li>\n <li class=\"optionRow persistent\">\n <a href=\"#\" class=\"menuitem remove icon-delete\">\n <span>"
|
||||
+ alias4(((helper = (helper = helpers.deleteLabel || (depth0 != null ? depth0.deleteLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"deleteLabel","hash":{},"data":data,"loc":{"start":{"line":44,"column":10},"end":{"line":44,"column":25}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"deleteLabel") || (depth0 != null ? lookupProperty(depth0,"deleteLabel") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"deleteLabel","hash":{},"data":data,"loc":{"start":{"line":44,"column":10},"end":{"line":44,"column":25}}}) : helper)))
|
||||
+ "</span>\n </a>\n </li>\n </ul>\n</div>\n";
|
||||
},"useData":true});
|
||||
})();
|
||||
@@ -48,7 +48,6 @@ return array(
|
||||
'OCA\\Files_Sharing\\Helper' => $baseDir . '/../lib/Helper.php',
|
||||
'OCA\\Files_Sharing\\Hooks' => $baseDir . '/../lib/Hooks.php',
|
||||
'OCA\\Files_Sharing\\ISharedStorage' => $baseDir . '/../lib/ISharedStorage.php',
|
||||
'OCA\\Files_Sharing\\Listener\\GlobalShareAcceptanceListener' => $baseDir . '/../lib/Listener/GlobalShareAcceptanceListener.php',
|
||||
'OCA\\Files_Sharing\\Listener\\LoadAdditionalListener' => $baseDir . '/../lib/Listener/LoadAdditionalListener.php',
|
||||
'OCA\\Files_Sharing\\Listener\\LoadSidebarListener' => $baseDir . '/../lib/Listener/LoadSidebarListener.php',
|
||||
'OCA\\Files_Sharing\\Listener\\UserShareAcceptanceListener' => $baseDir . '/../lib/Listener/UserShareAcceptanceListener.php',
|
||||
|
||||
@@ -63,7 +63,6 @@ class ComposerStaticInitFiles_Sharing
|
||||
'OCA\\Files_Sharing\\Helper' => __DIR__ . '/..' . '/../lib/Helper.php',
|
||||
'OCA\\Files_Sharing\\Hooks' => __DIR__ . '/..' . '/../lib/Hooks.php',
|
||||
'OCA\\Files_Sharing\\ISharedStorage' => __DIR__ . '/..' . '/../lib/ISharedStorage.php',
|
||||
'OCA\\Files_Sharing\\Listener\\GlobalShareAcceptanceListener' => __DIR__ . '/..' . '/../lib/Listener/GlobalShareAcceptanceListener.php',
|
||||
'OCA\\Files_Sharing\\Listener\\LoadAdditionalListener' => __DIR__ . '/..' . '/../lib/Listener/LoadAdditionalListener.php',
|
||||
'OCA\\Files_Sharing\\Listener\\LoadSidebarListener' => __DIR__ . '/..' . '/../lib/Listener/LoadSidebarListener.php',
|
||||
'OCA\\Files_Sharing\\Listener\\UserShareAcceptanceListener' => __DIR__ . '/..' . '/../lib/Listener/UserShareAcceptanceListener.php',
|
||||
|
||||
+2
-2
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
@@ -1,2 +1,2 @@
|
||||
!function(e){var n={};function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:r})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,n){if(1&n&&(e=t(e)),8&n)return e;if(4&n&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(t.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&n&&"string"!=typeof e)for(var o in e)t.d(r,o,function(n){return e[n]}.bind(null,o));return r},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},t.p="/js/",t(t.s=301)}({301:function(e,n,r){r.p=OC.linkTo("files_sharing","js/dist/"),r.nc=btoa(OC.requestToken),window.OCP.Collaboration.registerType("file",{action:function(){return new Promise((function(e,n){OC.dialogs.filepicker(t("files_sharing","Link to a file"),(function(t){OC.Files.getClient().getFileInfo(t).then((function(n,t){e(t.id)})).fail((function(){n(new Error("Cannot get fileinfo"))}))}),!1,null,!1,OC.dialogs.FILEPICKER_TYPE_CHOOSE,"",{allowDirectoryChooser:!0})}))},typeString:t("files_sharing","Link to a file"),typeIconClass:"icon-files-dark"})}});
|
||||
!function(e){var n={};function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:r})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,n){if(1&n&&(e=t(e)),8&n)return e;if(4&n&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(t.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&n&&"string"!=typeof e)for(var o in e)t.d(r,o,function(n){return e[n]}.bind(null,o));return r},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},t.p="/js/",t(t.s=283)}({283:function(e,n,r){r.p=OC.linkTo("files_sharing","js/dist/"),r.nc=btoa(OC.requestToken),window.OCP.Collaboration.registerType("file",{action:function(){return new Promise((function(e,n){OC.dialogs.filepicker(t("files_sharing","Link to a file"),(function(t){OC.Files.getClient().getFileInfo(t).then((function(n,t){e(t.id)})).fail((function(){n(new Error("Cannot get fileinfo"))}))}),!1,null,!1,OC.dialogs.FILEPICKER_TYPE_CHOOSE,"",{allowDirectoryChooser:!0})}))},typeString:t("files_sharing","Link to a file"),typeIconClass:"icon-files-dark"})}});
|
||||
//# sourceMappingURL=collaboration.js.map
|
||||
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+78
-78
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
@@ -1,4 +1,4 @@
|
||||
!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="/js/",r(r.s=839)}({839:function(e,t){
|
||||
!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="/js/",r(r.s=828)}({828:function(e,t){
|
||||
/**
|
||||
* @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>
|
||||
*
|
||||
|
||||
+1
-1
File diff suppressed because one or more lines are too long
+2
-9
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
@@ -1,28 +1,43 @@
|
||||
(function() {
|
||||
var template = Handlebars.template, templates = OCA.Sharing.Templates = OCA.Sharing.Templates || {};
|
||||
templates['files_drop'] = template({"1":function(container,depth0,helpers,partials,data) {
|
||||
var helper;
|
||||
var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {
|
||||
if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
|
||||
return parent[propertyName];
|
||||
}
|
||||
return undefined
|
||||
};
|
||||
|
||||
return " <span class=\"icon-loading-small\"></span> "
|
||||
+ container.escapeExpression(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"name","hash":{},"data":data,"loc":{"start":{"line":3,"column":43},"end":{"line":3,"column":51}}}) : helper)))
|
||||
+ container.escapeExpression(((helper = (helper = lookupProperty(helpers,"name") || (depth0 != null ? lookupProperty(depth0,"name") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"name","hash":{},"data":data,"loc":{"start":{"line":3,"column":43},"end":{"line":3,"column":51}}}) : helper)))
|
||||
+ "\n";
|
||||
},"3":function(container,depth0,helpers,partials,data) {
|
||||
var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression;
|
||||
var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
|
||||
if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
|
||||
return parent[propertyName];
|
||||
}
|
||||
return undefined
|
||||
};
|
||||
|
||||
return " <img src=\""
|
||||
+ alias4(((helper = (helper = helpers.iconSrc || (depth0 != null ? depth0.iconSrc : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"iconSrc","hash":{},"data":data,"loc":{"start":{"line":5,"column":12},"end":{"line":5,"column":23}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"iconSrc") || (depth0 != null ? lookupProperty(depth0,"iconSrc") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"iconSrc","hash":{},"data":data,"loc":{"start":{"line":5,"column":12},"end":{"line":5,"column":23}}}) : helper)))
|
||||
+ "\"/> "
|
||||
+ alias4(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"name","hash":{},"data":data,"loc":{"start":{"line":5,"column":27},"end":{"line":5,"column":35}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"name") || (depth0 != null ? lookupProperty(depth0,"name") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"name","hash":{},"data":data,"loc":{"start":{"line":5,"column":27},"end":{"line":5,"column":35}}}) : helper)))
|
||||
+ "\n";
|
||||
},"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) {
|
||||
var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression;
|
||||
var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
|
||||
if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
|
||||
return parent[propertyName];
|
||||
}
|
||||
return undefined
|
||||
};
|
||||
|
||||
return "<li data-toggle=\"tooltip\" title=\""
|
||||
+ alias4(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"name","hash":{},"data":data,"loc":{"start":{"line":1,"column":33},"end":{"line":1,"column":41}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"name") || (depth0 != null ? lookupProperty(depth0,"name") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"name","hash":{},"data":data,"loc":{"start":{"line":1,"column":33},"end":{"line":1,"column":41}}}) : helper)))
|
||||
+ "\" data-name=\""
|
||||
+ alias4(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"name","hash":{},"data":data,"loc":{"start":{"line":1,"column":54},"end":{"line":1,"column":62}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"name") || (depth0 != null ? lookupProperty(depth0,"name") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"name","hash":{},"data":data,"loc":{"start":{"line":1,"column":54},"end":{"line":1,"column":62}}}) : helper)))
|
||||
+ "\">\n"
|
||||
+ ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.isUploading : depth0),{"name":"if","hash":{},"fn":container.program(1, data, 0),"inverse":container.program(3, data, 0),"data":data,"loc":{"start":{"line":2,"column":1},"end":{"line":6,"column":8}}})) != null ? stack1 : "")
|
||||
+ ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"isUploading") : depth0),{"name":"if","hash":{},"fn":container.program(1, data, 0),"inverse":container.program(3, data, 0),"data":data,"loc":{"start":{"line":2,"column":1},"end":{"line":6,"column":8}}})) != null ? stack1 : "")
|
||||
+ "</li>\n";
|
||||
},"useData":true});
|
||||
})();
|
||||
@@ -213,7 +213,6 @@ class Application extends App {
|
||||
$dispatcher->addListener('\OCP\Collaboration\Resources::loadAdditionalScripts', function() {
|
||||
\OCP\Util::addScript('files_sharing', 'dist/collaboration');
|
||||
});
|
||||
$dispatcher->addServiceListener(ShareCreatedEvent::class, GlobalShareAcceptanceListener::class);
|
||||
$dispatcher->addServiceListener(ShareCreatedEvent::class, UserShareAcceptanceListener::class);
|
||||
|
||||
// notifications api to accept incoming user shares
|
||||
|
||||
@@ -221,12 +221,12 @@ class ShareAPIController extends OCSController {
|
||||
$group = $this->groupManager->get($share->getSharedWith());
|
||||
$result['share_with'] = $share->getSharedWith();
|
||||
$result['share_with_displayname'] = $group !== null ? $group->getDisplayName() : $share->getSharedWith();
|
||||
} else if ($share->getShareType() === Share::SHARE_TYPE_LINK) {
|
||||
} else if ($share->getShareType() === IShare::TYPE_LINK) {
|
||||
|
||||
// "share_with" and "share_with_displayname" for passwords of link
|
||||
// shares was deprecated in Nextcloud 15, use "password" instead.
|
||||
$result['share_with'] = $share->getPassword();
|
||||
$result['share_with_displayname'] = $share->getPassword();
|
||||
$result['share_with_displayname'] = '(' . $this->l->t('Shared link') . ')';
|
||||
|
||||
$result['password'] = $share->getPassword();
|
||||
|
||||
|
||||
@@ -1,63 +0,0 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/**
|
||||
* @copyright Copyright (c) 2019, Roeland Jago Douma <roeland@famdouma.nl>
|
||||
*
|
||||
* @author Roeland Jago Douma <roeland@famdouma.nl>
|
||||
*
|
||||
* @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/>.
|
||||
*
|
||||
*/
|
||||
|
||||
namespace OCA\Files_Sharing\Listener;
|
||||
|
||||
use OCP\EventDispatcher\Event;
|
||||
use OCP\EventDispatcher\IEventListener;
|
||||
use OCP\IConfig;
|
||||
use OCP\Share\Events\ShareCreatedEvent;
|
||||
use OCP\Share\IManager;
|
||||
use OCP\Share\IShare;
|
||||
|
||||
class GlobalShareAcceptanceListener implements IEventListener {
|
||||
|
||||
/** @var IConfig */
|
||||
private $config;
|
||||
/** @var IManager */
|
||||
private $shareManager;
|
||||
|
||||
public function __construct(IConfig $config, IManager $shareManager) {
|
||||
$this->config = $config;
|
||||
$this->shareManager = $shareManager;
|
||||
}
|
||||
|
||||
public function handle(Event $event): void {
|
||||
if (!($event instanceof ShareCreatedEvent)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ($this->config->getSystemValueBool('sharing.interal_shares_accepted', false)) {
|
||||
$share = $event->getShare();
|
||||
|
||||
if ($share->getShareType() === IShare::TYPE_USER || $share->getShareType() === IShare::TYPE_GROUP) {
|
||||
$share->setStatus(IShare::STATUS_ACCEPTED);
|
||||
$this->shareManager->updateShare($share);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -26,11 +26,14 @@ declare(strict_types=1);
|
||||
|
||||
namespace OCA\Files_Sharing\Listener;
|
||||
|
||||
use OCA\Files_Sharing\AppInfo\Application;
|
||||
use OCP\EventDispatcher\Event;
|
||||
use OCP\EventDispatcher\IEventListener;
|
||||
use OCP\IConfig;
|
||||
use OCP\Share\Events\SharedEvent;
|
||||
use OCP\IGroupManager;
|
||||
use OCP\Share\Events\ShareCreatedEvent;
|
||||
use OCP\Share\IManager;
|
||||
use OCP\Share\IShare;
|
||||
|
||||
class UserShareAcceptanceListener implements IEventListener {
|
||||
|
||||
@@ -38,23 +41,44 @@ class UserShareAcceptanceListener implements IEventListener {
|
||||
private $config;
|
||||
/** @var IManager */
|
||||
private $shareManager;
|
||||
/** @var string */
|
||||
private $userId;
|
||||
/** @var IGroupManager */
|
||||
private $groupManager;
|
||||
|
||||
public function __construct(IConfig $config, IManager $shareManager, string $userId) {
|
||||
public function __construct(IConfig $config, IManager $shareManager, IGroupManager $groupManager) {
|
||||
$this->config = $config;
|
||||
$this->shareManager = $shareManager;
|
||||
$this->userId = $userId;
|
||||
$this->groupManager = $groupManager;
|
||||
}
|
||||
|
||||
public function handle(Event $event): void {
|
||||
if (!($event instanceof SharedEvent)) {
|
||||
if (!($event instanceof ShareCreatedEvent)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ($this->config->getUserValue($this->userId, 'files_sharing','default_accept','no') === 'yes') {
|
||||
$share = $event->getShare();
|
||||
$this->shareManager->acceptShare($share, $this->userId);
|
||||
$share = $event->getShare();
|
||||
|
||||
if ($share->getShareType() === IShare::TYPE_USER) {
|
||||
$this->handleAutoAccept($share, $share->getSharedWith());
|
||||
} else if ($share->getShareType() === IShare::TYPE_GROUP) {
|
||||
$group = $this->groupManager->get($share->getSharedWith());
|
||||
|
||||
if ($group === null) {
|
||||
return;
|
||||
}
|
||||
|
||||
$users = $group->getUsers();
|
||||
foreach ($users as $user) {
|
||||
$this->handleAutoAccept($share, $user->getUID());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private function handleAutoAccept(IShare $share, string $userId) {
|
||||
$defaultAcceptSystemConfig = $this->config->getSystemValueBool('sharing.enable_share_accept', false) ? 'no' : 'yes';
|
||||
$acceptDefault = $this->config->getUserValue($userId, Application::APP_ID, 'default_accept', $defaultAcceptSystemConfig) === 'yes';
|
||||
if (!$this->config->getSystemValueBool('sharing.force_share_accept', false) && $acceptDefault) {
|
||||
$this->shareManager->acceptShare($share, $userId);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -48,8 +48,11 @@ class Personal implements ISettings {
|
||||
}
|
||||
|
||||
public function getForm(): TemplateResponse {
|
||||
$value = $this->config->getUserValue($this->userId, Application::APP_ID, 'default_accept', 'no') === 'yes';
|
||||
$this->initialState->provideInitialState(Application::APP_ID, 'accept_default', $value);
|
||||
$defaultAcceptSystemConfig = $this->config->getSystemValueBool('sharing.enable_share_accept', false) ? 'no' : 'yes';
|
||||
$acceptDefault = $this->config->getUserValue($this->userId, Application::APP_ID, 'default_accept', $defaultAcceptSystemConfig) === 'yes';
|
||||
$enforceAccept = $this->config->getSystemValueBool('sharing.force_share_accept', false);
|
||||
$this->initialState->provideInitialState(Application::APP_ID, 'accept_default', $acceptDefault);
|
||||
$this->initialState->provideInitialState(Application::APP_ID, 'enforce_accept', $enforceAccept);
|
||||
return new TemplateResponse('files_sharing', 'Settings/personal');
|
||||
}
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
-->
|
||||
|
||||
<template>
|
||||
<div id="files-sharing-personal-settings" class="section">
|
||||
<div id="files-sharing-personal-settings" class="section" v-if="!enforceAcceptShares">
|
||||
<h2>{{ t('files', 'Sharing') }}</h2>
|
||||
<p>
|
||||
<input id="files-sharing-personal-settings-accept"
|
||||
@@ -42,12 +42,10 @@ export default {
|
||||
name: 'PersonalSettings',
|
||||
data() {
|
||||
return {
|
||||
accepting: true,
|
||||
accepting: loadState('files_sharing', 'accept_default'),
|
||||
enforceAcceptShares: loadState('files_sharing', 'enforce_accept'),
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.accepting = loadState('files_sharing', 'accept_default')
|
||||
},
|
||||
methods: {
|
||||
toggleEnabled() {
|
||||
axios.put(
|
||||
|
||||
@@ -29,7 +29,10 @@
|
||||
<div v-tooltip.auto="tooltip" class="sharing-entry__desc">
|
||||
<h5>{{ title }}</h5>
|
||||
</div>
|
||||
<Actions menu-align="right" class="sharing-entry__actions">
|
||||
<Actions
|
||||
menu-align="right"
|
||||
class="sharing-entry__actions"
|
||||
@close="onMenuClose">
|
||||
<template v-if="share.canEdit">
|
||||
<!-- edit permission -->
|
||||
<ActionCheckbox
|
||||
@@ -114,9 +117,10 @@
|
||||
}"
|
||||
:class="{ error: errors.note}"
|
||||
:disabled="saving"
|
||||
:value.sync="share.note"
|
||||
:value="share.newNote || share.note"
|
||||
icon="icon-edit"
|
||||
@update:value="debounceQueueUpdate('note')" />
|
||||
@update:value="onNoteChange"
|
||||
@submit="onNoteSubmit" />
|
||||
</template>
|
||||
</template>
|
||||
|
||||
@@ -303,6 +307,13 @@ export default {
|
||||
this.share.permissions = permissions
|
||||
this.queueUpdate('permissions')
|
||||
},
|
||||
|
||||
/**
|
||||
* Save potential changed data on menu close
|
||||
*/
|
||||
onMenuClose() {
|
||||
this.onNoteSubmit()
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
<ActionText icon="icon-user">
|
||||
{{ t('files_sharing', 'Added by {initiator}', { initiator: share.ownerDisplayName }) }}
|
||||
</ActionText>
|
||||
<ActionLink v-if="share.fileSource"
|
||||
<ActionLink v-if="share.canDelete && share.fileSource"
|
||||
icon="icon-folder"
|
||||
:href="fileTargetUrl">
|
||||
{{ t('files_sharing', 'Via folder') }}
|
||||
|
||||
@@ -121,7 +121,7 @@
|
||||
class="sharing-entry__actions"
|
||||
menu-align="right"
|
||||
:open.sync="open"
|
||||
@close="onPasswordSubmit">
|
||||
@close="onMenuClose">
|
||||
<template v-if="share">
|
||||
<template v-if="share.canEdit">
|
||||
<!-- folder -->
|
||||
@@ -195,6 +195,15 @@
|
||||
{{ t('files_sharing', 'Enter a password') }}
|
||||
</ActionInput>
|
||||
|
||||
<!-- password protected by Talk -->
|
||||
<ActionCheckbox v-if="isPasswordProtectedByTalkAvailable"
|
||||
:checked.sync="isPasswordProtectedByTalk"
|
||||
:disabled="saving"
|
||||
class="share-link-password-talk-checkbox"
|
||||
@change="queueUpdate('sendPasswordByTalk')">
|
||||
{{ t('files_sharing', 'Video verification') }}
|
||||
</ActionCheckbox>
|
||||
|
||||
<!-- expiration date -->
|
||||
<ActionCheckbox :checked.sync="hasExpirationDate"
|
||||
:disabled="config.isDefaultExpireDateEnforced || saving"
|
||||
@@ -242,9 +251,11 @@
|
||||
}"
|
||||
:class="{ error: errors.note}"
|
||||
:disabled="saving"
|
||||
:value.sync="share.note"
|
||||
:placeholder="t('files_sharing', 'Enter a note for the share recipient')"
|
||||
:value="share.newNote || share.note"
|
||||
icon="icon-edit"
|
||||
@update:value="debounceQueueUpdate('note')" />
|
||||
@update:value="onNoteChange"
|
||||
@submit="onNoteSubmit" />
|
||||
</template>
|
||||
|
||||
<!-- external sharing via url (social...) -->
|
||||
@@ -417,6 +428,35 @@ export default {
|
||||
},
|
||||
},
|
||||
|
||||
/**
|
||||
* Is Talk enabled?
|
||||
* @returns {boolean}
|
||||
*/
|
||||
isTalkEnabled() {
|
||||
return OC.appswebroots['spreed'] !== undefined
|
||||
},
|
||||
|
||||
/**
|
||||
* Is it possible to protect the password by Talk?
|
||||
* @returns {boolean}
|
||||
*/
|
||||
isPasswordProtectedByTalkAvailable() {
|
||||
return this.isPasswordProtected && this.isTalkEnabled
|
||||
},
|
||||
|
||||
/**
|
||||
* Is the current share password protected by Talk?
|
||||
* @returns {boolean}
|
||||
*/
|
||||
isPasswordProtectedByTalk: {
|
||||
get: function() {
|
||||
return this.share.sendPasswordByTalk
|
||||
},
|
||||
set: async function(enabled) {
|
||||
this.share.sendPasswordByTalk = enabled
|
||||
},
|
||||
},
|
||||
|
||||
/**
|
||||
* Is the current share an email share ?
|
||||
* @returns {boolean}
|
||||
@@ -733,11 +773,19 @@ export default {
|
||||
*/
|
||||
onPasswordSubmit() {
|
||||
if (this.hasUnsavedPassword) {
|
||||
this.share.password = this.share.newPassword
|
||||
this.share.password = this.share.newPassword.trim()
|
||||
this.queueUpdate('password')
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Save potential changed data on menu close
|
||||
*/
|
||||
onMenuClose() {
|
||||
this.onPasswordSubmit()
|
||||
this.onNoteSubmit()
|
||||
},
|
||||
|
||||
/**
|
||||
* Cancel the share creation
|
||||
* Used in the pending popover
|
||||
|
||||
@@ -88,12 +88,12 @@ export default {
|
||||
*/
|
||||
hasNote: {
|
||||
get: function() {
|
||||
return !!this.share.note
|
||||
return this.share.note !== ''
|
||||
},
|
||||
set: function(enabled) {
|
||||
this.share.note = enabled
|
||||
? t('files_sharing', 'Enter a note for the share recipient')
|
||||
: ''
|
||||
? null // enabled but user did not changed the content yet
|
||||
: '' // empty = no note = disabled
|
||||
},
|
||||
},
|
||||
|
||||
@@ -117,10 +117,10 @@ export default {
|
||||
// fallback to default in case of unavailable data
|
||||
return {
|
||||
days: window.dayNamesShort
|
||||
? window.dayNamesShort // provided by nextcloud
|
||||
? window.dayNamesShort // provided by nextcloud
|
||||
: ['Sun.', 'Mon.', 'Tue.', 'Wed.', 'Thu.', 'Fri.', 'Sat.'],
|
||||
months: window.monthNamesShort
|
||||
? window.monthNamesShort // provided by nextcloud
|
||||
? window.monthNamesShort // provided by nextcloud
|
||||
: ['Jan.', 'Feb.', 'Mar.', 'Apr.', 'May.', 'Jun.', 'Jul.', 'Aug.', 'Sep.', 'Oct.', 'Nov.', 'Dec.'],
|
||||
placeholder: {
|
||||
date: 'Select Date', // TODO: Translate
|
||||
@@ -182,6 +182,27 @@ export default {
|
||||
this.queueUpdate('expireDate')
|
||||
},
|
||||
|
||||
/**
|
||||
* Note changed, let's save it to a different key
|
||||
* @param {String} note the share note
|
||||
*/
|
||||
onNoteChange(note) {
|
||||
this.$set(this.share, 'newNote', note.trim())
|
||||
},
|
||||
|
||||
/**
|
||||
* When the note change, we trim, save and dispatch
|
||||
*
|
||||
* @param {string} note the note
|
||||
*/
|
||||
onNoteSubmit() {
|
||||
if (this.share.newNote) {
|
||||
this.share.note = this.share.newNote
|
||||
this.$delete(this.share, 'newNote')
|
||||
this.queueUpdate('note')
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Delete share button handler
|
||||
*/
|
||||
|
||||
@@ -250,7 +250,7 @@ export default class Share {
|
||||
* @memberof Share
|
||||
*/
|
||||
set note(note) {
|
||||
this.#share.note = note.trim()
|
||||
this.#share.note = note
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -303,7 +303,29 @@ export default class Share {
|
||||
* @memberof Share
|
||||
*/
|
||||
set password(password) {
|
||||
this.#share.password = password.trim()
|
||||
this.#share.password = password
|
||||
}
|
||||
|
||||
/**
|
||||
* Password protection by Talk of the share
|
||||
*
|
||||
* @returns {Boolean}
|
||||
* @readonly
|
||||
* @memberof Share
|
||||
*/
|
||||
get sendPasswordByTalk() {
|
||||
return this.#share.send_password_by_talk
|
||||
}
|
||||
|
||||
/**
|
||||
* Password protection by Talk of the share
|
||||
*
|
||||
* @param {Boolean} sendPasswordByTalk whether to send the password by Talk
|
||||
* or not
|
||||
* @memberof Share
|
||||
*/
|
||||
set sendPasswordByTalk(sendPasswordByTalk) {
|
||||
this.#share.send_password_by_talk = sendPasswordByTalk
|
||||
}
|
||||
|
||||
// SHARED ITEM DATA ---------------------------------------------
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
-->
|
||||
|
||||
<template>
|
||||
<ul class="sharing-link-list" v-if="canLinkShare">
|
||||
<ul v-if="canLinkShare" class="sharing-link-list">
|
||||
<!-- If no link shares, show the add link default entry -->
|
||||
<SharingEntryLink v-if="!hasLinkShares && canReshare"
|
||||
:can-reshare="canReshare"
|
||||
|
||||
@@ -171,7 +171,7 @@ class ShareAPIControllerTest extends TestCase {
|
||||
return \OC::$server->getShareManager()->newShare();
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function testDeleteShareShareNotFound() {
|
||||
$this->expectException(\OCP\AppFramework\OCS\OCSNotFoundException::class);
|
||||
$this->expectExceptionMessage('Wrong share ID, share doesn\'t exist');
|
||||
@@ -219,7 +219,7 @@ class ShareAPIControllerTest extends TestCase {
|
||||
$this->assertEquals($expected->getData(), $result->getData());
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function testDeleteShareLocked() {
|
||||
$this->expectException(\OCP\AppFramework\OCS\OCSNotFoundException::class);
|
||||
$this->expectExceptionMessage('Could not delete share');
|
||||
@@ -664,7 +664,7 @@ class ShareAPIControllerTest extends TestCase {
|
||||
'share_type' => \OCP\Share::SHARE_TYPE_LINK,
|
||||
'password' => 'password',
|
||||
'share_with' => 'password',
|
||||
'share_with_displayname' => 'password',
|
||||
'share_with_displayname' => '(Shared link)',
|
||||
'send_password_by_talk' => false,
|
||||
'uid_owner' => 'initiatorId',
|
||||
'displayname_owner' => 'initiatorDisplay',
|
||||
@@ -775,7 +775,7 @@ class ShareAPIControllerTest extends TestCase {
|
||||
$this->assertEquals($result, $ocs->getShare($share->getId())->getData()[0]);
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function testGetShareInvalidNode() {
|
||||
$this->expectException(\OCP\AppFramework\OCS\OCSNotFoundException::class);
|
||||
$this->expectExceptionMessage('Wrong share ID, share doesn\'t exist');
|
||||
@@ -1539,7 +1539,7 @@ class ShareAPIControllerTest extends TestCase {
|
||||
$this->assertEquals($expected, $this->invokePrivate($this->ocs, 'canAccessShare', [$share]));
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function testCreateShareNoPath() {
|
||||
$this->expectException(\OCP\AppFramework\OCS\OCSNotFoundException::class);
|
||||
$this->expectExceptionMessage('Please specify a file or folder path');
|
||||
@@ -1547,7 +1547,7 @@ class ShareAPIControllerTest extends TestCase {
|
||||
$this->ocs->createShare();
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function testCreateShareInvalidPath() {
|
||||
$this->expectException(\OCP\AppFramework\OCS\OCSNotFoundException::class);
|
||||
$this->expectExceptionMessage('Wrong path, file/folder doesn\'t exist');
|
||||
@@ -1566,7 +1566,7 @@ class ShareAPIControllerTest extends TestCase {
|
||||
$this->ocs->createShare('invalid-path');
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function testCreateShareInvalidPermissions() {
|
||||
$this->expectException(\OCP\AppFramework\OCS\OCSNotFoundException::class);
|
||||
$this->expectExceptionMessage('invalid permissions');
|
||||
@@ -1593,7 +1593,7 @@ class ShareAPIControllerTest extends TestCase {
|
||||
$this->ocs->createShare('valid-path', 32);
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function testCreateShareUserNoShareWith() {
|
||||
$this->expectException(\OCP\AppFramework\OCS\OCSNotFoundException::class);
|
||||
$this->expectExceptionMessage('Please specify a valid user');
|
||||
@@ -1625,7 +1625,7 @@ class ShareAPIControllerTest extends TestCase {
|
||||
$this->ocs->createShare('valid-path', \OCP\Constants::PERMISSION_ALL, \OCP\Share::SHARE_TYPE_USER);
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function testCreateShareUserNoValidShareWith() {
|
||||
$this->expectException(\OCP\AppFramework\OCS\OCSNotFoundException::class);
|
||||
$this->expectExceptionMessage('Please specify a valid user');
|
||||
@@ -1725,7 +1725,7 @@ class ShareAPIControllerTest extends TestCase {
|
||||
$this->assertEquals($expected->getData(), $result->getData());
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function testCreateShareGroupNoValidShareWith() {
|
||||
$this->expectException(\OCP\AppFramework\OCS\OCSNotFoundException::class);
|
||||
$this->expectExceptionMessage('Please specify a valid group');
|
||||
@@ -1834,7 +1834,7 @@ class ShareAPIControllerTest extends TestCase {
|
||||
$this->assertEquals($expected->getData(), $result->getData());
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function testCreateShareGroupNotAllowed() {
|
||||
$this->expectException(\OCP\AppFramework\OCS\OCSNotFoundException::class);
|
||||
$this->expectExceptionMessage('Group sharing is disabled by the administrator');
|
||||
@@ -1868,7 +1868,7 @@ class ShareAPIControllerTest extends TestCase {
|
||||
$this->ocs->createShare('valid-path', \OCP\Constants::PERMISSION_ALL, \OCP\Share::SHARE_TYPE_GROUP, 'invalidGroup');
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function testCreateShareLinkNoLinksAllowed() {
|
||||
$this->expectException(\OCP\AppFramework\OCS\OCSNotFoundException::class);
|
||||
$this->expectExceptionMessage('Public link sharing is disabled by the administrator');
|
||||
@@ -1894,7 +1894,7 @@ class ShareAPIControllerTest extends TestCase {
|
||||
$this->ocs->createShare('valid-path', \OCP\Constants::PERMISSION_ALL, \OCP\Share::SHARE_TYPE_LINK);
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function testCreateShareLinkNoPublicUpload() {
|
||||
$this->expectException(\OCP\AppFramework\OCS\OCSForbiddenException::class);
|
||||
$this->expectExceptionMessage('Public upload disabled by the administrator');
|
||||
@@ -1914,7 +1914,7 @@ class ShareAPIControllerTest extends TestCase {
|
||||
$this->ocs->createShare('valid-path', \OCP\Constants::PERMISSION_ALL, \OCP\Share::SHARE_TYPE_LINK, null, 'true');
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function testCreateShareLinkPublicUploadFile() {
|
||||
$this->expectException(\OCP\AppFramework\OCS\OCSNotFoundException::class);
|
||||
$this->expectExceptionMessage('Public upload is only possible for publicly shared folders');
|
||||
@@ -2040,7 +2040,7 @@ class ShareAPIControllerTest extends TestCase {
|
||||
$this->assertEquals($expected->getData(), $result->getData());
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function testCreateShareLinkSendPasswordByTalkWithTalkDisabled() {
|
||||
$this->expectException(\OCP\AppFramework\OCS\OCSForbiddenException::class);
|
||||
$this->expectExceptionMessage('Sharing valid-path sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled');
|
||||
@@ -2115,7 +2115,7 @@ class ShareAPIControllerTest extends TestCase {
|
||||
$this->assertEquals($expected->getData(), $result->getData());
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function testCreateShareInvalidExpireDate() {
|
||||
$this->expectException(\OCP\AppFramework\OCS\OCSNotFoundException::class);
|
||||
$this->expectExceptionMessage('Invalid date, date format must be YYYY-MM-DD');
|
||||
@@ -2216,7 +2216,7 @@ class ShareAPIControllerTest extends TestCase {
|
||||
$this->assertEquals($expected->getData(), $result->getData());
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function testCreateShareRoomHelperNotAvailable() {
|
||||
$this->expectException(\OCP\AppFramework\OCS\OCSForbiddenException::class);
|
||||
$this->expectExceptionMessage('Sharing valid-path failed because the back end does not support room shares');
|
||||
@@ -2257,7 +2257,7 @@ class ShareAPIControllerTest extends TestCase {
|
||||
$ocs->createShare('valid-path', \OCP\Constants::PERMISSION_ALL, \OCP\Share::SHARE_TYPE_ROOM, 'recipientRoom');
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function testCreateShareRoomHelperThrowException() {
|
||||
$this->expectException(\OCP\AppFramework\OCS\OCSNotFoundException::class);
|
||||
$this->expectExceptionMessage('Exception thrown by the helper');
|
||||
@@ -2375,7 +2375,7 @@ class ShareAPIControllerTest extends TestCase {
|
||||
$ocs->createShare('valid-path', \OCP\Constants::PERMISSION_ALL, \OCP\Share::SHARE_TYPE_USER, 'validUser');
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function testUpdateShareCantAccess() {
|
||||
$this->expectException(\OCP\AppFramework\OCS\OCSNotFoundException::class);
|
||||
$this->expectExceptionMessage('Wrong share ID, share doesn\'t exist');
|
||||
@@ -2402,7 +2402,7 @@ class ShareAPIControllerTest extends TestCase {
|
||||
$this->ocs->updateShare(42);
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function testUpdateNoParametersLink() {
|
||||
$this->expectException(\OCP\AppFramework\OCS\OCSBadRequestException::class);
|
||||
$this->expectExceptionMessage('Wrong or no update parameter given');
|
||||
@@ -2423,7 +2423,7 @@ class ShareAPIControllerTest extends TestCase {
|
||||
$this->ocs->updateShare(42);
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function testUpdateNoParametersOther() {
|
||||
$this->expectException(\OCP\AppFramework\OCS\OCSBadRequestException::class);
|
||||
$this->expectExceptionMessage('Wrong or no update parameter given');
|
||||
@@ -2612,7 +2612,7 @@ class ShareAPIControllerTest extends TestCase {
|
||||
$this->assertEquals($expected->getData(), $result->getData());
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function testUpdateLinkShareInvalidDate() {
|
||||
$this->expectException(\OCP\AppFramework\OCS\OCSBadRequestException::class);
|
||||
$this->expectExceptionMessage('Invalid date. Format must be YYYY-MM-DD');
|
||||
@@ -2672,7 +2672,7 @@ class ShareAPIControllerTest extends TestCase {
|
||||
$ocs->updateShare(42, $permissions, $password, null, $publicUpload, $expireDate);
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function testUpdateLinkSharePublicUploadOnFile() {
|
||||
$this->expectException(\OCP\AppFramework\OCS\OCSBadRequestException::class);
|
||||
$this->expectExceptionMessage('Public upload is only possible for publicly shared folders');
|
||||
@@ -2785,7 +2785,7 @@ class ShareAPIControllerTest extends TestCase {
|
||||
$this->assertEquals($expected->getData(), $result->getData());
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function testUpdateLinkShareSendPasswordByTalkWithTalkDisabledDoesNotChangeOther() {
|
||||
$this->expectException(\OCP\AppFramework\OCS\OCSForbiddenException::class);
|
||||
$this->expectExceptionMessage('Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled');
|
||||
@@ -3709,7 +3709,7 @@ class ShareAPIControllerTest extends TestCase {
|
||||
'file_target' => 'myTarget',
|
||||
'password' => 'mypassword',
|
||||
'share_with' => 'mypassword',
|
||||
'share_with_displayname' => 'mypassword',
|
||||
'share_with_displayname' => '(Shared link)',
|
||||
'send_password_by_talk' => false,
|
||||
'mail_send' => 0,
|
||||
'url' => 'myLink',
|
||||
@@ -3761,7 +3761,7 @@ class ShareAPIControllerTest extends TestCase {
|
||||
'file_target' => 'myTarget',
|
||||
'password' => 'mypassword',
|
||||
'share_with' => 'mypassword',
|
||||
'share_with_displayname' => 'mypassword',
|
||||
'share_with_displayname' => '(Shared link)',
|
||||
'send_password_by_talk' => true,
|
||||
'mail_send' => 0,
|
||||
'url' => 'myLink',
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+204
-16
File diff suppressed because it is too large
Load Diff
@@ -1,36 +1,51 @@
|
||||
(function() {
|
||||
var template = Handlebars.template, templates = OC.Settings.Templates = OC.Settings.Templates || {};
|
||||
templates['federationscopemenu'] = template({"1":function(container,depth0,helpers,partials,data) {
|
||||
var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression;
|
||||
var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
|
||||
if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
|
||||
return parent[propertyName];
|
||||
}
|
||||
return undefined
|
||||
};
|
||||
|
||||
return " <li tabindex=\"0\">\n <a href=\"#\" class=\"menuitem action 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,"loc":{"start":{"line":4,"column":45},"end":{"line":4,"column":53}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"name") || (depth0 != null ? lookupProperty(depth0,"name") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"name","hash":{},"data":data,"loc":{"start":{"line":4,"column":45},"end":{"line":4,"column":53}}}) : helper)))
|
||||
+ " permanent "
|
||||
+ ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.active : depth0),{"name":"if","hash":{},"fn":container.program(2, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":4,"column":64},"end":{"line":4,"column":91}}})) != null ? stack1 : "")
|
||||
+ ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"active") : depth0),{"name":"if","hash":{},"fn":container.program(2, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":4,"column":64},"end":{"line":4,"column":91}}})) != null ? stack1 : "")
|
||||
+ "\" 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,"loc":{"start":{"line":4,"column":106},"end":{"line":4,"column":114}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"name") || (depth0 != null ? lookupProperty(depth0,"name") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"name","hash":{},"data":data,"loc":{"start":{"line":4,"column":106},"end":{"line":4,"column":114}}}) : helper)))
|
||||
+ "\">\n"
|
||||
+ ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.iconClass : depth0),{"name":"if","hash":{},"fn":container.program(4, data, 0),"inverse":container.program(6, data, 0),"data":data,"loc":{"start":{"line":5,"column":4},"end":{"line":9,"column":11}}})) != null ? stack1 : "")
|
||||
+ ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"iconClass") : depth0),{"name":"if","hash":{},"fn":container.program(4, data, 0),"inverse":container.program(6, data, 0),"data":data,"loc":{"start":{"line":5,"column":4},"end":{"line":9,"column":11}}})) != null ? stack1 : "")
|
||||
+ " <p>\n <strong class=\"menuitem-text\">"
|
||||
+ alias4(((helper = (helper = helpers.displayName || (depth0 != null ? depth0.displayName : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"displayName","hash":{},"data":data,"loc":{"start":{"line":11,"column":35},"end":{"line":11,"column":50}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"displayName") || (depth0 != null ? lookupProperty(depth0,"displayName") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"displayName","hash":{},"data":data,"loc":{"start":{"line":11,"column":35},"end":{"line":11,"column":50}}}) : helper)))
|
||||
+ "</strong><br>\n <span class=\"menuitem-text-detail\">"
|
||||
+ alias4(((helper = (helper = helpers.tooltip || (depth0 != null ? depth0.tooltip : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"tooltip","hash":{},"data":data,"loc":{"start":{"line":12,"column":40},"end":{"line":12,"column":51}}}) : helper)))
|
||||
+ alias4(((helper = (helper = lookupProperty(helpers,"tooltip") || (depth0 != null ? lookupProperty(depth0,"tooltip") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"tooltip","hash":{},"data":data,"loc":{"start":{"line":12,"column":40},"end":{"line":12,"column":51}}}) : helper)))
|
||||
+ "</span>\n </p>\n </a>\n </li>\n";
|
||||
},"2":function(container,depth0,helpers,partials,data) {
|
||||
return "active";
|
||||
},"4":function(container,depth0,helpers,partials,data) {
|
||||
var helper;
|
||||
var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {
|
||||
if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
|
||||
return parent[propertyName];
|
||||
}
|
||||
return undefined
|
||||
};
|
||||
|
||||
return " <span class=\"icon "
|
||||
+ container.escapeExpression(((helper = (helper = helpers.iconClass || (depth0 != null ? depth0.iconClass : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"iconClass","hash":{},"data":data,"loc":{"start":{"line":6,"column":23},"end":{"line":6,"column":36}}}) : helper)))
|
||||
+ container.escapeExpression(((helper = (helper = lookupProperty(helpers,"iconClass") || (depth0 != null ? lookupProperty(depth0,"iconClass") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"iconClass","hash":{},"data":data,"loc":{"start":{"line":6,"column":23},"end":{"line":6,"column":36}}}) : helper)))
|
||||
+ "\"></span>\n";
|
||||
},"6":function(container,depth0,helpers,partials,data) {
|
||||
return " <span class=\"no-icon\"></span>\n";
|
||||
},"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) {
|
||||
var stack1;
|
||||
var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {
|
||||
if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
|
||||
return parent[propertyName];
|
||||
}
|
||||
return undefined
|
||||
};
|
||||
|
||||
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,"loc":{"start":{"line":2,"column":1},"end":{"line":16,"column":10}}})) != null ? stack1 : "")
|
||||
+ ((stack1 = lookupProperty(helpers,"each").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,"items") : depth0),{"name":"each","hash":{},"fn":container.program(1, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":2,"column":1},"end":{"line":16,"column":10}}})) != null ? stack1 : "")
|
||||
+ "</ul>\n";
|
||||
},"useData":true});
|
||||
})();
|
||||
+43
-43
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -22,58 +22,6 @@
|
||||
|
||||
<template>
|
||||
<div id="app-content" class="user-list-grid" @scroll.passive="onScroll">
|
||||
<div id="grid-header"
|
||||
:class="{'sticky': scrolled && !showConfig.showNewUserForm}"
|
||||
class="row">
|
||||
<div id="headerAvatar" class="avatar" />
|
||||
<div id="headerName" class="name">
|
||||
{{ t('settings', 'Username') }}
|
||||
|
||||
<div class="subtitle">
|
||||
{{ t('settings', 'Display name') }}
|
||||
</div>
|
||||
</div>
|
||||
<div id="headerPassword" class="password">
|
||||
{{ t('settings', 'Password') }}
|
||||
</div>
|
||||
<div id="headerAddress" class="mailAddress">
|
||||
{{ t('settings', 'Email') }}
|
||||
</div>
|
||||
<div id="headerGroups" class="groups">
|
||||
{{ t('settings', 'Groups') }}
|
||||
</div>
|
||||
<div v-if="subAdminsGroups.length>0 && settings.isAdmin"
|
||||
id="headerSubAdmins"
|
||||
class="subadmins">
|
||||
{{ t('settings', 'Group admin for') }}
|
||||
</div>
|
||||
<div id="headerQuota" class="quota">
|
||||
{{ t('settings', 'Quota') }}
|
||||
</div>
|
||||
<div v-if="showConfig.showLanguages"
|
||||
id="headerLanguages"
|
||||
class="languages">
|
||||
{{ t('settings', 'Language') }}
|
||||
</div>
|
||||
|
||||
<div v-if="showConfig.showUserBackend || showConfig.showStoragePath"
|
||||
class="headerUserBackend userBackend">
|
||||
<div v-if="showConfig.showUserBackend" class="userBackend">
|
||||
{{ t('settings', 'User backend') }}
|
||||
</div>
|
||||
<div v-if="showConfig.showStoragePath"
|
||||
class="subtitle storageLocation">
|
||||
{{ t('settings', 'Storage location') }}
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="showConfig.showLastLogin"
|
||||
class="headerLastLogin lastLogin">
|
||||
{{ t('settings', 'Last login') }}
|
||||
</div>
|
||||
|
||||
<div class="userActions" />
|
||||
</div>
|
||||
|
||||
<form v-show="showConfig.showNewUserForm"
|
||||
id="new-user"
|
||||
:class="{'sticky': scrolled && showConfig.showNewUserForm}"
|
||||
@@ -96,16 +44,16 @@
|
||||
pattern="[a-zA-Z0-9 _\.@\-']+"
|
||||
required
|
||||
type="text">
|
||||
</div>
|
||||
<div class="displayName">
|
||||
<input id="newdisplayname"
|
||||
v-model="newUser.displayName"
|
||||
:placeholder="t('settings', 'Display name')"
|
||||
autocapitalize="none"
|
||||
autocomplete="off"
|
||||
autocorrect="off"
|
||||
name="displayname"
|
||||
type="text">
|
||||
<div class="displayName">
|
||||
<input id="newdisplayname"
|
||||
v-model="newUser.displayName"
|
||||
:placeholder="t('settings', 'Display name')"
|
||||
autocapitalize="none"
|
||||
autocomplete="off"
|
||||
autocorrect="off"
|
||||
name="displayname"
|
||||
type="text">
|
||||
</div>
|
||||
</div>
|
||||
<div class="password">
|
||||
<input id="newuserpassword"
|
||||
@@ -204,8 +152,66 @@
|
||||
class="button primary icon-checkmark-white has-tooltip"
|
||||
type="submit"
|
||||
value="">
|
||||
<div class="closeButton">
|
||||
<Actions>
|
||||
<ActionButton icon="icon-close" @click="onClose">
|
||||
{{ t('settings', 'Close') }}
|
||||
</ActionButton>
|
||||
</Actions>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<div id="grid-header"
|
||||
:class="{'sticky': scrolled && !showConfig.showNewUserForm}"
|
||||
class="row">
|
||||
<div id="headerAvatar" class="avatar" />
|
||||
<div id="headerName" class="name">
|
||||
{{ t('settings', 'Username') }}
|
||||
|
||||
<div class="subtitle">
|
||||
{{ t('settings', 'Display name') }}
|
||||
</div>
|
||||
</div>
|
||||
<div id="headerPassword" class="password">
|
||||
{{ t('settings', 'Password') }}
|
||||
</div>
|
||||
<div id="headerAddress" class="mailAddress">
|
||||
{{ t('settings', 'Email') }}
|
||||
</div>
|
||||
<div id="headerGroups" class="groups">
|
||||
{{ t('settings', 'Groups') }}
|
||||
</div>
|
||||
<div v-if="subAdminsGroups.length>0 && settings.isAdmin"
|
||||
id="headerSubAdmins"
|
||||
class="subadmins">
|
||||
{{ t('settings', 'Group admin for') }}
|
||||
</div>
|
||||
<div id="headerQuota" class="quota">
|
||||
{{ t('settings', 'Quota') }}
|
||||
</div>
|
||||
<div v-if="showConfig.showLanguages"
|
||||
id="headerLanguages"
|
||||
class="languages">
|
||||
{{ t('settings', 'Language') }}
|
||||
</div>
|
||||
|
||||
<div v-if="showConfig.showUserBackend || showConfig.showStoragePath"
|
||||
class="headerUserBackend userBackend">
|
||||
<div v-if="showConfig.showUserBackend" class="userBackend">
|
||||
{{ t('settings', 'User backend') }}
|
||||
</div>
|
||||
<div v-if="showConfig.showStoragePath"
|
||||
class="subtitle storageLocation">
|
||||
{{ t('settings', 'Storage location') }}
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="showConfig.showLastLogin"
|
||||
class="headerLastLogin lastLogin">
|
||||
{{ t('settings', 'Last login') }}
|
||||
</div>
|
||||
|
||||
<div class="userActions" />
|
||||
</div>
|
||||
|
||||
<user-row v-for="(user, key) in filteredUsers"
|
||||
:key="key"
|
||||
@@ -236,7 +242,7 @@
|
||||
|
||||
<script>
|
||||
import userRow from './UserList/UserRow'
|
||||
import { Multiselect } from 'nextcloud-vue'
|
||||
import { Multiselect, Actions, ActionButton } from 'nextcloud-vue'
|
||||
import InfiniteLoading from 'vue-infinite-loading'
|
||||
import Vue from 'vue'
|
||||
|
||||
@@ -268,6 +274,8 @@ export default {
|
||||
userRow,
|
||||
Multiselect,
|
||||
InfiniteLoading,
|
||||
Actions,
|
||||
ActionButton,
|
||||
},
|
||||
props: {
|
||||
users: {
|
||||
@@ -561,6 +569,9 @@ export default {
|
||||
this.$refs.infiniteLoading.stateChanger.reset()
|
||||
}
|
||||
},
|
||||
onClose() {
|
||||
this.showConfig.showNewUserForm = false
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -56,10 +56,14 @@
|
||||
:sub-admins-groups="subAdminsGroups"
|
||||
:user-actions="userActions"
|
||||
:user="user"
|
||||
:class="{'row--menu-opened': openedMenu}"
|
||||
@hideMenu="hideMenu"
|
||||
@toggleMenu="toggleMenu" />
|
||||
<div v-else
|
||||
:class="{'disabled': loading.delete || loading.disable}"
|
||||
:class="{
|
||||
'disabled': loading.delete || loading.disable,
|
||||
'row--menu-opened': openedMenu
|
||||
}"
|
||||
:data-id="user.id"
|
||||
class="row row--editable">
|
||||
<div :class="{'icon-loading-small': loading.delete || loading.disable || loading.wipe}"
|
||||
@@ -675,3 +679,9 @@ export default {
|
||||
},
|
||||
}
|
||||
</script>
|
||||
<style scoped lang="scss">
|
||||
// Force menu to be above other rows
|
||||
.row--menu-opened {
|
||||
z-index: 1 !important;
|
||||
}
|
||||
</style>
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -12,12 +12,11 @@
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
#app-sidebar .mainFileInfoView .tag-label {
|
||||
#app-sidebar .app-sidebar-header__action .tag-label {
|
||||
cursor: pointer;
|
||||
padding: 13px;
|
||||
}
|
||||
|
||||
#app-sidebar .mainFileInfoView .icon-tag {
|
||||
opacity: .5;
|
||||
vertical-align: middle;
|
||||
padding: 13px 0;
|
||||
display: flex;
|
||||
color: var(--color-text-light);
|
||||
position: relative;
|
||||
margin-top: -20px;
|
||||
}
|
||||
|
||||
@@ -33,27 +33,7 @@
|
||||
|
||||
const systemTagsInfoView = new OCA.SystemTags.SystemTagsInfoView()
|
||||
fileList.registerDetailView(systemTagsInfoView)
|
||||
|
||||
_.each(fileList.getRegisteredDetailViews(), function(detailView) {
|
||||
if (detailView instanceof OCA.Files.MainFileInfoDetailView) {
|
||||
const systemTagsInfoViewToggleView
|
||||
= new OCA.SystemTags.SystemTagsInfoViewToggleView({
|
||||
systemTagsInfoView: systemTagsInfoView,
|
||||
})
|
||||
systemTagsInfoViewToggleView.render()
|
||||
|
||||
// The toggle view element is detached before the
|
||||
// MainFileInfoDetailView is rendered to prevent its event
|
||||
// handlers from being removed.
|
||||
systemTagsInfoViewToggleView.listenTo(detailView, 'pre-render', function() {
|
||||
systemTagsInfoViewToggleView.$el.detach()
|
||||
})
|
||||
systemTagsInfoViewToggleView.listenTo(detailView, 'post-render', function() {
|
||||
detailView.$el.find('.file-details').append(systemTagsInfoViewToggleView.$el)
|
||||
})
|
||||
|
||||
}
|
||||
})
|
||||
OCA.SystemTags.View = systemTagsInfoView
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
@@ -2,7 +2,6 @@ import './app'
|
||||
import './systemtagsfilelist'
|
||||
import './filesplugin'
|
||||
import './systemtagsinfoview'
|
||||
import './systemtagsinfoviewtoggleview'
|
||||
import './css/systemtagsfilelist.scss'
|
||||
|
||||
window.OCA.SystemTags = OCA.SystemTags
|
||||
|
||||
@@ -123,8 +123,9 @@
|
||||
|
||||
const appliedTags = collection.map(modelToSelection)
|
||||
self._inputView.setData(appliedTags)
|
||||
|
||||
self.show()
|
||||
if (appliedTags.length > 0) {
|
||||
self.show()
|
||||
}
|
||||
},
|
||||
})
|
||||
}
|
||||
@@ -152,6 +153,10 @@
|
||||
this.$el.addClass('hidden')
|
||||
},
|
||||
|
||||
toggle: function() {
|
||||
this.$el.toggleClass('hidden')
|
||||
},
|
||||
|
||||
openDropdown: function() {
|
||||
this.$el.find('.systemTagsInputField').select2('open')
|
||||
},
|
||||
|
||||
@@ -1,97 +0,0 @@
|
||||
/**
|
||||
*
|
||||
* @copyright Copyright (c) 2017, Daniel Calviño Sánchez (danxuliu@gmail.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/>.
|
||||
*
|
||||
*/
|
||||
|
||||
(function(OCA) {
|
||||
|
||||
/**
|
||||
* @class OCA.SystemTags.SystemTagsInfoViewToggleView
|
||||
* @classdesc
|
||||
*
|
||||
* View to toggle the visibility of a SystemTagsInfoView.
|
||||
*
|
||||
* This toggle view must be explicitly rendered before it is used.
|
||||
*/
|
||||
const SystemTagsInfoViewToggleView = OC.Backbone.View.extend(
|
||||
/** @lends OC.Backbone.View.prototype */ {
|
||||
|
||||
tagName: 'span',
|
||||
|
||||
className: 'tag-label',
|
||||
|
||||
events: {
|
||||
'click': 'click',
|
||||
},
|
||||
|
||||
/**
|
||||
* @type OCA.SystemTags.SystemTagsInfoView
|
||||
*/
|
||||
_systemTagsInfoView: null,
|
||||
|
||||
template: function(data) {
|
||||
return '<span class="icon icon-tag"/>' + t('systemtags', 'Tags')
|
||||
},
|
||||
|
||||
/**
|
||||
* Initialize this toggle view.
|
||||
*
|
||||
* The options must provide a systemTagsInfoView parameter that
|
||||
* references the SystemTagsInfoView to associate to this toggle view.
|
||||
* @param {Object} options options
|
||||
*/
|
||||
initialize: function(options) {
|
||||
options = options || {}
|
||||
|
||||
this._systemTagsInfoView = options.systemTagsInfoView
|
||||
if (!this._systemTagsInfoView) {
|
||||
throw new Error('Missing required parameter "systemTagsInfoView"')
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Toggles the visibility of the associated SystemTagsInfoView.
|
||||
*
|
||||
* When the systemTagsInfoView is shown its dropdown is also opened.
|
||||
*/
|
||||
click: function() {
|
||||
if (this._systemTagsInfoView.isVisible()) {
|
||||
this._systemTagsInfoView.hide()
|
||||
} else {
|
||||
this._systemTagsInfoView.show()
|
||||
this._systemTagsInfoView.openDropdown()
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Renders this toggle view.
|
||||
*
|
||||
* @returns {OCA.SystemTags.SystemTagsInfoViewToggleView} this object.
|
||||
*/
|
||||
render: function() {
|
||||
this.$el.html(this.template())
|
||||
|
||||
return this
|
||||
},
|
||||
|
||||
})
|
||||
|
||||
OCA.SystemTags.SystemTagsInfoViewToggleView = SystemTagsInfoViewToggleView
|
||||
|
||||
})(OCA)
|
||||
@@ -1,93 +0,0 @@
|
||||
/**
|
||||
*
|
||||
* @copyright Copyright (c) 2017, Daniel Calviño Sánchez (danxuliu@gmail.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/>.
|
||||
*
|
||||
*/
|
||||
|
||||
describe('OCA.SystemTags.SystemTagsInfoViewToggleView', function () {
|
||||
|
||||
var systemTagsInfoView;
|
||||
var view;
|
||||
|
||||
beforeEach(function() {
|
||||
systemTagsInfoView = new OCA.SystemTags.SystemTagsInfoView();
|
||||
view = new OCA.SystemTags.SystemTagsInfoViewToggleView({ systemTagsInfoView: systemTagsInfoView });
|
||||
});
|
||||
|
||||
afterEach(function() {
|
||||
view.remove();
|
||||
systemTagsInfoView.remove();
|
||||
});
|
||||
|
||||
describe('initialize', function() {
|
||||
it('fails if a "systemTagsInfoView" parameter is not provided', function() {
|
||||
var constructor = function() {
|
||||
return new OCA.SystemTags.SystemTagsInfoViewToggleView({});
|
||||
}
|
||||
|
||||
expect(constructor).toThrow();
|
||||
});
|
||||
});
|
||||
|
||||
describe('click on element', function() {
|
||||
|
||||
var isVisibleStub;
|
||||
var showStub;
|
||||
var hideStub;
|
||||
var openDropdownStub;
|
||||
|
||||
beforeEach(function() {
|
||||
isVisibleStub = sinon.stub(systemTagsInfoView, 'isVisible');
|
||||
showStub = sinon.stub(systemTagsInfoView, 'show');
|
||||
hideStub = sinon.stub(systemTagsInfoView, 'hide');
|
||||
openDropdownStub = sinon.stub(systemTagsInfoView, 'openDropdown');
|
||||
});
|
||||
|
||||
afterEach(function() {
|
||||
isVisibleStub.restore();
|
||||
showStub.restore();
|
||||
hideStub.restore();
|
||||
openDropdownStub.restore();
|
||||
});
|
||||
|
||||
it('shows a not visible SystemTagsInfoView', function() {
|
||||
isVisibleStub.returns(false);
|
||||
|
||||
view.$el.click();
|
||||
|
||||
expect(isVisibleStub.calledOnce).toBeTruthy();
|
||||
expect(showStub.calledOnce).toBeTruthy();
|
||||
expect(openDropdownStub.calledOnce).toBeTruthy();
|
||||
expect(openDropdownStub.calledAfter(showStub)).toBeTruthy();
|
||||
expect(hideStub.notCalled).toBeTruthy();
|
||||
});
|
||||
|
||||
it('hides a visible SystemTagsInfoView', function() {
|
||||
isVisibleStub.returns(true);
|
||||
|
||||
view.$el.click();
|
||||
|
||||
expect(isVisibleStub.calledOnce).toBeTruthy();
|
||||
expect(hideStub.calledOnce).toBeTruthy();
|
||||
expect(showStub.notCalled).toBeTruthy();
|
||||
expect(openDropdownStub.notCalled).toBeTruthy();
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -812,6 +812,7 @@ class Group_LDAP extends BackendUtility implements \OCP\GroupInterface, IGroupLD
|
||||
* @param int $limit
|
||||
* @param int $offset
|
||||
* @return array with user ids
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function usersInGroup($gid, $search = '', $limit = -1, $offset = 0) {
|
||||
if(!$this->enabled) {
|
||||
@@ -863,7 +864,10 @@ class Group_LDAP extends BackendUtility implements \OCP\GroupInterface, IGroupLD
|
||||
//we got uids, need to get their DNs to 'translate' them to user names
|
||||
$filter = $this->access->combineFilterWithAnd(array(
|
||||
str_replace('%uid', trim($member), $this->access->connection->ldapLoginFilter),
|
||||
$this->access->getFilterPartForUserSearch($search)
|
||||
$this->access->combineFilterWithAnd([
|
||||
$this->access->getFilterPartForUserSearch($search),
|
||||
$this->access->connection->ldapUserFilter
|
||||
])
|
||||
));
|
||||
$ldap_users = $this->access->fetchListOfUsers($filter, $attrs, 1);
|
||||
if(count($ldap_users) < 1) {
|
||||
@@ -872,17 +876,32 @@ class Group_LDAP extends BackendUtility implements \OCP\GroupInterface, IGroupLD
|
||||
$groupUsers[] = $this->access->dn2username($ldap_users[0]['dn'][0]);
|
||||
} else {
|
||||
//we got DNs, check if we need to filter by search or we can give back all of them
|
||||
if ($search !== '') {
|
||||
if(!$this->access->readAttribute($member,
|
||||
$uid = $this->access->dn2username($member);
|
||||
if(!$uid) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$cacheKey = 'userExistsOnLDAP' . $uid;
|
||||
$userExists = $this->access->connection->getFromCache($cacheKey);
|
||||
if($userExists === false) {
|
||||
continue;
|
||||
}
|
||||
if($userExists === null || $search !== '') {
|
||||
if (!$this->access->readAttribute($member,
|
||||
$this->access->connection->ldapUserDisplayName,
|
||||
$this->access->getFilterPartForUserSearch($search))) {
|
||||
$this->access->combineFilterWithAnd([
|
||||
$this->access->getFilterPartForUserSearch($search),
|
||||
$this->access->connection->ldapUserFilter
|
||||
])))
|
||||
{
|
||||
if($search === '') {
|
||||
$this->access->connection->writeToCache($cacheKey, false);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
$this->access->connection->writeToCache($cacheKey, true);
|
||||
}
|
||||
// dn2username will also check if the users belong to the allowed base
|
||||
if($ocname = $this->access->dn2username($member)) {
|
||||
$groupUsers[] = $ocname;
|
||||
}
|
||||
$groupUsers[] = $uid;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -175,6 +175,21 @@ class User {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* marks a user as deleted
|
||||
*
|
||||
* @throws \OCP\PreConditionNotMetException
|
||||
*/
|
||||
public function markUser() {
|
||||
$curValue = $this->config->getUserValue($this->getUsername(), 'user_ldap', 'isDeleted', '0');
|
||||
if($curValue === '1') {
|
||||
// the user is already marked, do not write to DB again
|
||||
return;
|
||||
}
|
||||
$this->config->setUserValue($this->getUsername(), 'user_ldap', 'isDeleted', '1');
|
||||
$this->config->setUserValue($this->getUsername(), 'user_ldap', 'foundDeleted', (string)time());
|
||||
}
|
||||
|
||||
/**
|
||||
* processes results from LDAP for attributes as returned by getAttributesToRead()
|
||||
* @param array $ldapEntry the user entry as retrieved from LDAP
|
||||
|
||||
@@ -47,7 +47,6 @@ use OCA\User_LDAP\User\OfflineUser;
|
||||
use OCA\User_LDAP\User\User;
|
||||
use OCP\IConfig;
|
||||
use OCP\ILogger;
|
||||
use OCP\IUser;
|
||||
use OCP\IUserSession;
|
||||
use OCP\Notification\IManager as INotificationManager;
|
||||
use OCP\Util;
|
||||
@@ -59,9 +58,6 @@ class User_LDAP extends BackendUtility implements \OCP\IUserBackend, \OCP\UserIn
|
||||
/** @var INotificationManager */
|
||||
protected $notificationManager;
|
||||
|
||||
/** @var string */
|
||||
protected $currentUserInDeletionProcess;
|
||||
|
||||
/** @var UserPluginManager */
|
||||
protected $userPluginManager;
|
||||
|
||||
@@ -76,20 +72,6 @@ class User_LDAP extends BackendUtility implements \OCP\IUserBackend, \OCP\UserIn
|
||||
$this->ocConfig = $ocConfig;
|
||||
$this->notificationManager = $notificationManager;
|
||||
$this->userPluginManager = $userPluginManager;
|
||||
$this->registerHooks($userSession);
|
||||
}
|
||||
|
||||
protected function registerHooks(IUserSession $userSession) {
|
||||
$userSession->listen('\OC\User', 'preDelete', [$this, 'preDeleteUser']);
|
||||
$userSession->listen('\OC\User', 'postDelete', [$this, 'postDeleteUser']);
|
||||
}
|
||||
|
||||
public function preDeleteUser(IUser $user) {
|
||||
$this->currentUserInDeletionProcess = $user->getUID();
|
||||
}
|
||||
|
||||
public function postDeleteUser() {
|
||||
$this->currentUserInDeletionProcess = null;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -315,6 +297,12 @@ class User_LDAP extends BackendUtility implements \OCP\IUserBackend, \OCP\UserIn
|
||||
if(is_null($user)) {
|
||||
return false;
|
||||
}
|
||||
$uid = $user instanceof User ? $user->getUsername() : $user->getOCName();
|
||||
$cacheKey = 'userExistsOnLDAP' . $uid;
|
||||
$userExists = $this->access->connection->getFromCache($cacheKey);
|
||||
if(!is_null($userExists)) {
|
||||
return (bool)$userExists;
|
||||
}
|
||||
|
||||
$dn = $user->getDN();
|
||||
//check if user really still exists by reading its entry
|
||||
@@ -322,18 +310,22 @@ class User_LDAP extends BackendUtility implements \OCP\IUserBackend, \OCP\UserIn
|
||||
try {
|
||||
$uuid = $this->access->getUserMapper()->getUUIDByDN($dn);
|
||||
if (!$uuid) {
|
||||
$this->access->connection->writeToCache($cacheKey, false);
|
||||
return false;
|
||||
}
|
||||
$newDn = $this->access->getUserDnByUuid($uuid);
|
||||
//check if renamed user is still valid by reapplying the ldap filter
|
||||
if ($newDn === $dn || !is_array($this->access->readAttribute($newDn, '', $this->access->connection->ldapUserFilter))) {
|
||||
$this->access->connection->writeToCache($cacheKey, false);
|
||||
return false;
|
||||
}
|
||||
$this->access->getUserMapper()->setDNbyUUID($newDn, $uuid);
|
||||
$this->access->connection->writeToCache($cacheKey, true);
|
||||
return true;
|
||||
} catch (ServerNotAvailableException $e) {
|
||||
throw $e;
|
||||
} catch (\Exception $e) {
|
||||
$this->access->connection->writeToCache($cacheKey, false);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -342,6 +334,7 @@ class User_LDAP extends BackendUtility implements \OCP\IUserBackend, \OCP\UserIn
|
||||
$user->unmark();
|
||||
}
|
||||
|
||||
$this->access->connection->writeToCache($cacheKey, true);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -364,15 +357,10 @@ class User_LDAP extends BackendUtility implements \OCP\IUserBackend, \OCP\UserIn
|
||||
$this->access->connection->ldapHost, ILogger::DEBUG);
|
||||
$this->access->connection->writeToCache('userExists'.$uid, false);
|
||||
return false;
|
||||
} else if($user instanceof OfflineUser) {
|
||||
//express check for users marked as deleted. Returning true is
|
||||
//necessary for cleanup
|
||||
return true;
|
||||
}
|
||||
|
||||
$result = $this->userExistsOnLDAP($user);
|
||||
$this->access->connection->writeToCache('userExists'.$uid, $result);
|
||||
return $result;
|
||||
$this->access->connection->writeToCache('userExists'.$uid, true);
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -430,21 +418,13 @@ class User_LDAP extends BackendUtility implements \OCP\IUserBackend, \OCP\UserIn
|
||||
|
||||
// early return path if it is a deleted user
|
||||
$user = $this->access->userManager->get($uid);
|
||||
if($user instanceof OfflineUser) {
|
||||
if($this->currentUserInDeletionProcess !== null
|
||||
&& $this->currentUserInDeletionProcess === $user->getOCName()
|
||||
) {
|
||||
return $user->getHomePath();
|
||||
} else {
|
||||
throw new NoUserException($uid . ' is not a valid user anymore');
|
||||
}
|
||||
} else if ($user === null) {
|
||||
if($user instanceof User || $user instanceof OfflineUser) {
|
||||
$path = $user->getHomePath() ?: false;
|
||||
} else {
|
||||
throw new NoUserException($uid . ' is not a valid user anymore');
|
||||
}
|
||||
|
||||
$path = $user->getHomePath();
|
||||
$this->access->cacheUserHome($uid, $path);
|
||||
|
||||
return $path;
|
||||
}
|
||||
|
||||
|
||||
@@ -37,7 +37,8 @@ use OCP\IUserSession;
|
||||
use OCP\Notification\IManager as INotificationManager;
|
||||
|
||||
class User_Proxy extends Proxy implements \OCP\IUserBackend, \OCP\UserInterface, IUserLDAP {
|
||||
private $backends = array();
|
||||
private $backends = [];
|
||||
/** @var User_LDAP */
|
||||
private $refBackend = null;
|
||||
|
||||
/**
|
||||
@@ -49,9 +50,14 @@ class User_Proxy extends Proxy implements \OCP\IUserBackend, \OCP\UserInterface,
|
||||
* @param INotificationManager $notificationManager
|
||||
* @param IUserSession $userSession
|
||||
*/
|
||||
public function __construct(array $serverConfigPrefixes, ILDAPWrapper $ldap, IConfig $ocConfig,
|
||||
INotificationManager $notificationManager, IUserSession $userSession,
|
||||
UserPluginManager $userPluginManager) {
|
||||
public function __construct(
|
||||
array $serverConfigPrefixes,
|
||||
ILDAPWrapper $ldap,
|
||||
IConfig $ocConfig,
|
||||
INotificationManager $notificationManager,
|
||||
IUserSession $userSession,
|
||||
UserPluginManager $userPluginManager
|
||||
) {
|
||||
parent::__construct($ldap);
|
||||
foreach($serverConfigPrefixes as $configPrefix) {
|
||||
$this->backends[$configPrefix] =
|
||||
@@ -105,13 +111,13 @@ class User_Proxy extends Proxy implements \OCP\IUserBackend, \OCP\UserInterface,
|
||||
&& method_exists($this->getAccess($prefix), $method)) {
|
||||
$instance = $this->getAccess($prefix);
|
||||
}
|
||||
$result = call_user_func_array(array($instance, $method), $parameters);
|
||||
$result = call_user_func_array([$instance, $method], $parameters);
|
||||
if($result === $passOnWhen) {
|
||||
//not found here, reset cache to null if user vanished
|
||||
//because sometimes methods return false with a reason
|
||||
$userExists = call_user_func_array(
|
||||
array($this->backends[$prefix], 'userExists'),
|
||||
array($uid)
|
||||
[$this->backends[$prefix], 'userExistsOnLDAP'],
|
||||
[$uid]
|
||||
);
|
||||
if(!$userExists) {
|
||||
$this->writeToCache($cacheKey, null);
|
||||
@@ -170,7 +176,22 @@ class User_Proxy extends Proxy implements \OCP\IUserBackend, \OCP\UserInterface,
|
||||
* @return boolean
|
||||
*/
|
||||
public function userExists($uid) {
|
||||
return $this->handleRequest($uid, 'userExists', array($uid));
|
||||
$existsOnLDAP = false;
|
||||
$existsLocally = $this->handleRequest($uid, 'userExists', array($uid));
|
||||
if($existsLocally) {
|
||||
$existsOnLDAP = $this->userExistsOnLDAP($uid);
|
||||
}
|
||||
if($existsLocally && !$existsOnLDAP) {
|
||||
try {
|
||||
$user = $this->getLDAPAccess($uid)->userManager->get($uid);
|
||||
if($user instanceof User) {
|
||||
$user->markUser();
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
// ignore
|
||||
}
|
||||
}
|
||||
return $existsLocally;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1054,7 +1054,7 @@ class Group_LDAPTest extends TestCase {
|
||||
$ldap = new GroupLDAP($access, $pluginManager);
|
||||
$resultingMembers = $this->invokePrivate($ldap, '_groupMembers', [$groupDN]);
|
||||
|
||||
$this->assertEquals($expectedMembers, $resultingMembers, '', 0.0, 10, true);
|
||||
$this->assertEqualsCanonicalizing($expectedMembers, $resultingMembers);
|
||||
}
|
||||
|
||||
public function displayNameProvider() {
|
||||
|
||||
@@ -314,22 +314,12 @@ class User_LDAPTest extends TestCase {
|
||||
$offlineUser->expects($this->once())
|
||||
->method('getHomePath')
|
||||
->willReturn($home);
|
||||
$offlineUser->expects($this->once())
|
||||
->method('getOCName')
|
||||
->willReturn($uid);
|
||||
$this->userManager->expects($this->atLeastOnce())
|
||||
->method('get')
|
||||
->willReturn($offlineUser);
|
||||
|
||||
$backend = new UserLDAP($this->access, $this->config, $this->notificationManager, $this->session, $this->pluginManager);
|
||||
|
||||
/** @var IUser|\PHPUnit_Framework_MockObject_MockObject $user */
|
||||
$user = $this->createMock(IUser::class);
|
||||
$user->expects($this->once())
|
||||
->method('getUID')
|
||||
->willReturn($uid);
|
||||
|
||||
$backend->preDeleteUser($user);
|
||||
$result = $backend->deleteUser($uid);
|
||||
$this->assertTrue($result);
|
||||
/** @noinspection PhpUnhandledExceptionInspection */
|
||||
@@ -509,18 +499,7 @@ class User_LDAPTest extends TestCase {
|
||||
$this->prepareMockForUserExists();
|
||||
|
||||
$user = $this->createMock(User::class);
|
||||
$user->expects($this->any())
|
||||
->method('getDN')
|
||||
->willReturn('dnOfRoland,dc=test');
|
||||
|
||||
$this->access->expects($this->any())
|
||||
->method('readAttribute')
|
||||
->will($this->returnCallback(function($dn) {
|
||||
if($dn === 'dnOfRoland,dc=test') {
|
||||
return array();
|
||||
}
|
||||
return false;
|
||||
}));
|
||||
$this->userManager->expects($this->atLeastOnce())
|
||||
->method('get')
|
||||
->willReturn($user);
|
||||
@@ -544,32 +523,18 @@ class User_LDAPTest extends TestCase {
|
||||
->with('dnOfFormerUser,dc=test')
|
||||
->willReturn('45673458748');
|
||||
|
||||
$this->access->expects($this->any())
|
||||
->method('readAttribute')
|
||||
->will($this->returnCallback(function($dn) {
|
||||
if($dn === 'dnOfRoland,dc=test') {
|
||||
return array();
|
||||
}
|
||||
return false;
|
||||
}));
|
||||
$this->access->expects($this->any())
|
||||
->method('getUserMapper')
|
||||
->willReturn($mapper);
|
||||
$this->access->expects($this->once())
|
||||
->method('getUserDnByUuid')
|
||||
->willThrowException(new \Exception());
|
||||
|
||||
$user = $this->createMock(User::class);
|
||||
$user->expects($this->any())
|
||||
->method('getDN')
|
||||
->willReturn('dnOfFormerUser,dc=test');
|
||||
|
||||
$this->userManager->expects($this->atLeastOnce())
|
||||
->method('get')
|
||||
->willReturn($user);
|
||||
|
||||
//test for deleted user
|
||||
$this->assertFalse($backend->userExists('formerUser'));
|
||||
//test for deleted user – always returns true as long as we have the user in DB
|
||||
$this->assertTrue($backend->userExists('formerUser'));
|
||||
}
|
||||
|
||||
public function testUserExistsForNeverExisting() {
|
||||
@@ -621,64 +586,6 @@ class User_LDAPTest extends TestCase {
|
||||
$this->assertTrue($result);
|
||||
}
|
||||
|
||||
public function testUserExistsPublicAPIForDeleted() {
|
||||
$backend = new UserLDAP($this->access, $this->config, $this->notificationManager, $this->session, $this->pluginManager);
|
||||
$this->prepareMockForUserExists();
|
||||
\OC_User::useBackend($backend);
|
||||
|
||||
$mapper = $this->createMock(UserMapping::class);
|
||||
$mapper->expects($this->any())
|
||||
->method('getUUIDByDN')
|
||||
->with('dnOfFormerUser,dc=test')
|
||||
->willReturn('45673458748');
|
||||
|
||||
$this->access->expects($this->any())
|
||||
->method('readAttribute')
|
||||
->will($this->returnCallback(function($dn) {
|
||||
if($dn === 'dnOfRoland,dc=test') {
|
||||
return array();
|
||||
}
|
||||
return false;
|
||||
}));
|
||||
$this->access->expects($this->any())
|
||||
->method('getUserMapper')
|
||||
->willReturn($mapper);
|
||||
$this->access->expects($this->once())
|
||||
->method('getUserDnByUuid')
|
||||
->willThrowException(new \Exception());
|
||||
|
||||
$user = $this->createMock(User::class);
|
||||
$user->expects($this->any())
|
||||
->method('getDN')
|
||||
->willReturn('dnOfFormerUser,dc=test');
|
||||
|
||||
$this->userManager->expects($this->atLeastOnce())
|
||||
->method('get')
|
||||
->willReturn($user);
|
||||
|
||||
//test for deleted user
|
||||
$this->assertFalse(\OC::$server->getUserManager()->userExists('formerUser'));
|
||||
}
|
||||
|
||||
public function testUserExistsPublicAPIForNeverExisting() {
|
||||
$backend = new UserLDAP($this->access, $this->config, $this->notificationManager, $this->session, $this->pluginManager);
|
||||
$this->prepareMockForUserExists();
|
||||
\OC_User::useBackend($backend);
|
||||
|
||||
$this->access->expects($this->any())
|
||||
->method('readAttribute')
|
||||
->will($this->returnCallback(function($dn) {
|
||||
if($dn === 'dnOfRoland,dc=test') {
|
||||
return array();
|
||||
}
|
||||
return false;
|
||||
}));
|
||||
|
||||
//test for never-existing user
|
||||
$result = \OC::$server->getUserManager()->userExists('mallory');
|
||||
$this->assertFalse($result);
|
||||
}
|
||||
|
||||
public function testDeleteUserExisting() {
|
||||
$backend = new UserLDAP($this->access, $this->config, $this->notificationManager, $this->session, $this->pluginManager);
|
||||
|
||||
@@ -787,7 +694,7 @@ class User_LDAPTest extends TestCase {
|
||||
$this->assertEquals($dataDir.'/susannah/', $result);
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function testGetHomeNoPath() {
|
||||
$this->expectException(\Exception::class);
|
||||
|
||||
@@ -836,10 +743,7 @@ class User_LDAPTest extends TestCase {
|
||||
$this->assertFalse($result);
|
||||
}
|
||||
|
||||
|
||||
public function testGetHomeDeletedUser() {
|
||||
$this->expectException(\OC\User\NoUserException::class);
|
||||
|
||||
$uid = 'newyorker';
|
||||
|
||||
$backend = new UserLDAP($this->access, $this->config, $this->notificationManager, $this->session, $this->pluginManager);
|
||||
@@ -869,14 +773,16 @@ class User_LDAPTest extends TestCase {
|
||||
->will($this->returnValue(true));
|
||||
|
||||
$offlineUser = $this->createMock(OfflineUser::class);
|
||||
$offlineUser->expects($this->never())
|
||||
->method('getHomePath');
|
||||
$offlineUser->expects($this->atLeastOnce())
|
||||
->method('getHomePath')
|
||||
->willReturn('');
|
||||
|
||||
$this->userManager->expects($this->atLeastOnce())
|
||||
->method('get')
|
||||
->willReturn($offlineUser);
|
||||
|
||||
$backend->getHome($uid);
|
||||
$result = $backend->getHome($uid);
|
||||
$this->assertFalse($result);
|
||||
}
|
||||
|
||||
public function testGetHomeWithPlugin() {
|
||||
@@ -1112,7 +1018,7 @@ class User_LDAPTest extends TestCase {
|
||||
->willReturn(42);
|
||||
|
||||
$this->assertEquals($this->backend->countUsers(),42);
|
||||
}
|
||||
}
|
||||
|
||||
public function testLoginName2UserNameSuccess() {
|
||||
$loginName = 'Alice';
|
||||
@@ -1280,7 +1186,7 @@ class User_LDAPTest extends TestCase {
|
||||
}));
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function testSetPasswordInvalid() {
|
||||
$this->expectException(\OC\HintException::class);
|
||||
$this->expectExceptionMessage('Password fails quality checking policy');
|
||||
@@ -1294,7 +1200,7 @@ class User_LDAPTest extends TestCase {
|
||||
|
||||
$this->assertTrue(\OC_User::setPassword('roland', 'dt'));
|
||||
}
|
||||
|
||||
|
||||
public function testSetPasswordValid() {
|
||||
$this->prepareAccessForSetPassword($this->access);
|
||||
|
||||
@@ -1324,7 +1230,7 @@ class User_LDAPTest extends TestCase {
|
||||
$this->assertFalse(\OC_User::setPassword('roland', 'dt12234$'));
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function testSetPasswordWithInvalidUser() {
|
||||
$this->expectException(\Exception::class);
|
||||
$this->expectExceptionMessage('LDAP setPassword: Could not get user object for uid NotExistingUser. Maybe the LDAP entry has no set display name attribute?');
|
||||
@@ -1425,7 +1331,7 @@ class User_LDAPTest extends TestCase {
|
||||
$this->assertEquals($newDisplayName, $this->backend->setDisplayName('uid', $newDisplayName));
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function testSetDisplayNameErrorWithPlugin() {
|
||||
$this->expectException(\OC\HintException::class);
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -154,4 +154,8 @@ class FileMimeType extends AbstractStringCheck implements IFileCheck {
|
||||
public function supportedEntities(): array {
|
||||
return [ File::class ];
|
||||
}
|
||||
|
||||
public function isAvailableForScope(int $scope): bool {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -121,6 +121,7 @@ export default {
|
||||
this.deleteVisible = false
|
||||
},
|
||||
validate() {
|
||||
this.valid = true
|
||||
if (this.currentOption && this.currentOption.validate) {
|
||||
this.valid = !!this.currentOption.validate(this.check)
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
type="button"
|
||||
class="check--add"
|
||||
value="Add a new filter"
|
||||
@click="rule.checks.push({class: null, operator: null, value: null})">
|
||||
@click="rule.checks.push({class: null, operator: null, value: ''})">
|
||||
</p>
|
||||
</div>
|
||||
<div class="flow-icon icon-confirm" />
|
||||
|
||||
@@ -138,7 +138,7 @@ const store = new Vuex.Store({
|
||||
},
|
||||
getters: {
|
||||
getRules(state) {
|
||||
return state.rules.sort((rule1, rule2) => {
|
||||
return state.rules.filter((rule) => typeof state.operations[rule.class] !== 'undefined').sort((rule1, rule2) => {
|
||||
return rule1.id - rule2.id || rule2.class - rule1.class
|
||||
})
|
||||
},
|
||||
|
||||
@@ -343,26 +343,8 @@ Feature: sharing
|
||||
| permissions | 16 |
|
||||
And As an "user1"
|
||||
And accepting last share
|
||||
# And folder "first" of user "user0" is shared with user "user1"
|
||||
# And creating a share with
|
||||
# | path | /first/second |
|
||||
# | shareType | 0 |
|
||||
# | shareWith | user2 |
|
||||
# | permissions | 16 |
|
||||
And folder "first/second" of user "user0" is shared with user "user2"
|
||||
# And As an "user1"
|
||||
# And creating a share with
|
||||
# | path | /first/test1.txt |
|
||||
# | shareType | 0 |
|
||||
# | shareWith | user3 |
|
||||
# | permissions | 8 |
|
||||
And file "first/test1.txt" of user "user0" is shared with user "user3"
|
||||
# And As an "user2"
|
||||
# And creating a share with
|
||||
# | path | /second/test2.txt |
|
||||
# | shareType | 0 |
|
||||
# | shareWith | user3 |
|
||||
# | permissions | 8 |
|
||||
And file "first/second/test2.txt" of user "user0" is shared with user "user3"
|
||||
# get inherited shares from the owner PoV
|
||||
And As an "user0"
|
||||
@@ -372,14 +354,14 @@ Feature: sharing
|
||||
And User "user0" should not be included in the response
|
||||
And User "user1" should be included in the response
|
||||
And User "user2" should be included in the response
|
||||
And User "user3" should be included in the response
|
||||
And User "user3" should not be included in the response
|
||||
When sending "GET" to "/apps/files_sharing/api/v1/shares/inherited?path=first/test1.txt"
|
||||
Then the OCS status code should be "100"
|
||||
And the HTTP status code should be "200"
|
||||
And User "user0" should not be included in the response
|
||||
And User "user1" should be included in the response
|
||||
And User "user2" should not be included in the response
|
||||
And User "user3" should be included in the response
|
||||
And User "user3" should not be included in the response
|
||||
# get inherited shares from the a user with no shares rights
|
||||
And As an "user2"
|
||||
When sending "GET" to "/apps/files_sharing/api/v1/shares/inherited?path=first/test1.txt"
|
||||
@@ -393,13 +375,13 @@ Feature: sharing
|
||||
And User "user0" should not be included in the response
|
||||
And User "user1" should not be included in the response
|
||||
And User "user2" should be included in the response
|
||||
And User "user3" should be included in the response
|
||||
And User "user3" should not be included in the response
|
||||
When sending "GET" to "/apps/files_sharing/api/v1/shares/inherited?path=first/test1.txt"
|
||||
Then the OCS status code should be "100"
|
||||
And the HTTP status code should be "200"
|
||||
And User "user0" should not be included in the response
|
||||
And User "user1" should not be included in the response
|
||||
And User "user2" should not be included in the response
|
||||
And User "user3" should be included in the response
|
||||
And User "user3" should not be included in the response
|
||||
|
||||
# See sharing-v1-part2.feature
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user