129 lines
3.4 KiB
HTML
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> |