Browse Source

Show mimeicon when versions don't have a preview

Fixes #2413

Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
tags/v11.0RC2
Roeland Jago Douma 7 years ago
parent
commit
4dcd0474d5
No account linked to committer's email address

+ 2
- 1
apps/files_versions/js/versioncollection.js View File

@@ -81,7 +81,8 @@
name: version.name,
fullPath: fullPath,
timestamp: revision,
size: version.size
size: version.size,
mimetype: version.mimetype
};
});
this._endReached = result.data.endReached;

+ 45
- 2
apps/files_versions/js/versionstabview.js View File

@@ -15,7 +15,7 @@
'<li data-revision="{{timestamp}}">' +
'<div>' +
'<div class="preview-container">' +
'<img class="preview" src="{{previewUrl}}"/>' +
'<img class="preview" src="{{previewUrl}}" width="44" height="44"/>' +
'</div>' +
'<div class="version-container">' +
'<div>' +
@@ -162,6 +162,15 @@
_onAddModel: function(model) {
var $el = $(this.itemTemplate(this._formatItem(model)));
this.$versionsContainer.append($el);

var preview = $el.find('.preview')[0];
this._lazyLoadPreview({
url: model.getPreviewUrl(),
mime: model.get('mimetype'),
callback: function(url) {
preview.src = url;
}
});
$el.find('.has-tooltip').tooltip();
},

@@ -206,7 +215,6 @@
downloadUrl: version.getDownloadUrl(),
downloadIconUrl: OC.imagePath('core', 'actions/download'),
revertIconUrl: OC.imagePath('core', 'actions/history'),
previewUrl: version.getPreviewUrl(),
revertLabel: t('files_versions', 'Restore'),
canRevert: (this.collection.getFileInfo().get('permissions') & OC.PERMISSION_UPDATE) !== 0
}, version.attributes);
@@ -235,6 +243,41 @@
return false;
}
return !fileInfo.isDirectory();
},

/**
* Lazy load a file's preview.
*
* @param path path of the file
* @param mime mime type
* @param callback callback function to call when the image was loaded
* @param etag file etag (for caching)
*/
_lazyLoadPreview : function(options) {
var self = this;
var url = options.url;
var mime = options.mime;
var ready = options.callback;

// get mime icon url
var iconURL = OC.MimeType.getIconUrl(mime);
var previewURL,
urlSpec = {};
ready(iconURL); // set mimeicon URL

var img = new Image();
img.onload = function(){
// if loading the preview image failed (no preview for the mimetype) then img.width will < 5
if (img.width > 5) {
ready(url, img);
} else if (options.error) {
options.error();
}
};
if (options.error) {
img.onerror = options.error;
}
img.src = url;
}
});


+ 1
- 0
apps/files_versions/lib/Storage.php View File

@@ -467,6 +467,7 @@ class Storage {
$versions[$key]['path'] = Filesystem::normalizePath($pathinfo['dirname'] . '/' . $filename);
$versions[$key]['name'] = $versionedFile;
$versions[$key]['size'] = $view->filesize($dir . '/' . $entryName);
$versions[$key]['mimetype'] = \OC::$server->getMimeTypeDetector()->detectPath($versionedFile);
}
}
}

Loading…
Cancel
Save