refactor document.js, show overlay icon only when a member active, load session and member info with documents.php

pull/1/head
Jörn Friedrich Dreyer 11 years ago
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();
$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));
\OCP\JSON::success(array('documents' => $documents,'sessions' => $sessions,'members' => $members));

@ -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…
Cancel
Save