Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>tags/v11.0RC2
@@ -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); |
@@ -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); | |||
} | |||
} | |||
}; | |||
@@ -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'); | |||
} | |||
); |
@@ -185,6 +185,9 @@ | |||
} | |||
}); | |||
fileList.registerTabView(shareTab); | |||
var breadCrumbSharingDetailView = new OCA.Sharing.ShareBreadCrumbView(); | |||
fileList.registerBreadCrumbDetailView(breadCrumbSharingDetailView); | |||
}, | |||
/** |
@@ -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; | |||
})(); | |||