Introduce FileInfoModel

FileInfoModel is a backbone model that will make it possible to track
changes and update views accordingly
This commit is contained in:
Vincent Petry 2015-08-12 17:29:54 +02:00
parent aac7c19ab7
commit 997577cf7a
2 changed files with 72 additions and 0 deletions

View file

@ -41,6 +41,7 @@ OCP\Util::addscript('files', 'file-upload');
OCP\Util::addscript('files', 'jquery.iframe-transport');
OCP\Util::addscript('files', 'jquery.fileupload');
OCP\Util::addscript('files', 'jquery-visibility');
OCP\Util::addscript('files', 'fileinfomodel');
OCP\Util::addscript('files', 'filesummary');
OCP\Util::addscript('files', 'breadcrumb');
OCP\Util::addscript('files', 'filelist');

View file

@ -0,0 +1,71 @@
/*
* Copyright (c) 2015
*
* This file is licensed under the Affero General Public License version 3
* or later.
*
* See the COPYING-README file.
*
*/
(function(OC, OCA) {
/**
* @class OC.Files.FileInfo
* @classdesc File information
*
* @param {Object} attributes file data
* @param {int} attributes.id file id
* @param {string} attributes.name file name
* @param {string} attributes.path path leading to the file,
* without the file name and with a leading slash
* @param {int} attributes.size size
* @param {string} attributes.mimetype mime type
* @param {string} attributes.icon icon URL
* @param {int} attributes.permissions permissions
* @param {Date} attributes.mtime modification time
* @param {string} attributes.etag etag
* @param {string} mountType mount type
*
* @since 8.2
*/
var FileInfoModel = OC.Backbone.Model.extend({
initialize: function(data) {
if (!_.isUndefined(data.id)) {
data.id = parseInt(data.id, 10);
}
// TODO: normalize path
data.path = data.path || '';
data.name = data.name;
data.mimetype = data.mimetype || 'application/octet-stream';
},
/**
* Returns whether this file is a directory
*
* @return {boolean} true if this is a directory, false otherwise
*/
isDirectory: function() {
return this.get('mimetype') === 'httpd/unix-directory';
},
/**
* Returns the full path to this file
*
* @return {string} full path
*/
getFullPath: function() {
return OC.joinPaths(this.get('path'), this.get('name'));
}
});
if (!OCA.Files) {
OCA.Files = {};
}
OCA.Files.FileInfoModel = FileInfoModel;
})(OC, OCA);