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,66 +169,24 @@ var documentsMain = {
$(document.body).removeClass('claro');
});
});
}
};
/**
* TODO copy from files, move from files to core? load files.js?
* @param {type} mime
* @returns {getMimeIcon}
*/
function getMimeIcon(mime){
var def = new $.Deferred();
if(getMimeIcon.cache[mime]){
def.resolve(getMimeIcon.cache[mime]);
}else{
jQuery.getJSON( OC.filePath('documents','ajax','mimeicon.php'), {mime: mime})
.done(function(data){
getMimeIcon.cache[mime]=data.path;
def.resolve(getMimeIcon.cache[mime]);
})
.error(function(jqXHR, textStatus, errorThrown){
console.log(textStatus + ': ' + errorThrown);
console.log(jqXHR);
});
}
return def;
}
getMimeIcon.cache={};
// fill the albums from Gallery.images
var documentsDocuments = {
_documents: [],
_sessions: []
};
documentsDocuments.loadDocuments = function () {
},
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;
};
documentsDocuments.loadSessions = function () {
},
renderDocuments: 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();
@ -244,6 +208,7 @@ documentsDocuments.renderDocuments = function () {
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);
@ -252,9 +217,36 @@ documentsDocuments.renderDocuments = function () {
} else {
console.log('Could not find file '+session.file_id+' for session '+session.es_id);
}
}
});
}
};
/**
* TODO copy from files, move from files to core? load files.js?
* @param {type} mime
* @returns {getMimeIcon}
*/
function getMimeIcon(mime){
var def = new $.Deferred();
if(getMimeIcon.cache[mime]){
def.resolve(getMimeIcon.cache[mime]);
}else{
jQuery.getJSON( OC.filePath('documents','ajax','mimeicon.php'), {mime: mime})
.done(function(data){
getMimeIcon.cache[mime]=data.path;
def.resolve(getMimeIcon.cache[mime]);
})
.error(function(jqXHR, textStatus, errorThrown){
console.log(textStatus + ': ' + errorThrown);
console.log(jqXHR);
});
}
return def;
}
getMimeIcon.cache={};
$(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