Browse Source

- Merge with nodpounod

- Fix a SQL request error in ContactDAO
pull/16/head
Jaussoin Timothée 11 years ago
parent
commit
693111ab10
  1. 4
      app/models/contact/ContactDAO.php
  2. 2
      app/widgets/Config/Config.php
  3. 6
      app/widgets/Login/Login.php
  4. 2
      app/widgets/Presence/presence.js
  5. 4
      app/widgets/Roster/Roster.php
  6. 131
      app/widgets/Roster/roster.js
  7. 4
      app/widgets/Roster/roster.tpl
  8. 12
      linker.php

4
app/models/contact/ContactDAO.php

@ -354,7 +354,7 @@ class ContactDAO extends SQL {
function getRoster() {
$this->_sql = '
select
contact.jid,
rosterlink.jid,
contact.fn,
contact.name,
contact.nickname,
@ -414,7 +414,7 @@ class ContactDAO extends SQL {
function getRosterItem($jid, $item = false) {
$this->_sql = '
select
contact.jid,
rosterlink.jid,
contact.fn,
contact.name,
contact.nickname,

2
app/widgets/Config/Config.php

@ -54,7 +54,7 @@ class Config extends WidgetBase
function onConfig(array $data)
{
$this->user->setConfig($data);
RPC::call('movim_reload_this');
//RPC::call('movim_reload_this');
Notification::appendNotification($this->__('config.updated'));
}

6
app/widgets/Login/Login.php

@ -17,6 +17,8 @@
* See COPYING for licensing information.
*/
use Moxl\Xec\Action\Storage\Get;
class Login extends WidgetBase
{
function load()
@ -37,6 +39,10 @@ class Login extends WidgetBase
// http://xmpp.org/extensions/xep-0280.html
\Moxl\Stanza\Carbons::enable();
$s = new Get;
$s->setXmlns('movim:prefs')
->request();
RPC::call('postLogin', $this->user->getLogin(), Route::urlize('root'));
}

2
app/widgets/Presence/presence.js

@ -1,7 +1,7 @@
function postStart() {
if(localStorage.postStart == 1) {
Presence_ajaxSetPresence();
Presence_ajaxConfigGet();
//Presence_ajaxConfigGet();
Presence_ajaxServerCapsGet();
Presence_ajaxBookmarksGet();
localStorage.postStart = 0;

4
app/widgets/Roster/Roster.php

@ -67,7 +67,7 @@ class Roster extends WidgetBase
function onRoster()
{
$results = $this->prepareRoster();
RPC::call('initContacts', $results['contacts']);
RPC::call('initGroups', $results['groups']);
}
@ -144,7 +144,7 @@ class Roster extends WidgetBase
$rd = new \Modl\RosterLinkDAO();
$groups = $rd->getGroups();
if(!in_array("Ungrouped", $groups)) $groups[] = "Ungrouped";
movim_log($groups);
$groups = array_flip($groups);
$result['groups'] = json_encode($groups);

131
app/widgets/Roster/roster.js

@ -14,12 +14,16 @@
$scope.contacts = [];
$scope.groups = [];
//this.ressourcesCount = 0;
//$scope.presenceCount = 0;
/* Dictionaries */
$scope.lookupgroups = {};
$scope.lookupjid = {};
$scope.initContacts = function(list){
for(var i = 0; i<list.length; i++){
console.log("initContacts");
for(var i = 0; i < list.length; i++){
/* New group */
if(!(list[i].groupname in $scope.lookupgroups)){
el = {
@ -44,13 +48,26 @@
}
/* New ressource (can't just push the whole set of same jid because there is no set) */
if(!$scope.isInJidItems(list[i].jid, list[i].ressource)){
//this.ressourcesCount ++;
$scope.pushInPlace(list[i], $scope.lookupjid[list[i].jid].ajiditems, ressourceCompare);
}
}
/*console.log("LOADED");
if(this.ressourcesCount == $scope.lookup.length)
localStorage.setObject("rosterLoaded", true);*/
$scope.$apply();
};
/* $scope.isInGroupItems is only for debugging purpose */
$scope.isInGroupItems = function(group, jid){
l = $scope.lookupgroups[group].agroupitems.length;
for(var i = 0; i < l; i++){
if($scope.lookupgroups[group].agroupitems[i].ajid == jid)
return i;
}
return false;
};
$scope.isInJidItems = function(jid, ressource){
l = $scope.lookupjid[jid].ajiditems.length;
for(var i = 0; i < l; i++){
@ -58,7 +75,7 @@
return true;
}
return false;
}
};
$scope.initGroups = function(list){
for (var i in list){
@ -95,23 +112,25 @@
/* Update dictionnary from the appropriate index */
for(var i=index; i<array.length; i++){
dico[(array[i][key])] = array[i];
dico[array[i][key]] = array[i];
//if(comparer == groupnameCompare){
}
};
$scope.updateContact = function(list){
/* New group */
if(!(list[0].groupname in $scope.lookupgroups)) {
/* Moving to new group */
if(list[0].jid in $scope.lookupjid){
/* Kill jid from old location or whole group if it's the only jid */
oldgroupname = $scope.lookupjid[list[0].jid].ajiditems[0].groupname;
if($scope.lookupgroups[oldgroupname].agroupitems.length == 1)
$scope.lookupgroups[oldgroupname].tombstone = true;
else
$scope.lookupjid[list[0].jid].tombstone = true;
}
if($scope.contacts === null) $scope.contacts = [];
/* Group change */
if((list[0].jid in $scope.lookupjid)
&& !($scope.lookupjid[list[0].jid].ajiditems[0].groupname == list[0].groupname)){
/* Kill jid from old location or whole group if it's the only jid */
oldgroupname = $scope.lookupjid[list[0].jid].ajiditems[0].groupname;
if($scope.lookupgroups[oldgroupname].agroupitems.length == 1)
$scope.lookupgroups[oldgroupname].tombstone = true;
else
$scope.lookupjid[list[0].jid].tombstone = true;
}
/* New group is not in the list */
if(!(list[0].groupname in $scope.lookupgroups)) {
/* Create group */
el = {
'agroup': list[0].groupname,
@ -122,26 +141,27 @@
/* Reference in the localstorage for toggling */
localStorage.setItem("rosterGroup_"+list[0].groupname, true);
}
// Moving from existing group
if(!($scope.lookupjid[list[0].jid].ajiditems[0].groupname == list[0].groupname)){
/* Kill jid from old location or whole group if it's the only jid */
oldgroupname = $scope.lookupjid[list[0].jid].ajiditems[0].groupname;
if($scope.lookupgroups[oldgroupname].agroupitems.length == 1)
$scope.lookupgroups[oldgroupname].tombstone = true;
else
$scope.lookupjid[list[0].jid].tombstone = true;
/* Jid is in the list */
//if(var gi = isInGroupItems(list[0].groupname, list[0].jid) !=== false){
if(list[0].jid in $scope.lookupjid){
//$scope.lookupgroups[list[0].groupname].agroupitems[gi].ajiditems = list
//var gi = $scope.isInGroupItems(list[0].groupname, list[0].jid);
//console.log($scope.lookupgroups[list[0].groupname].agroupitems[gi].ajiditems);
$scope.lookupjid[list[0].jid].aval = list[0].value;
$scope.lookupjid[list[0].jid].ajiditems = list;
$scope.lookupgroups[list[0].groupname].agroupitems.sort(jidAvalCompare);
//console.log($scope.lookupgroups[list[0].groupname].agroupitems[gi].ajiditems);
}
else{
el = {
'ajid': list[0].jid,
'aval': list[0].value,
'ajiditems': list,
'tombstone': false,
};
$scope.pushInPlace(el, $scope.lookupgroups[list[0].groupname].agroupitems, jidAvalCompare);
}
/* Create jid */
el = {
'ajid': list[0].jid,
'aval': list[0].value,
'ajiditems': list,
'tombstone': false,
};
$scope.pushInPlace(el, $scope.lookupgroups[list[0].groupname].agroupitems, jidAvalCompare);
$scope.$apply();
};
@ -219,9 +239,48 @@
});
})();
window.onunload = window.onbeforeunload = function(e){
/*console.log(localStorage.getObject("rosterLoaded"));
if(localStorage.getObject("rosterLoaded") === true){
//console.log("target it");
//console.log(e);
localStorage.setObject('rosterContacts', angular.element(roster).scope().contacts);
localStorage.setObject('lookupjid', angular.element(roster).scope().lookupjid);
localStorage.setObject('lookupgroups', angular.element(roster).scope().lookupgroups);
}
else{
console.log("NOPE");
}*/
//return "poet pouet la";
};
/* Functions to call angular inner functions */
function initContacts(tab){
angular.element(roster).scope().initContacts(JSON.parse(tab));
//console.log(localStorage.getObject("rosterLoaded"));
/*if(localStorage.getObject("rosterLoaded") === null){
localStorage.setObject("rosterLoaded", false);
}*/
if(tab.length == 0)
angular.element(roster).scope().contacts = null;
else{
/*console.log("rosterLoaded");
console.log(localStorage.getObject("rosterLoaded"));
if(localStorage.getObject("rosterLoaded") === true){
angular.element(roster).scope().contacts = localStorage.getObject('rosterContacts');
angular.element(roster).scope().lookupjid = localStorage.getObject('lookupjid');
console.log(angular.element(roster).scope().lookupjid);
angular.element(roster).scope().lookupgroups = localStorage.getObject('lookupgroups');
}
else{*/
angular.element(roster).scope().initContacts(JSON.parse(tab));
//}
}
}
function initGroups(tab){

4
app/widgets/Roster/roster.tpl

@ -2,14 +2,14 @@
<input type="text" name="search" id="rostersearch" autocomplete="off" placeholder="{$c->__('roster.search');}"/>
<ul id="rosterlist" class="{{rosterCtrl.offlineIsShown()}}">
<span ng-hide="contacts.length" class="nocontacts">
<span ng-hide="contacts != null" class="nocontacts">
{$c->__('roster.no_contacts')}
<br />
<br />
<a class="button color green icon users" href="{$c->route('explore')}">{$c->__('page.explore')}</a>
</span>
<div ng-show="contacts.length && !group.tombstone" ng-repeat="group in contacts" id="group{{group.agroup}}" ng-class="{groupshown: rosterCtrl.groupIsShown(group.agroup) == 'true'}" >
<div ng-show="contacts != null && !group.tombstone" ng-repeat="group in contacts" id="group{{group.agroup}}" ng-class="{groupshown: rosterCtrl.groupIsShown(group.agroup) == 'true'}" >
<h1 ng-click="rosterCtrl.showHideGroup(group.agroup)">{{group.agroup}}</h1>
<!--ng-hide="myjid.tombstone == 'true'" -->
<li ng-repeat="myjid in group.agroupitems" ng-hide="myjid.tombstone" id="{{myjid.ajid}}" class="{{myjid.ajiditems[0].rosterview.presencetxt}}" ng-attr-title="{{rosterCtrl.getContactTitle(myjid.ajiditems[0])}}">

12
linker.php

@ -85,12 +85,6 @@ React\Promise\all([$connector('ws://127.0.0.1:8080'), $connector($config->websoc
$xml = \Moxl\API::commit();
\Moxl\API::clear();
if(!empty($xml)) {
$logger->notice("XMPP : Send to XMPP {$xml}");
$conn2->send(trim($xml));
}
$obj = new \StdClass;
$obj->func = 'message';
$obj->body = \RPC::commit();
@ -101,6 +95,12 @@ React\Promise\all([$connector('ws://127.0.0.1:8080'), $connector($config->websoc
if(!empty($obj->body)) {
$conn1->send(json_encode($obj));
}
if(!empty($xml)) {
$logger->notice("XMPP : Send to XMPP {$xml}");
$conn2->send(trim($xml));
}
});
$conn2->on('error', function($msg) use ($conn1, $logger, $conn2, $loop) {

Loading…
Cancel
Save