Browse Source

- merge with the trunk

pull/16/head
Christine Ho 13 years ago
parent
commit
cfde638921
  1. 24
      database.php
  2. 4
      image.php
  3. 12
      loader.php
  4. 30
      system/Cache.php
  5. 3
      system/RPC.php
  6. 1
      system/Session.php
  7. 3
      system/Utils.php
  8. 42
      system/UtilsPicture.php
  9. 31
      system/Widget/WidgetCommon.php
  10. 62
      system/Widget/widgets/Chat/Chat.php
  11. 60
      system/Widget/widgets/ContactCard/ContactCard.php
  12. 90
      system/Widget/widgets/ContactInfo/ContactInfo.php
  13. 43
      system/Widget/widgets/ContactSummary/ContactSummary.php
  14. 2
      system/Widget/widgets/Explore/Explore.php
  15. 53
      system/Widget/widgets/Feed/Feed.php
  16. 7
      system/Widget/widgets/Login/Login.php
  17. 1
      system/Widget/widgets/Logout/Logout.php
  18. 34
      system/Widget/widgets/Node/Node.php
  19. 19
      system/Widget/widgets/Profile/Profile.php
  20. 20
      system/Widget/widgets/ProfileData/ProfileData.php
  21. 48
      system/Widget/widgets/Roster/Roster.php
  22. BIN
      system/Widget/widgets/Roster/img/earth.png
  23. BIN
      system/Widget/widgets/Roster/img/mobile.png
  24. BIN
      system/Widget/widgets/Roster/img/music.png
  25. BIN
      system/Widget/widgets/Roster/img/robot.png
  26. 24
      system/Widget/widgets/Roster/roster.css
  27. 8
      system/Widget/widgets/ServerNodes/ServerNodes.php
  28. 49
      system/Widget/widgets/Vcard/Vcard.php
  29. 53
      system/Widget/widgets/Wall/Wall.php
  30. 1
      themes/movim/css/posts.css
  31. 14
      themes/movim/css/style2.css
  32. 4
      themes/movim/img/default.svg
  33. 95
      themes/movim/img/default1.svg
  34. 95
      themes/movim/img/default2.svg
  35. 95
      themes/movim/img/default3.svg
  36. 95
      themes/movim/img/default4.svg
  37. 95
      themes/movim/img/default5.svg
  38. 95
      themes/movim/img/default6.svg
  39. 95
      themes/movim/img/default7.svg
  40. 6
      themes/movim/node.tpl
  41. 6
      themes/movim/server.tpl

24
database.php

@ -0,0 +1,24 @@
<?php
require('init.php');
$pd = new \modl\PostDAO();
$pd->create();
$nd = new \modl\NodeDAO();
$nd->create();
$cd = new \modl\ContactDAO();
$cd->create();
$cad = new \modl\CapsDAO();
$cad->create();
$prd = new \modl\PresenceDAO();
$prd->create();
$rd = new \modl\RosterLinkDAO();
$rd->create();
$sd = new \modl\SessionDAO();
$sd->create();
echo 'Recreate database... done !';

4
image.php

@ -73,9 +73,7 @@ if (!function_exists('getallheaders')) {
exit;
} elseif($_GET['c'] == '' || $_GET['c'] == 'default') {
display_default();
}
else {
} else {
$user = new User();
if($user->isLogged())
$where = array('jid' => $_GET['c']);

12
loader.php

@ -8,8 +8,8 @@ define('PROPERTIES_PATH', BASE_PATH.'page/properties/');
define('THEMES_PATH', BASE_PATH . 'themes/');
define('USERS_PATH', BASE_PATH . 'user/');
define('DB_DEBUG', true);
define('DB_LOGFILE', BASE_PATH . 'log/queries.log');
//define('DB_DEBUG', true);
//define('DB_LOGFILE', BASE_PATH . 'log/queries.log');
@ -30,6 +30,7 @@ require_once(LIB_PATH . "Datas/RosterLink.php");
require_once(LIB_PATH . "Session.php");
require_once(LIB_PATH . "Utils.php");
require_once(LIB_PATH . "UtilsString.php");
require_once(LIB_PATH . "UtilsPicture.php");
require_once(LIB_PATH . "Cache.php");
require_once(LIB_PATH . "Conf.php");
require_once(LIB_PATH . "Event.php");
@ -58,13 +59,6 @@ require_once(LIB_PATH . "Widget/WidgetBase.php");
require_once(LIB_PATH . "Widget/WidgetCommon.php");
require_once(LIB_PATH . "Widget/WidgetWrapper.php");
/* Jaxl Configuration */
define('JAXL_LOG_PATH', BASE_PATH . 'log/jaxl.log');
define('JAXL_LOG_EVENT', true);
define('JAXL_LOG_LEVEL', 4);
define('JAXL_LOG_ROTATE', false);
// We set the default timezone to the server timezone
date_default_timezone_set(getLocalTimezone());

30
system/Cache.php

@ -108,7 +108,12 @@ class Cache
$md5 = md5($data);
$time = time();
$var = new CacheVar();
$cd = new \modl\CacheDAO();
//$var = $cd->get($cache_key)
$c = new \modl\Cache();
/*$var = new CacheVar();
$query = CacheVar::query()->select()
->where(array(
@ -119,14 +124,16 @@ class Cache
if($result) {
$var = $result[0];
}
}*/
$var->key = $cache_key;
$var->data = $data;
$var->checksum = $md5;
$var->timestamp = $time;
$c->key = $cache_key;
$c->data = $data;
$c->checksum = $md5;
$c->timestamp = $time;
$cd->set($c);
$var->run_query($var->query()->save($var));
//$var->run_query($var->query()->save($var));
}
/**
@ -135,9 +142,13 @@ class Cache
private function read_cache($key)
{
$cache_key = $this->login.':'.$key;
$cd = new \modl\CacheDAO();
$var = $cd->get($cache_key);
$var = new CacheVar();
if($var->load(array('key' => $cache_key))) {
//$var = new CacheVar();
//if($var->load(array('key' => $cache_key))) {
if(isset($var)) {
return unserialize(gzuncompress(base64_decode(str_replace("\\'", "'", $var->data))));
} else {
@ -148,4 +159,3 @@ class Cache
?>

3
system/RPC.php

@ -87,9 +87,6 @@ class RPC
public function handle()
{
if(isset($_GET['do']) && $_GET['do'] == 'poll') {
/*$user = new User();
$xmppSession = Jabber::getInstance($user->getLogin());
$xmppSession->pingServer();*/
moxl\ping();
} else {
$xml = file_get_contents('php://input');

1
system/Session.php

@ -65,7 +65,6 @@ class Session
}
$this->container = $name;
Logger::log(1, "Session: Starting session ".self::$sid);
}
protected function regenerate()

3
system/Utils.php

