show whether the current folder was shared or not

Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
This commit is contained in:
Christoph Wurst 2016-10-04 12:56:04 +02:00 committed by Roeland Jago Douma
parent 1857e50259
commit c5597baf88
No known key found for this signature in database
GPG key ID: 1E152838F164D13B
5 changed files with 93 additions and 0 deletions

View file

@ -45,6 +45,7 @@
if (options.getCrumbUrl) { if (options.getCrumbUrl) {
this.getCrumbUrl = options.getCrumbUrl; this.getCrumbUrl = options.getCrumbUrl;
} }
this._detailViews = [];
}; };
/** /**
* @memberof OCA.Files * @memberof OCA.Files
@ -52,6 +53,7 @@
BreadCrumb.prototype = { BreadCrumb.prototype = {
$el: null, $el: null,
dir: null, dir: null,
dirInfo: null,
/** /**
* Total width of all breadcrumbs * Total width of all breadcrumbs
@ -79,6 +81,20 @@
} }
}, },
setDirectoryInfo: function(dirInfo) {
if (dirInfo !== this.dirInfo) {
this.dirInfo = dirInfo;
this.render();
}
},
/**
* @param {Backbone.View} detailView
*/
addDetailView: function(detailView) {
this._detailViews.push(detailView);
},
/** /**
* Returns the full URL to the given directory * Returns the full URL to the given directory
* *
@ -122,6 +138,13 @@
} }
$crumb.addClass('last'); $crumb.addClass('last');
_.each(this._detailViews, function(view) {
view.render({
dirInfo: this.dirInfo
});
$crumb.append(view.$el);
}, this);
// in case svg is not supported by the browser we need to execute the fallback mechanism // in case svg is not supported by the browser we need to execute the fallback mechanism
if (!OC.Util.hasSVGSupport()) { if (!OC.Util.hasSVGSupport()) {
OC.Util.replaceSVG(this.$el); OC.Util.replaceSVG(this.$el);

View file

@ -1646,6 +1646,7 @@
// first entry is the root // first entry is the root
this.dirInfo = result.shift(); this.dirInfo = result.shift();
this.breadcrumb.setDirectoryInfo(this.dirInfo);
if (this.dirInfo.permissions) { if (this.dirInfo.permissions) {
this.setDirectoryPermissions(this.dirInfo.permissions); this.setDirectoryPermissions(this.dirInfo.permissions);
@ -2954,6 +2955,15 @@
if (this._detailsView) { if (this._detailsView) {
this._detailsView.addDetailView(detailView); this._detailsView.addDetailView(detailView);
} }
},
/**
* Register a view to be added to the breadcrumb view
*/
registerBreadCrumbDetailView: function(detailView) {
if (this.breadcrumb) {
this.breadcrumb.addDetailView(detailView);
}
} }
}; };

View file

@ -42,6 +42,7 @@ $eventDispatcher->addListener(
function() { function() {
\OCP\Util::addScript('files_sharing', 'share'); \OCP\Util::addScript('files_sharing', 'share');
\OCP\Util::addScript('files_sharing', 'sharetabview'); \OCP\Util::addScript('files_sharing', 'sharetabview');
\OCP\Util::addScript('files_sharing', 'sharebreadcrumbview');
\OCP\Util::addStyle('files_sharing', 'sharetabview'); \OCP\Util::addStyle('files_sharing', 'sharetabview');
} }
); );

View file

@ -185,6 +185,9 @@
} }
}); });
fileList.registerTabView(shareTab); fileList.registerTabView(shareTab);
var breadCrumbSharingDetailView = new OCA.Sharing.ShareBreadCrumbView();
fileList.registerBreadCrumbDetailView(breadCrumbSharingDetailView);
}, },
/** /**

View file

@ -0,0 +1,56 @@
/* global Handlebars, OC */
/**
* @copyright 2016 Christoph Wurst <christoph@winzerhof-wurst.at>
*
* @author 2016 Christoph Wurst <christoph@winzerhof-wurst.at>
*
* @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() {
'use strict';
var TEMPLATE = '{{#if isShared}}'
+ 'Shared!'
+ '{{else}}'
+ 'Not shared!'
+ '{{/if}}';
var BreadCrumbView = OC.Backbone.View.extend({
tagName: 'span',
_template: undefined,
template: function(data) {
if (!this._template) {
this._template = Handlebars.compile(TEMPLATE);
}
return this._template(data);
},
render: function(data) {
var isShared = data.dirInfo && data.dirInfo.shareTypes && data.dirInfo.shareTypes.length > 0;
this.$el.html(this.template({
isShared: isShared
}));
return this;
}
});
OCA.Sharing.ShareBreadCrumbView = BreadCrumbView;
})();