ajaxgetdropmenu.html.php 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. <?php
  2. /**
  3. * The ajaxGetDropmenu view file of message module of ZenTaoPMS.
  4. *
  5. * @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
  6. * @license ZPL (http://zpl.pub/page/zplv12.html)
  7. * @author Yidong Wang <yidong@cnezsoft.com>
  8. * @package message
  9. * @version $Id$
  10. * @link http://www.zentao.net
  11. */
  12. namespace zin;
  13. $noDataHtml = "<div class='text-gray text-center nodata'>{$lang->noData}</div>";
  14. jsVar('unreadLangTempate', $lang->message->unread);
  15. jsVar('noDataHtml', $noDataHtml);
  16. jsVar('showCount', $config->message->browser->count);
  17. jsVar('unreadContextMenu', array(array('text' => $lang->delete, 'value' => 'delete')));
  18. jsVar('readContextMenu', array(array('text' => $lang->delete, 'value' => 'delete'), array('text' => $lang->message->markUnread, 'value' => 'markunread')));
  19. $buildMessageList = function($messageGroup) use ($lang)
  20. {
  21. if(empty($messageGroup)) return div(setClass('text-gray text-center nodata'), $lang->noData);
  22. $dateList = array();
  23. foreach($messageGroup as $date => $messages)
  24. {
  25. $itemList = array();
  26. foreach($messages as $message)
  27. {
  28. $isUnread = $message->status != 'read';
  29. $dotColor = $isUnread ? 'danger' : 'gray';
  30. $itemList[] = h::li
  31. (
  32. setClass('message-item break-all border rounded-lg p-2 mt-2' . ($isUnread ? ' unread' : '')),
  33. setData('msgid', $message->id),
  34. row
  35. (
  36. setClass('text-gray justify-between'),
  37. cell(label(setClass("label-dot {$dotColor} mr-2")), $lang->message->browser),
  38. cell($message->showTime, icon(setClass('ml-2 cursor-pointer delete-message-btn'), 'close'))
  39. ),
  40. div(setClass('pt-1'), html($message->data))
  41. );
  42. }
  43. $dateList[] = h::li(setClass('message-date mt-2'), $date, h::ul(setClass('list-unstyled'), $itemList));
  44. }
  45. return h::ul(setClass('list-unstyled'), $dateList);
  46. };
  47. $browserSetting = $config->message->browser;
  48. $isEn = $app->getClientLang() == 'en';
  49. $enLabelWidth = $isEn ? set::labelWidth('130px') : null;
  50. $menuWidth = $isEn ? 'w-72' : 'w-52';
  51. $menuLeft = $isEn ? '-250px' : '-170px';
  52. tabs
  53. (
  54. setID('messageTabs'),
  55. setClass('text-black pt-2.5 px-5 pb-5 relative'),
  56. set::style(array('width' => '400px', 'background-color' => '#fff')),
  57. on::click('.delete-message-btn', 'deleteMessage(e.target)'),
  58. on::click('.message-item', 'markRead(e.target)'),
  59. on::click('.clearRead', 'clearRead'),
  60. on::click('.allMarkRead', 'markAllRead'),
  61. div
  62. (
  63. setClass('absolute top-3 right-5'),
  64. set::style(array('z-index' => '100')),
  65. btn(set::size('sm'), setClass('ghost allMarkRead'), set::hint($lang->message->notice->allMarkRead), icon('clear')),
  66. btn(set::size('sm'), setClass('ghost clearRead'), set::hint($lang->message->notice->clearRead), icon('trash')),
  67. span
  68. (
  69. setClass('messageSettingBox relative'),
  70. btn(set::icon('cog-outline'), setID('messageSettingDropdown-toggle'), set::hint($lang->message->browserSetting->more), setClass('ghost'), set::caret(false), setData(array('on' => 'click', 'call' => 'toggleSettingDropdown'))),
  71. menu
  72. (
  73. setClass('dropdown-menu absolute popup in ' . $menuWidth),
  74. setID('messageSettingDropdown'),
  75. setStyle(array('left' => $menuLeft, 'top' => '25px')),
  76. form
  77. (
  78. setClass('gap-1'),
  79. set::url(inlink('ajaxSetOneself')),
  80. set::actions(false),
  81. $enLabelWidth,
  82. formRow(setClass('font-bold border-b pb-2 pl-2 pt-2'), $lang->message->browserSetting->more),
  83. formGroup(setStyle(array('align-items' => 'center')), set::label($lang->message->browserSetting->show), switcher(set::name('show'), set::value(1), set::checked($browserSetting->show))),
  84. formGroup(setStyle(array('align-items' => 'center')), set::label($lang->message->browserSetting->count), switcher(set::name('count'), set::value(1), set::checked($browserSetting->count))),
  85. formGroup
  86. (
  87. set::width('5/6'),
  88. set::label($lang->message->browserSetting->maxDays),
  89. inputControl(input(set::name('maxDays'), set::value($browserSetting->maxDays)), set::suffixWidth('30'), set::suffix($lang->day))
  90. ),
  91. formGroup
  92. (
  93. setClass('justify-center form-actions mt-2'),
  94. btn(set::text($lang->save), setStyle(array('min-width' => '20px')), setClass('primary size-sm'), set::btnType('submit')),
  95. btn(set::text($lang->cancel), setStyle(array('min-width' => '20px')), setClass('size-sm'), set::type('button'), on::click('closeSettingDropdown'))
  96. )
  97. )
  98. )
  99. )
  100. ),
  101. tabPane
  102. (
  103. set::key('unread-messages'),
  104. set::title(sprintf($lang->message->unread, $unreadCount)),
  105. set::active($active == 'unread'),
  106. $buildMessageList($unreadMessages)
  107. ),
  108. tabPane
  109. (
  110. set::key('all-messages'),
  111. set::title($lang->message->all),
  112. set::active($active == 'all'),
  113. $buildMessageList($allMessages)
  114. )
  115. );