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/PrivacyManager/vue/src/DoNotTrackPreference/DoNotTrackPreference.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 v-form>
    <div>
      <Field
        uicontrol="radio"
        name="doNotTrack"
        v-model="enabled"
        :options="doNotTrackOptions"
        :inline-help="translate('PrivacyManager_DoNotTrack_Description')"
      >
      </Field>
    </div>
    <SaveButton
      @confirm="save()"
      :saving="isLoading"
    />
  </div>
</template>

<script lang="ts">
import { defineComponent } from 'vue';
import { translate, AjaxHelper, NotificationsStore } from 'CoreHome';
import { Form, Field, SaveButton } from 'CorePluginsAdmin';

interface DoNotTrackPreferenceState {
  isLoading: boolean;
  enabled: number|string|boolean;
}

export default defineComponent({
  props: {
    dntSupport: Boolean,
    doNotTrackOptions: {
      type: Array,
      required: true,
    },
  },
  components: {
    Field,
    SaveButton,
  },
  directives: {
    Form,
  },
  data(): DoNotTrackPreferenceState {
    return {
      isLoading: false,
      enabled: this.dntSupport ? 1 : 0,
    };
  },
  methods: {
    save() {
      this.isLoading = true;

      let action = 'deactivateDoNotTrack';
      if (this.enabled && this.enabled !== '0') {
        action = 'activateDoNotTrack';
      }

      AjaxHelper.post({
        module: 'API',
        method: `PrivacyManager.${action}`,
      }).then(() => {
        const notificationInstanceId = NotificationsStore.show({
          message: translate('CoreAdminHome_SettingsSaveSuccess'),
          context: 'success',
          id: 'privacyManagerSettings',
          type: 'transient',
        });
        NotificationsStore.scrollToNotification(notificationInstanceId);
      }).finally(() => {
        this.isLoading = false;
      });
    },
  },
});
</script>