_form.php 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. <?php
  2. /**
  3. * Author: lf
  4. * Blog: https://blog.feehi.com
  5. * Email: job@feehi.com
  6. * Created at: 2016-03-21 14:35
  7. */
  8. /**
  9. * @var $this yii\web\View
  10. * @var $model common\models\Menu
  11. * @var $parentMenuDisabledOptions []
  12. * @var $menusNameWithPrefixLevelCharacters []
  13. * @var $categoryUrls []
  14. */
  15. use backend\widgets\ActiveForm;
  16. use common\libs\Constants;
  17. use common\widgets\JsBlock;
  18. $this->title = "Frontend Menus";
  19. $parent_id = Yii::$app->getRequest()->get('parent_id', '');
  20. if ($parent_id != '') {
  21. $model->parent_id = $parent_id;
  22. }
  23. ?>
  24. <div class="row">
  25. <div class="col-sm-12">
  26. <div class="ibox">
  27. <?= $this->render('/widgets/_ibox-title') ?>
  28. <div class="ibox-content">
  29. <?php $form = ActiveForm::begin(); ?>
  30. <?= $form->field($model, 'parent_id')->label(Yii::t('app', 'Parent Menu Name'))->dropDownList($menusNameWithPrefixLevelCharacters, ['options' => $parentMenuDisabledOptions]) ?>
  31. <div class="hr-line-dashed"></div>
  32. <?= $form->field($model, 'name')->textInput(['maxlength' => 64]) ?>
  33. <div class="hr-line-dashed"></div>
  34. <?= $form->field($model, 'is_absolute_url')->radioList(Constants::getYesNoItems()) ?>
  35. <div class="hr-line-dashed"></div>
  36. <?= $form->field($model, 'url', ['template'=>'{label}<div class="col-sm-{size}"><input name="urlType" checked value="new" type="radio">' . yii::t('app', 'Input new') . ' &nbsp;&nbsp;<input value="select" name="urlType" type="radio">' . yii::t('app', 'Chose from article category') . '<div class="form-group field-menu-url required">{input}</div>{error}</div>{hint}'])->textInput(['value'=>$model->convertJSONStringToRelativeUrl()])?>
  37. <div class="hr-line-dashed"></div>
  38. <?= $form->field($model, 'sort')->textInput(['maxlength' => 64]) ?>
  39. <div class="hr-line-dashed"></div>
  40. <?= $form->field($model, 'target')->radioList(Constants::getTargetOpenMethod()) ?>
  41. <div class="hr-line-dashed"></div>
  42. <?= $form->field($model, 'is_display')->radioList(Constants::getYesNoItems()) ?>
  43. <div class="hr-line-dashed"></div>
  44. <?= $form->defaultButtons() ?>
  45. <?php ActiveForm::end(); ?>
  46. </div>
  47. </div>
  48. </div>
  49. </div>
  50. <?php JsBlock::begin() ?>
  51. <script>
  52. String.prototype.trim = function (char, type) {
  53. if (char) {
  54. if (type == 'left') {
  55. return this.replace(new RegExp('^\\'+char+'+', 'g'), '');
  56. } else if (type == 'right') {
  57. return this.replace(new RegExp('\\'+char+'+$', 'g'), '');
  58. }
  59. return this.replace(new RegExp('^\\'+char+'+|\\'+char+'+$', 'g'), '');
  60. }
  61. return this.replace(/^\s+|\s+$/g, '');
  62. };
  63. $(document).ready(function () {
  64. var urlType = $("input[name=urlType]");
  65. var categoryUrl =
  66. <?php
  67. $menuCategories = $categoryUrls;
  68. if($model->id){
  69. foreach ($menuCategories as $k => $menuCategory){
  70. if($k == $model->url){
  71. echo "'" . $k ."';";
  72. break;
  73. }
  74. }
  75. echo "'';";
  76. }else{
  77. echo "'';";
  78. }
  79. ?>
  80. if( categoryUrl != '' ){
  81. $("input[value=new]").attr('checked', false);
  82. $("input[value=select]").attr('checked', true);
  83. var input = '<?= str_replace("\n", '', $form->field($model, 'url', ['template' => '{input}'])
  84. ->label(false)
  85. ->dropDownList($menuCategories)) ?>';
  86. urlType.parent().children("div.field-menu-url").remove();
  87. urlType.parent().append(input);
  88. $("select[id=menu-url]").bind('change', changeCategoryMenu);
  89. }
  90. urlType.change(function () {
  91. var val = $(this).val();
  92. if (val == 'select') {
  93. var input = '<?= str_replace("\n", '', $form->field($model, 'url', ['template' => '{input}'])
  94. ->label(false)
  95. ->dropDownList($menuCategories)) ?>';
  96. } else {
  97. var input = '<?= str_replace("\n", '', $form->field($model, 'url', ['template' => '{input}'])
  98. ->label(false)
  99. ->textInput(['value'=>$model->convertJSONStringToRelativeUrl()]))?>';
  100. }
  101. $(this).parent().children("div.field-menu-url").remove();
  102. $(this).parent().append(input);
  103. if(val == 'select'){
  104. $("select[id=menu-url]").bind('change', changeCategoryMenu);
  105. }
  106. })
  107. })
  108. function changeCategoryMenu()
  109. {
  110. var name = $("select[id=menu-url] :selected").html().trim(' │', 'left').trim(' ├', 'left').trim(' └', 'left').trim('-', 'left').replace(/└/g, "").trim(" ", 'left')
  111. $("input[id=menu-name]").val( name );
  112. }
  113. </script>
  114. <?php JsBlock::end() ?>