%PDF- %PDF-
| Direktori : /home/lightco1/www/lightingrepublic.com.au/media/com_files/js/ |
| Current File : /home/lightco1/www/lightingrepublic.com.au/media/com_files/js/files.row.js |
/**
* @version $Id$
* @package Nooku_Components
* @subpackage Files
* @copyright Copyright (C) 2011 - 2012 Timble CVBA and Contributors. (http://www.timble.net).
* @license GNU GPLv3 <http://www.gnu.org/licenses/gpl.html>
* @link http://www.nooku.org
*/
if(!Files) var Files = {};
Files.Row = new Class({
Implements: [Options, Events, Files.Template],
initialize: function(object, options) {
this.setOptions(options);
Files.utils.each(object, function(value, key) {
this[key] = value;
}.bind(this));
if (!this.path) {
this.path = (object.folder ? object.folder+'/' : '') + object.name;
}
this.identifier = this.path;
this.filepath = (object.folder ? this.encodePath(object.folder)+'/' : '') + this.encode(object.name);
},
encodePath: function(path, encoder) {
var parts = path.split('/');
if (!encoder) {
encoder = this.encode;
}
parts = parts.map(function(part) {
return encoder(part);
});
return parts.join('/');
},
encode: function(string) {
return string;
},
realpath: function(string) {
return string;
}
});
Files.File = new Class({
Extends: Files.Row,
type: 'file',
template: 'file',
initialize: function(object, options) {
this.parent(object, options);
if (Files.app) {
this.baseurl = Files.app.baseurl;
}
this.size = new Files.Filesize(this.metadata.size);
this.filetype = Files.getFileType(this.metadata.extension);
},
getModifiedDate: function(formatted) {
var date = new Date();
date.setTime(this.metadata.modified_date*1000);
if (formatted) {
return date.toLocaleString();
} else {
return date;
}
},
'delete': function(success, failure) {
this.fireEvent('beforeDeleteRow');
var that = this,
request = new Request.JSON({
url: Files.app.createRoute({view: 'file', folder: that.folder, name: that.name}),
method: 'post',
data: {
'action': 'delete',
'_token': Files.token
},
onSuccess: function(response, responseText) {
if (typeof success == 'function') {
success(response);
}
that.fireEvent('afterDeleteRow', {status: true, response: response, request: this});
},
onFailure: function(xhr) {
if (xhr.status == 204 || xhr.status == 1223) {
// Mootools thinks it failed, weird
return this.onSuccess();
}
response = xhr.responseText;
if (typeof failure == 'function') {
failure(xhr);
}
else {
response = JSON.decode(xhr.responseText, true);
error = response && response.error ? response.error : Files._('An error occurred during request');
alert(error);
}
that.fireEvent('afterDeleteRow', {status: false, response: response, request: this, xhr: xhr});
}
});
request.send();
}
});
Files.Image = new Class({
Extends: Files.File,
type: 'image',
template: 'image',
initialize: function(object, options) {
this.parent(object, options);
this.image = this.baseurl+'/'+this.encodePath(this.filepath, this.realpath);
this.client_cache = false;
if(window.sessionStorage) {
if(sessionStorage[this.image.toString()]) {
this.client_cache = sessionStorage[this.image.toString()];
}
}
},
getThumbnail: function(success, failure) {
var that = this,
request = new Request.JSON({
url: Files.app.createRoute({view: 'thumbnail', filename: that.name, folder: that.folder}),
method: 'get',
onSuccess: function(response, responseText) {
if (typeof success == 'function') {
success(response);
}
},
onFailure: function(xhr) {
response = xhr.responseText;
if (typeof failure == 'function') {
failure(xhr);
}
else {
response = JSON.decode(xhr.responseText, true);
error = response && response.error ? response.error : Files._('An error occurred during request');
alert(error);
}
}
});
request.send();
}
});
Files.Folder = new Class({
Extends: Files.Row,
type: 'folder',
template: 'folder',
getChildren: function(success, failure, extra_vars, url_builder) {
var path = this.path,
url = {
view: 'nodes',
folder: path
};
if (extra_vars) {
url = Files.utils.append(url, extra_vars);
}
var url = url_builder ? url_builder(url) : Files.app.createRoute(url);
Files.Folder.Request._onSuccess = success;
Files.Folder.Request._onFailure = failure;
Files.Folder.Request.options.url = url;
Files.Folder.Request.get();
},
'add': function(success, failure) {
this.fireEvent('beforeAddRow');
var that = this;
request = new Request.JSON({
url: Files.app.createRoute({view: 'folder', name: that.name, folder: Files.app.getPath()}),
method: 'post',
data: {
'action': 'add',
'_token': Files.token
},
onSuccess: function(response, responseText) {
if (typeof success == 'function') {
success(response);
}
that.fireEvent('afterAddRow', {status: true, response: response, request: this});
},
onFailure: function(xhr) {
response = xhr.responseText;
if (typeof failure == 'function') {
failure(xhr);
}
else {
response = JSON.decode(xhr.responseText, true);
error = response && response.error ? response.error : Files._('An error occurred during request');
alert(error);
}
that.fireEvent('afterAddRow', {status: false, response: response, request: this, xhr: xhr});
}
});
request.send();
},
'delete': function(success, failure) {
var that = this,
request = new Request.JSON({
url: Files.app.createRoute({view: 'folder', folder: Files.app.getPath(), name: that.name}),
method: 'post',
data: {
'action': 'delete',
'_token': Files.token
},
onSuccess: function(response, responseText) {
if (typeof success == 'function') {
success(response);
}
that.fireEvent('afterDeleteRow', {status: true, response: response, request: this});
},
onFailure: function(xhr) {
if (xhr.status == 204 || xhr.status == 1223) {
// Mootools thinks it failed, weird
return this.onSuccess();
}
response = xhr.responseText;
if (typeof failure == 'function') {
failure(xhr);
}
else {
response = JSON.decode(xhr.responseText, true);
error = response && response.error ? response.error : Files._('An error occurred during request');
alert(error);
}
that.fireEvent('afterDeleteRow', {status: false, response: response, request: this, xhr: xhr});
}
});
request.send();
}
});
Files.Folder.Request = new Request.JSON({
method: 'get',
onSuccess: function(response, responseText) {
if (typeof this._onSuccess == 'function') {
this._onSuccess(response);
}
},
onFailure: function(xhr) {
if (typeof this._onFailure == 'function') {
this._onFailure(xhr);
}
else {
resp = JSON.decode(xhr.responseText, true);
error = resp && resp.error ? resp.error : Files._('An error occurred during request');
alert(error);
}
}
});