| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 | <template lang='pug'>  v-container(fluid, grid-list-lg)    v-layout(row wrap)      v-flex(xs12)        .admin-header          img.animated.fadeInUp(src='/_assets/svg/icon-installing-updates.svg', alt='Extensions', style='width: 80px;')          .admin-header-title            .headline.primary--text.animated.fadeInLeft {{ $t('admin:extensions.title') }}            .subtitle-1.grey--text.animated.fadeInLeft {{ $t('admin:extensions.subtitle') }}        v-form.pt-3          v-layout(row wrap)            v-flex(xl6 lg8 xs12)              v-alert.mb-4(outlined, color='error', icon='mdi-alert')                span New extensions cannot be installed at the moment. This feature is coming in a future release.              v-expansion-panels.admin-extensions-exp(hover, popout)                v-expansion-panel(v-for='ext of extensions', :key='`ext-` + ext.key')                  v-expansion-panel-header(disable-icon-rotate)                    span {{ext.title}}                    template(v-slot:actions)                      v-chip(label, color='success', small, v-if='ext.isInstalled') Installed                      v-chip(label, color='warning', small, v-else) Not Installed                  v-expansion-panel-content.pa-0                    v-card(flat, :class='$vuetify.theme.dark ? `grey darken-3` : `grey lighten-5`', tile)                      v-card-text                        .body-2 {{ext.description}}                        v-divider.my-4                        .body-2                          strong.mr-2 This extension is                          v-chip.mr-2(v-if='ext.isCompatible', label, outlined, small, color='success') compatible                          v-chip.mr-2(v-else, label, small, color='error') not compatible                          strong with your host.                      v-card-chin                        v-spacer                        v-btn(disabled)                          v-icon(left) mdi-plus                          span Install</template><script>import _ from 'lodash'import gql from 'graphql-tag'export default {  data() {    return {      extensions: []    }  },  methods: {    async save () {      // try {      //   await this.$apollo.mutate({      //     mutation: gql`      //       mutation (      //         $host: String!      //       ) {      //         site {      //           updateConfig(      //             host: $host      //           ) {      //             responseResult {      //               succeeded      //               errorCode      //               slug      //               message      //             }      //           }      //         }      //       }      //     `,      //     variables: {      //       host: _.get(this.config, 'host', '')      //     },      //     watchLoading (isLoading) {      //       this.$store.commit(`loading${isLoading ? 'Start' : 'Stop'}`, 'admin-extensions-update')      //     }      //   })      //   this.$store.commit('showNotification', {      //     style: 'success',      //     message: 'Configuration saved successfully.',      //     icon: 'check'      //   })      // } catch (err) {      //   this.$store.commit('pushGraphError', err)      // }    }  },  apollo: {    extensions: {      query: gql`        {          system {            extensions {              key              title              description              isInstalled              isCompatible            }          }        }      `,      fetchPolicy: 'network-only',      update: (data) => _.cloneDeep(data.system.extensions),      watchLoading (isLoading) {        this.$store.commit(`loading${isLoading ? 'Start' : 'Stop'}`, 'admin-extensions-refresh')      }    }  }}</script><style lang='scss'>.admin-extensions-exp {  .v-expansion-panel-content__wrap {    padding: 0;  }}</style>
 |