BxBaseMenuWiki.php 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  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 UnaBaseView UNA Base Representation Classes
  7. * @{
  8. */
  9. /**
  10. * Wiki block menu
  11. */
  12. class BxBaseMenuWiki extends BxTemplMenu
  13. {
  14. protected $_oWikiObject;
  15. protected $_iBlockId;
  16. public function __construct ($aObject, $oTemplate)
  17. {
  18. parent::__construct ($aObject, $oTemplate);
  19. if(($sObject = bx_get('wiki_obj')) !== false)
  20. $this->setParams($sObject, bx_get('block_id'));
  21. }
  22. public function setParams($sObject, $iBlockId)
  23. {
  24. $oObject = BxDolWiki::getObjectInstance($sObject);
  25. if(!$oObject)
  26. return;
  27. $this->_oWikiObject = $oObject;
  28. $this->_iBlockId = (int)$iBlockId;
  29. }
  30. public function getCode ()
  31. {
  32. $s = parent::getCode ();
  33. $s .= '<script>window.glBxDolWiki' . $this->_iBlockId . '.bindEvents();</script>';
  34. return $s;
  35. }
  36. protected function _getMenuItemEditImage($aItem)
  37. {
  38. $CNF = &$this->_oModule->_oConfig->CNF;
  39. $aResult = $this->_getMenuItemByNameActions($aItem, [
  40. 'object_menu' => $CNF['OBJECT_MENU_ACTIONS_VIEW_MEDIA']
  41. ]);
  42. if($this->_bIsApi) {
  43. $aResult = array_merge($aResult, [
  44. 'link' => BxDolPermalinks::getInstance()->permalink('page.php?i=' . $CNF['URI_EDIT_MEDIA'] . '&id=' . $this->_iMediaId),
  45. ]);
  46. unset($aResult['display_type'], $aResult['data']);
  47. }
  48. return $aResult;
  49. }
  50. protected function _getMenuItemAPI($a)
  51. {
  52. $aResult = parent::_getMenuItemAPI($a);
  53. $sUri = $this->_oWikiObject->getUri();
  54. $aAdd = [];
  55. switch($a['name']) {
  56. case 'edit':
  57. $aAdd = [
  58. 'display_type' => 'modal',
  59. 'data' => [
  60. 'request_url' => 'system/wiki_action/TemplServiceWiki&params[]=' . $sUri . '&params[]=edit&params[]=' . $this->_iBlockId,
  61. ]
  62. ];
  63. break;
  64. case 'delete-version':
  65. $aAdd = [
  66. 'display_type' => 'modal',
  67. 'data' => [
  68. 'request_url' => 'system/wiki_action/TemplServiceWiki&params[]=' . $sUri . '&params[]=delete-version&params[]=' . $this->_iBlockId,
  69. ]
  70. ];
  71. break;
  72. case 'delete-block':
  73. $aAdd = [
  74. 'display_type' => 'callback',
  75. 'data' => [
  76. 'request_url' => 'system/wiki_action/TemplServiceWiki&params[]=' . $sUri . '&params[]=delete-block&params[]=' . $this->_iBlockId,
  77. 'on_callback' => 'hide'
  78. ]
  79. ];
  80. break;
  81. case 'translate':
  82. $aAdd = [
  83. 'display_type' => 'modal',
  84. 'data' => [
  85. 'request_url' => 'system/wiki_action/TemplServiceWiki&params[]=' . $sUri . '&params[]=translate&params[]=' . $this->_iBlockId,
  86. ]
  87. ];
  88. break;
  89. case 'history':
  90. $aAdd = [
  91. 'display_type' => 'modal',
  92. 'data' => [
  93. 'request_url' => 'system/wiki_action/TemplServiceWiki&params[]=' . $sUri . '&params[]=history&params[]=' . $this->_iBlockId,
  94. ]
  95. ];
  96. break;
  97. }
  98. if($aAdd)
  99. $aResult = array_merge($aResult, $aAdd);
  100. return $aResult;
  101. }
  102. /**
  103. * Check if menu items is visible with extended checking for friends notifications
  104. * @param $a menu item array
  105. * @return boolean
  106. */
  107. protected function _isVisible ($a)
  108. {
  109. if(!$this->_oWikiObject || !parent::_isVisible($a))
  110. return false;
  111. return $this->_oWikiObject->isAllowed($a['name']);
  112. }
  113. }
  114. /** @} */