diff --git a/app/views/conf.tpl b/app/views/conf.tpl index 1efd05399..1dc48219b 100755 --- a/app/views/conf.tpl +++ b/app/views/conf.tpl @@ -11,6 +11,7 @@ widget('Vcard4');?> widget('Avatar');?> widget('Config');?> + widget('AdHoc');?> widget('ConfigData');?> widget('PubsubSubscriptionConfig');?> diff --git a/app/widgets/AdHoc/AdHoc.php b/app/widgets/AdHoc/AdHoc.php new file mode 100644 index 000000000..85fa6ec80 --- /dev/null +++ b/app/widgets/AdHoc/AdHoc.php @@ -0,0 +1,118 @@ +addjs('adhoc.js'); + $this->registerEvent('adhoc_get_handle', 'onList'); + $this->registerEvent('adhoc_command_handle', 'onCommand'); + $this->registerEvent('adhoc_submit_handle', 'onCommand'); + } + + function onList($package) + { + $list = $package->content; + $html = $this->prepareList($list); + RPC::call('movim_fill', 'adhoc_widget', $html); + RPC::call('AdHoc.refresh'); + } + + function onCommand($package) + { + $command = $package->content; + + $view = $this->tpl(); + + if(isset($command->note)) { + $view->assign('note', $command->note); + + Dialog::fill($view->draw('_adhoc_note', true)); + } + + if(isset($command->x)) { + $xml = new \XMPPtoForm(); + $form = $xml->getHTML($command->x->asXML()); + + $view->assign('form', $form); + $view->assign('attributes', $command->attributes()); + $view->assign('actions', null); + if(isset($command->actions)) { + $view->assign('actions', $command->actions); + } + + Dialog::fill($view->draw('_adhoc_form', true), true); + } + + RPC::call('AdHoc.initForm'); + } + + function prepareList($list) + { + $view = $this->tpl(); + $view->assign('list', $list); + return $view->draw('_adhoc_list', true); + } + + function ajaxGet() + { + $session = \Sessionx::start(); + + $g = new Get; + $g->setTo($session->host) + ->request(); + } + + function ajaxCommand($jid, $node) + { + $c = new Command; + $c->setTo($jid) + ->setNode($node) + ->request(); + } + + function ajaxSubmit($data, $node, $sessionid) + { + $session = \Sessionx::start(); + + $s = new Submit; + $s->setTo($session->host) + ->setNode($node) + ->setData($data) + ->setSessionid($sessionid) + ->request(); + } + + function getIcon($command) + { + $icons = array( + 'http://jabber.org/protocol/admin#delete-user' => 'md-delete', + 'http://jabber.org/protocol/admin#end-user-session' => 'md-stop', + 'http://jabber.org/protocol/admin#change-user-password' => 'md-lock', + 'ping' => 'md-swap-horiz', + 'http://jabber.org/protocol/admin#shutdown' => 'md-settings-power', + 'http://jabber.org/protocol/admin#add-user' => 'md-person-add', + 'http://jabber.org/protocol/admin#user-stats' => 'md-people', + 'uptime' => 'md-access-time', + 'http://jabber.org/protocol/admin#server-buddy' => 'md-stop', + 'http://jabber.org/protocol/admin#get-user-roster' => 'md-format-list-bulleted', + 'http://jabber.org/protocol/admin#get-online-users' => 'md-trending-up', + 'http://jabber.org/protocol/admin#announce' => 'md-notifications', + ); + + if(array_key_exists($command, $icons)) { + return $icons[$command]; + } else { + return 'md-chevron-right'; + } + } + + function display() + { + + } +} diff --git a/app/widgets/AdHoc/_adhoc_form.tpl b/app/widgets/AdHoc/_adhoc_form.tpl new file mode 100644 index 000000000..3573cff4a --- /dev/null +++ b/app/widgets/AdHoc/_adhoc_form.tpl @@ -0,0 +1,32 @@ +
+
+ {$form} +
+
+
+ + {$c->__('button.close')} + + {if="$actions != null"} + {if="isset($actions->next)"} + + {$c->__('button.next')} + + {/if} + {if="isset($actions->previous)"} + + {$c->__('button.previous')} + + {/if} + {if="isset($actions->cancel)"} + + {$c->__('button.cancel')} + + {/if} + {if="isset($actions->complete)"} + + {/if} + {/if} +
diff --git a/app/widgets/AdHoc/_adhoc_list.tpl b/app/widgets/AdHoc/_adhoc_list.tpl new file mode 100644 index 000000000..ac4f34e42 --- /dev/null +++ b/app/widgets/AdHoc/_adhoc_list.tpl @@ -0,0 +1,13 @@ + diff --git a/app/widgets/AdHoc/_adhoc_note.tpl b/app/widgets/AdHoc/_adhoc_note.tpl new file mode 100644 index 000000000..ff5c2f25d --- /dev/null +++ b/app/widgets/AdHoc/_adhoc_note.tpl @@ -0,0 +1,8 @@ +
+

