Skip to content

Commit

Permalink
Support ad-hoc commands on contacts who support them
Browse files Browse the repository at this point in the history
  • Loading branch information
singpolyma committed Jun 2, 2017
1 parent c5feba5 commit 0ccd3d4
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 26 deletions.
1 change: 1 addition & 0 deletions app/views/contact.tpl
Expand Up @@ -25,6 +25,7 @@
</aside>
<div>
<?php $this->widget('ContactHeader'); ?>
<?php $this->widget('AdHoc'); ?>
<?php $this->widget('CommunityPosts'); ?>
</div>
<?php } ?>
Expand Down
35 changes: 28 additions & 7 deletions app/widgets/AdHoc/AdHoc.php
Expand Up @@ -14,6 +14,8 @@ function load()
$this->registerEvent('adhoc_get_handle', 'onList');
$this->registerEvent('adhoc_command_handle', 'onCommand');
$this->registerEvent('adhoc_submit_handle', 'onCommand');
$this->registerEvent('adhoc_command_error', 'onCommandError');
$this->registerEvent('adhoc_submit_error', 'onCommandError');
}

function onList($package)
Expand All @@ -29,6 +31,7 @@ function onCommand($package)
$command = $package->content;

$view = $this->tpl();
$view->assign('jid', $package->from);

if(isset($command->note)) {
$view->assign('note', $command->note);
Expand Down Expand Up @@ -60,13 +63,28 @@ function prepareList($list)
return $view->draw('_adhoc_list', true);
}

function ajaxGet()
function onCommandError($package)
{
$session = Session::start();
$view = $this->tpl();

$note = $package->content['errorid'];
if($package->content['message']) {
$note = $package->content['message'];
}

$view->assign('note', $note);
Dialog::fill($view->draw('_adhoc_note', true), true);
}

function ajaxGet($jid)
{
if(!$jid) {
$session = Session::start();
$jid = $session->get('host');
}

$g = new Get;
$g->setTo($session->get('host'))
->request();
$g->setTo($jid)->request();
}

function ajaxCommand($jid, $node)
Expand All @@ -77,12 +95,15 @@ function ajaxCommand($jid, $node)
->request();
}

function ajaxSubmit($data, $node, $sessionid)
function ajaxSubmit($jid, $data, $node, $sessionid)
{
$session = Session::start();
if(!$jid) {
$session = Session::start();
$jid = $session->get('host');
}

$s = new Submit;
$s->setTo($session->get('host'))
$s->setTo($jid)
->setNode($node)
->setData($data)
->setSessionid($sessionid)
Expand Down
23 changes: 7 additions & 16 deletions app/widgets/AdHoc/_adhoc_form.tpl
Expand Up @@ -8,25 +8,16 @@
{$c->__('button.close')}
</button>
{if="$actions != null"}
{if="isset($actions->next)"}
<button onclick="AdHoc.submit()" class="button flat">
<button data-jid="{$jid}" onclick="AdHoc.submit(this.dataset.jid)" class="button flat">
{if="isset($actions->next)"}
{$c->__('button.next')}
</button>
{/if}
{if="isset($actions->previous)"}
<button class="button flat">
{elseif="isset($actions->previous)"}
{$c->__('button.previous')}
</button>
{/if}
{if="isset($actions->cancel)"}
<button class="button flat">
{elseif="isset($actions->cancel)"}
{$c->__('button.cancel')}
</button>
{/if}
{if="isset($actions->complete)"}
<!--<a onclick="" class="button flat">
{elseif="isset($actions->complete)"}
{$c->__('button.submit')}
</a>-->
{/if}
{/if}
</button>
{/if}
</div>
11 changes: 8 additions & 3 deletions app/widgets/AdHoc/adhoc.js
Expand Up @@ -22,12 +22,17 @@ var AdHoc = {
i++;
}
},
submit: function() {
submit: function(jid) {
var form = document.querySelector('#dialog form[name=command]');
AdHoc_ajaxSubmit(MovimUtils.parseForm('command'), form.dataset.node, form.dataset.sessionid);
AdHoc_ajaxSubmit(jid, MovimUtils.parseForm('command'), form.dataset.node, form.dataset.sessionid);
}
}

MovimWebsocket.attach(function() {
AdHoc_ajaxGet();
var parts = MovimUtils.urlParts();
if(parts.page === "contact") {
AdHoc_ajaxGet(parts.params[0]);
} else {
AdHoc_ajaxGet(null);
}
});

0 comments on commit 0ccd3d4

Please sign in to comment.