@ -206,7 +206,8 @@ function prepareDate($time, $hours = true) {
if($hours)
$date .= ' - '. date('H:i', $time);
return $date;
if($time)
return $date;
}
/**

42
system/UtilsPicture.php

@ -0,0 +1,42 @@
<?php
function createThumbnails($jid, $photobin) {
unlink(BASE_PATH.'cache/'.$jid.'_l.jpg');
unlink(BASE_PATH.'cache/'.$jid.'_m.jpg');
unlink(BASE_PATH.'cache/'.$jid.'_s.jpg');
unlink(BASE_PATH.'cache/'.$jid.'_xs.jpg');
createThumbnailSize($photobin, 150, BASE_PATH.'cache/'.$jid.'_l.jpg');
createThumbnailSize($photobin, 120, BASE_PATH.'cache/'.$jid.'_m.jpg');
createThumbnailSize($photobin, 50, BASE_PATH.'cache/'.$jid.'_s.jpg');
createThumbnailSize($photobin, 24, BASE_PATH.'cache/'.$jid.'_xs.jpg');
}
function createThumbnailSize($photobin, $size, $path) {
$thumb = imagecreatetruecolor($size, $size);
$white = imagecolorallocate($thumb, 255, 255, 255);
imagefill($thumb, 0, 0, $white);
$source = imagecreatefromstring(base64_decode($photobin));
$width = imagesx($source);
$height = imagesy($source);
if($width >= $height) {
// For landscape images
$x_offset = ($width - $height) / 2;
$y_offset = 0;
$square_size = $width - ($x_offset * 2);
} else {
// For portrait and square images
$x_offset = 0;
$y_offset = ($height - $width) / 2;
$square_size = $height - ($y_offset * 2);
}
if($source) {
imagecopyresampled($thumb, $source, 0, 0, $x_offset, $y_offset, $size, $size, $square_size, $square_size);
//display_image($hash, "image/jpeg");
imagejpeg($thumb, $path, 95);
}
}

31
system/Widget/WidgetCommon.php

@ -16,6 +16,37 @@
*/
class WidgetCommon extends WidgetBase {
protected function printPost($post) {
if($post->title)
$title = '
<span>
'.$post->title.'
</span><br />';
$html = '
<div class="post " id="'.$post->nodeid.'">
<a href="?q=friend&amp;f='.$post->uri.'">
<img class="avatar" src="'.$post->getContact()->getPhoto('m').'">
</a>
<div id="'.$post->nodeid.'" class="postbubble ">
'.$title.'
<span>
<a href="?q=friend&amp;f='.$post->uri.'">'.$post->getContact()->getTrueName().'</a>
</span>
<span class="date">
'.prepareDate(strtotime($post->published)).'
</span>
<div class="content">
'.prepareString(html_entity_decode($post->content)).'
</div>
</div>
<div class="clear"></div>
</div>
';
return $html;
}
/*
* @desc Prepare a group of messages
* @param array of messages

62
system/Widget/widgets/Chat/Chat.php

@ -61,12 +61,12 @@ class Chat extends WidgetBase
function onMessage($message)
{
if($message->getData('key') == $message->getData('from')) {
$key = $message->getData('from');
$jid = $message->getData('to');
if($message->key == $message->from) {
$key = $message->from;
$jid = $message->to;
} else {
$key = $message->getData('to');
$jid = $message->getData('from');
$key = $message->to;
$jid = $message->from;
}
$query = RosterLink::query()->select()
@ -86,7 +86,7 @@ class Chat extends WidgetBase
'chats',
RPC::cdata($this->prepareChat($contact)));
RPC::call('scrollAllTalks');
} else if(isset($contact) && $message->getData('body') != '') {
} else if(isset($contact) && $message->body != '') {
$html = $this->prepareMessage($message);
@ -203,18 +203,21 @@ class Chat extends WidgetBase
{
$m = new \Message();
$m->key->setval($this->user->getLogin());
$m->to->setval(echapJid($to));
$m->from->setval($this->user->getLogin());
$m = new \modl\Message();
$m->type->setval("chat");
$m->key = $this->user->getLogin();
$m->to = echapJid($to);
$m->from = $this->user->getLogin();
$m->body->setval(rawurldecode($message));
$m->type = 'chat';
$m->published->setval(date('Y-m-d H:i:s'));
$m->delivered->setval(date('Y-m-d H:i:s'));
$m->body = rawurldecode($message);
$m->published = date('Y-m-d H:i:s');
$m->delivered = date('Y-m-d H:i:s');
$m->run_query($m->query()->save($m));
$md = new \modl\MessageDAO();
$md->set($m);
$this->onMessage($m);
@ -268,19 +271,19 @@ class Chat extends WidgetBase
}
function prepareMessage($message) {
if($message->getData('body') != '') {
if($message->body != '') {
$html = '<div class="message ';
if($message->getData('key') == $message->getData('from'))
if($message->key == $message->from)
$html.= 'me';
$content = $message->getData('body');
$content = $message->body;
if(preg_match("#^/me#", $message->getData('body'))) {
if(preg_match("#^/me#", $message->body)) {
$html .= " own ";
$content = "** ".substr($message->getData('body'), 4);
$content = "** ".substr($message->body, 4);
}
$html .= '"><span class="date">'.date('H:i', strtotime($message->getData('published'))).'</span>';
$html .= '"><span class="date">'.date('H:i', strtotime($message->published)).'</span>';
$html.= prepareString(htmlentities($content, ENT_COMPAT, "UTF-8")).'</div>';
return $html;
} else {
@ -290,24 +293,15 @@ class Chat extends WidgetBase
function prepareChat($contact)
{
$query = Message::query()
->where(
array(
'key' => $this->user->getLogin(),
array('to' => $contact->getData('jid') , '|from' => $contact->getData('jid'))
)
)
->orderby('published', true)
->limit(0, 20);
$messages = Message::run_query($query);
$md = new \modl\MessageDAO();
$messages = $md->getContact($contact->getData('jid'));
if(!empty($messages)) {
$messages = array_reverse($messages);
$day = '';
foreach($messages as $m) {
if($day != date('d',strtotime($m->getData('published')))) {
$messageshtml .= '<div class="message presence">'.prepareDate(strtotime($m->getData('published')), false).'</div>';
$day = date('d',strtotime($m->getData('published')));
if($day != date('d',strtotime($m->published))) {
$messageshtml .= '<div class="message presence">'.prepareDate(strtotime($m->published), false).'</div>';
$day = date('d',strtotime($m->published));
}
$messageshtml .= $this->prepareMessage($m);
}

60
system/Widget/widgets/ContactCard/ContactCard.php

@ -44,81 +44,81 @@ class ContactCard extends WidgetCommon
<fieldset>
<legend>'.t('General Informations').'</legend>';
if($this->testIsSet($contact->getData('fn')))
if($this->testIsSet($contact->fn))
$html .= '<div class="element simple">
<label for="fn">'.t('Name').'</label>
<span>'.$contact->getData('fn').'</span>
<span>'.$contact->fn.'</span>
</div>';
if($this->testIsSet($contact->getData('name')))
if($this->testIsSet($contact->name))
$html .= '<div class="element simple">
<label for="name">'.t('Nickname').'</label>
<span>'.$contact->getData('name').'</span>
<span>'.$contact->name.'</span>
</div>';
if($contact->getData('date') != '0000-00-00' && $this->testIsSet($contact->getData('date')))
if($contact->date != '0000-00-00' && $this->testIsSet($contact->date))
$html .= '<div class="element simple">
<label for="day">'.t('Date of Birth').'</label>
<span>'.date('j M Y',strtotime($contact->getData('date'))).'</span>
<span>'.date('j M Y',strtotime($contact->date)).'</span>
</div>';
if($contact->getData('gender') != 'N' && $this->testIsSet($contact->getData('gender')))
if($contact->gender != 'N' && $this->testIsSet($contact->gender))
$html .= '<div class="element simple">
<label for="gender">'.t('Gender').'</label>
<span>'.$gender[$contact->getData('gender')].'</span>
<span>'.$gender[$contact->gender].'</span>
</div>';
if($contact->getData('marital') != 'none' && $this->testIsSet($contact->getData('marital')))
if($contact->marital != 'none' && $this->testIsSet($contact->marital))
$html .= '<div class="element simple">
<label for="marital">'.t('Marital Status').'</label>
<span>'.$marital[$contact->getData('marital')].'</span>
<span>'.$marital[$contact->marital].'</span>
</div>';
if($this->testIsSet($contact->getData('email')))
if($this->testIsSet($contact->email))
$html .= '<div class="element simple">
<label for="url">'.t('Email').'</label>
<a target="_blank" href="mailto:'.$contact->getData('email').'">'.$contact->getData('email').'</a>
<a target="_blank" href="mailto:'.$contact->email.'">'.$contact->email.'</a>
</div>';
if($this->testIsSet($contact->getData('url')))
if($this->testIsSet($contact->url))
$html .= '<div class="element simple">
<label for="url">'.t('Website').'</label>
<a target="_blank" href="'.$contact->getData('url').'">'.$contact->getData('url').'</a>
<a target="_blank" href="'.$contact->url.'">'.$contact->url.'</a>
</div>';
if($this->testIsSet($contact->getData('desc')) && prepareString($contact->getData('desc')) != '')
if($this->testIsSet($contact->desc) && prepareString($contact->desc) != '')
$html .= '<div class="element large simple">
<label for="desc">'.t('About Me').'</label>
<span>'.prepareString($contact->getData('desc')).'</span>
<span>'.prepareString($contact->desc).'</span>
</div>';
if($this->testIsSet($contact->getData('adrlocality')) ||
$this->testIsSet($contact->getData('adrcountry'))) {
if($this->testIsSet($contact->adrlocality) ||
$this->testIsSet($contact->adrcountry)) {
$html .= '</fieldset>
<br />
<fieldset>
<legend>'.t('Geographic Position').'</legend>';
if($this->testIsSet($contact->getData('adrlocality'))) {
if($this->testIsSet($contact->adrlocality)) {
$locality .= '<div class="element simple">
<label for="desc">'.t('Locality').'</label>
<span>'.$contact->getData('adrlocality');
if($contact->getData('adrpostalcode') != 0)
$locality .= ' ('.$contact->getData('adrpostalcode').')';
<span>'.$contact->adrlocality;
if($contact->adrpostalcode != 0)
$locality .= ' ('.$contact->adrpostalcode.')';
$locality .= '</span>
</div>';
$html .= $locality;
}
if($this->testIsSet($contact->getData('adrcountry')))
if($this->testIsSet($contact->adrcountry))
$html .= '<div class="element simple">
<label for="desc">'.t('Country').'</label>
<span>'.$contact->getData('adrcountry').'</span>
<span>'.$contact->adrcountry.'</span>
</div>';
}
$html .= '</fieldset>
<div class="config_button" onclick="'.$this->genCallWidget("ContactSummary","ajaxRefreshVcard", "'".$contact->getData('jid')."'").'"></div>
<div class="config_button" onclick="'.$this->genCallWidget("ContactSummary","ajaxRefreshVcard", "'".$contact->jid."'").'"></div>
</form>';
return $html;
@ -126,15 +126,13 @@ class ContactCard extends WidgetCommon
function build()
{
$query = Contact::query()->select()
->where(array(
'jid' => $_GET['f']));
$contact = Contact::run_query($query);
$cd = new modl\ContactDAO();
$contact = $cd->get($_GET['f']);
?>
<div class="tabelem" title="<?php echo t('Profile'); ?>" id="contactcard" >
<?php
if(isset($contact[0]))
echo $this->prepareContactCard($contact[0]);
if(isset($contact))
echo $this->prepareContactCard($contact);
?>
</div>
<?php

90
system/Widget/widgets/ContactInfo/ContactInfo.php

@ -37,63 +37,51 @@ class ContactInfo extends WidgetCommon
function prepareContactInfo()
{
$query = Contact::query()
->join('Presence',
array('Contact.jid' =>
'Presence.jid'))
->where(array(
'Contact`.`jid' => $_GET['f']));
$user = Contact::run_query($query);
$query = RosterLink::query()
->where(array(
'key' => $this->user->getLogin(),
'jid' => $_GET['f']));
$r = RosterLink::run_query($query);
$cd = new \modl\ContactDAO();
$c = $cd->getRosterItem($_GET['f']);
$html = '';
if(isset($user) && isset($user[0][1]) && isset($r[0]->jid) && $r[0]->jid->getval() != '') {
$contact = $user[0][0];
$presence = $user[0][1]->getPresence();
if(isset($c)) {
// Mood
if($contact->mood->getval() != '') {
if($c->mood) {
$moodarray = getMood();
$mood = '';
foreach(unserialize($contact->mood->getval()) as $m)
foreach(unserialize($c->mood) as $m)
$mood .= $moodarray[$m].',';
$html .= t("I'm ").substr($mood, 0, -1).'<br />';
}
if($c->tuneartist) {
$html .= '<h2>'.t('Listening').'</h2>';
$html .= $c->tuneartist. ' - '.$c->tunetitle.' '.t('on').$c->tunesource;
}
// Last seen
if($user[0][1]->delay->getval() != '0000-00-00 00:00:00' && $this->testIsSet($user[0][1]->delay->getval())) {
if($c->delay) {
$html .= '<h2>'.t('Last seen').'</h2>';
$html .= '<span></span>'.date('j M Y - H:i',strtotime($user[0][1]->delay->getval())).'<br />';
$html .= prepareDate(strtotime($c->delay)).'<br />';
}
// Location
if(($contact->loclatitude->getval() != '' &&
$contact->loclongitude->getval() != '') || $contact->getPlace() != ''
) {
if($c->loclatitude != '' && $c->loclongitude != ''
|| $c->getPlace() != '') {
$html .= '
<h2>'.t('Location').'</h2>';
$html .= prepareDate(strtotime($contact->loctimestamp->getval())).'<br /><br />';
if($contact->getPlace() != '')
$html .= $contact->getPlace().'<br /><br />';
$html .= prepareDate(strtotime($c->loctimestamp)).'<br /><br />';
if($c->getPlace() != '')
$html .= $c->getPlace().'<br /><br />';
if($contact->loclatitude->getval() != '' &&
$contact->loclongitude->getval() != '')
if(isset($c->loclatitude) && isset($c->loclongitude))
$html .= '
<div id="mapdiv" style="width: auto; height: 250px;"></div>
<script>
map = new OpenLayers.Map("mapdiv");
map.addLayer(new OpenLayers.Layer.OSM());
var lonLat = new OpenLayers.LonLat( '.$contact->loclongitude->getval().' ,'.$contact->loclatitude->getval().' )
var lonLat = new OpenLayers.LonLat( '.$c->loclongitude.' ,'.$c->loclatitude.' )
.transform(
new OpenLayers.Projection("EPSG:4326"), // transform from WGS 1984
map.getProjectionObject() // to Spherical Mercator Projection
@ -111,56 +99,52 @@ class ContactInfo extends WidgetCommon
}
// Client informations
if($presence['node'] != '' && $presence['ver'] != '') {
$node = $presence['node'].'#'.$presence['ver'];
if($c->node && $c->ver) {
$node = $c->node.'#'.$c->ver;
$cad = new \modl\CapsDAO();
$caps = $cad->get($node);
$query = \Caps::query()->select()
->where(array(
'node' => $node))
->limit(0, 1);
$data = \Caps::run_query($query);
$clienttype =
array(
'bot' => t('Bot'),
'pc' => t('Desktop'),
'phone' => t('Phone'),
'handheld' => t('Phone'),
'web' => t('Web'),
);
if(isset($data[0])) {
$data = $data[0];
if(isset($caps) && $caps->name != '' && $caps->type != '' ) {
$cinfos = '';
$cinfos .= $data->getData('name').' ('.$clienttype[$data->getData('type')].')<br />';
$cinfos .= $caps->name.' ('.$clienttype[$caps->type].')<br />';
$html .='<h2>'.t('Client Informations').'</h2>' . $cinfos;
}
}
if($contact->jid->getval() != $this->user->getLogin()) {
// Chat button
if($c->jid != $this->user->getLogin()) {
$presences = getPresences();
$html .='<h2>'.t('Actions').'</h2>';
if(isset($presence['presence']) && !in_array($presence['presence'], array(5, 6))) {
if(isset($c->presence) && !in_array($presence['presence'], array(5, 6))) {
$html .= '
<a
class="button tiny icon chat"
href="#"
style="float: left;"
id="friendchat"
onclick="'.$this->genCallWidget("Chat","ajaxOpenTalk", "'".$contact->getData('jid')."'").'"
onclick="'.$this->genCallWidget("Chat","ajaxOpenTalk", "'".$c->jid."'").'"
>
'.$presences[$presence['presence']].' - '.t('Chat').'
'.$presences[$c->presence].' - '.t('Chat').'
</a>';
}
}
}
$html .= '<div style="clear: both;"></div>';
if(isset($r[0]->jid) && $r[0]->jid->getval() != '') {
$html .= '<div style="clear: both;"></div>';
$html .='
<a
class=""
@ -178,7 +162,7 @@ class ContactInfo extends WidgetCommon
<a
class="button tiny icon yes merged left';
if(!isset($presence['presence']) || $presence['presence'] == 5)
if(!isset($c->presence) || $c->presence == 5)
$html .=' left';
$html .= '"
href="#"

43
system/Widget/widgets/ContactSummary/ContactSummary.php

@ -44,39 +44,31 @@ class ContactSummary extends WidgetCommon
$gender = getGender();
$marital = getMarital();
$query = \Presence::query()->select()
->where(array(
'key' => $this->user->getLogin(),
'jid' => $contact->getData('jid')))
->limit(0, 1);
$data = \Presence::run_query($query);
if(isset($data[0]))
$presence = $data[0]->getPresence();
// Contact avatar
$html .= '
<div class="block avatar">
<img src="'.$contact->getPhoto('l').'"/>
</div>';
$presencetxt = getPresencesTxt();
// Contact general infos
$html .= '
<div class="block">
<h1 class="'.$presence['presence_txt'].'">'.$contact->getTrueName().'</h1><br />';
<h1 class="'.$presencetxt[$contact->presence].'">'.$contact->getTrueName().'</h1><br />';
if($this->testIsSet($contact->getData('name')))
$html .= $contact->getData('name').' ';
if($this->testIsSet($contact->name))
$html .= $contact->name.' ';
else
$html .= $contact->getTrueName().' ';
if($this->testIsSet($contact->getData('url')))
$html .= '<br /><a target="_blank" href="'.$contact->getData('url').'">'.$contact->getData('url').'</a>';
if($this->testIsSet($contact->url))
$html .= '<br /><a target="_blank" href="'.$contact->url.'">'.$contact->url.'</a>';
$html .= '<br /><br />
</div>';
if($this->testIsSet($presence['status'])) {
if($this->testIsSet($contact->status)) {
$html .= '
<div
class="block"
@ -88,7 +80,7 @@ class ContactSummary extends WidgetCommon
>';
$html .= '
<div class="textbubble">
'.prepareString($presence['status']).'
'.prepareString($contact->status).'
</div>';
$html .= '
</div>';
@ -99,23 +91,24 @@ class ContactSummary extends WidgetCommon
function build()
{
$query = \Contact::query()->select()
->where(array(
'jid' => $_GET['f']));
$contact = \Contact::run_query($query);
$cd = new modl\ContactDAO();
if($_GET['f'] != $this->user->getLogin())
$contact = $cd->getRosterItem($_GET['f']);
else
$contact = $cd->get($_GET['f']);
?>
<div id="contactsummary">
<?php
if(isset($contact[0])) {
echo $this->prepareContactSummary($contact[0]);
if(isset($contact->photobin)) {
echo $this->prepareContactSummary($contact);
}
else {
$contact = new Contact();
$contact = new modl\Contact();
echo $this->prepareContactSummary($contact);
?>
<script type="text/javascript"><?php $this->callAjax('ajaxRefreshVcard', "'".$_GET['f']."'");?></script>
<script type="text/javascript">setTimeout("<?php $this->callAjax('ajaxRefreshVcard', "'".$_GET['f']."'");?>", 1000);</script>
<?php } ?>
</div>
<?php

2
system/Widget/widgets/Explore/Explore.php

@ -44,7 +44,7 @@ class Explore extends WidgetCommon {
$query = Contact::query()->select()
->where($where)
->orderby('id', true)
//s->orderby('id', true)
->limit(0, $users_limit);
$users = Contact::run_query($query);

53
system/Widget/widgets/Feed/Feed.php

@ -168,53 +168,18 @@ class Feed extends WidgetCommon {
}
function prepareFeed($start) {
$query = RosterLink::query()->where(
array(
'RosterLink`.`key' => $this->user->getLogin(),
array(
'RosterLink`.`rostersubscription!' => 'none',
'RosterLink`.`rostersubscription!' => '',
'RosterLink`.`rostersubscription!' => 'vcard',
'|RosterLink`.`rosterask' => 'subscribe')))
->orderby('RosterLink.group', true);
$contacts = RosterLink::run_query($query);
$rosterc = array();
$commentid = array();
array_push($rosterc, $this->user->getLogin());
foreach($contacts as $c) {
array_push($rosterc, '|'.$c->getData('jid'));
}
$pd = new \modl\PostDAO();
$pl = $pd->getFeed($start+1, 10);
if(empty($rosterc))
$where = array(
'Post`.`parentid' => '',
'Post`.`key' => $this->user->getLogin());
else
$where = array(
'Post`.`parentid' => '',
'Post`.`key' => $this->user->getLogin(),
array('Post`.`jid' => $rosterc));
// We query the last messages
$query = Post::query()
->join('Contact', array('Post.jid' => 'Contact.jid'))
->where($where)
->orderby('Post.updated', true)
->limit($start+1, '10');
$messages = Post::run_query($query);
foreach($pl as $post) {
$html .= $this->printPost($post);
}
// We ask for the HTML of all the posts
$html = $this->preparePosts($messages);
$next = $start + 10;
if(sizeof($messages) > 9 && $html != '') {
if(sizeof($pl) > 9 && $html != '') {
$html .= '
<div class="post">
<div
@ -224,6 +189,7 @@ class Feed extends WidgetCommon {
</div>
</div>';
}
return $html;
}
@ -237,7 +203,10 @@ class Feed extends WidgetCommon {
$html = $this->prepareFeed(-1);
if($html == '')
$html = t("Your feed cannot be loaded.");
$html = '
<div class="message info" style="margin: 1.5em; margin-top: 0em;">'.
t("Your feed cannot be loaded.").'
</div>';
RPC::call('movim_fill', 'feedcontent', RPC::cdata($html));
RPC::commit();
}

7
system/Widget/widgets/Login/Login.php

@ -280,9 +280,10 @@ class Login extends WidgetBase {
<div class="infos">
<?php
$query = CacheVar::query()->where();
$contacts = CacheVar::run_query($query);
echo t('Population').' '.ceil(count($contacts)/2).' • ';
$rd = new \modl\RosterLinkDAO();
$pop = $rd->countAccounts();
echo t('Population').' '.$pop[0].' • ';
?>
<?php echo t('No account yet ?'); ?>
<a href="?q=account">

1
system/Widget/widgets/Logout/Logout.php

@ -92,6 +92,7 @@ class Logout extends WidgetBase
$txt = getPresences();
global $session;
$query = Presence::query()->select()
->where(array(
'key' => $this->user->getLogin(),

34
system/Widget/widgets/Node/Node.php

@ -22,6 +22,16 @@ class Node extends WidgetCommon
{
function WidgetLoad()
{
$this->registerEvent('stream', 'onStream');
}
function onStream($id) {
$html = $this->prepareGroup($id[0], $id[1]);
if($html == '')
$html = t("Your feed cannot be loaded.");
RPC::call('movim_fill', 'node', RPC::cdata($html));
RPC::commit();
}
function ajaxGetItems($server, $node)
@ -31,11 +41,33 @@ class Node extends WidgetCommon
->setNode($node)
->request();
}
function prepareGroup($serverid, $groupid) {
$title = '
<a href="?q=server&s='.$serverid.'">
'.$serverid.'
</a> >
<a href="?q=node&s='.$serverid.'&n='.$groupid.'">
'.$groupid.'
</a> >
'.t('Posts');
$pd = new modl\PostDAO();
$posts = $pd->getGroup($serverid, $groupid);
$html = $title;
foreach($posts as $post) {
$html .= $this->printPost($post);
}
return $html;
}
function build()
{
?>
<div id="node">
<div class="tabelem protect red" id="node" title="<?php echo t('Posts');?>">
<?php echo $this->prepareGroup($_GET['s'], $_GET['n']); ?>
<script type="text/javascript"><?php echo $this->genCallAjax('ajaxGetItems', "'".$_GET['s']."'", "'".$_GET['n']."'"); ?></script>
</div>
<?php

19
system/Widget/widgets/Profile/Profile.php

@ -44,7 +44,6 @@ class Profile extends WidgetCommon
function ajaxSetStatus($status)
{
movim_log("GNAP".$status);
$status = htmlspecialchars(rawurldecode($status));
// We update the cache with our status and presence
$presence = Cache::c('presence');
@ -82,15 +81,13 @@ class Profile extends WidgetCommon
function prepareVcard($vcard = false)
{
$query = Contact::query()->select()
->where(array(
'jid' => $this->user->getLogin()));
$contact = Contact::run_query($query);
$cd = new modl\ContactDAO();
$contact = $cd->get($this->user->getLogin());
$presence = Cache::c('presence');
if(isset($contact[0])) {
$me = $contact[0];
if(isset($contact)) {
$me = $contact;
// My avatar
$html .= '
@ -105,13 +102,13 @@ class Profile extends WidgetCommon
<div class="block">
<h1 style="text-decoration: none;">'.$me->getTrueName().'</h1><br />';
if($this->testIsSet($me->getData('name')))
$html .= $me->getData('name').' ';
if($this->testIsSet($me->name))
$html .= $me->name.' ';
else
$html .= $me->getTrueName().' ';
if($this->testIsSet($me->getData('url')))
$html .= '<br /><a target="_blank" href="'.$me->getData('url').'">'.$me->getData('url').'</a>';
if($this->testIsSet($me->url))
$html .= '<br /><a target="_blank" href="'.$me->url.'">'.$me->url.'</a>';
$html .= '<br /><br />

20
system/Widget/widgets/ProfileData/ProfileData.php

@ -64,7 +64,7 @@ class ProfileData extends WidgetBase
RPC::call('movim_fill', 'mapdata', RPC::cdata($html));
$html = '
<div class="message success">'.t('Location updated').'</div>';
<div class="message success">'.t('Location updated').'</div><br />';
RPC::call('movim_fill', 'maperror', RPC::cdata($html));
RPC::call('movim_delete', 'mapdiv');
RPC::commit();
@ -84,16 +84,11 @@ class ProfileData extends WidgetBase
{
$submit = $this->genCallAjax('ajaxLocationPublish', "getMyPositionData()");
$query = Contact::query()
->select()
->where(
array('jid' => $this->user->getLogin())
);
$c = Contact::run_query($query);
if($c) {
$c = $c[0];
$data = prepareDate(strtotime($c->loctimestamp->getval())).'<br /><br />';
$cd = new modl\ContactDAO();
$c = $cd->get($this->user->getLogin());
if($c->loctimestamp) {
$data = prepareDate(strtotime($c->loctimestamp)).'<br /><br />';
$data .= $c->getPlace();
} else {
$data = '';
@ -107,6 +102,7 @@ class ProfileData extends WidgetBase
<div id="maperror"></div>
<div id="mapdata" style="margin-bottom: 10px;">'.$data.'</div>
<div id="mapdiv" style="width: auto; height: 250px; display: none;"></div>
<div class="clear"></div>
<a
class="button tiny icon add"
onclick="getMyPosition(); this.style.display = \'none\';">'.
@ -117,7 +113,7 @@ class ProfileData extends WidgetBase
style="display: none;"
class="button tiny icon yes merged left"
onclick="'.$submit.' hidePositionChoice();">'.t('Accept').'</a><a
style="display: none;"
style="display: none; margin-top: 1em;"
id="myposrefuse"
onclick="hidePositionChoice();"
class="button tiny icon no merged right">'.t('Cancel').'</a>

48
system/Widget/widgets/Roster/Roster.php

@ -86,7 +86,7 @@ class Roster extends WidgetBase
*
*
*/
function prepareRosterElement($contact, $inner = false)
function prepareRosterElement($contact, $caps = false)
{
$html = '';
@ -106,9 +106,32 @@ class Roster extends WidgetBase
$html .= '
id="roster'.$contact->jid.'"
>';
$type = '';
if($caps) {
foreach($caps as $c) {
if($c->node == $contact->node.'#'.$contact->ver) {
$type = $c->type;
}
}
}
$html .= '<div class="chat on" onclick="'.$this->genCallWidget("Chat","ajaxOpenTalk", "'".$contact->jid."'").'"></div>';
$html .= '<div class="chat on" onclick="'.$this->genCallWidget("Chat","ajaxOpenTalk", "'".$contact->jid."'").'"></div>
<a
if($type == 'handheld')
$html .= '<div class="infoicon mobile"></div>';
if($type == 'web')
$html .= '<div class="infoicon web"></div>';
if($type == 'bot')
$html .= '<div class="infoicon bot"></div>';
if(isset($contact->tuneartist) && $contact->tuneartist != '')
$html .= '<div class="infoicon tune"></div>';
$html .= '<a
title="'.$contact->jid;
if($contact->status != '')
$html .= ' - '.htmlentities($contact->status);
@ -129,7 +152,7 @@ class Roster extends WidgetBase
$html .= ' ('.$contact->ressource.')';
$html .= '</span>
</a>';
$html .= '</li>';
return $html;
@ -143,7 +166,7 @@ class Roster extends WidgetBase
*
*
*/
private function prepareRosterGroup($contacts, &$i)
private function prepareRosterGroup($contacts, &$i, $caps)
{
$j = $i;
// We get the current name of the group
@ -155,10 +178,10 @@ class Roster extends WidgetBase
// We grab all the contacts of the group
$grouphtml = '';
while(isset($contacts[$i]) && $contacts[$i]->group == $currentgroup) {
if(!in_array($contacts[$i]->jid, $duplicate)) {
$grouphtml .= $this->prepareRosterElement($contacts[$i]);
//if(!in_array($contacts[$i]->jid, $duplicate)) {
$grouphtml .= $this->prepareRosterElement($contacts[$i], $caps);
array_push($duplicate, $contacts[$i]->jid);
}
//}
$i++;
}
@ -197,12 +220,17 @@ class Roster extends WidgetBase
$contacts = $contactdao->getRoster();
$html = '';
$rd = new modl\RosterLinkDAO();
$capsdao = new modl\CapsDAO();
$caps = $capsdao->getAll();
if($contacts != false) {
if(count($contacts) != 0) {
$i = 0;
while($i < count($contacts))
$html .= $this->prepareRosterGroup($contacts, $i);
$html .= $this->prepareRosterGroup($contacts, $i, $caps);
} else {
$html .= '<script type="text/javascript">setTimeout(\''.$this->genCallAjax('ajaxRefreshRoster').'\', 1500);</script>';

BIN
system/Widget/widgets/Roster/img/earth.png

After

Width: 16  |  Height: 16  |  Size: 390 B

BIN
system/Widget/widgets/Roster/img/mobile.png

After

Width: 16  |  Height: 16  |  Size: 128 B

BIN
system/Widget/widgets/Roster/img/music.png

After

Width: 16  |  Height: 16  |  Size: 204 B

BIN
system/Widget/widgets/Roster/img/robot.png

After

Width: 16  |  Height: 16  |  Size: 364 B

24
system/Widget/widgets/Roster/roster.css

@ -239,3 +239,27 @@
border-bottom: 1px solid rgba(20, 20, 30, 1);
}
#roster li .infoicon {
width: 18px;
height: 18px;
background-repeat: no-repeat;
float: right;
margin-top: 6px;
margin-right: 2px;
}
#roster li .mobile {
background-image: url('img/mobile.png');
}
#roster li .web {
background-image: url('img/earth.png');
}
#roster li .bot {
background-image: url('img/robot.png');
}
#roster li .tune {
background-image: url('img/music.png');
}

