136 lines
4.6 KiB
JavaScript
136 lines
4.6 KiB
JavaScript
#include common.js
|
|
#include eeprom.js
|
|
#include utility.js
|
|
|
|
var eepromAppl = 1,
|
|
eepromSupportImageEmbed = true,
|
|
eepromSupportAudioEmbed = true,
|
|
eepromSupportVideoEmbed = true;
|
|
var eepromInitialise = function(auth) {
|
|
window.eepromHistory = {};
|
|
window.eepromClient = new AmiEEPROM(futami.get('eeprom2'), auth.getHttpAuth);
|
|
|
|
window.eepromUploadsTable = $i('uploadHistory');
|
|
$i('uploadSelector').onchange = function() {
|
|
for(var i = 0; i < this.files.length; ++i)
|
|
eepromFileUpload(this.files[i]);
|
|
};
|
|
$i('uploadButton').onclick = function() {
|
|
$i('uploadSelector').click();
|
|
};
|
|
|
|
ami.chat.inputBox.watch('paste', function(ev) {
|
|
if(ev.clipboardData && ev.clipboardData.files.length > 0) {
|
|
if('preventDefault' in ev)
|
|
ev.preventDefault();
|
|
|
|
for(var i = 0; i < ev.clipboardData.files.length; ++i)
|
|
eepromFileUpload(ev.clipboardData.files[i]);
|
|
}
|
|
});
|
|
|
|
if((typeof document.body.ondrop).toLowerCase() !== 'undefined') {
|
|
document.body.ondragenter = function(ev) {
|
|
ev.preventDefault();
|
|
ev.stopPropagation();
|
|
};
|
|
document.body.ondragover = function(ev) {
|
|
ev.preventDefault();
|
|
ev.stopPropagation();
|
|
};
|
|
document.body.ondragleave = function(ev) {
|
|
ev.preventDefault();
|
|
ev.stopPropagation();
|
|
};
|
|
document.body.ondrop = function(ev) {
|
|
ev.preventDefault();
|
|
ev.stopPropagation();
|
|
if(ev.dataTransfer && ev.dataTransfer.files.length > 0)
|
|
for(var i = 0; i < ev.dataTransfer.files.length; ++i)
|
|
eepromFileUpload(ev.dataTransfer.files[i]);
|
|
};
|
|
}
|
|
};
|
|
var eepromFileUpload = function(file) {
|
|
if(!window.eepromUploadsTable || !window.eepromClient) {
|
|
console.error('Upload history or EEPROM client is missing???');
|
|
return;
|
|
}
|
|
|
|
var uploadEntryWrap = window.eepromUploadsTable.insertRow(0),
|
|
uploadEntry = uploadEntryWrap.insertCell(0);
|
|
uploadEntryWrap.className = (window.eepromUploadsTable.rows.length % 2) ? 'rowOdd' : 'rowEven';
|
|
|
|
var name = document.createElement('a');
|
|
name.target = '_blank';
|
|
name.style.wordWrap = 'normal';
|
|
name.style.wordBreak = 'break-word';
|
|
name.style.display = 'block';
|
|
name.style.margin = '2px 10px';
|
|
name.style.textDecoration = 'none !important';
|
|
name.textContent = file.name;
|
|
name.title = 'SHIFT+Click to delete file';
|
|
uploadEntry.appendChild(name);
|
|
|
|
var prog = document.createElement('div'),
|
|
progBar = document.createElement('div');
|
|
prog.style.border = '1px solid #808080';
|
|
prog.style.background = '#000';
|
|
prog.style.padding = '0';
|
|
prog.style.margin = '2px 10px';
|
|
progBar.style.background = '#808080';
|
|
progBar.style.width = '0%';
|
|
progBar.style.height = '12px';
|
|
progBar.style.padding = '0';
|
|
progBar.style.border = '1px solid #000';
|
|
progBar.style.boxSizing = 'border-box';
|
|
prog.appendChild(progBar);
|
|
uploadEntry.appendChild(prog);
|
|
|
|
var uploadTask = window.eepromClient.create(file);
|
|
|
|
uploadTask.onProgress(function(progressInfo) {
|
|
progBar.style.width = `${progressInfo.progress * 100}%`;
|
|
});
|
|
|
|
name.onclick = function(ev) {
|
|
if(ev.shiftKey) {
|
|
ev.preventDefault();
|
|
var fileInfo = window.eepromHistory[name.getAttribute('data-eeprom-id') || ''];
|
|
|
|
if(fileInfo) {
|
|
window.eepromClient.delete(
|
|
fileInfo,
|
|
() => { uploadHistory.deleteRow(uploadEntryWrap.rowIndex); },
|
|
window.alert
|
|
);
|
|
} else uploadTask.abort();
|
|
}
|
|
};
|
|
|
|
uploadTask.start(
|
|
fileInfo => {
|
|
window.eepromHistory[fileInfo.id] = fileInfo;
|
|
name.style.textDecoration = null;
|
|
name.setAttribute('data-eeprom-id', fileInfo.id);
|
|
name.href = fileInfo.url;
|
|
uploadEntry.removeChild(prog);
|
|
|
|
var insertText = location.protocol + fileInfo.url;
|
|
|
|
if(eepromSupportImageEmbed && fileInfo.isImage())
|
|
insertText = '[img]' + fileInfo.url + '[/img]';
|
|
else if(eepromSupportAudioEmbed && fileInfo.isAudio())
|
|
insertText = '[audio]' + fileInfo.url + '[/audio]';
|
|
else if(eepromSupportVideoEmbed && fileInfo.isVideo())
|
|
insertText = '[video]' + fileInfo.url + '[/video]';
|
|
|
|
ami.chat.inputBox.insert(insertText);
|
|
},
|
|
ex => {
|
|
if(ex !== '')
|
|
alert(ex);
|
|
uploadHistory.deleteRow(uploadEntryWrap.rowIndex);
|
|
},
|
|
);
|
|
};
|