_form.php 4.97 KB
<?php
use yii\helpers\Html;
//
use thread\app\bootstrap\ActiveForm;
//
use backend\modules\menu\models\MenuItem;

/**
 * @var $model \backend\modules\menu\models\MenuItem
 * @var $modelLang \backend\modules\menu\models\MenuItemLang
 */
$type = array_keys(MenuItem::linkTypeRange())[0];
if (isset($model['link_type'])) {
    $type = $model['link_type'];
}

if (empty($model['internal_source'])):
    $model['internal_source'] = array_keys(MenuItem::getSourcesList())[0];
endif;
//
$form = ActiveForm::begin();
//
echo $form->submit($model, $this)
    . Html::activeHiddenInput($model, 'group_id', ['value' => $this->context->group->id])
    . Html::activeHiddenInput($model, 'tree', ['value' => $this->context->group->id])
    . Html::activeHiddenInput($model, 'parent_id',
        [
            'value' => (Yii::$app->request->get('parent_id'))
                ? Yii::$app->request->get('parent_id')
                : 0
        ]
    )
    . $form->text_line_lang($modelLang, 'title');
?>
<?= $form->field($model, 'parent')->dropDownList(\thread\app\helpers\tree\TreeHelper::dropDownTreeList($this->context->group->id, MenuItem::class)) ?>
<hr>
<?= $form->field($model, 'link_type')->dropDownList(MenuItem::linkTypeRange()) ?>

<div class="menuitem-link_type_internal" style="display:<?= ($type == 'internal') ? 'block' : 'none' ?>">
    <?= $form->field($model, 'internal_source')->dropDownList(MenuItem::getTypeSources(), ['prompt' => '']) ?>

    <?php foreach (MenuItem::getSourcesList() as $key => $data):
        echo Html::beginTag('div', [
                'class' => $key . ' internal_sources',
                'style' => 'display:' . (($model['internal_source'] == $key) ? 'block' : 'none')
            ])
            . $form->field($model, 'internal_source_id')->dropDownList(call_user_func([$data['class'], $data['method']]), ['prompt' => ''])->label($data['label'])
            . Html::endTag('div');
    endforeach;

    echo $form->field($model, 'internal_source_id', ['inputOptions' => ['class' => 'internal_source_id_hidden']])->hiddenInput()->label(false);
    ?>

</div>

<div class="menuitem-link_type_external" style="display:<?= ($type == 'external') ? 'block' : 'none' ?>">
    <div class="col-md-10">
        <?= $form->text_line($modelLang, 'external_link', [
            'inputOptions' => [
                'id' => 'link_type_external'
            ]
        ])
        . $form->field($model, 'link_target')->dropDownList(MenuItem::linkTargetRange()) ?>
    </div>
    <div class="col-md-2">
        <?= Html::a('Select file', "javascript:open_popup('" . \yii\helpers\Url::base() . "js/filemanager/dialog.php?type=0&popup=1&field_id=link_type_external&relative_url=1');", [
            'class' => 'btn btn-success',
            'style' => 'margin-top: 23px;'
        ]) ?>
    </div>
</div>

<div class="menuitem-link_type_permanent" style="display:<?= ($type == 'permanent') ? 'block' : 'none' ?>">
    <?= $form->field($model, 'permanent_link', [
        'inputOptions' => [
            'id' => 'link_type_permanent'
        ]
    ])->dropDownList(MenuItem::getPermanentLink()) ?>
</div>

<div class="row control-group">
    <div class="col-md-3">
        <?= $form->switcher($model, 'published') ?>
    </div>
    <div class="col-md-3">
        <?= $form->text_line($model, 'position') ?>
    </div>
</div>

<?php
echo $form->submit($model, $this);
//
ActiveForm::end();
//
$this->registerJs("
    $('#menuitem-link_type').on('change', function(){
        var val = this.value;

        if(this.value == 'permanent'){
            $('.menuitem-link_type_permanent').show();
            $('.menuitem-link_type_external').hide();
            $('.menuitem-link_type_internal').hide();
        }else if(this.value == 'internal'){
            $('.menuitem-link_type_internal').show();
            $('.menuitem-link_type_external').hide();
            $('.menuitem-link_type_permanent').hide();
        }else{
            $('.menuitem-link_type_internal').hide();
            $('.menuitem-link_type_external').show();
            $('.menuitem-link_type_permanent').hide(); 
        }
        console.log(val);
    });
    $('#menuitem-internal_source').on('change', function(){
        var val = this.value;
        $('.internal_sources').hide();
        $('.'+val).show();
        console.log(val);
    });

    $('#menuitem-internal_source_id').on('change', function(){
        var val = this.value;
        $('.internal_source_id_hidden').val(val);
    });
    
//    $('#link_type_external').keypress(function(){
//        $('#model_link').val($('#link_type_external').val());
//    })
//    
//    $('#link_type_permanent').keypress(function(){
//        $('#model_link').val($('#link_type_permanent').val());
//    })
");
?>
<script>
    function open_popup(url) {
        var w = 880;
        var h = 570;
        var l = Math.floor((screen.width - w) / 2);
        var t = Math.floor((screen.height - h) / 2);
        var win = window.open(url, 'ResponsiveFilemanager', "scrollbars=1,width=" + w + ",height=" + h + ",top=" + t + ",left=" + l);
    }
</script>