From 2866559aac38e7173331e0ec529a3cf1ece8b946 Mon Sep 17 00:00:00 2001 From: Faeze Moradi Date: Tue, 6 Oct 2020 23:01:59 +0200 Subject: [PATCH] Added space About page --- .../space/controllers/SpaceController.php | 15 ++- .../humhub/modules/space/models/Space.php | 48 +++++++++ .../modules/space/views/space/about.php | 98 +++++++++++++++++++ 3 files changed, 160 insertions(+), 1 deletion(-) create mode 100644 protected/humhub/modules/space/views/space/about.php diff --git a/protected/humhub/modules/space/controllers/SpaceController.php b/protected/humhub/modules/space/controllers/SpaceController.php index fc91eea644..55d2fcaca2 100644 --- a/protected/humhub/modules/space/controllers/SpaceController.php +++ b/protected/humhub/modules/space/controllers/SpaceController.php @@ -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(), + ]); + } + } diff --git a/protected/humhub/modules/space/models/Space.php b/protected/humhub/modules/space/models/Space.php index 39b924facd..1a3d9db3a3 100644 --- a/protected/humhub/modules/space/models/Space.php +++ b/protected/humhub/modules/space/models/Space.php @@ -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; + } } diff --git a/protected/humhub/modules/space/views/space/about.php b/protected/humhub/modules/space/views/space/about.php new file mode 100644 index 0000000000..42b193b09d --- /dev/null +++ b/protected/humhub/modules/space/views/space/about.php @@ -0,0 +1,98 @@ + + +
+
+ About Space') ?> +
+
+ summary || $space->description):?> +
+ Description') ?> +
+ summary) ? $space->description : $space->summary) ?> +
+
+
+ +
+ Contact Persons') ?> + +
+
+ () +
+
+ $user, 'width' => 32, + 'htmlOptions' => ['style' => 'padding: 3px'], + 'imageOptions' => ['style' => 'border:1px solid ' . $this->theme->variable('success')] + ]); + } + ?> +
+
+ + + +
+
+ () +
+
+ $user, 'width' => 32, + 'htmlOptions' => ['style' => 'padding: 3px'], + 'imageOptions' => ['style' => 'border:1px solid ' . $this->theme->variable('success')] + ]); + } + ?> +
+
+ + + +
+
+ () +
+
+ $user, 'width' => 32, + 'htmlOptions' => ['style' => 'padding: 3px'], + 'imageOptions' => ['style' => 'border:1px solid ' . $this->theme->variable('success')] + ]); + } + ?> +
+
+ +
+
+
+ Security Settings'); ?> +
+
+ + join_policy] ?> + +
+ + visibility] ?> +
+
+
+
+ +beginBlock('sidebar'); +echo AboutPageSidebar::widget(['space' => $space]); +$this->endBlock(); ?>