Files
catc/masks/course.html
2019-09-07 21:36:21 +02:00

129 lines
3.4 KiB
HTML

<div id="course">
<div id="docs">
<div id="upload_file"><input id="fileupload" type="file" name="files[]" data-url="server/php/" multiple></div>
<div id="doc_list"></div>
</div>
<div id="notes_box">
<div id="notes_feedback"></div>
<div id="notes"></div>
</div>
</div>
<script type="text/javascript">
oCATC.pageInit = function(asHash, bFirstPage) {
self.tmp('id_course', asHash.items[0]);
//Setup layout
self.setPageTitle('Course: '+self.consts.courses[self.tmp('id_course')].description);
//Setup Quill
oEditor = new Editor('#notes');
oEditor.onKeyStroke = (e) => {
if(e.which == 83 && e.ctrlKey) {
e.preventDefault();
save(true);
}
else save();
};
//oQuill.keyboard.addBinding({key: 'S', ctrlKey: true}, function(){saveNotes(true);});
//Load notes
Tools.ajax(
'get_note',
(asData) => {
oEditor.setContent(asData.notes);
noteFeedback('notice', 'Last update at '+asData.led_time+' on '+asData.led_date);
},
{id: self.tmp('id_course')},
() => {console.log('Note not found for course ID = '+self.tmp('id_course'))}
);
//Setup File Upload
$('#fileupload')
.attr('data-url', self.getActionLink('upload_doc'))
.fileupload({
dataType: 'json',
acceptFileTypes: /(\.|\/)(gif|jpe?g|png|mov|doc|docx|pdf|mp3|wav)$/i,
formData: {id: self.tmp('id_course')},
done: function(e, asData) {
$.each(asData.result.files, function(iKey, oFile) {
var sMsg = ('error' in oFile)?oFile.error:(oFile.name+" uploaded successfully");
oCATC.feedback('notice', sMsg);
});
loadDocs();
}
});
loadDocs();
};
oCATC.onQuitPage = function() {
return save(true);
};
function loadDocs() {
Tools.ajax(
'get_docs',
(asData) => {
$.each(asData, function(iKey, asDoc){
$('#doc_list').append($('<a>', {'class':'item', href:asDoc.filepath, target:'_blank'})
.appendIcon('file-'+asDoc.type)
.append(asDoc.filename));
});
},
{id: self.tmp('id_course')},
() => {console.log('No doc found for course ID = '+self.tmp('id_course'))}
);
}
function noteFeedback(sType, sMsg) {
var $Feedback = $('#notes_feedback').stop();
if(sMsg != $Feedback.find('span').text()) {
$Feedback.fadeOut($Feedback.is(':empty')?0:'fast', function(){
$(this)
.empty()
.append($('<span>', {'class':sType}).text(sMsg))
.fadeIn('fast');
});
}
};
function save(bForce) {
if(typeof oSaveTimer != 'undefined') clearTimeout(oSaveTimer);
var bSave = (oEditor.keystrokes % 20 == 0 || bForce);
if(bSave) {
if(self.tmp('saving')) {
oSaveTimer = setTimeout(function(){save(true);}, 500);
}
else {
var sContent = oEditor.getContent();
if(oEditor.id != 0) {
self.tmp('saving', true);
noteFeedback('info', 'Saving...');
getInfo(
'set_note',
function(sDesc, asData) {
noteFeedback('notice', 'Note saved ('+asData.led_time+')');
self.tmp('saving', false);
},
{
id: self.tmp('id_course'),
content: sContent
},
function(sError) {
noteFeedback('error', 'Not saved! An error occured: '+sError);
self.tmp('saving', false);
oSaveTimer = setTimeout(save, 1000);
},
'POST'
);
}
else noteFeedback('error', 'No Course ID');
}
}
else {
oSaveTimer = setTimeout(function(){save(true);}, 1000*5);
}
return true;
}
</script>