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) {
this.getCrumbUrl = options.getCrumbUrl;
}
this._detailViews = [];
};
/**
* @memberof OCA.Files
@ -52,6 +53,7 @@
BreadCrumb.prototype = {
$el: null,
dir: null,
dirInfo: null,
/**
* 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
*
@ -122,6 +138,13 @@
}
$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
if (!OC.Util.hasSVGSupport()) {
OC.Util.replaceSVG(this.$el);

View File

@ -1646,6 +1646,7 @@
// first entry is the root
this.dirInfo = result.shift();
this.breadcrumb.setDirectoryInfo(this.dirInfo);
if (this.dirInfo.permissions) {
this.setDirectoryPermissions(this.dirInfo.permissions);
@ -2954,6 +2955,15 @@
if (this._detailsView) {
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() {
\OCP\Util::addScript('files_sharing', 'share');
\OCP\Util::addScript('files_sharing', 'sharetabview');
\OCP\Util::addScript('files_sharing', 'sharebreadcrumbview');
\OCP\Util::addStyle('files_sharing', 'sharetabview');
}
);

View File

@ -185,6 +185,9 @@
}
});
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;
})();