- Update the translations
- New News page with two column design - Add nice looking icons for some placeholders - Fix missing JS/CSS in Avatarpull/16/head
-
4app/assets/js/movim_utils.js
-
4app/models/contact/ContactDAO.php
-
31app/models/postn/Postn.php
-
20app/models/postn/PostnDAO.php
-
25app/views/news.tpl
-
10app/widgets/About/about.tpl
-
78app/widgets/Avatar/Avatar.php
-
3app/widgets/Avatar/avatar.tpl
-
2app/widgets/Bookmark/Bookmark.php
-
12app/widgets/Bookmark/_bookmark_muc_add.tpl
-
4app/widgets/ContactPubsubSubscription/ContactPubsubSubscription.php
-
2app/widgets/Feed/_feed_empty.tpl
-
19app/widgets/Help/Help.php
-
12app/widgets/Help/help.js
-
95app/widgets/Help/help.tpl
-
20app/widgets/Help/locales.ini
-
1app/widgets/Login/login.css
-
2app/widgets/Media/_media_empty.tpl
-
87app/widgets/Menu/Menu.php
-
24app/widgets/Menu/_menu_list.tpl
-
3app/widgets/Menu/_menu_refresh.tpl
-
2app/widgets/Menu/locales.ini
-
55app/widgets/Menu/menu.css
-
26app/widgets/Menu/menu.js
-
3app/widgets/Menu/menu.tpl
-
1app/widgets/Node/Node.php
-
1app/widgets/Node/node.tpl
-
9app/widgets/Notifs/Notifs.php
-
23app/widgets/Notifs/_notifs_from.tpl
-
21app/widgets/Notifs/notifs.css
-
59app/widgets/Post/Post.php
-
49app/widgets/Post/_post.tpl
-
7app/widgets/Post/_post_empty.tpl
-
2app/widgets/Post/locales.ini
-
27app/widgets/Post/post.css
-
8app/widgets/Post/post.tpl
-
2app/widgets/Roster/roster.css
-
2app/widgets/Roster/roster.tpl
-
15app/widgets/Vcard4/Vcard4.php
-
10app/widgets/WidgetCommon/_submit_form.tpl
-
85linker.php
-
1145locales/ar.po
-
1086locales/be.po
-
1082locales/bn.po
-
1133locales/br.po
-
1098locales/da.po
-
1217locales/de.po
-
1111locales/el.po
-
1104locales/eo.po
-
1199locales/es.po
-
1081locales/fa.po
-
1139locales/fi.po
-
1227locales/fr.po
-
1086locales/gl.po
-
1208locales/he.po
-
1081locales/hr.po
-
1110locales/id.po
-
1081locales/io.po
-
1186locales/it.po
-
1164locales/ja.po
-
1081locales/kk.po
-
1144locales/lv.po
-
1081locales/messages.pot
-
1126locales/nl.po
-
1087locales/no.po
-
1163locales/oc.po
-
1139locales/pt.po
-
1092locales/ro.po
-
1181locales/ru.po
-
1089locales/uk.po
-
1186locales/zh.po
-
2src/Movim/Daemon/Session.php
-
6system/Picture.php
-
59themes/movim/css/style.css
-
14themes/movim/css/template.css
-
BINthemes/movim/img/icons/placeholder/chat.png
-
BINthemes/movim/img/icons/placeholder/explore.png
-
BINthemes/movim/img/icons/placeholder/file.png
-
BINthemes/movim/img/icons/placeholder/media.png
-
BINthemes/movim/img/icons/placeholder/newspaper.png
-
BINthemes/movim/img/icons/placeholder/plane.png
@ -1,4 +1,4 @@ |
|||
<div class="placeholder padded"> |
|||
<div class="placeholder icon"> |
|||
<h1>{$c->__('feed.empty_title')}</h1> |
|||
<p>{$c->__('feed.empty')}</p> |
|||
</div> |
|||
@ -0,0 +1,12 @@ |
|||
var Help = { |
|||
joinChatroom : function() { |
|||
var hash = new H(); |
|||
hash.set('jid', 'movim@conference.movim.eu'); |
|||
hash.set('name', 'Movim Chatroom'); |
|||
hash.set('nick', false); |
|||
hash.set('autojoin', 0); |
|||
|
|||
Bookmark_ajaxBookmarkMucAdd(hash); |
|||
Bookmark_ajaxBookmarkMucJoin('movim@conference.movim.eu', ''); |
|||
} |
|||
} |
|||
@ -1,39 +1,60 @@ |
|||
<div class="tabelem paddedtop" title="{$c->__('page.help')}" id="help"> |
|||
<h1><i class="fa fa-life-ring"></i> {$c->__('page.help')}</h1> |
|||
<div class="tabelem paddedtop" title="{$c->__('page.help')}" id="help_widget"> |
|||
<h1><i class="fa fa-life-ring"></i> {$c->__('page.help')}</h1> |
|||
|
|||
<div class="block third"> |
|||
<div class="placeholder icon file"> |
|||
<p class="paddedtop">{$c->__('wiki.question')}</p> |
|||
|
|||
<a class="button color blue" href="http://wiki.movim.eu" target="_blank"> |
|||
<i class="fa fa-file-text-o"></i> {$c->__('wiki.button')} |
|||
</a> |
|||
</div> |
|||
</div> |
|||
|
|||
<div class="block third"> |
|||
<div class="placeholder icon chat"> |
|||
<p class="paddedtop">{$c->__('chatroom.question')}</p> |
|||
|
|||
<a class="button color green" href="#" onclick="Help.joinChatroom()"> |
|||
<i class="fa fa-envelope-o"></i> {$c->__('chatroom.button')} |
|||
</a> |
|||
</div> |
|||
</div> |
|||
|
|||
<div class="block third "> |
|||
<div class="placeholder icon plane"> |
|||
<p class="paddedtop">{$c->__('ml.question')}</p> |
|||
|
|||
<a class="button color orange" href="http://wiki.movim.eu/en:mailing_list" target="_blank"> |
|||
<i class="fa fa-envelope-o"></i> {$c->__('ml.button')} |
|||
</a> |
|||
</div> |
|||
</div> |
|||
|
|||
<div class="clear spacetop"></div> |
|||
|
|||
<h1><i class="fa fa-question"></i> {$c->__('help.faq')}</h1> |
|||
|
|||
<h2>{$c->__('what.title')}</h2> |
|||
|
|||
<p>{$c->__('what.info1', '<a href="http://wiki.movim.eu/whoami" target="_blank">', '</a>')}</p> |
|||
|
|||
<h2>{$c->__('banner.title')}</h2> |
|||
<center> |
|||
<div title="{function="getFlagTitle("white")"}" style="width: 60px; height: 50px; display: inline-block;" class="protect white"></div> |
|||
<div title="{function="getFlagTitle("green")"}" style="width: 60px; height: 50px; display: inline-block;" class="protect green"></div> |
|||
<div title="{function="getFlagTitle("orange")"}" style="width: 60px; height: 50px; display: inline-block;" class="protect orange"></div> |
|||
<div title="{function="getFlagTitle("red")"}" style="width: 60px; height: 50px; display: inline-block;" class="protect red"></div> |
|||
<div title="{function="getFlagTitle("black")"}" title="{$c->__('Help')}" style="width: 60px; height: 50px; display: inline-block;" class="protect black"></div> |
|||
</center> |
|||
|
|||
<p>{$c->__('banner.info1')}</p> |
|||
|
|||
<p> |
|||
<ul class="clean"> |
|||
<li>{$c->__('banner.white')}</li> |
|||
<li>{$c->__('banner.green')}</li> |
|||
<li>{$c->__('banner.orange')}</li> |
|||
<li>{$c->__('banner.red')}</li> |
|||
<li>{$c->__('banner.black')}</li> |
|||
</ul> |
|||
</p> |
|||
|
|||
<h2>{$c->__('missing.title')}</h2> |
|||
|
|||
<p>{$missing_info1}</p> |
|||
|
|||
<p>{$missing_info2}</p> |
|||
|
|||
<h2>{$c->__('faq.title')}</h2> |
|||
|
|||
<p>{$faq_info1}</p> |
|||
|
|||
<div class="block large"> |
|||
<h2>{$c->__('banner.title')}</h2> |
|||
<center> |
|||
<div title="{function="getFlagTitle("white")"}" style="width: 60px; height: 50px; display: inline-block;" class="protect white"></div> |
|||
<div title="{function="getFlagTitle("green")"}" style="width: 60px; height: 50px; display: inline-block;" class="protect green"></div> |
|||
<div title="{function="getFlagTitle("orange")"}" style="width: 60px; height: 50px; display: inline-block;" class="protect orange"></div> |
|||
<div title="{function="getFlagTitle("red")"}" style="width: 60px; height: 50px; display: inline-block;" class="protect red"></div> |
|||
<div title="{function="getFlagTitle("black")"}" title="{$c->__('Help')}" style="width: 60px; height: 50px; display: inline-block;" class="protect black"></div> |
|||
</center> |
|||
|
|||
<p>{$c->__('banner.info1')}</p> |
|||
|
|||
<p> |
|||
<ul class="clean"> |
|||
<li>{$c->__('banner.white')}</li> |
|||
<li>{$c->__('banner.green')}</li> |
|||
<li>{$c->__('banner.orange')}</li> |
|||
<li>{$c->__('banner.red')}</li> |
|||
<li>{$c->__('banner.black')}</li> |
|||
</ul> |
|||
</p> |
|||
</div> |
|||
</div> |
|||
@ -0,0 +1,87 @@ |
|||
<?php |
|||
|
|||
/** |
|||
* @package Widgets |
|||
* |
|||
* @file Menu.php |
|||
* This file is part of Movim. |
|||
* |
|||
* @brief General Menu |
|||
* |
|||
* @author Jaussoin Timothée <edhelas_at_movim_dot_com> |
|||
* |
|||
* @version 1.0 |
|||
* @date 1 december 2014 |
|||
* |
|||
* Copyright (C)2014 MOVIM project |
|||
* |
|||
* See COPYING for licensing information. |
|||
*/ |
|||
|
|||
class Menu extends WidgetCommon |
|||
{ |
|||
private $_paging = 15; |
|||
|
|||
function load() |
|||
{ |
|||
$this->registerEvent('post', 'onStream'); |
|||
$this->registerEvent('stream', 'onStream'); |
|||
|
|||
$this->addcss('menu.css'); |
|||
$this->addjs('menu.js'); |
|||
} |
|||
|
|||
function onStream() |
|||
{ |
|||
$pd = new \Modl\PostnDAO; |
|||
$count = $pd->getCountSince(Cache::c('since')); |
|||
|
|||
if($count > 0) { |
|||
$view = $this->tpl(); |
|||
$view->assign('count', $count); |
|||
$view->assign('refresh', $this->call('ajaxGetMenuList', "''", "''", 0)); |
|||
|
|||
RPC::call('movim_posts_unread', $count); |
|||
RPC::call('movim_fill', 'menu_refresh', $view->draw('_menu_refresh', true)); |
|||
} |
|||
} |
|||
|
|||
function ajaxGetMenuList($server = null, $node = null, $page = 0) |
|||
{ |
|||
$html = $this->prepareMenuList($server, $node, $page); |
|||
|
|||
if($page > 0) { |
|||
RPC::call('movim_append', 'menu_widget', $html); |
|||
} else { |
|||
RPC::call('movim_fill', 'menu_widget', $html); |
|||
} |
|||
RPC::call('Menu.refresh'); |
|||
} |
|||
|
|||
function prepareMenuList($server = null, $node = null, $page = 0) |
|||
{ |
|||
$view = $this->tpl(); |
|||
$pd = new \Modl\PostnDAO; |
|||
|
|||
Cache::c('since', date(DATE_ISO8601, strtotime($pd->getLastDate()))); |
|||
|
|||
$next = $page + 1; |
|||
|
|||
if($server == null || $node == null) { |
|||
$view->assign('history', $this->call('ajaxGetMenuList', "''", "''", $next)); |
|||
$items = $pd->getNews($page*$this->_paging, $this->_paging); |
|||
} else { |
|||
$view->assign('history', $this->call('ajaxGetMenuList', '"'.$server.'"', '"'.$node.'"', $next)); |
|||
$items = $pd->getNode($server, $node, $page*$this->_paging, $this->_paging); |
|||
} |
|||
|
|||
$view->assign('items', $items); |
|||
$view->assign('page', $page); |
|||
|
|||
return $view->draw('_menu_list', true); |
|||
} |
|||
|
|||
function display() |
|||
{ |
|||
} |
|||
} |
|||
@ -0,0 +1,24 @@ |
|||
<div id="menu_refresh"></div> |
|||
{if="$items"} |
|||
<ul> |
|||
{loop="$items"} |
|||
<li class="padded" data-id="{$value->nodeid}"> |
|||
<span class="tag">{$value->node}</span> |
|||
{if="current(explode('.', $value->jid)) == 'nsfw'"} |
|||
<span class="tag">NSFW</span> |
|||
{/if} |
|||
<h1>{$value->title}</h1> |
|||
<span class="date">{$value->published|strtotime|prepareDate}</span> |
|||
</li> |
|||
{/loop} |
|||
|
|||
<li class="older" onclick="{$history} this.parentNode.removeChild(this);"> |
|||
<i class="fa fa-history"></i> {$c->__('post.older')} |
|||
</li> |
|||
</ul> |
|||
{elseif="$page == 0"} |
|||
<div class="placeholder padded"> |
|||
<h1>{$c->__('menu.empty_title')}</h1> |
|||
<p>{$c->__('menu.empty')}</p> |
|||
</div> |
|||
{/if} |
|||
@ -0,0 +1,3 @@ |
|||
<a class="button color green" onclick="{$refresh}"> |
|||
<i class="fa fa-refresh"></i> {$c->__('post.new_items', $count)} - {$c->__('button.refresh')} |
|||
</a> |
|||
@ -0,0 +1,2 @@ |
|||
menu.empty_title = 'Hello' |
|||
menu.empty = 'Welcome on your news feed, here you will see all the posts published in the groups you have subscribed.' |
|||
@ -0,0 +1,55 @@ |
|||
#menu_widget { |
|||
border-right: 1px solid #DDD; |
|||
} |
|||
|
|||
#menu_widget #menu_refresh { |
|||
text-align: center; |
|||
font-size: 1.2em; |
|||
} |
|||
|
|||
#menu_widget #menu_refresh a { |
|||
margin: 1em; |
|||
} |
|||
|
|||
#menu_widget ul { |
|||
list-style-type: none; |
|||
} |
|||
|
|||
#menu_widget ul li { |
|||
min-height: 3em; |
|||
border-bottom: 1px solid #DDD; |
|||
} |
|||
|
|||
#menu_widget ul li.active, |
|||
#menu_widget ul li:not(.older):hover { |
|||
background-color: rgba(0, 0, 0, 0.05); |
|||
cursor: pointer; |
|||
} |
|||
|
|||
#menu_widget ul li h1 { |
|||
font-size: 1.2em; |
|||
} |
|||
|
|||
#menu_widget ul li span.tag { |
|||
float: right; |
|||
background-color: gray; |
|||
color: white; |
|||
border-radius: 0.2em; |
|||
font-weight: bold; |
|||
padding: 0.2em 0.5em; |
|||
font-size: 0.8em; |
|||
clear: right; |
|||
margin-bottom: 0.3em; |
|||
} |
|||
|
|||
#menu_widget ul li.older { |
|||
border-radius: 0; |
|||
margin-bottom: 0; |
|||
} |
|||
|
|||
#main { |
|||
background-color: black; |
|||
height: 100%; |
|||
position: absolute; |
|||
width: 100%; |
|||
} |
|||
@ -0,0 +1,26 @@ |
|||
var Menu = { |
|||
refresh: function() { |
|||
var items = document.querySelectorAll('#menu_widget ul li'); |
|||
|
|||
var i = 0; |
|||
while(i < items.length -1) |
|||
{ |
|||
items[i].onclick = function(e) { |
|||
Post_ajaxGetPost(this.dataset.id); |
|||
Menu.reset(items); |
|||
movim_add_class(this, 'active'); |
|||
} |
|||
i++; |
|||
} |
|||
}, |
|||
|
|||
reset: function(list) { |
|||
for(i = 0; i < list.length; i++) { |
|||
movim_remove_class(list[i], 'active'); |
|||
} |
|||
} |
|||
} |
|||
|
|||
MovimWebsocket.attach(function() { |
|||
Menu.refresh(); |
|||
}); |
|||
@ -0,0 +1,3 @@ |
|||
<div id="menu_widget"> |
|||
{$c->prepareMenuList()} |
|||
</div> |
|||
@ -0,0 +1,59 @@ |
|||
<?php |
|||
|
|||
/** |
|||
* @package Widgets |
|||
* |
|||
* @file Post.php |
|||
* This file is part of Movim. |
|||
* |
|||
* @brief The Post visualisation widget |
|||
* |
|||
* @author Jaussoin Timothée <edhelas_at_movim_dot_com> |
|||
* |
|||
* @version 1.0 |
|||
* @date 1 december 2014 |
|||
* |
|||
* Copyright (C)2014 MOVIM project |
|||
* |
|||
* See COPYING for licensing information. |
|||
*/ |
|||
|
|||
class Post extends WidgetCommon |
|||
{ |
|||
function load() |
|||
{ |
|||
$this->addcss('post.css'); |
|||
} |
|||
|
|||
function ajaxGetPost($id) |
|||
{ |
|||
$html = $this->preparePost($id); |
|||
RPC::call('movim_fill', 'post_widget', $html); |
|||
} |
|||
|
|||
function prepareEmpty() |
|||
{ |
|||
$view = $this->tpl(); |
|||
return $view->draw('_post_empty', true); |
|||
} |
|||
|
|||
function preparePost($id) |
|||
{ |
|||
$pd = new \Modl\PostnDAO; |
|||
$p = $pd->getItem($id); |
|||
|
|||
$view = $this->tpl(); |
|||
|
|||
if(isset($p)) { |
|||
$view->assign('post', $p); |
|||
$view->assign('attachements', $p->getAttachements()); |
|||
return $view->draw('_post', true); |
|||
} else { |
|||
return $this->prepareEmpty(); |
|||
} |
|||
} |
|||
|
|||
function display() |
|||
{ |
|||
} |
|||
} |
|||
@ -0,0 +1,49 @@ |
|||
<article> |
|||
{if="isset($attachements.pictures)"} |
|||
<div |
|||
class="picture" |
|||
style="background-image: url('{$attachements['pictures'][0]['href']}');" |
|||
> |
|||
</div> |
|||
{/if} |
|||
<header class="paddedbottom"> |
|||
<h1>{$post->title}</h1> |
|||
<span> |
|||
<i class="fa fa-sitemap"></i> |
|||
<a href="{$c->route('node', array($post->jid, $post->node))}"> |
|||
{$post->node} |
|||
</a> |
|||
</span> |
|||
- |
|||
<span class="date"> |
|||
<i class="fa fa-clock-o"></i> |
|||
{$post->published|strtotime|prepareDate} |
|||
</span> |
|||
</header> |
|||
|
|||
<section class="content padded"> |
|||
{$post->contentcleaned} |
|||
</section> |
|||
|
|||
<footer> |
|||
<div class="enclosures"> |
|||
{if="isset($attachements.links)"} |
|||
{loop="$attachements.links"} |
|||
<a href="{$value.href}" class="alternate" target="_blank"> |
|||
<img src="http://g.etfv.co/{$value.href}"/>{$value.href} |
|||
</a> |
|||
{/loop} |
|||
{/if} |
|||
{if="isset($attachements.files)"} |
|||
{loop="$attachements.files"} |
|||
<a |
|||
href="{$value.href}" |
|||
class="enclosure" |
|||
type="{$value.type}" |
|||
target="_blank">{$value.href} |
|||
</a> |
|||
{/loop} |
|||
{/if} |
|||
</div> |
|||
</footer> |
|||
</article> |
|||
@ -0,0 +1,7 @@ |
|||
<div class="placeholder icon newspaper"> |
|||
<h1>{$c->__('post.news_feed')}</h1> |
|||
<p class="paddedtop">{$c->__('post.placeholder')}</p> |
|||
<a class="button color green" href="{$c->route('explore')}"> |
|||
<i class="fa fa-compass"></i> {$c->__('page.explore')} |
|||
</a> |
|||
</div> |
|||
@ -0,0 +1,2 @@ |
|||
post.news_feed = 'News Feed' |
|||
post.placeholder = 'Discover and register to the groups you are interested in' |
|||
@ -0,0 +1,27 @@ |
|||
#post_widget { |
|||
/*width: calc(75% - 15rem);*/ |
|||
} |
|||
|
|||
#post_widget article { |
|||
padding-bottom: 1em; |
|||
} |
|||
|
|||
#post_widget div.picture { |
|||
padding-bottom: 25%; |
|||
background-repeat: no-repeat; |
|||
background-position: center; |
|||
background-size: cover; |
|||
} |
|||
|
|||
#post_widget article header, |
|||
#post_widget article section.content, |
|||
#post_widget article footer { |
|||
max-width: 600px; |
|||
margin: 0 auto; |
|||
background-color: white; |
|||
} |
|||
|
|||
#post_widget div.picture ~ header { |
|||
margin-top: -3em; |
|||
box-shadow: 0 -1px 5px rgba(0, 0, 0, 0.3); |
|||
} |
|||
@ -0,0 +1,8 @@ |
|||
<div id="post_widget"> |
|||
{$c->prepareEmpty()} |
|||
<script type="text/javascript"> |
|||
/*MovimWebsocket.attach(function() { |
|||
{$get_post} |
|||
});*/ |
|||
</script> |
|||
</div> |
|||
1145
locales/ar.po
File diff suppressed because it is too large
View File
1086
locales/be.po
File diff suppressed because it is too large
View File
1082
locales/bn.po
File diff suppressed because it is too large
View File
1133
locales/br.po
File diff suppressed because it is too large
View File
1098
locales/da.po
File diff suppressed because it is too large
View File
1217
locales/de.po
File diff suppressed because it is too large
View File
1111
locales/el.po
File diff suppressed because it is too large
View File
1104
locales/eo.po
File diff suppressed because it is too large
View File
1199
locales/es.po
File diff suppressed because it is too large
View File
1081
locales/fa.po
File diff suppressed because it is too large
View File
1139
locales/fi.po
File diff suppressed because it is too large
View File
1227
locales/fr.po
File diff suppressed because it is too large
View File
1086
locales/gl.po
File diff suppressed because it is too large
View File
1208
locales/he.po
File diff suppressed because it is too large
View File
1081
locales/hr.po
File diff suppressed because it is too large
View File
1110
locales/id.po
File diff suppressed because it is too large
View File
1081
locales/io.po
File diff suppressed because it is too large
View File
1186
locales/it.po
File diff suppressed because it is too large
View File
1164
locales/ja.po
File diff suppressed because it is too large
View File
1081
locales/kk.po
File diff suppressed because it is too large
View File
1144
locales/lv.po
File diff suppressed because it is too large
View File
1081
locales/messages.pot
File diff suppressed because it is too large
View File
1126
locales/nl.po
File diff suppressed because it is too large
View File
1087
locales/no.po
File diff suppressed because it is too large
View File
1163
locales/oc.po
File diff suppressed because it is too large
View File
1139
locales/pt.po
File diff suppressed because it is too large
View File
1092
locales/ro.po
File diff suppressed because it is too large
View File
1181
locales/ru.po
File diff suppressed because it is too large
View File
1089
locales/uk.po
File diff suppressed because it is too large
View File
1186
locales/zh.po
File diff suppressed because it is too large
View File
|
After Width: 512 | Height: 512 | Size: 4.6 KiB |
|
After Width: 512 | Height: 512 | Size: 28 KiB |
|
After Width: 512 | Height: 512 | Size: 3.6 KiB |
|
After Width: 512 | Height: 512 | Size: 10 KiB |
|
After Width: 512 | Height: 512 | Size: 4.5 KiB |
|
After Width: 512 | Height: 512 | Size: 23 KiB |