BxTimelineMenuFeeds.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. <?php defined('BX_DOL') or die('hack attempt');
  2. /**
  3. * Copyright (c) UNA, Inc - https://una.io
  4. * MIT License - https://opensource.org/licenses/MIT
  5. *
  6. * @defgroup Timeline Timeline
  7. * @ingroup UnaModules
  8. *
  9. * @{
  10. */
  11. class BxTimelineMenuFeeds extends BxTemplMenu
  12. {
  13. protected $_sModule;
  14. protected $_oModule;
  15. protected $_sJsObject;
  16. protected $_sStylePrefix;
  17. public function __construct($aObject, $oTemplate = false)
  18. {
  19. $this->_sModule = 'bx_timeline';
  20. $this->_oModule = BxDolModule::getInstance($this->_sModule);
  21. parent::__construct($aObject, $this->_oModule->_oTemplate);
  22. $this->_bMultilevel = true;
  23. $this->_bDisplayAddons = true;
  24. }
  25. public function setBrowseParams($aParams = [])
  26. {
  27. $this->_sJsObject = $this->_oModule->_oConfig->getJsObjectView($aParams);
  28. $this->_sStylePrefix = $this->_oModule->_oConfig->getPrefix('style');
  29. $aMarkers = array();
  30. foreach($aParams as $sKey => $mixedValue)
  31. if(!is_array($mixedValue))
  32. $aMarkers[$sKey] = $mixedValue;
  33. $aMarkers['js_object_view'] = $this->_sJsObject;
  34. $this->addMarkers($aMarkers);
  35. }
  36. protected function getMenuItemsRaw()
  37. {
  38. $aMenuItems = parent::getMenuItemsRaw();
  39. if(empty($aMenuItems) || !is_array($aMenuItems))
  40. return $aMenuItems;
  41. $iProfile = bx_get_logged_profile_id();
  42. $oConnection = BxDolConnection::getObjectInstance('sys_profiles_subscriptions');
  43. $sOnClickMask = "return " . $this->_sJsObject. ".changeFeed(this, '%s', {context: %d})";
  44. foreach($aMenuItems as $iIndex => $aItem) {
  45. $aIds = $oConnection->getConnectedContentByType($iProfile, array($aItem['module']));
  46. if(empty($aItem['onclick']))
  47. $aMenuItems[$iIndex]['onclick'] = $this->_sJsObject . '.toggleMenuItemFeeds(this)';
  48. $aSubmenu = array();
  49. foreach($aIds as $iId) {
  50. $oContext = BxDolProfile::getInstance($iId);
  51. if(!$oContext)
  52. continue;
  53. $aSubmenu[] = array(
  54. 'id' => 'context-' . $iId,
  55. 'name' => 'context-' . $iId,
  56. 'class' => '',
  57. 'link' => $oContext->getUrl(),
  58. 'onclick' => sprintf($sOnClickMask, $aItem['module'], $iId),
  59. 'target' => '_self',
  60. 'title' => $oContext->getDisplayName(),
  61. 'icon' => $oContext->getIcon(),
  62. 'active' => 1
  63. );
  64. }
  65. if(!empty($aSubmenu))
  66. $aMenuItems[$iIndex]['subitems'] = $aSubmenu;
  67. }
  68. return $aMenuItems;
  69. }
  70. protected function _getTemplateVars ()
  71. {
  72. $aResult = parent::_getTemplateVars();
  73. $aResult['style_prefix'] = $this->_sStylePrefix;
  74. return $aResult;
  75. }
  76. protected function _getMenuItem ($a)
  77. {
  78. if($a['name'] == 'divider')
  79. return $this->_oModule->_oTemplate->parseHtmlByName('menu_item_divider.html', []);
  80. $aResult = parent::_getMenuItem($a);
  81. $aResult = array_merge($aResult, [
  82. 'js_object' => $this->_sJsObject,
  83. 'style_prefix' => $this->_sStylePrefix,
  84. 'bx_if:show_toggle' => [
  85. 'condition' => $this->_bMultilevel && !empty($a['subitems']),
  86. 'content' => [
  87. 'js_object' => $this->_sJsObject,
  88. 'style_prefix' => $this->_sStylePrefix,
  89. ]
  90. ]
  91. ]);
  92. return $aResult;
  93. }
  94. }
  95. /** @} */