Welcome to mirror list, hosted at ThFree Co, Russian Federation.

PluginName.ts « PluginName « src « vue « Marketplace « plugins - github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: f3f9721af39dd321ce992f3bcb2e006601b4441c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
/*!
 * Matomo - free/libre analytics platform
 *
 * @link https://matomo.org
 * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
 */

import { DirectiveBinding } from 'vue';
import ClickEvent = JQuery.ClickEvent;

window.broadcast.addPopoverHandler('browsePluginDetail', (value) => {
  let pluginName = value;
  let activeTab = null;

  if (value.indexOf('!') !== -1) {
    activeTab = value.substr(value.indexOf('!') + 1);
    pluginName = value.substr(0, value.indexOf('!'));
  }

  let url = `module=Marketplace&action=pluginDetails&pluginName=${encodeURIComponent(pluginName)}`;
  if (activeTab) {
    url += `&activeTab=${encodeURIComponent(activeTab)}`;
  }

  window.Piwik_Popover.createPopupAndLoadUrl(url, 'details');
});

interface PluginNameDirectiveValue {
  // input
  pluginName: string;
  activePluginTab: string;

  // state
  onClickHandler?: (event: ClickEvent) => void;
}

function onClickPluginNameLink(
  binding: DirectiveBinding<PluginNameDirectiveValue>,
  event: ClickEvent,
) {
  let { pluginName } = binding.value;
  const { activePluginTab } = binding.value;

  event.preventDefault();

  if (activePluginTab) {
    pluginName += `!${activePluginTab}`;
  }

  window.broadcast.propagateNewPopoverParameter('browsePluginDetail', pluginName);
}

const { $ } = window;

export default {
  mounted(element: HTMLElement, binding: DirectiveBinding<PluginNameDirectiveValue>): void {
    const { pluginName } = binding.value;
    if (!pluginName) {
      return;
    }

    binding.value.onClickHandler = onClickPluginNameLink.bind(null, binding);
    $(element).on('click', binding.value.onClickHandler!)
      // attribute added for AnonymousPiwikUsageMeasurement
      .attr('matomo-plugin-name', pluginName);
  },
  unmounted(element: HTMLElement, binding: DirectiveBinding<PluginNameDirectiveValue>): void {
    $(element).off('click', binding.value.onClickHandler!);
  },
};