From c1c01c364c17e81f0e06d3060c24b6b6f27c51d6 Mon Sep 17 00:00:00 2001 From: Victor Dubiniuk Date: Tue, 13 Aug 2013 19:38:30 +0300 Subject: [PATCH] Invitations. Ugly but works --- ajax/controller.php | 69 ++++++++++++++-- ajax/otpoll.php | 2 +- appinfo/routes.php | 15 +++- css/style.css | 17 ++++ js/office.js | 157 ++++++++++++++++++++++-------------- templates/documents.php | 8 +- templates/part.sessions.php | 2 +- 7 files changed, 195 insertions(+), 75 deletions(-) diff --git a/ajax/controller.php b/ajax/controller.php index 0efba48b..a939c367 100644 --- a/ajax/controller.php +++ b/ajax/controller.php @@ -14,6 +14,10 @@ namespace OCA\Office; class Controller { + /** + * Process partial/complete file download + * @param type $args - array containing session id as anelement with a key es_id + */ public static function serve($args){ \OCP\JSON::checkLoggedIn(); @@ -23,6 +27,63 @@ class Controller { $download = new Download($officeView, $filename); $download->sendResponse(); } + + /** + * Search users according to the pattern + */ + public static function search(){ + $uid = self::getUser(); + if (@$_GET['search']){ + $found = array(); + $users = array(); + $count = 0; + $limit = 0; + $offset = 0; + while ($count < 15 && count($users) == $limit) { + $limit = 15 - $count; + $users = \OC_User::getDisplayNames($_GET['search'], $limit, $offset); + $offset += $limit; + foreach ($users as $userid => $displayName) { + $found[] = array( + 'label' => $displayName, + 'value' => $userid + ); + $count++; + } + } + \OCP\JSON::success(array('data'=>$found)); + } + } + + /** + * Invite users to the editing session + */ + public static function invite(){ + self::getUser(); + $invitees = @$_POST['users']; + + if (is_array($invitees)){ + $invitees = array_unique($invitees); + + $esId = @$_POST['esId']; + foreach ($invitees as $userId){ + try { + Invite::add($esId, $userId); + } catch (\Exception $e) { + + } + } + } + \OCP\JSON::success(); + } + + public static function sendAvatar(){ + $uid = self::getUser(); + $image = new \OC_Image('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'); + \OC_Util::obEnd(); + + echo $image->show(); + } public static function startSession($args){ $uid = self::getUser(); @@ -56,14 +117,6 @@ class Controller { exit(); } - public static function sendAvatar(){ - $uid = self::getUser(); - $image = new \OC_Image('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'); - \OC_Util::obEnd(); - - echo $image->show(); - } - public static function joinSession($args){ $esId = @$args['es_id']; \OCP\JSON::checkLoggedIn(); diff --git a/ajax/otpoll.php b/ajax/otpoll.php index c6dce04f..8ad8e01f 100644 --- a/ajax/otpoll.php +++ b/ajax/otpoll.php @@ -52,7 +52,7 @@ try{ $x['display_name'] = \OCP\User::getDisplayName($x['uid']); // Stub - $x['avatar_url'] = \OCP\Util::linkToRoute('office_avatar'); + $x['avatar_url'] = \OCP\Util::linkToRoute('office_user_avatar'); return $x; }, $members diff --git a/appinfo/routes.php b/appinfo/routes.php index d2dad06d..568658d9 100644 --- a/appinfo/routes.php +++ b/appinfo/routes.php @@ -54,7 +54,18 @@ $this->create('office_session_join', 'ajax/session/join/{es_id}') ->action('\OCA\Office\Controller', 'joinSession') ; -$this->create('office_avatar', 'ajax/avatar') + +$this->create('office_user_avatar', 'ajax/user/avatar') ->get() ->action('\OCA\Office\Controller', 'sendAvatar') -; \ No newline at end of file +; + +$this->create('office_user_invite', 'ajax/user/invite') + ->post() + ->action('\OCA\Office\Controller', 'invite') +; + +$this->create('office_user_search', 'ajax/user/search') + ->get() + ->action('\OCA\Office\Controller', 'search') +; diff --git a/css/style.css b/css/style.css index faa07408..98df338a 100755 --- a/css/style.css +++ b/css/style.css @@ -7,6 +7,10 @@ #office-content{ padding-left:160px; } +#office-content.wide{ + padding-left: 0; +} + #editing-sessions{ position:absolute; left:0; @@ -28,6 +32,10 @@ position:relative;top:3em;width: 100%; float:left; } +#odf_invite{ + float:right; +} + #editor-content #mainContainer{ background-color: transparent; } @@ -38,4 +46,13 @@ float:left; } #memberList{ padding-top: 5px; +} + +#invite-block{ + position: absolute; + top:3em; + margin-top:-3px; + right:72px; + padding: 10px; + background-color: #ddd; } \ No newline at end of file diff --git a/js/office.js b/js/office.js index e519fac2..3a627003 100644 --- a/js/office.js +++ b/js/office.js @@ -5,13 +5,13 @@ var officeMain = { OC.addScript('office', 'webodf_bootstrap', function() { OC.addScript('office', 'webodf-debug').done(function() { require({}, ["dojo/ready"], function(ready) { - ready(function(){ + ready(function() { require({}, ["webodf/editor/Editor"], function(Editor) { if (Editor && typeof(Editor) === 'function') { officeMain.initialized = 1; } else { - alert("initialization of webodf/editor/Editor\n"+ - "failed somehow..."); + alert("initialization of webodf/editor/Editor\n" + + "failed somehow..."); } }); }); @@ -27,96 +27,102 @@ var officeMain = { OC.addScript('office', 'editor/boot_editor').done(function() { var doclocation = response.es_id; - // fade out files menu and add odf menu - $('.documentslist, #emptyfolder').fadeOut('slow').promise().done(function() { + // fade out file list and show WebODF canvas + $('.documentslist, #emptyfolder, #editing-sessions').fadeOut('slow').promise().done(function() { // odf action toolbar var odfToolbarHtml = - '
' - + '' - + '' - + '' - + '
'; + '
' + + '' + + '' + + '' + + '
'; $('#controls').append(odfToolbarHtml); - }); - // fade out file list and show WebODF canvas - $('.documentslist, #emptyfolder').fadeOut('slow').promise().done(function() { + $('#office-content').addClass('wide'); var memberId, odfelement, odfcanvas, canvashtml = - '
'+ - '
'+ - '
'+ - '
'+ - '
'+ - '
'+ - '
'+ - '
'+ - '
'+ - '
'+ - '
'+ - '
'+ - '
'+ - '
'+ - '
'; + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
'; $(document.body).addClass("claro"); $('.documentslist, #emptyfolder').after(canvashtml); // in case we are on the public sharing page we shall display the odf into the preview tag $('#preview').html(canvashtml); - + runtime.assert(response.es_id, "invalid session id."); memberId = response.member_id; webodfEditor.boot( - { - collaborative: "owncloud", - docUrl: doclocation, - loginProcedure: function(cb) { - cb(response.es_id, OC.currentUser, "token"); - }, - joinSession: function(userId, sessionId, cb) { - cb(memberId); - }, - callback: function() { - // initialized. + { + collaborative: "owncloud", + docUrl: doclocation, + loginProcedure: function(cb) { + cb(response.es_id, OC.currentUser, "token"); + }, + joinSession: function(userId, sessionId, cb) { + cb(memberId); + }, + callback: function() { + // initialized. + } } - } ); }); }); }, - startSession : function(filepath){ + startSession: function(filepath) { "use strict"; if (officeMain.initialized === undefined) { alert("WebODF Editor not yet initialized..."); return; } - $.post(OC.Router.generate('office_session_start'), - { 'path' : filepath }, - officeMain.initSession - ); + $.post(OC.Router.generate('office_session_start'), + {'path': filepath}, + officeMain.initSession + ); }, - joinSession : function (esId){ - $.post(OC.Router.generate('office_session_join') + '/' + esId, - {}, - officeMain.initSession - ); + joinSession: function(esId) { + $.post(OC.Router.generate('office_session_join') + '/' + esId, + {}, + officeMain.initSession + ); }, - updateSessions : function(){ + updateSessions: function() { $('#editing-sessions').load(OC.Router.generate('office_session_listhtml'), {}, officeMain.onSessions); }, - - onSessions : function(){ + onSessions: function() { $('#editing-sessions a').click( - function(event){ + function(event) { event.preventDefault(); officeMain.joinSession($(this).attr('data-esid')); } ); }, - + onInvite: function() { + $('#invite-block').toggle(); + }, + sendInvite: function() { + var users = []; + $('input[name=invitee\\[\\]]').each(function(i, e) { + users.push($(e).val()); + }); + $.post(OC.Router.generate('office_user_invite'), {users: users}); + }, onClose: function() { "use strict"; @@ -127,8 +133,9 @@ var officeMain = { $('#mainContainer').remove(); $('#odf-canvas').remove(); $('.actions,#file_access_panel').fadeIn('slow'); - $('.documentslist, #emptyfolder').fadeIn('slow'); + $('.documentslist, #emptyfolder, #editing-sessions').fadeIn('slow'); $(document.body).removeClass('claro'); + $('#office-content').removeClass('wide'); webodfEditor.shutdown(); }); } @@ -141,6 +148,32 @@ $(document).ready(function() { }); $('#odf_close').live('click', officeMain.onClose); $('#odf_invite').live('click', officeMain.onInvite); - $('#session-list').click(officeMain.showSessions); + $('#invite-send').live('click', officeMain.sendInvite); + + $('#inivite-input').autocomplete({ + minLength: 1, + source: function(search, response) { + $.get(OC.Router.generate('office_user_search'), {search: $('#inivite-input').val()}, + function(result) { + if (result.status == 'success' && result.data.length > 0) { + response(result.data); + } else { + response([t('core', 'No people found')]); + } + }); + }, + select: function(event, el) { + var item = $( + '
  • ' + + el.item.label + + '' + + '
  • ' + ); + $('#invitee-list').append(item); + } + }); + OC.addScript('office', 'dojo-amalgamation', officeMain.onStartup); }); diff --git a/templates/documents.php b/templates/documents.php index c43c60bb..15581ab4 100755 --- a/templates/documents.php +++ b/templates/documents.php @@ -1,4 +1,10 @@ -
    +
    + +
    diff --git a/templates/part.sessions.php b/templates/part.sessions.php index 26fc98ff..5eb2b380 100644 --- a/templates/part.sessions.php +++ b/templates/part.sessions.php @@ -2,5 +2,5 @@
    -
    +