sergiosgc/negotiated-output-components

一组用于与协商输出模板系统一起使用的HTML组件

dev-master 2023-10-26 17:18 UTC

This package is auto-updated.

Last update: 2024-09-19 02:57:13 UTC


README

一组用于与协商输出模板系统一起使用的HTML组件

list.table

list.table将行值数组转换为表格。示例输出

propertylist.table example

示例代码

\sergiosgc\output\Negotiated::$singleton->template('/_/sergiosgc/list.table/', 
    [ 'list' => [
    'class' => 'service-list',
    'columns' => [
        'name' => [
            'label' => _('Service'),
        ],
        'action' => [
            'label' => _('Actions'),
            'links' => [
                [
                    'href' => '/service/%<id>',
                    'label' => _('View')
                ],
                [
                    'href' => '/service/edit/%<id>',
                    'label' => _('Edit')
                ],
                [
                    'href' => '/service/%<id>?x-verb=DELETE',
                    'class' => 'delete',
                    'label' => _('Delete')
                ]
            ]
        ]
    ],
    'rows' => $services
    ]]);

参数指定

list.table将对模板变量list进行操作。此变量是一个关联数组,包含以下条目

  • class(可选) 结果表格的HTML类
  • columns 属性的关联数组。每个属性在表格中产生一列。每个属性是以下之一
    • 值属性。键与list/rows/*中的键匹配,值是一个包含可选label条目的关联数组。
    • 链接集属性。键无关紧要。内容是一个包含可选label和必填的links关联数组的关联数组。links数组中的每个条目包含
      • href 一个格式化字符串,将被馈入\sergiosgc\sprintf,与当前的list/rows数组一起使用,以生成链接href。您可以按照\sergiosgc\sprintf文档中的说明使用命名转换说明符。
      • label 链接标签
      • class(可选) 链接类
  • rows 一个包含值关联数组(或\ArrayAccess实例)的常规数组。您必须包括在list/columns中定义的值属性值。您可以包含额外的值,即用于生成链接的转换说明符的消耗。

html.element

html.element生成通用HTML。

示例代码

\sergiosgc\output\Negotiated::$singleton->template('/_/sergiosgc/html.element/', 
    ['html.element' => [
        'element' => 'div',
        '@class' => 'buttons',
        'children' => [ 
            [
                'element' => 'a',
                '@href' => '/reconfigure/
                '@class' => 'button',
                'children' => [
                    [
                        'text' => _('Reconfigure')
                    ]
                ]
            ],
            [
                'element' => 'a',
                '@href' => '/launch/
                '@class' => 'button primary',
                'children' => [
                    [
                        'text' => _('Launch')
                    ]
                ]
            ]
        ]
]]);

参数指定

html.element将对名为html.element的模板变量进行操作。此变量包含HTML节点(元素、HTML源或文本节点)的定义。

对于文本节点,定义一个text条目,其中包含文本。

对于原始HTML,定义一个raw条目,其中包含源代码。

对于元素条目,定义

  • 一个element条目,其中包含元素的标签名称。
  • 一组可选的属性条目,每个条目以属性名称前缀@命名。
  • 一个可选的children条目。如果定义,它应该是一个包含关联数组的数组,其中每个关联数组是按照此参数指定中定义的HTML元素。

menu.ul

menu.ul将菜单定义转换为递归无序列表定义的菜单,适用于生成主菜单

propertylist.table example

示例代码

\sergiosgc\output\Negotiated::$singleton->template('/_/sergiosgc/menu.ul/', [
    'menu' => [ 'items' => [
        [
            'href' => '/',
            'active' => true,
            'label' => _('Home')
        ],
        [
            'href' => '/hosts/',
            'label' => _('Hosts'),
            'submenu' => [
                [
                    'href' => '/host/new/',
                    'label' => _('New')
                ]
            ]
        ],
        [
            'href' => '/host-groups/',
            'label' => _('Host Groups'),
            'submenu' => [
                [
                    'href' => '/host-group/new/',
                    'label' => _('New')
                ]
            ]
        ],
        [
            'href' => '/services/',
            'label' => _('Services'),
            'submenu' => [
                [
                    'href' => '/service/new/',
                    'label' => _('New')
                ]
            ]
        ],
    ]
]);

参数指定

menu.ul将对模板变量menu进行操作。这是一个关联数组,其中有一个items条目定义了菜单。

items条目是一个菜单条目数组。每个菜单条目都是一个包含强制性的label和可选的关联数组。

  • href 应应用于标签的链接
  • active 菜单条目是否为活动状态
  • submenu 子菜单定义,作为菜单条目的数组

paginator

paginator生成分页器,类似于这个

propertylist.table example

示例代码

\sergiosgc\output\Negotiated::$singleton->template('/_/sergiosgc/paginator/',
    [ 'paginator' => [
        'page' => $currentPage,
        'pageCount' => $pageCount,
        'visible' => 3,
        'queryArgumentsWhitelist' => [ 'q' ]
]]);

参数指定

paginator将对paginator模板变量进行操作。此变量是一个包含以下必填参数的关联数组

  • page 当前页面
  • pageCount 总页数

此外,还可以定义以下可选参数

  • class 分页器的HTML类。默认为paginator
  • visible 可见的页数。默认为3。
  • linkHref 生成页面链接的\sergiosgc\sprintf转换说明符。转换说明符可以引用page以表示链接的页面,以及定义在分页器模板变量中的任何变量。默认为%<page>
  • linkLabel \sergiosgc\sprintf 转换说明符,用于生成页面链接标签。转换说明符可以引用 page 表示链接页面,以及分页模板变量中定义的任何变量。默认为 %<page>
  • startLinkLabel 第1页链接的标签。默认为 |<
  • endLinkLabel 最后一页链接的标签。默认为 >|
  • skipUpLinkLabel 跳过 可见 页面向上的链接标签。默认为 >>
  • skipDownLinkLabel 跳过 可见 页面向下的链接标签。默认为 <<
  • preserveQueryArguments 链接是否应包含查询参数?True/False,默认为 false。
  • queryArgumentsWhitelist 如果 preserveQueryArguments 为 false,则仍然将此数组中的查询参数追加到生成的链接中。默认为空数组。
  • queryArgumentsBlacklist 如果 preserveQueryArguments 为 true,则仍然跳过将此数组中的查询参数追加到生成的链接中。默认为空数组。

propertylist.table

propertylist.table 将属性关联数组 [ 'property' => $value ] 转换为包含每行一个属性和每行两个列(标签和值)的表格。示例输出

propertylist.table example

示例代码

\sergiosgc\output\Negotiated::$singleton->template('/_/sergiosgc/propertylist.table/',
    [ 'property-list' => [
        'class' => 'hostgroup-view',
        'properties' => [
            'name' => [ 'label' => _('Name') ],
            'parent' => [ 'label' => _('Parent') ],
            'action' => [
                'label' => _('Actions'),
                'links' => [
                    [
                        'href' => '/host-group/edit/%<id>',
                        'label' => _('Edit')
                    ],
                    [
                        'href' => '/host-group/%<id>?x-verb=DELETE',
                        'class' => 'delete',
                        'label' => _('Delete')
                    ]
                ]
            ]
        ],
        'value' => $hostGroup
]]);

参数指定

propertylist.table 将作用于模板变量 property-list。该变量是包含以下条目的关联数组

  • class(可选) 结果表格的HTML类
  • properties 属性关联数组。每个属性在表中产生一行。每个属性是以下之一
    • 值属性。键匹配 property-list/value 中的键,值是一个包含可选的 label 条目的关联数组。
    • 链接集属性。键无关紧要。内容是一个包含可选label和必填的links关联数组的关联数组。links数组中的每个条目包含
      • href 一个格式字符串,将与其 property-list/value 数组一起传递到 \sergiosgc\sprintf 中,用于生成链接 href。您可以按照 \sergiosgc\sprintf 文档使用命名转换说明符。
      • label 链接标签
      • class(可选) 链接类
  • value 值的关联数组(或 \ArrayAccess 实例)。您必须为在 property-list/properties 中定义的值属性包含值。您可以包含额外的值,即用于生成链接时转换说明符的消耗。