File size: 2,245 Bytes
465d267
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
<!--
  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="ui-confirm" id="installPluginByUpload" v-plugin-upload>
    <h2>{{ translate('Marketplace_TeaserExtendPiwikByUpload') }}</h2>

    <div v-if="isPluginUploadEnabled">
      <p class="description"> {{ translate('Marketplace_AllowedUploadFormats') }} </p>

      <form
        enctype="multipart/form-data"
        method="post"
        id="uploadPluginForm"
        :action="uploadPluginAction"
      >
        <input type="file" name="pluginZip" :data-max-size="uploadLimit">
        <br />
        <Field
          uicontrol="password"
          name="confirmPassword"
          autocomplete="off"
          :title="translate('Login_ConfirmPasswordToContinue')"
          v-model="confirmPassword"
          v-auto-clear-password
        />

        <input
          class="startUpload btn"
          type="submit"
          :value="translate('Marketplace_UploadZipFile')"
        />
      </form>
    </div>
    <div v-else>
      <p
        class="description"
        v-html="$sanitize(translate('Marketplace_PluginUploadDisabled'))"
      ></p>
      <pre>[General]
  enable_plugin_upload = 1</pre>
      <input role="yes" type="button" :value="translate('General_Ok')"/>
    </div>
  </div>
</template>

<script lang="ts">
import { defineComponent } from 'vue';
import { MatomoUrl, AutoClearPassword } from 'CoreHome';
import Field from '../Field/Field.vue';
import PluginUpload from '../Plugins/PluginUpload';

interface UploadPluginDialogState {
  confirmPassword: string;
}

export default defineComponent({
  props: {
    isPluginUploadEnabled: Boolean,
    uploadLimit: [String, Number],
    installNonce: String,
  },
  components: {
    Field,
  },
  directives: {
    PluginUpload,
    AutoClearPassword,
  },
  data(): UploadPluginDialogState {
    return {
      confirmPassword: '',
    };
  },
  computed: {
    uploadPluginAction() {
      return `?${MatomoUrl.stringify({
        ...MatomoUrl.urlParsed.value,
        module: 'CorePluginsAdmin',
        action: 'uploadPlugin',
        nonce: this.installNonce,
      })}`;
    },
  },
});
</script>