HEX
Server: Microsoft-IIS/10.0
System: Windows NT ITPWINWEBSVR22 10.0 build 20348 (Windows Server 2022) AMD64
User: www.conferencesearch.co.uk (0)
PHP: 8.3.30
Disabled: NONE
Upload Files
File: D:/web/matomo.vdk/plugins/Marketplace/vue/src/GetPremiumFeatures/GetPremiumFeatures.vue
<!--
  Matomo - free/libre analytics platform

  @link    https://matomo.org
  @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
-->

<template>
  <div class="getNewPlugins getPremiumFeatures widgetBody">
    <div
      class="row"
      v-for="(rowOfPlugins, index) in pluginRows"
      :key="index"
    >
      <div class="col s12 m12" v-if="index === 0">
        <h3 style="font-weight: bold;color: #5bb75b" v-html="$sanitize(trialHintsText)"></h3>
        <h3 style="margin-bottom: 28px;color: #5bb75b">
          {{ translate('Marketplace_SupportMatomoThankYou') }} <i class='icon-heart red-text'></i>
        </h3>
      </div>

      <div
        class="col s12 m4"
        v-for="plugin in rowOfPlugins"
        :key="plugin.name"
      >
        <h3 class="pluginName" v-plugin-name="{pluginName: plugin.name}">
          {{ plugin.displayName }}
        </h3>
        <span class="pluginSubtitle" v-if="plugin.specialOffer">
          <span>{{ translate('Marketplace_SpecialOffer') }}:</span> {{ plugin.specialOffer }}
        </span>
        <span class="pluginBody">
          {{ plugin.isBundle
            ? `${translate('Marketplace_SpecialOffer')}: `
            : '' }}{{ plugin.description }}
          <br />
          <a class="pluginMoreDetails" v-plugin-name="{pluginName: plugin.name}">
            {{ translate('General_MoreDetails') }}
          </a>
        </span>
      </div>
    </div>

    <div class="widgetBody">
      <a :href="overviewLink">
        {{ translate('CorePluginsAdmin_ViewAllMarketplacePlugins') }}
      </a>
    </div>
  </div>
</template>

<script lang="ts">
import { defineComponent } from 'vue';
import { MatomoUrl, translate, externalRawLink } from 'CoreHome';
import { PluginName } from 'CorePluginsAdmin';

export default defineComponent({
  props: {
    plugins: {
      type: Array,
      required: true,
    },
  },
  directives: {
    PluginName,
  },
  computed: {
    trialHintsText() {
      const link = externalRawLink('https://shop.matomo.org/free-trial/');
      const linkStyle = 'color:#5bb75b;text-decoration: underline;';
      return translate(
        'Marketplace_TrialHints',
        `<a style="${linkStyle}" href="${link}" target="_blank" rel="noreferrer noopener">`,
        '</a>',
      );
    },
    pluginRows() {
      // divide plugins array into rows of 3
      const result: unknown[][] = [];
      this.plugins.forEach((plugin, index) => {
        const row = Math.floor(index / 3);
        result[row] = result[row] || [];
        result[row].push(plugin);
      });
      return result;
    },
    overviewLink() {
      const query = MatomoUrl.stringify({ module: 'Marketplace', action: 'overview' });
      const hash = MatomoUrl.stringify({ pluginType: 'premium' });

      return `?${query}#?${hash}`;
    },
  },
});
</script>