8
system/Widget/widgets/ServerNodes/ServerNodes.php

@ -28,7 +28,7 @@ class ServerNodes extends WidgetCommon
function onDiscoNodes($items)
{
$html = '<ul>';
$html = '<ul class="list">';
foreach($items as $item) {
$html .= '
@ -48,7 +48,7 @@ class ServerNodes extends WidgetCommon
function onDiscoItems($items)
{
$html = '<ul>';
$html = '<ul class="list">';
foreach($items as $item) {
$html .= '
@ -74,8 +74,8 @@ class ServerNodes extends WidgetCommon
function build()
{
?><br /><br /><br /><br />
<div id="servernodes">
?>
<div class="tabelem protect red" id="servernodes" title="<?php echo t('Groups');?>">
<script type="text/javascript"><?php echo $this->genCallAjax('ajaxGetNodes', "'".$_GET['s']."'"); ?></script>
</div>
<?php

49
system/Widget/widgets/Vcard/Vcard.php

@ -50,46 +50,39 @@ class Vcard extends WidgetBase
unset($vcard['month']);
unset($vcard['day']);
$c = new \Contact();
$query = \Contact::query()->select()
->where(array(
'jid' => $this->user->getLogin())
);
$data = \Contact::run_query($query);
if($data) {
$c = $data[0];
}
$c->jid->setval($this->user->getLogin());
$c = new modl\Contact();
$c->jid = $this->user->getLogin();
$date = strtotime($vcard['date']);
$c->date->setval(date('Y-m-d', $date));
$c->date = date('Y-m-d', $date);
$c->name->setval($vcard['name']);
$c->fn->setval($vcard['fn']);
$c->url->setval($vcard['url']);
$c->name = $vcard['name'];
$c->fn = $vcard['fn'];
$c->url = $vcard['url'];
$c->gender->setval($vcard['gender']);
$c->marital->setval($vcard['marital']);
$c->gender = $vcard['gender'];
$c->marital = $vcard['marital'];
$c->email->setval($vcard['email']);
$c->email = $vcard['email'];
$c->adrlocality->setval($vcard['locality']);
$c->adrcountry->setval($vcard['country']);
$c->adrlocality = $vcard['locality'];
$c->adrcountry = $vcard['country'];
$c->phototype->setval($vcard['phototype']);
$c->photobin->setval($vcard['photobin']);
$c->phototype = $vcard['phototype'];
$c->photobin = $vcard['photobin'];
$c->desc->setval(trim($vcard['desc']));
$c->desc = trim($vcard['desc']);
if($vcard['public'] == 'true')
$c->public->setval(1);
$c->public = 1;
else
$c->public->setval(0);
$c->public = 0;
$cd = new modl\ContactDAO();
$cd->set($c);
$c->run_query($c->query()->save($c));
$c->createThumbnails();
$r = new moxl\VcardSet();
$r->setData($vcard)->request();

53
system/Widget/widgets/Wall/Wall.php

@ -59,22 +59,7 @@ class Wall extends WidgetCommon
}
function onStream($from) {
/*$html = '';
$html .= '
<!--<a
class="button tiny icon"
href="#"
style="float: right;"
id="wallfollow"
onclick="'.$this->genCallAjax('ajaxSubscribe', "'".$payload["@attributes"]["from"]."'").'"
>
'.t('Follow').'
</a>
<br /><br />-->
';
*/
$html = $this->prepareFeed(0, $from);
$html = $this->prepareFeed(-1, $from);
RPC::call('movim_fill', 'wall', RPC::cdata($html));
}
@ -83,29 +68,19 @@ class Wall extends WidgetCommon
if(!$from)
$from = $_GET['f'];
$where = array(
'Post`.`key' => $this->user->getLogin(),
'Post`.`jid' => $from,
'Post`.`parentid' => '');
if(isset($_GET['p']))
$where['Post`.`nodeid'] = $_GET['p'];
// We query the last messages
$query = Post::query()
->join('Contact', array('Post.jid' => 'Contact.jid'))
->where($where)
->orderby('Post.updated', true)
->limit($start, '10');
$messages = Post::run_query($query);
// We ask for the HTML of all the posts
$htmlmessages = $this->preparePosts($messages);
$pd = new \modl\PostDAO();
$pl = $pd->getContact($from, $start+1, 10);
// We ask for the HTML of all the posts
foreach($pl as $post) {
$htmlmessages .= $this->printPost($post);
}
$next = $start + 10;
if(sizeof($messages) > 0 && $htmlmessages != false) {
if($start == 0) {
if(count($pl) > 0 && $htmlmessages != false) {
if($start == -1) {
$html .= '
<div class="posthead" style="border-top: 0px;">
<a
@ -127,7 +102,7 @@ class Wall extends WidgetCommon
</div>';
}
$html .= $htmlmessages;
if(sizeof($messages) > 9)
if(count($pl) > 9)
$html .= '
<div class="post">
<div class="older" onclick="'.$this->genCallAjax('ajaxGetFeed', "'".$next."'", "'".$from."'").'; this.parentNode.style.display = \'none\'">'.t('Get older posts').'</div>
@ -156,7 +131,7 @@ class Wall extends WidgetCommon
?>
<div class="tabelem protect orange" id="wall" title="<?php echo t('Feed');?>">
<?php
$wall = $this->prepareFeed(0);
$wall = $this->prepareFeed(-1);
if($wall)
echo $wall;
else {

1
themes/movim/css/posts.css

@ -67,6 +67,7 @@
font-weight: bold;
line-height: 1.5em;
padding-left: 1em;
display: inline-block;
}
.post span a:hover {

14
themes/movim/css/style2.css

@ -509,3 +509,17 @@ table tbody tr td {
vertical-align: middle;
padding: 0.3em;
}
/* List */
ul.list {
list-style-type: none;
}
ul.list li {
border-bottom: 1px solid #EEE;
}
ul.list li a {
padding: 0.7em;
display: block;
}

4
themes/movim/img/default.svg

@ -31,8 +31,8 @@
inkscape:current-layer="layer1"
showgrid="true"
showborder="false"
inkscape:window-width="1920"
inkscape:window-height="1016"
inkscape:window-width="1280"
inkscape:window-height="736"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="1"

95
themes/movim/img/default1.svg

@ -0,0 +1,95 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="600"
height="600"
id="svg2"
version="1.1"
inkscape:version="0.48.3.1 r9886"
sodipodi:docname="default.svg">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.42"
inkscape:cx="-282.14285"
inkscape:cy="120"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
showborder="false"
inkscape:window-width="1280"
inkscape:window-height="736"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="1"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0">
<inkscape:grid
type="xygrid"
id="grid2985"
empspacing="5"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true"
originx="0px"
originy="-3.8281246e-07px" />
</sodipodi:namedview>
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Calque 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(200,-52.362183)">
<rect
style="fill:#442178;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="rect2987"
width="600"
height="600"
x="-200"
y="52.362183" />
<path
sodipodi:type="arc"
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path2989"
sodipodi:cx="100"
sodipodi:cy="312.36218"
sodipodi:rx="140"
sodipodi:ry="140"
d="m 240,312.36218 c 0,77.31987 -62.68014,140 -140,140 -77.319865,0 -140,-62.68013 -140,-140 0,-77.31986 62.680135,-140 140,-140 77.31986,0 140,62.68014 140,140 z" />
<rect
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="rect2993"
width="360"
height="280"
x="-80"
y="452.36218"
ry="80" />
</g>
</svg>

95
themes/movim/img/default2.svg

@ -0,0 +1,95 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="600"
height="600"
id="svg2"
version="1.1"
inkscape:version="0.48.3.1 r9886"
sodipodi:docname="default1.svg">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.42"
inkscape:cx="-282.14285"
inkscape:cy="120"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
showborder="false"
inkscape:window-width="1280"
inkscape:window-height="736"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="1"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0">
<inkscape:grid
type="xygrid"
id="grid2985"
empspacing="5"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true"
originx="0px"
originy="-3.8281246e-07px" />
</sodipodi:namedview>
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Calque 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(200,-52.362183)">
<rect
style="fill:#800033;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="rect2987"
width="600"
height="600"
x="-200"
y="52.362183" />
<path
sodipodi:type="arc"
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path2989"
sodipodi:cx="100"
sodipodi:cy="312.36218"
sodipodi:rx="140"
sodipodi:ry="140"
d="m 240,312.36218 c 0,77.31987 -62.68014,140 -140,140 -77.319865,0 -140,-62.68013 -140,-140 0,-77.31986 62.680135,-140 140,-140 77.31986,0 140,62.68014 140,140 z" />
<rect
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="rect2993"
width="360"
height="280"
x="-80"
y="452.36218"
ry="80" />
</g>
</svg>

95
themes/movim/img/default3.svg

@ -0,0 +1,95 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="600"
height="600"
id="svg2"
version="1.1"
inkscape:version="0.48.3.1 r9886"
sodipodi:docname="default2.svg">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.42"
inkscape:cx="-282.14285"
inkscape:cy="120"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
showborder="false"
inkscape:window-width="1280"
inkscape:window-height="736"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="1"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0">
<inkscape:grid
type="xygrid"
id="grid2985"
empspacing="5"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true"
originx="0px"
originy="-3.8281246e-07px" />
</sodipodi:namedview>
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Calque 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(200,-52.362183)">
<rect
style="fill:#806600;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="rect2987"
width="600"
height="600"
x="-200"
y="52.362183" />
<path
sodipodi:type="arc"
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path2989"
sodipodi:cx="100"
sodipodi:cy="312.36218"
sodipodi:rx="140"
sodipodi:ry="140"
d="m 240,312.36218 c 0,77.31987 -62.68014,140 -140,140 -77.319865,0 -140,-62.68013 -140,-140 0,-77.31986 62.680135,-140 140,-140 77.31986,0 140,62.68014 140,140 z" />
<rect
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="rect2993"
width="360"
height="280"
x="-80"
y="452.36218"
ry="80" />
</g>
</svg>

95
themes/movim/img/default4.svg

@ -0,0 +1,95 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="600"
height="600"
id="svg2"
version="1.1"
inkscape:version="0.48.3.1 r9886"
sodipodi:docname="default3.svg">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.42"
inkscape:cx="-282.14285"
inkscape:cy="120"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
showborder="false"
inkscape:window-width="1280"
inkscape:window-height="736"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="1"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0">
<inkscape:grid
type="xygrid"
id="grid2985"
empspacing="5"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true"
originx="0px"
originy="-3.8281246e-07px" />
</sodipodi:namedview>
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Calque 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(200,-52.362183)">
<rect
style="fill:#aa4400;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="rect2987"
width="600"
height="600"
x="-200"
y="52.362183" />
<path
sodipodi:type="arc"
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path2989"
sodipodi:cx="100"
sodipodi:cy="312.36218"
sodipodi:rx="140"
sodipodi:ry="140"
d="m 240,312.36218 c 0,77.31987 -62.68014,140 -140,140 -77.319865,0 -140,-62.68013 -140,-140 0,-77.31986 62.680135,-140 140,-140 77.31986,0 140,62.68014 140,140 z" />
<rect
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="rect2993"
width="360"
height="280"
x="-80"
y="452.36218"
ry="80" />
</g>
</svg>

95
themes/movim/img/default5.svg

@ -0,0 +1,95 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="600"
height="600"
id="svg2"
version="1.1"
inkscape:version="0.48.3.1 r9886"
sodipodi:docname="default4.svg">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.42"
inkscape:cx="-282.14285"
inkscape:cy="120"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
showborder="false"
inkscape:window-width="1280"
inkscape:window-height="736"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="1"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0">
<inkscape:grid
type="xygrid"
id="grid2985"
empspacing="5"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true"
originx="0px"
originy="-3.8281246e-07px" />
</sodipodi:namedview>
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Calque 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(200,-52.362183)">
<rect
style="fill:#338000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="rect2987"
width="600"
height="600"
x="-200"
y="52.362183" />
<path
sodipodi:type="arc"
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path2989"
sodipodi:cx="100"
sodipodi:cy="312.36218"
sodipodi:rx="140"
sodipodi:ry="140"
d="m 240,312.36218 c 0,77.31987 -62.68014,140 -140,140 -77.319865,0 -140,-62.68013 -140,-140 0,-77.31986 62.680135,-140 140,-140 77.31986,0 140,62.68014 140,140 z" />
<rect
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="rect2993"
width="360"
height="280"
x="-80"
y="452.36218"
ry="80" />
</g>
</svg>

95
themes/movim/img/default6.svg

@ -0,0 +1,95 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="600"
height="600"
id="svg2"
version="1.1"
inkscape:version="0.48.3.1 r9886"
sodipodi:docname="default5.svg">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.42"
inkscape:cx="-282.14285"
inkscape:cy="120"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
showborder="false"
inkscape:window-width="1280"
inkscape:window-height="736"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="1"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0">
<inkscape:grid
type="xygrid"
id="grid2985"
empspacing="5"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true"
originx="0px"
originy="-3.8281246e-07px" />
</sodipodi:namedview>
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Calque 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(200,-52.362183)">
<rect
style="fill:#800000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="rect2987"
width="600"
height="600"
x="-200"
y="52.362183" />
<path
sodipodi:type="arc"
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path2989"
sodipodi:cx="100"
sodipodi:cy="312.36218"
sodipodi:rx="140"
sodipodi:ry="140"
d="m 240,312.36218 c 0,77.31987 -62.68014,140 -140,140 -77.319865,0 -140,-62.68013 -140,-140 0,-77.31986 62.680135,-140 140,-140 77.31986,0 140,62.68014 140,140 z" />
<rect
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="rect2993"
width="360"
height="280"
x="-80"
y="452.36218"
ry="80" />
</g>
</svg>

95
themes/movim/img/default7.svg

@ -0,0 +1,95 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="600"
height="600"
id="svg2"
version="1.1"
inkscape:version="0.48.3.1 r9886"
sodipodi:docname="default6.svg">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.42"
inkscape:cx="-282.14285"
inkscape:cy="120"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
showborder="false"
inkscape:window-width="1280"
inkscape:window-height="736"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="1"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0">
<inkscape:grid
type="xygrid"
id="grid2985"
empspacing="5"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true"
originx="0px"
originy="-3.8281246e-07px" />
</sodipodi:namedview>
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Calque 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(200,-52.362183)">
<rect
style="fill:#162d50;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="rect2987"
width="600"
height="600"
x="-200"
y="52.362183" />
<path
sodipodi:type="arc"
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path2989"
sodipodi:cx="100"
sodipodi:cy="312.36218"
sodipodi:rx="140"
sodipodi:ry="140"
d="m 240,312.36218 c 0,77.31987 -62.68014,140 -140,140 -77.319865,0 -140,-62.68013 -140,-140 0,-77.31986 62.680135,-140 140,-140 77.31986,0 140,62.68014 140,140 z" />
<rect
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="rect2993"
width="360"
height="280"
x="-80"
y="452.36218"
ry="80" />
</g>
</svg>

6
themes/movim/node.tpl

@ -7,16 +7,16 @@
<?php $this->widget('Chat');?>
<div id="head">
<?php //$this->widget('ContactSummary');?>
<?php $this->widget('Profile');?>
</div>
<div id="main">
<div id="left">
<?php //$this->widget('ContactInfo');?>
<?php $this->widget('ProfileData');?>
</div>
<div id="center">
<?php //$this->widget('Tabs');?>
<?php $this->widget('Tabs');?>
<?php //$this->widget('Wall');?>
<?php $this->widget('Node');?>
</div>

6
themes/movim/server.tpl

@ -7,16 +7,16 @@
<?php $this->widget('Chat');?>
<div id="head">
<?php //$this->widget('ContactSummary');?>
<?php $this->widget('Profile');?>
</div>
<div id="main">
<div id="left">
<?php //$this->widget('ContactInfo');?>
<?php $this->widget('ProfileData');?>
</div>
<div id="center">
<?php //$this->widget('Tabs');?>
<?php $this->widget('Tabs');?>
<?php //$this->widget('Wall');?>
<?php $this->widget('ServerNodes');?>
</div>

Loading…
Cancel
Save