Browse Source

- merge with edhelas

pull/16/head
Christine Ho 11 years ago
parent
commit
d03c82f4a0
  1. 7
      app/widgets/Chat/_chat.tpl
  2. 7
      app/widgets/Chat/chat.css
  3. 2
      app/widgets/Header/_header_main.tpl
  4. 2
      app/widgets/Login/Login.php
  5. 4
      app/widgets/Login/_login_sessions.tpl
  6. 4
      app/widgets/Login/login.css
  7. 4
      app/widgets/Login/login.tpl
  8. 2
      app/widgets/Navigation/Navigation.php
  9. 12
      app/widgets/Navigation/navigation.tpl
  10. 86
      app/widgets/Presence/Presence.php
  11. 4
      app/widgets/Presence/_presence.tpl
  12. 104
      app/widgets/Presence/_presence_list.tpl
  13. 15
      app/widgets/Presence/presence.css
  14. 38
      app/widgets/Presence/presence.js
  15. 18
      app/widgets/PubsubSubscriptionConfig/PubsubSubscriptionConfig.php
  16. 6
      app/widgets/Rooms/_rooms_add.tpl
  17. 4
      app/widgets/Roster/roster.tpl
  18. 4
      app/widgets/Vcard4/_vcard4_form.tpl
  19. 10
      system/User.php
  20. 12
      themes/material/css/form.css
  21. 55
      themes/material/css/list.css

7
app/widgets/Chat/_chat.tpl

@ -5,16 +5,13 @@
</div>
<div class="chat_box">
<ul class="simple thin">
<li>
<li class="action">
<span class="icon gray">
<i class="md md-create"></i>
</span>
<div class="control" onclick="{$send}">
<div class="action" onclick="{$send}">
<i class="md md-send"></i>
</div>
<!--<div class="control" onclick="{$smiley}">
<i class="md md-mood"></i>
</div>-->
<form>
<div>
<textarea

7
app/widgets/Chat/chat.css

@ -13,20 +13,19 @@
}
#chat_widget .chat_box form {
width: calc(100% - 5rem);
width: calc(100% - 1rem);
}
#chat_widget .chat_box form textarea {
margin-bottom: 0;
}
#chat_widget .chat_box .control {
#chat_widget .chat_box div.action {
font-size: 4rem;
color: gray;
margin-top: 3rem;
}
#chat_widget .chat_box .control:hover {
#chat_widget .chat_box div.action:hover {
cursor: pointer;
color: #333;
}

2
app/widgets/Header/_header_main.tpl

@ -6,7 +6,7 @@
</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-speaker-notes"></i></span>
<span class="on_desktop icon"><i class="md md-view-list"></i></span>
<form>
<div>
<div class="select">

2
app/widgets/Login/Login.php

@ -53,6 +53,8 @@ class Login extends WidgetBase
function onConfig($packet)
{
$this->user->createDir();
RPC::call('postLogin', $this->user->getLogin(), Route::urlize('root'));
}

4
app/widgets/Login/_login_sessions.tpl

@ -3,8 +3,8 @@
<br />
<ul class="active">
{loop="$sessions"}
<li id="{$value->jid}">
<div class="control">
<li id="{$value->jid}" class="action">
<div class="action">
<i onclick="Login.removeSession('{$value->jid}')" class="fa fa-times"></i>
</div>
<span onclick="Login.choose('{$value->jid}')" class="icon bubble">

4
app/widgets/Login/login.css

