예제 #1
0
 /**
  * [[@doctodo method_description:generate]].
  *
  * @return unknown
  */
 public function generate()
 {
     if (empty($this->_items)) {
         return '';
     }
     $result = [];
     $formOptions = ['options' => ['class' => ''], 'enableClientValidation' => false];
     if (Yii::$app->request->isAjax) {
         Html::addCssClass($formOptions['options'], 'ajax');
     }
     if ($this->hasFile() && !isset($formOptions['options']['enctype'])) {
         $formOptions['options']['enctype'] = 'multipart/form-data';
     }
     list($this->form, $formStartRow) = ActiveForm::begin($formOptions, false);
     $result[] = $formStartRow;
     // $result[] = Html::beginForm('', 'post', array('class' => $this->class));
     $result[] = Html::beginTag('div', ['class' => '']);
     foreach ($this->_items as $item) {
         $result[] = $item->generate();
     }
     //if (!Yii::$app->request->isAjax) {
     $result[] = Html::beginTag('div', ['class' => 'row form-group submit-group']);
     $result[] = Html::beginTag('div', ['class' => 'col-sm-12']);
     $result[] = Html::submitButton('Save', ['class' => 'btn btn-primary']);
     $result[] = Html::endTag('div');
     $result[] = Html::endTag('div');
     //}
     $result[] = Html::endTag('div');
     $result[] = ActiveForm::end(false);
     return implode("\n", $result);
 }
예제 #2
0
 /**
  * [[@doctodo method_description:prepareItem]].
  *
  * @param [[@doctodo param_type:engine]] $engine [[@doctodo param_description:engine]]
  *
  * @return [[@doctodo return_type:prepareItem]] [[@doctodo return_description:prepareItem]]
  */
 public function prepareItem($engine)
 {
     $item = clone $this->item;
     $item->inputOptions['data-engine'] = $engine->primaryKey;
     Html::addCssClass($item->inputOptions, 'storage-field');
     return $item;
 }
예제 #3
0
 /**
  * [[@doctodo method_description:generateStart]].
  *
  * @return [[@doctodo return_type:generateStart]] [[@doctodo return_description:generateStart]]
  */
 public function generateStart()
 {
     $this->htmlOptions['data-instructions'] = json_encode($this->refreshInstructions);
     if ($this->lazy) {
         Html::addCssClass($this->htmlOptions, 'widget-lazy');
     }
     return parent::generateStart();
 }
예제 #4
0
 /**
  * [[@doctodo method_description:generateStart]].
  *
  * @return [[@doctodo return_type:generateStart]] [[@doctodo return_description:generateStart]]
  */
 public function generateStart()
 {
     $parts = [];
     foreach ($this->owner->widgetClasses as $class) {
         Html::addCssClass($this->owner->htmlOptions, $class);
     }
     $parts[] = Html::beginTag('div', $this->owner->htmlOptions);
     return implode("", $parts);
 }
예제 #5
0
 /**
  * @inheritdoc
  */
 public function getListItemOptions($model, $key, $index)
 {
     $options = array_merge(parent::getListItemOptions($model, $key, $index), ['tag' => 'a', 'href' => Url::to($model->getUrl('view'))]);
     if (!$model->can('read')) {
         Html::addCssClass($options, 'disabled');
         $options['href'] = '#';
     }
     return $options;
 }
예제 #6
0
 /**
  * @inheritdoc
  */
 public function generateContent()
 {
     if (empty(Yii::$app->request->object)) {
         return false;
     }
     if (!($detailFields = Yii::$app->request->object->getDetailFields()) || empty($detailFields)) {
         return false;
     }
     $parts = [];
     Html::addCssClass($this->contentHtmlOptions, 'dl-horizontal');
     $parts[] = Html::beginTag('dl', $this->contentHtmlOptions);
     foreach ($detailFields as $key => $field) {
         $parts[] = Html::tag('dt', $field->label, $this->termHtmlOptions);
         $parts[] = Html::tag('dd', $field->formattedValue, $this->valueHtmlOptions);
     }
     $parts[] = Html::endTag('dl');
     return implode($parts);
 }
