Browse Source

- Add chats button to start a chat or a chatroom

- Improve dialog behaviour
- Improve back button behaviour on ANdroid
pull/16/head
Jaussoin Timothée 11 years ago
parent
commit
226005637a
  1. 7
      app/assets/js/movim_tpl.js
  2. 30
      app/models/contact/ContactDAO.php
  3. 30
      app/widgets/Chats/Chats.php
  4. 30
      app/widgets/Chats/_chats_add.tpl
  5. 0
      app/widgets/Chats/_chats_add_room.tpl
  6. 2
      app/widgets/Chats/chats.tpl
  7. 6
      app/widgets/Chats/locales.ini
  8. 5
      app/widgets/Dialog/Dialog.php
  9. 8
      app/widgets/Dialog/dialog.js
  10. 12
      app/widgets/Header/_header_chat.tpl

7
app/assets/js/movim_tpl.js

@ -79,8 +79,13 @@ var MovimTpl = {
movim_toggle_class('body > nav', 'active');
},
back : function() {
if(movim_has_class('body > nav', 'active')) {
// If a dialog box is shown
if(Dialog.filled()) {
Dialog.clear();
// If the menu is shown
} else if(movim_has_class('body > nav', 'active')) {
movim_toggle_class('body > nav', 'active');
// If the panel is shown
} else if(MovimTpl.isPanel()) {
MovimTpl.hidePanel();
} else {

30
app/models/contact/ContactDAO.php

@ -380,6 +380,7 @@ class ContactDAO extends SQL {
return $this->run('RosterLink');
}
function getRoster() {
$this->_sql = '
select
@ -417,6 +418,35 @@ class ContactDAO extends SQL {
return $this->run('RosterContact');
}
// Get the roster without the presences
function getRosterSimple() {
$this->_sql = '
select
rosterlink.jid,
contact.fn,
contact.name,
contact.nickname,
contact.tuneartist,
contact.tunetitle,
rosterlink.rostername,
rosterlink.groupname,
rosterlink.chaton
from rosterlink
left outer join contact
on rosterlink.jid = contact.jid
where rosterlink.session = :session
order by groupname, rosterlink.jid';
$this->prepare(
'RosterLink',
array(
'session' => $this->_user
)
);
return $this->run('RosterContact');
}
function getRosterChat() {
$this->_sql = '
select * from rosterlink

30
app/widgets/Chats/Chats.php

@ -57,6 +57,36 @@ class Chats extends WidgetCommon
RPC::call('Chats.refresh');
}
/**
* @brief Display the add chat form
*/
function ajaxAdd()
{
$view = $this->tpl();
$cd = new \Modl\ContactDAO;
$contacts = $cd->getRosterSimple();
$view->assign('contacts', $contacts);
Dialog::fill($view->draw('_chats_add', true), true);
}
/**
* @brief Display the add room form
*/
function ajaxAddRoom()
{
$view = $this->tpl();
/*$view->assign('add',
$this->call(
'ajaxAdd',
"movim_parse_form('add')"));
$view->assign('search', $this->call('ajaxDisplayFound', 'this.value'));*/
Dialog::fill($view->draw('_chats_add_room', true));
}
// Join a MUC
function ajaxBookmarkMucJoin($jid, $nickname)
{

30
app/widgets/Chats/_chats_add.tpl

@ -0,0 +1,30 @@
<section class="scroll">
<h3>{$c->__('chats.add')}</h3>
<br />
<ul class="active">
{loop="$contacts"}
{if="$group != $value->groupname"}
<li class="subheader">{$value->groupname}</li>
{/if}
<li onclick="Chats_ajaxOpen('{$value->jid}'); Dialog.clear()">
<span class="icon bubble">
<img
class="avatar"
src="{$value->getPhoto('s')}"
alt="avatar"
/>
</span>
<span>{$value->getTrueName()}</span>
</li>
{$group = $value->groupname}
{/loop}
</ul>
<!--<div id="search_results">
</div>-->
</section>
<div>
<a onclick="Dialog.clear()" class="button flat">
{$c->__('button.close')}
</a>
</div>

0
app/widgets/Chats/_chats_add_room.tpl

2
app/widgets/Chats/chats.tpl

@ -2,7 +2,9 @@
<ul id="chats_widget_list" class="thick active divided">
{$list}
</ul>
<!--
<a class="button action color">
<i class="md md-playlist-add"></i>
</a>
-->
</div>

6
app/widgets/Chats/locales.ini

@ -1,8 +1,12 @@
[chats]
chats.empty = 'Open a new conversation here by clicking on the plus button bellow'
chats.add = 'Chat with a contact'
[message]
message.encrypted = 'Encrypted message'
[chatrooms]
chatrooms.title ='Chatrooms'
chatrooms.title = 'Chatrooms'
[add]
button.chat = 'Chat'

5
app/widgets/Dialog/Dialog.php

@ -7,8 +7,11 @@ class Dialog extends WidgetBase
$this->addjs('dialog.js');
}
static function fill($html = '')
static function fill($html = '', $scroll = false)
{
if($scroll) {
RPC::call('Dialog.toggleScroll');
}
RPC::call('movim_fill', 'dialog', $html);
}

8
app/widgets/Dialog/dialog.js

@ -1,5 +1,13 @@
var Dialog = {
toggleScroll : function() {
movim_toggle_class('#dialog', 'scroll');
},
filled : function() {
if(document.querySelector('#dialog').innerHTML != '') { return true; }
return false;
},
clear : function() {
movim_remove_class('#dialog', 'scroll');
document.querySelector('#dialog').innerHTML = '';
}
}

12
app/widgets/Header/_header_chat.tpl

@ -1,3 +1,15 @@
<ul class="active">
<li onclick="Chats_ajaxAdd()">
<span class="icon">
<i class="md md-person-add"></i>
</span>
</li>
<li onclick="Chats_ajaxAddRoom()">
<span class="icon">
<i class="md md-group-add"></i>
</span>
</li>
</ul>
<span id="menu" class="on_mobile icon" onclick="MovimTpl.toggleMenu()"><i class="md md-menu"></i></span>
<span class="on_desktop icon"><i class="md md-forum"></i></span>
<h2>{$c->__('page.chats')}</h2>
Loading…
Cancel
Save