Concrete5 5.7:如何在包仪表板单页上使用对话框弹出窗口

Concrete5 5.7: How to use the dialog popup on package dashboard single pages

我有一个 带有一个仪表板单页。在这个单一页面上,我需要一个动态创建的 dialog 弹出窗口,等等 我还需要使用路由器、视图 (package/mypackage/views) 和控制器。

现在的问题如下:

如果仍有问题,请添加评论!

在concrete5中,可以使用$.fn.dialog.open,例如:

$.fn.dialog.open({
    width: 500,
    height: 300,
    element: $('<div>This is an example!</div>')
});

要在包中的仪表板单页上创建模态对话框,需要执行以下步骤(假设包已经存在):

  • 创建以下补充文件/文件夹(为了便于阅读):

    /my_package/controllers/dialog/my_dialog.php
    /my_package/views/dialogs/my_dialog.php
    
  • 'my_dialog' 控制器应该如下所示:

    namespace Concrete\Package\MyPackage\Controller\Dialog;
    
    use Concrete\Core\Controller\Controller;
    
    class MyDialog extends Controller
    {
        protected $viewPath = 'dialogs/my_dialog';
    
        public function view()
        {
            /** your code */
        }
    }
    
  • 'my_dialog' 视图是标准的 Concrete5 视图。
  • 包控制器中添加(如果不存在)以下方法:

    public function on_start()
    {
        Route::register('/my_package/my_dialog',
        '\Concrete\Package\MyPackage\Controller\Dialog\MyDialog::view');
    }
    
  • 现在单页视图:

    <a class="btn btn-default btn-xs" data-button="my-dialog">My dialog</a>
    
    <script type="text/javascript">
        $('a[data-button=add-event]').on('click', function() {
            $.fn.dialog.open({
                href: '<?= URL::to('/my_package/my_dialog'); ?>',
                title: 'My dialog',
                width: '280',
                height: '220',
                modal: true
            });
            return false;
        });
    </script>
    

注意:

路线可以随意命名(例如:/superuser/needs/new/pants)。

对话框JS的调用可能处理的比较好,欢迎评论

要添加另一个 "inline-code" 可能性:

HTML:

<div id="my_dialog" style="display: none">
    <div>
          This is an example!
    </div>
</div>

jQuery:

$('#my_dialog').dialog({
    title: 'My Title',
    width: 500,
    height: 300,
    modal: true,
    buttons: [
        {
            text: 'Yes',
            icons: {
                primary: "ui-icon-confirm"
            },
            click: function () {
                // Confirmed code
            }
        },
        {
            text: 'No',
            icons: {
                primary: "ui-icon-cancel"
            },
            click: function () {
                $(this).dialog('close');
            }
        }
    ]
});