@ -46,6 +46,10 @@ body main {
min-height: 0;
}
#login_widget form ul input {
margin: 0;
}
ul.admin {
position: relative;
text-align: center;

4
app/widgets/Login/login.tpl

@ -25,8 +25,8 @@
</div>
<div>
<ul class="simple thin">
<li>
<div class="control">
<li class="action">
<div class="action">
<input
type="submit"
disabled

2
app/widgets/Navigation/Navigation.php

@ -4,10 +4,10 @@ class Navigation extends WidgetCommon
{
function load()
{
}
function display()
{
$this->view->assign('page', $this->_view);
}
}

12
app/widgets/Navigation/navigation.tpl

@ -1,27 +1,27 @@
<ul class="active divided">
<li>
<div class="on_mobile control">
<li class="action">
<div class="action on_mobile">
<i onclick="MovimTpl.toggleMenu()" class="md md-arrow-back"></i>
</div>
<span class="icon bubble"><i class="md md-cloud-queue"></i></span>
Movim
<span>Movim</span>
</li>
<a class="classic" href="{$c->route('root')}">
<li>
<li {if="$page == 'main'"}class="active"{/if}>
<span class="icon"><i class="md md-view-list"></i></span>
<span data-key="news" class="counter"></span>
<span>{$c->__('page.news')}</span>
</li>
</a>
<a class="classic" href="{$c->route('contact')}">
<li>
<li {if="$page == 'contact'"}class="active"{/if}>
<span class="icon"><i class="md md-people"></i></span>
<span class="counter"></span>
<span>{$c->__('page.contacts')}</span>
</li>
</a>
<a class="classic" href="{$c->route('chat')}">
<li>
<li {if="$page == 'chat'"}class="active"{/if}>
<span class="icon"><i class="md md-forum"></i></span>
<span data-key="chat" class="counter"></span>
<span>{$c->__('page.chats')}</span>

86
app/widgets/Presence/Presence.php

@ -31,7 +31,7 @@ class Presence extends WidgetBase
function load()
{
//$this->addcss('presence.css');
$this->addcss('presence.css');
$this->addjs('presence.js');
$this->registerEvent('mypresence', 'onMyPresence');
}
@ -41,7 +41,7 @@ class Presence extends WidgetBase
$html = $this->preparePresence();
RPC::call('movim_fill', 'presence_widget', $html);
Notification::append(null, $this->__('status.updated'));
RPC::call('setPresenceActions');
RPC::call('Presence.refresh');
RPC::call('movim_remove_class', '#presence_widget', 'unfolded');
}
@ -51,59 +51,55 @@ class Presence extends WidgetBase
BASE_URI."index.php?q=disconnect");
}
private function setPresence($show = false, $status = false)
function ajaxSet($form = false)
{
Dialog::fill('');
// We update the cache with our status and presence
$presence = Cache::c('presence');
if($form == false) {
// We update the cache with our status and presence
$presence = Cache::c('presence');
if($show == false) $show = $presence['show'];
if($status == false) $status = $presence['status'];
$value = $presence['show'];
$status = $presence['status'];
if($presence == null || !isset($presence['show']) || $presence['show'] == '')
$show = 'chat';
if($presence == null || !isset($presence['show']) || $presence['show'] == '')
$value = 'chat';
if($presence == null|| !isset($presence['status']) || $presence['status'] == '')
$status = 'Online with Movim';
if($presence == null|| !isset($presence['status']) || $presence['status'] == '')
$status = 'Online with Movim';
} else {
$status = $form['status'];
$value = $form['value'];
}
if(in_array($value, array('chat', 'away', 'dnd', 'xa'))) {
switch($value) {
case 'chat':
$p = new Chat;
$p->setStatus($status)->request();
break;
case 'away':
$p = new Away;
$p->setStatus($status)->request();
break;
case 'dnd':
$p = new DND;
$p->setStatus($status)->request();
break;
case 'xa':
$p = new XA;
$p->setStatus($status)->request();
break;
}
}
Cache::c(
'presence',
array(
'status' => $status,
'show' => $show
'show' => $value
)
);
switch($show) {
case 'chat':
$p = new Chat;
$p->setStatus($status)->request();
break;
case 'away':
$p = new Away;
$p->setStatus($status)->request();
break;
case 'dnd':
$p = new DND;
$p->setStatus($status)->request();
break;
case 'xa':
$p = new XA;
$p->setStatus($status)->request();
break;
}
}
function ajaxSetPresence($show = false)
{
$this->setPresence($show, false);
}
function ajaxSetStatus($status)
{
$this->setPresence(false, $status);
}
function ajaxLogout()
{
$session = \Sessionx::start();
@ -143,7 +139,7 @@ class Presence extends WidgetBase
function ajaxOpenDialog()
{
Dialog::fill($this->preparePresenceList());
RPC::call('setPresenceActions');
RPC::call('Presence.refresh');
}
function preparePresence()
@ -196,10 +192,6 @@ class Presence extends WidgetBase
$presencetpl->assign('p', $p);
$presencetpl->assign('txt', $txt);
$presencetpl->assign('txts', $txts);
$presencetpl->assign('callchat', $this->call('ajaxSetPresence', "'chat'"));
$presencetpl->assign('callaway', $this->call('ajaxSetPresence', "'away'"));
$presencetpl->assign('calldnd', $this->call('ajaxSetPresence', "'dnd'"));
$presencetpl->assign('callxa', $this->call('ajaxSetPresence', "'xa'"));
$presencetpl->assign('calllogout', $this->call('ajaxLogout'));
$html = $presencetpl->draw('_presence_list', true);

4
app/widgets/Presence/_presence.tpl

@ -1,5 +1,5 @@
<li onclick="{$dialog}" class="condensed">
<div class="control">
<li onclick="{$dialog}" class="condensed action">
<div class="action">
<i class="md md-edit"></i>
</div>
<span class="icon bubble" style="background-image: url({$me->getPhoto('m')})"></span>

104
app/widgets/Presence/_presence_list.tpl

@ -1,45 +1,83 @@
<section>
<ul class="active thin">
<li class="subheader">{$c->__('status.status')}</li>
<li>
<span class="icon"><i class="md md-mode-edit"></i></span>
<form>
<div>
<textarea
class="status"
spellcheck="false"
placeholder="{$c->__('status.here')}"
onload="movim_textarea_autoheight(this);"
onkeyup="movim_textarea_autoheight(this);">{if="isset($p)"}{$p->status}{/if}</textarea>
<label>{$c->__('status.here')}</label>
</div>
</form>
</li>
<li onclick="{$callchat}">
<span class="icon bubble color small green"></span>
{$txt[1]}
</li>
<li onclick="{$callaway}">
<span class="icon bubble color small orange"></span>
{$txt[2]}
</li>
<li onclick="{$calldnd}">
<span class="icon bubble color small red"></span>
{$txt[3]}
</li>
<li onclick="{$callxa}" >
<span class="icon bubble color small purple"></span>
{$txt[4]}
</li>
<form name="presence">
<h3>{$c->__('status.status')}</h3>
<div>
<textarea
spellcheck="false"
name="status"
placeholder="{$c->__('status.here')}"
>{if="isset($p)"}{$p->status}{/if}</textarea>
<label>{$c->__('status.here')}</label>
</div>
<div>
<ul class="active">
<li class="action">
<span class="icon bubble color small green"></span>
<div class="action">
<div class="radio">
<input type="radio" name="value" id="chat" value="chat" {if="$p->value == 1"}checked="checked"{/if}/>
<label for="chat"></label>
</div>
</div>
<span>{$txt[1]}</span>
</li>
<li class="action">
<span class="icon bubble color small orange"></span>
<div class="action">
<div class="radio">
<input type="radio" name="value" id="away" value="away" {if="$p->value == 2"}checked="checked"{/if}/>
<label for="away"></label>
</div>
</div>
<span>{$txt[2]}</span>
</li>
<li class="action">
<span class="icon bubble color small red"></span>
<div class="action">
<div class="radio">
<input type="radio" name="value" id="dnd" value="dnd" {if="$p->value == 3"}checked="checked"{/if}/>
<label for="dnd"></label>
</div>
</div>
<span>{$txt[3]}</span>
</li>
<li class="action">
<span class="icon bubble color small purple"></span>
<div class="action">
<div class="radio">
<input type="radio" name="value" id="xa" value="xa" {if="$p->value == 4"}checked="checked"{/if}/>
<label for="xa"></label>
</div>
</div>
<span>{$txt[4]}</span>
</li>
</ul>
</div>
</form>
<ul class="active">
<li class="subheader">{$c->__('status.disconnect')}</li>
<li onclick="{$calllogout}">
<span class="icon"><i class="md md-exit-to-app"></i></span>
{$c->__('status.disconnect')}
<span>{$c->__('status.disconnect')}</span>
</li>
</ul>
<!--
<div class="element large mini">
<label>{$c->__('chatroom.autojoin_label')}</label>
<div class="checkbox">
<input type="checkbox" id="autojoin" name="autojoin"/>
<label for="autojoin"></label>
</div>
</div>
-->
</section>
<div>
<a onclick="Dialog.clear()" class="button flat">
{$c->__('button.close')}
</a>
<a onclick="Presence_ajaxSet(movim_parse_form('presence')); Dialog.clear();" class="button flat">
{$c->__('button.submit')}
</a>
</div>

15
app/widgets/Presence/presence.css

@ -1,4 +1,15 @@
#presence_widget {
form[name=presence] ul {
margin: 0 -2rem;
}
/*
form[name=presence] li {
padding-left: 7rem;
}
form[name=presence] li span.icon {
left: 1rem;
}*/
/*#presence_widget {
max-width: 15rem;
position: fixed;
top: 0;
@ -145,4 +156,4 @@
margin-top: 1em;
position: initial;
}
*/

38
app/widgets/Presence/presence.js

@ -3,7 +3,7 @@ function postStart() {
// We disable the notifications for a couple of seconds
Notification.inhibit(10);
Presence_ajaxSetPresence();
Presence_ajaxSet();
//Presence_ajaxConfigGet();
Presence_ajaxServerCapsGet();
Presence_ajaxBookmarksGet();
@ -11,11 +11,12 @@ function postStart() {
localStorage.postStart = 0;
}
}
/*
function setPresenceActions() {
var textarea = document.querySelector('textarea.status');
if(textarea != null) {
movim_textarea_autoheight(textarea);
textarea.onkeypress = function(event) {
if(event.keyCode == 13) {
Presence_ajaxSetStatus(this.value);
@ -28,9 +29,40 @@ function setPresenceActions() {
};
}
}
*/
var Presence = {
refresh : function() {
var textarea = document.querySelector('form[name=presence] textarea');
if(textarea != null) {
movim_textarea_autoheight(textarea);
/*textarea.onkeypress = function(event) {
if(event.keyCode == 13) {
Presence_ajaxSetStatus(this.value);
this.blur();
}
};*/
textarea.onkeydown = function(event) {
movim_textarea_autoheight(this);
};
}
var presences = document.querySelectorAll('form ul li');
var i = 0;
while(i < presences.length)
{
presences[i].onclick = function(e) {
this.querySelector('label').click();
}
i++;
}
}
}
MovimWebsocket.attach(function()
{
setPresenceActions();
Presence.refresh();
postStart();
});

18
app/widgets/PubsubSubscriptionConfig/PubsubSubscriptionConfig.php

@ -71,20 +71,20 @@ class PubsubSubscriptionConfig extends WidgetBase
"'".$name."'");
$listhtml .= '
<li>
<li class="action">
<span class="icon bubble color '.stringToColor($s->node).'">
'.firstLetterCapitalize($s->node).'
</span>
<form>
<div class="control padded">
<div class="action">
<div class="checkbox">
<input
type="checkbox"
id="privacy'.$s->node.'"
name="privacy'.$s->node.'"
'.$checked.'
onchange="'.$switch.'"/>
<label for="privacy'.$s->node.'"></label>
<input
type="checkbox"
id="privacy'.$s->node.'"
name="privacy'.$s->node.'"
'.$checked.'
onchange="'.$switch.'"/>
<label for="privacy'.$s->node.'"></label>
</div>
</div>
</form>

