refactor document.js, show overlay icon only when a member active, load session and member info with documents.php
This commit is contained in:
parent
667f3717db
commit
d62e723304
@ -1,10 +1,28 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* returns the list of documents the user has access to
|
||||
*/
|
||||
|
||||
// Init owncloud
|
||||
|
||||
namespace OCA\Documents;
|
||||
|
||||
\OCP\User::checkLoggedIn();
|
||||
\OCP\JSON::checkAppEnabled('documents');
|
||||
|
||||
$documents=\OCA\Documents\Storage::getDocuments();
|
||||
$documents = Storage::getDocuments();
|
||||
|
||||
OCP\JSON::success(array('documents' => $documents));
|
||||
$fileIds = array();
|
||||
foreach ($documents as $document) {
|
||||
$fileIds[] = $document['fileid'];
|
||||
}
|
||||
|
||||
$sessions = Session::getSessionsByFileIds($fileIds);
|
||||
|
||||
$members = array();
|
||||
foreach ($sessions as $session) {
|
||||
$members[$session['es_id']] = Member::getMembersByEsId($session['es_id']);
|
||||
}
|
||||
|
||||
\OCP\JSON::success(array('documents' => $documents,'sessions' => $sessions,'members' => $members));
|
||||
|
131
js/documents.js
131
js/documents.js
@ -1,5 +1,8 @@
|
||||
/*globals $,OC,fileDownloadPath,t,document,odf,webodfEditor,alert,require,dojo,runtime */
|
||||
var documentsMain = {
|
||||
_documents: [],
|
||||
_sessions: [],
|
||||
_members: [],
|
||||
useUnstable : false,
|
||||
onStartup: function() {
|
||||
"use strict";
|
||||
@ -113,7 +116,9 @@ var documentsMain = {
|
||||
documentsMain.initSession
|
||||
);
|
||||
},
|
||||
|
||||
/**
|
||||
* FIXME
|
||||
*
|
||||
updateInfo : function(){
|
||||
var fileIds = [];
|
||||
$('.documentslist li').each(function(i, e){
|
||||
@ -134,6 +139,7 @@ var documentsMain = {
|
||||
}
|
||||
);
|
||||
},
|
||||
*/
|
||||
|
||||
onInvite: function(event) {
|
||||
event.preventDefault();
|
||||
@ -163,6 +169,56 @@ var documentsMain = {
|
||||
$(document.body).removeClass('claro');
|
||||
});
|
||||
});
|
||||
},
|
||||
loadDocuments: function () {
|
||||
var self = this;
|
||||
var def = new $.Deferred();
|
||||
jQuery.getJSON(OC.filePath('documents', 'ajax', 'documents.php'))
|
||||
.done(function (data) {
|
||||
self._documents = data.documents;
|
||||
self._sessions = data.sessions;
|
||||
self._members = data.members;
|
||||
def.resolve();
|
||||
})
|
||||
.fail(function(data){
|
||||
console.log(t('documents','Failed to load documents.'));
|
||||
});
|
||||
return def;
|
||||
},
|
||||
renderDocuments: function () {
|
||||
var self = this;
|
||||
|
||||
//remove all but template
|
||||
$('.documentslist .document:not(.template)').remove();
|
||||
|
||||
jQuery.each(this._documents, function(i,document){
|
||||
var docElem = $('.documentslist .template').clone();
|
||||
docElem.removeClass('template');
|
||||
docElem.addClass('document');
|
||||
docElem.attr('data-id', document.fileid);
|
||||
|
||||
var a = docElem.find('a');
|
||||
a.attr('href', OC.Router.generate('download',{file:document.path}));
|
||||
a.find('label').text(document.name);
|
||||
|
||||
getMimeIcon(document.mimetype).then(function(path){
|
||||
a.css('background-image', 'url("'+path+'")');
|
||||
});
|
||||
$('.documentslist').append(docElem);
|
||||
docElem.show();
|
||||
});
|
||||
jQuery.each(this._sessions, function(i,session){
|
||||
if (self._members[session.es_id].length > 0) {
|
||||
var docElem = $('.documentslist .document[data-id="'+session.file_id+'"]');
|
||||
if (docElem.length > 0) {
|
||||
docElem.attr('data-esid', session.es_id);
|
||||
docElem.find('label').after('<img class="svg session-active" src="'+OC.imagePath('core','places/contacts-dark')+'">');
|
||||
docElem.addClass('session');
|
||||
} else {
|
||||
console.log('Could not find file '+session.file_id+' for session '+session.es_id);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
@ -191,70 +247,6 @@ function getMimeIcon(mime){
|
||||
}
|
||||
getMimeIcon.cache={};
|
||||
|
||||
// fill the albums from Gallery.images
|
||||
var documentsDocuments = {
|
||||
_documents: [],
|
||||
_sessions: []
|
||||
};
|
||||
documentsDocuments.loadDocuments = function () {
|
||||
var self = this;
|
||||
var def = new $.Deferred();
|
||||
jQuery.getJSON(OC.filePath('documents', 'ajax', 'documents.php'))
|
||||
.done(function (data) {
|
||||
self._documents = data.documents;
|
||||
def.resolve();
|
||||
})
|
||||
.fail(function(data){
|
||||
console.log(t('documents','Failed to load documents.'));
|
||||
});
|
||||
return def;
|
||||
};
|
||||
documentsDocuments.loadSessions = function () {
|
||||
var self = this;
|
||||
var def = new $.Deferred();
|
||||
jQuery.getJSON(OC.filePath('documents', 'ajax', 'sessions.php'))
|
||||
.done(function (data) {
|
||||
self._sessions = data.sessions;
|
||||
def.resolve();
|
||||
})
|
||||
.fail(function(data){
|
||||
console.log(t('documents','Failed to load sessions.'));
|
||||
});
|
||||
return def;
|
||||
};
|
||||
documentsDocuments.renderDocuments = function () {
|
||||
|
||||
//remove all but template
|
||||
$('.documentslist .document:not(.template)').remove();
|
||||
|
||||
jQuery.each(this._documents, function(i,document){
|
||||
var docElem = $('.documentslist .template').clone();
|
||||
docElem.removeClass('template');
|
||||
docElem.addClass('document');
|
||||
docElem.attr('data-id', document.fileid);
|
||||
|
||||
var a = docElem.find('a');
|
||||
a.attr('href', OC.Router.generate('download',{file:document.path}));
|
||||
a.find('label').text(document.name);
|
||||
|
||||
getMimeIcon(document.mimetype).then(function(path){
|
||||
a.css('background-image', 'url("'+path+'")');
|
||||
});
|
||||
$('.documentslist').append(docElem);
|
||||
docElem.show();
|
||||
});
|
||||
jQuery.each(this._sessions, function(i,session){
|
||||
var docElem = $('.documentslist .document[data-id="'+session.file_id+'"]');
|
||||
if (docElem.length > 0) {
|
||||
docElem.attr('data-esid', session.es_id);
|
||||
docElem.find('label').after('<img class="svg session-active" src="'+OC.imagePath('core','places/contacts-dark')+'">');
|
||||
docElem.addClass('session');
|
||||
} else {
|
||||
console.log('Could not find file '+session.file_id+' for session '+session.es_id);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
$(document).ready(function() {
|
||||
"use strict";
|
||||
|
||||
@ -305,14 +297,11 @@ $(document).ready(function() {
|
||||
}
|
||||
});
|
||||
|
||||
//TODO load list of files
|
||||
jQuery.when(documentsDocuments.loadDocuments(), documentsDocuments.loadSessions())
|
||||
jQuery.when(documentsMain.loadDocuments())
|
||||
.then(function(){
|
||||
documentsDocuments.renderDocuments();
|
||||
documentsMain.renderDocuments();
|
||||
});
|
||||
//TODO show no docs please upload
|
||||
//TODO load list of sessions, and add 'active' as icon overlay
|
||||
//TODO when clicking on a document without a session initialize it
|
||||
//TODO show "no docs, please upload"
|
||||
//TODO when ending a session as the last user close session?
|
||||
|
||||
OC.addScript('documents', 'dojo-amalgamation', documentsMain.onStartup);
|
||||
|
@ -111,12 +111,10 @@ class Session {
|
||||
FROM `*PREFIX*documents_session` AS `s`
|
||||
LEFT JOIN `*PREFIX*documents_member` AS `m` ON `s`.`es_id`=`m`.`es_id`
|
||||
AND `m`.`status`='. Member::MEMBER_STATUS_ACTIVE .'
|
||||
AND `m`.`uid` != ?
|
||||
WHERE `s`.`file_id` IN (' . $stmt .')
|
||||
GROUP BY `m`.`es_id`
|
||||
');
|
||||
$result = $query->execute(
|
||||
array_merge(array(\OCP\User::getUser()), $fileIds)
|
||||
$result = $query->execute($fileIds
|
||||
);
|
||||
|
||||
$info = $result->fetchAll();
|
||||
|
Loading…
x
Reference in New Issue
Block a user