Example #1
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);
 }
Example #2
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);