Example #1
0
/**
 * Получаем массив моделей которые есть в OptionsList
 *
 * @return array
 */
function getOps()
{
    $ops = [];
    $options = OptionsList::find()->all();
    foreach ($options as $option) {
        /*$mn = MyHelper::ADMIN_MODEL_NAMESPACE.$option->model;
          $m = new $mn();*/
        if ($option->model) {
            $pattern = '/\\-/';
            if (!preg_match($pattern, $option->model)) {
                $ops[$option->model] = MyHelper::getModelFrontName($option->model);
            } else {
                $ops[$option->model] = MyHelper::getComplexModelChildName($option->model);
            }
        }
    }
    return $ops;
    //return \yii\helpers\ArrayHelper::map($options, 'model', 'name');
}
Example #2
0
        
        #cat-list li {
            cursor: pointer;
        }
        
        #options-list li {
            cursor: w-resize;
        }
        
        .selected-cat {
            font-family: 'Roboto Condensed', sans-serif;
            font-weight: 700;
        }
    </style>
<?php 
$catTree = MyHelper::getTree(Yii::$app->getModule('options')->modelNamespace . $cat_name, 'parent_id', null);
?>
    <div class="row" id="CatsOptionsMain" data-modelName="<?php 
echo $model_name;
?>
" data-appUrl="<?php 
echo $appUrl;
?>
">
        
        <div class="col-md-4">
            <div class="row">
                <div class="col-md-12">
                    <ul id="cat-list">
                        <?php 
