From d62e723304bcdebaaff6986fba305702deb17ed1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Wed, 28 Aug 2013 16:51:17 +0200 Subject: [PATCH] refactor document.js, show overlay icon only when a member active, load session and member info with documents.php --- ajax/documents.php | 22 +++++++- js/documents.js | 131 +++++++++++++++++++++------------------------ lib/session.php | 4 +- 3 files changed, 81 insertions(+), 76 deletions(-) diff --git a/ajax/documents.php b/ajax/documents.php index 39948881..216f360c 100644 --- a/ajax/documents.php +++ b/ajax/documents.php @@ -1,10 +1,28 @@ $documents)); +\OCP\JSON::success(array('documents' => $documents,'sessions' => $sessions,'members' => $members)); diff --git a/js/documents.js b/js/documents.js index a724f1a5..fa14654f 100644 --- a/js/documents.js +++ b/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(''); + 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(''); - 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); diff --git a/lib/session.php b/lib/session.php index 687bf65e..da291ef5 100644 --- a/lib/session.php +++ b/lib/session.php @@ -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();