6
app/widgets/Rooms/_rooms_add.tpl

@ -3,16 +3,16 @@
<h3>{$c->__('rooms.add')}</h3>
<div>
<label>{$c->__('chatrooms.id')}</label>
<input name="jid" placeholder="chatroom@server.com" type="email" required />
<label>{$c->__('chatrooms.id')}</label>
</div>
<div>
<label>{$c->__('chatrooms.name')}</label>
<input name="name" placeholder="{$c->__('chatrooms.name_placeholder')}" required />
<label>{$c->__('chatrooms.name')}</label>
</div>
<div>
<label>{$c->__('chatrooms.nickname')}</label>
<input name="nick" placeholder="{$me->getTrueName()}" value="{$me->getTrueName()}"/>
<label>{$c->__('chatrooms.nickname')}</label>
</div>
<!--
<div class="element large mini">

4
app/widgets/Roster/roster.tpl

@ -22,13 +22,13 @@
ng-repeat="myjid in group.agroupitems"
ng-if="!myjid.tombstone"
id="{{::myjid.ajid}}"
class="{{myjid.ajiditems.rosterview.inactive}}"
class="{{myjid.ajiditems.rosterview.inactive}} action"
ng-attr-title="{{rosterCtrl.getContactTitle(myjid.ajiditems)}}"
ng-class="{condensed: myjid.ajiditems.status != '' && myjid.ajiditems.status != null }"
ng-class="rosterCtrl.getContactClient(myjid.ajiditems)" >
<div
class="action"
ng-if="myjid.ajiditems.rosterview.tune != '' || myjid.ajiditems.rosterview.type != '' "
class="control"
ng-switch on="myjid.ajiditems.rosterview.type">
<i ng-switch-when="handheld" class="md md-smartphone"></i>
<i ng-switch-when="web" class="md md-language"></i>

