Browse Source

Disable the buttons and send form in Chat when the user is not connected to the MUC (yet)

pull/531/merge
Timothée Jaussoin 8 years ago
parent
commit
08d8e67a22
  1. 16
      app/models/conference/Conference.php
  2. 42
      app/widgets/Chat/Chat.php
  3. 16
      app/widgets/Chat/_chat.tpl

16
app/models/conference/Conference.php

@ -6,6 +6,7 @@ use \Modl\InfoDAO;
use \Modl\PresenceDAO;
use Movim\Picture;
use Movim\Session;
class Conference extends Model
{
@ -47,6 +48,21 @@ class Conference extends Model
return $pd->countJid($this->conference);
}
public function checkConnected()
{
$pd = new \Modl\PresenceDAO;
if (!$this->nick) {
$session = Session::start();
$resource = $session->get('username');
} else {
$resource = $this->nick;
}
return ($pd->getMyPresenceRoom($this->conference) != null
|| $pd->getPresence($this->conference, $resource) != null);
}
public function getPhoto($size = 'l')
{
$sizes = [

42
app/widgets/Chat/Chat.php

@ -34,14 +34,15 @@ class Chat extends \Movim\Widget\Base
$this->registerEvent('message', 'onMessage');
$this->registerEvent('receiptack', 'onMessage');
$this->registerEvent('displayed', 'onMessage');
$this->registerEvent('mamresult', 'onMessageHistory');
$this->registerEvent('composing', 'onComposing');
$this->registerEvent('paused', 'onPaused');
$this->registerEvent('gone', 'onGone');
$this->registerEvent('subject', 'onConferenceSubject');
$this->registerEvent('mamresult', 'onMessageHistory', 'chat');
$this->registerEvent('composing', 'onComposing', 'chat');
$this->registerEvent('paused', 'onPaused', 'chat');
$this->registerEvent('gone', 'onGone', 'chat');
$this->registerEvent('subject', 'onConferenceSubject', 'chat');
$this->registerEvent('muc_getconfig_handle', 'onRoomConfig');
$this->registerEvent('muc_setconfig_handle', 'onRoomConfigSaved');
$this->registerEvent('muc_getconfig_handle', 'onRoomConfig', 'chat');
$this->registerEvent('muc_setconfig_handle', 'onRoomConfigSaved', 'chat');
$this->registerEvent('presence_muc_handle', 'onMucConnected', 'chat');
$this->registerEvent('bob_request_handle', 'onSticker');
//$this->registerEvent('presence', 'onPresence');
@ -155,6 +156,11 @@ class Chat extends \Movim\Widget\Base
$this->ajaxGetRoom($packet->content->jidfrom);
}
function onMucConnected($packet)
{
$this->ajaxGetRoom($packet->content->jid);
}
function onRoomConfig($packet)
{
list($config, $room) = array_values($packet->content);
@ -565,37 +571,23 @@ class Chat extends \Movim\Widget\Base
$jid = echapJS($jid);
$view->assign('smiley', $this->call('ajaxSmiley'));
$view->assign('emoji', prepareString('😀'));
$view->assign('muc', $muc);
$view->assign('anon', false);
if($muc) {
$md = new \Modl\MessageDAO;
$s = $md->getRoomSubject($jid);
$cd = new \Modl\ConferenceDAO;
$c = $cd->get($jid);
$pd = new \Modl\PresenceDAO;
$p = $pd->getMyPresenceRoom($jid);
$view->assign('room', $jid);
$view->assign('subject', $s);
$view->assign('presence', $p);
$view->assign('conference', $c);
$view->assign('subject', $md->getRoomSubject($jid));
$view->assign('presence', $pd->getMyPresenceRoom($jid));
$view->assign('conference', $cd->get($jid));
} else {
$cd = new \Modl\ContactDAO;
$cr = $cd->getRosterItem($jid);
if(isset($cr)) {
$contact = $cr;
} else {
$contact = $cd->get($jid);
}
$view->assign('contact', $contact);
$view->assign('jid', $jid);
$view->assign('contact', isset($cr) ? $cr : $cd->get($jid));
}
return $view->draw('_chat', true);

16
app/widgets/Chat/_chat.tpl

@ -1,5 +1,6 @@
<header class="fixed">
{if="$muc"}
{$connected = $conference->checkConnected()}
<ul class="list middle">
<li>
<span id="back" class="primary icon active"
@ -28,18 +29,20 @@
</span>
{/if}
<span class="control icon show_context_menu active">
<span class="control icon show_context_menu active {if="!$connected"}disabled{/if}">
<i class="zmdi zmdi-more-vert"></i>
</span>
<span
title="{$c->__('button.close')}"
class="control icon active"
class="control icon active {if="!$connected"}disabled{/if}"
onclick="Rooms_ajaxExit('{$room}'); MovimTpl.hidePanel(); {if="$anon"}Presence_ajaxLogout(){/if}">
<i class="zmdi zmdi-close"></i>
</span>
<span class="control icon active" onclick="Rooms_ajaxList('{$jid|echapJS}')">
<span
class="control icon active {if="!$connected"}disabled{/if}"
onclick="Rooms_ajaxList('{$jid|echapJS}')">
<i class="zmdi zmdi-accounts"></i>
</span>
@ -48,7 +51,10 @@
{else}
<p class="line">{$room}</p>
{/if}
{if="$subject != null"}
{if="!$connected"}
<p>{$c->__('button.connecting')}…</p>
{elseif="$subject != null"}
<p class="line" title="{$subject->subject}">{$subject->subject|addUrls}</p>
{else}
<p class="line">{$room}</p>
@ -143,7 +149,7 @@
</div>
<div class="chat_box">
<ul class="list">
<li>
<li class="{if="$muc && !$connected"}disabled{/if}">
{if="!$muc"}
<span class="primary icon gray emojis_open" onclick="Stickers_ajaxShow('{$jid}')">
<img alt=":smiley:" class="emoji large" src="{$c->getSmileyPath('1f603')}">

Loading…
Cancel
Save