Browse Source

- New getTop SQL request in ContactDAO to get the presences

- Show the presences on the home and chat add
- Add a specific CSS when some active list are focused (using tabindex)
- Align properly the spinner in the roster
- Fix some missing avatar
pull/16/head
Jaussoin Timothée 11 years ago
parent
commit
f20be4c9e3
  1. 19
      app/models/contact/ContactDAO.php
  2. 4
      app/widgets/Chat/Chat.php
  3. 2
      app/widgets/Chats/Chats.php
  4. 23
      app/widgets/Chats/_chats_add.tpl
  5. 17
      app/widgets/Chats/_chats_add_extend.tpl
  6. 2
      app/widgets/Hello/Hello.php
  7. 14
      app/widgets/Hello/hello.tpl
  8. 4
      app/widgets/Menu/_menu_list.tpl
  9. 11
      app/widgets/Roster/_roster_search_results.tpl
  10. 4
      app/widgets/Roster/roster.css
  11. 9
      themes/material/css/list.css

19
app/models/contact/ContactDAO.php

@ -587,7 +587,22 @@ class ContactDAO extends SQL {
order by count desc
limit :tunelenght
) as top
left outer join contact on jidfrom = contact.jid';
left outer join contact on jidfrom = contact.jid
left outer join (
select a.*
from presence a
join (
select jid, min( id ) as id
from presence
where session = :jid
group by jid
) as b on ( a.id = b.id )
) presence on jidfrom = presence.jid
left outer join (
select *
from rosterlink
where session = :jid
) as rosterlink on jidfrom = rosterlink.jid';
$this->prepare(
'Contact',
@ -597,7 +612,7 @@ class ContactDAO extends SQL {
)
);
return $this->run('Contact');
return $this->run('RosterContact');
}
function getStatistics() {

4
app/widgets/Chat/Chat.php

@ -31,7 +31,9 @@ class Chat extends WidgetCommon
if($contact != null
&& !preg_match('#^\?OTR#', $message->body)
&& $message->type != 'groupchat') {
Notification::append('chat|'.$from, $contact->getTrueName(), $message->body, $contact->getPhoto('s'), 4);
$avatar = $contact->getPhoto('s');
if($avatar == false) $avatar = null;
Notification::append('chat|'.$from, $contact->getTrueName(), $message->body, $avatar, 4);
}
RPC::call('movim_fill', $from.'_state', '');

2
app/widgets/Chats/Chats.php

@ -101,6 +101,8 @@ class Chats extends WidgetCommon
$cd = new \Modl\ContactDAO;
$view->assign('top', $cd->getTop(10));
$view->assign('presencestxt', getPresencesTxt());
Dialog::fill($view->draw('_chats_add', true), true);
}

23
app/widgets/Chats/_chats_add.tpl

@ -4,13 +4,22 @@
<li class="subheader condensed">{$c->__('chats.frequent')}</li>
{loop="$top"}
<li class="condensed" onclick="Chats_ajaxOpen('{$value->jid}'); Dialog.clear()">
<span class="icon bubble">
<img
class="avatar"
src="{$value->getPhoto('s')}"
alt="avatar"
/>
</span>
{$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="md md-person"></i>
</span>
{/if}
<span>{$value->getTrueName()}</span>
<p class="wrap">{$value->jid}</p>
</li>

17
app/widgets/Chats/_chats_add_extend.tpl

@ -4,13 +4,16 @@
<li class="subheader">{$value->groupname}</li>
{/if}
<li class="condensed" onclick="Chats_ajaxOpen('{$value->jid}'); Dialog.clear()">
<span class="icon bubble">
<img
class="avatar"
src="{$value->getPhoto('s')}"
alt="avatar"
/>
</span>
{$url = $value->getPhoto('s')}
{if="$url"}
<span class="icon bubble">
<img src="{$url}">
</span>
{else}
<span class="icon bubble color {$value->jid|stringToColor}">
<i class="md md-person"></i>
</span>
{/if}
<span>{$value->getTrueName()}</span>
<p class="wrap">{$value->jid}</p>
</li>

2
app/widgets/Hello/Hello.php

@ -22,5 +22,7 @@ class Hello extends WidgetCommon
$pd = new \Modl\PostnDAO;
$this->view->assign('news', $pd->getAllPosts(false, 0, 4));
$this->view->assign('presencestxt', getPresencesTxt());
}
}

14
app/widgets/Hello/hello.tpl

@ -2,15 +2,23 @@
<ul class="flex active middle">
<li class="subheader block large">Active contacts</li>
{loop="$top"}
<li class="block action {if="$value->getPlace()"}condensed{/if}"
<li tabindex="{$key+1}" class="block action {if="$value->getPlace()"}condensed{/if}"
onclick="Hello_ajaxChat('{$value->jid}')">
{$url = $value->getPhoto('s')}
{if="$url"}
<span class="icon bubble {if="isset($presence)"}status {$presence}{/if}">
<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}">
<span
class="icon bubble color {$value->jid|stringToColor}
{if="$value->value"}
status {$presencestxt[$value->value]}
{/if}">
<i class="md md-person"></i>
</span>
{/if}

4
app/widgets/Menu/_menu_list.tpl

@ -5,7 +5,9 @@
{/if}
{loop="$items"}
<li class="condensed" data-id="{$value->nodeid}"
<li
tabindex="{$key+1}"
class="condensed" data-id="{$value->nodeid}"
{if="$value->title != null"}
title="{$value->title|strip_tags}"
{else}

11
app/widgets/Roster/_roster_search_results.tpl

@ -1,7 +1,16 @@
<ul class="active">
{loop="$contacts"}
<li class="condensed" onclick="Roster.setFound('{$value->jid}')">
<span class="icon bubble"><img src="{$value->getPhoto('m')}"></span>
{$url = $value->getPhoto('s')}
{if="$url"}
<span class="icon bubble">
<img src="{$url}">
</span>
{else}
<span class="icon bubble color {$value->jid|stringToColor}">
<i class="md md-person"></i>
</span>
{/if}
<span>{$value->getTrueName()}</span>
<p>{$value->jid}</p>
</li>

4
app/widgets/Roster/roster.css

@ -76,8 +76,8 @@
}
#roster ul#rosterlist > div#spinner{
width: 150px;
position: relative;
margin: 50% auto;
overflow: visible;
text-align: center;
margin: 50% 0;
}

9
themes/material/css/list.css

@ -67,8 +67,15 @@ ul li.subheader {
ul.active li:hover:not(.subheader),
ul.active.all li:hover,
ul.active li.active:not(.subheader) {
background-color: rgba(0, 0, 0, 0.05);
background-color: rgba(0, 0, 0, 0.03);
cursor: pointer;
transition: background-color .2s ease-in-out;
}
ul.active li:focus:not(.subheader),
ul.active.all li:focus,
ul.active li.active:not(.subheader) {
background-color: rgba(0, 0, 0, 0.07);
}
.dark ul.active li:hover:not(.subheader),

Loading…
Cancel
Save