mirror of
https://github.com/alchemy-fr/Phraseanet.git
synced 2025-10-17 23:13:15 +00:00
Refactor admin javascript to backbone application
This commit is contained in:
104
www/scripts/apps/admin/main/views/rightPanel.js
Normal file
104
www/scripts/apps/admin/main/views/rightPanel.js
Normal file
@@ -0,0 +1,104 @@
|
||||
/*
|
||||
* 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;
|
||||
});
|
Reference in New Issue
Block a user