예제 #7
0
if (!isset($htmlOptions)) {
    $htmlOptions = [];
}
$roleSet = isset($objectRoles[$requestorObject->primaryKey]) ? $objectRoles[$requestorObject->primaryKey] : [];
$role = isset($roleSet['role']) ? $roleSet['role'] : null;
$roleObject = isset($role) ? $role->object : null;
Html::addCssClass($htmlOptions, 'list-group-item');
$requestorOptions = [];
$requestorOptions['id'] = $requestorObject->primaryKey;
$requestorOptions['label'] = $requestorObject->descriptor;
$requestorOptions['maxRoleLevel'] = isset($maxRoleLevel) ? $maxRoleLevel : false;
$requestorOptions['type'] = $requestorObject->objectType->systemId;
$requestorOptions['editable'] = true;
if (isset($role) && isset($roleSet['inherited']) && $roleSet['inherited'] && !$role->inheritedEditable) {
    $requestorOptions['editable'] = false;
}
$htmlOptions['data-requestor'] = json_encode($requestorOptions);
if (!$requestorOptions['editable']) {
    Html::addCssClass($htmlOptions, 'uneditable');
}
echo Html::beginTag('li', $htmlOptions);
echo $this->renderFile('@cascade/views/object/access_role.php', ['roles' => $roles, 'role' => $roleObject, 'objectAccess' => $objectAccess, 'disableFields' => $disableFields, 'editable' => $requestorOptions['editable']], $this);
echo Html::tag('h4', $requestorObject->descriptor, ['class' => 'list-group-item-heading']);
if (!isset($helpText)) {
    $helpText = $requestorObject->objectType->title->upperSingular;
}
echo Html::tag('p', $helpText, ['class' => 'list-group-item-text help-text']);
if (isset($errors[$requestorObject->primaryKey])) {
    echo Html::tag('p', $errors[$requestorObject->primaryKey], ['class' => 'alert alert-danger']);
}
echo Html::endTag('li');
예제 #8
0
<?php

use canis\helpers\Html;
if (empty($role)) {
    $role = 'none';
} elseif (is_object($role)) {
    $role = $role->primaryKey;
}
$selectedRole = isset($roles[$role]) ? $roles[$role] : $roles['none'];
$isDisabled = $disableFields || !$selectedRole['available'] || !$editable;
$htmlOptions = ['type' => 'button'];
$roleOptions = $selectedRole;
$htmlOptions['data-role'] = json_encode($roleOptions);
Html::addCssClass($htmlOptions, 'btn btn-default pull-right');
if ($isDisabled) {
    Html::addCssClass($htmlOptions, 'disabled');
}
if (!$editable) {
    $selectedRole['label'] = 'Inherited ' . $selectedRole['label'];
}
echo Html::tag('button', Html::tag('span', $selectedRole['label'], ['class' => 'role-label']) . ' ' . Html::tag('span', '', ['class' => 'caret']), $htmlOptions);
예제 #9
0
파일: view.php 프로젝트: psesd/cascade-lib
    }
}
if (count($sectionsMenu) > 2) {
    $mainColumnSize -= 2;
}
$mainCell = [];
foreach ($sections as $section) {
    if ($section->priority === false) {
        continue;
    }
    $mainCell[] = $section->object->cell;
}
$mainCellGrid = Yii::createObject(['class' => 'canis\\web\\grid\\Grid']);
$mainCellGrid->cells = $mainCell;
$cells[] = $mainCell = Yii::createObject(['class' => 'canis\\web\\grid\\Cell', 'content' => $mainCellGrid->generate()]);
Yii::configure($mainCell, ['mediumDesktopColumns' => 4, 'maxMediumDesktopColumns' => $mainColumnSize, 'largeDesktopSize' => false, 'tabletColumns' => $mainColumnSize + 1]);
Html::addCssClass($mainCell->htmlOptions, 'ic-main-cell');
if (count($sectionsMenu) > 2) {
    $js[] = '$(".ic-sidenav").cascadeAffix();';
    $menuContent = Html::beginTag('div', ['class' => 'ic-sidenav']);
    $menuContent .= Nav::widget(['options' => ['class' => 'navbar-default'], 'encodeLabels' => false, 'items' => $sectionsMenu]);
    $menuContent .= Html::endTag('div');
    $cells[] = $menuCell = Yii::createObject(['class' => 'canis\\web\\grid\\Cell', 'content' => $menuContent]);
    Yii::configure($menuCell, ['mediumDesktopColumns' => 2, 'maxMediumDesktopColumns' => 2, 'largeDesktopSize' => false, 'tabletSize' => false]);
    Html::addCssClass($menuCell->htmlOptions, 'hidden-xs hidden-sm');
}
$grid->cells = $cells;
$grid->output();
echo Html::endTag('div');
// .dashboard
$this->registerJs(implode("\n", $js));
예제 #10
0
파일: login.php 프로젝트: psesd/cascade-lib
<?php

