/** * [[@doctodo method_description:actionBrowseHierarchy]]. * * @throws HttpException [[@doctodo exception_description:HttpException]] * @return [[@doctodo return_type:actionBrowseHierarchy]] [[@doctodo return_description:actionBrowseHierarchy]] * */ public function actionBrowseHierarchy() { if (!Yii::$app->request->isAjax) { throw new HttpException(400, "Bad Request"); } $package = []; $defaultParams = []; $requestParams = array_merge($defaultParams, $_GET); if (empty($requestParams['requests'])) { Yii::$app->response->data = $package; return; } if (isset($requestParams['modules']) && !is_array($requestParams['modules'])) { $requestParams['modules'] = implode(',', $requestParams['modules']); } $modules = isset($requestParams['modules']) ? (array) $requestParams['modules'] : false; $baseInstructions = ['ignore' => [], 'ignoreChildren' => [], 'ignoreParents' => []]; if (!empty($searchParams['ignore'])) { $baseInstructions['ignore'] = (array) $searchParams['ignore']; } if (!empty($searchParams['ignoreChildren'])) { $baseInstructions['ignoreChildren'] = (array) $searchParams['ignoreChildren']; } if (!empty($searchParams['ignoreParents'])) { $baseInstructions['ignoreParents'] = (array) $searchParams['ignoreParents']; } $baseInstructions['modules'] = $modules; $requests = []; foreach ($requestParams['requests'] as $requestId => $request) { if (isset($request['task']) && !isset($request['handler'])) { // we're doing something new switch ($request['task']) { case 'root': $request['handler'] = 'types'; break; case 'stack': $request = BrowseResponse::parseStack(array_merge($baseInstructions, $request)); break; } } if ($request && isset($request['handler'])) { $requests[$requestId] = $request; } } $package = BrowseResponse::handleRequests($requests, $baseInstructions, true)->package(); Yii::$app->response->data = $package; }
/** * [[@doctodo method_description:generateRelationField]]. * * @param array $initialSettings [[@doctodo param_description:initialSettings]] [optional] * * @return [[@doctodo return_type:generateRelationField]] [[@doctodo return_description:generateRelationField]] */ protected function generateRelationField($initialSettings = []) { $model = $this->model; $field = $this->getRelationModelField(); $parts = []; $r = $initialSettings; $r['title'] = $this->modelField->label; $r['context'] = []; $r['selector'] = ['browse' => [], 'search' => ['data' => []]]; if ($this->modelField->relationship->temporal && empty($this->model->start)) { $this->model->start = date("m/d/Y"); } $r['context']['relationship'] = $this->modelField->relationship->package(); if ($this->modelField->baseModel && !$this->modelField->baseModel->isNewRecord) { $r['context']['object'] = ['id' => $this->modelField->baseModel->primaryKey, 'descriptor' => $this->modelField->baseModel->descriptor]; } $r['context']['role'] = $role = $this->modelField->relationship->companionRole($this->modelField->modelRole); $companionType = $this->modelField->relationship->companionRoleType($this->modelField->modelRole); $r['selector']['inputLabel'] = 'Select ' . $companionType->title->upperSingular; //\d($r);exit; if ($modelTypeItem = $this->modelField->relationship->{$role}->collectorItem) { $typeBundle = BrowserResponse::handleInstructions(['handler' => 'types', 'relationshipRole' => $role, 'relationship' => $this->modelField->relationship->systemId, 'typeFilters' => ['hasDashboard']]); $r['selector']['browse']['root'] = $typeBundle->package(); } $r['model'] = ['prefix' => $this->model->formName() . $this->model->tabularPrefix, 'attributes' => array_merge($this->model->attributes, ['taxonomy_id' => $this->model->taxonomy_id])]; if (!empty($this->modelField->value->primaryKey)) { $r['select'] = ['id' => $this->modelField->value->primaryKey, 'descriptor' => $this->modelField->value->descriptor, 'subdescriptor' => $this->modelField->value->primarySubdescriptor]; } if (!empty($r['model']['attributes']['start'])) { $r['model']['attributes']['start'] = Yii::$app->formatter->asDate($r['model']['attributes']['start']); } if (!empty($r['model']['attributes']['end'])) { $r['model']['attributes']['end'] = Yii::$app->formatter->asDate($r['model']['attributes']['end']); } $r['lockFields'] = isset($this->relationSettings['lockFields']) ? array_merge($this->relationSettings['lockFields'], $this->lockFields) : $this->lockFields; $r['multiple'] = $this->linkMultiple; // && $this->modelField->relationship->multiple; $this->htmlOptions['data-relationship'] = json_encode($r, JSON_FORCE_OBJECT); Html::addCssClass($this->htmlOptions, 'relationship'); //$model->_moduleHandler = $this->modelField->relationship->companionRole($this->modelField->modelRole) .':'. $this->modelField->relationship->companionRoleType($this->modelField->modelRole)->systemId; $parts[] = Html::activeHiddenInput($model, $this->model->tabularPrefix . '_moduleHandler'); $parts[] = Html::activeHiddenInput($model, $field, $this->htmlOptions); return implode($parts); }
$object = Yii::$app->request->object; $roles = $access->getPossibleRoles(); $baseRequestorParams = ['objectRoles' => $objectRoles, 'objectAccess' => $access, 'disableFields' => $disableFields, 'roles' => $roles, 'errors' => $errors]; $htmlOptions = ['class' => 'list-group ic-access-list']; if (!$disableFields) { $types = []; foreach (Yii::$app->collectors['types']->getAll() as $typeItem) { if (!$typeItem->active) { continue; } $types[$typeItem->systemId] = ['label' => $typeItem->object->title->upperSingular, 'possibleRoles' => $typeItem->object->possibleRoles, 'initialRole' => $typeItem->object->initialRole, 'requiredRoles' => $typeItem->object->requiredRoles]; } $dataAccess = ['selector' => ['browse' => ['data' => []], 'search' => []]]; $dataAccess['roles'] = $roles; $dataAccess['types'] = $types; $typeBundle = BrowserResponse::handleInstructions(['handler' => 'types', 'typeFilters' => ['authority']]); $dataAccess['selector']['browse']['data']['modules'] = array_keys(Yii::$app->collectors['types']->authorities); $dataAccess['selector']['browse']['root'] = $typeBundle->package(); $dataAccess['universalMaxRoleLevel'] = $access->getUniversalMaxRoleLevel(); $htmlOptions['data-access'] = json_encode($dataAccess); } $form = ActiveForm::begin(['options' => ['class' => 'ajax']]); echo Html::beginTag('ul', $htmlOptions); if ($publicGroup) { $requestorParams = ['requestorObject' => $publicGroup['object'], 'helpText' => 'Access level for the public', 'maxRoleLevel' => $publicGroup['maxRoleLevel'], 'htmlOptions' => ['class' => 'list-group-item-warning']]; echo $this->renderFile('@cascade/views/object/access_requestor.php', array_merge($baseRequestorParams, $requestorParams), $this); unset($objectRoles[$publicGroup['object']->primaryKey]); } if ($primaryAccount) { $requestorParams = ['requestorObject' => $primaryAccount['object'], 'helpText' => 'Access level for internal staff', 'maxRoleLevel' => $primaryAccount['maxRoleLevel'], 'htmlOptions' => ['class' => 'list-group-item-info']]; echo $this->renderFile('@cascade/views/object/access_requestor.php', array_merge($baseRequestorParams, $requestorParams), $this);