Browse Source

- Fix several issues in Chats

- Use the :empty CSS selector to put the placeholder (+ JS fix to trim the content)
- Remove useless Notification refresh
- Fix JS fatal error
pull/16/head
Jaussoin Timothée 10 years ago
parent
commit
e6c3c289e4
  1. 14
      app/widgets/Chat/chat.js
  2. 22
      app/widgets/Chats/Chats.php
  3. 15
      app/widgets/Chats/_chats.tpl
  4. 44
      app/widgets/Chats/_chats_add.tpl
  5. 7
      app/widgets/Chats/chats.css
  6. 8
      app/widgets/Chats/chats.js
  7. 13
      app/widgets/Chats/chats.tpl
  8. 12
      app/widgets/Notification/Notification.php

14
app/widgets/Chat/chat.js

@ -6,7 +6,7 @@ var Chat = {
var n = document.querySelector('#chat_textarea');
n.value = n.value + element.dataset.emoji;
n.focus();
Dialog.clear();
Dialog.clear();
},
sendMessage: function(jid, muc)
{
@ -17,7 +17,7 @@ var Chat = {
Chat_ajaxSendMessage(jid, encodeURIComponent(text), muc);
},
appendTextarea: function(value)
{
{
},
notify : function(title, body, image)
{
@ -95,11 +95,13 @@ var Chat = {
message.body = message.body.substr(4);
}
bubble.querySelector('div.bubble div').innerHTML = message.body;
bubble.querySelector('div.bubble span.info').innerHTML = message.published;
if(bubble) {
bubble.querySelector('div.bubble div').innerHTML = message.body;
bubble.querySelector('div.bubble span.info').innerHTML = message.published;
movim_append(id, bubble.outerHTML);
bubble.querySelector('div.bubble').className = 'bubble';
movim_append(id, bubble.outerHTML);
bubble.querySelector('div.bubble').className = 'bubble';
}
}
MovimTpl.scrollPanel();

22
app/widgets/Chats/Chats.php

@ -10,6 +10,7 @@ class Chats extends WidgetBase
{
function load()
{
$this->addcss('chats.css');
$this->addjs('chats.js');
$this->registerEvent('carbons', 'onMessage');
$this->registerEvent('message', 'onMessage');
@ -45,7 +46,7 @@ class Chats extends WidgetBase
if($contacts != null){
$c = $contacts[0];
$chats = Cache::c('chats');
if(array_key_exists($c->jid, $chats)) {
if(is_array($chats) && array_key_exists($c->jid, $chats)) {
RPC::call('movim_replace', $c->jid.'_chat_item', $this->prepareChat($c->jid));
RPC::call('Chats.refresh');
@ -84,18 +85,13 @@ class Chats extends WidgetBase
unset($chats[$jid]);
if(!array_key_exists($jid, $chats)
&& $jid != $this->user->getLogin()) {
if(/*!array_key_exists($jid, $chats)
&& */$jid != $this->user->getLogin()) {
$chats[$jid] = 1;
if($history) $this->ajaxGetHistory($jid);
Cache::c('chats', $chats);
/*
RPC::call('movim_delete', $jid.'_chat_item');
RPC::call('movim_prepend', 'chats_widget_list', $this->prepareChat($jid));
RPC::call('Chats.refresh');*/
RPC::call('Chats.prepend', $jid, $this->prepareChat($jid));
}
}
@ -123,8 +119,12 @@ class Chats extends WidgetBase
$view = $this->tpl();
$cd = new \Modl\ContactDAO;
$view->assign('top', $cd->getTop(10));
$chats = Cache::c('chats');
if(!isset($chats)) $chats = array();
$view->assign('chats', array_keys($chats));
$view->assign('top', $cd->getTop(15));
$view->assign('presencestxt', getPresencesTxt());
Dialog::fill($view->draw('_chats_add', true), true);
@ -148,9 +148,11 @@ class Chats extends WidgetBase
{
$chats = Cache::c('chats');
if(!isset($chats)) $chats = array();
$view = $this->tpl();
$view->assign('chats', array_reverse($chats));
return $view->draw('_chats', true);
}

15
app/widgets/Chats/_chats.tpl

@ -1,14 +1 @@
{if="$chats == null"}
<div class="placeholder icon">
<h1>{$c->__('chats.empty_title')}</h1>
<h4>{$c->__('chats.empty')}</h4>
</div>
{/if}
{loop="$chats"}
{$c->prepareChat($key)}
{/loop}
<a onclick="Chats_ajaxAdd()" class="button action color">
<i class="zmdi zmdi-plus"></i>
</a>
{loop="$chats"}{$c->prepareChat($key)}{/loop}

44
app/widgets/Chats/_chats_add.tpl

@ -3,27 +3,29 @@
<ul class="active" id="add_extend">
<li class="subheader">{$c->__('chats.frequent')}</li>
{loop="$top"}
<li class="condensed {if="$value->last > 60"} inactive{/if}"
onclick="Chats_ajaxOpen('{$value->jid}'); Dialog.clear()">
{$url = $value->getPhoto('s')}
{if="$url"}
<span class="icon bubble
{if="$value->value"}
status {$presencestxt[$value->value]}
{/if}">
<img src="{$url}">
</span>
{else}
<span class="icon bubble color {$value->jid|stringToColor}
{if="$value->value"}
status {$presencestxt[$value->value]}
{/if}">
<i class="zmdi zmdi-account"></i>
</span>
{/if}
<span>{$value->getTrueName()}</span>
<p class="wrap">{$value->jid}</p>
</li>
{if="!in_array($value->jid, $chats)"}
<li class="condensed {if="$value->last > 60"} inactive{/if}"
onclick="Chats_ajaxOpen('{$value->jid}'); Dialog.clear()">
{$url = $value->getPhoto('s')}
{if="$url"}
<span class="icon bubble
{if="$value->value"}
status {$presencestxt[$value->value]}
{/if}">
<img src="{$url}">
</span>
{else}
<span class="icon bubble color {$value->jid|stringToColor}
{if="$value->value"}
status {$presencestxt[$value->value]}
{/if}">
<i class="zmdi zmdi-account"></i>
</span>
{/if}
<span>{$value->getTrueName()}</span>
<p class="wrap">{$value->jid}</p>
</li>
{/if}
{/loop}
<li onclick="Chats_ajaxAddExtend()">
<span class="icon">

7
app/widgets/Chats/chats.css

@ -0,0 +1,7 @@
#chats_widget_list ~ .placeholder {
display: none;
}
#chats_widget_list:empty ~ .placeholder {
display: block;
}

8
app/widgets/Chats/chats.js

@ -1,7 +1,11 @@
var Chats = {
refresh: function() {
var list = document.querySelector('#chats_widget_list');
list.innerHTML = list.innerHTML.trim();
var items = document.querySelectorAll('ul#chats_widget_list li:not(.subheader)');
var i = 0;
while(i < items.length)
{
if(items[i].dataset.jid != null) {
@ -31,8 +35,6 @@ var Chats = {
i++;
}
Notification_ajaxGet();
},
prepend: function(from, html) {
@ -49,7 +51,7 @@ var Chats = {
}
}
movim_add_onload(function(){
movim_add_onload(function(){
Notification.current('chat');
});

13
app/widgets/Chats/chats.tpl

@ -1,3 +1,10 @@
<ul id="chats_widget_list" class="middle active divided spaced">
{$list}
</ul>
<ul id="chats_widget_list" class="middle active divided spaced">{$list}</ul>
<div class="placeholder icon">
<h1>{$c->__('chats.empty_title')}</h1>
<h4>{$c->__('chats.empty')}</h4>
</div>
<a onclick="Chats_ajaxAdd()" class="button action color">
<i class="zmdi zmdi-plus"></i>
</a>

12
app/widgets/Notification/Notification.php

@ -17,7 +17,7 @@ class Notification extends WidgetBase
* @param integer $time The displayed time (in secondes)
* @param integer $action An action
* @return void
*/
*/
static function append($key = null, $title, $body = null, $picture = null, $time = 2, $action = null)
{
// In this case we have an action confirmation
@ -38,7 +38,7 @@ class Notification extends WidgetBase
$explode = explode('|', $key);
$first = reset($explode);
if(array_key_exists($first, $notifs)) {
$notifs[$first]++;
} else {
@ -68,7 +68,7 @@ class Notification extends WidgetBase
*
* @param string $key The key to group the notifications
* @return void
*/
*/
function ajaxClear($key)
{
$session = Session::start();
@ -101,7 +101,7 @@ class Notification extends WidgetBase
/**
* @brief Get all the keys
* @return void
*/
*/
function ajaxGet()
{
$session = Session::start();
@ -114,7 +114,7 @@ class Notification extends WidgetBase
*
* @param string $key
* @return void
*/
*/
function ajaxCurrent($key)
{
$session = Session::start();
@ -124,7 +124,7 @@ class Notification extends WidgetBase
function prepareSnackbar($title, $body = false, $picture = false)
{
$view = $this->tpl();
$view->assign('title', $title);
$view->assign('body', $body);
$view->assign('picture', $picture);

Loading…
Cancel
Save