v1.php 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <?php
  2. namespace zin;
  3. class modalHeader extends wg
  4. {
  5. /**
  6. * @var mixed[]
  7. */
  8. protected static $defineProps = array(
  9. 'inModal?: bool',
  10. 'title?: string',
  11. 'titleClass?: string',
  12. 'entityText?: string',
  13. 'entityID?: int'
  14. );
  15. /**
  16. * @var mixed[]
  17. */
  18. protected static $defineBlocks = array(
  19. 'suffix' => array()
  20. );
  21. protected function created()
  22. {
  23. $title = $this->prop('title');
  24. if(empty($title)) $title = \initPageTitle();
  25. $entityText = '';
  26. $entityID = 0;
  27. global $app;
  28. $module = $app->getModuleName();
  29. $object = data($module);
  30. if(!empty($object))
  31. {
  32. $entity = \initPageEntity($object);
  33. if(!empty($entity)) list($entityText, $entityID) = $entity;
  34. }
  35. $this->setDefaultProps(array('title' => $title, 'entityText' => $entityText, 'entityID' => $entityID));
  36. }
  37. protected function build()
  38. {
  39. list($title, $entityText, $entityID, $inModal) = $this->prop(array('title', 'entityText', 'entityID', 'inModal'));
  40. if(empty($inModal)) $inModal = false;
  41. $header = h::div
  42. (
  43. setClass('flex items-center overflow-hidden w-full'),
  44. $title ? div
  45. (
  46. $title,
  47. set::className($this->prop('titleClass'), 'whitespace-nowrap')
  48. ) : null,
  49. ($entityText || $entityID) ? entityLabel
  50. (
  51. set::level(1),
  52. setClass('pl-2 flex'),
  53. $entityText ? set::text($entityText) : null,
  54. $entityID ? set::entityID($entityID) : null,
  55. $entityID ? set::idClass('self-center') : null,
  56. set::reverse(true)
  57. ) : null,
  58. $this->block('suffix')
  59. );
  60. if(isAjaxRequest('modal') || $inModal) return $header;
  61. return h::div
  62. (
  63. set::className('modal-header panel-form rounded-md canvas mx-auto w-full'),
  64. set::style(array('margin-bottom' => '0px')),
  65. $header
  66. );
  67. }
  68. }