Merge pull request #7154 from MrPetovan/task/refactor-widgets
Refactor widgets
This commit is contained in:
commit
a758671a1b
38 changed files with 260 additions and 309 deletions
|
@ -59,7 +59,7 @@ function cal_init(App $a)
|
|||
|
||||
$account_type = Contact::getAccountType($profile);
|
||||
|
||||
$tpl = Renderer::getMarkupTemplate("vcard-widget.tpl");
|
||||
$tpl = Renderer::getMarkupTemplate("widget/vcard.tpl");
|
||||
|
||||
$vcard_widget = Renderer::replaceMacros($tpl, [
|
||||
'$name' => $profile['name'],
|
||||
|
|
|
@ -47,7 +47,7 @@ function common_content(App $a)
|
|||
$contact = DBA::selectFirst('contact', ['name', 'url', 'photo', 'uid', 'id'], ['self' => true, 'uid' => $uid]);
|
||||
|
||||
if (DBA::isResult($contact)) {
|
||||
$vcard_widget = Renderer::replaceMacros(Renderer::getMarkupTemplate("vcard-widget.tpl"), [
|
||||
$vcard_widget = Renderer::replaceMacros(Renderer::getMarkupTemplate("widget/vcard.tpl"), [
|
||||
'$name' => $contact['name'],
|
||||
'$photo' => $contact['photo'],
|
||||
'url' => 'contact/' . $cid
|
||||
|
|
|
@ -61,7 +61,7 @@ function photos_init(App $a) {
|
|||
|
||||
$account_type = Contact::getAccountType($profile);
|
||||
|
||||
$tpl = Renderer::getMarkupTemplate("vcard-widget.tpl");
|
||||
$tpl = Renderer::getMarkupTemplate("widget/vcard.tpl");
|
||||
|
||||
$vcard_widget = Renderer::replaceMacros($tpl, [
|
||||
'$name' => $profile['name'],
|
||||
|
|
|
@ -49,7 +49,7 @@ function videos_init(App $a)
|
|||
|
||||
$account_type = Contact::getAccountType($profile);
|
||||
|
||||
$tpl = Renderer::getMarkupTemplate("vcard-widget.tpl");
|
||||
$tpl = Renderer::getMarkupTemplate("widget/vcard.tpl");
|
||||
|
||||
$vcard_widget = Renderer::replaceMacros($tpl, [
|
||||
'$name' => $profile['name'],
|
||||
|
|
|
@ -105,7 +105,6 @@ class Router
|
|||
$collector->addRoute(['GET'], '/{id:\d+}/posts', Module\Contact::class);
|
||||
$collector->addRoute(['GET'], '/{id:\d+}/update', Module\Contact::class);
|
||||
$collector->addRoute(['GET'], '/{id:\d+}/updateprofile', Module\Contact::class);
|
||||
$collector->addRoute(['GET'], '/all', Module\Contact::class);
|
||||
$collector->addRoute(['GET'], '/archived', Module\Contact::class);
|
||||
$collector->addRoute(['GET', 'POST'], '/batch', Module\Contact::class);
|
||||
$collector->addRoute(['GET'], '/blocked', Module\Contact::class);
|
||||
|
|
|
@ -31,7 +31,7 @@ class Widget
|
|||
*/
|
||||
public static function follow($value = "")
|
||||
{
|
||||
return Renderer::replaceMacros(Renderer::getMarkupTemplate('follow.tpl'), array(
|
||||
return Renderer::replaceMacros(Renderer::getMarkupTemplate('widget/follow.tpl'), array(
|
||||
'$connect' => L10n::t('Add New Contact'),
|
||||
'$desc' => L10n::t('Enter address or web location'),
|
||||
'$hint' => L10n::t('Example: bob@example.com, http://example.com/barbara'),
|
||||
|
@ -74,7 +74,7 @@ class Widget
|
|||
$aside = [];
|
||||
$aside['$nv'] = $nv;
|
||||
|
||||
return Renderer::replaceMacros(Renderer::getMarkupTemplate('peoplefind.tpl'), $aside);
|
||||
return Renderer::replaceMacros(Renderer::getMarkupTemplate('widget/peoplefind.tpl'), $aside);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -120,6 +120,46 @@ class Widget
|
|||
return $network_filter;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $type
|
||||
* @param string $title
|
||||
* @param string $desc
|
||||
* @param string $all
|
||||
* @param string $baseUrl
|
||||
* @param array $options
|
||||
* @param string $selected
|
||||
* @return string
|
||||
* @throws \Exception
|
||||
*/
|
||||
public static function filter($type, $title, $desc, $all, $baseUrl, array $options, $selected = null)
|
||||
{
|
||||
$queryString = parse_url($baseUrl, PHP_URL_QUERY);
|
||||
$queryArray = [];
|
||||
|
||||
if ($queryString) {
|
||||
parse_str($queryString, $queryArray);
|
||||
unset($queryArray[$type]);
|
||||
|
||||
if (count($queryArray)) {
|
||||
$baseUrl = substr($baseUrl, 0, strpos($baseUrl, '?')) . '?' . http_build_query($queryArray) . '&';
|
||||
} else {
|
||||
$baseUrl = substr($baseUrl, 0, strpos($baseUrl, '?')) . '?';
|
||||
}
|
||||
} else {
|
||||
$baseUrl = trim($baseUrl, '?') . '?';
|
||||
}
|
||||
|
||||
return Renderer::replaceMacros(Renderer::getMarkupTemplate('widget/filter.tpl'), [
|
||||
'$type' => $type,
|
||||
'$title' => $title,
|
||||
'$desc' => $desc,
|
||||
'$selected' => $selected,
|
||||
'$all_label' => $all,
|
||||
'$options' => $options,
|
||||
'$base' => $baseUrl,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return networks widget
|
||||
*
|
||||
|
@ -146,7 +186,7 @@ class Widget
|
|||
|
||||
$nets = array();
|
||||
while ($rr = DBA::fetch($r)) {
|
||||
$nets[] = array('ref' => $rr['network'], 'name' => ContactSelector::networkToName($rr['network']), 'selected' => (($selected == $rr['network']) ? 'selected' : '' ));
|
||||
$nets[] = ['ref' => $rr['network'], 'name' => ContactSelector::networkToName($rr['network'])];
|
||||
}
|
||||
DBA::close($r);
|
||||
|
||||
|
@ -154,14 +194,15 @@ class Widget
|
|||
return '';
|
||||
}
|
||||
|
||||
return Renderer::replaceMacros(Renderer::getMarkupTemplate('nets.tpl'), array(
|
||||
'$title' => L10n::t('Protocols'),
|
||||
'$desc' => '',
|
||||
'$sel_all' => (($selected == '') ? 'selected' : ''),
|
||||
'$all' => L10n::t('All Protocols'),
|
||||
'$nets' => $nets,
|
||||
'$base' => $baseurl,
|
||||
));
|
||||
return self::filter(
|
||||
'nets',
|
||||
L10n::t('Protocols'),
|
||||
'',
|
||||
L10n::t('All Protocols'),
|
||||
$baseurl,
|
||||
$nets,
|
||||
$selected
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -183,25 +224,26 @@ class Widget
|
|||
return;
|
||||
}
|
||||
|
||||
$matches = false;
|
||||
$matches = [];
|
||||
$terms = array();
|
||||
$cnt = preg_match_all('/\[(.*?)\]/', $saved, $matches, PREG_SET_ORDER);
|
||||
if ($cnt) {
|
||||
foreach ($matches as $mtch)
|
||||
{
|
||||
$unescaped = XML::escape(FileTag::decode($mtch[1]));
|
||||
$terms[] = array('name' => $unescaped, 'selected' => (($selected == $unescaped) ? 'selected' : ''));
|
||||
$terms[] = ['ref' => $unescaped, 'name' => $unescaped];
|
||||
}
|
||||
}
|
||||
|
||||
return Renderer::replaceMacros(Renderer::getMarkupTemplate('fileas_widget.tpl'), array(
|
||||
'$title' => L10n::t('Saved Folders'),
|
||||
'$desc' => '',
|
||||
'$sel_all' => (($selected == '') ? 'selected' : ''),
|
||||
'$all' => L10n::t('Everything'),
|
||||
'$terms' => $terms,
|
||||
'$base' => $baseurl,
|
||||
));
|
||||
return self::filter(
|
||||
'file',
|
||||
L10n::t('Saved Folders'),
|
||||
'',
|
||||
L10n::t('Everything'),
|
||||
$baseurl,
|
||||
$terms,
|
||||
$selected
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -225,25 +267,26 @@ class Widget
|
|||
return;
|
||||
}
|
||||
|
||||
$matches = false;
|
||||
$matches = [];
|
||||
$terms = array();
|
||||
$cnt = preg_match_all('/<(.*?)>/', $saved, $matches, PREG_SET_ORDER);
|
||||
|
||||
if ($cnt) {
|
||||
foreach ($matches as $mtch) {
|
||||
$unescaped = XML::escape(FileTag::decode($mtch[1]));
|
||||
$terms[] = array('name' => $unescaped, 'selected' => (($selected == $unescaped) ? 'selected' : ''));
|
||||
$terms[] = ['ref' => $unescaped, 'name' => $unescaped];
|
||||
}
|
||||
}
|
||||
|
||||
return Renderer::replaceMacros(Renderer::getMarkupTemplate('categories_widget.tpl'), array(
|
||||
'$title' => L10n::t('Categories'),
|
||||
'$desc' => '',
|
||||
'$sel_all' => (($selected == '') ? 'selected' : ''),
|
||||
'$all' => L10n::t('Everything'),
|
||||
'$terms' => $terms,
|
||||
'$base' => $baseurl,
|
||||
));
|
||||
return self::filter(
|
||||
'category',
|
||||
L10n::t('Categories'),
|
||||
'',
|
||||
L10n::t('Everything'),
|
||||
$baseurl,
|
||||
$terms,
|
||||
$selected
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -319,7 +362,7 @@ class Widget
|
|||
$entries[] = $entry;
|
||||
}
|
||||
|
||||
$tpl = Renderer::getMarkupTemplate('remote_friends_common.tpl');
|
||||
$tpl = Renderer::getMarkupTemplate('widget/remote_friends_common.tpl');
|
||||
return Renderer::replaceMacros($tpl, [
|
||||
'$desc' => L10n::tt("%d contact in common", "%d contacts in common", $t),
|
||||
'$base' => System::baseUrl(),
|
||||
|
|
|
@ -59,7 +59,7 @@ class CalendarExport
|
|||
// of the profile page it should be the personal /events page. So we can use $a->user.
|
||||
$user = defaults($a->data['user'], 'nickname', $a->user['nickname']);
|
||||
|
||||
$tpl = Renderer::getMarkupTemplate("events_aside.tpl");
|
||||
$tpl = Renderer::getMarkupTemplate("widget/events.tpl");
|
||||
$return = Renderer::replaceMacros($tpl, [
|
||||
'$etitle' => L10n::t("Export"),
|
||||
'$export_ical' => L10n::t("Export calendar as ical"),
|
||||
|
|
|
@ -26,7 +26,7 @@ class ContactBlock
|
|||
/**
|
||||
* Get HTML for contact block
|
||||
*
|
||||
* @template contact_block.tpl
|
||||
* @template widget/contacts.tpl
|
||||
* @hook contact_block_end (contacts=>array, output=>string)
|
||||
* @return string
|
||||
*/
|
||||
|
@ -102,7 +102,7 @@ class ContactBlock
|
|||
DBA::close($contact_ids_stmt);
|
||||
}
|
||||
|
||||
$tpl = Renderer::getMarkupTemplate('contact_block.tpl');
|
||||
$tpl = Renderer::getMarkupTemplate('widget/contacts.tpl');
|
||||
$o = Renderer::replaceMacros($tpl, [
|
||||
'$contacts' => $contacts_title,
|
||||
'$nickname' => $profile['nickname'],
|
||||
|
|
|
@ -49,7 +49,7 @@ class TagCloud
|
|||
$tags[] = $tag;
|
||||
}
|
||||
|
||||
$tpl = Renderer::getMarkupTemplate('tagblock_widget.tpl');
|
||||
$tpl = Renderer::getMarkupTemplate('widget/tagcloud.tpl');
|
||||
$o = Renderer::replaceMacros($tpl, [
|
||||
'$title' => L10n::t('Tags'),
|
||||
'$tags' => $tags
|
||||
|
|
|
@ -18,6 +18,8 @@ use Friendica\Core\System;
|
|||
use Friendica\Core\Worker;
|
||||
use Friendica\Database\DBA;
|
||||
use Friendica\Model;
|
||||
use Friendica\Network\HTTPException\BadRequestException;
|
||||
use Friendica\Network\HTTPException\NotFoundException;
|
||||
use Friendica\Network\Probe;
|
||||
use Friendica\Util\DateTimeFormat;
|
||||
use Friendica\Util\Proxy as ProxyUtils;
|
||||
|
@ -30,102 +32,6 @@ use Friendica\Util\Strings;
|
|||
*/
|
||||
class Contact extends BaseModule
|
||||
{
|
||||
public static function init()
|
||||
{
|
||||
$a = self::getApp();
|
||||
|
||||
if (!local_user()) {
|
||||
return;
|
||||
}
|
||||
|
||||
$nets = defaults($_GET, 'nets', '');
|
||||
|
||||
if (empty($a->page['aside'])) {
|
||||
$a->page['aside'] = '';
|
||||
}
|
||||
|
||||
$contact_id = null;
|
||||
$contact = null;
|
||||
// @TODO: Replace with parameter from router
|
||||
if ($a->argc == 2 && intval($a->argv[1])
|
||||
|| $a->argc == 3 && intval($a->argv[1]) && in_array($a->argv[2], ['posts', 'conversations'])
|
||||
) {
|
||||
$contact_id = intval($a->argv[1]);
|
||||
$contact = DBA::selectFirst('contact', [], ['id' => $contact_id, 'uid' => local_user(), 'deleted' => false]);
|
||||
|
||||
if (!DBA::isResult($contact)) {
|
||||
$contact = DBA::selectFirst('contact', [], ['id' => $contact_id, 'uid' => 0, 'deleted' => false]);
|
||||
}
|
||||
|
||||
// Don't display contacts that are about to be deleted
|
||||
if ($contact['network'] == Protocol::PHANTOM) {
|
||||
$contact = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (DBA::isResult($contact)) {
|
||||
if ($contact['self']) {
|
||||
// @TODO: Replace with parameter from router
|
||||
if (($a->argc == 3) && intval($a->argv[1]) && in_array($a->argv[2], ['posts', 'conversations'])) {
|
||||
$a->internalRedirect('profile/' . $contact['nick']);
|
||||
} else {
|
||||
$a->internalRedirect('profile/' . $contact['nick'] . '?tab=profile');
|
||||
}
|
||||
}
|
||||
|
||||
$a->data['contact'] = $contact;
|
||||
|
||||
if (($contact['network'] != '') && ($contact['network'] != Protocol::DFRN)) {
|
||||
$network_link = Strings::formatNetworkName($contact['network'], $contact['url']);
|
||||
} else {
|
||||
$network_link = '';
|
||||
}
|
||||
|
||||
$vcard_widget = Renderer::replaceMacros(Renderer::getMarkupTemplate('vcard-widget.tpl'), [
|
||||
'$name' => $contact['name'],
|
||||
'$photo' => $contact['photo'],
|
||||
'$url' => Model\Contact::MagicLink($contact['url']),
|
||||
'$addr' => defaults($contact, 'addr', ''),
|
||||
'$network_link' => $network_link,
|
||||
'$network' => L10n::t('Network:'),
|
||||
'$account_type' => Model\Contact::getAccountType($contact)
|
||||
]);
|
||||
|
||||
$findpeople_widget = '';
|
||||
$follow_widget = '';
|
||||
$networks_widget = '';
|
||||
} else {
|
||||
$vcard_widget = '';
|
||||
$networks_widget = Widget::networks('contact', $nets);
|
||||
if (isset($_GET['add'])) {
|
||||
$follow_widget = Widget::follow($_GET['add']);
|
||||
} else {
|
||||
$follow_widget = Widget::follow();
|
||||
}
|
||||
|
||||
$findpeople_widget = Widget::findPeople();
|
||||
}
|
||||
|
||||
if ($contact['uid'] != 0) {
|
||||
$groups_widget = Model\Group::sidebarWidget('contact', 'group', 'full', 'everyone', $contact_id);
|
||||
} else {
|
||||
$groups_widget = null;
|
||||
}
|
||||
|
||||
$a->page['aside'] .= Renderer::replaceMacros(Renderer::getMarkupTemplate('contacts-widget-sidebar.tpl'), [
|
||||
'$vcard_widget' => $vcard_widget,
|
||||
'$findpeople_widget' => $findpeople_widget,
|
||||
'$follow_widget' => $follow_widget,
|
||||
'$groups_widget' => $groups_widget,
|
||||
'$networks_widget' => $networks_widget
|
||||
]);
|
||||
|
||||
$tpl = Renderer::getMarkupTemplate('contacts-head.tpl');
|
||||
$a->page['htmlhead'] .= Renderer::replaceMacros($tpl, [
|
||||
'$baseurl' => $a->getBaseURL(true),
|
||||
]);
|
||||
}
|
||||
|
||||
private static function batchActions(App $a)
|
||||
{
|
||||
if (empty($_POST['contact_batch']) || !is_array($_POST['contact_batch'])) {
|
||||
|
@ -353,7 +259,93 @@ class Contact extends BaseModule
|
|||
|
||||
public static function content($update = 0)
|
||||
{
|
||||
if (!local_user()) {
|
||||
return Login::form($_SERVER['REQUET_URI']);
|
||||
}
|
||||
|
||||
$a = self::getApp();
|
||||
|
||||
$nets = defaults($_GET, 'nets', '');
|
||||
|
||||
if (empty($a->page['aside'])) {
|
||||
$a->page['aside'] = '';
|
||||
}
|
||||
|
||||
$contact_id = null;
|
||||
$contact = null;
|
||||
// @TODO: Replace with parameter from router
|
||||
if ($a->argc == 2 && intval($a->argv[1])
|
||||
|| $a->argc == 3 && intval($a->argv[1]) && in_array($a->argv[2], ['posts', 'conversations'])
|
||||
) {
|
||||
$contact_id = intval($a->argv[1]);
|
||||
$contact = DBA::selectFirst('contact', [], ['id' => $contact_id, 'uid' => local_user(), 'deleted' => false]);
|
||||
|
||||
if (!DBA::isResult($contact)) {
|
||||
$contact = DBA::selectFirst('contact', [], ['id' => $contact_id, 'uid' => 0, 'deleted' => false]);
|
||||
}
|
||||
|
||||
// Don't display contacts that are about to be deleted
|
||||
if ($contact['network'] == Protocol::PHANTOM) {
|
||||
$contact = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (DBA::isResult($contact)) {
|
||||
if ($contact['self']) {
|
||||
// @TODO: Replace with parameter from router
|
||||
if (($a->argc == 3) && intval($a->argv[1]) && in_array($a->argv[2], ['posts', 'conversations'])) {
|
||||
$a->internalRedirect('profile/' . $contact['nick']);
|
||||
} else {
|
||||
$a->internalRedirect('profile/' . $contact['nick'] . '?tab=profile');
|
||||
}
|
||||
}
|
||||
|
||||
$a->data['contact'] = $contact;
|
||||
|
||||
if (($contact['network'] != '') && ($contact['network'] != Protocol::DFRN)) {
|
||||
$network_link = Strings::formatNetworkName($contact['network'], $contact['url']);
|
||||
} else {
|
||||
$network_link = '';
|
||||
}
|
||||
|
||||
$vcard_widget = Renderer::replaceMacros(Renderer::getMarkupTemplate('widget/vcard.tpl'), [
|
||||
'$name' => $contact['name'],
|
||||
'$photo' => $contact['photo'],
|
||||
'$url' => Model\Contact::magicLinkByContact($contact, $contact['url']),
|
||||
'$addr' => defaults($contact, 'addr', ''),
|
||||
'$network_link' => $network_link,
|
||||
'$network' => L10n::t('Network:'),
|
||||
'$account_type' => Model\Contact::getAccountType($contact)
|
||||
]);
|
||||
|
||||
$findpeople_widget = '';
|
||||
$follow_widget = '';
|
||||
$networks_widget = '';
|
||||
} else {
|
||||
$vcard_widget = '';
|
||||
$findpeople_widget = Widget::findPeople();
|
||||
if (isset($_GET['add'])) {
|
||||
$follow_widget = Widget::follow($_GET['add']);
|
||||
} else {
|
||||
$follow_widget = Widget::follow();
|
||||
}
|
||||
|
||||
$networks_widget = Widget::networks($_SERVER['REQUEST_URI'], $nets);
|
||||
}
|
||||
|
||||
if ($contact['uid'] != 0) {
|
||||
$groups_widget = Model\Group::sidebarWidget('contact', 'group', 'full', 'everyone', $contact_id);
|
||||
} else {
|
||||
$groups_widget = null;
|
||||
}
|
||||
|
||||
$a->page['aside'] .= $vcard_widget . $findpeople_widget . $follow_widget . $groups_widget . $networks_widget;
|
||||
|
||||
$tpl = Renderer::getMarkupTemplate('contacts-head.tpl');
|
||||
$a->page['htmlhead'] .= Renderer::replaceMacros($tpl, [
|
||||
'$baseurl' => $a->getBaseURL(true),
|
||||
]);
|
||||
|
||||
$sort_type = 0;
|
||||
$o = '';
|
||||
Nav::setSelected('contact');
|
||||
|
@ -366,7 +358,7 @@ class Contact extends BaseModule
|
|||
if ($a->argc == 3) {
|
||||
$contact_id = intval($a->argv[1]);
|
||||
if (!$contact_id) {
|
||||
return;
|
||||
throw new BadRequestException();
|
||||
}
|
||||
|
||||
// @TODO: Replace with parameter from router
|
||||
|
@ -374,9 +366,7 @@ class Contact extends BaseModule
|
|||
|
||||
$orig_record = DBA::selectFirst('contact', [], ['id' => $contact_id, 'uid' => [0, local_user()], 'self' => false, 'deleted' => false]);
|
||||
if (!DBA::isResult($orig_record)) {
|
||||
notice(L10n::t('Could not access contact record.') . EOL);
|
||||
$a->internalRedirect('contact');
|
||||
return; // NOTREACHED
|
||||
throw new NotFoundException(L10n::t('Contact not found'));
|
||||
}
|
||||
|
||||
if ($cmd === 'update' && ($orig_record['uid'] != 0)) {
|
||||
|
@ -398,7 +388,7 @@ class Contact extends BaseModule
|
|||
info(($blocked ? L10n::t('Contact has been blocked') : L10n::t('Contact has been unblocked')) . EOL);
|
||||
|
||||
$a->internalRedirect('contact/' . $contact_id);
|
||||
return; // NOTREACHED
|
||||
// NOTREACHED
|
||||
}
|
||||
|
||||
if ($cmd === 'ignore') {
|
||||
|
@ -408,7 +398,7 @@ class Contact extends BaseModule
|
|||
info(($ignored ? L10n::t('Contact has been ignored') : L10n::t('Contact has been unignored')) . EOL);
|
||||
|
||||
$a->internalRedirect('contact/' . $contact_id);
|
||||
return; // NOTREACHED
|
||||
// NOTREACHED
|
||||
}
|
||||
|
||||
if ($cmd === 'archive' && ($orig_record['uid'] != 0)) {
|
||||
|
@ -419,7 +409,7 @@ class Contact extends BaseModule
|
|||
}
|
||||
|
||||
$a->internalRedirect('contact/' . $contact_id);
|
||||
return; // NOTREACHED
|
||||
// NOTREACHED
|
||||
}
|
||||
|
||||
if ($cmd === 'drop' && ($orig_record['uid'] != 0)) {
|
||||
|
@ -459,7 +449,7 @@ class Contact extends BaseModule
|
|||
info(L10n::t('Contact has been removed.') . EOL);
|
||||
|
||||
$a->internalRedirect('contact');
|
||||
return; // NOTREACHED
|
||||
// NOTREACHED
|
||||
}
|
||||
if ($cmd === 'posts') {
|
||||
return self::getPostsHTML($a, $contact_id);
|
||||
|
@ -664,30 +654,24 @@ class Contact extends BaseModule
|
|||
return $arr['output'];
|
||||
}
|
||||
|
||||
$blocked = false;
|
||||
$hidden = false;
|
||||
$ignored = false;
|
||||
$archived = false;
|
||||
$all = false;
|
||||
|
||||
// @TODO: Replace with parameter from router
|
||||
if (($a->argc == 2) && ($a->argv[1] === 'all')) {
|
||||
$sql_extra = '';
|
||||
$all = true;
|
||||
} elseif (($a->argc == 2) && ($a->argv[1] === 'blocked')) {
|
||||
$sql_extra = " AND `blocked` = 1 ";
|
||||
$blocked = true;
|
||||
} elseif (($a->argc == 2) && ($a->argv[1] === 'hidden')) {
|
||||
$sql_extra = " AND `hidden` = 1 ";
|
||||
$hidden = true;
|
||||
} elseif (($a->argc == 2) && ($a->argv[1] === 'ignored')) {
|
||||
$sql_extra = " AND `readonly` = 1 ";
|
||||
$ignored = true;
|
||||
} elseif (($a->argc == 2) && ($a->argv[1] === 'archived')) {
|
||||
$sql_extra = " AND `archive` = 1 ";
|
||||
$archived = true;
|
||||
} else {
|
||||
$sql_extra = " AND `blocked` = 0 ";
|
||||
$type = defaults($a->argv, 1, '');
|
||||
|
||||
switch ($type) {
|
||||
case 'blocked':
|
||||
$sql_extra = " AND `blocked` = 1";
|
||||
break;
|
||||
case 'hidden':
|
||||
$sql_extra = " AND `hidden` = 1 AND `blocked` = 0";
|
||||
break;
|
||||
case 'ignored':
|
||||
$sql_extra = " AND `readonly` = 1 AND `blocked` = 0";
|
||||
break;
|
||||
case 'archived':
|
||||
$sql_extra = " AND `archive` = 1 AND `blocked` = 0";
|
||||
break;
|
||||
default:
|
||||
$sql_extra = " AND `blocked` = 0";
|
||||
}
|
||||
|
||||
$sql_extra .= sprintf(" AND `network` != '%s' ", Protocol::PHANTOM);
|
||||
|
@ -696,34 +680,18 @@ class Contact extends BaseModule
|
|||
$nets = Strings::escapeTags(trim(defaults($_GET, 'nets' , '')));
|
||||
|
||||
$tabs = [
|
||||
[
|
||||
'label' => L10n::t('Suggestions'),
|
||||
'url' => 'suggest',
|
||||
'sel' => '',
|
||||
'title' => L10n::t('Suggest potential friends'),
|
||||
'id' => 'suggestions-tab',
|
||||
'accesskey' => 'g',
|
||||
],
|
||||
[
|
||||
'label' => L10n::t('All Contacts'),
|
||||
'url' => 'contact/all',
|
||||
'sel' => ($all) ? 'active' : '',
|
||||
'url' => 'contact',
|
||||
'sel' => !$type ? 'active' : '',
|
||||
'title' => L10n::t('Show all contacts'),
|
||||
'id' => 'showall-tab',
|
||||
'accesskey' => 'l',
|
||||
],
|
||||
[
|
||||
'label' => L10n::t('Unblocked'),
|
||||
'url' => 'contact',
|
||||
'sel' => ((!$all) && (!$blocked) && (!$hidden) && (!$search) && (!$nets) && (!$ignored) && (!$archived)) ? 'active' : '',
|
||||
'title' => L10n::t('Only show unblocked contacts'),
|
||||
'id' => 'showunblocked-tab',
|
||||
'accesskey' => 'o',
|
||||
],
|
||||
[
|
||||
'label' => L10n::t('Blocked'),
|
||||
'url' => 'contact/blocked',
|
||||
'sel' => ($blocked) ? 'active' : '',
|
||||
'sel' => $type == 'blocked' ? 'active' : '',
|
||||
'title' => L10n::t('Only show blocked contacts'),
|
||||
'id' => 'showblocked-tab',
|
||||
'accesskey' => 'b',
|
||||
|
@ -731,7 +699,7 @@ class Contact extends BaseModule
|
|||
[
|
||||
'label' => L10n::t('Ignored'),
|
||||
'url' => 'contact/ignored',
|
||||
'sel' => ($ignored) ? 'active' : '',
|
||||
'sel' => $type == 'ignored' ? 'active' : '',
|
||||
'title' => L10n::t('Only show ignored contacts'),
|
||||
'id' => 'showignored-tab',
|
||||
'accesskey' => 'i',
|
||||
|
@ -739,7 +707,7 @@ class Contact extends BaseModule
|
|||
[
|
||||
'label' => L10n::t('Archived'),
|
||||
'url' => 'contact/archived',
|
||||
'sel' => ($archived) ? 'active' : '',
|
||||
'sel' => $type == 'archived' ? 'active' : '',
|
||||
'title' => L10n::t('Only show archived contacts'),
|
||||
'id' => 'showarchived-tab',
|
||||
'accesskey' => 'y',
|
||||
|
@ -747,7 +715,7 @@ class Contact extends BaseModule
|
|||
[
|
||||
'label' => L10n::t('Hidden'),
|
||||
'url' => 'contact/hidden',
|
||||
'sel' => ($hidden) ? 'active' : '',
|
||||
'sel' => $type == 'hidden' ? 'active' : '',
|
||||
'title' => L10n::t('Only show hidden contacts'),
|
||||
'id' => 'showhidden-tab',
|
||||
'accesskey' => 'h',
|
||||
|
@ -755,7 +723,7 @@ class Contact extends BaseModule
|
|||
[
|
||||
'label' => L10n::t('Groups'),
|
||||
'url' => 'group',
|
||||
'sel' => ($hidden) ? 'active' : '',
|
||||
'sel' => '',
|
||||
'title' => L10n::t('Organize your contact groups'),
|
||||
'id' => 'contactgroups-tab',
|
||||
'accesskey' => 'e',
|
||||
|
@ -809,9 +777,18 @@ class Contact extends BaseModule
|
|||
}
|
||||
}
|
||||
|
||||
switch ($type) {
|
||||
case 'blocked': $header .= ' - ' . L10n::t('Blocked'); break;
|
||||
case 'hidden': $header .= ' - ' . L10n::t('Hidden'); break;
|
||||
case 'ignored': $header .= ' - ' . L10n::t('Ignored'); break;
|
||||
case 'archived': $header .= ' - ' . L10n::t('Archived'); break;
|
||||
}
|
||||
|
||||
$header .= $nets ? ' - ' . ContactSelector::networkToName($nets) : '';
|
||||
|
||||
$tpl = Renderer::getMarkupTemplate('contacts-template.tpl');
|
||||
$o .= Renderer::replaceMacros($tpl, [
|
||||
'$header' => L10n::t('Contacts') . (($nets) ? ' - ' . ContactSelector::networkToName($nets) : ''),
|
||||
'$header' => $header,
|
||||
'$tabs' => $t,
|
||||
'$total' => $total,
|
||||
'$search' => $search_hdr,
|
||||
|
|
|
@ -1,13 +0,0 @@
|
|||
|
||||
<div id="categories-sidebar" class="widget">
|
||||
<h3>{{$title}}</h3>
|
||||
<div id="nets-desc">{{$desc nofilter}}</div>
|
||||
|
||||
<ul class="categories-ul">
|
||||
<li class="tool"><a href="{{$base}}" class="categories-link categories-all{{if $sel_all}} categories-selected{{/if}}">{{$all}}</a></li>
|
||||
{{foreach $terms as $term}}
|
||||
<li class="tool"><a href="{{$base}}?f=&category={{$term.name}}" class="categories-link{{if $term.selected}} categories-selected{{/if}}">{{$term.name}}</a></li>
|
||||
{{/foreach}}
|
||||
</ul>
|
||||
|
||||
</div>
|
|
@ -1,7 +0,0 @@
|
|||
|
||||
{{$vcard_widget nofilter}}
|
||||
{{$findpeople_widget nofilter}}
|
||||
{{$follow_widget nofilter}}
|
||||
{{$groups_widget nofilter}}
|
||||
{{$networks_widget nofilter}}
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
|
||||
<div id="fileas-sidebar" class="widget">
|
||||
<h3>{{$title}}</h3>
|
||||
<div id="nets-desc">{{$desc nofilter}}</div>
|
||||
|
||||
<ul class="fileas-ul">
|
||||
<li class="tool"><a href="{{$base}}" class="fileas-link fileas-all{{if $sel_all}} fileas-selected{{/if}}">{{$all}}</a></li>
|
||||
{{foreach $terms as $term}}
|
||||
<li class="tool"><a href="{{$base}}?f=&file={{$term.name}}" class="fileas-link{{if $term.selected}} fileas-selected{{/if}}">{{$term.name}}</a></li>
|
||||
{{/foreach}}
|
||||
</ul>
|
||||
|
||||
</div>
|
|
@ -1,11 +0,0 @@
|
|||
|
||||
<div id="nets-sidebar" class="widget">
|
||||
<h3>{{$title}}</h3>
|
||||
<div id="nets-desc">{{$desc nofilter}}</div>
|
||||
<a href="{{$base}}" class="nets-link{{if $sel_all}} nets-selected{{/if}} nets-all">{{$all}}</a>
|
||||
<ul role="menu" class="nets-ul">
|
||||
{{foreach $nets as $net}}
|
||||
<li role="menuitem" ><a href="{{$base}}?nets={{$net.ref}}" class="nets-link{{if $net.selected}} nets-selected{{/if}}">{{$net.name}}</a></li>
|
||||
{{/foreach}}
|
||||
</ul>
|
||||
</div>
|
|
@ -2,7 +2,7 @@
|
|||
<div id="contact-block">
|
||||
<h3 class="contact-block-h4">{{$contacts}}</h3>
|
||||
{{if $micropro}}
|
||||
<a class="allcontact-link" href="viewcontacts/{{$nickname}}">{{$viewcontacts}}</a>
|
||||
<a class="allcontact-link" href="profile/{{$nickname}}/contacts">{{$viewcontacts}}</a>
|
||||
<div class='contact-block-content'>
|
||||
{{foreach $micropro as $m}}
|
||||
{{$m nofilter}}
|
11
view/templates/widget/filter.tpl
Normal file
11
view/templates/widget/filter.tpl
Normal file
|
@ -0,0 +1,11 @@
|
|||
|
||||
<div id="{{$type}}-sidebar" class="widget">
|
||||
<h3>{{$title}}</h3>
|
||||
<div id="{{$type}}-desc">{{$desc nofilter}}</div>
|
||||
<ul role="menu" class="{{$type}}-ul">
|
||||
<li role="menuitem" {{if !$selected}}class="selected"{{/if}}><a href="{{$base}}" class="{{$type}}-link{{if !$selected}} {{$type}}-selected{{/if}} {{$type}}-all">{{$all_label}}</a></li>
|
||||
{{foreach $options as $option}}
|
||||
<li role="menuitem" {{if $selected == $option.ref}}class="selected"{{/if}}><a href="{{$base}}{{$type}}={{$option.ref}}" class="{{$type}}-link{{if $selected == $option.ref}} {{$type}}-selected{{/if}}">{{$option.name}}</a></li>
|
||||
{{/foreach}}
|
||||
</ul>
|
||||
</div>
|
|
@ -153,7 +153,7 @@ input#acl-search {
|
|||
background:#2e2f2e;
|
||||
}
|
||||
|
||||
.group-selected, .nets-selected, .fileas-selected, .categories-selected{
|
||||
.widget .selected, .group-selected {
|
||||
background:#2e2f2e;
|
||||
}
|
||||
|
||||
|
|
|
@ -126,7 +126,7 @@ nav #site-location {
|
|||
|
||||
}
|
||||
|
||||
.contact-entry-photo img, .profile-match-photo img, #photo-photo img, .directory-photo-img, .photo-album-photo, .photo-top-photo, .profile-jot-text, .group-selected, .nets-selected, .fileas-selected, #profile-jot-submit, .categories-selected {
|
||||
.contact-entry-photo img, .profile-match-photo img, #photo-photo img, .directory-photo-img, .photo-album-photo, .photo-top-photo, .profile-jot-text, .group-selected, .widget .selected, #profile-jot-submit {
|
||||
border-radius: 3px;
|
||||
-moz-border-radius: 3px;
|
||||
box-shadow: 4px 4px 3px 0 #444444;
|
||||
|
|
|
@ -386,7 +386,7 @@ div.wall-item-content-wrapper.shiny {
|
|||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.group-selected, .nets-selected, .fileas-selected, .categories-selected, .forum-selected {
|
||||
.widget .selected, .group-selected, .forum-selected {
|
||||
padding: 3px;
|
||||
-moz-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
|
@ -2124,11 +2124,11 @@ a.mail-list-link {
|
|||
list-style: none;
|
||||
}
|
||||
|
||||
.nets-ul, .fileas-ul, .categories-ul, .datebrowse-ul {
|
||||
.nets-ul, .fileas-ul, .category-ul, .datebrowse-ul {
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
.nets-ul li, .fileas-ul li, .categories-ul li, .datebrowse-ul li {
|
||||
.nets-ul li, .fileas-ul li, .category-ul li, .datebrowse-ul li {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
|
@ -2139,11 +2139,11 @@ a.mail-list-link {
|
|||
margin-left: 42px;
|
||||
}
|
||||
|
||||
.fileas-link, .categories-link {
|
||||
.fileas-link, .category-link {
|
||||
margin-left: 24px;
|
||||
}
|
||||
|
||||
.fileas-all, .categories-all {
|
||||
.fileas-all, .category-all {
|
||||
margin-left: 0px;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,13 +0,0 @@
|
|||
|
||||
<div id="fileas-sidebar" class="widget">
|
||||
<h3>{{$title}}</h3>
|
||||
<div id="nets-desc">{{$desc nofilter}}</div>
|
||||
|
||||
<ul class="fileas-ul">
|
||||
<li class="tool{{if $sel_all}} selected{{/if}}"><a href="{{$base}}" class="fileas-link fileas-all{{if $sel_all}} fileas-selected{{/if}}">{{$all}}</a></li>
|
||||
{{foreach $terms as $term}}
|
||||
<li class="tool{{if $term.selected}} selected{{/if}}"><a href="{{$base}}?f=&file={{$term.name}}" class="fileas-link{{if $term.selected}} fileas-selected{{/if}}">{{$term.name}}</a></li>
|
||||
{{/foreach}}
|
||||
</ul>
|
||||
|
||||
</div>
|
|
@ -1,11 +0,0 @@
|
|||
|
||||
<div id="nets-sidebar" class="widget">
|
||||
<h3>{{$title}}</h3>
|
||||
<div id="nets-desc">{{$desc nofilter}}</div>
|
||||
<ul role="menu" class="nets-ul">
|
||||
<li role="menuitem" {{if $sel_all}}class="selected"{{/if}}><a href="{{$base}}" class="nets-link{{if $sel_all}} nets-selected{{/if}} nets-all">{{$all}}</a></li>
|
||||
{{foreach $nets as $net}}
|
||||
<li role="menuitem" {{if $net.selected}}class="selected"{{/if}}><a href="{{$base}}?nets={{$net.ref}}" class="nets-link{{if $net.selected}} nets-selected{{/if}}">{{$net.name}}</a></li>
|
||||
{{/foreach}}
|
||||
</ul>
|
||||
</div>
|
|
@ -2,17 +2,17 @@
|
|||
<div id="contact-block">
|
||||
<h3 class="contact-block-h4 pull-left">{{$contacts}}</h3>
|
||||
|
||||
{{if $micropro}}
|
||||
<a class="pull-right widget-action faded-icon" id="contact-block-view-contacts" href="viewcontacts/{{$nickname}}">
|
||||
{{if $micropro}}
|
||||
<a class="pull-right widget-action faded-icon" id="contact-block-view-contacts" href="profile/{{$nickname}}/contacts">
|
||||
<i class="fa fa-eye" aria-hidden="true"></i>
|
||||
<span class="sr-only">{{$viewcontacts}}</span>
|
||||
</a>
|
||||
|
||||
<div class='contact-block-content'>
|
||||
{{foreach $micropro as $m}}
|
||||
{{$m nofilter}}
|
||||
{{/foreach}}
|
||||
{{foreach $micropro as $m}}
|
||||
{{$m nofilter}}
|
||||
{{/foreach}}
|
||||
</div>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
</div>
|
||||
<div class="clear"></div>
|
|
@ -1,12 +0,0 @@
|
|||
<div id="fileas-sidebar" class="widget">
|
||||
<h3>{{$title}}</h3>
|
||||
<div id="nets-desc">{{$desc nofilter}}</div>
|
||||
|
||||
<ul class="fileas-ul">
|
||||
<li class="tool {{if $sel_all}}selected{{/if}}"><a href="{{$base}}" class="fileas-link fileas-all">{{$all}}</a></li>
|
||||
{{foreach $terms as $term}}
|
||||
<li class="tool {{if $term.selected}}selected{{/if}}"><a href="{{$base}}?f=&file={{$term.name}}" class="fileas-link">{{$term.name}}</a></li>
|
||||
{{/foreach}}
|
||||
</ul>
|
||||
|
||||
</div>
|
|
@ -1,12 +0,0 @@
|
|||
<div id="nets-sidebar" class="widget">
|
||||
<h3>{{$title}}</h3>
|
||||
<div id="nets-desc">{{$desc nofilter}}</div>
|
||||
|
||||
<ul class="nets-ul">
|
||||
<li class="tool {{if $sel_all}}selected{{/if}}"><a href="{{$base}}" class="nets-link nets-all">{{$all}}</a>
|
||||
{{foreach $nets as $net}}
|
||||
<li class="tool {{if $net.selected}}selected{{/if}}"><a href="{{$base}}?f=&nets={{$net.ref}}" class="nets-link">{{$net.name}}</a></li>
|
||||
{{/foreach}}
|
||||
</ul>
|
||||
|
||||
</div>
|
14
view/theme/quattro/templates/widget/filter.tpl
Normal file
14
view/theme/quattro/templates/widget/filter.tpl
Normal file
|
@ -0,0 +1,14 @@
|
|||
<div id="{{$type}}-sidebar" class="widget">
|
||||
<h3>{{$title}}</h3>
|
||||
{{if $desc}}
|
||||
<div id="{{$type}}-desc">{{$desc nofilter}}</div>
|
||||
{{/if}}
|
||||
|
||||
<ul class="{{$type}}-ul">
|
||||
<li class="tool {{if !$selected}}selected{{/if}}"><a href="{{$base}}" class="{{$type}}-link {{$type}}-all">{{$all_label}}</a>
|
||||
{{foreach $options as $option}}
|
||||
<li class="tool {{if $selected == $option.ref}}selected{{/if}}"><a href="{{$base}}{{$type}}={{$option.ref}}" class="{{$type}}-link">{{$option.name}}</a></li>
|
||||
{{/foreach}}
|
||||
</ul>
|
||||
|
||||
</div>
|
|
@ -962,10 +962,9 @@ li.widget-list {
|
|||
top: 1px;
|
||||
}
|
||||
|
||||
.group-selected,
|
||||
.nets-selected,
|
||||
.fileas-selected,
|
||||
.categories-selected {
|
||||
|
||||
.widget .selected,
|
||||
.group-selected {
|
||||
padding-bottom: 0px;
|
||||
padding-left: 2px;
|
||||
padding-right: 2px;
|
||||
|
@ -1006,13 +1005,13 @@ ul .sidebar-group-li .icon {
|
|||
width: 12px;
|
||||
}
|
||||
|
||||
.nets-ul, .fileas-ul, .categories-ul, .datebrowse-ul {
|
||||
.nets-ul, .fileas-ul, .category-ul, .datebrowse-ul {
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
.nets-ul li,
|
||||
.fileas-ul li,
|
||||
.categories-ul li,
|
||||
.category-ul li,
|
||||
.datebrowse-link {
|
||||
}
|
||||
|
||||
|
@ -1029,12 +1028,12 @@ ul .sidebar-group-li .icon {
|
|||
}
|
||||
|
||||
.fileas-link,
|
||||
.categories-link {
|
||||
.category-link {
|
||||
margin-left: 0px;
|
||||
}
|
||||
|
||||
.fileas-all,
|
||||
.categories-all {
|
||||
.category-all {
|
||||
margin-left: 0px;
|
||||
}
|
||||
|
||||
|
@ -4627,7 +4626,7 @@ hr.line-dots {
|
|||
|
||||
#birthday-notice {}
|
||||
#nav-notifications-template {}
|
||||
#categories-sidebar {}
|
||||
#category-sidebar {}
|
||||
#nets-desc {}
|
||||
#status-tab {}
|
||||
#page-footer {}
|
||||
|
|
|
@ -448,7 +448,7 @@ pre code {
|
|||
/* color: #000; */
|
||||
}
|
||||
|
||||
.group-selected, .nets-selected, .fileas-selected, .forum-selected {
|
||||
.widget .selected, .forum-selected {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
|
|
|
@ -39,7 +39,7 @@
|
|||
{{/if}}
|
||||
|
||||
{{if $nv}}
|
||||
{{include file='peoplefind.tpl' nv=$nv}}
|
||||
{{include file='widget/peoplefind.tpl' nv=$nv}}
|
||||
{{/if}}
|
||||
|
||||
{{if $lastusers_title}}
|
||||
|
|
Loading…
Reference in a new issue