use canis\helpers\Html;
use yii\widgets\ActiveForm;
$this->title = 'Login';
$this->params['breadcrumbs'][] = $this->title;
$formOptions = ['class' => 'form-horizontal'];
if (!Yii::$app->request->isAjax) {
    echo '<div class="col-md-offset-3 col-md-6">';
} else {
    Html::addCssClass($formOptions, 'ajax');
}
$form = ActiveForm::begin(['id' => 'login-form', 'options' => $formOptions, 'fieldConfig' => ['template' => "{label}\n<div class=\"col-lg-9\">{input}</div>\n<div class=\"col-lg-12\">{error}</div>", 'labelOptions' => ['class' => 'col-lg-3 control-label']]]);
echo $form->field($model, 'email');
echo $form->field($model, 'password')->passwordInput();
echo $form->field($model, 'rememberMe', ['template' => "<div class=\"col-md-offset-1 col-lg-9 \">{input}</div>\n<div class=\"col-lg-8\">{error}</div>"])->checkbox();
echo '<div class="submit-group col-md-offset-1 col-lg-9 ">';
echo Html::submitButton('Login', ['class' => 'btn btn-primary']);
echo '</div>';
echo '</div>';
ActiveForm::end();
예제 #11
0
 /**
  * @inheritdoc
  */
 public function generateContent()
 {
     if (!isset(Yii::$app->request->object)) {
         return false;
     }
     $object = Yii::$app->request->object;
     $content = [];
     $content[] = Html::beginTag('div', ['class' => 'well ic-masthead']);
     if (Yii::$app->request->previousObject) {
         $content[] = Html::beginTag('div', ['class' => 'ic-object-previous']);
         $content[] = Html::tag('span', '', ['class' => 'fa fa-reply']) . '&nbsp; ' . Html::a('Go back to <em>' . Yii::$app->request->previousObject->descriptor . '</em>', Yii::$app->request->previousObject->getUrl('view', [], false));
         $content[] = Html::endTag('div');
     }
     if ($object->getBehavior('Photo')) {
         $photoHtmlOptions = [];
         $img = $object->getPhotoUrl(200);
         if ($img) {
             Html::addCssClass($photoHtmlOptions, 'ic-object-photo ic-object-photo-image');
             $photoHtmlOptions['style'] = 'background-image: url("' . $img . '");';
         } else {
             Html::addCssClass($photoHtmlOptions, 'ic-object-photo ic-object-photo-icon ' . $object->objectType->icon);
         }
         $photoContent = '';
         $content[] = Html::tag('div', $photoContent, $photoHtmlOptions);
     }
     $content[] = Html::beginTag('div', ['class' => 'ic-object-header']);
     $content[] = $object->descriptor;
     $objectAccess = $object->objectAccess;
     $objectVisibility = $objectAccess->visibility;
     $content[] = Html::endTag('div');
     if ($object->archived) {
         $content[] = Html::tag('div', Html::tag('span', 'Archived', ['class' => 'label label-warning']), ['class' => 'center-block center-text']);
     }
     $menu = [];
     $familiarty = $object->getFamiliarity();
     $startWatchingItem = ['label' => Html::tag('span', '', ['class' => 'fa fa-eye']) . ' Watch', 'url' => $object->getUrl('watch'), 'options' => ['title' => 'Watch and get notified with changes', 'data-handler' => 'background', 'class' => 'watch-link', 'data-watch-task' => 'start']];
     $stopWatchingItem = ['label' => Html::tag('span', '', ['class' => 'fa fa-check']) . ' Watching', 'url' => $object->getUrl('watch', ['stop' => 1]), 'options' => ['title' => 'Stop receiving change notifications', 'data-handler' => 'background', 'data-watch-task' => 'stop', 'class' => 'watch-link']];
     $accessManageUrl = $object->getUrl('access');
     $startWatchingItem['companion'] = $stopWatchingItem;
     $stopWatchingItem['companion'] = $startWatchingItem;
     if (empty($familiarty->watching)) {
         $menu[] = $startWatchingItem;
     } else {
         $menu[] = $stopWatchingItem;
     }
     if ($object->can('update')) {
         $menu[] = ['label' => Html::tag('span', '', ['class' => 'fa fa-wrench']) . ' Update', 'url' => $object->getUrl('update'), 'options' => ['title' => 'Update', 'data-handler' => 'background']];
     }
     if ($object->can('delete') || $object->can('archive')) {
         $label = 'Delete';
         $icon = 'fa-trash-o';
         if ($object->can('archive')) {
             $icon = 'fa-archive';
             if ($object->archived) {
                 $label = 'Unarchive';
             } else {
                 $label = 'Archive';
             }
         }
         $menu[] = ['label' => Html::tag('span', '', ['class' => 'fa ' . $icon]) . ' ' . $label, 'url' => $object->getUrl('delete'), 'options' => ['title' => $label, 'data-handler' => 'background']];
     }
     if ($objectVisibility === 'public') {
         $accessIcon = 'fa fa-globe';
         $accessTitle = $object->objectType->title->upperSingular . ' is public';
         $accessLabel = 'Public';
     } elseif ($objectVisibility === 'shared') {
         $accessIcon = 'fa fa-rss';
         $accessTitle = $object->objectType->title->upperSingular . ' is shared';
         $accessLabel = 'Shared';
     } elseif ($objectVisibility === 'internal') {
         $accessIcon = 'fa fa-building-o';
         $accessTitle = $object->objectType->title->upperSingular . ' is shared internally';
         $accessLabel = 'Internal';
     } elseif ($objectVisibility === 'admins') {
         $accessIcon = 'fa fa-lock';
         $accessTitle = $object->objectType->title->upperSingular . ' is shared only with administrators';
         $accessLabel = 'Administrators';
     } else {
         $accessIcon = 'fa fa-user';
         $accessTitle = $object->objectType->title->upperSingular . ' is private';
         $accessLabel = 'Private';
     }
     if ($object->can('manageAccess')) {
     }
     $menu[] = ['label' => Html::tag('span', '', ['class' => $accessIcon]) . ' ' . $accessLabel, 'url' => $accessManageUrl, 'options' => ['title' => $accessTitle, 'data-handler' => 'background']];
     $menu[] = ['label' => Html::tag('span', '', ['class' => 'fa fa-history']) . ' Activity', 'url' => $object->getUrl('activity'), 'options' => ['title' => 'View Activity', 'data-handler' => 'background']];
     if (!empty($menu)) {
         $content[] = Html::beginTag('div', ['class' => 'ic-object-menu columns-' . count($menu)]);
         $content[] = Html::beginTag('ul', ['class' => 'clearfix']);
         $menuCount = 0;
         foreach ($menu as $item) {
             $menuCount++;
             if (!isset($item['options'])) {
                 $item['options'] = [];
             }
             $companionContent = '';
             if (isset($item['companion'])) {
                 $companion = $item['companion'];
                 if (!isset($companion['options'])) {
                     $companion['options'] = [];
                 }
                 Html::addCssClass($companion['options'], 'hidden');
                 $companionContent = Html::a($companion['label'], $companion['url'], $companion['options']);
             }
             $content[] = Html::tag('li', $companionContent . Html::a($item['label'], $item['url'], $item['options']), ['class' => 'item-' . $menuCount]);
         }
         $content[] = Html::endTag('ul');
         $content[] = Html::endTag('div');
     }
     $content[] = Html::endTag('div');
     return implode($content);
 }
