/** * Provides a searchable user list of all workspace members in json. * */ public function actionSearchInvite() { Yii::$app->response->format = 'json'; $space = $this->getSpace(); if (!$space->isMember()) { throw new HttpException(404, Yii::t('SpaceModule.controllers_SpaceController', 'This action is only available for workspace members!')); } return UserPicker::filter(['query' => $space->getNonMembershipUser(), 'keyword' => Yii::$app->request->get('keyword'), 'fillUser' => true]); }
/** * @deprecated since version number * Default implementation for user picker filter. * * @param type $keywords * @param type $maxResults * @param type $friendsOnly * @param type $permission * @return type */ public function getUserPickerResult($keywords = null, $maxResults = null, $friendsOnly = false, $permission = null) { if (!Yii::$app->getModule('friendship')->getIsEnabled()) { //We don't use the permission here for filtering since we include user with no permission as disabled in the result. //The problem here is we do not prefer users with permission in the query. $users = $this->getUserByFilter($keywords, $maxResults); return UserPicker::asJSON($users, $permission); } $friends = self::getFriendsByFilter($keywords, $maxResults); //Create userinfo json with with set 'disabled' field if the user is not permitted $jsonResult = UserPicker::asJSON($friends, $permission); //Fill the remaining space with member users with the given permission if (!$friendsOnly && count($friends) < $maxResults) { $additionalUser = []; //Here we filter with permission since we don't want to have non friend user without the permission in the result foreach ($this->getUserByFilter($keywords, $maxResults - count($friends), $permission) as $user) { if (!$this->containsUser($friends, $user)) { $additionalUser[] = $user; } } $jsonResult = array_merge($jsonResult, UserPicker::asJSON($additionalUser)); } return $jsonResult; }
?> <div class="panel-body"> <?php $form = ActiveForm::begin(['action' => ['/admin/group/add-members']]); ?> <div style="display:flex;flex-wrap:wrap;"> <div style="flex-grow:100;margin-right:5px;"> <div> <?php echo $form->field($addGroupMemberForm, 'userGuids', ['inputOptions' => ['id' => 'user_select']])->label(false); ?> <?php echo Html::activeHiddenInput($addGroupMemberForm, 'groupId', ['value' => $group->id]); ?> <?php echo \humhub\modules\user\widgets\UserPicker::widget(['inputId' => 'user_select', 'model' => $addGroupMemberForm, 'attribute' => 'userGuids', 'userSearchUrl' => Url::toRoute('/admin/group/new-member-search'), 'data' => ['id' => $group->id], 'placeholderText' => Yii::t('AdminModule.views_group_manageGroupUser', 'Add new members...')]); ?> </div> </div> <div style="flex-grow:1;padding-top:1px;"> <?php echo Html::submitButton(Yii::t('AdminModule.views_group_manageGroupUser', 'Add'), ['class' => 'btn btn-primary', 'data-ui-loader' => ""]); ?> </div> </div> <?php ActiveForm::end(); ?> <div class="table-responsive">
/** * JSON Search for Users * * Returns an array of users with fields: * - guid * - displayName * - image * - profile link */ public function actionJson() { Yii::$app->response->format = 'json'; return \humhub\modules\user\widgets\UserPicker::filter(['keyword' => Yii::$app->request->get('keyword'), 'fillUser' => true, 'disableFillUser' => false]); }
</h4> </div> <div class="modal-body"> <?php echo $form->errorSummary($model); ?> <div class="form-group"> <?php echo $form->field($model, 'recipient', ['inputOptions' => ['id' => 'recipient']]); ?> </div> <?php echo \humhub\modules\user\widgets\UserPicker::widget(array('inputId' => 'recipient', 'model' => $model, 'attribute' => 'recipient', 'userGuid' => Yii::$app->user->guid, 'placeholderText' => Yii::t('MailModule.views_mail_create', 'Add recipients'), 'focus' => true)); ?> <div class="form-group"> <?php echo $form->field($model, 'title'); ?> </div> <div class="form-group"> <?php echo $form->field($model, 'message', ['inputOptions' => ['class' => 'form-control', 'id' => 'newMessageText']])->textarea(); ?> <?php echo \humhub\widgets\MarkdownEditor::widget(array('fieldId' => 'newMessageText')); ?>
<?php echo $form->textField($group, 'defaultSpaceGuid', array('class' => 'form-control', 'id' => 'space_select')); ?> <?php echo \humhub\modules\space\widgets\Picker::widget(['inputId' => 'space_select', 'maxSpaces' => 1, 'model' => $group, 'attribute' => 'defaultSpaceGuid']); ?> <?php echo $form->labelEx($group, 'adminGuids'); ?> <?php echo $form->textArea($group, 'adminGuids', array('class' => 'span12', 'id' => 'user_select')); ?> <?php echo \humhub\modules\user\widgets\UserPicker::widget(['inputId' => 'user_select', 'maxUsers' => 2, 'model' => $group, 'attribute' => 'adminGuids', 'placeholderText' => 'Add a user']); ?> <?php if (Setting::Get('enabled', 'authentication_ldap')) { ?> <div class="form-group"> <?php echo $form->labelEx($group, 'ldap_dn'); ?> <?php echo $form->textField($group, 'ldap_dn', array('class' => 'form-control', 'placeholder' => Yii::t('AdminModule.views_group_edit', 'Ldap DN'))); ?> </div> <?php }
</ul> <?php echo $form; ?> <div id="notifyUserContainer" class="form-group hidden" style="margin-top: 15px;"> <input type="text" value="" id="notifyUserInput" name="notifyUserInput"/> <?php $userSearchUrl = Url::toRoute(['/user/search/json', 'keyword' => '-keywordPlaceholder-']); if ($contentContainer instanceof Space) { $userSearchUrl = $contentContainer->createUrl('/space/membership/search', array('keyword' => '-keywordPlaceholder-')); } /* add UserPickerWidget to notify members */ echo \humhub\modules\user\widgets\UserPicker::widget(array('inputId' => 'notifyUserInput', 'userSearchUrl' => $userSearchUrl, 'maxUsers' => 10, 'userGuid' => Yii::$app->user->guid, 'placeholderText' => Yii::t('ContentModule.widgets_views_contentForm', 'Add a member to notify'), 'focus' => true)); ?> </div> <?php echo Html::hiddenInput("containerGuid", $contentContainer->guid); echo Html::hiddenInput("containerClass", get_class($contentContainer)); ?> <div class="contentForm_options"> <hr> <div class="btn_container"> <?php
public function actionAdminUserSearch() { Yii::$app->response->format = 'json'; $keyword = Yii::$app->request->get('keyword'); $group = Group::findOne(Yii::$app->request->get('id')); return UserPicker::filter(['query' => $group->getUsers(), 'keyword' => $keyword, 'fillQuery' => User::find(), 'disableFillUser' => false]); }
/** * Creates a json user array used in the userpicker js frontend. * The $cfg is used to specify the filter values the following values are available: * * query - (ActiveQuery) The initial query which is used to append additional filters. - default = User Friends if friendship module is enabled else User::find() * * active - (boolean) Specifies if only active user should be included in the result - default = true * * maxResults - (int) The max number of entries returned in the array - default = 10 * * keyword - (string) A keyword which filters user by username, firstname, lastname, email and title * * permission - (BasePermission) An additional permission filter * * fillQuery - (ActiveQuery) Can be used to fill the result array if the initial query does not return the maxResults, these results will have a lower priority * * fillUser - (boolean) When set to true and no fillQuery is given the result is filled with User::find() results * * disableFillUser - Specifies if the results of the fillQuery should be disabled in the userpicker results - default = true * * @param type $cfg filter configuration * @return type json representation used by the userpicker */ public static function filter($cfg = null) { $defaultCfg = ['active' => true, 'maxResult' => 10, 'disableFillUser' => true, 'keyword' => null, 'permission' => null, 'fillQuery' => null, 'fillUser' => false]; $cfg = $cfg == null ? $defaultCfg : array_merge($defaultCfg, $cfg); //If no initial query is given we use getFriends if friendship module is enabled otherwise all users if (!isset($cfg['query'])) { $cfg['query'] = Yii::$app->getModule('friendship')->getIsEnabled() ? Yii::$app->user->getIdentity()->getFriends() : UserFilter::find(); } //Filter the initial query and disable user without the given permission $user = UserFilter::filter($cfg['query'], $cfg['keyword'], $cfg['maxResult'], null, $cfg['active']); $jsonResult = self::asJSON($user, $cfg['permission'], 2); //Fill the result with additional users if it's allowed and the result count less than maxResult if (count($user) < $cfg['maxResult'] && (isset($cfg['fillQuery']) || $cfg['fillUser'])) { //Filter out users by means of the fillQuery or default the fillQuery $fillQuery = isset($cfg['fillQuery']) ? $cfg['fillQuery'] : UserFilter::find(); UserFilter::addKeywordFilter($fillQuery, $cfg['keyword'], $cfg['maxResult'] - count($user)); $fillQuery->andFilterWhere(['not in', 'id', self::getUserIdArray($user)]); $fillUser = $fillQuery->all(); //Either the additional users are disabled (by default) or we disable them by permission $disableCondition = isset($cfg['permission']) ? $cfg['permission'] : $cfg['disableFillUser']; $jsonResult = array_merge($jsonResult, UserPicker::asJSON($fillUser, $disableCondition, 1)); } return $jsonResult; }
<?php echo \humhub\modules\space\widgets\Picker::widget(['inputId' => 'space_select', 'maxSpaces' => 1, 'model' => $group, 'attribute' => 'defaultSpaceGuid']); ?> <?php } ?> <?php if ($isManagerApprovalSetting && !$group->is_admin_group) { ?> <?php echo $form->field($group, 'managerGuids', ['inputOptions' => ['id' => 'user_select']]); ?> <?php $url = $group->isNewRecord ? null : Url::toRoute('/admin/group/admin-user-search'); echo \humhub\modules\user\widgets\UserPicker::widget(['inputId' => 'user_select', 'model' => $group, 'attribute' => 'managerGuids', 'userSearchUrl' => $url, 'data' => ['id' => $group->id], 'placeholderText' => 'Add a user']); ?> <?php } ?> <strong><?php echo Yii::t('AdminModule.views_group_edit', 'Visibility'); ?> </strong> <br> <br> <?php if (!$group->is_admin_group) { ?> <?php
</div> <div class="modal-body"> <?php echo $form->errorSummary($model); ?> <?php echo $form->labelEx($model, 'recipient'); ?> <?php echo $form->textField($model, 'recipient', array('class' => 'form-control', 'id' => 'recipient')); ?> <?php echo \humhub\modules\user\widgets\UserPicker::widget(array('inputId' => 'recipient', 'model' => $model, 'attribute' => 'recipient', 'userGuid' => Yii::$app->user->guid, 'focus' => true)); ?> <div class="form-group"> <?php echo $form->labelEx($model, 'title'); ?> <?php echo $form->textField($model, 'title', array('class' => 'form-control')); ?> <?php echo $form->error($model, 'title'); ?> </div> <div class="form-group">
</h4> </div> <div class="modal-body"> <?php echo $form->errorSummary($model); ?> <div class="form-group"> <?php echo $form->field($model, 'recipient', ['inputOptions' => ['id' => 'recipient']]); ?> </div> <?php echo \humhub\modules\user\widgets\UserPicker::widget(array('inputId' => 'recipient', 'model' => $model, 'attribute' => 'recipient', 'userGuid' => Yii::$app->user->guid, 'userSearchUrl' => Url::toRoute(['/mail/mail/search-user', 'keyword' => '-keywordPlaceholder-']), 'placeholderText' => Yii::t('MailModule.views_mail_create', 'Add recipients'), 'focus' => true)); ?> <div class="form-group"> <?php echo $form->field($model, 'title'); ?> </div> <div class="form-group"> <?php echo $form->field($model, 'message', ['inputOptions' => ['class' => 'form-control', 'id' => 'newMessageText']])->textarea(); ?> <?php echo \humhub\widgets\MarkdownEditor::widget(array('fieldId' => 'newMessageText')); ?>