Browse Source

- Compress more the avatars (jpeg 0.8)

- Fix the 'active' class distribution between the chatrooms and the chats 
- Set some PEP nodes to access_model = presence + fix Init
- Clean some old code
- Fix the avatars display in the rooms
pull/16/head
Jaussoin Timothée 11 years ago
parent
commit
69aa4a656e
  1. 6
      app/models/contact/Contact.php
  2. 32
      app/models/contact/ContactDAO.php
  3. 2
      app/widgets/Avatar/avatar.js
  4. 12
      app/widgets/Chat/Chat.php
  5. 4
      app/widgets/Chats/Chats.php
  6. 10
      app/widgets/Chats/chats.js
  7. 20
      app/widgets/Init/Init.php
  8. 16
      app/widgets/Init/init.js
  9. 2
      app/widgets/Rooms/Rooms.php
  10. 6
      app/widgets/Rooms/rooms.js

6
app/models/contact/Contact.php

@ -63,6 +63,8 @@ class Contact extends Model {
protected $skype;
protected $yahoo;
protected $avatarhash;
// Datetime
public $created;
public $updated;
@ -133,7 +135,7 @@ class Contact extends Model {
"locbuilding" :
{"type":"string", "size":128 },
"loctext" :
{"type":"string", "size":128 },
{"type":"text" },
"locuri" :
{"type":"string", "size":128 },
"loctimestamp" :
@ -144,6 +146,8 @@ class Contact extends Model {
{"type":"string", "size":128 },
"yahoo" :
{"type":"string", "size":128 },
"avatarhash" :
{"type":"string", "size":128 },
"created" :
{"type":"date" },
"updated" :

32
app/models/contact/ContactDAO.php

@ -87,6 +87,7 @@ class ContactDAO extends SQL {
twitter = :twitter,
skype = :skype,
yahoo = :yahoo,
avatarhash = :avatarhash,
created = :created,
updated = :updated
where contact.jid = :jid';
@ -145,6 +146,8 @@ class ContactDAO extends SQL {
'twitter' => $contact->twitter,
'skype' => $contact->skype,
'yahoo' => $contact->yahoo,
'avatarhash' => $contact->avatarhash,
'created' => $contact->created,
'updated' => date(DATE_ISO8601),
@ -206,6 +209,8 @@ class ContactDAO extends SQL {
skype,
yahoo,
avatarhash,
created,
jid)
@ -257,6 +262,8 @@ class ContactDAO extends SQL {
:skype,
:yahoo,
:avatarhash,
:created,
:jid)';
@ -317,6 +324,8 @@ class ContactDAO extends SQL {
'skype' => $contact->skype,
'yahoo' => $contact->yahoo,
'avatarhash' => $contact->avatarhash,
'created' => date(DATE_ISO8601),
'updated' => date(DATE_ISO8601),
@ -537,7 +546,28 @@ class ContactDAO extends SQL {
return $this->run('RosterContact', 'item');
}
function getPresence($jid) {
function getPresence($jid, $resource) {
$this->_sql = '
select * from contact
right outer join presence on contact.jid = presence.mucjid
where presence.session = :session
and presence.jid = :jid
and presence.resource = :resource
order by mucaffiliation desc';
$this->prepare(
'Presence',
array(
'session' => $this->_user,
'jid' => $jid,
'resource' => $resource
)
);
return $this->run('PresenceContact', 'item');
}
function getPresences($jid) {
$this->_sql = '
select * from contact
right outer join presence on contact.jid = presence.mucjid

2
app/widgets/Avatar/avatar.js

@ -31,7 +31,7 @@ var Avatar = {
}
}
var base64 = canvas.toDataURL('image/jpeg', 0.9);
var base64 = canvas.toDataURL('image/jpeg', 0.8);
var preview = document.querySelector('form[name=avatarform] img');
var input = document.querySelector('input[name="photobin"]');

12
app/widgets/Chat/Chat.php

@ -330,16 +330,10 @@ class Chat extends WidgetCommon
if($message->type == 'groupchat') {
$cd = new \Modl\ContactDAO;
$presences = $cd->getPresence($jid);
$contacts = array();
$contact = $cd->getPresence($jid, $message->resource);
if(!$contact) $contact = new \Modl\Contact;
foreach($presences as $presence) {
$contacts[$presence->resource] = $presence;
}
$view->assign('contacts', $contacts);
} else {
$view->assign('contacts', array());
$view->assign('contact', $contact);
}
return $view->draw('_chat_message', true);

4
app/widgets/Chats/Chats.php

@ -33,8 +33,8 @@ class Chats extends WidgetCommon
} else {
// TODO notification overwrite issue
RPC::call('movim_delete', $from.'_chat_item');
RPC::call('movim_prepend', 'chats_widget_list', $this->prepareChat($from));
RPC::call('Chats.refresh');
$this->ajaxOpen($from);
$n = new Notification;
$n->ajaxGet();

10
app/widgets/Chats/chats.js

@ -6,12 +6,8 @@ var Chats = {
{
if(items[i].dataset.jid != null) {
items[i].onclick = function(e) {
/*if(movim_has_class(this, 'room')) {
Chats_ajaxChatroomJoin(this.dataset.jid, this.dataset.nick);
Chat_ajaxGetRoom(this.dataset.jid);
} else {
Chat_ajaxGet(this.dataset.jid);
}*/
Rooms.refresh();
Chat_ajaxGet(this.dataset.jid);
Chats.reset(items);
Notification_ajaxClear('chat|' + this.dataset.jid);
@ -27,6 +23,8 @@ var Chats = {
}
}
movim_remove_class(items[i], 'active');
i++;
}

20
app/widgets/Init/Init.php

@ -47,16 +47,32 @@ class Init extends WidgetCommon {
Notification::append(null, $notif);
}
function ajaxCreatePersistentStorage($node)
private function createPersistentStorage($node)
{
$p = new CreatePersistentStorage;
$p->setTo($this->user->getLogin())
->setNode($node)
->request();
}
function ajaxCreatePersistentStorage($node)
{
$this->createPersistentStorage($node);
$p = new ConfigurePersistentStorage;
$p->setTo($this->user->getLogin())
->setNode($node)
->request();
}
function ajaxCreatePersistentPresenceStorage($node)
{
$this->createPersistentStorage($node);
$p = new ConfigurePersistentStorage;
$p->setTo($this->user->getLogin())
->setNode($node)
->setAccessPresence()
->request();
}

16
app/widgets/Init/init.js

@ -5,14 +5,14 @@ var Init = {
if(username == null) return;
var jid = username.replace("@", "at");
var init = localStorage.getObject(jid + "_Init") || {};
var init = localStorage.getObject(jid + "_Init2") || {};
if(init.initialized != 'true') {
Init_ajaxCreatePersistentStorage('storage:bookmarks');
Init_ajaxCreatePersistentStorage('urn:xmpp:vcard4');
Init_ajaxCreatePersistentStorage('urn:xmpp:avatar:data');
Init_ajaxCreatePersistentStorage('http://jabber.org/protocol/geoloc');
Init_ajaxCreatePersistentStorage('urn:xmpp:pubsub:subscription');
Init_ajaxCreatePersistentStorage('urn:xmpp:microblog:0');
Init_ajaxCreatePersistentPresenceStorage('urn:xmpp:vcard4');
Init_ajaxCreatePersistentPresenceStorage('urn:xmpp:avatar:data');
Init_ajaxCreatePersistentPresenceStorage('http://jabber.org/protocol/geoloc');
Init_ajaxCreatePersistentPresenceStorage('urn:xmpp:pubsub:subscription');
Init_ajaxCreatePersistentPresenceStorage('urn:xmpp:microblog:0');
}
},
setNode : function(node) {
@ -21,9 +21,9 @@ var Init = {
if(username == null) return;
var jid = username.replace("@", "at");
var init = localStorage.getObject(jid + "_Init") || {};
var init = localStorage.getObject(jid + "_Init2") || {};
init.initialized = 'true';
localStorage.setObject(jid + "_Init", init);
localStorage.setObject(jid + "_Init2", init);
}
}

2
app/widgets/Rooms/Rooms.php

@ -74,7 +74,7 @@ class Rooms extends WidgetCommon
$view = $this->tpl();
$cd = new \Modl\ContactDAO;
$view->assign('list', $cd->getPresence($room));
$view->assign('list', $cd->getPresences($room));
Dialog::fill($view->draw('_rooms_list', true), true);
}

6
app/widgets/Rooms/rooms.js

@ -6,7 +6,9 @@ var Rooms = {
{
if(items[i].dataset.jid != null) {
items[i].onclick = function(e) {
console.log(this);
Chats.refresh();
Notification.current('chat');
if(!movim_has_class(this, 'online')) {
if(this.dataset.nick != null) {
Rooms_ajaxJoin(this.dataset.jid, this.dataset.nick);
@ -21,6 +23,8 @@ var Rooms = {
}
}
movim_remove_class(items[i], 'active');
i++;
}
},

Loading…
Cancel
Save