Merge pull request #419 from xwiki-labs/readPlainTextFiles
Read plain text files
This commit is contained in:
commit
2329b49678
@ -30,9 +30,22 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
var isplainTextFile = function (metadata) {
|
||||||
|
// does its type begins with "text/"
|
||||||
|
if (metadata.type.indexOf("text/") === 0) { return true; }
|
||||||
|
// no type and no file extension -> let's guess it's plain text
|
||||||
|
var parsedName = /^(\.?.+?)(\.[^.]+)?$/.exec(metadata.name) || [];
|
||||||
|
if (!metadata.type && !parsedName[2]) { return true; }
|
||||||
|
// other exceptions
|
||||||
|
if (metadata.type === 'application/x-javascript') { return true; }
|
||||||
|
if (metadata.type === 'application/xml') { return true; }
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
// Default config, can be overriden per media-tag call
|
// Default config, can be overriden per media-tag call
|
||||||
var config = {
|
var config = {
|
||||||
allowed: [
|
allowed: [
|
||||||
|
'text/plain',
|
||||||
'image/png',
|
'image/png',
|
||||||
'image/jpeg',
|
'image/jpeg',
|
||||||
'image/jpg',
|
'image/jpg',
|
||||||
@ -53,6 +66,23 @@
|
|||||||
text: "Download"
|
text: "Download"
|
||||||
},
|
},
|
||||||
Plugins: {
|
Plugins: {
|
||||||
|
/**
|
||||||
|
* @param {object} metadataObject {name, metadatatype, owners} containing metadata of the file
|
||||||
|
* @param {strint} url Url of the blob object
|
||||||
|
* @param {Blob} content Blob object containing the data of the file
|
||||||
|
* @param {object} cfg Object {Plugins, allowed, download, pdf} containing infos about plugins
|
||||||
|
* @param {function} cb Callback function: (err, pluginElement) => {}
|
||||||
|
*/
|
||||||
|
text: function (metadata, url, content, cfg, cb) {
|
||||||
|
var plainText = document.createElement('div');
|
||||||
|
plainText.className = "plain-text-reader";
|
||||||
|
var reader = new FileReader();
|
||||||
|
reader.addEventListener('loadend', function (e) {
|
||||||
|
plainText.innerText = e.srcElement.result;
|
||||||
|
cb(void 0, plainText);
|
||||||
|
});
|
||||||
|
reader.readAsText(content);
|
||||||
|
},
|
||||||
image: function (metadata, url, content, cfg, cb) {
|
image: function (metadata, url, content, cfg, cb) {
|
||||||
var img = document.createElement('img');
|
var img = document.createElement('img');
|
||||||
img.setAttribute('src', url);
|
img.setAttribute('src', url);
|
||||||
@ -271,6 +301,9 @@
|
|||||||
var blob = decrypted.content;
|
var blob = decrypted.content;
|
||||||
|
|
||||||
var mediaType = getType(mediaObject, metadata, cfg);
|
var mediaType = getType(mediaObject, metadata, cfg);
|
||||||
|
if (isplainTextFile(metadata)) {
|
||||||
|
mediaType = "text";
|
||||||
|
}
|
||||||
|
|
||||||
if (mediaType === 'application') {
|
if (mediaType === 'application') {
|
||||||
mediaType = mediaObject.extension;
|
mediaType = mediaObject.extension;
|
||||||
|
|||||||
@ -52,6 +52,16 @@
|
|||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
max-height: ~"calc(100vh - 96px)";
|
max-height: ~"calc(100vh - 96px)";
|
||||||
}
|
}
|
||||||
|
.plain-text-reader {
|
||||||
|
align-self: flex-start;
|
||||||
|
width: 90vw;
|
||||||
|
height: 100%;
|
||||||
|
padding: 2em;
|
||||||
|
background-color: white;
|
||||||
|
overflow-y: auto;
|
||||||
|
word-wrap: break-word;
|
||||||
|
white-space: pre-wrap;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#cp-app-file-upload-form, #cp-app-file-download-form {
|
#cp-app-file-upload-form, #cp-app-file-download-form {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user