4
app/widgets/Vcard4/_vcard4_form.tpl

@ -1,8 +1,8 @@
<ul>
<li class="subheader"> {$c->__('vcard.privacy_title')}</li>
<li class="condensed">
<li class="condensed action">
<form>
<div class="control">
<div class="control action">
<div class="checkbox">
<input
type="checkbox"

10
system/User.php

@ -29,7 +29,6 @@ class User {
/**
* Class constructor. Reloads the user's session or attempts to authenticate
* the user.
* Note that the constructor is private. This class is a singleton.
*/
function __construct()
{
@ -109,6 +108,15 @@ class User {
Session::dispose();
}
function createDir()
{
if(!is_dir($this->userdir)
&& $this->userdir != '') {
mkdir($this->userdir);
touch($this->userdir.'index.html');
}
}
function getLogin()
{
return $this->username;

12
themes/material/css/form.css

@ -111,16 +111,6 @@ form > div > input:required {
box-shadow: none;
}
/* Placing the checkbox and radio */
form > div:not(.control) .checkbox {
margin-top: 5.5rem;
}
form > div .radio {
padding-top: 5.5rem;
}
/* Checkbox element */
form > div .checkbox > input[type="checkbox"],
@ -135,6 +125,7 @@ form > div .checkbox {
margin-left: 1rem;
width: 5rem;
background-color: #939393;
margin: 1.5rem 0;
}
form > div .checkbox:before {
@ -186,6 +177,7 @@ form > div .radio > input[type="radio"] + label {
border-style: solid;
border-color: gray;
transition: box-shadow 0.1s ease;
margin-top: 1.25rem;
}
form > div .radio > input[type="radio"] + label:hover {

55
themes/material/css/list.css

@ -66,6 +66,12 @@ ul.active li.active:not(.subheader) {
cursor: pointer;
}
.dark ul.active li:hover:not(.subheader),
.dark ul.active.all li:hover,
.dark ul.active li.active:not(.subheader) {
background-color: rgba(255, 255, 255, 0.035);
}
ul li.condensed,
ul.thin li.condensed,
ul.thick li.condensed {
@ -95,50 +101,21 @@ ul li span {
white-space: nowrap;
}
ul > li > div.control,
ul > li > form > div.control {
float: right;
text-align: right;
min-width: 5rem;
font-size: 3rem;
line-height: 6rem;
}
ul > li > form > div.control {
margin-top: 1.5rem;
}
ul.thin > li > div.control {
line-height: 3rem;
ul li.action {
padding-right: 7rem;
}
ul.thick > li > div.control {
ul li.action > div.action,
ul li.action > form > div.action {
position: absolute;
top: 50%;
right: 2rem;
margin-top: -2.5rem;
font-size: 3rem;
height: 5rem;
line-height: 5rem;
}
ul li > div.control > * {
margin-left: 2rem;
}
/*
ul.thick li > div.control.bottom {
bottom: 2rem;
}
ul li > div.control + form,
ul li > div.control + p {
padding-right: 6rem;
}
*/
ul li > div.control {
float: right;
min-height: 0;
}
/*
ul li div.control.padded {
padding-top: 2rem;
}
*/
ul li span.info {
float: right;
margin-left: 1rem;

Loading…
Cancel
Save