Merge pull request #2414 from nextcloud/version_previews
Fix empty version previews
This commit is contained in:
commit
6458b5adb5
|
@ -81,7 +81,8 @@
|
||||||
name: version.name,
|
name: version.name,
|
||||||
fullPath: fullPath,
|
fullPath: fullPath,
|
||||||
timestamp: revision,
|
timestamp: revision,
|
||||||
size: version.size
|
size: version.size,
|
||||||
|
mimetype: version.mimetype
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
this._endReached = result.data.endReached;
|
this._endReached = result.data.endReached;
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
'<li data-revision="{{timestamp}}">' +
|
'<li data-revision="{{timestamp}}">' +
|
||||||
'<div>' +
|
'<div>' +
|
||||||
'<div class="preview-container">' +
|
'<div class="preview-container">' +
|
||||||
'<img class="preview" src="{{previewUrl}}"/>' +
|
'<img class="preview" src="{{previewUrl}}" width="44" height="44"/>' +
|
||||||
'</div>' +
|
'</div>' +
|
||||||
'<div class="version-container">' +
|
'<div class="version-container">' +
|
||||||
'<div>' +
|
'<div>' +
|
||||||
|
@ -162,6 +162,15 @@
|
||||||
_onAddModel: function(model) {
|
_onAddModel: function(model) {
|
||||||
var $el = $(this.itemTemplate(this._formatItem(model)));
|
var $el = $(this.itemTemplate(this._formatItem(model)));
|
||||||
this.$versionsContainer.append($el);
|
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();
|
$el.find('.has-tooltip').tooltip();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -206,7 +215,6 @@
|
||||||
downloadUrl: version.getDownloadUrl(),
|
downloadUrl: version.getDownloadUrl(),
|
||||||
downloadIconUrl: OC.imagePath('core', 'actions/download'),
|
downloadIconUrl: OC.imagePath('core', 'actions/download'),
|
||||||
revertIconUrl: OC.imagePath('core', 'actions/history'),
|
revertIconUrl: OC.imagePath('core', 'actions/history'),
|
||||||
previewUrl: version.getPreviewUrl(),
|
|
||||||
revertLabel: t('files_versions', 'Restore'),
|
revertLabel: t('files_versions', 'Restore'),
|
||||||
canRevert: (this.collection.getFileInfo().get('permissions') & OC.PERMISSION_UPDATE) !== 0
|
canRevert: (this.collection.getFileInfo().get('permissions') & OC.PERMISSION_UPDATE) !== 0
|
||||||
}, version.attributes);
|
}, version.attributes);
|
||||||
|
@ -235,6 +243,38 @@
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return !fileInfo.isDirectory();
|
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 url = options.url;
|
||||||
|
var mime = options.mime;
|
||||||
|
var ready = options.callback;
|
||||||
|
|
||||||
|
// get mime icon url
|
||||||
|
var iconURL = OC.MimeType.getIconUrl(mime);
|
||||||
|
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;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -467,6 +467,7 @@ class Storage {
|
||||||
$versions[$key]['path'] = Filesystem::normalizePath($pathinfo['dirname'] . '/' . $filename);
|
$versions[$key]['path'] = Filesystem::normalizePath($pathinfo['dirname'] . '/' . $filename);
|
||||||
$versions[$key]['name'] = $versionedFile;
|
$versions[$key]['name'] = $versionedFile;
|
||||||
$versions[$key]['size'] = $view->filesize($dir . '/' . $entryName);
|
$versions[$key]['size'] = $view->filesize($dir . '/' . $entryName);
|
||||||
|
$versions[$key]['mimetype'] = \OC::$server->getMimeTypeDetector()->detectPath($versionedFile);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,14 +24,16 @@ describe('OCA.Versions.VersionsTabView', function() {
|
||||||
timestamp: time1,
|
timestamp: time1,
|
||||||
name: 'some file.txt',
|
name: 'some file.txt',
|
||||||
size: 140,
|
size: 140,
|
||||||
fullPath: '/subdir/some file.txt'
|
fullPath: '/subdir/some file.txt',
|
||||||
|
mimetype: 'text/plain'
|
||||||
});
|
});
|
||||||
var version2 = new VersionModel({
|
var version2 = new VersionModel({
|
||||||
id: time2,
|
id: time2,
|
||||||
timestamp: time2,
|
timestamp: time2,
|
||||||
name: 'some file.txt',
|
name: 'some file.txt',
|
||||||
size: 150,
|
size: 150,
|
||||||
fullPath: '/subdir/some file.txt'
|
fullPath: '/subdir/some file.txt',
|
||||||
|
mimetype: 'text/plain'
|
||||||
});
|
});
|
||||||
|
|
||||||
testVersions = [version1, version2];
|
testVersions = [version1, version2];
|
||||||
|
@ -80,14 +82,14 @@ describe('OCA.Versions.VersionsTabView', function() {
|
||||||
expect($item.find('.versiondate').text()).toEqual('seconds ago');
|
expect($item.find('.versiondate').text()).toEqual('seconds ago');
|
||||||
expect($item.find('.size').text()).toEqual('< 1 KB');
|
expect($item.find('.size').text()).toEqual('< 1 KB');
|
||||||
expect($item.find('.revertVersion').length).toEqual(1);
|
expect($item.find('.revertVersion').length).toEqual(1);
|
||||||
expect($item.find('.preview').attr('src')).toEqual(version1.getPreviewUrl());
|
expect($item.find('.preview').attr('src')).toEqual('http://localhost/core/img/filetypes/text.svg');
|
||||||
|
|
||||||
$item = $versions.eq(1);
|
$item = $versions.eq(1);
|
||||||
expect($item.find('.downloadVersion').attr('href')).toEqual(version2.getDownloadUrl());
|
expect($item.find('.downloadVersion').attr('href')).toEqual(version2.getDownloadUrl());
|
||||||
expect($item.find('.versiondate').text()).toEqual('2 days ago');
|
expect($item.find('.versiondate').text()).toEqual('2 days ago');
|
||||||
expect($item.find('.size').text()).toEqual('< 1 KB');
|
expect($item.find('.size').text()).toEqual('< 1 KB');
|
||||||
expect($item.find('.revertVersion').length).toEqual(1);
|
expect($item.find('.revertVersion').length).toEqual(1);
|
||||||
expect($item.find('.preview').attr('src')).toEqual(version2.getPreviewUrl());
|
expect($item.find('.preview').attr('src')).toEqual('http://localhost/core/img/filetypes/text.svg');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('does not render revert button when no update permissions', function() {
|
it('does not render revert button when no update permissions', function() {
|
||||||
|
@ -104,13 +106,13 @@ describe('OCA.Versions.VersionsTabView', function() {
|
||||||
expect($item.find('.downloadVersion').attr('href')).toEqual(version1.getDownloadUrl());
|
expect($item.find('.downloadVersion').attr('href')).toEqual(version1.getDownloadUrl());
|
||||||
expect($item.find('.versiondate').text()).toEqual('seconds ago');
|
expect($item.find('.versiondate').text()).toEqual('seconds ago');
|
||||||
expect($item.find('.revertVersion').length).toEqual(0);
|
expect($item.find('.revertVersion').length).toEqual(0);
|
||||||
expect($item.find('.preview').attr('src')).toEqual(version1.getPreviewUrl());
|
expect($item.find('.preview').attr('src')).toEqual('http://localhost/core/img/filetypes/text.svg');
|
||||||
|
|
||||||
$item = $versions.eq(1);
|
$item = $versions.eq(1);
|
||||||
expect($item.find('.downloadVersion').attr('href')).toEqual(version2.getDownloadUrl());
|
expect($item.find('.downloadVersion').attr('href')).toEqual(version2.getDownloadUrl());
|
||||||
expect($item.find('.versiondate').text()).toEqual('2 days ago');
|
expect($item.find('.versiondate').text()).toEqual('2 days ago');
|
||||||
expect($item.find('.revertVersion').length).toEqual(0);
|
expect($item.find('.revertVersion').length).toEqual(0);
|
||||||
expect($item.find('.preview').attr('src')).toEqual(version2.getPreviewUrl());
|
expect($item.find('.preview').attr('src')).toEqual('http://localhost/core/img/filetypes/text.svg');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -156,7 +158,8 @@ describe('OCA.Versions.VersionsTabView', function() {
|
||||||
timestamp: time3,
|
timestamp: time3,
|
||||||
name: 'some file.txt',
|
name: 'some file.txt',
|
||||||
size: 54,
|
size: 54,
|
||||||
fullPath: '/subdir/some file.txt'
|
fullPath: '/subdir/some file.txt',
|
||||||
|
mimetype: 'text/plain'
|
||||||
});
|
});
|
||||||
|
|
||||||
tabView.collection.add(version3);
|
tabView.collection.add(version3);
|
||||||
|
@ -167,7 +170,7 @@ describe('OCA.Versions.VersionsTabView', function() {
|
||||||
expect($item.find('.downloadVersion').attr('href')).toEqual(version3.getDownloadUrl());
|
expect($item.find('.downloadVersion').attr('href')).toEqual(version3.getDownloadUrl());
|
||||||
expect($item.find('.versiondate').text()).toEqual('7 days ago');
|
expect($item.find('.versiondate').text()).toEqual('7 days ago');
|
||||||
expect($item.find('.revertVersion').length).toEqual(1);
|
expect($item.find('.revertVersion').length).toEqual(1);
|
||||||
expect($item.find('.preview').attr('src')).toEqual(version3.getPreviewUrl());
|
expect($item.find('.preview').attr('src')).toEqual('http://localhost/core/img/filetypes/text.svg');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue