1
0
Fork 0

Replace "forum" by "group" in the rest of the code

This commit is contained in:
Hypolite Petovan 2023-05-30 09:15:17 -04:00
parent 03bebf57c5
commit 3385147f25
59 changed files with 378 additions and 424 deletions

View file

@ -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)],
],

View file

@ -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
@ -181,7 +181,7 @@ class ForumManager
$o = '';
// place holder in case somebody wants configurability
// placeholder in case somebody wants configurability
$show_total = 9999;
//don't sort by last updated item
@ -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()

View file

@ -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);

View file

@ -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');
}
}

View file

@ -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');
}
}

View file

@ -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'), '',

View file

@ -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';

View file

@ -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,
];

View file

@ -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])]);
}
}

View file

@ -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);
}

View file

@ -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])) {

View file

@ -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 */

View file

@ -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.
*/

View file

@ -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;

View file

@ -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

View file

@ -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);
@ -151,4 +151,4 @@ class BaseSearch extends BaseModule
'$paginate' => $pager->renderFull($results->getTotal()),
]);
}
}
}

View file

@ -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)) {

View file

@ -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'),
];

View file

@ -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;

View file

@ -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;

View file

@ -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']]);

View file

@ -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'])
);
}

View file

@ -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']
];
}
}

View file

@ -139,7 +139,7 @@ class Index extends BaseSearch
break;
case 'contacts':
return self::performContactSearch($search, '@');
case 'forums':
case 'groups':
return self::performContactSearch($search, '!');
}
}

View file

@ -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

View file

@ -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;
}

View file

@ -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;

View file

@ -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

View file

@ -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']);

View file

@ -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];
}

View file

@ -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;
}

View file

@ -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);
}

View file

@ -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) {

View file

@ -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);

View file

@ -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']);
}
}

View file

@ -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)

View file

@ -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]],
],

View file

@ -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;
}

View file

@ -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,

View file

@ -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) {

View 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>

View file

@ -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>

View file

@ -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;

View file

@ -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;
}

View file

@ -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.

View file

@ -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;
}

View file

@ -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

View file

@ -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>

View file

@ -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"));
});

View file

@ -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}}">

View file

@ -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);

View 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>

View file

@ -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>

View file

@ -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);

View file

@ -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 {

View file

@ -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>

View file

@ -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>

View file

@ -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

View file

@ -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;
}