mirror of
https://github.com/friendica/friendica
synced 2024-12-22 22:00:16 +00:00
Replace "forum" by "group" in the rest of the code
This commit is contained in:
parent
03bebf57c5
commit
3385147f25
59 changed files with 378 additions and 424 deletions
|
@ -102,7 +102,7 @@ class Feature
|
|||
// Post composition
|
||||
'composition' => [
|
||||
DI::l10n()->t('Post Composition Features'),
|
||||
['aclautomention', DI::l10n()->t('Auto-mention Forums'), DI::l10n()->t('Add/remove mention when a forum page is selected/deselected in ACL window.'), false, DI::config()->get('feature_lock', 'aclautomention', false)],
|
||||
['aclautomention', DI::l10n()->t('Auto-mention Groups'), DI::l10n()->t('Add/remove mention when a group page is selected/deselected in ACL window.'), false, DI::config()->get('feature_lock', 'aclautomention', false)],
|
||||
['explicit_mentions', DI::l10n()->t('Explicit Mentions'), DI::l10n()->t('Add explicit mentions to comment box for manual control over who gets mentioned in replies.'), false, DI::config()->get('feature_lock', 'explicit_mentions', false)],
|
||||
['add_abstract', DI::l10n()->t('Add an abstract from ActivityPub content warnings'), DI::l10n()->t('Add an abstract when commenting on ActivityPub posts with a content warning. Abstracts are displayed as content warning on systems like Mastodon or Pleroma.'), false, DI::config()->get('feature_lock', 'add_abstract', false)],
|
||||
],
|
||||
|
@ -116,7 +116,7 @@ class Feature
|
|||
// Advanced Profile Settings
|
||||
'advanced_profile' => [
|
||||
DI::l10n()->t('Advanced Profile Settings'),
|
||||
['forumlist_profile', DI::l10n()->t('List Forums'), DI::l10n()->t('Show visitors public community forums at the Advanced Profile Page'), false, DI::config()->get('feature_lock', 'forumlist_profile', false)],
|
||||
['forumlist_profile', DI::l10n()->t('List Groups'), DI::l10n()->t('Show visitors public groups at the Advanced Profile Page'), false, DI::config()->get('feature_lock', 'forumlist_profile', false)],
|
||||
['tagadelic', DI::l10n()->t('Tag Cloud'), DI::l10n()->t('Provide a personal tag cloud on your profile page'), false, DI::config()->get('feature_lock', 'tagadelic', false)],
|
||||
['profile_membersince', DI::l10n()->t('Display Membership Date'), DI::l10n()->t('Display membership date in profile'), false, DI::config()->get('feature_lock', 'profile_membersince', false)],
|
||||
],
|
||||
|
|
|
@ -29,21 +29,21 @@ use Friendica\DI;
|
|||
use Friendica\Model\Contact;
|
||||
|
||||
/**
|
||||
* This class handles methods related to the forum functionality
|
||||
* This class handles methods related to the group functionality
|
||||
*/
|
||||
class ForumManager
|
||||
class GroupManager
|
||||
{
|
||||
/**
|
||||
* Function to list all forums a user is connected with
|
||||
* Function to list all groups a user is connected with
|
||||
*
|
||||
* @param int $uid of the profile owner
|
||||
* @param boolean $lastitem Sort by lastitem
|
||||
* @param boolean $showhidden Show forums which are not hidden
|
||||
* @param boolean $showhidden Show groups which are not hidden
|
||||
* @param boolean $showprivate Show private groups
|
||||
*
|
||||
* @return array
|
||||
* 'url' => forum url
|
||||
* 'name' => forum name
|
||||
* 'url' => group url
|
||||
* 'name' => group name
|
||||
* 'id' => number of the key from the array
|
||||
* 'micro' => contact photo in format micro
|
||||
* 'thumb' => contact photo in format thumb
|
||||
|
@ -76,16 +76,16 @@ class ForumManager
|
|||
$condition = DBA::mergeConditions($condition, ['hidden' => false]);
|
||||
}
|
||||
|
||||
$forumlist = [];
|
||||
$groupList = [];
|
||||
|
||||
$fields = ['id', 'url', 'name', 'micro', 'thumb', 'avatar', 'network', 'uid'];
|
||||
$contacts = DBA::select('account-user-view', $fields, $condition, $params);
|
||||
if (!$contacts) {
|
||||
return($forumlist);
|
||||
return $groupList;
|
||||
}
|
||||
|
||||
while ($contact = DBA::fetch($contacts)) {
|
||||
$forumlist[] = [
|
||||
$groupList[] = [
|
||||
'url' => $contact['url'],
|
||||
'name' => $contact['name'],
|
||||
'id' => $contact['id'],
|
||||
|
@ -95,19 +95,19 @@ class ForumManager
|
|||
}
|
||||
DBA::close($contacts);
|
||||
|
||||
return($forumlist);
|
||||
return($groupList);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Forumlist widget
|
||||
* Group list widget
|
||||
*
|
||||
* Sidebar widget to show subscribed friendica forums. If activated
|
||||
* in the settings, it appears at the notwork page sidebar
|
||||
* Sidebar widget to show subscribed Friendica groups. If activated
|
||||
* in the settings, it appears in the network page sidebar
|
||||
*
|
||||
* @param string $baseurl Base module path
|
||||
* @param int $uid The ID of the User
|
||||
* @param int $cid The contact id which is used to mark a forum as "selected"
|
||||
* @param int $cid The contact id which is used to mark a group as "selected"
|
||||
* @return string
|
||||
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
||||
* @throws \ImagickException
|
||||
|
@ -121,7 +121,7 @@ class ForumManager
|
|||
|
||||
$contacts = self::getList($uid, $lastitem, true, true);
|
||||
$total = count($contacts);
|
||||
$visible_forums = 10;
|
||||
$visibleGroups = 10;
|
||||
|
||||
if (DBA::isResult($contacts)) {
|
||||
$id = 0;
|
||||
|
@ -129,7 +129,7 @@ class ForumManager
|
|||
$entries = [];
|
||||
|
||||
foreach ($contacts as $contact) {
|
||||
$selected = (($cid == $contact['id']) ? ' forum-selected' : '');
|
||||
$selected = (($cid == $contact['id']) ? ' group-selected' : '');
|
||||
|
||||
$entry = [
|
||||
'url' => $baseurl . '/' . $contact['id'],
|
||||
|
@ -143,16 +143,16 @@ class ForumManager
|
|||
$entries[] = $entry;
|
||||
}
|
||||
|
||||
$tpl = Renderer::getMarkupTemplate('widget_forumlist.tpl');
|
||||
$tpl = Renderer::getMarkupTemplate('widget/group_list.tpl');
|
||||
|
||||
$o .= Renderer::replaceMacros(
|
||||
$tpl,
|
||||
[
|
||||
'$title' => DI::l10n()->t('Forums'),
|
||||
'$forums' => $entries,
|
||||
'$link_desc' => DI::l10n()->t('External link to forum'),
|
||||
'$title' => DI::l10n()->t('Groups'),
|
||||
'$groups' => $entries,
|
||||
'$link_desc' => DI::l10n()->t('External link to group'),
|
||||
'$total' => $total,
|
||||
'$visible_forums' => $visible_forums,
|
||||
'$visible_groups' => $visibleGroups,
|
||||
'$showless' => DI::l10n()->t('show less'),
|
||||
'$showmore' => DI::l10n()->t('show more')]
|
||||
);
|
||||
|
@ -162,9 +162,9 @@ class ForumManager
|
|||
}
|
||||
|
||||
/**
|
||||
* Format forumlist as contact block
|
||||
* Format group list as contact block
|
||||
*
|
||||
* This function is used to show the forumlist in
|
||||
* This function is used to show the group list in
|
||||
* the advanced profile.
|
||||
*
|
||||
* @param int $uid The ID of the User
|
||||
|
@ -191,7 +191,7 @@ class ForumManager
|
|||
|
||||
$total_shown = 0;
|
||||
foreach ($contacts as $contact) {
|
||||
$o .= HTML::micropro($contact, true, 'forumlist-profile-advanced');
|
||||
$o .= HTML::micropro($contact, true, 'grouplist-profile-advanced');
|
||||
$total_shown++;
|
||||
if ($total_shown == $show_total) {
|
||||
break;
|
||||
|
@ -202,14 +202,14 @@ class ForumManager
|
|||
}
|
||||
|
||||
/**
|
||||
* count unread forum items
|
||||
* count unread group items
|
||||
*
|
||||
* Count unread items of connected forums and private groups
|
||||
* Count unread items of connected groups and private groups
|
||||
*
|
||||
* @return array
|
||||
* 'id' => contact id
|
||||
* 'name' => contact/forum name
|
||||
* 'count' => counted unseen forum items
|
||||
* 'name' => contact/group name
|
||||
* 'count' => counted unseen group items
|
||||
* @throws \Exception
|
||||
*/
|
||||
public static function countUnseenItems()
|
|
@ -484,16 +484,16 @@ class Item
|
|||
{
|
||||
// Look for any tags and linkify them
|
||||
$item['inform'] = '';
|
||||
$private_forum = false;
|
||||
$private_group = false;
|
||||
$private_id = null;
|
||||
$only_to_forum = false;
|
||||
$forum_contact = [];
|
||||
$only_to_group = false;
|
||||
$group_contact = [];
|
||||
$receivers = [];
|
||||
|
||||
// Convert mentions in the body to a unified format
|
||||
$item['body'] = BBCode::setMentions($item['body'], $item['uid'], $item['network']);
|
||||
|
||||
// Search for forum mentions
|
||||
// Search for group mentions
|
||||
foreach (Tag::getFromBody($item['body'], Tag::TAG_CHARACTER[Tag::MENTION] . Tag::TAG_CHARACTER[Tag::EXCLUSIVE_MENTION]) as $tag) {
|
||||
$contact = Contact::getByURLForUser($tag[2], $item['uid']);
|
||||
if (empty($contact)) {
|
||||
|
@ -512,37 +512,37 @@ class Item
|
|||
}
|
||||
|
||||
if (!empty($contact['prv']) || ($tag[1] == Tag::TAG_CHARACTER[Tag::EXCLUSIVE_MENTION])) {
|
||||
$private_forum = $contact['prv'];
|
||||
$only_to_forum = ($tag[1] == Tag::TAG_CHARACTER[Tag::EXCLUSIVE_MENTION]);
|
||||
$private_group = $contact['prv'];
|
||||
$only_to_group = ($tag[1] == Tag::TAG_CHARACTER[Tag::EXCLUSIVE_MENTION]);
|
||||
$private_id = $contact['id'];
|
||||
$forum_contact = $contact;
|
||||
Logger::info('Private forum or exclusive mention', ['url' => $tag[2], 'mention' => $tag[1]]);
|
||||
$group_contact = $contact;
|
||||
Logger::info('Private group or exclusive mention', ['url' => $tag[2], 'mention' => $tag[1]]);
|
||||
} elseif ($item['allow_cid'] == '<' . $contact['id'] . '>') {
|
||||
$private_forum = false;
|
||||
$only_to_forum = true;
|
||||
$private_group = false;
|
||||
$only_to_group = true;
|
||||
$private_id = $contact['id'];
|
||||
$forum_contact = $contact;
|
||||
Logger::info('Public forum', ['url' => $tag[2], 'mention' => $tag[1]]);
|
||||
$group_contact = $contact;
|
||||
Logger::info('Public group', ['url' => $tag[2], 'mention' => $tag[1]]);
|
||||
} else {
|
||||
Logger::info('Post with forum mention will not be converted to a forum post', ['url' => $tag[2], 'mention' => $tag[1]]);
|
||||
Logger::info('Post with group mention will not be converted to a group post', ['url' => $tag[2], 'mention' => $tag[1]]);
|
||||
}
|
||||
}
|
||||
Logger::info('Got inform', ['inform' => $item['inform']]);
|
||||
|
||||
if (($item['gravity'] == ItemModel::GRAVITY_PARENT) && !empty($forum_contact) && ($private_forum || $only_to_forum)) {
|
||||
// we tagged a forum in a top level post. Now we change the post
|
||||
$item['private'] = $private_forum ? ItemModel::PRIVATE : ItemModel::UNLISTED;
|
||||
if (($item['gravity'] == ItemModel::GRAVITY_PARENT) && !empty($group_contact) && ($private_group || $only_to_group)) {
|
||||
// we tagged a group in a top level post. Now we change the post
|
||||
$item['private'] = $private_group ? ItemModel::PRIVATE : ItemModel::UNLISTED;
|
||||
|
||||
if ($only_to_forum) {
|
||||
if ($only_to_group) {
|
||||
$item['postopts'] = '';
|
||||
}
|
||||
|
||||
$item['deny_cid'] = '';
|
||||
$item['deny_gid'] = '';
|
||||
|
||||
if ($private_forum) {
|
||||
if ($private_group) {
|
||||
$item['allow_cid'] = '<' . $private_id . '>';
|
||||
$item['allow_gid'] = '<' . Circle::getIdForForum($forum_contact['id']) . '>';
|
||||
$item['allow_gid'] = '<' . Circle::getIdForGroup($group_contact['id']) . '>';
|
||||
} else {
|
||||
$item['allow_cid'] = '';
|
||||
$item['allow_gid'] = '';
|
||||
|
@ -1011,7 +1011,7 @@ class Item
|
|||
$post['body'] = $this->bbCodeVideo->transform($post['body']);
|
||||
$post = $this->setObjectType($post);
|
||||
|
||||
// Personal notes must never be altered to a forum post.
|
||||
// Personal notes must never be altered to a group post.
|
||||
if ($post['post-type'] != ItemModel::PT_PERSONAL_NOTE) {
|
||||
// Look for any tags and linkify them
|
||||
$post = $this->expandTags($post);
|
||||
|
|
|
@ -123,7 +123,7 @@ class Nav
|
|||
'$apps' => $this->getAppMenu(),
|
||||
'$home' => $this->l10n->t('Go back'),
|
||||
'$clear_notifs' => $this->l10n->t('Clear notifications'),
|
||||
'$search_hint' => $this->l10n->t('@name, !forum, #tags, content')
|
||||
'$search_hint' => $this->l10n->t('@name, !group, #tags, content')
|
||||
]);
|
||||
|
||||
Hook::callAll('page_header', $nav);
|
||||
|
@ -273,7 +273,7 @@ class Nav
|
|||
];
|
||||
|
||||
if ($this->config->get('system', 'poco_local_search')) {
|
||||
$nav['searchoption'][] = $this->l10n->t('Forums');
|
||||
$nav['searchoption'][] = $this->l10n->t('Groups');
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -861,7 +861,7 @@ class HTML
|
|||
'$id' => $id,
|
||||
'$search_label' => DI::l10n()->t('Search'),
|
||||
'$save_label' => $save_label,
|
||||
'$search_hint' => DI::l10n()->t('@name, !forum, #tags, content'),
|
||||
'$search_hint' => DI::l10n()->t('@name, !group, #tags, content'),
|
||||
'$mode' => $mode,
|
||||
'$return_url' => urlencode(Search::getSearchPath($s)),
|
||||
];
|
||||
|
@ -874,7 +874,7 @@ class HTML
|
|||
];
|
||||
|
||||
if (DI::config()->get('system', 'poco_local_search')) {
|
||||
$values['$searchoption']['forums'] = DI::l10n()->t('Forums');
|
||||
$values['$searchoption']['groups'] = DI::l10n()->t('Groups');
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -530,7 +530,7 @@ class Widget
|
|||
['ref' => 'person', 'name' => DI::l10n()->t('Persons')],
|
||||
['ref' => 'organisation', 'name' => DI::l10n()->t('Organisations')],
|
||||
['ref' => 'news', 'name' => DI::l10n()->t('News')],
|
||||
['ref' => 'community', 'name' => DI::l10n()->t('Forums')],
|
||||
['ref' => 'community', 'name' => DI::l10n()->t('Groups')],
|
||||
];
|
||||
|
||||
return self::filter('accounttype', DI::l10n()->t('Account Types'), '',
|
||||
|
|
|
@ -167,12 +167,12 @@ class ACL
|
|||
|
||||
$acl_contacts[] = $acl_yourself;
|
||||
|
||||
$acl_forums = Contact::selectToArray($fields,
|
||||
$acl_groups = Contact::selectToArray($fields,
|
||||
['uid' => $user_id, 'self' => false, 'blocked' => false, 'archive' => false, 'deleted' => false,
|
||||
'network' => Protocol::FEDERATED, 'pending' => false, 'contact-type' => Contact::TYPE_COMMUNITY], $params
|
||||
);
|
||||
|
||||
$acl_contacts = array_merge($acl_forums, $acl_contacts);
|
||||
$acl_contacts = array_merge($acl_groups, $acl_contacts);
|
||||
|
||||
array_walk($acl_contacts, function (&$value) {
|
||||
$value['type'] = 'contact';
|
||||
|
|
|
@ -42,7 +42,7 @@ class Search
|
|||
const DEFAULT_DIRECTORY = 'https://dir.friendica.social';
|
||||
|
||||
const TYPE_PEOPLE = 0;
|
||||
const TYPE_FORUM = 1;
|
||||
const TYPE_GROUP = 1;
|
||||
const TYPE_ALL = 2;
|
||||
|
||||
/**
|
||||
|
@ -55,7 +55,7 @@ class Search
|
|||
* @throws HTTPException\InternalServerErrorException
|
||||
* @throws \ImagickException
|
||||
*/
|
||||
public static function getContactsFromProbe(string $user, $only_forum = false): ResultList
|
||||
public static function getContactsFromProbe(string $user, $only_group = false): ResultList
|
||||
{
|
||||
$emptyResultList = new ResultList();
|
||||
|
||||
|
@ -68,7 +68,7 @@ class Search
|
|||
return $emptyResultList;
|
||||
}
|
||||
|
||||
if ($only_forum && ($user_data['contact-type'] != Contact::TYPE_COMMUNITY)) {
|
||||
if ($only_group && ($user_data['contact-type'] != Contact::TYPE_COMMUNITY)) {
|
||||
return $emptyResultList;
|
||||
}
|
||||
|
||||
|
@ -112,8 +112,8 @@ class Search
|
|||
$searchUrl = $server . '/search';
|
||||
|
||||
switch ($type) {
|
||||
case self::TYPE_FORUM:
|
||||
$searchUrl .= '/forum';
|
||||
case self::TYPE_GROUP:
|
||||
$searchUrl .= '/group';
|
||||
break;
|
||||
case self::TYPE_PEOPLE:
|
||||
$searchUrl .= '/people';
|
||||
|
@ -174,7 +174,7 @@ class Search
|
|||
{
|
||||
Logger::info('Searching', ['search' => $search, 'type' => $type, 'start' => $start, 'itempage' => $itemPage]);
|
||||
|
||||
$contacts = Contact::searchByName($search, $type == self::TYPE_FORUM ? 'community' : '', true);
|
||||
$contacts = Contact::searchByName($search, $type == self::TYPE_GROUP ? 'community' : '', true);
|
||||
|
||||
$resultList = new ResultList($start, count($contacts), $itemPage);
|
||||
|
||||
|
@ -240,7 +240,9 @@ class Search
|
|||
$return = array_map(function ($result) {
|
||||
static $contactType = [
|
||||
'People' => Contact::TYPE_PERSON,
|
||||
// Kept for backward compatibility
|
||||
'Forum' => Contact::TYPE_COMMUNITY,
|
||||
'Group' => Contact::TYPE_COMMUNITY,
|
||||
'Organization' => Contact::TYPE_ORGANISATION,
|
||||
'News' => Contact::TYPE_NEWS,
|
||||
];
|
||||
|
|
|
@ -615,9 +615,9 @@ class Circle
|
|||
* @param integer $id Contact ID
|
||||
* @return integer Circle ID
|
||||
*/
|
||||
public static function getIdForForum(int $id): int
|
||||
public static function getIdForGroup(int $id): int
|
||||
{
|
||||
Logger::info('Get id for forum id', ['id' => $id]);
|
||||
Logger::info('Get id for group id', ['id' => $id]);
|
||||
$contact = Contact::getById($id, ['uid', 'name', 'contact-type', 'manually-approve']);
|
||||
if (empty($contact) || ($contact['contact-type'] != Contact::TYPE_COMMUNITY) || !$contact['manually-approve']) {
|
||||
return 0;
|
||||
|
@ -645,9 +645,9 @@ class Circle
|
|||
* @param integer $id Contact ID
|
||||
* @return void
|
||||
*/
|
||||
public static function updateMembersForForum(int $id)
|
||||
public static function updateMembersForGroup(int $id)
|
||||
{
|
||||
Logger::info('Update forum members', ['id' => $id]);
|
||||
Logger::info('Update group members', ['id' => $id]);
|
||||
|
||||
$contact = Contact::getById($id, ['uid', 'url']);
|
||||
if (empty($contact)) {
|
||||
|
@ -659,7 +659,7 @@ class Circle
|
|||
return;
|
||||
}
|
||||
|
||||
$gid = self::getIdForForum($id);
|
||||
$gid = self::getIdForGroup($id);
|
||||
if (empty($gid)) {
|
||||
return;
|
||||
}
|
||||
|
@ -682,6 +682,6 @@ class Circle
|
|||
}
|
||||
|
||||
DBA::delete('group_member', ['gid' => $gid, 'contact-id' => $current]);
|
||||
Logger::info('Updated forum members', ['id' => $id, 'count' => DBA::count('group_member', ['gid' => $gid])]);
|
||||
Logger::info('Updated group members', ['id' => $id, 'count' => DBA::count('group_member', ['gid' => $gid])]);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -79,7 +79,7 @@ class Contact
|
|||
* TYPE_NEWS - the account is a news reflector
|
||||
* Associated page type: PAGE_SOAPBOX
|
||||
*
|
||||
* TYPE_COMMUNITY - the account is community forum
|
||||
* TYPE_COMMUNITY - the account is community group
|
||||
* Associated page types: PAGE_COMMUNITY, PAGE_PRVGROUP
|
||||
*
|
||||
* TYPE_RELAY - the account is a relay
|
||||
|
@ -1652,7 +1652,7 @@ class Contact
|
|||
break;
|
||||
|
||||
case self::TYPE_COMMUNITY:
|
||||
$account_type = DI::l10n()->t("Forum");
|
||||
$account_type = DI::l10n()->t("Group");
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@ -3472,13 +3472,13 @@ class Contact
|
|||
}
|
||||
|
||||
/**
|
||||
* Is the contact a forum?
|
||||
* Is the contact a group?
|
||||
*
|
||||
* @param integer $contactid ID of the contact
|
||||
*
|
||||
* @return boolean "true" if it is a forum
|
||||
* @return boolean "true" if it is a group
|
||||
*/
|
||||
public static function isForum(int $contactid): bool
|
||||
public static function isGroup(int $contactid): bool
|
||||
{
|
||||
$fields = ['contact-type'];
|
||||
$condition = ['id' => $contactid];
|
||||
|
@ -3487,7 +3487,7 @@ class Contact
|
|||
return false;
|
||||
}
|
||||
|
||||
// Is it a forum?
|
||||
// Is it a group?
|
||||
return ($contact['contact-type'] == self::TYPE_COMMUNITY);
|
||||
}
|
||||
|
||||
|
|
|
@ -1004,7 +1004,7 @@ class Item
|
|||
$item['deleted'] = $toplevel_parent['deleted'];
|
||||
$item['wall'] = $toplevel_parent['wall'];
|
||||
|
||||
// Reshares have to keep their permissions to allow forums to work
|
||||
// Reshares have to keep their permissions to allow groups to work
|
||||
if (!$defined_permissions && (!$item['origin'] || ($item['verb'] != Activity::ANNOUNCE))) {
|
||||
$item['allow_cid'] = $toplevel_parent['allow_cid'];
|
||||
$item['allow_gid'] = $toplevel_parent['allow_gid'];
|
||||
|
@ -1307,7 +1307,7 @@ class Item
|
|||
|
||||
Post::update($fields, ['uri-id' => $posted_item['parent-uri-id'], 'uid' => $posted_item['uid']]);
|
||||
|
||||
// In that function we check if this is a forum post. Additionally we delete the item under certain circumstances
|
||||
// In that function we check if this is a group post. Additionally we delete the item under certain circumstances
|
||||
if (self::tagDeliver($posted_item['uid'], $post_user_id)) {
|
||||
// Get the user information for the logging
|
||||
$user = User::getById($uid);
|
||||
|
@ -1418,11 +1418,11 @@ class Item
|
|||
}
|
||||
|
||||
/**
|
||||
* Change the owner of a parent item if it had been shared by a forum
|
||||
* Change the owner of a parent item if it had been shared by a group
|
||||
*
|
||||
* (public) forum posts in the new format consist of the regular post by the author
|
||||
* followed by an announce message sent from the forum account.
|
||||
* Changing the owner helps in grouping forum posts.
|
||||
* (public) group posts in the new format consist of the regular post by the author
|
||||
* followed by an announce message sent from the group account.
|
||||
* Changing the owner helps in grouping group posts.
|
||||
*
|
||||
* @param array $item
|
||||
* @return void
|
||||
|
@ -1458,7 +1458,7 @@ class Item
|
|||
}
|
||||
|
||||
if (Contact::isSharing($parent['owner-id'], $item['uid'])) {
|
||||
Logger::info('The resharer is no forum: quit', ['resharer' => $item['author-id'], 'owner' => $parent['owner-id'], 'author' => $parent['author-id'], 'uid' => $item['uid']]);
|
||||
Logger::info('The resharer is no group: quit', ['resharer' => $item['author-id'], 'owner' => $parent['owner-id'], 'author' => $parent['author-id'], 'uid' => $item['uid']]);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -1603,7 +1603,7 @@ class Item
|
|||
if (($uid != 0) && ($item['gravity'] == self::GRAVITY_PARENT)) {
|
||||
$owner = User::getOwnerDataById($uid);
|
||||
if (($owner['contact-type'] == User::ACCOUNT_TYPE_COMMUNITY) && !Tag::isMentioned($uri_id, $owner['url'])) {
|
||||
Logger::info('Target user is a forum but is not mentioned here, thread will not be stored', ['uid' => $uid, 'uri-id' => $uri_id]);
|
||||
Logger::info('Target user is a group but is not mentioned here, thread will not be stored', ['uid' => $uid, 'uri-id' => $uri_id]);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
@ -1709,7 +1709,7 @@ class Item
|
|||
return 0;
|
||||
}
|
||||
|
||||
// When the post belongs to a a forum then all forum users are allowed to access it
|
||||
// When the post belongs to a a group then all group users are allowed to access it
|
||||
foreach (Tag::getByURIId($uriid, [Tag::MENTION, Tag::EXCLUSIVE_MENTION]) as $tag) {
|
||||
if (DBA::exists('contact', ['uid' => $uid, 'nurl' => Strings::normaliseLink($tag['url']), 'contact-type' => Contact::TYPE_COMMUNITY])) {
|
||||
$target_uid = User::getIdForURL($tag['url']);
|
||||
|
@ -2104,7 +2104,7 @@ class Item
|
|||
/// @todo On private posts we could obfuscate the date
|
||||
$update = ($arr['private'] != self::PRIVATE) || in_array($arr['network'], Protocol::FEDERATED);
|
||||
|
||||
// Is it a forum? Then we don't care about the rules from above
|
||||
// Is it a group? Then we don't care about the rules from above
|
||||
if (!$update && in_array($arr["network"], [Protocol::ACTIVITYPUB, Protocol::DFRN]) && ($arr["parent-uri-id"] === $arr["uri-id"])) {
|
||||
if (DBA::exists('contact', ['id' => $arr['contact-id'], 'forum' => true])) {
|
||||
$update = true;
|
||||
|
@ -2200,7 +2200,7 @@ class Item
|
|||
}
|
||||
|
||||
/**
|
||||
* look for mention tags and setup a second delivery chain for forum/community posts if appropriate
|
||||
* look for mention tags and setup a second delivery chain for group/community posts if appropriate
|
||||
*
|
||||
* @param int $uid
|
||||
* @param int $item_id
|
||||
|
@ -3663,13 +3663,13 @@ class Item
|
|||
}
|
||||
|
||||
/**
|
||||
* Does the given uri-id belongs to a post that is sent as starting post to a forum?
|
||||
* Does the given uri-id belongs to a post that is sent as starting post to a group?
|
||||
*
|
||||
* @param int $uri_id
|
||||
*
|
||||
* @return boolean "true" when it is a forum post
|
||||
* @return boolean "true" when it is a group post
|
||||
*/
|
||||
public static function isForumPost(int $uri_id): bool
|
||||
public static function isGroupPost(int $uri_id): bool
|
||||
{
|
||||
foreach (Tag::getByURIId($uri_id, [Tag::EXCLUSIVE_MENTION]) as $tag) {
|
||||
if (DBA::exists('contact', ['uid' => 0, 'nurl' => Strings::normaliseLink($tag['url']), 'contact-type' => Contact::TYPE_COMMUNITY])) {
|
||||
|
|
|
@ -42,7 +42,7 @@ class Type
|
|||
const TAG_SELF = 128;
|
||||
/** @var int Notification about getting poked/prodded/etc. (Obsolete) */
|
||||
const POKE = 512;
|
||||
/** @var int Notification about either a contact had posted something directly or the contact is a mentioned forum */
|
||||
/** @var int Notification about either a contact had posted something directly or the contact is a mentioned group */
|
||||
const SHARE = 1024;
|
||||
|
||||
/** @var int Global System notifications */
|
||||
|
|
|
@ -830,7 +830,7 @@ class Photo
|
|||
* Changes photo permissions that had been embedded in a post
|
||||
*
|
||||
* @todo This function currently does have some flaws:
|
||||
* - Sharing a post with a forum will create a photo that only the forum can see.
|
||||
* - Sharing a post with a group will create a photo that only the group can see.
|
||||
* - Sharing a photo again that been shared non public before doesn't alter the permissions.
|
||||
*
|
||||
* @return string
|
||||
|
@ -877,7 +877,7 @@ class Photo
|
|||
/**
|
||||
* @todo Existing permissions need to be mixed with the new ones.
|
||||
* Otherwise this creates problems with sharing the same picture multiple times
|
||||
* Also check if $str_contact_allow does contain a public forum.
|
||||
* Also check if $str_contact_allow does contain a public group.
|
||||
* Then set the permissions to public.
|
||||
*/
|
||||
|
||||
|
|
|
@ -50,7 +50,7 @@ class Tag
|
|||
*/
|
||||
const IMPLICIT_MENTION = 8;
|
||||
/**
|
||||
* An exclusive mention transmits the post only to the target account without transmitting it to the followers, usually a forum.
|
||||
* An exclusive mention transmits the post only to the target account without transmitting it to the followers, usually a group.
|
||||
*/
|
||||
const EXCLUSIVE_MENTION = 9;
|
||||
|
||||
|
|
|
@ -88,7 +88,7 @@ class User
|
|||
* ACCOUNT_TYPE_NEWS - the account is a news reflector
|
||||
* Associated page type: PAGE_FLAGS_SOAPBOX
|
||||
*
|
||||
* ACCOUNT_TYPE_COMMUNITY - the account is community forum
|
||||
* ACCOUNT_TYPE_COMMUNITY - the account is community group
|
||||
* Associated page types: PAGE_COMMUNITY, PAGE_FLAGS_PRVGROUP
|
||||
*
|
||||
* ACCOUNT_TYPE_RELAY - the account is a relay
|
||||
|
|
|
@ -71,8 +71,8 @@ class BaseSearch extends BaseModule
|
|||
$header = DI::l10n()->t('People Search - %s', $search);
|
||||
} elseif (strpos($search, '!') === 0) {
|
||||
$search = trim(substr($search, 1));
|
||||
$type = Search::TYPE_FORUM;
|
||||
$header = DI::l10n()->t('Forum Search - %s', $search);
|
||||
$type = Search::TYPE_GROUP;
|
||||
$header = DI::l10n()->t('Group Search - %s', $search);
|
||||
}
|
||||
|
||||
$search = Network::convertToIdn($search);
|
||||
|
@ -98,7 +98,7 @@ class BaseSearch extends BaseModule
|
|||
}
|
||||
|
||||
if (!$results->getTotal()) {
|
||||
$results = Search::getContactsFromProbe(Network::convertToIdn($search), $type == Search::TYPE_FORUM);
|
||||
$results = Search::getContactsFromProbe(Network::convertToIdn($search), $type == Search::TYPE_GROUP);
|
||||
}
|
||||
|
||||
return self::printResult($results, $pager, $header);
|
||||
|
|
|
@ -24,7 +24,7 @@ namespace Friendica\Module\Conversation;
|
|||
use Friendica\BaseModule;
|
||||
use Friendica\Content\BoundariesPager;
|
||||
use Friendica\Content\Conversation;
|
||||
use Friendica\Content\ForumManager;
|
||||
use Friendica\Content\GroupManager;
|
||||
use Friendica\Content\Nav;
|
||||
use Friendica\Content\Widget;
|
||||
use Friendica\Content\Text\HTML;
|
||||
|
@ -52,7 +52,7 @@ class Network extends BaseModule
|
|||
/** @var int */
|
||||
private static $circleId;
|
||||
/** @var int */
|
||||
private static $forumContactId;
|
||||
private static $groupContactId;
|
||||
/** @var string */
|
||||
private static $selectedTab;
|
||||
/** @var mixed */
|
||||
|
@ -90,9 +90,9 @@ class Network extends BaseModule
|
|||
|
||||
DI::page()['aside'] .= Widget::accountTypes($module, self::$accountTypeString);
|
||||
DI::page()['aside'] .= Circle::sidebarWidget($module, $module . '/circle', 'standard', self::$circleId);
|
||||
DI::page()['aside'] .= ForumManager::widget($module . '/forum', DI::userSession()->getLocalUserId(), self::$forumContactId);
|
||||
DI::page()['aside'] .= GroupManager::widget($module . '/group', DI::userSession()->getLocalUserId(), self::$groupContactId);
|
||||
DI::page()['aside'] .= Widget::postedByYear($module . '/archive', DI::userSession()->getLocalUserId(), false);
|
||||
DI::page()['aside'] .= Widget::networks($module, !self::$forumContactId ? self::$network : '');
|
||||
DI::page()['aside'] .= Widget::networks($module, !self::$groupContactId ? self::$network : '');
|
||||
DI::page()['aside'] .= Widget\SavedSearches::getHTML(DI::args()->getQueryString());
|
||||
DI::page()['aside'] .= Widget::fileAs('filed', '');
|
||||
|
||||
|
@ -119,9 +119,9 @@ class Network extends BaseModule
|
|||
|
||||
$content = '';
|
||||
|
||||
if (self::$forumContactId) {
|
||||
// If self::$forumContactId belongs to a community forum or a private group, add a mention to the status editor
|
||||
$condition = ["`id` = ? AND `contact-type` = ?", self::$forumContactId, Contact::TYPE_COMMUNITY];
|
||||
if (self::$groupContactId) {
|
||||
// If self::$groupContactId belongs to a community group or a private group, add a mention to the status editor
|
||||
$condition = ["`id` = ? AND `contact-type` = ?", self::$groupContactId, Contact::TYPE_COMMUNITY];
|
||||
$contact = DBA::selectFirst('contact', ['addr'], $condition);
|
||||
if (!empty($contact['addr'])) {
|
||||
$content = '!' . $contact['addr'];
|
||||
|
@ -136,8 +136,8 @@ class Network extends BaseModule
|
|||
}
|
||||
|
||||
$allowedCids = [];
|
||||
if (self::$forumContactId) {
|
||||
$allowedCids[] = (int) self::$forumContactId;
|
||||
if (self::$groupContactId) {
|
||||
$allowedCids[] = (int) self::$groupContactId;
|
||||
} elseif (self::$network) {
|
||||
$condition = [
|
||||
'uid' => DI::userSession()->getLocalUserId(),
|
||||
|
@ -160,9 +160,9 @@ class Network extends BaseModule
|
|||
}
|
||||
|
||||
$x = [
|
||||
'lockstate' => self::$circleId || self::$forumContactId || self::$network || ACL::getLockstateForUserId($a->getLoggedInUserId()) ? 'lock' : 'unlock',
|
||||
'lockstate' => self::$circleId || self::$groupContactId || self::$network || ACL::getLockstateForUserId($a->getLoggedInUserId()) ? 'lock' : 'unlock',
|
||||
'acl' => ACL::getFullSelectorHTML(DI::page(), $a->getLoggedInUserId(), true, $default_permissions),
|
||||
'bang' => ((self::$circleId || self::$forumContactId || self::$network) ? '!' : ''),
|
||||
'bang' => ((self::$circleId || self::$groupContactId || self::$network) ? '!' : ''),
|
||||
'content' => $content,
|
||||
];
|
||||
|
||||
|
@ -178,8 +178,8 @@ class Network extends BaseModule
|
|||
$o = Renderer::replaceMacros(Renderer::getMarkupTemplate('section_title.tpl'), [
|
||||
'$title' => DI::l10n()->t('Circle: %s', $circle['name'])
|
||||
]) . $o;
|
||||
} elseif (self::$forumContactId) {
|
||||
$contact = Contact::getById(self::$forumContactId);
|
||||
} elseif (self::$groupContactId) {
|
||||
$contact = Contact::getById(self::$groupContactId);
|
||||
if (DBA::isResult($contact)) {
|
||||
$o = Renderer::replaceMacros(Renderer::getMarkupTemplate('contact/list.tpl'), [
|
||||
'contacts' => [ModuleContact::getContactTemplateVars($contact)],
|
||||
|
@ -307,7 +307,7 @@ class Network extends BaseModule
|
|||
{
|
||||
self::$circleId = $this->parameters['circle_id'] ?? 0;
|
||||
|
||||
self::$forumContactId = $this->parameters['contact_id'] ?? 0;
|
||||
self::$groupContactId = $this->parameters['contact_id'] ?? 0;
|
||||
|
||||
self::$selectedTab = self::getTimelineOrderBySession(DI::userSession(), DI::pConfig());
|
||||
|
||||
|
@ -413,10 +413,10 @@ class Network extends BaseModule
|
|||
|
||||
if (self::$circleId) {
|
||||
$conditionStrings = DBA::mergeConditions($conditionStrings, ["`contact-id` IN (SELECT `contact-id` FROM `group_member` WHERE `gid` = ?)", self::$circleId]);
|
||||
} elseif (self::$forumContactId) {
|
||||
} elseif (self::$groupContactId) {
|
||||
$conditionStrings = DBA::mergeConditions($conditionStrings,
|
||||
["((`contact-id` = ?) OR `uri-id` IN (SELECT `parent-uri-id` FROM `post-user-view` WHERE (`contact-id` = ? AND `gravity` = ? AND `vid` = ? AND `uid` = ?)))",
|
||||
self::$forumContactId, self::$forumContactId, Item::GRAVITY_ACTIVITY, Verb::getID(Activity::ANNOUNCE), DI::userSession()->getLocalUserId()]);
|
||||
self::$groupContactId, self::$groupContactId, Item::GRAVITY_ACTIVITY, Verb::getID(Activity::ANNOUNCE), DI::userSession()->getLocalUserId()]);
|
||||
}
|
||||
|
||||
// Currently only the order modes "received" and "commented" are in use
|
||||
|
@ -479,7 +479,7 @@ class Network extends BaseModule
|
|||
// We aren't going to try and figure out at the item, circle, and page
|
||||
// level which items you've seen and which you haven't. If you're looking
|
||||
// at the top level network page just mark everything seen.
|
||||
if (!self::$circleId && !self::$forumContactId && !self::$star && !self::$mention) {
|
||||
if (!self::$circleId && !self::$groupContactId && !self::$star && !self::$mention) {
|
||||
$condition = ['unseen' => true, 'uid' => DI::userSession()->getLocalUserId()];
|
||||
self::setItemsSeenByCondition($condition);
|
||||
} elseif (!empty($parents)) {
|
||||
|
|
|
@ -118,15 +118,15 @@ abstract class BaseUsers extends BaseModeration
|
|||
$page_types = [
|
||||
User::PAGE_FLAGS_NORMAL => $this->t('Normal Account Page'),
|
||||
User::PAGE_FLAGS_SOAPBOX => $this->t('Soapbox Page'),
|
||||
User::PAGE_FLAGS_COMMUNITY => $this->t('Public Forum'),
|
||||
User::PAGE_FLAGS_COMMUNITY => $this->t('Public Group'),
|
||||
User::PAGE_FLAGS_FREELOVE => $this->t('Automatic Friend Page'),
|
||||
User::PAGE_FLAGS_PRVGROUP => $this->t('Private Forum')
|
||||
User::PAGE_FLAGS_PRVGROUP => $this->t('Private Group')
|
||||
];
|
||||
$account_types = [
|
||||
User::ACCOUNT_TYPE_PERSON => $this->t('Personal Page'),
|
||||
User::ACCOUNT_TYPE_ORGANISATION => $this->t('Organisation Page'),
|
||||
User::ACCOUNT_TYPE_NEWS => $this->t('News Page'),
|
||||
User::ACCOUNT_TYPE_COMMUNITY => $this->t('Community Forum'),
|
||||
User::ACCOUNT_TYPE_COMMUNITY => $this->t('Community Group'),
|
||||
User::ACCOUNT_TYPE_RELAY => $this->t('Relay'),
|
||||
];
|
||||
|
||||
|
|
|
@ -52,10 +52,10 @@ class Summary extends BaseModeration
|
|||
$accounts = [
|
||||
[$this->t('Normal Account'), 0],
|
||||
[$this->t('Automatic Follower Account'), 0],
|
||||
[$this->t('Public Forum Account'), 0],
|
||||
[$this->t('Public Group Account'), 0],
|
||||
[$this->t('Automatic Friend Account'), 0],
|
||||
[$this->t('Blog Account'), 0],
|
||||
[$this->t('Private Forum Account'), 0]
|
||||
[$this->t('Private Group Account'), 0]
|
||||
];
|
||||
|
||||
$users = 0;
|
||||
|
|
|
@ -24,7 +24,7 @@ namespace Friendica\Module\Notifications;
|
|||
use Friendica\App;
|
||||
use Friendica\BaseModule;
|
||||
use Friendica\Contact\Introduction\Repository\Introduction;
|
||||
use Friendica\Content\ForumManager;
|
||||
use Friendica\Content\GroupManager;
|
||||
use Friendica\Core\Cache\Capability\ICanCache;
|
||||
use Friendica\Core\Cache\Enum\Duration;
|
||||
use Friendica\Core\Config\Capability\IManageConfigValues;
|
||||
|
@ -109,14 +109,14 @@ class Ping extends BaseModule
|
|||
$register_count = 0;
|
||||
$sysnotify_count = 0;
|
||||
$circles_unseen = [];
|
||||
$forums_unseen = [];
|
||||
$groups_unseen = [];
|
||||
|
||||
$event_count = 0;
|
||||
$today_event_count = 0;
|
||||
$birthday_count = 0;
|
||||
$today_birthday_count = 0;
|
||||
|
||||
// Suppress notification display for forum accounts
|
||||
// Suppress notification display for group accounts
|
||||
if ($this->session->getLocalUserId() && $this->session->get('page_flags', '') != User::PAGE_FLAGS_COMMUNITY) {
|
||||
if ($this->pconfig->get($this->session->getLocalUserId(), 'system', 'detailed_notif')) {
|
||||
$notifications = $this->notificationRepo->selectDetailedForUser($this->session->getLocalUserId());
|
||||
|
@ -160,9 +160,9 @@ class Ping extends BaseModule
|
|||
}
|
||||
}
|
||||
|
||||
foreach (ForumManager::countUnseenItems() as $forum_count) {
|
||||
if ($forum_count['count'] > 0) {
|
||||
$forums_unseen[] = $forum_count;
|
||||
foreach (GroupManager::countUnseenItems() as $group_count) {
|
||||
if ($group_count['count'] > 0) {
|
||||
$groups_unseen[] = $group_count;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -290,7 +290,7 @@ class Ping extends BaseModule
|
|||
$data['birthdays'] = $birthday_count;
|
||||
$data['birthdays-today'] = $today_birthday_count;
|
||||
$data['circles'] = $circles_unseen;
|
||||
$data['forums'] = $forums_unseen;
|
||||
$data['groups'] = $groups_unseen;
|
||||
$data['notification'] = ($notification_count < 50) ? $notification_count : '49+';
|
||||
|
||||
$data['notifications'] = $navNotifications;
|
||||
|
|
|
@ -188,7 +188,7 @@ class Conversations extends BaseProfile
|
|||
$condition = DBA::mergeConditions($condition, ["`received` >= ?", DateTimeFormat::convert($datequery2, 'UTC', $this->app->getTimeZone())]);
|
||||
}
|
||||
|
||||
// Does the profile page belong to a forum?
|
||||
// Does the profile page belong to a group?
|
||||
// If not then we can improve the performance with an additional condition
|
||||
if ($profile['account-type'] != User::ACCOUNT_TYPE_COMMUNITY) {
|
||||
$condition = DBA::mergeConditions($condition, ['contact-id' => $profile['id']]);
|
||||
|
|
|
@ -23,7 +23,7 @@ namespace Friendica\Module\Profile;
|
|||
|
||||
use Friendica\App;
|
||||
use Friendica\Content\Feature;
|
||||
use Friendica\Content\ForumManager;
|
||||
use Friendica\Content\GroupManager;
|
||||
use Friendica\Content\Nav;
|
||||
use Friendica\Content\Text\BBCode;
|
||||
use Friendica\Core\Config\Capability\IManageConfigValues;
|
||||
|
@ -254,12 +254,12 @@ class Profile extends BaseProfile
|
|||
);
|
||||
}
|
||||
|
||||
//show subscribed forum if it is enabled in the usersettings
|
||||
//show subscribed group if it is enabled in the usersettings
|
||||
if (Feature::isEnabled($profile['uid'], 'forumlist_profile')) {
|
||||
$custom_fields += self::buildField(
|
||||
'forumlist',
|
||||
$this->t('Forums:'),
|
||||
ForumManager::profileAdvanced($profile['uid'])
|
||||
'group_list',
|
||||
$this->t('Groups:'),
|
||||
GroupManager::profileAdvanced($profile['uid'])
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -50,7 +50,7 @@ class Acl extends BaseModule
|
|||
const TYPE_MENTION_CONTACT = 'c';
|
||||
const TYPE_MENTION_CIRCLE = 'g';
|
||||
const TYPE_MENTION_CONTACT_CIRCLE = '';
|
||||
const TYPE_MENTION_FORUM = 'f';
|
||||
const TYPE_MENTION_GROUP = 'f';
|
||||
const TYPE_PRIVATE_MESSAGE = 'm';
|
||||
const TYPE_ANY_CONTACT = 'a';
|
||||
|
||||
|
@ -100,7 +100,7 @@ class Acl extends BaseModule
|
|||
'nick' => $contact['addr'] ?: $contact['url'],
|
||||
'network' => $contact['network'],
|
||||
'link' => $contact['url'],
|
||||
'forum' => $contact['contact-type'] == Contact::TYPE_COMMUNITY,
|
||||
'group' => $contact['contact-type'] == Contact::TYPE_COMMUNITY,
|
||||
];
|
||||
}
|
||||
|
||||
|
@ -161,7 +161,7 @@ class Acl extends BaseModule
|
|||
]);
|
||||
break;
|
||||
|
||||
case self::TYPE_MENTION_FORUM:
|
||||
case self::TYPE_MENTION_GROUP:
|
||||
$condition = DBA::mergeConditions($condition,
|
||||
["NOT `self` AND NOT `blocked` AND `notify` != ? AND `contact-type` = ?", '', Contact::TYPE_COMMUNITY
|
||||
]);
|
||||
|
@ -205,7 +205,7 @@ class Acl extends BaseModule
|
|||
'id' => intval($circle['id']),
|
||||
'uids' => array_map('intval', explode(',', $circle['uids'])),
|
||||
'link' => '',
|
||||
'forum' => '0'
|
||||
'group' => '0'
|
||||
];
|
||||
}
|
||||
if ((count($resultCircles) > 0) && ($search == '')) {
|
||||
|
@ -218,7 +218,7 @@ class Acl extends BaseModule
|
|||
$contacts = Contact::selectToArray([], $condition, ['order' => ['name']]);
|
||||
}
|
||||
|
||||
$forums = [];
|
||||
$groups = [];
|
||||
foreach ($contacts as $contact) {
|
||||
$entry = [
|
||||
'type' => self::TYPE_MENTION_CONTACT,
|
||||
|
@ -229,21 +229,21 @@ class Acl extends BaseModule
|
|||
'link' => $contact['url'],
|
||||
'nick' => htmlentities(($contact['attag'] ?? '') ?: $contact['nick']),
|
||||
'addr' => htmlentities(($contact['addr'] ?? '') ?: $contact['url']),
|
||||
'forum' => $contact['contact-type'] == Contact::TYPE_COMMUNITY,
|
||||
'group' => $contact['contact-type'] == Contact::TYPE_COMMUNITY,
|
||||
];
|
||||
if ($entry['forum']) {
|
||||
$forums[] = $entry;
|
||||
if ($entry['group']) {
|
||||
$groups[] = $entry;
|
||||
} else {
|
||||
$resultContacts[] = $entry;
|
||||
}
|
||||
}
|
||||
|
||||
if ($forums) {
|
||||
if ($groups) {
|
||||
if ($search == '') {
|
||||
$forums[] = ['separator' => true];
|
||||
$groups[] = ['separator' => true];
|
||||
}
|
||||
|
||||
$resultContacts = array_merge($forums, $resultContacts);
|
||||
$resultContacts = array_merge($groups, $resultContacts);
|
||||
}
|
||||
|
||||
$resultItems = array_merge($resultCircles, $resultContacts);
|
||||
|
@ -285,7 +285,7 @@ class Acl extends BaseModule
|
|||
'link' => $contact['url'],
|
||||
'nick' => htmlentities(($contact['nick'] ?? '') ?: $contact['addr']),
|
||||
'addr' => htmlentities(($contact['addr'] ?? '') ?: $contact['url']),
|
||||
'forum' => $contact['forum']
|
||||
'group' => $contact['forum']
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
|
@ -139,7 +139,7 @@ class Index extends BaseSearch
|
|||
break;
|
||||
case 'contacts':
|
||||
return self::performContactSearch($search, '@');
|
||||
case 'forums':
|
||||
case 'groups':
|
||||
return self::performContactSearch($search, '!');
|
||||
}
|
||||
}
|
||||
|
|
|
@ -452,7 +452,7 @@ class Account extends BaseSettings
|
|||
$pagetype = Renderer::replaceMacros($pageset_tpl, [
|
||||
'$account_types' => DI::l10n()->t("Account Types"),
|
||||
'$user' => DI::l10n()->t("Personal Page Subtypes"),
|
||||
'$community' => DI::l10n()->t("Community Forum Subtypes"),
|
||||
'$community' => DI::l10n()->t("Community Group Subtypes"),
|
||||
'$account_type' => $user['account-type'],
|
||||
'$type_person' => User::ACCOUNT_TYPE_PERSON,
|
||||
'$type_organisation' => User::ACCOUNT_TYPE_ORGANISATION,
|
||||
|
@ -481,7 +481,7 @@ class Account extends BaseSettings
|
|||
],
|
||||
'$account_community' => [
|
||||
'account-type',
|
||||
DI::l10n()->t('Community Forum'),
|
||||
DI::l10n()->t('Community Group'),
|
||||
User::ACCOUNT_TYPE_COMMUNITY,
|
||||
DI::l10n()->t('Account for community discussions.'),
|
||||
$user['account-type'] == User::ACCOUNT_TYPE_COMMUNITY
|
||||
|
@ -502,7 +502,7 @@ class Account extends BaseSettings
|
|||
],
|
||||
'$page_community' => [
|
||||
'page-flags',
|
||||
DI::l10n()->t('Public Forum'),
|
||||
DI::l10n()->t('Public Group'),
|
||||
User::PAGE_FLAGS_COMMUNITY,
|
||||
DI::l10n()->t('Automatically approves all contact requests.'),
|
||||
$user['page-flags'] == User::PAGE_FLAGS_COMMUNITY
|
||||
|
@ -516,7 +516,7 @@ class Account extends BaseSettings
|
|||
],
|
||||
'$page_prvgroup' => [
|
||||
'page-flags',
|
||||
DI::l10n()->t('Private Forum [Experimental]'),
|
||||
DI::l10n()->t('Private Group [Experimental]'),
|
||||
User::PAGE_FLAGS_PRVGROUP,
|
||||
DI::l10n()->t('Requires manual approval of contact requests.'),
|
||||
$user['page-flags'] == User::PAGE_FLAGS_PRVGROUP
|
||||
|
|
|
@ -242,7 +242,7 @@ class Notify extends BaseRepository
|
|||
return false;
|
||||
}
|
||||
|
||||
// There is no need to create notifications for forum accounts
|
||||
// There is no need to create notifications for group accounts
|
||||
if ($user['account-type'] == Model\User::ACCOUNT_TYPE_COMMUNITY) {
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -925,7 +925,7 @@ class Post
|
|||
|
||||
if ($conv) {
|
||||
// This will allow us to comment on wall-to-wall items owned by our friends
|
||||
// and community forums even if somebody else wrote the post.
|
||||
// and community groups even if somebody else wrote the post.
|
||||
// bug #517 - this fixes for conversation owner
|
||||
if ($conv->getMode() == 'profile' && $conv->getProfileOwner() == DI::userSession()->getLocalUserId()) {
|
||||
return true;
|
||||
|
|
|
@ -52,8 +52,8 @@ use Friendica\Util\JsonLD;
|
|||
* - Polling the outboxes for missing content?
|
||||
*
|
||||
* Missing parts from DFRN:
|
||||
* - Public Forum
|
||||
* - Private Forum
|
||||
* - Public Group
|
||||
* - Private Group
|
||||
* - Relocation
|
||||
*/
|
||||
class ActivityPub
|
||||
|
|
|
@ -415,7 +415,7 @@ class Processor
|
|||
$item['post-type'] = Item::PT_NOTE;
|
||||
}
|
||||
|
||||
$item['isForum'] = false;
|
||||
$item['isGroup'] = false;
|
||||
|
||||
if (!empty($activity['thread-completion'])) {
|
||||
if ($activity['thread-completion'] != $item['owner-id']) {
|
||||
|
@ -434,7 +434,7 @@ class Processor
|
|||
$item['owner-id'] = $item['author-id'];
|
||||
} else {
|
||||
$actor = APContact::getByURL($item['owner-link'], false);
|
||||
$item['isForum'] = ($actor['type'] ?? 'Person') == 'Group';
|
||||
$item['isGroup'] = ($actor['type'] ?? 'Person') == 'Group';
|
||||
}
|
||||
|
||||
$item['uri'] = $activity['id'];
|
||||
|
@ -1059,7 +1059,7 @@ class Processor
|
|||
$item['causer-id'] = ($item['gravity'] == Item::GRAVITY_PARENT) ? $item['owner-id'] : $item['author-id'];
|
||||
}
|
||||
|
||||
if ($item['isForum'] ?? false) {
|
||||
if ($item['isGroup'] ?? false) {
|
||||
$item['contact-id'] = Contact::getIdForURL($activity['actor'], $receiver);
|
||||
} else {
|
||||
$item['contact-id'] = Contact::getIdForURL($activity['author'], $receiver);
|
||||
|
@ -1075,7 +1075,7 @@ class Processor
|
|||
}
|
||||
|
||||
if (($receiver != 0) && ($item['gravity'] == Item::GRAVITY_PARENT) && !in_array($item['post-reason'], [Item::PR_FOLLOWER, Item::PR_TAG, item::PR_TO, Item::PR_CC, Item::PR_AUDIENCE])) {
|
||||
if (!($item['isForum'] ?? false)) {
|
||||
if (!($item['isGroup'] ?? false)) {
|
||||
if ($item['post-reason'] == Item::PR_BCC) {
|
||||
Logger::info('Top level post via BCC from a non sharer, ignoring', ['uid' => $receiver, 'contact' => $item['contact-id'], 'url' => $item['uri']]);
|
||||
continue;
|
||||
|
@ -1089,16 +1089,16 @@ class Processor
|
|||
}
|
||||
}
|
||||
|
||||
$is_forum = false;
|
||||
$isGroup = false;
|
||||
$user = User::getById($receiver, ['account-type']);
|
||||
if (!empty($user['account-type'])) {
|
||||
$is_forum = ($user['account-type'] == User::ACCOUNT_TYPE_COMMUNITY);
|
||||
$isGroup = ($user['account-type'] == User::ACCOUNT_TYPE_COMMUNITY);
|
||||
}
|
||||
|
||||
if ((DI::pConfig()->get($receiver, 'system', 'accept_only_sharer') == Item::COMPLETION_NONE)
|
||||
&& ((!$is_forum && !($item['isForum'] ?? false) && ($activity['type'] != 'as:Announce'))
|
||||
&& ((!$isGroup && !($item['isGroup'] ?? false) && ($activity['type'] != 'as:Announce'))
|
||||
|| !Contact::isSharingByURL($activity['actor'], $receiver))) {
|
||||
Logger::info('Actor is a non sharer, is no forum or it is no announce', ['uid' => $receiver, 'actor' => $activity['actor'], 'url' => $item['uri'], 'type' => $activity['type']]);
|
||||
Logger::info('Actor is a non sharer, is no group or it is no announce', ['uid' => $receiver, 'actor' => $activity['actor'], 'url' => $item['uri'], 'type' => $activity['type']]);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -1141,7 +1141,7 @@ class Processor
|
|||
// Store send a follow request for every reshare - but only when the item had been stored
|
||||
if ($stored && ($item['private'] != Item::PRIVATE) && ($item['gravity'] == Item::GRAVITY_PARENT) && !empty($item['author-link']) && ($item['author-link'] != $item['owner-link'])) {
|
||||
$author = APContact::getByURL($item['owner-link'], false);
|
||||
// We send automatic follow requests for reshared messages. (We don't need though for forum posts)
|
||||
// We send automatic follow requests for reshared messages. (We don't need though for group posts)
|
||||
if ($author['type'] != 'Group') {
|
||||
Logger::info('Send follow request', ['uri' => $item['uri'], 'stored' => $stored, 'to' => $item['author-link']]);
|
||||
ActivityPub\Transmitter::sendFollowObject($item['uri'], $item['author-link']);
|
||||
|
|
|
@ -1098,7 +1098,7 @@ class Receiver
|
|||
if (!empty($actor)) {
|
||||
$profile = APContact::getByURL($actor);
|
||||
$followers = $profile['followers'] ?? '';
|
||||
$is_forum = ($profile['type'] ?? '') == 'Group';
|
||||
$isGroup = ($profile['type'] ?? '') == 'Group';
|
||||
if ($push) {
|
||||
Contact::updateByUrlIfNeeded($actor);
|
||||
}
|
||||
|
@ -1106,7 +1106,7 @@ class Receiver
|
|||
} else {
|
||||
Logger::info('Empty actor', ['activity' => $activity]);
|
||||
$followers = '';
|
||||
$is_forum = false;
|
||||
$isGroup = false;
|
||||
}
|
||||
|
||||
// We have to prevent false follower assumptions upon thread completions
|
||||
|
@ -1129,7 +1129,7 @@ class Receiver
|
|||
}
|
||||
|
||||
// Fetch the receivers for the public and the followers collection
|
||||
if ((($receiver == $followers) || (($receiver == self::PUBLIC_COLLECTION) && !$is_forum)) && !empty($actor)) {
|
||||
if ((($receiver == $followers) || (($receiver == self::PUBLIC_COLLECTION) && !$isGroup)) && !empty($actor)) {
|
||||
$receivers = self::getReceiverForActor($actor, $tags, $receivers, $follower_target, $profile);
|
||||
continue;
|
||||
}
|
||||
|
@ -1148,7 +1148,7 @@ class Receiver
|
|||
$condition = ['nurl' => Strings::normaliseLink($actor), 'rel' => [Contact::SHARING, Contact::FRIEND],
|
||||
'network' => $networks, 'archive' => false, 'pending' => false, 'uid' => $contact['uid']];
|
||||
|
||||
// Forum posts are only accepted from forum contacts
|
||||
// Group posts are only accepted from group contacts
|
||||
if ($contact['contact-type'] == Contact::TYPE_COMMUNITY) {
|
||||
$condition['rel'] = [Contact::SHARING, Contact::FRIEND, Contact::FOLLOWER];
|
||||
}
|
||||
|
|
|
@ -492,13 +492,13 @@ class Transmitter
|
|||
* Returns an array with permissions of the thread parent of the given item array
|
||||
*
|
||||
* @param array $item
|
||||
* @param bool $is_forum_thread
|
||||
* @param bool $is_group_thread
|
||||
*
|
||||
* @return array with permissions
|
||||
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
||||
* @throws \ImagickException
|
||||
*/
|
||||
private static function fetchPermissionBlockFromThreadParent(array $item, bool $is_forum_thread): array
|
||||
private static function fetchPermissionBlockFromThreadParent(array $item, bool $is_group_thread): array
|
||||
{
|
||||
if (empty($item['thr-parent-id'])) {
|
||||
return [];
|
||||
|
@ -528,7 +528,7 @@ class Transmitter
|
|||
$type = [Tag::TO => 'to', Tag::CC => 'cc', Tag::BTO => 'bto', Tag::BCC => 'bcc'];
|
||||
foreach (Tag::getByURIId($item['thr-parent-id'], [Tag::TO, Tag::CC, Tag::BTO, Tag::BCC]) as $receiver) {
|
||||
if (!empty($parent_profile['followers']) && $receiver['url'] == $parent_profile['followers'] && !empty($item_profile['followers'])) {
|
||||
if (!$is_forum_thread) {
|
||||
if (!$is_group_thread) {
|
||||
$permissions[$type[$receiver['type']]][] = $item_profile['followers'];
|
||||
}
|
||||
} elseif (!in_array($receiver['url'], $exclude)) {
|
||||
|
@ -573,7 +573,7 @@ class Transmitter
|
|||
}
|
||||
|
||||
$always_bcc = false;
|
||||
$is_forum = false;
|
||||
$is_group = false;
|
||||
$follower = '';
|
||||
|
||||
// Check if we should always deliver our stuff via BCC
|
||||
|
@ -581,7 +581,7 @@ class Transmitter
|
|||
$owner = User::getOwnerDataById($item['uid']);
|
||||
if (!empty($owner)) {
|
||||
$always_bcc = $owner['hide-friends'];
|
||||
$is_forum = ($owner['account-type'] == User::ACCOUNT_TYPE_COMMUNITY) && $owner['manually-approve'];
|
||||
$is_group = ($owner['account-type'] == User::ACCOUNT_TYPE_COMMUNITY) && $owner['manually-approve'];
|
||||
|
||||
$profile = APContact::getByURL($owner['url'], false);
|
||||
$follower = $profile['followers'] ?? '';
|
||||
|
@ -595,9 +595,9 @@ class Transmitter
|
|||
$parent = Post::selectFirst(['causer-link', 'post-reason'], ['id' => $item['parent']]);
|
||||
if (!empty($parent) && ($parent['post-reason'] == Item::PR_ANNOUNCEMENT) && !empty($parent['causer-link'])) {
|
||||
$profile = APContact::getByURL($parent['causer-link'], false);
|
||||
$is_forum_thread = isset($profile['type']) && $profile['type'] == 'Group';
|
||||
$is_group_thread = isset($profile['type']) && $profile['type'] == 'Group';
|
||||
} else {
|
||||
$is_forum_thread = false;
|
||||
$is_group_thread = false;
|
||||
}
|
||||
|
||||
if (self::isAnnounce($item) || self::isAPPost($last_id)) {
|
||||
|
@ -619,7 +619,7 @@ class Transmitter
|
|||
$exclusive = false;
|
||||
$mention = false;
|
||||
|
||||
if ($is_forum_thread) {
|
||||
if ($is_group_thread) {
|
||||
foreach (Tag::getByURIId($item['parent-uri-id'], [Tag::MENTION, Tag::EXCLUSIVE_MENTION]) as $term) {
|
||||
$profile = APContact::getByURL($term['url'], false);
|
||||
if (!empty($profile) && ($profile['type'] == 'Group')) {
|
||||
|
@ -644,7 +644,7 @@ class Transmitter
|
|||
$data['cc'][] = $announce['actor']['url'];
|
||||
}
|
||||
|
||||
$data = array_merge($data, self::fetchPermissionBlockFromThreadParent($item, $is_forum_thread));
|
||||
$data = array_merge($data, self::fetchPermissionBlockFromThreadParent($item, $is_group_thread));
|
||||
|
||||
// Check if the item is completely public or unlisted
|
||||
if ($item['private'] == Item::PUBLIC) {
|
||||
|
@ -702,7 +702,7 @@ class Transmitter
|
|||
$exclusive = false;
|
||||
}
|
||||
|
||||
if ($is_forum && !$exclusive && !empty($follower)) {
|
||||
if ($is_group && !$exclusive && !empty($follower)) {
|
||||
$data['cc'][] = $follower;
|
||||
} elseif (!$exclusive) {
|
||||
foreach ($receiver_list as $receiver) {
|
||||
|
@ -739,19 +739,19 @@ class Transmitter
|
|||
$profile = APContact::getByURL($parent['owner-link'], false);
|
||||
if (!empty($profile)) {
|
||||
if ($item['gravity'] != Item::GRAVITY_PARENT) {
|
||||
// Comments to forums are directed to the forum
|
||||
// But comments to forums aren't directed to the followers collection
|
||||
// This rule is only valid when the actor isn't the forum.
|
||||
// The forum needs to transmit their content to their followers.
|
||||
// Comments to groups are directed to the group
|
||||
// But comments to groups aren't directed to the followers collection
|
||||
// This rule is only valid when the actor isn't the group.
|
||||
// The group needs to transmit their content to their followers.
|
||||
if (($profile['type'] == 'Group') && ($profile['url'] != ($actor_profile['url'] ?? ''))) {
|
||||
$data['to'][] = $profile['url'];
|
||||
} else {
|
||||
$data['cc'][] = $profile['url'];
|
||||
if (($item['private'] != Item::PRIVATE) && !empty($actor_profile['followers']) && (!$exclusive || !$is_forum_thread)) {
|
||||
if (($item['private'] != Item::PRIVATE) && !empty($actor_profile['followers']) && (!$exclusive || !$is_group_thread)) {
|
||||
$data['cc'][] = $actor_profile['followers'];
|
||||
}
|
||||
}
|
||||
} elseif (!$exclusive && !$is_forum_thread) {
|
||||
} elseif (!$exclusive && !$is_group_thread) {
|
||||
// Public thread parent post always are directed to the followers.
|
||||
if ($item['private'] != Item::PRIVATE) {
|
||||
$data['cc'][] = $actor_profile['followers'];
|
||||
|
@ -885,12 +885,11 @@ class Transmitter
|
|||
{
|
||||
$inboxes = [];
|
||||
|
||||
$isforum = false;
|
||||
|
||||
$isGroup = false;
|
||||
if (!empty($item['uid'])) {
|
||||
$profile = User::getOwnerDataById($item['uid']);
|
||||
if (!empty($profile)) {
|
||||
$isforum = $profile['account-type'] == User::ACCOUNT_TYPE_COMMUNITY;
|
||||
$isGroup = $profile['account-type'] == User::ACCOUNT_TYPE_COMMUNITY;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -920,7 +919,7 @@ class Transmitter
|
|||
continue;
|
||||
}
|
||||
|
||||
if ($isforum && ($contact['network'] == Protocol::DFRN)) {
|
||||
if ($isGroup && ($contact['network'] == Protocol::DFRN)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
|
@ -2220,8 +2220,8 @@ class DFRN
|
|||
GServer::setProtocol($importer['gsid'], Post\DeliveryData::DFRN);
|
||||
}
|
||||
|
||||
// is it a public forum? Private forums aren't exposed with this method
|
||||
$forum = intval(XML::getFirstNodeValue($xpath, '/atom:feed/dfrn:community/text()'));
|
||||
// is it a public group? Private groups aren't exposed with this method
|
||||
$group = intval(XML::getFirstNodeValue($xpath, '/atom:feed/dfrn:community/text()'));
|
||||
|
||||
// The account type is new since 3.5.1
|
||||
if ($xpath->query('/atom:feed/dfrn:account_type')->length > 0) {
|
||||
|
@ -2235,17 +2235,17 @@ class DFRN
|
|||
// Updating the public contact as well
|
||||
Contact::update(['contact-type' => $accounttype], ['uid' => 0, 'nurl' => $importer['nurl']]);
|
||||
}
|
||||
// A forum contact can either have set "forum" or "prv" - but not both
|
||||
// A group contact can either have set "forum" or "prv" - but not both
|
||||
if ($accounttype == User::ACCOUNT_TYPE_COMMUNITY) {
|
||||
// It's a forum, so either set the public or private forum flag
|
||||
$condition = ['(`forum` != ? OR `prv` != ?) AND `id` = ?', $forum, !$forum, $importer['id']];
|
||||
Contact::update(['forum' => $forum, 'prv' => !$forum], $condition);
|
||||
// It's a group, so either set the public or private forum flag
|
||||
$condition = ['(`forum` != ? OR `prv` != ?) AND `id` = ?', $group, !$group, $importer['id']];
|
||||
Contact::update(['forum' => $group, 'prv' => !$group], $condition);
|
||||
|
||||
// Updating the public contact as well
|
||||
$condition = ['(`forum` != ? OR `prv` != ?) AND `uid` = 0 AND `nurl` = ?', $forum, !$forum, $importer['nurl']];
|
||||
Contact::update(['forum' => $forum, 'prv' => !$forum], $condition);
|
||||
$condition = ['(`forum` != ? OR `prv` != ?) AND `uid` = 0 AND `nurl` = ?', $group, !$group, $importer['nurl']];
|
||||
Contact::update(['forum' => $group, 'prv' => !$group], $condition);
|
||||
} else {
|
||||
// It's not a forum, so remove the flags
|
||||
// It's not a group, so remove the flags
|
||||
$condition = ['(`forum` OR `prv`) AND `id` = ?', $importer['id']];
|
||||
Contact::update(['forum' => false, 'prv' => false], $condition);
|
||||
|
||||
|
@ -2253,13 +2253,13 @@ class DFRN
|
|||
$condition = ['(`forum` OR `prv`) AND `uid` = 0 AND `nurl` = ?', $importer['nurl']];
|
||||
Contact::update(['forum' => false, 'prv' => false], $condition);
|
||||
}
|
||||
} elseif ($forum != $importer['forum']) { // Deprecated since 3.5.1
|
||||
$condition = ['`forum` != ? AND `id` = ?', $forum, $importer['id']];
|
||||
Contact::update(['forum' => $forum], $condition);
|
||||
} elseif ($group != $importer['forum']) { // Deprecated since 3.5.1
|
||||
$condition = ['`forum` != ? AND `id` = ?', $group, $importer['id']];
|
||||
Contact::update(['forum' => $group], $condition);
|
||||
|
||||
// Updating the public contact as well
|
||||
$condition = ['`forum` != ? AND `uid` = 0 AND `nurl` = ?', $forum, $importer['nurl']];
|
||||
Contact::update(['forum' => $forum], $condition);
|
||||
$condition = ['`forum` != ? AND `uid` = 0 AND `nurl` = ?', $group, $importer['nurl']];
|
||||
Contact::update(['forum' => $group], $condition);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -404,7 +404,7 @@ class Delivery
|
|||
*/
|
||||
private static function deliverDiaspora(string $cmd, array $contact, array $owner, array $items, array $target_item, bool $public_message, bool $top_level, bool $followup): bool
|
||||
{
|
||||
// We don't treat Forum posts as "wall-to-wall" to be able to post them via Diaspora
|
||||
// We don't treat group posts as "wall-to-wall" to be able to post them via Diaspora
|
||||
$walltowall = $top_level && ($owner['id'] != $items[0]['contact-id']) & ($owner['account-type'] != User::ACCOUNT_TYPE_COMMUNITY);
|
||||
|
||||
if ($public_message) {
|
||||
|
|
|
@ -36,7 +36,7 @@ class ExpireAndRemoveUsers
|
|||
{
|
||||
public static function execute()
|
||||
{
|
||||
// expire any expired regular accounts. Don't expire forums.
|
||||
// expire any expired regular accounts. Don't expire groups.
|
||||
$condition = ["NOT `account_expired` AND `account_expires_on` > ? AND `account_expires_on` < ? AND `page-flags` = ? AND `uid` != ?",
|
||||
DBA::NULL_DATETIME, DateTimeFormat::utcNow(), User::PAGE_FLAGS_NORMAL, 0];
|
||||
DBA::update('user', ['account_expired' => true], $condition);
|
||||
|
|
|
@ -167,8 +167,8 @@ class Notifier
|
|||
// Do a PuSH
|
||||
$push_notify = false;
|
||||
|
||||
// Deliver directly to a forum, don't PuSH
|
||||
$direct_forum_delivery = false;
|
||||
// Deliver directly to a group, don't PuSH
|
||||
$direct_group_delivery = false;
|
||||
|
||||
$only_ap_delivery = false;
|
||||
|
||||
|
@ -249,15 +249,15 @@ class Notifier
|
|||
$relay_to_owner = false;
|
||||
}
|
||||
|
||||
// Special treatment for forum posts
|
||||
if (Item::isForumPost($target_item['uri-id'])) {
|
||||
// Special treatment for group posts
|
||||
if (Item::isGroupPost($target_item['uri-id'])) {
|
||||
$relay_to_owner = true;
|
||||
$direct_forum_delivery = true;
|
||||
$direct_group_delivery = true;
|
||||
}
|
||||
|
||||
// Avoid that comments in a forum thread are sent to OStatus
|
||||
if (Item::isForumPost($parent['uri-id'])) {
|
||||
$direct_forum_delivery = true;
|
||||
// Avoid that comments in a group thread are sent to OStatus
|
||||
if (Item::isGroupPost($parent['uri-id'])) {
|
||||
$direct_group_delivery = true;
|
||||
}
|
||||
|
||||
$exclusive_delivery = false;
|
||||
|
@ -303,7 +303,7 @@ class Notifier
|
|||
}
|
||||
}
|
||||
|
||||
if ($direct_forum_delivery) {
|
||||
if ($direct_group_delivery) {
|
||||
$push_notify = false;
|
||||
}
|
||||
|
||||
|
@ -793,11 +793,11 @@ class Notifier
|
|||
|
||||
$uid = $target_item['contact-uid'] ?: $target_item['uid'];
|
||||
|
||||
// Update the locally stored follower list when we deliver to a forum
|
||||
// Update the locally stored follower list when we deliver to a group
|
||||
foreach (Tag::getByURIId($target_item['uri-id'], [Tag::MENTION, Tag::EXCLUSIVE_MENTION]) as $tag) {
|
||||
$target_contact = Contact::getByURL(Strings::normaliseLink($tag['url']), null, [], $uid);
|
||||
if ($target_contact && $target_contact['contact-type'] == Contact::TYPE_COMMUNITY && $target_contact['manually-approve']) {
|
||||
Circle::updateMembersForForum($target_contact['id']);
|
||||
Circle::updateMembersForGroup($target_contact['id']);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -633,7 +633,7 @@ return [
|
|||
'throttle_limit_month' => 0,
|
||||
|
||||
// transmit_pending_events (Boolean)
|
||||
// Transmit pending events upon accepted contact request for forums
|
||||
// Transmit pending events upon accepted contact request for groups
|
||||
'transmit_pending_events' => false,
|
||||
|
||||
// update_active_contacts (Boolean)
|
||||
|
|
|
@ -667,7 +667,7 @@ return [
|
|||
'/network' => [
|
||||
'[/]' => [Module\Conversation\Network::class, [R::GET]],
|
||||
'/archive/{from:\d\d\d\d-\d\d-\d\d}[/{to:\d\d\d\d-\d\d-\d\d}]' => [Module\Conversation\Network::class, [R::GET]],
|
||||
'/forum/{contact_id:\d+}' => [Module\Conversation\Network::class, [R::GET]],
|
||||
'/group/{contact_id:\d+}' => [Module\Conversation\Network::class, [R::GET]],
|
||||
'/circle/{circle_id:\d+}' => [Module\Conversation\Network::class, [R::GET]],
|
||||
],
|
||||
|
||||
|
@ -687,7 +687,7 @@ return [
|
|||
'/update_network' => [
|
||||
'[/]' => [Module\Update\Network::class, [R::GET]],
|
||||
'/archive/{from:\d\d\d\d-\d\d-\d\d}[/{to:\d\d\d\d-\d\d-\d\d}]' => [Module\Update\Network::class, [R::GET]],
|
||||
'/forum/{contact_id:\d+}' => [Module\Update\Network::class, [R::GET]],
|
||||
'/group/{contact_id:\d+}' => [Module\Update\Network::class, [R::GET]],
|
||||
'/circle/{circle_id:\d+}' => [Module\Update\Network::class, [R::GET]],
|
||||
],
|
||||
|
||||
|
|
|
@ -452,14 +452,14 @@ td.federation-data {
|
|||
max-height: 80px;
|
||||
}
|
||||
|
||||
/* forumlist widget */
|
||||
.forumlist-img {
|
||||
/* group list widget */
|
||||
.grouplist-img {
|
||||
height: 20px;
|
||||
width: 20px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
#forum-widget-collapse {
|
||||
#group-widget-collapse {
|
||||
opacity: 0.3;
|
||||
}
|
||||
|
||||
|
@ -479,7 +479,7 @@ aside .help-aside-wrapper h1 {
|
|||
color: #ffffff;
|
||||
}
|
||||
|
||||
#forum-widget-collapse:hover {
|
||||
#group-widget-collapse:hover {
|
||||
opacity: 1.0;
|
||||
}
|
||||
|
||||
|
|
|
@ -25,7 +25,7 @@ function contact_search(term, callback, backend_url, type, mode) {
|
|||
if(lterm.indexOf(t) >= 0) { // A more broad search has been performed already, so use those results
|
||||
// Filter old results locally
|
||||
var matching = contact_search.cache[bt][t].filter(function (x) { return (x.name.toLowerCase().indexOf(lterm) >= 0 || (typeof x.nick !== 'undefined' && x.nick.toLowerCase().indexOf(lterm) >= 0)); }); // Need to check that nick exists because circles don't have one
|
||||
matching.unshift({forum:false, text: term, replace: term});
|
||||
matching.unshift({group: false, text: term, replace: term});
|
||||
setTimeout(function() { callback(matching); } , 1); // Use "pseudo-thread" to avoid some problems
|
||||
return;
|
||||
}
|
||||
|
@ -69,10 +69,10 @@ function contact_format(item) {
|
|||
// Show contact information if not explicitly told to show something else
|
||||
if(typeof item.text === 'undefined') {
|
||||
var desc = ((item.label) ? item.nick + ' ' + item.label : item.nick);
|
||||
var forum = ((item.forum) ? 'forum' : '');
|
||||
var group = ((item.group) ? 'group' : '');
|
||||
if(typeof desc === 'undefined') desc = '';
|
||||
if(desc) desc = ' ('+desc+')';
|
||||
return "<div class='{0}' title='{4}'><img class='acpopup-img' src='{1}'><span class='acpopup-contactname'>{2}</span><span class='acpopup-sub-text'>{3}</span><div class='clear'></div></div>".format(forum, item.photo, item.name, desc, item.link);
|
||||
return "<div class='{0}' title='{4}'><img class='acpopup-img' src='{1}'><span class='acpopup-contactname'>{2}</span><span class='acpopup-sub-text'>{3}</span><div class='clear'></div></div>".format(group, item.photo, item.name, desc, item.link);
|
||||
}
|
||||
else
|
||||
return "<div>" + item.text + "</div>";
|
||||
|
@ -258,8 +258,8 @@ function string2bb(element) {
|
|||
template: contact_format,
|
||||
};
|
||||
|
||||
// Autocomplete forums
|
||||
forums = {
|
||||
// Autocomplete groups
|
||||
groups = {
|
||||
match: /(^|\s)(!\!*)([^ \n]+)$/,
|
||||
index: 3,
|
||||
search: function(term, callback) { contact_search(term, callback, backend_url, 'f'); },
|
||||
|
@ -294,7 +294,7 @@ function string2bb(element) {
|
|||
};
|
||||
|
||||
this.attr('autocomplete','off');
|
||||
this.textcomplete([contacts, forums, smilies, tags], {dropdown: {className:'acpopup'}});
|
||||
this.textcomplete([contacts, groups, smilies, tags], {dropdown: {className:'acpopup'}});
|
||||
this.fixTextcompleteEscape();
|
||||
|
||||
return this;
|
||||
|
@ -310,7 +310,7 @@ function string2bb(element) {
|
|||
template: contact_format,
|
||||
};
|
||||
|
||||
// Autocomplete forum accounts
|
||||
// Autocomplete group accounts
|
||||
community = {
|
||||
match: /(^!)([^\n]{2,})$/,
|
||||
index: 2,
|
||||
|
|
|
@ -296,11 +296,11 @@ $(function() {
|
|||
$(".circle-"+gid+" .notify").addClass("show").text(gcount);
|
||||
});
|
||||
|
||||
$(".forum-widget-entry .notify").removeClass("show");
|
||||
$(data.forums).each(function(key, forum) {
|
||||
var fid = forum.id;
|
||||
var fcount = forum.count;
|
||||
$(".forum-"+fid+" .notify").addClass("show").text(fcount);
|
||||
$(".group-widget-entry .notify").removeClass("show");
|
||||
$(data.groups).each(function(key, group) {
|
||||
var fid = group.id;
|
||||
var fcount = group.count;
|
||||
$(".group-"+fid+" .notify").addClass("show").text(fcount);
|
||||
});
|
||||
|
||||
if (data.notifications.length == 0) {
|
||||
|
|
53
view/templates/widget/group_list.tpl
Normal file
53
view/templates/widget/group_list.tpl
Normal file
|
@ -0,0 +1,53 @@
|
|||
<script>
|
||||
function showHideGroupList() {
|
||||
if( $("li[id^='group-widget-entry-extended-']").is(':visible')) {
|
||||
$("li[id^='group-widget-entry-extended-']").hide();
|
||||
$("li#group-widget-collapse").html('{{$showmore}}');
|
||||
|
||||
}
|
||||
else {
|
||||
$("li[id^='group-widget-entry-extended-']").show();
|
||||
$("li#group-widget-collapse").html('{{$showless}}');
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<span id="group-list-sidebar-frame">
|
||||
<span id="group-list-sidebar-inflated" class="widget fakelink" onclick="openCloseWidget('group-list-sidebar', 'group-list-sidebar-inflated');">
|
||||
<h3>{{$title}}</h3>
|
||||
</span>
|
||||
<div id="group-list-sidebar" class="widget">
|
||||
<span class="fakelink" onclick="openCloseWidget('group-list-sidebar', 'group-list-sidebar-inflated');">
|
||||
<h3 id="group-list">{{$title}}</h3>
|
||||
</span>
|
||||
<ul id="group-list-sidebar-ul" role="menu">
|
||||
{{foreach $groups as $group}}
|
||||
{{if $group.id <= $visible_groups}}
|
||||
<li class="group-widget-entry group-{{$group.cid}}" id="group-widget-entry-{{$group.id}}" role="menuitem">
|
||||
<span class="notify badge pull-right"></span>
|
||||
<a href="{{$group.external_url}}" title="{{$group.link_desc}}" class="label sparkle" target="_blank" rel="noopener noreferrer">
|
||||
<img class="group-list-img" src="{{$group.micro}}" alt="{{$group.link_desc}}" />
|
||||
</a>
|
||||
<a class="group-widget-link {{if $group.selected}}group-selected{{/if}}" id="group-widget-link-{{$group.id}}" href="{{$group.url}}">{{$group.name}}</a>
|
||||
</li>
|
||||
{{/if}}
|
||||
|
||||
{{if $group.id > $visible_groups}}
|
||||
<li class="group-widget-entry group-{{$group.cid}}" id="group-widget-entry-extended-{{$group.id}}" role="menuitem" style="display: none;">
|
||||
<span class="notify badge pull-right"></span>
|
||||
<a href="{{$group.external_url}}" title="{{$group.link_desc}}" class="label sparkle" target="_blank" rel="noopener noreferrer">
|
||||
<img class="group-list-img" src="{{$group.micro}}" alt="{{$group.link_desc}}" />
|
||||
</a>
|
||||
<a class="group-widget-link {{if $group.selected}}group-selected{{/if}}" id="group-widget-link-{{$group.id}}" href="{{$group.url}}">{{$group.name}}</a>
|
||||
</li>
|
||||
{{/if}}
|
||||
{{/foreach}}
|
||||
|
||||
{{if $total > $visible_groups }}
|
||||
<li onclick="showHideGroupList(); return false;" id="group-widget-collapse" class="group-widget-link fakelink tool">{{$showmore}}</li>
|
||||
{{/if}}
|
||||
</ul>
|
||||
</div>
|
||||
</span>
|
||||
<script>
|
||||
initWidget('group-list-sidebar', 'group-list-sidebar-inflated');
|
||||
</script>
|
|
@ -1,53 +0,0 @@
|
|||
<script>
|
||||
function showHideForumlist() {
|
||||
if( $("li[id^='forum-widget-entry-extended-']").is(':visible')) {
|
||||
$("li[id^='forum-widget-entry-extended-']").hide();
|
||||
$("li#forum-widget-collapse").html('{{$showmore}}');
|
||||
|
||||
}
|
||||
else {
|
||||
$("li[id^='forum-widget-entry-extended-']").show();
|
||||
$("li#forum-widget-collapse").html('{{$showless}}');
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<span id="forumlist-sidebar-frame">
|
||||
<span id="forumlist-sidebar-inflated" class="widget fakelink" onclick="openCloseWidget('forumlist-sidebar', 'forumlist-sidebar-inflated');">
|
||||
<h3>{{$title}}</h3>
|
||||
</span>
|
||||
<div id="forumlist-sidebar" class="widget">
|
||||
<span class="fakelink" onclick="openCloseWidget('forumlist-sidebar', 'forumlist-sidebar-inflated');">
|
||||
<h3 id="forumlist">{{$title}}</h3>
|
||||
</span>
|
||||
<ul id="forumlist-sidebar-ul" role="menu">
|
||||
{{foreach $forums as $forum}}
|
||||
{{if $forum.id <= $visible_forums}}
|
||||
<li class="forum-widget-entry forum-{{$forum.cid}}" id="forum-widget-entry-{{$forum.id}}" role="menuitem">
|
||||
<span class="notify badge pull-right"></span>
|
||||
<a href="{{$forum.external_url}}" title="{{$forum.link_desc}}" class="label sparkle" target="_blank" rel="noopener noreferrer">
|
||||
<img class="forumlist-img" src="{{$forum.micro}}" alt="{{$forum.link_desc}}" />
|
||||
</a>
|
||||
<a class="forum-widget-link {{if $forum.selected}}forum-selected{{/if}}" id="forum-widget-link-{{$forum.id}}" href="{{$forum.url}}">{{$forum.name}}</a>
|
||||
</li>
|
||||
{{/if}}
|
||||
|
||||
{{if $forum.id > $visible_forums}}
|
||||
<li class="forum-widget-entry forum-{{$forum.cid}}" id="forum-widget-entry-extended-{{$forum.id}}" role="menuitem" style="display: none;">
|
||||
<span class="notify badge pull-right"></span>
|
||||
<a href="{{$forum.external_url}}" title="{{$forum.link_desc}}" class="label sparkle" target="_blank" rel="noopener noreferrer">
|
||||
<img class="forumlist-img" src="{{$forum.micro}}" alt="{{$forum.link_desc}}" />
|
||||
</a>
|
||||
<a class="forum-widget-link {{if $forum.selected}}forum-selected{{/if}}" id="forum-widget-link-{{$forum.id}}" href="{{$forum.url}}">{{$forum.name}}</a>
|
||||
</li>
|
||||
{{/if}}
|
||||
{{/foreach}}
|
||||
|
||||
{{if $total > $visible_forums }}
|
||||
<li onclick="showHideForumlist(); return false;" id="forum-widget-collapse" class="forum-widget-link fakelink tool">{{$showmore}}</li>
|
||||
{{/if}}
|
||||
</ul>
|
||||
</div>
|
||||
</span>
|
||||
<script>
|
||||
initWidget('forumlist-sidebar', 'forumlist-sidebar-inflated');
|
||||
</script>
|
|
@ -90,7 +90,7 @@ nav #site-location {
|
|||
box-shadow: 4px 4px 3px 0 #444444;
|
||||
}
|
||||
|
||||
.forumlist-img {
|
||||
.group-list-img {
|
||||
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;
|
||||
}
|
||||
|
||||
.widget .selected, .circle-selected, .forum-selected {
|
||||
.widget .selected, .circle-selected, .group-selected {
|
||||
padding: 3px;
|
||||
-moz-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
|
@ -1859,7 +1859,7 @@ a.mail-list-link {
|
|||
#sidebar-circle-list ul {
|
||||
list-style-type: none;
|
||||
}
|
||||
.sidebar-circle-li .notify, .forum-widget-entry .notify {
|
||||
.sidebar-circle-li .notify, .group-widget-entry .notify {
|
||||
display: none;
|
||||
font-size: 9px;
|
||||
border: 1px solid rgb(221, 221, 221);
|
||||
|
@ -1867,7 +1867,7 @@ a.mail-list-link {
|
|||
float: right;
|
||||
background-color: #BABDB6;
|
||||
}
|
||||
.sidebar-circle-li .notify.show, .forum-widget-entry .notify.show {
|
||||
.sidebar-circle-li .notify.show, .group-widget-entry .notify.show {
|
||||
display: block;
|
||||
}
|
||||
|
||||
|
@ -1881,7 +1881,7 @@ a.mail-list-link {
|
|||
margin-top: 10px;
|
||||
}
|
||||
|
||||
#forumlist-sidebar ul {
|
||||
#group-list-sidebar ul {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
|
|
|
@ -20,7 +20,7 @@ This theme should be the start of a discussion in the friendica community (users
|
|||
What frameworks do we want to use? How should default friendica look like? And how do we want to use friendica? What do we need in the core code (At the present time some stuff this is done with ugly javascript hacks and own php code)?
|
||||
|
||||
Coding a theme is much work but you will get a really good insight of the limitations of friendica and can start a discussion about doing things differently.
|
||||
So join the discussion at the friendica forums ;-)
|
||||
So join the discussion at the friendica groups ;-)
|
||||
|
||||
If anyone wants to contribute to this theme he/she is welcome to do this.
|
||||
|
||||
|
|
|
@ -367,7 +367,7 @@ btn-eventnav:hover {
|
|||
aside .badge {
|
||||
opacity: 0.7;
|
||||
}
|
||||
.forum-widget-entry .badge,
|
||||
.group-widget-entry .badge,
|
||||
.sidebar-circle-li .badge {
|
||||
margin-top: 6px;
|
||||
}
|
||||
|
@ -1102,7 +1102,7 @@ aside .widget li a:hover {
|
|||
color: $font_color_darker;
|
||||
}
|
||||
|
||||
/* forumlist widget */
|
||||
/* group-list widget */
|
||||
aside > #datebrowse-sidebar li.posted-date-selector-months {
|
||||
margin-bottom: 10px;
|
||||
padding: 0;
|
||||
|
@ -1122,7 +1122,7 @@ aside > #datebrowse-sidebar .posted-date-selector-months > ul > li:hover {
|
|||
padding-left: 27px;
|
||||
}
|
||||
|
||||
.forumlist-img {
|
||||
.group-list-img {
|
||||
-webkit-filter: grayscale(100%);
|
||||
filter: grayscale(100%);
|
||||
opacity: 0.5;
|
||||
|
@ -1133,7 +1133,7 @@ aside > #datebrowse-sidebar .posted-date-selector-months > ul > li:hover {
|
|||
-ms-transition: all 0.2s ease-in-out;
|
||||
transition: all 0.2s ease-in-out;
|
||||
}
|
||||
#forumlist-sidebar-ul li:hover a > .forumlist-img {
|
||||
#group-list-sidebar-ul li:hover a > .group-list-img {
|
||||
-webkit-filter: unset;
|
||||
filter: unset;
|
||||
opacity: unset;
|
||||
|
@ -2192,7 +2192,7 @@ nav .acpopup {
|
|||
border-left: 3px solid $link_color;
|
||||
padding-left: 17px !important;
|
||||
}
|
||||
.textcomplete-item a .forum {
|
||||
.textcomplete-item a .group {
|
||||
color: $link_color;
|
||||
}
|
||||
img.acpopup-img {
|
||||
|
@ -2494,7 +2494,7 @@ body.mod-login .navbar #nav-login {
|
|||
margin-top: 20px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
.contact-block-div.forumlist-profile-advanced {
|
||||
.contact-block-div.group-list-profile-advanced {
|
||||
float: left;
|
||||
}
|
||||
|
||||
|
|
|
@ -41,9 +41,9 @@ $(document).ready(function () {
|
|||
$("#sidebar-circle-ul li a.circle-selected").parent("li").addClass("selected");
|
||||
}
|
||||
|
||||
// add the class "selected" to forums widgets li if li > a does have the class forum-selected
|
||||
if ($("#forumlist-sidebar-ul li a").hasClass("forum-selected")) {
|
||||
$("#forumlist-sidebar-ul li a.forum-selected").parent("li").addClass("selected");
|
||||
// add the class "selected" to groups widgets li if li > a does have the class group-selected
|
||||
if ($("#group-list-sidebar-ul li a").hasClass("group-selected")) {
|
||||
$("#group-list-sidebar-ul li a.group-selected").parent("li").addClass("selected");
|
||||
}
|
||||
|
||||
// add the class "active" to tabmenuli if li > a does have the class active
|
||||
|
@ -206,7 +206,7 @@ $(document).ready(function () {
|
|||
});
|
||||
}
|
||||
|
||||
// move the forum contact information of the network page into the second navbar
|
||||
// move the group contact information of the network page into the second navbar
|
||||
if ($(".network-content-wrapper > #viewcontact_wrapper-network").length) {
|
||||
// get the contact-wrapper element and append it to the second nav bar
|
||||
// Note: We need the first() element with this class since at the present time we
|
||||
|
|
|
@ -91,7 +91,7 @@
|
|||
<div class="contact-entry-name" id="contact-entry-name-{{$contact.id}}">
|
||||
<h4 class="media-heading"><a href="{{if !empty($contact.photo_menu.edit)}}{{$contact.photo_menu.edit.1}}{{else}}{{$contact.url}}{{/if}}">{{$contact.name}}</a>
|
||||
{{if $contact.account_type}} <small class="contact-entry-details" id="contact-entry-accounttype-{{$contact.id}}">({{$contact.account_type}})</small>{{/if}}
|
||||
{{if $contact.account_type == 'Forum'}}<i class="fa fa-comments-o" aria-hidden="true"></i>{{/if}}
|
||||
{{if $contact.account_type == 'Group'}}<i class="fa fa-comments-o" aria-hidden="true"></i>{{/if}}
|
||||
{{* @todo this needs some changing in core because $contact.account_type contains a translated string which may not be the same in every language *}}
|
||||
</h4>
|
||||
</div>
|
||||
|
|
|
@ -50,9 +50,9 @@
|
|||
$("#profile-jot-text").focus(enableOnUser);
|
||||
$("#profile-jot-text").click(enableOnUser);
|
||||
|
||||
// When clicking on a forum in acl we should remove the profile jot textarea
|
||||
// default value before inserting the forum mention
|
||||
$("body").on('click', '#jot-modal .acl-list-item.forum', function(){
|
||||
// When clicking on a group in acl we should remove the profile jot textarea
|
||||
// default value before inserting the group mention
|
||||
$("body").on('click', '#jot-modal .acl-list-item.group', function(){
|
||||
jotTextOpenUI(document.getElementById("profile-jot-text"));
|
||||
});
|
||||
|
||||
|
|
|
@ -80,7 +80,7 @@ as the value of $top_child_total (this is done at the end of this file)
|
|||
</a>
|
||||
</div>
|
||||
|
||||
{{* The little overlay avatar picture if someone is posting directly to a wall or a forum *}}
|
||||
{{* The little overlay avatar picture if someone is posting directly to a wall or a group *}}
|
||||
{{if $item.owner_url}}
|
||||
<div aria-hidden="true" class="contact-photo-wrapper mframe wwto" id="wall-item-ownerphoto-wrapper-{{$item.id}}">
|
||||
<a href="{{$item.owner_url}}" target="redir" title="{{$item.olinktitle}}" class="contact-photo-link" id="wall-item-ownerphoto-link-{{$item.id}}">
|
||||
|
|
|
@ -12,11 +12,11 @@ $(document).ready(function(){
|
|||
$(".circle-"+gid+" .notify").addClass("on").text(gcount);
|
||||
});
|
||||
|
||||
$(".forum-widget-entry .notify").removeClass("on");
|
||||
$(data).find("forum").each(function() {
|
||||
$(".group-widget-entry .notify").removeClass("on");
|
||||
$(data).find("group").each(function() {
|
||||
var fid = this.id;
|
||||
var fcount = this.innerHTML;
|
||||
$(".forum-"+fid+" .notify").addClass("on").text(fcount);
|
||||
$(".group-"+fid+" .notify").addClass("on").text(fcount);
|
||||
});
|
||||
|
||||
console.log(intro,mail);
|
||||
|
|
46
view/theme/quattro/templates/widget/group_list.tpl
Normal file
46
view/theme/quattro/templates/widget/group_list.tpl
Normal file
|
@ -0,0 +1,46 @@
|
|||
<script>
|
||||
|
||||
function showHideGroupList() {
|
||||
if( $("li[id^='group-widget-entry-extended-']").is(':visible')) {
|
||||
$("li[id^='group-widget-entry-extended-']").hide();
|
||||
$("li#group-widget-collapse").html('{{$showmore}}');
|
||||
|
||||
}
|
||||
else {
|
||||
$("li[id^='group-widget-entry-extended-']").show();
|
||||
$("li#group-widget-collapse").html('{{$showless}}');
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<div id="group-list-sidebar" class="widget">
|
||||
<h3 id="group-list">{{$title}}</h3>
|
||||
|
||||
<ul id="group-list-sidebar-ul" role="menu">
|
||||
{{foreach $groups as $group}}
|
||||
{{if $group.id <= $visible_groups}}
|
||||
<li class="group-widget-entry group-{{$group.cid}} tool {{if $group.selected}}selected{{/if}}" id="group-widget-entry-{{$group.id}}" role="menuitem">
|
||||
<span class="notify badge pull-right"></span>
|
||||
<a href="{{$group.external_url}}" title="{{$group.link_desc}}" class="label sparkle" target="_blank" rel="noopener noreferrer">
|
||||
<img class="group-list-img" src="{{$group.micro}}" alt="{{$group.link_desc}}" />
|
||||
</a>
|
||||
<a class="group-widget-link" id="group-widget-link-{{$group.id}}" href="{{$group.url}}">{{$group.name}}</a>
|
||||
</li>
|
||||
{{/if}}
|
||||
|
||||
{{if $group.id > $visible_groups}}
|
||||
<li class="group-widget-entry group-{{$group.cid}} tool {{if $group.selected}}selected{{/if}}" id="group-widget-entry-extended-{{$group.id}}" role="menuitem" style="display: none;">
|
||||
<span class="notify badge pull-right"></span>
|
||||
<a href="{{$group.external_url}}" title="{{$group.link_desc}}" class="label sparkle" target="_blank" rel="noopener noreferrer">
|
||||
<img class="group-list-img" src="{{$group.micro}}" alt="{{$group.link_desc}}" />
|
||||
</a>
|
||||
<a class="group-widget-link" id="group-widget-link-{{$group.id}}" href="{{$group.url}}">{{$group.name}}</a>
|
||||
</li>
|
||||
{{/if}}
|
||||
{{/foreach}}
|
||||
|
||||
{{if $total > $visible_groups }}
|
||||
<li onclick="showHideGroupList(); return false;" id="group-widget-collapse" class="group-widget-link fakelink tool">{{$showmore}}</li>
|
||||
{{/if}}
|
||||
</ul>
|
||||
</div>
|
|
@ -1,46 +0,0 @@
|
|||
<script>
|
||||
|
||||
function showHideForumlist() {
|
||||
if( $("li[id^='forum-widget-entry-extended-']").is(':visible')) {
|
||||
$("li[id^='forum-widget-entry-extended-']").hide();
|
||||
$("li#forum-widget-collapse").html('{{$showmore}}');
|
||||
|
||||
}
|
||||
else {
|
||||
$("li[id^='forum-widget-entry-extended-']").show();
|
||||
$("li#forum-widget-collapse").html('{{$showless}}');
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<div id="forumlist-sidebar" class="widget">
|
||||
<h3 id="forumlist">{{$title}}</h3>
|
||||
|
||||
<ul id="forumlist-sidebar-ul" role="menu">
|
||||
{{foreach $forums as $forum}}
|
||||
{{if $forum.id <= $visible_forums}}
|
||||
<li class="forum-widget-entry forum-{{$forum.cid}} tool {{if $forum.selected}}selected{{/if}}" id="forum-widget-entry-{{$forum.id}}" role="menuitem">
|
||||
<span class="notify badge pull-right"></span>
|
||||
<a href="{{$forum.external_url}}" title="{{$forum.link_desc}}" class="label sparkle" target="_blank" rel="noopener noreferrer">
|
||||
<img class="forumlist-img" src="{{$forum.micro}}" alt="{{$forum.link_desc}}" />
|
||||
</a>
|
||||
<a class="forum-widget-link" id="forum-widget-link-{{$forum.id}}" href="{{$forum.url}}">{{$forum.name}}</a>
|
||||
</li>
|
||||
{{/if}}
|
||||
|
||||
{{if $forum.id > $visible_forums}}
|
||||
<li class="forum-widget-entry forum-{{$forum.cid}} tool {{if $forum.selected}}selected{{/if}}" id="forum-widget-entry-extended-{{$forum.id}}" role="menuitem" style="display: none;">
|
||||
<span class="notify badge pull-right"></span>
|
||||
<a href="{{$forum.external_url}}" title="{{$forum.link_desc}}" class="label sparkle" target="_blank" rel="noopener noreferrer">
|
||||
<img class="forumlist-img" src="{{$forum.micro}}" alt="{{$forum.link_desc}}" />
|
||||
</a>
|
||||
<a class="forum-widget-link" id="forum-widget-link-{{$forum.id}}" href="{{$forum.url}}">{{$forum.name}}</a>
|
||||
</li>
|
||||
{{/if}}
|
||||
{{/foreach}}
|
||||
|
||||
{{if $total > $visible_forums }}
|
||||
<li onclick="showHideForumlist(); return false;" id="forum-widget-collapse" class="forum-widget-link fakelink tool">{{$showmore}}</li>
|
||||
{{/if}}
|
||||
</ul>
|
||||
</div>
|
|
@ -88,7 +88,7 @@ function theme_admin(App $a) {
|
|||
|
||||
$t = Renderer::getMarkupTemplate("theme_admin_settings.tpl");
|
||||
$o = Renderer::replaceMacros($t, [
|
||||
'$helperlist' => ['vier_helperlist', DI::l10n()->t('Comma separated list of helper forums'), $helperlist, '', ''],
|
||||
'$helperlist' => ['vier_helperlist', DI::l10n()->t('Comma separated list of helper groups'), $helperlist, '', ''],
|
||||
]);
|
||||
|
||||
$show_pages = get_vier_config('show_pages', true, true);
|
||||
|
|
|
@ -421,7 +421,7 @@ pre code {
|
|||
.tool a {
|
||||
/* color: #000; */
|
||||
}
|
||||
.tool a:hover, .widget a:hover, #nets-sidebar a:hover, #forum-widget-collapse:hover, .admin.link a:hover, aside h4 a:hover, right_aside h4 a:hover {
|
||||
.tool a:hover, .widget a:hover, #nets-sidebar a:hover, #group-widget-collapse:hover, .admin.link a:hover, aside h4 a:hover, right_aside h4 a:hover {
|
||||
/* text-decoration: underline; */
|
||||
text-decoration: none;
|
||||
color: black;
|
||||
|
@ -435,8 +435,8 @@ pre code {
|
|||
opacity: 1;
|
||||
}
|
||||
|
||||
.sidebar-circle-li:hover, #sidebar-new-circle:hover, #sidebar-edit-circles:hover,#forum-widget-collapse:hover,
|
||||
#sidebar-uncircled:hover, .side-link:hover, .nets-ul li:hover, #forumlist-sidebar li:hover, #forumlist-sidebar-right li:hover,
|
||||
.sidebar-circle-li:hover, #sidebar-new-circle:hover, #sidebar-edit-circles:hover,#group-widget-collapse:hover,
|
||||
#sidebar-uncircled:hover, .side-link:hover, .nets-ul li:hover, #group-list-sidebar li:hover, #group-list-sidebar-right li:hover,
|
||||
.nets-all:hover, .saved-search-li:hover, li.tool:hover, .admin.link:hover, aside h4 a:hover, right_aside h4 a:hover, #message-new:hover,
|
||||
#sidebar-photos-albums li:hover, .photos-upload-link:hover, .textcomplete-item.active {
|
||||
/* background-color: #ddd; */
|
||||
|
@ -452,11 +452,11 @@ pre code {
|
|||
/* color: #000; */
|
||||
}
|
||||
|
||||
.widget .selected, .forum-selected {
|
||||
.widget .selected, .group-selected {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#forum-widget-showmore, #sidebar-new-circle, #sidebar-edit-circles, #forum-widget-collapse, #forumlist-rsidebar-right, #sidebar-uncircled,
|
||||
#group-widget-showmore, #sidebar-new-circle, #sidebar-edit-circles, #group-widget-collapse, #group-list-rsidebar-right, #sidebar-uncircled,
|
||||
.side-link, #peoplefind-desc, #connect-desc, .nets-all, .admin.link, #message-new {
|
||||
padding-left: 10px;
|
||||
padding-top: 3px;
|
||||
|
@ -471,22 +471,22 @@ pre code {
|
|||
display: block;
|
||||
}
|
||||
|
||||
#forumlist-sidebar {
|
||||
#group-list-sidebar {
|
||||
padding-top: 3px;
|
||||
padding-bottom: 3px;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.forum-widget-entry {
|
||||
.group-widget-entry {
|
||||
padding-left: 10px;
|
||||
padding-right: 5px;
|
||||
}
|
||||
|
||||
#forumlist-sidebar .notify, #forumlist-sidebar-right .notify {
|
||||
#group-list-sidebar .notify, #group-list-sidebar-right .notify {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#forumlist-sidebar .notify.show, #forumlist-sidebar-right .notify.show {
|
||||
#group-list-sidebar .notify.show, #group-list-sidebar-right .notify.show {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
|
@ -517,11 +517,11 @@ a.sidebar-circle-element {
|
|||
color: black;
|
||||
}
|
||||
|
||||
#forumlist-sidebar a, #forumlist-sidebar-right a, .tool a, .admin.link a, #sidebar-photos-albums a {
|
||||
#group-list-sidebar a, #group-list-sidebar-right a, .tool a, .admin.link a, #sidebar-photos-albums a {
|
||||
color: #737373;
|
||||
}
|
||||
|
||||
#forumlist-sidebar, #forumlist-sidebar-right {
|
||||
#group-list-sidebar, #group-list-sidebar-right {
|
||||
margin-top: 2px;
|
||||
}
|
||||
|
||||
|
@ -941,11 +941,11 @@ nav .acpopup {
|
|||
color: #000;
|
||||
padding: 3px 20px;
|
||||
}
|
||||
.textcomplete-item a .forum, .forum .acpopup-sub-text {
|
||||
.textcomplete-item a .group, .group .acpopup-sub-text {
|
||||
color: #36C;
|
||||
opacity: 0.8;
|
||||
}
|
||||
.textcomplete-item a .forum:hover {
|
||||
.textcomplete-item a .group:hover {
|
||||
opacity: 1.0;
|
||||
}
|
||||
img.acpopup-img {
|
||||
|
|
|
@ -121,7 +121,7 @@
|
|||
<option value="fulltext">{{$nav.searchoption.0}}</option>
|
||||
<option value="tags">{{$nav.searchoption.1}}</option>
|
||||
<option value="contacts">{{$nav.searchoption.2}}</option>
|
||||
{{if $nav.searchoption.3}}<option value="forums">{{$nav.searchoption.3}}</option>{{/if}}
|
||||
{{if $nav.searchoption.3}}<option value="groups">{{$nav.searchoption.3}}</option>{{/if}}
|
||||
</select>
|
||||
</form>
|
||||
</li>
|
||||
|
|
|
@ -1,47 +0,0 @@
|
|||
<script>
|
||||
|
||||
function showHideForumlist() {
|
||||
if( $("li[id^='forum-widget-entry-extended-']").is(':visible')) {
|
||||
$("li[id^='forum-widget-entry-extended-']").hide();
|
||||
$("li#forum-widget-collapse").html('{{$showmore}}');
|
||||
|
||||
}
|
||||
else {
|
||||
$("li[id^='forum-widget-entry-extended-']").show();
|
||||
$("li#forum-widget-collapse").html('{{$showless}}');
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<div id="forumlist-sidebar-right" class="widget">
|
||||
<h3 id="forumlist">{{$title}}</h3>
|
||||
|
||||
<ul id="forumlist-sidebar-ul" role="menu">
|
||||
{{foreach $forums as $forum}}
|
||||
{{if $forum.id <= $visible_forums}}
|
||||
<li class="forum-widget-entry forum-{{$forum.cid}}" id="forum-widget-entry-{{$forum.id}}" role="menuitem">
|
||||
<span class="notify badge pull-right"></span>
|
||||
<a href="{{$forum.external_url}}" title="{{$forum.link_desc}}" class="label sparkle" target="_blank" rel="noopener noreferrer">
|
||||
<img class="forumlist-img" src="{{$forum.micro}}" alt="{{$forum.link_desc}}" />
|
||||
</a>
|
||||
<a class="forum-widget-link {{if $forum.selected}}forum-selected{{/if}}" id="forum-widget-link-{{$forum.id}}" href="{{$forum.url}}">{{$forum.name}}</a>
|
||||
</li>
|
||||
{{/if}}
|
||||
|
||||
{{if $forum.id > $visible_forums}}
|
||||
<li class="forum-widget-entry forum-{{$forum.cid}}" id="forum-widget-entry-extended-{{$forum.id}}" role="menuitem" style="display: none;">
|
||||
<span class="notify badge pull-right"></span>
|
||||
<a href="{{$forum.external_url}}" title="{{$forum.link_desc}}" class="label sparkle" target="_blank" rel="noopener noreferrer">
|
||||
<img class="forumlist-img" src="{{$forum.micro}}" alt="{{$forum.link_desc}}" />
|
||||
</a>
|
||||
<a class="forum-widget-link {{if $forum.selected}}forum-selected{{/if}}" id="forum-widget-link-{{$forum.id}}" href="{{$forum.url}}">{{$forum.name}}</a>
|
||||
</li>
|
||||
{{/if}}
|
||||
{{/foreach}}
|
||||
|
||||
{{if $total > $visible_forums }}
|
||||
<li onclick="showHideForumlist(); return false;" id="forum-widget-collapse" class="forum-widget-link fakelink tool">{{$showmore}}</li>
|
||||
{{/if}}
|
||||
</ul>
|
||||
</div>
|
|
@ -27,7 +27,7 @@
|
|||
*/
|
||||
|
||||
use Friendica\App;
|
||||
use Friendica\Content\ForumManager;
|
||||
use Friendica\Content\GroupManager;
|
||||
use Friendica\Core\Addon;
|
||||
use Friendica\Core\Renderer;
|
||||
use Friendica\Core\Search;
|
||||
|
@ -208,7 +208,7 @@ function vier_community_info()
|
|||
|
||||
//Community_Pages at right_aside
|
||||
if ($show_pages && DI::userSession()->getLocalUserId()) {
|
||||
$aside['$page'] = ForumManager::widget('network/forum', DI::userSession()->getLocalUserId());;
|
||||
$aside['$page'] = GroupManager::widget('network/group', DI::userSession()->getLocalUserId());;
|
||||
}
|
||||
// END Community Page
|
||||
|
||||
|
|
|
@ -2,9 +2,9 @@ right_aside {
|
|||
display: block;
|
||||
}
|
||||
|
||||
aside #forumlist-sidebar-frame,
|
||||
aside #forumlist-sidebar,
|
||||
#forumlist-sidebar-inflated {
|
||||
aside #group-list-sidebar-frame,
|
||||
aside #group-list-sidebar,
|
||||
#group-list-sidebar-inflated {
|
||||
display: none;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue