summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorVincent Petry <pvince81@owncloud.com>2015-08-12 17:29:54 +0200
committerVincent Petry <pvince81@owncloud.com>2015-08-12 17:29:54 +0200
commit997577cf7a5edc076c4039a7fc7c1c08c050a996 (patch)
treee44a81eb2ea465a80956c97709748e596e1afd76 /apps
parentaac7c19ab7dd59772b3f6489013fe89540f7e5f2 (diff)
downloadnextcloud-server-997577cf7a5edc076c4039a7fc7c1c08c050a996.tar.gz
nextcloud-server-997577cf7a5edc076c4039a7fc7c1c08c050a996.zip
Introduce FileInfoModel
FileInfoModel is a backbone model that will make it possible to track changes and update views accordingly
Diffstat (limited to 'apps')
-rw-r--r--apps/files/index.php1
-rw-r--r--apps/files/js/fileinfomodel.js71
2 files changed, 72 insertions, 0 deletions
diff --git a/apps/files/index.php b/apps/files/index.php
index a41ec059b55..beae585cea4 100644
--- a/apps/files/index.php
+++ b/apps/files/index.php
@@ -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');
diff --git a/apps/files/js/fileinfomodel.js b/apps/files/js/fileinfomodel.js
new file mode 100644
index 00000000000..05060854fba
--- /dev/null
+++ b/apps/files/js/fileinfomodel.js
@@ -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);
+