diff options
Diffstat (limited to 'apps/files_versions/src/versioncollection.js')
-rw-r--r-- | apps/files_versions/src/versioncollection.js | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/apps/files_versions/src/versioncollection.js b/apps/files_versions/src/versioncollection.js new file mode 100644 index 00000000000..e48368adfa2 --- /dev/null +++ b/apps/files_versions/src/versioncollection.js @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2015 + * + * This file is licensed under the Affero General Public License version 3 + * or later. + * + * See the COPYING-README file. + * + */ + +(function () { + /** + * @memberof OCA.Versions + */ + var VersionCollection = OC.Backbone.Collection.extend({ + model: OCA.Versions.VersionModel, + sync: OC.Backbone.davSync, + + /** + * @var OCA.Files.FileInfoModel + */ + _fileInfo: null, + + _currentUser: null, + + _client: null, + + setFileInfo: function (fileInfo) { + this._fileInfo = fileInfo; + }, + + getFileInfo: function () { + return this._fileInfo; + }, + + setCurrentUser: function(user) { + this._currentUser = user; + }, + + getCurrentUser: function() { + return this._currentUser || OC.getCurrentUser().uid; + }, + + setClient: function(client) { + this._client = client; + }, + + getClient: function() { + return this._client || new OC.Files.Client({ + host: OC.getHost(), + root: OC.linkToRemoteBase('dav') + '/versions/' + this.getCurrentUser(), + useHTTPS: OC.getProtocol() === 'https' + }); + }, + + url: function () { + return OC.linkToRemoteBase('dav') + '/versions/' + this.getCurrentUser() + '/versions/' + this._fileInfo.get('id'); + }, + + parse: function(result) { + var fullPath = this._fileInfo.getFullPath(); + var fileId = this._fileInfo.get('id'); + var name = this._fileInfo.get('name'); + var user = this.getCurrentUser(); + var client = this.getClient(); + return _.map(result, function(version) { + version.fullPath = fullPath; + version.fileId = fileId; + version.name = name; + version.timestamp = parseInt(moment(new Date(version.timestamp)).format('X'), 10); + version.id = parseInt(OC.basename(version.href), 10); + version.size = parseInt(version.size, 10); + version.user = user; + version.client = client; + return version; + }); + } + }); + + OCA.Versions = OCA.Versions || {}; + + OCA.Versions.VersionCollection = VersionCollection; +})(); + |