You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

78 lines
2.3 KiB

  1. <?php
  2. namespace dokuwiki\Menu\Item;
  3. /**
  4. * Class ShareOn
  5. */
  6. class ShareOn extends AbstractItem
  7. {
  8. /** @inheritdoc */
  9. public function __construct()
  10. {
  11. parent::__construct();
  12. if (!in_array('social-share', explode(',', tpl_getConf('pageIcons')))) {
  13. throw new \RuntimeException("share on is not available");
  14. }
  15. unset($this->params['do']);
  16. $this->label = tpl_getLang('share_on');
  17. $this->svg = tpl_incdir() . 'images/menu/share-variant.svg';
  18. $this->id = '#';
  19. }
  20. public function getLinkAttributes($classprefix = 'menuitem dropdown-toggle ')
  21. {
  22. global $ID;
  23. $attr = parent::getLinkAttributes($classprefix);
  24. $attr['data-toggle'] = 'dropdown';
  25. $attr['data-remote'] = wl($ID);
  26. $attr['data-target'] = '#';
  27. $attr['aria-haspopup'] = 'true';
  28. $attr['aria-expanded'] = 'true';
  29. return $attr;
  30. }
  31. public function getDropDownMenu()
  32. {
  33. $enabled_providers = explode(',', tpl_getConf('socialShareProviders'));
  34. $share_providers = array(
  35. 'twitter' => array('label' => 'Twitter'),
  36. 'linkedin' => array('label' => 'LinkedIn'),
  37. 'facebook' => array('label' => 'Facebook'),
  38. 'pinterest' => array('label' => 'Pinterest'),
  39. 'telegram' => array('label' => 'Telegram'),
  40. 'whatsapp' => array('label' => 'WhatsApp'),
  41. 'yammer' => array('label' => 'Yammer'),
  42. 'reddit' => array('label' => 'Reddit'),
  43. 'microsoft-teams' => array('label' => 'Teams'),
  44. );
  45. $html = '';
  46. $html .= '<ul class="dropdown-menu">';
  47. $html .= '<li class="dropdown-header">';
  48. $html .= iconify('mdi:share-variant') . ' ' . tpl_getLang('share_on') . '...';
  49. $html .= '</li>';
  50. foreach ($share_providers as $provider => $data) {
  51. if (!in_array($provider, $enabled_providers)) {
  52. continue;
  53. }
  54. $html .= '<li><a href="#" class="share share-' . $provider . '" title="' . tpl_getLang('share_on') . ' ' . $data['label'] . '">' . iconify("mdi:$provider") . ' ' . $data['label'] . '</a></li>';
  55. }
  56. $html .= '</ul>';
  57. return $html;
  58. }
  59. }