mirror of
https://github.com/alchemy-fr/Phraseanet.git
synced 2025-10-15 22:13:13 +00:00
105 lines
3.3 KiB
JavaScript
105 lines
3.3 KiB
JavaScript
/*
|
||
* This file is part of Phraseanet
|
||
*
|
||
* (c) 2005-2014 Alchemy
|
||
*
|
||
* For the full copyright and license information, please view the LICENSE
|
||
* file that was distributed with this source code.
|
||
*/
|
||
|
||
define([
|
||
"jquery",
|
||
"underscore",
|
||
"backbone",
|
||
"jquery.tooltip",
|
||
"blueimp.loadimage",
|
||
"jfu.iframe-transport",
|
||
"jfu.fileupload",
|
||
"jquery.ui"
|
||
], function ($, _, Backbone) {
|
||
var RightPanelView = Backbone.View.extend({
|
||
initialize: function (options) {
|
||
if (false === "eventManager" in options) {
|
||
throw "You must set en event manager";
|
||
}
|
||
this.delegateEvents(this.events);
|
||
this.eventManager = options.eventManager;
|
||
|
||
var $this = this;
|
||
this.eventManager.on("panel:right:beforeSend", function() {
|
||
$this.$el.empty();
|
||
$this.loadingState(true);
|
||
});
|
||
this.eventManager.on("panel:right:complete", function() {
|
||
$this.loadingState(false);
|
||
});
|
||
this.eventManager.on("panel:right:success", function(data) {
|
||
$this.render(data);
|
||
})
|
||
},
|
||
events: {
|
||
"submit form:not(.no-ajax)": "submitAction",
|
||
"click a:not(.no-ajax)": "clickAction"
|
||
},
|
||
render: function (data) {
|
||
this.$el.html(data);
|
||
|
||
return this;
|
||
},
|
||
clickAction: function(event) {
|
||
event.preventDefault();
|
||
var $this = this;
|
||
var link = $(event.currentTarget);
|
||
var url = link.attr('href');
|
||
|
||
if(url && url.indexOf('#') !== 0) {
|
||
$.ajax({
|
||
type: link.attr("method") || "GET",
|
||
url: url,
|
||
success: function(data) {
|
||
$this.eventManager.trigger('panel:right:success', data);
|
||
},
|
||
beforeSend: function(){
|
||
$this.eventManager.trigger('panel:right:beforeSend');
|
||
},
|
||
complete: function(){
|
||
$this.eventManager.trigger('panel:right:complete');
|
||
}
|
||
});
|
||
}
|
||
},
|
||
submitAction: function(event) {
|
||
event.preventDefault();
|
||
var $this = this;
|
||
var link = $(event.currentTarget);
|
||
var url = link.attr('action') || 'GET';
|
||
|
||
if(url) {
|
||
$.ajax({
|
||
type: link.attr('method'),
|
||
url: url,
|
||
data: link.serializeArray(),
|
||
success: function (data) {
|
||
$this.eventManager.trigger("panel:right:success", data);
|
||
},
|
||
beforeSend: function(){
|
||
$this.eventManager.trigger('panel:right:beforeSend');
|
||
},
|
||
complete: function(){
|
||
$this.eventManager.trigger('panel:right:complete');
|
||
}
|
||
});
|
||
}
|
||
},
|
||
loadingState: function(state) {
|
||
if (state) {
|
||
this.$el.addClass("loading");
|
||
} else {
|
||
this.$el.removeClass("loading");
|
||
}
|
||
}
|
||
});
|
||
|
||
return RightPanelView;
|
||
});
|