예제 #12
0
    if ($model->hasRelationshipTargets()) {
        $parts[] = 'its relationship with the ' . $model->relationshipWith->objectType->title->getSingular(false) . ' <em>' . $model->relationshipWith->descriptor . '</em>';
    }
    echo '<div class="confirm">What would you like to do to ' . implode($parts, ' and ') . '?</div>';
    echo '<div class="btn-group" data-toggle="buttons">';
    $itemOptions = ['container' => false];
    foreach ($model->possibleTargets as $target) {
        $label = $model->labels[$target];
        $labelOptions = isset($label['options']) ? $label['options'] : [];
        if (!isset($labelOptions['class'])) {
            Html::addCssClass($labelOptions, 'btn btn-default');
        } else {
            Html::addCssClass($labelOptions, 'btn');
        }
        if ($model->target === $target) {
            Html::addCssClass($labelOptions, 'active');
        }
        $labelOptions['title'] = ucfirst(strip_tags($label['long']));
        echo Html::activeRadio($model, 'target', array_merge($itemOptions, ['value' => $target, 'label' => $label['short'], 'uncheck' => null, 'labelOptions' => $labelOptions]));
    }
    echo '</div>';
}
return;
\d($model->possibleTargets);
exit;
if (is_null($model->relationModel) || $model->forceObjectDelete) {
    echo "<div class='confirm'>Are you sure you want to delete the " . $model->object->objectType->title->getSingular(false) . " <em>" . $model->object->descriptor . "</em>?</div>";
} else {
    if (!empty($model->forceRelationshipDelete)) {
        echo "<div class='confirm'>Are you sure you want to delete the relationship between " . $model->object->objectType->title->getSingular(false) . " <em>" . $model->object->descriptor . "</em> and  <em>" . $model->relationshipWith->descriptor . "</em>?</div>";
    } else {
예제 #13
0
 /**
  * @inheritdoc
  */
 public function generateStart()
 {
     Html::addCssClass($this->owner->htmlOptions, $this->owner->panelCssClass);
     Html::addCssClass($this->owner->htmlOptions, $this->owner->panelStateCssClass);
     return parent::generateStart();
 }
예제 #14
0
<?php

use canis\helpers\Html;
$this->title = "<em>{$dataInterface->name}</em> Interface Logs";
$this->params['breadcrumbs'][] = ['label' => 'Administration', 'url' => ['/admin/dashboard/index']];
$this->params['breadcrumbs'][] = ['label' => 'Interfaces', 'url' => ['admin/interface/index']];
$this->params['breadcrumbs'][] = $this->title;
echo Html::pageHeader($this->title);
echo Html::beginTag('div', ['class' => 'list-group']);
$logs = $dataInterface->getRelatedLogQuery()->orderBy(['created' => SORT_DESC])->all();
foreach ($logs as $log) {
    $itemHtmlOptions = ['class' => 'list-group-item'];
    Html::addCssClass($itemHtmlOptions, 'list-group-item-' . $log->bootstrapState);
    echo Html::a(date("F d, Y h:i:sa", strtotime($log->created)), ['admin/interface/view-log', 'id' => $log->id], $itemHtmlOptions);
}
echo Html::endTag('div');
예제 #15
0
echo Html::a('Simple', '#simple-filter', ['role' => 'tab', 'data-toggle' => 'tab']);
echo Html::endTag('li');
$advancedOptions = [];
echo Html::beginTag('li', $advancedOptions);
echo Html::a('Advanced', '#advanced-filter', ['role' => 'tab', 'data-toggle' => 'tab']);
echo Html::endTag('li');
echo Html::endTag('ul');
echo Html::beginTag('div', ['class' => 'tab-content well']);
// simple
Html::addCssClass($simpleOptions, 'tab-pane');
$simpleOptions['id'] = 'simple-filter';
echo Html::beginTag('div', $simpleOptions);
echo $searchForm->field($searchModel, 'query', ['inputOptions' => ['id' => 'simple-filter-input', 'placeholder' => 'Search', 'class' => 'form-control']]);
echo Html::endTag('div');
// advanced
Html::addCssClass($advancedOptions, 'tab-pane');
$advancedOptions['id'] = 'advanced-filter';
echo Html::beginTag('div', $advancedOptions);
$queryBuilderOptions = [];
$queryBuilderOptions['filters'] = $type->dummyModel->filterFields;
$builderId = 'advanced-filter-builder';
echo Html::tag('div', '', ['id' => $builderId]);
$js[] = "\$('#{$builderId}').queryBuilder(" . json_encode($queryBuilderOptions) . ");";
echo Html::endTag('div');
echo Html::submitButton('Search', ['class' => 'btn btn-default']);
echo Html::endTag('div');
ActiveForm::end();
echo Html::endTag('div');
// filter body
echo Html::endTag('div');
// filter section
예제 #16
0
파일: index.php 프로젝트: psesd/cascade-lib
use canis\web\grid\Grid;
use yii\helpers\Url;
$js = [];
$this->title = 'Dashboard';
$refreshable = ['url' => Url::to(['/app/stream']), 'stream' => true, 'data' => ['baseInstructions' => []]];
$this->bodyHtmlOptions['data-refreshable'] = json_encode($refreshable);
echo Html::beginTag('div', ['class' => 'ic-dashboard row']);
Yii::beginProfile("Build Grid");
$widgets = Yii::$app->collectors['widgets']->getLocation('front');
ArrayHelper::multisort($widgets, ['priority', 'name'], [SORT_ASC, SORT_ASC]);
$topGrid = new Grid();
$watchingWidget = Yii::$app->collectors['widgets']->getOne('WatchingContent');
$watchingCell = Yii::$app->collectors['widgets']->build(null, $watchingWidget, [], ['columns' => 6]);
$topGrid->currentRow->addCell($watchingCell);
$itemsCell = $topGrid->currentRow->addCell(new Cell(['columns' => 6]));
$widgetGrid = new Grid();
Html::addCssClass($widgetGrid->htmlOptions, 'ic-front-side');
$js[] = '$("#' . $widgetGrid->id . '").canisAffix();';
$widgetGrid->baseRow = ['trueWidth' => 6];
$cells = [];
Yii::beginProfile("Collect Widgets");
foreach ($widgets as $item => $widget) {
    $cells[] = Yii::$app->collectors['widgets']->build(null, $widget, [], []);
}
Yii::endProfile("Collect Widgets");
$widgetGrid->cells = $cells;
Yii::endProfile("Build Grid");
$itemsCell->content = $widgetGrid->generate();
echo $topGrid->generate();
echo Html::endTag('div');
$this->registerJs(implode("\n", $js));
예제 #17
0
 public function getListItemOptions($model, $key, $index)
 {
     $options = self::getListItemOptionsBase($model, $key, $index);
     //return $options;
     $objectType = $model->objectType;
     $queryRole = ArrayHelper::getValue($this->settings, 'queryRole', false);
     $relationship = ArrayHelper::getValue($this->settings, 'relationship', false);
     if (!$relationship) {
         return $options;
     }
     if ($queryRole === 'children') {
         $baseUrl['object_relation'] = 'child';
         $primaryRelation = $relationship->getPrimaryObject(Yii::$app->request->object, $model, 'child');
         $key = 'child_object_id';
     } else {
         $baseUrl['object_relation'] = 'parent';
         $primaryRelation = $relationship->getPrimaryObject(Yii::$app->request->object, $model, 'parent');
         $key = 'parent_object_id';
     }
     if ($primaryRelation && $primaryRelation->{$key} === $model->primaryKey) {
         Html::addCssClass($options, 'active');
     }
     $options['data-object-id'] = $model->primaryKey;
     return $options;
 }
예제 #18
0
 /**
  * Renders the pager.
  *
  * @return string the rendering result
  */
 public function renderPager()
 {
     $pagination = $this->dataProvider->getPagination();
     //\d([get_class($this), $pagination]);
     if ($pagination === false || $pagination->getPageCount() <= 1) {
         return false;
     }
     /* @var LinkPager $class */
     $pager = $this->pagerSettings;
     $class = ArrayHelper::remove($pager, 'class', 'canis\\widgets\\LinkPager');
     $pager['pagination'] = $pagination;
     if (!isset($pager['options'])) {
         $pager['options'] = [];
     }
     $pager['maxButtonCount'] = 6;
     Html::addCssClass($pager['options'], 'pagination pull-right');
     return $class::widget($pager);
 }
예제 #19
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);
 }