foreach ($catTree as $id => $cTr) {
 /**
  * @return OptionsList
  */
 public function getChildOptionsList($cat_id)
 {
     $model_name = MyHelper::modelFromNamespace($this->model_name);
     $parent_model_name = MyHelper::modelFromNamespace($this->parent_model_name);
     $model = new $this->parent_model_name();
     $parent_ids = $this->getParentIds($cat_id, [$cat_id], $model);
     $option_ids = ModelsOptionsList::find()->select('option_id')->where(['IN', 'model_id', $parent_ids])->asArray()->all();
     $options = OptionsList::find()->where(["IN", 'id', $this->flatArray($option_ids, 'option_id')])->andWhere(['model' => $parent_model_name . '-' . $model_name])->all();
     return $options;
 }
 /** Render widget */
 public function run()
 {
     $model = $this->behavior->owner;
     $model_name = MyHelper::modelFromNamespace($this->behavior->model_name);
     $parent_model_name = MyHelper::modelFromNamespace($this->behavior->parent_model_name);
     $parent_relation = $this->behavior->parent_relation;
     if ($model->{$parent_relation}) {
         $cat_id = $model->{$parent_relation}->id;
         /**
          * Формируем поля для параметров
          *
          * @var $optionList \porcelanosa\yii2options\models\OptionsList
          */
         if ($this->behavior->getChildOptionsList($cat_id) and is_array($this->behavior->getChildOptionsList($cat_id))) {
             foreach ($this->behavior->getChildOptionsList($cat_id) as $optionList) {
                 $option = ChildOptions::findOne(['model' => $parent_model_name . '-' . $model_name, 'model_id' => $model->id, 'option_id' => $optionList->id]);
                 $option_name = trim(str_replace(' ', '_', $optionList->alias));
                 $value = $this->behavior->getChildOptionValueById($optionList->id);
                 $option_type_alias = $optionList->type->alias;
                 if ($option_type_alias == 'boolean') {
                     $this->options_string .= $this->render('@vendor/porcelanosa/yii2-options/views/_partials/_boolean', ['option_name' => $option_name, 'optionList' => $optionList, 'value' => $value]);
                 }
                 if ($option_type_alias == 'textinput') {
                     $this->options_string .= $this->render('@vendor/porcelanosa/yii2-options/views/_partials/_textinput', ['option_name' => $option_name, 'optionList' => $optionList, 'value' => $value]);
                 }
                 if ($option_type_alias == 'textarea') {
                     $textarea = $option ? ChildRichTexts::find()->where(['option_id' => $option->id])->one() : null;
                     $this->options_string .= $this->render('@vendor/porcelanosa/yii2-options/views/_partials/_textarea', ['option_name' => $option_name, 'optionList' => $optionList, 'richTextValue' => $textarea != null ? $textarea->text : '']);
                 }
                 if ($option_type_alias == 'richtext') {
                     $richText = $option ? ChildRichTexts::find()->where(['option_id' => $option->id])->one() : null;
                     $this->options_string .= $this->render('@vendor/porcelanosa/yii2-options/views/_partials/_rich_text', ['option_name' => $option_name, 'optionList' => $optionList, 'richTextValue' => $richText != null ? $richText->text : '']);
                 }
                 if ($option_type_alias == 'dropdown') {
                     // получаем фабрики
                     $status_preset_values = OptionPresetValues::find()->where(['preset_id' => $optionList->preset->id])->orderBy('sort')->all();
                     // формируем массив, с ключем равным полю 'id' и значением равным полю 'name'
                     $status_preset_items = ArrayHelper::map($status_preset_values, 'id', 'value');
                     $status_preset_items = ArrayHelper::merge(['null' => 'Выберите ' . mb_strtolower($optionList->name)], $status_preset_items);
                     $this->options_string .= $this->render('@vendor/porcelanosa/yii2-options/views/_partials/_dropdown', ['option_name' => $option_name, 'optionList' => $optionList, 'value' => $value, 'status_preset_items' => $status_preset_items]);
                 }
                 if ($option_type_alias == 'radiobuton_list') {
                     // получаем фабрики
                     $status_preset_values = OptionPresetValues::find()->where(['preset_id' => $optionList->preset->id])->orderBy('sort')->all();
                     // формируем массив, с ключем равным полю 'id' и значением равным полю 'name'
                     $status_preset_items = ArrayHelper::map($status_preset_values, 'id', 'value');
                     $this->options_string .= '<label>&nbsp;' . $optionList->name . '</label>' . Html::radioList($option_name, $value ? $value : null, $status_preset_items, ['id' => $option_name, 'class' => 'form-control']);
                 }
                 if ($option_type_alias == 'dropdown-multiple') {
                     //  получаем список значений для мульти селектед
                     $multipleValuesArray = $this->behavior->getChildOptionMultipleValueByOptionId($option->id);
                     // получаем фабрики
                     $status_preset_values = OptionPresetValues::find()->where(['preset_id' => $optionList->preset->id])->orderBy('sort')->all();
                     // формируем массив, с ключем равным полю 'id' и значением равным полю 'name'
                     $status_preset_items = ArrayHelper::map($status_preset_values, 'id', 'value');
                     $this->options_string .= $this->render('@vendor/porcelanosa/yii2-options/views/_partials/_dropdown_multiple', ['option_name' => $option_name, 'optionList' => $optionList, 'multipleValuesArray' => $multipleValuesArray, 'status_preset_items' => $status_preset_items]);
                 }
                 /*  Список checkboxes  */
                 if ($option_type_alias == 'checkboxlist-multiple') {
                     //  получаем список значений для мульти селектед
                     $multipleValuesArray = $option ? $this->behavior->getChildOptionMultipleValueByOptionId($option->id) : [];
                     // получаем фабрики
                     $status_preset_values = OptionPresetValues::find()->where(['preset_id' => $optionList->preset->id])->orderBy('sort')->all();
                     // формируем массив, с ключем равным полю 'id' и значением равным полю 'name'
                     $status_preset_items = ArrayHelper::map($status_preset_values, 'id', 'value');
                     $this->options_string .= $this->render('@vendor/porcelanosa/yii2-options/views/_partials/_checkboxlist_multiple', ['option_name' => $option_name, 'optionList' => $optionList, 'multipleValuesArray' => $multipleValuesArray, 'status_preset_items' => $status_preset_items]);
                 }
                 /*  IMAGE Изображение */
                 if ($option_type_alias == 'image') {
                     $this->options_string .= $this->render('@vendor/porcelanosa/yii2-options/views/_partials/_image', ['option_name' => $option_name, 'optionList' => $optionList, 'value' => $value, 'this_widget' => $this, 'behavior' => $this->behavior]);
                 }
             }
         }
         $view = $this->getView();
         OptionsAsset::register($view);
         $this->options['id'] = 'child-opt-widget-' . $this->model->id;
         $this->options['class'] = 'child-options';
     }
     return $this->render('optionsWidget', ['options_string' => $this->options_string]);
 }
Example #5
0
//$path        = Yii::getAlias('@app/modules/admin/models/*.php');
//$modelNamespace = 'app\modules\admin\models\\';
$path = Yii::getAlias(\Yii::$app->getModule('options')->model_path);
$modelNamespace = Yii::getAlias(\Yii::$app->getModule('options')->modelNamespace);
$pattern = '/.+\\//i';
//print_r(glob($path));
foreach (glob($path) as $filename) {
    $model_name = $modelNamespace . preg_replace($pattern, '', str_replace(".php", "", $filename));
    $m = new $model_name();
    /* имя модели без namespace */
    $clearModelName = MyHelper::modelFromNamespace($model_name);
    if (isset($m->modelFrontName)) {
        $model_array[$clearModelName] = $m->modelFrontName;
    }
    if (isset($m->childModels) and is_array($m->childModels)) {
        foreach (MyHelper::complexModel($model_name) as $chModel => $chModelName) {
            $model_array[$chModel] = $chModelName;
        }
    }
}
?>
	<div class="row">
		<div class="col-md-7">
			<div class="row">
				<div class="col-md-6">
					<?php 
echo $form->field($model, 'name')->textInput(['maxlength' => true]);
?>
				</div>
				<div class="col-md-6">
Example #6
0
<?php

use yii\helpers\Html;
use porcelanosa\yii2options\components\helpers\MyHelper;
/**
 * @var $optionsList \porcelanosa\yii2options\models\OptionsList[]
 */
$catTree = MyHelper::getTree(\Yii::$app->getModule('options')->modelNamespace . 'Cats', 'parent_id');
?>
	<div class="row" style="height: ">
		<div class="col-md-2">
			<div class="row">
				<div class="col-md-12">
					<ul id="cat-list">
						<?php 
foreach ($catTree as $id => $cTr) {
    ?>
							<li data-id="<?php 
    echo $id;
    ?>
"><?php 
    echo $cTr;
    ?>
</li>
						<?php 
}
?>
					</ul>
					<?php 
/*=Html::dropDownList(
			'catsList',
Example #7
0
\t\t\t\t\t\t\t\$("#linkblock-{$option_name}-{$this_widget->model->id}").remove();
\t\t\t\t\t\t}
\t\t\t\t\t}
\t\t\t\t}
\t\t\t)
\t})
JS;
?>
<div style="margin-bottom: 20px; padding: 5px; border: 1px solid rgba(166, 166, 166, 0.71)">
    <label>&nbsp; <?php 
echo $optionList->name;
?>
</label><br>
    <?php 
// Если есть изображение, то показываем его Show image if exist
if (MyHelper::IFF($value)) {
    ?>
            <?php 
    echo Html::img($value, ['style' => 'width: 100px; height:auto;', 'id' => "img-{$option_name}-{$this_widget->model->id}"]);
    ?>
            
            <div id="linkblock-<?php 
    echo $option_name;
    ?>
-<?php 
    echo $this_widget->model->id;
    ?>
">
                <a href="" id="delimg-<?php 
    echo $option_name;
    ?>
 /**
  * @return OptionsList[]
  */
 public function getOptionsList()
 {
     $model_name = MyHelper::modelFromNamespace($this->model_name);
     $options = OptionsList::find()->where(['model' => $model_name, 'active' => 1])->orderBy('sort')->all();
     return $options;
 }