Jelajahi Sumber

Add 'clone template' feature to the templates UI

Kailash Nadh 5 tahun lalu
induk
melakukan
818da1bb4d
2 mengubah file dengan 22 tambahan dan 2 penghapusan
  1. 1 1
      frontend/src/views/Campaigns.vue
  2. 21 1
      frontend/src/views/Templates.vue

+ 1 - 1
frontend/src/views/Campaigns.vue

@@ -153,7 +153,7 @@
                   </b-tooltip>
                   </b-tooltip>
                 </a>
                 </a>
                 <a href="" @click.prevent="$utils.prompt(`Clone campaign`,
                 <a href="" @click.prevent="$utils.prompt(`Clone campaign`,
-                        { placeholder: 'Campaign name', value: `Copy of ${props.row.name}`},
+                        { placeholder: 'Name', value: `Copy of ${props.row.name}`},
                         (name) => cloneCampaign(name, props.row))">
                         (name) => cloneCampaign(name, props.row))">
                   <b-tooltip label="Clone" type="is-dark">
                   <b-tooltip label="Clone" type="is-dark">
                     <b-icon icon="file-multiple-outline" size="is-small" />
                     <b-icon icon="file-multiple-outline" size="is-small" />

+ 21 - 1
frontend/src/views/Templates.vue

@@ -40,7 +40,14 @@
                     <b-icon icon="pencil-outline" size="is-small" />
                     <b-icon icon="pencil-outline" size="is-small" />
                   </b-tooltip>
                   </b-tooltip>
                 </a>
                 </a>
-               <a v-if="!props.row.isDefault" href="#"
+                <a href="" @click.prevent="$utils.prompt(`Clone template`,
+                        { placeholder: 'Name', value: `Copy of ${props.row.name}`},
+                        (name) => cloneTemplate(name, props.row))">
+                  <b-tooltip label="Clone" type="is-dark">
+                    <b-icon icon="file-multiple-outline" size="is-small" />
+                  </b-tooltip>
+                </a>
+                <a v-if="!props.row.isDefault" href="#"
                   @click.prevent="$utils.confirm(null, () => makeTemplateDefault(props.row))">
                   @click.prevent="$utils.confirm(null, () => makeTemplateDefault(props.row))">
                   <b-tooltip label="Make default" type="is-dark">
                   <b-tooltip label="Make default" type="is-dark">
                     <b-icon icon="check-circle-outline" size="is-small" />
                     <b-icon icon="check-circle-outline" size="is-small" />
@@ -126,6 +133,19 @@ export default Vue.extend({
       this.previewItem = null;
       this.previewItem = null;
     },
     },
 
 
+    cloneTemplate(name, t) {
+      const data = { name, body: t.body };
+      this.$api.createTemplate(data).then((d) => {
+        this.$api.getTemplates();
+        this.$emit('finished');
+        this.$buefy.toast.open({
+          message: `'${d.name}' created`,
+          type: 'is-success',
+          queue: false,
+        });
+      });
+    },
+
     makeTemplateDefault(tpl) {
     makeTemplateDefault(tpl) {
       this.$api.makeTemplateDefault(tpl.id).then(() => {
       this.$api.makeTemplateDefault(tpl.id).then(() => {
         this.$api.getTemplates();
         this.$api.getTemplates();