40 changed files with 642 additions and 309 deletions
-
10app/assets/js/movim_tpl.js
-
11app/controllers/ChatController.php
-
2app/helpers/StringHelper.php
-
18app/models/contact/ContactDAO.php
-
14app/views/chat.tpl
-
1app/views/conf.tpl
-
7app/views/contact.tpl
-
7app/views/main.tpl
-
4app/widgets/ConfigData/ConfigData.php
-
102app/widgets/ConfigData/configdata.tpl
-
48app/widgets/Contact/Contact.php
-
47app/widgets/Contact/_contact.tpl
-
23app/widgets/Contact/_contact_explore.tpl
-
32app/widgets/Contact/_contact_header.tpl
-
3app/widgets/Contact/locales.ini
-
2app/widgets/Explore/Explore.php
-
31app/widgets/Header/Header.php
-
6app/widgets/Header/_header_chat.tpl
-
12app/widgets/Header/_header_contact.tpl
-
6app/widgets/Header/_header_main.tpl
-
1app/widgets/Header/header.tpl
-
3app/widgets/Menu/Menu.php
-
2app/widgets/Menu/_menu_refresh.tpl
-
15app/widgets/Navigation/navigation.tpl
-
27app/widgets/Roster/Roster.php
-
30app/widgets/Roster/_roster_search.tpl
-
9app/widgets/Roster/_roster_search_results.tpl
-
5app/widgets/Roster/roster.js
-
11app/widgets/Roster/roster.tpl
-
328app/widgets/Vcard4/_vcard4_form.tpl
-
2locales/locales.ini
-
1system/Route.php
-
6system/controllers/BaseController.php
-
22system/template/TplPageBuilder.php
-
12system/widget/WidgetBase.php
-
26system/widget/WidgetWrapper.php
-
24themes/material/css/article.css
-
12themes/material/css/form.css
-
2themes/material/css/list.css
-
27themes/material/css/style.css
@ -0,0 +1,11 @@ |
|||
<?php |
|||
|
|||
class ChatController extends BaseController { |
|||
function load() { |
|||
$this->session_only = true; |
|||
} |
|||
|
|||
function dispatch() { |
|||
$this->page->setTitle(__('title.main', APP_TITLE)); |
|||
} |
|||
} |
|||
@ -0,0 +1,14 @@ |
|||
<nav class="color dark"> |
|||
<?php $this->widget('Presence');?> |
|||
<?php $this->widget('Navigation');?> |
|||
</nav> |
|||
|
|||
<main> |
|||
<?php $this->widget('Header'); ?> |
|||
<section> |
|||
<?php $this->widget('Roster');?> |
|||
<div> |
|||
<?php $this->widget('Contact');?> |
|||
</div> |
|||
</section> |
|||
</main> |
|||
@ -0,0 +1,23 @@ |
|||
<h2 class="padded">{$c->__('last_registered')}</h2> |
|||
|
|||
<ul class="active"> |
|||
{loop="$users"} |
|||
<li class="condensed"> |
|||
<span class="icon bubble"><img class="avatar" src="{$value->getPhoto('m')}"/></span> |
|||
<span>{$value->getTrueName()}</span> |
|||
<p> |
|||
{if="$value->getAge()"} |
|||
<span class="tag blue on_desktop">{$value->getAge()}</span> |
|||
{/if} |
|||
{if="$value->getGender()"} |
|||
<span class="tag green on_desktop">{$value->getGender()}</span> |
|||
{/if} |
|||
{if="$value->getMarital()"} |
|||
<span class="tag yellow on_desktop">{$value->getMarital()}</span> |
|||
{/if} |
|||
<br/> |
|||
<span class="desc on_desktop">{$value->description|strip_tags}</span> |
|||
</p> |
|||
</li> |
|||
{/loop} |
|||
</ul> |
|||
@ -0,0 +1,32 @@ |
|||
<span id="back" class="on_mobile icon" onclick="MovimTpl.hidePanel()"><i class="md md-arrow-back"></i></span> |
|||
<span class="on_desktop icon" onclick="MovimTpl.hidePanel()"><i class="md md-person"></i></span> |
|||
{if="$contactr != null"} |
|||
<ul> |
|||
<li> |
|||
<span class="icon"> |
|||
<i class="md md-star"></i> |
|||
</span> |
|||
</li> |
|||
</ul> |
|||
<h2>{$contactr->getTrueName()}</h2> |
|||
{else} |
|||
{if="$contact != null"} |
|||
<ul> |
|||
<li> |
|||
<span class="icon"> |
|||
<i class="md md-person-add"></i> |
|||
</span> |
|||
</li> |
|||
</ul> |
|||
<h2>{$contact->getTrueName()}</h2> |
|||
{else} |
|||
<ul> |
|||
<li> |
|||
<span class="icon"> |
|||
<i class="md md-person-add"></i> |
|||
</span> |
|||
</li> |
|||
</ul> |
|||
<h2>{$jid}</h2> |
|||
{/if} |
|||
{/if} |
|||
@ -0,0 +1,31 @@ |
|||
<?php |
|||
|
|||
class Header extends WidgetCommon |
|||
{ |
|||
function load() |
|||
{ |
|||
} |
|||
|
|||
static function fill($html) |
|||
{ |
|||
RPC::call('movim_fill', 'header', $html); |
|||
} |
|||
|
|||
function ajaxReset($view) |
|||
{ |
|||
$html = $this->prepareHeader($view); |
|||
RPC::call('movim_fill', 'header', $html); |
|||
} |
|||
|
|||
function prepareHeader($view = null) |
|||
{ |
|||
if($view == null) $view = $this->_view; |
|||
$tpl = $this->tpl(); |
|||
return $tpl->draw('_header_'.$view, true); |
|||
} |
|||
|
|||
function display() |
|||
{ |
|||
$this->view->assign('header', $this->prepareHeader()); |
|||
} |
|||
} |
|||
@ -0,0 +1,6 @@ |
|||
<header> |
|||
<span id="menu" class="on_mobile icon" onclick="MovimTpl.showMenu()"><i class="md md-menu"></i></span> |
|||
<span id="back" class="on_mobile icon" onclick="MovimTpl.hidePanel()"><i class="md md-arrow-back"></i></span> |
|||
<span class="on_desktop icon"><i class="md md-forum"></i></span> |
|||
<h2>{$c->__('page.chats')}</h2> |
|||
</header> |
|||
@ -0,0 +1,12 @@ |
|||
<header id="header"> |
|||
<ul> |
|||
<li onclick="Roster_ajaxDisplaySearch()"> |
|||
<span class="icon"> |
|||
<i class="md md-person-add"></i> |
|||
</span> |
|||
</li> |
|||
</ul> |
|||
<span id="menu" class="on_mobile icon" onclick="MovimTpl.showMenu()"><i class="md md-menu"></i></span> |
|||
<span class="on_desktop icon"><i class="md md-people"></i></span> |
|||
<h2>{$c->__('page.contacts')}</h2> |
|||
</header> |
|||
@ -0,0 +1,6 @@ |
|||
<header> |
|||
<span id="menu" class="on_mobile icon" onclick="MovimTpl.showMenu()"><i class="md md-menu"></i></span> |
|||
<span id="back" class="on_mobile icon" onclick="MovimTpl.hidePanel()"><i class="md md-arrow-back"></i></span> |
|||
<span class="on_desktop icon"><i class="md md-speaker-notes"></i></span> |
|||
<h2>{$c->__('page.news')}</h2> |
|||
</header> |
|||
@ -0,0 +1 @@ |
|||
{$header} |
|||
@ -1,3 +1,3 @@ |
|||
<a class="button color green" onclick="{$refresh}"> |
|||
<a class="button flat" onclick="{$refresh}"> |
|||
<i class="fa fa-refresh"></i> {$c->__('post.new_items', $count)} - {$c->__('button.refresh')} |
|||
</a> |
|||
@ -0,0 +1,30 @@ |
|||
<section> |
|||
<ul class="simple"> |
|||
<li class="subheader">{$c->__('roster.search')}</li> |
|||
<li> |
|||
<form> |
|||
<div> |
|||
<input |
|||
name="searchjid" |
|||
type="email" |
|||
title="{$c->__('roster.jid')}" |
|||
placeholder="user@server.tld" |
|||
onkeyup="if(this.validity.valid == true) { {$search} }" |
|||
/> |
|||
<label for="searchjid">{$c->__('roster.add_contact_info1')}</label> |
|||
</div> |
|||
</form> |
|||
</li> |
|||
</ul> |
|||
<div id="search_results"> |
|||
|
|||
</div> |
|||
</section> |
|||
<div class="actions"> |
|||
<a onclick="Dialog.clear()" class="button flat"> |
|||
{$c->__('button.close')} |
|||
</a> |
|||
<a onclick="{$calllogout} movim_toggle_class('#logoutlist', 'show');" class="button flat"> |
|||
{$c->__('button.add')} |
|||
</a> |
|||
</div> |
|||
@ -0,0 +1,9 @@ |
|||
<ul class="active"> |
|||
{loop="$contacts"} |
|||
<li class="condensed" onclick="Roster.setFound('{$value->jid}')"> |
|||
<span class="icon bubble"><img src="{$value->getPhoto('m')}"></span> |
|||
<span>{$value->getTrueName()}</span> |
|||
<p>{$value->jid}</p> |
|||
</li> |
|||
{/loop} |
|||
</ul> |
|||
@ -1,188 +1,188 @@ |
|||
<ul> |
|||
<li class="subheader"> {$c->__('vcard.privacy_title')}</li> |
|||
<li class="condensed"> |
|||
<span class="icon bubble color blue"> |
|||
<i class="md md-security"></i> |
|||
</span> |
|||
<form> |
|||
<div class="control"> |
|||
<div class="checkbox"> |
|||
<input |
|||
type="checkbox" |
|||
id="privacy" |
|||
name="privacy" |
|||
{if="$me->privacy"} |
|||
checked |
|||
{/if} |
|||
onchange="{$privacy}"> |
|||
<label for="privacy"></label> |
|||
</div> |
|||
</div> |
|||
</form> |
|||
<span>{$c->__('vcard.privacy_question')}</span> |
|||
<p>{$c->__('vcard.privacy_info')}</p> |
|||
</li> |
|||
</ul> |
|||
|
|||
<form name="vcard4" id="vcard4form"> |
|||
<fieldset> |
|||
<legend><i class="fa fa-user"></i> {$c->__('page.profile')}</legend> |
|||
<div class="element"> |
|||
<label for="fn">{$c->__('vcard.name')}</label> |
|||
<input type="text" name="fn" class="content" value="{$me->fn}"> |
|||
</div> |
|||
<div class="element"> |
|||
<label for="fn">{$c->__('vcard.nickname')}</label> |
|||
<input type="text" name="name" class="content" value="{$me->name}"> |
|||
</div> |
|||
<div class="element"> |
|||
<label for="fn">{$c->__('vcard.email')}</label> |
|||
<input type="email" name="email" class="content" value="{$me->email}"> |
|||
</div> |
|||
<h4>{$c->__('page.profile')}</h4> |
|||
<div class="block"> |
|||
<input type="text" name="fn" class="content" value="{$me->fn}"> |
|||
<label for="fn">{$c->__('vcard.name')}</label> |
|||
</div> |
|||
<div class="block"> |
|||
<input type="text" name="name" class="content" value="{$me->name}"> |
|||
<label for="fn">{$c->__('vcard.nickname')}</label> |
|||
</div> |
|||
|
|||
<!-- The date picker --> |
|||
<div class="block"> |
|||
<input type="email" name="email" class="content" value="{$me->email}"> |
|||
<label for="fn">{$c->__('vcard.email')}</label> |
|||
</div> |
|||
|
|||
<div class="element "> |
|||
<label for="day">{$c->__('vcard.date_of_birth')}</label> |
|||
<div class="select" style="width: 33%; float: left;"> |
|||
<select name="day" class="datepicker"> |
|||
<option value="-1">{$c->__('Day')}</option> |
|||
{loop="$days"} |
|||
<option value="{$value}" |
|||
{if="$key == substr($me->date, 8)"} |
|||
selected |
|||
{/if} |
|||
>{$value}</option> |
|||
{/loop} |
|||
</select> |
|||
</div> |
|||
|
|||
<div class="select" style="width: 34%; float: left;"> |
|||
<select name="month" class="datepicker"> |
|||
<option value="-1">{$c->__('Month')}</option> |
|||
{loop="$months"} |
|||
<option value="{$key}" |
|||
{if="$key == substr($me->date,5,2)"} |
|||
selected |
|||
{/if} |
|||
>{$value}</option> |
|||
{/loop} |
|||
</select> |
|||
</div> |
|||
|
|||
<div class="select" style="width: 33%; float: left;"> |
|||
<select name="year" class="datepicker"> |
|||
<option value="-1">{$c->__('Year')}</option> |
|||
{loop="$years"} |
|||
<option value="{$value}" |
|||
{if="$value == substr($me->date,0,4)"} |
|||
selected |
|||
{/if} |
|||
>{$value}</option> |
|||
{/loop} |
|||
</select> |
|||
</div> |
|||
</div> |
|||
<div class="clear"></div> |
|||
|
|||
<div class="element"> |
|||
<label for="gender">{$c->__('vcard.gender')}</label> |
|||
<div class="select"> |
|||
<select name="gender"> |
|||
{loop="$gender"} |
|||
<option |
|||
{if="$key == $me->gender"} |
|||
<!-- The date picker --> |
|||
|
|||
<div class="element "> |
|||
<label for="day">{$c->__('vcard.date_of_birth')}</label> |
|||
<div class="select" style="width: 33%; float: left;"> |
|||
<select name="day" class="datepicker"> |
|||
<option value="-1">{$c->__('Day')}</option> |
|||
{loop="$days"} |
|||
<option value="{$value}" |
|||
{if="$key == substr($me->date, 8)"} |
|||
selected |
|||
{/if} |
|||
value="{$key}">{$value}</option> |
|||
>{$value}</option> |
|||
{/loop} |
|||
</select> |
|||
</div> |
|||
</select> |
|||
</div> |
|||
|
|||
<div class="element"> |
|||
<label for="marital">{$c->__('vcard.marital')}</label> |
|||
<div class="select"> |
|||
<select name="marital"> |
|||
{loop="$marital"} |
|||
<option |
|||
{if="$key == $me->marital"} |
|||
|
|||
<div class="select" style="width: 34%; float: left;"> |
|||
<select name="month" class="datepicker"> |
|||
<option value="-1">{$c->__('Month')}</option> |
|||
{loop="$months"} |
|||
<option value="{$key}" |
|||
{if="$key == substr($me->date,5,2)"} |
|||
selected |
|||
{/if} |
|||
value="{$key}">{$value}</option> |
|||
>{$value}</option> |
|||
{/loop} |
|||
</select> |
|||
</div> |
|||
</select> |
|||
</div> |
|||
|
|||
<div class="element large"> |
|||
<label for="url">{$c->__('vcard.website')}</label> |
|||
<input type="url" name ="url" class="content" value="{$me->url}"> |
|||
|
|||
<div class="select" style="width: 33%; float: left;"> |
|||
<select name="year" class="datepicker"> |
|||
<option value="-1">{$c->__('Year')}</option> |
|||
{loop="$years"} |
|||
<option value="{$value}" |
|||
{if="$value == substr($me->date,0,4)"} |
|||
selected |
|||
{/if} |
|||
>{$value}</option> |
|||
{/loop} |
|||
</select> |
|||
</div> |
|||
</div> |
|||
|
|||
<div class="element large"> |
|||
<label for="desc">{$c->__('vcard.about')}</label> |
|||
<textarea name="desc" id="desctext" class="content" onkeyup="movim_textarea_autoheight(this);">{$desc}</textarea> |
|||
<div> |
|||
<label for="gender">{$c->__('vcard.gender')}</label> |
|||
<div class="select"> |
|||
<select name="gender"> |
|||
{loop="$gender"} |
|||
<option |
|||
{if="$key == $me->gender"} |
|||
selected |
|||
{/if} |
|||
value="{$key}">{$value}</option> |
|||
{/loop} |
|||
</select> |
|||
</div> |
|||
</fieldset> |
|||
</div> |
|||
|
|||
<fieldset> |
|||
<legend><i class="fa fa-compass"></i> {$c->__('vcard.position_title')}</legend> |
|||
|
|||
<div class="element"> |
|||
<label for="url">{$c->__('vcard.locality')}</label> |
|||
<input type="text" type="locality" name ="locality" class="content" value="{$me->adrlocality}" placeholder="{$c->__('Locality')}"> |
|||
</div> |
|||
|
|||
<div class="element"> |
|||
<label for="country">{$c->__('vcard.country')}</label> |
|||
<div class="select"> |
|||
<select name="country"> |
|||
<option value=""></option> |
|||
{loop="$countries"} |
|||
<option |
|||
{if="$value == $me->adrcountry"} |
|||
selected |
|||
{/if} |
|||
value="{$value}">{$value}</option> |
|||
{/loop} |
|||
</select> |
|||
</div> |
|||
<div> |
|||
<label for="marital">{$c->__('vcard.marital')}</label> |
|||
<div class="select"> |
|||
<select name="marital"> |
|||
{loop="$marital"} |
|||
<option |
|||
{if="$key == $me->marital"} |
|||
selected |
|||
{/if} |
|||
value="{$key}">{$value}</option> |
|||
{/loop} |
|||
</select> |
|||
</div> |
|||
</div> |
|||
|
|||
</fieldset> |
|||
<div class="element large"> |
|||
<input type="url" name ="url" class="content" value="{$me->url}"> |
|||
<label for="url">{$c->__('vcard.website')}</label> |
|||
</div> |
|||
|
|||
<fieldset> |
|||
<legend><i class="fa fa-circle-thin"></i> {$c->__('vcard.accounts_title')}</legend> |
|||
|
|||
<div class="element"> |
|||
<label for="twitter"><i class="fa fa-twitter"></i> {$c->__('vcard.twitter')}</label> |
|||
<input type="text" name="twitter" class="content" value="{$me->twitter}" placeholder="{$c->__('Nickname')}"> |
|||
</div> |
|||
|
|||
<div class="element"> |
|||
<label for="skype"><i class="fa fa-skype"></i> {$c->__('vcard.skype')}</label> |
|||
<input type="text" name="skype" class="content" value="{$me->skype}" placeholder="{$c->__('Nickname')}"> |
|||
</div> |
|||
<div class="element large"> |
|||
<textarea name="desc" id="desctext" class="content" onkeyup="movim_textarea_autoheight(this);">{$desc}</textarea> |
|||
<label for="desc">{$c->__('vcard.about')}</label> |
|||
</div> |
|||
|
|||
<legend><i class="fa fa-compass"></i> {$c->__('vcard.position_title')}</legend> |
|||
|
|||
<div class="element"> |
|||
<label for="skype"><i class="fa fa-yahoo"></i> {$c->__('vcard.yahoo')}</label> |
|||
<input type="email" name="yahoo" class="content" value="{$me->yahoo}" placeholder="{$c->__('Yahoo Account')}"> |
|||
<div> |
|||
<input type="text" type="locality" name ="locality" class="content" value="{$me->adrlocality}" placeholder="{$c->__('Locality')}"> |
|||
<label for="url">{$c->__('vcard.locality')}</label> |
|||
</div> |
|||
|
|||
<div> |
|||
<label for="country">{$c->__('vcard.country')}</label> |
|||
<div class="select"> |
|||
<select name="country"> |
|||
<option value=""></option> |
|||
{loop="$countries"} |
|||
<option |
|||
{if="$value == $me->adrcountry"} |
|||
selected |
|||
{/if} |
|||
value="{$value}">{$value}</option> |
|||
{/loop} |
|||
</select> |
|||
</div> |
|||
</fieldset> |
|||
</div> |
|||
|
|||
<fieldset> |
|||
<a |
|||
onclick=" |
|||
{$submit} |
|||
movim_button_save('#vcard4validate'); |
|||
this.value = '{$c->__('Submitting')}'; |
|||
this.className='button color orange oppose merged right inactive';" |
|||
class="button merged right color green oppose" |
|||
id="vcard4validate" |
|||
> |
|||
<i class="fa fa-check"></i> {$c->__('Submit')} |
|||
</a> |
|||
<a |
|||
onclick="document.querySelector('#vcard4form').reset();" |
|||
class="button merged left color orange oppose"> |
|||
<i class="fa fa-eraser"></i> {$c->__('Reset')} |
|||
</a> |
|||
</fieldset> |
|||
|
|||
<fieldset> |
|||
<legend><i class="fa fa-lock"></i> {$c->__('vcard.privacy_title')}</legend> |
|||
<div class="element"> |
|||
<label>{$c->__('vcard.privacy_question')}</label> |
|||
<div class="checkbox"> |
|||
<input |
|||
type="checkbox" |
|||
id="privacy" |
|||
name="privacy" |
|||
{if="$me->privacy"} |
|||
checked |
|||
{/if} |
|||
onchange="{$privacy}"/> |
|||
<label for="privacy"></label> |
|||
</div> |
|||
</div> |
|||
<div class="element"> |
|||
<div class="message info"> |
|||
{$c->__('vcard.privacy_info')} |
|||
</div> |
|||
</div> |
|||
</fieldset> |
|||
<legend><i class="fa fa-circle-thin"></i> {$c->__('vcard.accounts_title')}</legend> |
|||
|
|||
<div> |
|||
<input type="text" name="twitter" class="content" value="{$me->twitter}" placeholder="{$c->__('Nickname')}"> |
|||
<label for="twitter"><i class="fa fa-twitter"></i> {$c->__('vcard.twitter')}</label> |
|||
</div> |
|||
|
|||
<div> |
|||
<input type="text" name="skype" class="content" value="{$me->skype}" placeholder="{$c->__('Nickname')}"> |
|||
<label for="skype"><i class="fa fa-skype"></i> {$c->__('vcard.skype')}</label> |
|||
</div> |
|||
|
|||
<div> |
|||
<input type="email" name="yahoo" class="content" value="{$me->yahoo}" placeholder="{$c->__('Yahoo Account')}"> |
|||
<label for="skype"><i class="fa fa-yahoo"></i> {$c->__('vcard.yahoo')}</label> |
|||
</div> |
|||
|
|||
<a |
|||
onclick=" |
|||
{$submit} |
|||
movim_button_save('#vcard4validate'); |
|||
this.value = '{$c->__('Submitting')}'; |
|||
this.className='button color orange oppose merged right inactive';" |
|||
class="button merged right color green oppose" |
|||
id="vcard4validate" |
|||
> |
|||
<i class="fa fa-check"></i> {$c->__('Submit')} |
|||
</a> |
|||
<a |
|||
onclick="document.querySelector('#vcard4form').reset();" |
|||
class="button merged left color orange oppose"> |
|||
<i class="fa fa-eraser"></i> {$c->__('Reset')} |
|||
</a> |
|||
</form> |
|||
|
|||
|
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue