You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

77 lines
1.8 KiB

<?php
/**
* Created by Error202
* Date: 11.07.2018
*/
use backend\components\menu\assets\MenuAsset;
3 years ago
use core\entities\menu\Menu;
use core\forms\menu\MenuItemForm;
use yii\helpers\Html;
use yii\helpers\Url;
use yii\web\JsExpression;
3 years ago
use yii\web\View;
/**
* @var $this View
* @var $items array
* @var $menu Menu
*/
MenuAsset::register($this);
3 years ago
function menu_generate($items): string
{
$html = '<ol class="dd-list">';
foreach ($items as $item) {
$menuItemForm = new MenuItemForm($item['item']);
$html.=Yii::$app->getView()->render( '_item', [
'item' => $item,
'model' => $menuItemForm,
] );
}
return $html . '</ol>';
}
$name_empty_error = Yii::t('menu', 'Name must be specified');
$item_save_url = ''; // delete this
$item_delete_url = Url::to(['menu/delete-menu-item']);
$confirm_delete_message = Yii::t('buttons', 'Are you sure you want to delete this item?');
$current_url = Url::to(['menu/index', 'id' => $menu->id]);
$js = <<<JS
$(".item-delete-button").on('click', function(e) {
e.preventDefault();
if (confirm('{$confirm_delete_message}')) {
var id = $(this).data('id');
$.ajax({
method: "POST",
url: "{$item_delete_url}",
data: { id: id }
})
.done(function( data ) {
if (data.result === 'success') {
document.location.href = '{$current_url}';
}
});
}
});
JS;
$this->registerJs($js, $this::POS_READY);
$url = Url::to(['/menu/save-menu-items']);
$redirect = Url::to(['menu/index', 'id' => $menu->id]);
?>
<div class="dd" id="nestable3">
<?= menu_generate($items) ?>
</div>
<div style="clear: both;"></div>
<hr>
<?= Html::button(Yii::t('buttons', 'Save'), [
3 years ago
'class' => 'btn btn-success float-right',
'onclick' => new JsExpression('sendTree('.$menu->id.', "'.$url.'", "'.$redirect.'")'),
3 years ago
]) ?>