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
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* returns the list of documents the user has access to
|
||||||
|
*/
|
||||||
|
|
||||||
// Init owncloud
|
// Init owncloud
|
||||||
|
|
||||||
|
namespace OCA\Documents;
|
||||||
|
|
||||||
\OCP\User::checkLoggedIn();
|
\OCP\User::checkLoggedIn();
|
||||||
\OCP\JSON::checkAppEnabled('documents');
|
\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 */
|
/*globals $,OC,fileDownloadPath,t,document,odf,webodfEditor,alert,require,dojo,runtime */
|
||||||
var documentsMain = {
|
var documentsMain = {
|
||||||
|
_documents: [],
|
||||||
|
_sessions: [],
|
||||||
|
_members: [],
|
||||||
useUnstable : false,
|
useUnstable : false,
|
||||||
onStartup: function() {
|
onStartup: function() {
|
||||||
"use strict";
|
"use strict";
|
||||||
@ -113,7 +116,9 @@ var documentsMain = {
|
|||||||
documentsMain.initSession
|
documentsMain.initSession
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
/**
|
||||||
|
* FIXME
|
||||||
|
*
|
||||||
updateInfo : function(){
|
updateInfo : function(){
|
||||||
var fileIds = [];
|
var fileIds = [];
|
||||||
$('.documentslist li').each(function(i, e){
|
$('.documentslist li').each(function(i, e){
|
||||||
@ -134,6 +139,7 @@ var documentsMain = {
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
*/
|
||||||
|
|
||||||
onInvite: function(event) {
|
onInvite: function(event) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
@ -163,6 +169,56 @@ var documentsMain = {
|
|||||||
$(document.body).removeClass('claro');
|
$(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={};
|
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() {
|
$(document).ready(function() {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
@ -305,14 +297,11 @@ $(document).ready(function() {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
//TODO load list of files
|
jQuery.when(documentsMain.loadDocuments())
|
||||||
jQuery.when(documentsDocuments.loadDocuments(), documentsDocuments.loadSessions())
|
|
||||||
.then(function(){
|
.then(function(){
|
||||||
documentsDocuments.renderDocuments();
|
documentsMain.renderDocuments();
|
||||||
});
|
});
|
||||||
//TODO show no docs please upload
|
//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 when ending a session as the last user close session?
|
//TODO when ending a session as the last user close session?
|
||||||
|
|
||||||
OC.addScript('documents', 'dojo-amalgamation', documentsMain.onStartup);
|
OC.addScript('documents', 'dojo-amalgamation', documentsMain.onStartup);
|
||||||
|
@ -111,12 +111,10 @@ class Session {
|
|||||||
FROM `*PREFIX*documents_session` AS `s`
|
FROM `*PREFIX*documents_session` AS `s`
|
||||||
LEFT JOIN `*PREFIX*documents_member` AS `m` ON `s`.`es_id`=`m`.`es_id`
|
LEFT JOIN `*PREFIX*documents_member` AS `m` ON `s`.`es_id`=`m`.`es_id`
|
||||||
AND `m`.`status`='. Member::MEMBER_STATUS_ACTIVE .'
|
AND `m`.`status`='. Member::MEMBER_STATUS_ACTIVE .'
|
||||||
AND `m`.`uid` != ?
|
|
||||||
WHERE `s`.`file_id` IN (' . $stmt .')
|
WHERE `s`.`file_id` IN (' . $stmt .')
|
||||||
GROUP BY `m`.`es_id`
|
GROUP BY `m`.`es_id`
|
||||||
');
|
');
|
||||||
$result = $query->execute(
|
$result = $query->execute($fileIds
|
||||||
array_merge(array(\OCP\User::getUser()), $fileIds)
|
|
||||||
);
|
);
|
||||||
|
|
||||||
$info = $result->fetchAll();
|
$info = $result->fetchAll();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user