common.ui.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. <?php
  2. namespace zin;
  3. /**
  4. * Build params rows.
  5. *
  6. * @param object $block
  7. * @param array $params
  8. * @param string $module
  9. * @param string $code
  10. * @return array
  11. */
  12. function buildParamsRows($block = null, $params = null, $module = '', $code = '')
  13. {
  14. global $lang;
  15. if(empty($params)) $params = data('params');
  16. $rows = array();
  17. $isSameBlock = !empty($block) && $block->module == $module && $block->code == $code;
  18. $nameRow = formRow
  19. (
  20. formGroup
  21. (
  22. set::label($lang->block->name),
  23. set::name('title'),
  24. set::value(data('blockTitle')),
  25. set::control('input')
  26. )
  27. );
  28. $rows['name'] = $nameRow;
  29. foreach($params as $key => $row)
  30. {
  31. $rows[$key] = formRow
  32. (
  33. formGroup
  34. (
  35. set::label($row['name']),
  36. set::name("params[$key]"),
  37. set::value($isSameBlock && !empty($block->params) ? zget($block->params, $key, '') : zget($row, 'default', '')),
  38. set::control(array
  39. (
  40. 'id' => "params$key",
  41. 'type' => $row['control'],
  42. 'items' => isset($row['options']) ? $row['options'] : null
  43. )),
  44. set::required($row['control'] === 'picker')
  45. )
  46. );
  47. /* 如果有type字段, name字段放到type字段后面。*/
  48. if($key == 'type')
  49. {
  50. unset($rows['name']);
  51. $rows['name'] = $nameRow;
  52. }
  53. }
  54. return $rows;
  55. }
  56. /**
  57. * Build block module nav.
  58. *
  59. * @param array $modules
  60. * @param string $module
  61. * @return array
  62. */
  63. function buildBlockModuleNav($modules = null, $module = null)
  64. {
  65. if(empty($modules)) $modules = data('modules');
  66. if(empty($module)) $module = data('module');
  67. $items = array();
  68. foreach($modules as $moduleKey => $moduleName)
  69. {
  70. if(!$moduleKey || !$moduleName) continue;
  71. if($moduleKey === 'welcome') $items[] = array('type' => 'divider', 'outerClass' => 'text-light');
  72. $item = array();
  73. $item['active'] = $moduleKey == $module;
  74. $item['text'] = $moduleName;
  75. $item['textClass'] = 'flex-auto group-hover:text-primary';
  76. $item['trailingIcon'] = 'arrow-right opacity-0 group-hover:opacity-100 text-primary active:font-bold active:canvas';
  77. $item['class'] = 'row group active:canvas';
  78. $item['data-module'] = $moduleKey;
  79. $items[] = $item;
  80. }
  81. return nav
  82. (
  83. set::className('block-modules-nav py-2'),
  84. set::stacked(true),
  85. set::items($items),
  86. on::click('.nav-item>a', 'getForm'),
  87. h::css('.block-modules-nav > .nav-item > a.active {box-shadow: inset 2px 0 0 var(--color-primary-500); color: var(--color-fore)}')
  88. );
  89. }