summaryrefslogtreecommitdiffstats
path: root/apps/files/js/mainfileinfodetailview.js
blob: 88463bda9e642c4f6d803cf4275bc764234a0d02 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
/*
 * Copyright (c) 2015
 *
 * This file is licensed under the Affero General Public License version 3
 * or later.
 *
 * See the COPYING-README file.
 *
 */

(function() {
	var TEMPLATE =
		'<div class="thumbnail"></div><div class="fileName">{{name}}</div>' +
		'<div>' +
		'    <a href="#" ' +
		'    alt="{{starAltText}}"' +
		'    class="action action-favorite {{#isFavorite}}permanent{{/isFavorite}}">' +
		'    <img class="svg" src="{{starIcon}}" />' +
		'    </a>' +
		'    <span title="{{altSize}}">{{size}}</span>, <span title="{{altDate}}">{{date}}</span>' +
		'</div>';

	/**
	 * @class OCA.Files.MainFileInfoDetailView
	 * @classdesc
	 *
	 * Displays main details about a file
	 *
	 */
	var MainFileInfoDetailView = function() {
		this.initialize();
	};
	/**
	 * @memberof OCA.Files
	 */
	MainFileInfoDetailView.prototype = _.extend({}, OCA.Files.DetailFileInfoView.prototype,
		/** @lends OCA.Files.MainFileInfoDetailView.prototype */ {
		_template: null,

		/**
		 * Initialize the details view
		 */
		initialize: function() {
			this.$el = $('<div class="mainFileInfoView"></div>');
		},

		/**
		 * Renders this details view
		 */
		render: function() {
			this.$el.empty();

			if (!this._template) {
				this._template = Handlebars.compile(TEMPLATE);
			}

			if (this._fileInfo) {
				var isFavorite = (this._fileInfo.tags || []).indexOf(OC.TAG_FAVORITE) >= 0
				this.$el.append(this._template({
					nameLabel: t('files', 'Name'),
					name: this._fileInfo.name,
					pathLabel: t('files', 'Path'),
					path: this._fileInfo.path,
					sizeLabel: t('files', 'Size'),
					// TODO: refactor and use size formatter
					size: OC.Util.humanFileSize(this._fileInfo.size, true),
					altSize: n('files', '%n byte', '%n bytes', this._fileInfo.size),
					dateLabel: t('files', 'Modified'),
					altDate: OC.Util.formatDate(this._fileInfo.mtime),
					date: OC.Util.relativeModifiedDate(this._fileInfo.mtime),
					isFavorite: isFavorite,
					starAltText: isFavorite ? t('files', 'Favorited') : t('files', 'Favorite'),
					starIcon: OC.imagePath('core', isFavorite ? 'actions/starred' : 'actions/star')
				}));

				var $iconDiv = this.$el.find('.thumbnail');
				// TODO: we really need OC.Previews
				if (this._fileInfo.mimetype !== 'httpd/unix-directory') {
					// FIXME: use proper way, this is only for demo purposes
					var previewUrl = FileList.generatePreviewUrl({
						file: this._fileInfo.path + '/' + this._fileInfo.name,
						c: this._fileInfo.etag,
						x: 50,
						y: 50
					});
					previewUrl = previewUrl.replace('(', '%28').replace(')', '%29');
					$iconDiv.css('background-image', 'url("' + previewUrl + '")');
				} else {
					// TODO: special icons / shared / external
					$iconDiv.css('background-image', 'url("' + OC.MimeType.getIconUrl('dir') + '")');
				}
				this.$el.find('[title]').tipsy();
			}
		}
	});

	OCA.Files.MainFileInfoDetailView = MainFileInfoDetailView;
})();