mirror of
https://github.com/humhub/humhub.git
synced 2025-02-19 23:54:54 +01:00
Added space About page
This commit is contained in:
parent
dfa2bab027
commit
2866559aac
@ -43,7 +43,7 @@ class SpaceController extends ContentContainerController
|
||||
return [
|
||||
'acl' => [
|
||||
'class' => AccessControl::class,
|
||||
'guestAllowedActions' => ['index', 'home', 'stream'],
|
||||
'guestAllowedActions' => ['index', 'home', 'stream', 'about'],
|
||||
]
|
||||
];
|
||||
}
|
||||
@ -166,4 +166,17 @@ class SpaceController extends ContentContainerController
|
||||
return $this->renderAjaxContent(UserListBox::widget(['query' => $query, 'title' => $title]));
|
||||
}
|
||||
|
||||
/**
|
||||
* About space page
|
||||
*/
|
||||
public function actionAbout()
|
||||
{
|
||||
$space = $this->getSpace();
|
||||
|
||||
return $this->render('about', [
|
||||
'space' => $space,
|
||||
'userGroups' => $space->getPrivilegedGroupUsers(),
|
||||
]);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -36,6 +36,7 @@ use humhub\modules\user\models\Invite;
|
||||
use humhub\modules\user\models\Group;
|
||||
use humhub\modules\space\widgets\Wall;
|
||||
use humhub\modules\space\widgets\Members;
|
||||
use humhub\modules\user\models\User as UserModel;
|
||||
use Yii;
|
||||
|
||||
/**
|
||||
@ -186,6 +187,30 @@ class Space extends ContentContainerActiveRecord implements Searchable
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
public static function visibilityOptions()
|
||||
{
|
||||
return [
|
||||
self::VISIBILITY_NONE => Yii::t('SpaceModule.base', 'Private (Invisible)'),
|
||||
self::VISIBILITY_REGISTERED_ONLY => Yii::t('SpaceModule.base', 'Public (Registered users only)'),
|
||||
self::VISIBILITY_ALL => Yii::t('SpaceModule.base', 'Visible for all (members and guests)'),
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
public static function joinPolicyOptions()
|
||||
{
|
||||
return [
|
||||
self::JOIN_POLICY_NONE => Yii::t('SpaceModule.base', 'Only by invite'),
|
||||
self::JOIN_POLICY_APPLICATION => Yii::t('SpaceModule.base', 'Invite and request'),
|
||||
self::JOIN_POLICY_FREE => Yii::t('SpaceModule.base', 'Everyone can enter'),
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
@ -635,4 +660,27 @@ class Space extends ContentContainerActiveRecord implements Searchable
|
||||
return Content::VISIBILITY_PRIVATE;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns space privileged groups and their members` User model in array
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getPrivilegedGroupUsers()
|
||||
{
|
||||
$owner = $this->getOwnerUser()->one();
|
||||
$groups[self::USERGROUP_OWNER][] = $owner;
|
||||
|
||||
$query = Membership::find()->joinWith('user');
|
||||
$query->andWhere(['IN', 'group_id', [self::USERGROUP_ADMIN, self::USERGROUP_MODERATOR]]);
|
||||
$query->andWhere('space_id = ' . $this->id);
|
||||
$query->andWhere('user_id != ' . $owner->id);
|
||||
$query->andWhere(['user.status' => UserModel::STATUS_ENABLED]);
|
||||
$query->orderBy(new \yii\db\Expression('FIELD(space_membership.group_id, "' . self::USERGROUP_ADMIN . '", "' . self::USERGROUP_MODERATOR . '")'));
|
||||
|
||||
foreach ($query->all() as $membership) {
|
||||
$groups[$membership->group_id][] = $membership->user;
|
||||
}
|
||||
|
||||
return $groups;
|
||||
}
|
||||
}
|
||||
|
98
protected/humhub/modules/space/views/space/about.php
Normal file
98
protected/humhub/modules/space/views/space/about.php
Normal file
@ -0,0 +1,98 @@
|
||||
<?php
|
||||
|
||||
use humhub\modules\space\models\Space;
|
||||
use humhub\modules\space\widgets\AboutPageSidebar;
|
||||
use humhub\modules\content\widgets\richtext\RichText;
|
||||
use humhub\modules\user\widgets\Image;
|
||||
?>
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<?= Yii::t('SpaceModule.base', '<strong>About Space</strong>') ?>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<?php if ($space->summary || $space->description):?>
|
||||
<div>
|
||||
<?= Yii::t('SpaceModule.base', '<strong>Description</strong>') ?>
|
||||
<div data-ui-markdown data-ui-show-more
|
||||
data-read-more-text="<?= Yii::t('SpaceModule.base', 'Read More') ?>">
|
||||
<?= RichText::output(empty($space->summary) ? $space->description : $space->summary) ?>
|
||||
</div>
|
||||
</div>
|
||||
<br>
|
||||
<?php endif;?>
|
||||
<div>
|
||||
<?= Yii::t('SpaceModule.base', '<strong>Contact Persons</strong>') ?>
|
||||
<?php if (!empty($userGroups[Space::USERGROUP_OWNER])): ?>
|
||||
<div class="media">
|
||||
<div class="media-heading"><?= Yii::t('SpaceModule.base', 'Owner'); ?>
|
||||
(<?= count($userGroups[Space::USERGROUP_OWNER]) ?>)
|
||||
</div>
|
||||
<div class="media-body">
|
||||
<?php foreach ($userGroups[Space::USERGROUP_OWNER] as $user) {
|
||||
echo Image::widget([
|
||||
'user' => $user, 'width' => 32,
|
||||
'htmlOptions' => ['style' => 'padding: 3px'],
|
||||
'imageOptions' => ['style' => 'border:1px solid ' . $this->theme->variable('success')]
|
||||
]);
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if (!empty($userGroups[Space::USERGROUP_ADMIN])): ?>
|
||||
<div class="media">
|
||||
<div class="media-heading"><?= Yii::t('SpaceModule.base', 'Admins'); ?>
|
||||
(<?= count($userGroups[Space::USERGROUP_ADMIN]) ?>)
|
||||
</div>
|
||||
<div class="media-body">
|
||||
<?php foreach ($userGroups[Space::USERGROUP_ADMIN] as $user) {
|
||||
echo Image::widget([
|
||||
'user' => $user, 'width' => 32,
|
||||
'htmlOptions' => ['style' => 'padding: 3px'],
|
||||
'imageOptions' => ['style' => 'border:1px solid ' . $this->theme->variable('success')]
|
||||
]);
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if (!empty($userGroups[Space::USERGROUP_MODERATOR])): ?>
|
||||
<div class="media">
|
||||
<div class="media-heading"><?= Yii::t('SpaceModule.base', 'Moderators'); ?>
|
||||
(<?= count($userGroups[Space::USERGROUP_MODERATOR]) ?>)
|
||||
</div>
|
||||
<div class="media-body">
|
||||
<?php foreach ($userGroups[Space::USERGROUP_MODERATOR] as $user) {
|
||||
echo Image::widget([
|
||||
'user' => $user, 'width' => 32,
|
||||
'htmlOptions' => ['style' => 'padding: 3px'],
|
||||
'imageOptions' => ['style' => 'border:1px solid ' . $this->theme->variable('success')]
|
||||
]);
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<br>
|
||||
<div>
|
||||
<?= Yii::t('SpaceModule.base', '<strong>Security Settings</strong>'); ?>
|
||||
<div>
|
||||
<h5><?= Yii::t('SpaceModule.base', 'Join Policy')?></h5>
|
||||
<i class="fa fa-users"></i>
|
||||
<?= Space::joinPolicyOptions()[$space->join_policy] ?>
|
||||
|
||||
<h5><?= Yii::t('SpaceModule.base', 'Space Visibility')?></h5>
|
||||
<i class="fa fa-globe"></i>
|
||||
<?= Space::visibilityOptions()[$space->visibility] ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php $this->beginBlock('sidebar');
|
||||
echo AboutPageSidebar::widget(['space' => $space]);
|
||||
$this->endBlock(); ?>
|
Loading…
x
Reference in New Issue
Block a user