예제 #20
0
파일: Model.php 프로젝트: psesd/cascade-lib
 /**
  * [[@doctodo method_description:generate]].
  *
  * @throws Exception [[@doctodo exception_description:Exception]]
  * @return unknown
  *
  */
 public function generate()
 {
     $model = $this->model;
     if (!$this->generator) {
         throw new Exception("Unable to find generator.");
     }
     if (!$this->generator->form) {
         throw new Exception("Unable to find generator form.");
     }
     $form = $this->generator->form;
     $pre = $post = null;
     $field = $this->getModelFieldName();
     $fieldConfig = $this->fieldConfig;
     $templatePrefix = '';
     if ($this->showLabel) {
         $templatePrefix = "{label}\n";
         $fieldConfig['template'] = $templatePrefix . $fieldConfig['template'];
     }
     $item = $form->field($model, $field, $fieldConfig);
     $item->inputOptions =& $this->htmlOptions;
     $item->inputOptions['value'] = $fieldConfig['value'] = $this->modelField->format->formValue;
     Html::addCssClass($this->htmlOptions, 'form-control');
     if (substr($this->type, 0, 5) === 'smart') {
         $this->type = lcfirst(substr($this->type, 5));
         if (isset($this->smartOptions['watchField'])) {
             $watchFieldId = $this->neightborFieldId($this->smartOptions['watchField']);
             if (!$watchFieldId) {
                 unset($this->smartOptions['watchField']);
             } else {
                 $this->smartOptions['watchField'] = '#' . $watchFieldId;
             }
         }
         $this->htmlOptions['data-value'] = $fieldConfig['value'];
         //Html::getAttributeValue($model, $field)
         $this->htmlOptions['data-smart'] = json_encode($this->smartOptions);
     }
     switch ($this->type) {
         case 'checkBox':
             $item->checkbox();
             break;
         case 'radioButton':
             $item->radio();
             break;
         case 'checkBoxList':
             $item->checkboxList($this->options);
             break;
         case 'radioButtonList':
         case 'boolean':
             if ($this->type === 'boolean') {
                 $this->showLabel = false;
                 if (!isset($this->options)) {
                     $this->showLabel = true;
                     $this->options = [1 => 'Yes', 0 => 'No'];
                 }
                 Html::addCssClass($this->htmlOptions, 'btn-group');
                 Html::removeCssClass($this->htmlOptions, 'form-control');
                 $this->htmlOptions['data-toggle'] = 'buttons';
                 $encode = !isset($this->htmlOptions['encode']) || $this->htmlOptions['encode'];
                 $this->htmlOptions['item'] = function ($index, $label, $name, $checked, $value) use($encode) {
                     $itemOptions = ['container' => false, 'labelOptions' => ['class' => 'btn-primary btn']];
                     if ($checked) {
                         Html::addCssClass($itemOptions['labelOptions'], 'active');
                     }
                     return Html::radio($name, $checked, array_merge($itemOptions, ['value' => $value, 'label' => $encode ? Html::encode($label) : $label]));
                 };
             }
             $item->radioList($this->options);
             break;
         case 'dropDownList':
         case 'smartDropDownList':
             $item->dropDownList($this->options);
             break;
         case 'listBox':
             $item->listBox($this->options);
             break;
         case 'file':
             // $item->fileInput();
             Html::removeCssClass($this->htmlOptions, 'form-control');
             $fileStorageWidgetClass = $this->fileStorageWidgetClass;
             $item = $fileStorageWidgetClass::widget(['item' => $item]);
             break;
         case 'hidden':
             $this->showLabel = false;
             $item = Html::activeHiddenInput($model, $field, $this->htmlOptions);
             break;
         case 'password':
             $item->password();
             break;
         case 'date':
             //$item->template = $templatePrefix . "<div class=\"input-group date\">{input}<span class=\"input-group-addon\"></span></div>\n<div class=\"\">{error}</div>";
             if (!$item->inputGroupPostfix) {
                 $item->inputGroupPostfix = "<i class=\"fa fa-calendar\"></i>";
             }
             Html::addCssClass($item->inputGroupHtmlOptions, 'date');
             break;
         case 'textarea':
             $item->textarea();
             break;
         case 'rich':
             Html::addCssClass($this->htmlOptions, 'rich');
             $editorSettings = [];
             $this->htmlOptions['data-editor'] = Json::encode($editorSettings);
             $item = Html::activeTextArea($model, $field, $this->htmlOptions);
             break;
     }
     if (!empty($item)) {
         return $pre . $item . $post;
     }
     return false;
 }