mirror of https://github.com/movim/movim
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
240 lines
7.9 KiB
240 lines
7.9 KiB
<?php
|
|
|
|
/**
|
|
* @package Widgets
|
|
*
|
|
* @file Node.php
|
|
* This file is part of MOVIM.
|
|
*
|
|
* @brief The items of a node
|
|
*
|
|
* @author Timothée Jaussoin <edhelas_at_gmail_dot_com>
|
|
*
|
|
* @version 1.0
|
|
* @date 20 October 2010
|
|
*
|
|
* Copyright (C)2010 MOVIM project
|
|
*
|
|
* See COPYING for licensing information.
|
|
*/
|
|
|
|
class Node extends WidgetCommon
|
|
{
|
|
function WidgetLoad()
|
|
{
|
|
$this->registerEvent('stream', 'onStream');
|
|
$this->registerEvent('nostream', 'onStream');
|
|
$this->registerEvent('pubsubsubscribed', 'onPubsubSubscribed');
|
|
$this->registerEvent('pubsubsubscribederror', 'onPubsubSubscribedError');
|
|
$this->registerEvent('pubsubunsubscribed', 'onPubsubUnsubscribed');
|
|
}
|
|
|
|
function onPubsubSubscribed($params)
|
|
{
|
|
$html = $this->prepareGroup($params[0], $params[1]);
|
|
RPC::call('setBookmark');
|
|
RPC::call('movim_fill', 'node', $html);
|
|
RPC::call('movim_reload_this');
|
|
}
|
|
|
|
function onPubsubSubscribedError($params)
|
|
{
|
|
$this->onPubsubSubscribed($params);
|
|
}
|
|
|
|
function onPubsubUnsubscribed($params)
|
|
{
|
|
$this->onPubsubSubscribed($params);
|
|
}
|
|
|
|
function onStream($payload) {
|
|
$html = $this->prepareGroup($payload['from'], $payload['node']);
|
|
|
|
if($html == '')
|
|
$html = t("Your feed cannot be loaded.");
|
|
RPC::call('movim_fill', md5($payload['from'].$payload['node']), $html);
|
|
}
|
|
|
|
function ajaxGetItems($server, $node)
|
|
{
|
|
$r = new moxl\PubsubGetItems();
|
|
$r->setTo($server)
|
|
->setNode($node)
|
|
->request();
|
|
}
|
|
|
|
function ajaxSubscribe($data, $server, $node)
|
|
{
|
|
$g = new moxl\PusubSubscribe();
|
|
$g->setTo($server)
|
|
->setNode($node)
|
|
->setFrom($this->user->getLogin())
|
|
->setData($data)
|
|
->request();
|
|
}
|
|
|
|
function ajaxUnsubscribe($server, $node)
|
|
{
|
|
$sd = new \modl\SubscriptionDAO();
|
|
|
|
foreach($sd->get($server, $node) as $s) {
|
|
$g = new moxl\PubsubUnsubscribe();
|
|
$g->setTo($server)
|
|
->setNode($node)
|
|
->setSubid($s->subid)
|
|
->setFrom($this->user->getLogin())
|
|
->request();
|
|
}
|
|
}
|
|
|
|
function ajaxGetSubscriptions($server, $node)
|
|
{
|
|
$r = new moxl\PubsubGetSubscriptions();
|
|
$r->setTo($server)
|
|
->setNode($node)
|
|
->request();
|
|
}
|
|
|
|
function prepareGroup($serverid, $groupid) {
|
|
if($this->searchSubscription($serverid, $groupid))
|
|
$button = '
|
|
<a
|
|
href="#"
|
|
class="button color icon back"
|
|
onclick="movim_toggle_display(\'#groupunsubscribe\')">
|
|
'.t('Unsubscribe').'
|
|
</a>';
|
|
else
|
|
$button = '
|
|
<a
|
|
href="#"
|
|
class="button color green icon next"
|
|
onclick="movim_toggle_display(\'#groupsubscribe\')">
|
|
'.t('Subscribe').'
|
|
</a>';
|
|
|
|
$html = '
|
|
<div class="breadcrumb">
|
|
<a href="'.Route::urlize('explore').'">
|
|
'.t('Explore').'
|
|
</a>
|
|
<a href="'.Route::urlize('server', $serverid).'">
|
|
'.$serverid.'
|
|
</a>
|
|
<a href="'.Route::urlize('node', array($serverid, $groupid)).'">
|
|
'.$groupid.'
|
|
</a>
|
|
<a>'.t('Posts').'</a>
|
|
</div>
|
|
<div class="posthead">
|
|
'.$button.'
|
|
<a
|
|
href="#"
|
|
onclick="'.$this->genCallAjax('ajaxGetItems', "'".$serverid."'", "'".$groupid."'").'
|
|
this.className=\'button tiny icon loading\'; this.onclick=null;"
|
|
class="button color blue icon refresh">
|
|
'.('Refresh').'
|
|
</a>
|
|
|
|
<a
|
|
class="button color orange icon yes"
|
|
onclick="
|
|
'.$this->genCallAjax('ajaxGetSubscriptions', "'".$serverid."'", "'".$groupid."'").'"
|
|
>'.t('Get Subscription').'</a>
|
|
</div>
|
|
|
|
<div class="popup" id="groupsubscribe">
|
|
<form name="groupsubscribe">
|
|
<fieldset>
|
|
<legend>'.t('Subscribe').'</legend>
|
|
<div class="element large mini">
|
|
<input type="checkbox" name="listgroup" id="listgroup"/>
|
|
<span><label for="listgroup">'.t('Make your membership to this group public to your friends').'</label></span>
|
|
</div>
|
|
<div class="element large mini">
|
|
<input type="text" name="title" value="'.$groupid.'" id="grouptitle"/>
|
|
<span><label for="grouptitle">'.t('Give a nickname to this group if you want').'</label></span>
|
|
</div>
|
|
</fieldset>
|
|
<a
|
|
class="button tiny icon yes black merged left"
|
|
onclick="
|
|
'.$this->genCallAjax('ajaxSubscribe', "movim_parse_form('groupsubscribe')", "'".$serverid."'", "'".$groupid."'").'
|
|
this.onclick=null;"
|
|
>'.t('Subscribe').'</a><a
|
|
class="button tiny icon black merged right"
|
|
onclick="
|
|
movim_toggle_display(\'#groupsubscribe\');"
|
|
>'.t('Close').'</a>
|
|
</form>
|
|
</div>
|
|
<div class="popup" id="groupunsubscribe">
|
|
<form name="groupunsubscribe">
|
|
<fieldset>
|
|
<legend>'.t('Unsubscribe').'</legend>
|
|
<div class="element large mini">
|
|
<span>'.t('Are you sure ?').'</span>
|
|
</div>
|
|
</fieldset>
|
|
<a
|
|
class="button tiny icon yes black merged left"
|
|
onclick="
|
|
'.$this->genCallAjax('ajaxUnsubscribe', "'".$serverid."'", "'".$groupid."'").'
|
|
this.onclick=null;"
|
|
>'.t('Unsubscribe').'</a><a
|
|
class="button tiny icon black merged right"
|
|
onclick="
|
|
movim_toggle_display(\'#groupunsubscribe\');"
|
|
>'.t('Close').'</a>
|
|
</form>
|
|
</div>';
|
|
|
|
$title = '';
|
|
|
|
$pd = new modl\PostnDAO();
|
|
$posts = $pd->getNode($serverid, $groupid, 0, 10);
|
|
|
|
$html .= $title;
|
|
|
|
if($this->searchSubscription($serverid, $groupid))
|
|
$html .= $this->prepareSubmitForm($serverid, $groupid);
|
|
|
|
$html .= $this->preparePosts($posts);
|
|
|
|
return $html;
|
|
}
|
|
|
|
function searchSubscribed($server, $node) {
|
|
$c = Cache::c('bookmark');
|
|
foreach($c as $bookmark) {
|
|
if(
|
|
$bookmark['type'] == 'subscription' &&
|
|
$bookmark['server'] == $server &&
|
|
$bookmark['node'] == $node) {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
function searchSubscription($server, $node) {
|
|
$sd = new \modl\SubscriptionDAO();
|
|
|
|
foreach($sd->get($server, $node) as $s) {
|
|
if($s->subscription == 'subscribed')
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
function build()
|
|
{
|
|
?>
|
|
<div class="tabelem protect red" id="node" title="<?php echo t('Posts'); ?>">
|
|
<div id="<?php echo md5($_GET['s'].$_GET['n']); ?>">
|
|
<?php echo $this->prepareGroup($_GET['s'], $_GET['n']); ?>
|
|
</div>
|
|
</div>
|
|
<?php
|
|
}
|
|
}
|