{$note}

+
+
+ + {$c->__('button.close')} + +
diff --git a/app/widgets/AdHoc/adhoc.js b/app/widgets/AdHoc/adhoc.js new file mode 100644 index 000000000..08ed6b591 --- /dev/null +++ b/app/widgets/AdHoc/adhoc.js @@ -0,0 +1,33 @@ +var AdHoc = { + refresh: function() { + var items = document.querySelectorAll('#adhoc_widget li'); + var i = 0; + + while(i < items.length) + { + items[i].onclick = function() { + AdHoc_ajaxCommand(this.dataset.jid, this.dataset.node); + }; + + i++; + } + }, + initForm: function() { + var textareas = document.querySelectorAll('#dialog form[name=command] textarea'); + var i = 0; + + while(i < textareas.length) + { + movim_textarea_autoheight(textareas[i]); + i++; + } + }, + submit: function() { + var form = document.querySelector('#dialog form[name=command]'); + AdHoc_ajaxSubmit(movim_parse_form('command'), form.dataset.node, form.dataset.sessionid); + } +} + +MovimWebsocket.attach(function() { + AdHoc_ajaxGet(); +}); diff --git a/app/widgets/AdHoc/adhoc.tpl b/app/widgets/AdHoc/adhoc.tpl new file mode 100644 index 000000000..f3f2920cc --- /dev/null +++ b/app/widgets/AdHoc/adhoc.tpl @@ -0,0 +1 @@ +
diff --git a/app/widgets/AdHoc/locales.ini b/app/widgets/AdHoc/locales.ini new file mode 100644 index 000000000..919f69877 --- /dev/null +++ b/app/widgets/AdHoc/locales.ini @@ -0,0 +1 @@ +adhoc.title = 'Actions' diff --git a/app/widgets/AdminMain/AdminMain.php b/app/widgets/AdminMain/AdminMain.php index a35a010e0..d7f66ba88 100755 --- a/app/widgets/AdminMain/AdminMain.php +++ b/app/widgets/AdminMain/AdminMain.php @@ -25,7 +25,6 @@ class AdminMain extends WidgetBase $config = $cd->get(); if(isset($form)) { - \movim_log(serialize($form)); if(isset($form['password']) && $form['password'] != '' && $form['repassword'] != '' && $form['password'] == $form['repassword']) { @@ -46,7 +45,6 @@ class AdminMain extends WidgetBase $config->$key = $value; } - \movim_log(serialize($config)); $cd->set($config); //set timezone diff --git a/app/widgets/Chats/_chats.tpl b/app/widgets/Chats/_chats.tpl index 292d63ac2..dc522ef00 100644 --- a/app/widgets/Chats/_chats.tpl +++ b/app/widgets/Chats/_chats.tpl @@ -1,6 +1,6 @@ {if="$chats == null"}
  • - +

    {$c->__('chats.empty')}

  • {/if} diff --git a/app/widgets/Chats/locales.ini b/app/widgets/Chats/locales.ini index 01eaaa805..c58cd2a8a 100644 --- a/app/widgets/Chats/locales.ini +++ b/app/widgets/Chats/locales.ini @@ -1,5 +1,5 @@ [chats] -chats.empty = 'Open a new conversation by clicking on the plus button in the header' +chats.empty = 'Open a new conversation by clicking on the plus button bellow' chats.add = 'Chat with a contact' [message] diff --git a/app/widgets/Dialog/Dialog.php b/app/widgets/Dialog/Dialog.php index 45526b260..ed0e867c7 100644 --- a/app/widgets/Dialog/Dialog.php +++ b/app/widgets/Dialog/Dialog.php @@ -9,10 +9,11 @@ class Dialog extends WidgetBase static function fill($html = '', $scroll = false) { + RPC::call('movim_fill', 'dialog', $html); + if($scroll) { - RPC::call('Dialog.toggleScroll'); + RPC::call('Dialog.addScroll'); } - RPC::call('movim_fill', 'dialog', $html); } function display() diff --git a/app/widgets/Dialog/dialog.js b/app/widgets/Dialog/dialog.js index 607da6950..58d55d114 100644 --- a/app/widgets/Dialog/dialog.js +++ b/app/widgets/Dialog/dialog.js @@ -1,6 +1,6 @@ var Dialog = { - toggleScroll : function() { - movim_toggle_class('#dialog', 'scroll'); + addScroll : function() { + movim_add_class('#dialog', 'scroll'); }, filled : function() { if(document.querySelector('#dialog').innerHTML != '') { return true; } diff --git a/app/widgets/Menu/_menu_list.tpl b/app/widgets/Menu/_menu_list.tpl index d7873897d..d04d5f287 100644 --- a/app/widgets/Menu/_menu_list.tpl +++ b/app/widgets/Menu/_menu_list.tpl @@ -7,7 +7,7 @@ {loop="$items"}