Пример #1
0
 /**
  * [[@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;
 }
Пример #2
0
 /**
  * [[@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);
 }
Пример #3
0
$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);