Kaynağa Gözat

Ticket #4148 - Build-in API support: Share feature in Feed.

AntonLV 3 yıl önce
ebeveyn
işleme
691403dce7

+ 16 - 0
modules/boonex/timeline/classes/BxTimelineMenuItemActions.php

@@ -369,6 +369,22 @@ class BxTimelineMenuItemActions extends BxTemplMenuCustom
         return parent::_getMenuItemDefault ($aItem);
     }
 
+    protected function _getMenuItemDefaultApi ($aItem)
+    {
+        if(!empty($aItem['submenu']) && ($oSubmenu = BxDolMenu::getObjectInstance($aItem['submenu'])) !== false) {
+            $sMethod = 'setEventById';
+            if(method_exists($oSubmenu, $sMethod))
+                $oSubmenu->$sMethod($this->_iEvent);
+
+            $aItem = array_merge($aItem, [
+                'content_type' => 'submenu',
+                'submenu' => $oSubmenu->getCodeAPI()
+            ]);
+        }
+
+        return $aItem;
+    }
+
     protected function _getMenuItemElementApi($aItem, $aElement)
     {
         if(!$this->_bIsApi)

+ 50 - 5
modules/boonex/timeline/classes/BxTimelineMenuItemShare.php

@@ -31,12 +31,14 @@ class BxTimelineMenuItemShare extends BxTemplMenu
         if(bx_get('content_id') !== false)
             $iContentId = bx_process_input(bx_get('content_id'), BX_DATA_INT);
 
-        $aBrowseParams = array('name' => '', 'view' => '', 'type' => '');
-        foreach($aBrowseParams as $sKey => $sValue)
-            if(bx_get($sKey) !== false)
-                $aBrowseParams[$sKey] = $this->_oModule->_oConfig->prepareParam($sKey);
+        if(!empty($iContentId)) {
+            $aBrowseParams = array('name' => '', 'view' => '', 'type' => '');
+            foreach($aBrowseParams as $sKey => $sValue)
+                if(bx_get($sKey) !== false)
+                    $aBrowseParams[$sKey] = $this->_oModule->_oConfig->prepareParam($sKey);
 
-        $this->setEventById($iContentId, $aBrowseParams);
+            $this->setEventById($iContentId, $aBrowseParams);
+        }
     }
 
     public function setEventById($iEventId, $aBrowseParams = array())
@@ -116,6 +118,49 @@ class BxTimelineMenuItemShare extends BxTemplMenu
             $aItems = array_merge($aItems, $oSocial->getMenuItems());
         }
 
+        if($this->_bIsApi) {
+            $aItemsApi = [];
+
+            foreach($aItems as $aItem)
+                switch($aItem['name']) {
+                    case 'item-repost':
+                        $aItemsApi['item-repost'] = array_merge($aItem, [
+                        ]);
+                        break;
+
+                    /**
+                     * TODO: Update when Copy function will be added in Timeline.
+                     */
+                    case 'item-send':
+                        $aItemsApi['item-copy'] = array_merge($aItem, [
+                            'name' => 'item-copy',
+                            'title' => _t('_sys_wiki_copy'),
+                            'link' => $aMarkers['url'],
+                        ]);
+                        break;
+
+                    /**
+                     * TODO: Update when unified Share popup will be used here.
+                     */
+                    case 'social-sharing-facebook':
+                    case 'social-sharing-twitter':
+                    case 'social-sharing-pinterest':
+                    case 'social-sharing-linked_in':
+                    case 'social-sharing-whatsapp':
+                        if(isset($aItemsApi['item-share']))
+                            break;
+
+                        $aItemsApi['item-share'] = array_merge($aItem, [
+                            'name' => 'item-share',
+                            'title' => _t('_sys_menu_item_title_social_sharing'),
+                            'link' => $aMarkers['url'],
+                        ]);
+                        break;
+                }
+
+            return array_values($aItemsApi);
+        }
+
         return $aItems;
     }
 

+ 2 - 1
template/scripts/BxBaseMenu.php

@@ -188,7 +188,8 @@ class BxBaseMenu extends BxDolMenu
                 'title' => _t($a['title']),
                 'link' => isset($a['link']) ? $this->_oPermalinks->permalink($a['link']) : '',
                 'icon' => $sIcon ? $sIcon : '',
-                'image' => $sIconUrl ? $sIconUrl : ''
+                'image' => $sIconUrl ? $sIconUrl : '',
+                'submenu' => !empty($a['submenu_object']) ? $a['submenu_object'] : ''
             ];
         }
 

+ 6 - 4
template/scripts/BxBaseMenuCustom.php

@@ -84,10 +84,7 @@ class BxBaseMenuCustom extends BxTemplMenuMoreAuto
             if($aItem === false)
                 return false;
 
-            if($this->_bIsApi)
-                return $aItem;
-
-            $mixedItem = $this->_getMenuItemDefault($aItem);
+            $mixedItem = $this->{'_getMenuItemDefault' . ($this->_bIsApi ? 'Api' : '')}($aItem);
     	}
 
     	if(empty($mixedItem))
@@ -146,6 +143,11 @@ class BxBaseMenuCustom extends BxTemplMenuMoreAuto
         return $this->_oTemplate->parseHtmlByContent($this->_getTmplContentItem(), $aItem);
     }
 
+    protected function _getMenuItemDefaultApi ($aItem)
+    {
+        return $aItem;
+    }
+
     protected function _getTmplContentItem()
     {
         return $this->_sTmplContentItem;

+ 1 - 0
template/scripts/BxBaseVoteReactions.php

@@ -42,6 +42,7 @@ class BxBaseVoteReactions extends BxDolVoteReactions
         ];
         $this->_aElementDefaultsApi = array_merge($this->_aElementDefaults, [
             'show_counter' => true,
+            'show_counter_style' => self::$_sCounterStyleCompound
         ]);
 
         $this->_sTmplNameBySummary = 'vote_by_summary_reactions.html';