generic-skin 3.3.6 → 3.3.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/apps/vueMulti.js CHANGED
@@ -60,7 +60,7 @@ Vue.component('modal-multicuentas', {
60
60
  }
61
61
  },
62
62
  template: `
63
- <modal-foro :data-title="modalTitle" v-on:modal-close="modalClose()">
63
+ <modal-foro :data-title="modalTitle" @modal-close="modalClose()">
64
64
  <template slot="content">
65
65
  <aviso-foro v-show="oneCheck.length">
66
66
  <ul v-html="oneCheck"></ul>
@@ -75,7 +75,7 @@ Vue.component('modal-multicuentas', {
75
75
  <campo-foro data-name="Contraseña">
76
76
  <div class="character-selector">
77
77
  <input :type="content.edit.type" v-model="content.edit.password" placeholder="Escribe la contraseña de la cuenta." />
78
- <a class="character-custom" v-on:click="content.edit.type === 'text' ? content.edit.type = 'password' : content.edit.type = 'text'" title="Cambiar modo">
78
+ <a class="character-custom" @click="content.edit.type === 'text' ? content.edit.type = 'password' : content.edit.type = 'text'" title="Cambiar modo">
79
79
  <template v-if="content.edit.type === 'text'">
80
80
  <i class="fas fa-eye-slash"></i>
81
81
  </template>
@@ -90,7 +90,7 @@ Vue.component('modal-multicuentas', {
90
90
  </template>
91
91
  <template slot="controls">
92
92
  <controles-modal v-if="!oneCheck.length && finalCheck">
93
- <button class="button1 btn-main" v-on:click="pushElement()" title="Guardar entrada">Guardar</button>
93
+ <button class="button1 btn-main" @click="pushElement()" title="Guardar entrada">Guardar</button>
94
94
  </controles-modal>
95
95
  </template>
96
96
  </modal-foro>
@@ -323,7 +323,7 @@ Vue.component('gestor-multicuentas', {
323
323
  <campo-foro data-name="Contraseña maestra">
324
324
  <div class="character-selector">
325
325
  <input :type="content.password.type" v-model="content.password.value" />
326
- <a class="character-custom" v-on:click="content.password.type === 'text' ? content.password.type = 'password' : content.password.type = 'text'" title="Cambiar modo">
326
+ <a class="character-custom" @click="content.password.type === 'text' ? content.password.type = 'password' : content.password.type = 'text'" title="Cambiar modo">
327
327
  <template v-if="content.password.type === 'text'">
328
328
  <i class="fas fa-eye-slash"></i>
329
329
  </template>
@@ -336,28 +336,28 @@ Vue.component('gestor-multicuentas', {
336
336
  </li>
337
337
  </ul>
338
338
  <div id="usereply-comand" v-if="!msgCheck.length">
339
- <button class="button1 btn-main" v-on:click="setData()">Guardar</button>
339
+ <button class="button1 btn-main" @click="setData()">Guardar</button>
340
340
  </div>
341
341
  </template>
342
342
  <template v-else-if="state.page === 2">
343
343
  <modal-multicuentas v-if="modal.status" :data-type="modal.type" :data-element="entry"></modal-multicuentas>
344
- <modal-foro v-if="modal.bonus" data-title="Atención" v-on:modal-close="modalClose()">
344
+ <modal-foro v-if="modal.bonus" data-title="Atención" @modal-close="modalClose()">
345
345
  <template slot="content">
346
346
  <p>Hemos detectado que tienes dos versiones de tu base de datos de cuentas asociadas diferentes. Por favor, elige o actualizar la del dispositivo o la del foro.</p>
347
347
  </template>
348
348
  <template slot="controls">
349
349
  <controles-modal>
350
- <button class="button1 btn-main" v-on:click="updateForum()" title="Actualizar versión foro">Actualizar foro</button>
351
- <button class="button1" v-on:click="updateLocal()" title="Actualizar versión local">Actualizar local</button>
350
+ <button class="button1 btn-main" @click="updateForum()" title="Actualizar versión foro">Actualizar foro</button>
351
+ <button class="button1" @click="updateLocal()" title="Actualizar versión local">Actualizar local</button>
352
352
  </controles-modal>
353
353
  </template>
354
354
  </modal-foro>
355
355
  <mando-foro data-id="upper-controls" data-app="true">
356
356
  <template slot="controls">
357
- <li v-on:click="addEntry($event)">
357
+ <li @click="addEntry($event)">
358
358
  <boton-foro data-url="#" data-name="Añadir" data-icon="fas fa-plus"></boton-foro>
359
359
  </li>
360
- <li v-if="finalCheck" v-on:click="save($event)">
360
+ <li v-if="finalCheck" @click="save($event)">
361
361
  <boton-foro data-url="#" data-name="Guardar" data-icon="fas fa-save" data-type="no-name"></boton-foro>
362
362
  </li>
363
363
  </template>
@@ -374,10 +374,10 @@ Vue.component('gestor-multicuentas', {
374
374
  </ul>
375
375
  <mando-foro data-id="lower-controls" data-app="true">
376
376
  <template slot="controls">
377
- <li v-on:click="addEntry($event)">
377
+ <li @click="addEntry($event)">
378
378
  <boton-foro data-url="#" data-name="Añadir" data-icon="fas fa-plus"></boton-foro>
379
379
  </li>
380
- <li v-if="finalCheck" v-on:click="save($event)">
380
+ <li v-if="finalCheck" @click="save($event)">
381
381
  <boton-foro data-url="#" data-name="Guardar" data-icon="fas fa-save" data-type="no-name"></boton-foro>
382
382
  </li>
383
383
  </template>
@@ -415,7 +415,7 @@ Vue.component('elemento-multicuentas', {
415
415
  <div class="character-selector">
416
416
  <input :type="content.type" v-model="content.password" disabled/>
417
417
  <span class="character-custom rp-controls">
418
- <span v-on:click="editElement()" title="Editar entrada">Editar</span> / <span v-on:click="deleteElement()" title="Eliminar entrada">Eliminar</span>
418
+ <span @click="editElement()" title="Editar entrada">Editar</span> / <span @click="deleteElement()" title="Eliminar entrada">Eliminar</span>
419
419
  </span>
420
420
  </div>
421
421
  </campo-foro>
@@ -1 +1 @@
1
- Vue.component("modal-multicuentas", { props: ["dataElement", "dataType"], data() { return { state: { modal: !1 }, content: { edit: JSON.parse(JSON.stringify(this.dataElement)), current: this.dataElement } } }, computed: { modalTitle() { return "new" === this.dataType ? "Nuevo usuario" : "edit" === this.dataType ? "Editar usuario" : void 0 }, oneCheck() { let t = ""; return this.content.edit.name.length < 4 && (t += "<li>Escribe el nombre de la cuenta.</li>"), this.content.edit.password.length < 4 && (t += "<li>Escribe la contraseña de la cuenta.</li>"), t }, finalCheck() { return JSON.stringify(this.content.current) !== JSON.stringify(this.content.edit) } }, methods: { modalClose() { this.$parent.modal.type = "new", this.$parent.modal.status = !1, this.$parent.setEntry(), this.$parent.forceRerender() }, pushElement() { if ("edit" === this.$parent.modal.type) { let t = this.$parent.content.accounts.edit.map(t => t.id).indexOf(this.content.current.id); this.$parent.content.accounts.edit.splice(t, 1) } this.$parent.content.accounts.edit.push({ name: this.content.edit.name, type: "password", id: FNR.utility.genSlug(this.content.edit.name), password: this.content.edit.password }), this.modalClose() } }, template: '\n <modal-foro :data-title="modalTitle" v-on:modal-close="modalClose()">\n <template slot="content">\n <aviso-foro v-show="oneCheck.length">\n <ul v-html="oneCheck"></ul>\n </aviso-foro>\n <ul class="forum-fieldlist no-style">\n <li>\n <campo-foro data-name="Nombre">\n <input type="text" v-model="content.edit.name" placeholder="Escribe el nombre de la cuenta." />\n </campo-foro>\n </li>\n <li>\n <campo-foro data-name="Contraseña">\n <div class="character-selector">\n <input :type="content.edit.type" v-model="content.edit.password" placeholder="Escribe la contraseña de la cuenta." />\n <a class="character-custom" v-on:click="content.edit.type === \'text\' ? content.edit.type = \'password\' : content.edit.type = \'text\'" title="Cambiar modo">\n <template v-if="content.edit.type === \'text\'">\n <i class="fas fa-eye-slash"></i>\n </template>\n <template v-else-if="content.edit.type === \'password\'">\n <i class="fas fa-eye"></i>\n </template>\n </a>\n </div>\n </campo-foro>\n </li>\n </ul>\n </template>\n <template slot="controls">\n <controles-modal v-if="!oneCheck.length && finalCheck">\n <button class="button1 btn-main" v-on:click="pushElement()" title="Guardar entrada">Guardar</button>\n </controles-modal>\n </template>\n </modal-foro>\n ' }), Vue.component("gestor-multicuentas", { data() { return { render: 0, modal: { type: "new", status: !1, bonus: !1 }, state: { new: !1, error: !1, page: 0, pagination: 0 }, entry: {}, content: { encrypted: {}, password: { type: "password", value: "" }, accounts: { current: [], edit: [] } } } }, computed: { msgCheck() { let t = ""; return this.content.password.value.length < 5 && (t += "<li>Escribe la contraseña maestra.</li>"), t }, finalCheck() { return JSON.stringify(this.content.accounts.current) !== JSON.stringify(this.content.accounts.edit) }, sortedCharacters() { return this.content.accounts.edit.sort((t, e) => t.name < e.name ? -1 : t.name > e.name ? 1 : 0) } }, methods: { modalClose() { this.state.page = 3, setTimeout(() => { window.location.reload() }, 2500) }, forceRerender() { this.render += 1 }, setEntry() { this.entry = { name: "", id: "", type: "password", password: "" } }, addEntry: function (t) { t.preventDefault(), this.modal.status = !0 }, save: function (t) { t.preventDefault(), this.updateData() }, updateLocal() { this.updateData() }, updateForum() { this.content.accounts.edit = FNR.cache.getData("usermultiaccounts").map(t => ({ name: t.name, password: sjcl.decrypt(this.content.password.value, t.password) })), this.updateData() }, setData() { this.state.page = 3, FNR.cache.setData("userpassword", this.content.password.value, -1), setTimeout(() => { window.location.reload() }, 2500) }, updateData() { this.state.page = 3; const t = this.content.accounts.edit.map(t => ({ name: t.name, password: sjcl.encrypt(this.content.password.value, t.password) })); FNR.cache.setData("userpassword", this.content.password.value, -1), FNR.cache.setData("usermultiaccounts", t, -1), FNR.user.profile.setData([{ name: forumConfig.profileUser.accountsField, type: "textarea", value: JSON.stringify([{ password: this.state.new ? sjcl.encrypt(this.content.password.value, "gaylien_masterpass") : this.content.encrypted.password, accounts: t }]).replace(/"/g, "`") }]).then(t => { t ? (FNR.html.genNotification("Atención", "Información actualizada sin inconvenientes.", "fas fa-check"), setTimeout(() => { window.location.reload() }, 2500)) : FNR.html.genNotification("Atención", "Hubo un problema al actualizar. Dale otro intento.", "fas fa-exclamation") }) } }, created() { FNR.user.profile.getData([{ name: forumConfig.profileUser.accountsField, type: "textarea" }]).then(t => { if (this.content.encrypted = FNR.utility.genArray(t[0].value)[0], this.state.new = 0 === Object.keys(this.content.encrypted).length, FNR.cache.getData("userpassword")) try { sjcl.decrypt(FNR.cache.getData("userpassword"), this.content.encrypted.password) } catch (t) { "ccm: tag doesn't match" === t.message && (this.state.error = !0, FNR.cache.delData("userpassword"), setTimeout(() => { window.location.reload() }, 2500)) } finally { if (!this.state.error) if (this.state.new && FNR.cache.getData("usermultiaccounts").length > 0) this.state.page = 3, FNR.user.profile.setData([{ name: forumConfig.profileUser.accountsField, type: "textarea", value: JSON.stringify([{ password: sjcl.encrypt(FNR.cache.getData("userpassword"), "gaylien_masterpass"), accounts: FNR.cache.getData("usermultiaccounts") }]).replace(/"/g, "`") }]).then(t => { t ? (FNR.html.genNotification("Atención", "Información actualizada sin inconvenientes.", "fas fa-check"), setTimeout(() => { window.location.reload() }, 2500)) : FNR.html.genNotification("Atención", "Hubo un problema al actualizar. Dale otro intento.", "fas fa-exclamation") }); else { let t = []; this.content.password.value = FNR.cache.getData("userpassword"), this.state.new || (t = JSON.parse(JSON.stringify(this.content.encrypted)).accounts.map(t => ({ name: t.name, type: "password", id: FNR.utility.genSlug(t.name), password: sjcl.decrypt(this.content.password.value, t.password) }))), this.setEntry(), this.content.accounts.edit = t, this.content.accounts.current = JSON.parse(JSON.stringify(t)), this.state.page = 2, this.state.new || JSON.stringify(FNR.cache.getData("usermultiaccounts")) === JSON.stringify(this.content.encrypted.accounts) || (this.modal.bonus = !0) } } else this.state.page = 1 }) }, template: '\n <section id="forum-multiaccount" class="wiki-content is-dramatic">\n <div class="is-content">\n <h2>Multicuentas</h2>\n <hr />\n <p>En esta página podrás configurar tu cambio de cuenta rápido. Experimenta con su funcionamiento, es bastante intuitivo.</p>\n </div>\n <separador-foro />\n <template v-if="state.page === 0">\n <cargando-foro data-text="Cargando utilidad…"></cargando-foro>\n </template>\n <template v-else-if="state.page === 1">\n <aviso-foro v-show="msgCheck.length">\n <ul v-html="msgCheck"></ul>\n </aviso-foro>\n <ul class="forum-fieldlist no-style">\n <li>\n <campo-foro data-name="Contraseña maestra">\n <div class="character-selector">\n <input :type="content.password.type" v-model="content.password.value" />\n <a class="character-custom" v-on:click="content.password.type === \'text\' ? content.password.type = \'password\' : content.password.type = \'text\'" title="Cambiar modo">\n <template v-if="content.password.type === \'text\'">\n <i class="fas fa-eye-slash"></i>\n </template>\n <template v-else-if="content.password.type === \'password\'">\n <i class="fas fa-eye"></i>\n </template>\n </a>\n </div>\n </campo-foro>\n </li>\n </ul>\n <div id="usereply-comand" v-if="!msgCheck.length">\n <button class="button1 btn-main" v-on:click="setData()">Guardar</button>\n </div>\n </template>\n <template v-else-if="state.page === 2">\n <modal-multicuentas v-if="modal.status" :data-type="modal.type" :data-element="entry"></modal-multicuentas>\n <modal-foro v-if="modal.bonus" data-title="Atención" v-on:modal-close="modalClose()">\n <template slot="content">\n <p>Hemos detectado que tienes dos versiones de tu base de datos de cuentas asociadas diferentes. Por favor, elige o actualizar la del dispositivo o la del foro.</p>\n </template>\n <template slot="controls">\n <controles-modal>\n <button class="button1 btn-main" v-on:click="updateForum()" title="Actualizar versión foro">Actualizar foro</button>\n <button class="button1" v-on:click="updateLocal()" title="Actualizar versión local">Actualizar local</button>\n </controles-modal>\n </template>\n </modal-foro>\n <mando-foro data-id="upper-controls" data-app="true">\n <template slot="controls">\n <li v-on:click="addEntry($event)">\n <boton-foro data-url="#" data-name="Añadir" data-icon="fas fa-plus"></boton-foro>\n </li>\n <li v-if="finalCheck" v-on:click="save($event)">\n <boton-foro data-url="#" data-name="Guardar" data-icon="fas fa-save" data-type="no-name"></boton-foro>\n </li>\n </template>\n </mando-foro>\n <ul class="no-style" :key="render">\n <template v-if="!sortedCharacters.length">\n <li class="is-not-lastpost not-status">\n <h6>No hay cuentas configuradas</h6>\n </li>\n </template>\n <template v-else v-for="(item, index) in sortedCharacters">\n <elemento-multicuentas :data-element="item" :data-id="index" :key="index"></elemento-multicuentas>\n </template>\n </ul>\n <mando-foro data-id="lower-controls" data-app="true">\n <template slot="controls">\n <li v-on:click="addEntry($event)">\n <boton-foro data-url="#" data-name="Añadir" data-icon="fas fa-plus"></boton-foro>\n </li>\n <li v-if="finalCheck" v-on:click="save($event)">\n <boton-foro data-url="#" data-name="Guardar" data-icon="fas fa-save" data-type="no-name"></boton-foro>\n </li>\n </template>\n </mando-foro>\n </template>\n <template v-else-if="state.page === 3">\n <cargando-foro data-text="Actualizando información…"></cargando-foro>\n </template>\n </section>\n ' }), Vue.component("elemento-multicuentas", { props: ["dataElement", "dataId"], data() { return { content: this.dataElement } }, methods: { deleteElement() { this.$parent.content.accounts.edit.splice(this.dataId, 1), this.$parent.forceRerender() }, editElement() { this.$parent.modal.type = "edit", this.$parent.entry = this.content, this.$parent.modal.status = !0 } }, template: '\n <li>\n <campo-foro :data-name="content.name">\n <div class="character-selector">\n <input :type="content.type" v-model="content.password" disabled/>\n <span class="character-custom rp-controls">\n <span v-on:click="editElement()" title="Editar entrada">Editar</span> / <span v-on:click="deleteElement()" title="Eliminar entrada">Eliminar</span>\n </span>\n </div>\n </campo-foro>\n </li>\n ' });
1
+ Vue.component("modal-multicuentas", { props: ["dataElement", "dataType"], data() { return { state: { modal: !1 }, content: { edit: JSON.parse(JSON.stringify(this.dataElement)), current: this.dataElement } } }, computed: { modalTitle() { return "new" === this.dataType ? "Nuevo usuario" : "edit" === this.dataType ? "Editar usuario" : void 0 }, oneCheck() { let t = ""; return this.content.edit.name.length < 4 && (t += "<li>Escribe el nombre de la cuenta.</li>"), this.content.edit.password.length < 4 && (t += "<li>Escribe la contraseña de la cuenta.</li>"), t }, finalCheck() { return JSON.stringify(this.content.current) !== JSON.stringify(this.content.edit) } }, methods: { modalClose() { this.$parent.modal.type = "new", this.$parent.modal.status = !1, this.$parent.setEntry(), this.$parent.forceRerender() }, pushElement() { if ("edit" === this.$parent.modal.type) { let t = this.$parent.content.accounts.edit.map(t => t.id).indexOf(this.content.current.id); this.$parent.content.accounts.edit.splice(t, 1) } this.$parent.content.accounts.edit.push({ name: this.content.edit.name, type: "password", id: FNR.utility.genSlug(this.content.edit.name), password: this.content.edit.password }), this.modalClose() } }, template: '\n <modal-foro :data-title="modalTitle" @modal-close="modalClose()">\n <template slot="content">\n <aviso-foro v-show="oneCheck.length">\n <ul v-html="oneCheck"></ul>\n </aviso-foro>\n <ul class="forum-fieldlist no-style">\n <li>\n <campo-foro data-name="Nombre">\n <input type="text" v-model="content.edit.name" placeholder="Escribe el nombre de la cuenta." />\n </campo-foro>\n </li>\n <li>\n <campo-foro data-name="Contraseña">\n <div class="character-selector">\n <input :type="content.edit.type" v-model="content.edit.password" placeholder="Escribe la contraseña de la cuenta." />\n <a class="character-custom" @click="content.edit.type === \'text\' ? content.edit.type = \'password\' : content.edit.type = \'text\'" title="Cambiar modo">\n <template v-if="content.edit.type === \'text\'">\n <i class="fas fa-eye-slash"></i>\n </template>\n <template v-else-if="content.edit.type === \'password\'">\n <i class="fas fa-eye"></i>\n </template>\n </a>\n </div>\n </campo-foro>\n </li>\n </ul>\n </template>\n <template slot="controls">\n <controles-modal v-if="!oneCheck.length && finalCheck">\n <button class="button1 btn-main" @click="pushElement()" title="Guardar entrada">Guardar</button>\n </controles-modal>\n </template>\n </modal-foro>\n ' }), Vue.component("gestor-multicuentas", { data() { return { render: 0, modal: { type: "new", status: !1, bonus: !1 }, state: { new: !1, error: !1, page: 0, pagination: 0 }, entry: {}, content: { encrypted: {}, password: { type: "password", value: "" }, accounts: { current: [], edit: [] } } } }, computed: { msgCheck() { let t = ""; return this.content.password.value.length < 5 && (t += "<li>Escribe la contraseña maestra.</li>"), t }, finalCheck() { return JSON.stringify(this.content.accounts.current) !== JSON.stringify(this.content.accounts.edit) }, sortedCharacters() { return this.content.accounts.edit.sort((t, e) => t.name < e.name ? -1 : t.name > e.name ? 1 : 0) } }, methods: { modalClose() { this.state.page = 3, setTimeout(() => { window.location.reload() }, 2500) }, forceRerender() { this.render += 1 }, setEntry() { this.entry = { name: "", id: "", type: "password", password: "" } }, addEntry: function (t) { t.preventDefault(), this.modal.status = !0 }, save: function (t) { t.preventDefault(), this.updateData() }, updateLocal() { this.updateData() }, updateForum() { this.content.accounts.edit = FNR.cache.getData("usermultiaccounts").map(t => ({ name: t.name, password: sjcl.decrypt(this.content.password.value, t.password) })), this.updateData() }, setData() { this.state.page = 3, FNR.cache.setData("userpassword", this.content.password.value, -1), setTimeout(() => { window.location.reload() }, 2500) }, updateData() { this.state.page = 3; const t = this.content.accounts.edit.map(t => ({ name: t.name, password: sjcl.encrypt(this.content.password.value, t.password) })); FNR.cache.setData("userpassword", this.content.password.value, -1), FNR.cache.setData("usermultiaccounts", t, -1), FNR.user.profile.setData([{ name: forumConfig.profileUser.accountsField, type: "textarea", value: JSON.stringify([{ password: this.state.new ? sjcl.encrypt(this.content.password.value, "gaylien_masterpass") : this.content.encrypted.password, accounts: t }]).replace(/"/g, "`") }]).then(t => { t ? (FNR.html.genNotification("Atención", "Información actualizada sin inconvenientes.", "fas fa-check"), setTimeout(() => { window.location.reload() }, 2500)) : FNR.html.genNotification("Atención", "Hubo un problema al actualizar. Dale otro intento.", "fas fa-exclamation") }) } }, created() { FNR.user.profile.getData([{ name: forumConfig.profileUser.accountsField, type: "textarea" }]).then(t => { if (this.content.encrypted = FNR.utility.genArray(t[0].value)[0], this.state.new = 0 === Object.keys(this.content.encrypted).length, FNR.cache.getData("userpassword")) try { sjcl.decrypt(FNR.cache.getData("userpassword"), this.content.encrypted.password) } catch (t) { "ccm: tag doesn't match" === t.message && (this.state.error = !0, FNR.cache.delData("userpassword"), setTimeout(() => { window.location.reload() }, 2500)) } finally { if (!this.state.error) if (this.state.new && FNR.cache.getData("usermultiaccounts").length > 0) this.state.page = 3, FNR.user.profile.setData([{ name: forumConfig.profileUser.accountsField, type: "textarea", value: JSON.stringify([{ password: sjcl.encrypt(FNR.cache.getData("userpassword"), "gaylien_masterpass"), accounts: FNR.cache.getData("usermultiaccounts") }]).replace(/"/g, "`") }]).then(t => { t ? (FNR.html.genNotification("Atención", "Información actualizada sin inconvenientes.", "fas fa-check"), setTimeout(() => { window.location.reload() }, 2500)) : FNR.html.genNotification("Atención", "Hubo un problema al actualizar. Dale otro intento.", "fas fa-exclamation") }); else { let t = []; this.content.password.value = FNR.cache.getData("userpassword"), this.state.new || (t = JSON.parse(JSON.stringify(this.content.encrypted)).accounts.map(t => ({ name: t.name, type: "password", id: FNR.utility.genSlug(t.name), password: sjcl.decrypt(this.content.password.value, t.password) }))), this.setEntry(), this.content.accounts.edit = t, this.content.accounts.current = JSON.parse(JSON.stringify(t)), this.state.page = 2, this.state.new || JSON.stringify(FNR.cache.getData("usermultiaccounts")) === JSON.stringify(this.content.encrypted.accounts) || (this.modal.bonus = !0) } } else this.state.page = 1 }) }, template: '\n <section id="forum-multiaccount" class="wiki-content is-dramatic">\n <div class="is-content">\n <h2>Multicuentas</h2>\n <hr />\n <p>En esta página podrás configurar tu cambio de cuenta rápido. Experimenta con su funcionamiento, es bastante intuitivo.</p>\n </div>\n <separador-foro />\n <template v-if="state.page === 0">\n <cargando-foro data-text="Cargando utilidad…"></cargando-foro>\n </template>\n <template v-else-if="state.page === 1">\n <aviso-foro v-show="msgCheck.length">\n <ul v-html="msgCheck"></ul>\n </aviso-foro>\n <ul class="forum-fieldlist no-style">\n <li>\n <campo-foro data-name="Contraseña maestra">\n <div class="character-selector">\n <input :type="content.password.type" v-model="content.password.value" />\n <a class="character-custom" @click="content.password.type === \'text\' ? content.password.type = \'password\' : content.password.type = \'text\'" title="Cambiar modo">\n <template v-if="content.password.type === \'text\'">\n <i class="fas fa-eye-slash"></i>\n </template>\n <template v-else-if="content.password.type === \'password\'">\n <i class="fas fa-eye"></i>\n </template>\n </a>\n </div>\n </campo-foro>\n </li>\n </ul>\n <div id="usereply-comand" v-if="!msgCheck.length">\n <button class="button1 btn-main" @click="setData()">Guardar</button>\n </div>\n </template>\n <template v-else-if="state.page === 2">\n <modal-multicuentas v-if="modal.status" :data-type="modal.type" :data-element="entry"></modal-multicuentas>\n <modal-foro v-if="modal.bonus" data-title="Atención" @modal-close="modalClose()">\n <template slot="content">\n <p>Hemos detectado que tienes dos versiones de tu base de datos de cuentas asociadas diferentes. Por favor, elige o actualizar la del dispositivo o la del foro.</p>\n </template>\n <template slot="controls">\n <controles-modal>\n <button class="button1 btn-main" @click="updateForum()" title="Actualizar versión foro">Actualizar foro</button>\n <button class="button1" @click="updateLocal()" title="Actualizar versión local">Actualizar local</button>\n </controles-modal>\n </template>\n </modal-foro>\n <mando-foro data-id="upper-controls" data-app="true">\n <template slot="controls">\n <li @click="addEntry($event)">\n <boton-foro data-url="#" data-name="Añadir" data-icon="fas fa-plus"></boton-foro>\n </li>\n <li v-if="finalCheck" @click="save($event)">\n <boton-foro data-url="#" data-name="Guardar" data-icon="fas fa-save" data-type="no-name"></boton-foro>\n </li>\n </template>\n </mando-foro>\n <ul class="no-style" :key="render">\n <template v-if="!sortedCharacters.length">\n <li class="is-not-lastpost not-status">\n <h6>No hay cuentas configuradas</h6>\n </li>\n </template>\n <template v-else v-for="(item, index) in sortedCharacters">\n <elemento-multicuentas :data-element="item" :data-id="index" :key="index"></elemento-multicuentas>\n </template>\n </ul>\n <mando-foro data-id="lower-controls" data-app="true">\n <template slot="controls">\n <li @click="addEntry($event)">\n <boton-foro data-url="#" data-name="Añadir" data-icon="fas fa-plus"></boton-foro>\n </li>\n <li v-if="finalCheck" @click="save($event)">\n <boton-foro data-url="#" data-name="Guardar" data-icon="fas fa-save" data-type="no-name"></boton-foro>\n </li>\n </template>\n </mando-foro>\n </template>\n <template v-else-if="state.page === 3">\n <cargando-foro data-text="Actualizando información…"></cargando-foro>\n </template>\n </section>\n ' }), Vue.component("elemento-multicuentas", { props: ["dataElement", "dataId"], data() { return { content: this.dataElement } }, methods: { deleteElement() { this.$parent.content.accounts.edit.splice(this.dataId, 1), this.$parent.forceRerender() }, editElement() { this.$parent.modal.type = "edit", this.$parent.entry = this.content, this.$parent.modal.status = !0 } }, template: '\n <li>\n <campo-foro :data-name="content.name">\n <div class="character-selector">\n <input :type="content.type" v-model="content.password" disabled/>\n <span class="character-custom rp-controls">\n <span @click="editElement()" title="Editar entrada">Editar</span> / <span @click="deleteElement()" title="Eliminar entrada">Eliminar</span>\n </span>\n </div>\n </campo-foro>\n </li>\n ' });
package/apps/vueRela.js CHANGED
@@ -101,7 +101,7 @@ Vue.component('modal-relaciones', {
101
101
  }
102
102
  },
103
103
  template: `
104
- <modal-foro :data-title="modalTitle" v-on:modal-close="modalClose()">
104
+ <modal-foro :data-title="modalTitle" @modal-close="modalClose()">
105
105
  <template v-if="content.edit.type">
106
106
  <template slot="content">
107
107
  <aviso-foro v-show="oneCheck.length">
@@ -112,7 +112,7 @@ Vue.component('modal-relaciones', {
112
112
  <campo-foro data-name="Nombre">
113
113
  <div class="character-selector">
114
114
  <input type="text" v-model="content.edit.name" placeholder="Escribe el nombre del personaje." disabled />
115
- <a class="character-custom" v-on:click="updateData()" :title="'Actualizar avatar de «' + content.current.name + '»'">
115
+ <a class="character-custom" @click="updateData()" :title="'Actualizar avatar de «' + content.current.name + '»'">
116
116
  <i class="fas fa-redo-alt"></i>
117
117
  </a>
118
118
  </div>
@@ -130,7 +130,7 @@ Vue.component('modal-relaciones', {
130
130
  </template>
131
131
  <template slot="controls" v-if="!oneCheck.length && finalCheck">
132
132
  <controles-modal>
133
- <button class="button1 btn-main" v-on:click="pushElement()" title="Guardar entrada">Guardar</button>
133
+ <button class="button1 btn-main" @click="pushElement()" title="Guardar entrada">Guardar</button>
134
134
  </controles-modal>
135
135
  </template>
136
136
  </template>
@@ -145,7 +145,7 @@ Vue.component('modal-relaciones', {
145
145
  <div class="character-selector">
146
146
  <input type="text" v-model="content.edit.name" placeholder="Escribe el nombre del personaje." />
147
147
  <ul class="no-style selector-list" v-if="sortedCharacters.length > 0">
148
- <li v-for="(character, index) in sortedCharacters" v-on:click="addCharacter(character)" :title="'Seleccionar ' + character.user">{{ character.user }}<i class="fas fa-plus"></i></li>
148
+ <li v-for="(character, index) in sortedCharacters" @click="addCharacter(character)" :title="'Seleccionar ' + character.user">{{ character.user }}<i class="fas fa-plus"></i></li>
149
149
  </ul>
150
150
  </div>
151
151
  </campo-foro>
@@ -187,7 +187,7 @@ Vue.component('modal-relaciones', {
187
187
  </template>
188
188
  <template slot="controls" v-if="!oneCheck.length && finalCheck">
189
189
  <controles-modal>
190
- <button class="button1 btn-main" v-on:click="pushElement()" title="Guardar entrada">Guardar</button>
190
+ <button class="button1 btn-main" @click="pushElement()" title="Guardar entrada">Guardar</button>
191
191
  </controles-modal>
192
192
  </template>
193
193
  </template>
@@ -331,22 +331,22 @@ Vue.component('gestor-relaciones', {
331
331
  <modal-relaciones v-if="modal.status" :data-type="modal.type" :data-element="entry"></modal-relaciones>
332
332
  <mando-foro data-id="upper-controls" data-app="true">
333
333
  <template slot="pagination" v-if="paginationContent.pages.length > 1">
334
- <a class="page-action" title="Ir a la página anterior" v-if="state.pagination > 0" v-on:click="state.pagination -= 1">
334
+ <a class="page-action" title="Ir a la página anterior" v-if="state.pagination > 0" @click="state.pagination -= 1">
335
335
  <i class="fas fa-chevron-left"></i>
336
336
  </a>
337
337
  <template v-for="page in paginationContent.pages">
338
338
  <strong v-if="page === state.pagination">{{ page + 1 }}</strong>
339
- <a class="page-link" :title="'Ir a la página «' + (page + 1) + '»'" v-else v-on:click="state.pagination = page">{{ page + 1 }}</a>
339
+ <a class="page-link" :title="'Ir a la página «' + (page + 1) + '»'" v-else @click="state.pagination = page">{{ page + 1 }}</a>
340
340
  </template>
341
- <a class="page-action" title="Ir a la página siguiente" v-if="(state.pagination + 1) < paginationContent.pages.length" v-on:click="state.pagination += 1">
341
+ <a class="page-action" title="Ir a la página siguiente" v-if="(state.pagination + 1) < paginationContent.pages.length" @click="state.pagination += 1">
342
342
  <i class="fas fa-chevron-right"></i>
343
343
  </a>
344
344
  </template>
345
345
  <template slot="controls">
346
- <li v-on:click="addEntry($event)">
346
+ <li @click="addEntry($event)">
347
347
  <boton-foro data-url="#" data-name="Añadir" data-icon="fas fa-plus"></boton-foro>
348
348
  </li>
349
- <li v-if="finalCheck" v-on:click="save($event)">
349
+ <li v-if="finalCheck" @click="save($event)">
350
350
  <boton-foro data-url="#" data-name="Guardar" data-icon="fas fa-save" data-type="no-name"></boton-foro>
351
351
  </li>
352
352
  </template>
@@ -363,22 +363,22 @@ Vue.component('gestor-relaciones', {
363
363
  </ul>
364
364
  <mando-foro data-id="lower-controls" data-app="true">
365
365
  <template slot="pagination" v-if="paginationContent.pages.length > 1">
366
- <a class="page-action" title="Ir a la página anterior" v-if="state.pagination > 0" v-on:click="state.pagination -= 1">
366
+ <a class="page-action" title="Ir a la página anterior" v-if="state.pagination > 0" @click="state.pagination -= 1">
367
367
  <i class="fas fa-chevron-left"></i>
368
368
  </a>
369
369
  <template v-for="page in paginationContent.pages">
370
370
  <strong v-if="page === state.pagination">{{ page + 1 }}</strong>
371
- <a class="page-link" :title="'Ir a la página «' + (page + 1) + '»'" v-else v-on:click="state.pagination = page">{{ page + 1 }}</a>
371
+ <a class="page-link" :title="'Ir a la página «' + (page + 1) + '»'" v-else @click="state.pagination = page">{{ page + 1 }}</a>
372
372
  </template>
373
- <a class="page-action" title="Ir a la página siguiente" v-if="(state.pagination + 1) < paginationContent.pages.length" v-on:click="state.pagination += 1">
373
+ <a class="page-action" title="Ir a la página siguiente" v-if="(state.pagination + 1) < paginationContent.pages.length" @click="state.pagination += 1">
374
374
  <i class="fas fa-chevron-right"></i>
375
375
  </a>
376
376
  </template>
377
377
  <template slot="controls">
378
- <li v-on:click="addEntry($event)">
378
+ <li @click="addEntry($event)">
379
379
  <boton-foro data-url="#" data-name="Añadir" data-icon="fas fa-plus"></boton-foro>
380
380
  </li>
381
- <li v-if="finalCheck" v-on:click="save($event)">
381
+ <li v-if="finalCheck" @click="save($event)">
382
382
  <boton-foro data-url="#" data-name="Guardar" data-icon="fas fa-save" data-type="no-name"></boton-foro>
383
383
  </li>
384
384
  </template>
@@ -430,7 +430,7 @@ Vue.component('elemento-relaciones', {
430
430
  <div class="rela-content">
431
431
  <div class="rela-title">
432
432
  <h4>{{ content.name }}</h4>
433
- <div class="rp-controls"><span v-on:click="editElement()" title="Editar entrada">Editar</span> / <span v-on:click="deleteElement()" title="Eliminar entrada">Eliminar</span></div>
433
+ <div class="rp-controls"><span @click="editElement()" title="Editar entrada">Editar</span> / <span @click="deleteElement()" title="Eliminar entrada">Eliminar</span></div>
434
434
  </div>
435
435
  <div class="small-text is-content" :inner-html.prop="content.desc | turn-br"></div>
436
436
  </div>
@@ -1 +1 @@
1
- Vue.component("modal-relaciones", { props: ["dataElement", "dataType"], data() { return { state: { modal: !1 }, info: { users: this.$parent.users, user: "", people: [] }, content: { edit: JSON.parse(JSON.stringify(this.dataElement)), current: this.dataElement } } }, computed: { modalTitle() { return "new" === this.dataType ? "Nueva entrada" : "edit" === this.dataType ? "Editar entrada" : void 0 }, oneCheck() { let t = ""; return Object.keys(this.content.edit).length ? (this.content.edit.name.length < 3 && (t += "<li>Escribe el nombre del personaje.</li>"), -1 === this.content.edit.color && (t += "<li>Selecciona una facción para el personaje.</li>"), -1 === this.content.edit.url.indexOf("/u") && (t += "<li>Escribe el enlace al perfil del personaje.</li>"), this.content.edit.img.match(/(jpg|jpeg|png)$/i) || (t += "<li>Escribe el enlace a la imagen del personaje (debe ser de 190x190).</li>"), this.content.edit.desc.length < 151 && (t += "<li>Escribe una descripción lo suficientemente larga (150 carácteres al menos).</li>"), t) : t }, finalCheck() { return JSON.stringify(this.content.current) !== JSON.stringify(this.content.edit) }, sortedCharacters() { return Object.keys(this.content.edit).length ? this.info.users.filter(t => -1 === this.info.people.indexOf(t.user)).filter(t => t.user.toLowerCase().indexOf(this.content.edit.name.toLowerCase()) > -1) : this.$parent.users.map(t => t.user) } }, methods: { modalClose() { this.$parent.modal.type = "new", this.$parent.modal.status = !1, this.$parent.setEntry() }, addCharacter: function (t) { this.content.edit.type = !0, this.content.edit.name = t.user, this.content.edit.img = t.img, this.content.edit.color = t.color, this.content.edit.url = t.id }, updateData() { const t = JSON.parse(JSON.stringify(this.info.users)).filter(t => t.user === this.content.current.name)[0]; this.content.edit.img = t.img }, pushElement() { "edit" === this.$parent.modal.type && this.$parent.content.edit.splice(this.$parent.content.edit.map(t => t.position).indexOf(this.content.current.position), 1); let t = this.content.edit; "new" === this.$parent.modal.type && (t.position = this.$parent.content.edit.length), this.$parent.content.edit.push(t), this.modalClose() } }, template: '\n <modal-foro :data-title="modalTitle" v-on:modal-close="modalClose()">\n <template v-if="content.edit.type">\n <template slot="content">\n <aviso-foro v-show="oneCheck.length">\n <ul v-html="oneCheck"></ul>\n </aviso-foro>\n <ul class="forum-fieldlist no-style">\n <li>\n <campo-foro data-name="Nombre">\n <div class="character-selector">\n <input type="text" v-model="content.edit.name" placeholder="Escribe el nombre del personaje." disabled />\n <a class="character-custom" v-on:click="updateData()" :title="\'Actualizar avatar de «\' + content.current.name + \'»\'">\n <i class="fas fa-redo-alt"></i>\n </a>\n </div>\n </campo-foro>\n </li>\n </ul>\n <h4 class="mt-5">Descripción</h4>\n <ul class="forum-fieldlist no-style">\n <li class="has-no-label">\n <campo-foro data-name="Descripción">\n <textarea v-model="content.edit.desc" placeholder="Escribe la descripción del personaje."></textarea>\n </campo-foro>\n </li>\n </ul>\n </template>\n <template slot="controls" v-if="!oneCheck.length && finalCheck">\n <controles-modal>\n <button class="button1 btn-main" v-on:click="pushElement()" title="Guardar entrada">Guardar</button>\n </controles-modal>\n </template>\n </template>\n <template v-else>\n <template slot="content">\n <aviso-foro v-show="oneCheck.length">\n <ul v-html="oneCheck"></ul>\n </aviso-foro>\n <ul class="forum-fieldlist no-style">\n <li>\n <campo-foro data-name="Nombre">\n <div class="character-selector"> \n <input type="text" v-model="content.edit.name" placeholder="Escribe el nombre del personaje." />\n <ul class="no-style selector-list" v-if="sortedCharacters.length > 0">\n <li v-for="(character, index) in sortedCharacters" v-on:click="addCharacter(character)" :title="\'Seleccionar \' + character.user">{{ character.user }}<i class="fas fa-plus"></i></li>\n </ul>\n </div>\n </campo-foro>\n </li>\n <li>\n <campo-foro data-name="Imagen">\n <input type="text" v-model="content.edit.img" placeholder="Escribe el enlace a la imagen del personaje." />\n </campo-foro>\n </li>\n <li>\n <campo-foro data-name="Perfil">\n <input type="text" v-model="content.edit.url" placeholder="Escribe el enlace al perfil del personaje." />\n </campo-foro>\n </li>\n <li>\n <campo-foro data-name="Facción">\n <div class="select-container">\n <select v-model="content.edit.color">\n <option value="-1" hidden>Selecciona la facción del personaje.</option>\n <option value="azul">Imperio Galáctico</option>\n <option value="rojo">Remanente Purista</option>\n <option value="naranja">Autoridad del Sector Corporativo</option>\n <option value="verde">Cártel</option>\n <option value="turquesa">Nueva Rebelión</option>\n <option value="amarillo">Neutral</option>\n </select>\n </div>\n </campo-foro>\n </li>\n </ul>\n <h4 class="mt-5">Descripción</h4>\n <ul class="forum-fieldlist no-style">\n <li class="has-no-label">\n <campo-foro data-name="Descripción">\n <textarea v-model="content.edit.desc" placeholder="Escribe la descripción del personaje."></textarea>\n </campo-foro>\n </li>\n </ul>\n </template>\n <template slot="controls" v-if="!oneCheck.length && finalCheck">\n <controles-modal>\n <button class="button1 btn-main" v-on:click="pushElement()" title="Guardar entrada">Guardar</button>\n </controles-modal>\n </template>\n </template>\n </modal-foro>\n ' }), Vue.component("gestor-relaciones", { data() { return { render: 0, modal: { type: "new", status: !1 }, users: [], state: { page: 0, pagination: 0 }, entry: {}, content: { edit: [], current: [] } } }, computed: { sortedContent() { return JSON.parse(JSON.stringify(this.content.edit)).sort((t, e) => t.name < e.name ? -1 : t.name > e.name ? 1 : 0) }, paginationContent() { const t = parseInt(forumConfig.skinOptions.paginationDefault / 2) + 1, e = Math.floor((this.sortedContent.length - 1) / t) + 1; let n = []; for (let t = 0; t < e; t++)n.push(t); return this.forceRerender(), { pages: n, content: this.sortedContent.slice(this.state.pagination * t, (this.state.pagination + 1) * t) } }, finalCheck() { return JSON.stringify(this.content.current) !== JSON.stringify(this.content.edit) } }, methods: { forceRerender() { this.render += 1 }, setEntry() { this.entry = { type: !1, color: -1, url: "", img: "", name: "", desc: "" } }, addEntry: function (t) { t.preventDefault(), this.modal.status = !0 }, save: function (t) { t.preventDefault(), this.state.page = 2; const e = this.sortedContent.map(t => (void 0 !== t.position && delete t.position, t)); FNR.user.profile.setData([{ name: forumConfig.profileUser.relaField, type: "textarea", value: JSON.stringify(e).replace(/"/g, "`") }]).then(t => { t ? (FNR.html.genNotification("Atención", "Información actualizada sin inconvenientes.", "fas fa-check"), setTimeout(() => { window.location.reload() }, 2e3)) : FNR.html.genNotification("Atención", "Hubo un problema al actualizar. Dale otro intento.", "fas fa-exclamation") }) } }, created() { FNR.user.profile.getData([{ name: forumConfig.profileUser.relaField, type: "textarea" }]).then(t => { const e = FNR.utility.genArray(t[0].value).map((t, e) => { let n = t; return n.position = e, n }); this.content.edit = e, this.content.current = JSON.parse(JSON.stringify(e)), FNR.forum.getMembers().then(t => { this.setEntry(), this.users = t, this.state.page = 1 }) }) }, template: '\n <section id="forum-relationships" class="wiki-content is-dramatic">\n <div class="is-content">\n <h2>Relaciones</h2>\n <hr />\n <p>En esta página podrás editar las relaciones de tu personaje. Experimenta con su funcionamiento, es bastante intuitivo.</p>\n </div>\n <separador-foro />\n <template v-if="state.page === 0">\n <cargando-foro data-text="Cargando utilidad…"></cargando-foro>\n </template>\n <template v-else-if="state.page === 1">\n <modal-relaciones v-if="modal.status" :data-type="modal.type" :data-element="entry"></modal-relaciones>\n <mando-foro data-id="upper-controls" data-app="true">\n <template slot="pagination" v-if="paginationContent.pages.length > 1">\n <a class="page-action" title="Ir a la página anterior" v-if="state.pagination > 0" v-on:click="state.pagination -= 1">\n <i class="fas fa-chevron-left"></i>\n </a>\n <template v-for="page in paginationContent.pages">\n <strong v-if="page === state.pagination">{{ page + 1 }}</strong>\n <a class="page-link" :title="\'Ir a la página «\' + (page + 1) + \'»\'" v-else v-on:click="state.pagination = page">{{ page + 1 }}</a>\n </template>\n <a class="page-action" title="Ir a la página siguiente" v-if="(state.pagination + 1) < paginationContent.pages.length" v-on:click="state.pagination += 1">\n <i class="fas fa-chevron-right"></i>\n </a>\n </template>\n <template slot="controls">\n <li v-on:click="addEntry($event)">\n <boton-foro data-url="#" data-name="Añadir" data-icon="fas fa-plus"></boton-foro>\n </li>\n <li v-if="finalCheck" v-on:click="save($event)">\n <boton-foro data-url="#" data-name="Guardar" data-icon="fas fa-save" data-type="no-name"></boton-foro>\n </li>\n </template>\n </mando-foro>\n <ul id="forum-rplist" class="no-style" :key="render">\n <template v-if="!paginationContent.content.length">\n <li class="is-not-lastpost not-status">\n <h6>No hay entradas en tus relaciones</h6>\n </li>\n </template>\n <template v-else v-for="character in paginationContent.content">\n <elemento-relaciones :data-element="character" data-type="manager" :data-id="character.position" />\n </template>\n </ul>\n <mando-foro data-id="lower-controls" data-app="true">\n <template slot="pagination" v-if="paginationContent.pages.length > 1">\n <a class="page-action" title="Ir a la página anterior" v-if="state.pagination > 0" v-on:click="state.pagination -= 1">\n <i class="fas fa-chevron-left"></i>\n </a>\n <template v-for="page in paginationContent.pages">\n <strong v-if="page === state.pagination">{{ page + 1 }}</strong>\n <a class="page-link" :title="\'Ir a la página «\' + (page + 1) + \'»\'" v-else v-on:click="state.pagination = page">{{ page + 1 }}</a>\n </template>\n <a class="page-action" title="Ir a la página siguiente" v-if="(state.pagination + 1) < paginationContent.pages.length" v-on:click="state.pagination += 1">\n <i class="fas fa-chevron-right"></i>\n </a>\n </template>\n <template slot="controls">\n <li v-on:click="addEntry($event)">\n <boton-foro data-url="#" data-name="Añadir" data-icon="fas fa-plus"></boton-foro>\n </li>\n <li v-if="finalCheck" v-on:click="save($event)">\n <boton-foro data-url="#" data-name="Guardar" data-icon="fas fa-save" data-type="no-name"></boton-foro>\n </li>\n </template>\n </mando-foro>\n </template>\n <template v-else-if="state.page === 2">\n <cargando-foro data-text="Actualizando información…"></cargando-foro>\n </template>\n </section>\n ' }), Vue.component("elemento-relaciones", { props: ["dataElement", "dataType", "dataId"], data() { return { profileName: forumConfig.profileOptions.profileName || "perfil", content: this.dataElement } }, computed: { realClass() { return "rela-list usergroup-" + this.content.color } }, methods: { deleteElement() { this.$parent.content.edit.splice(this.$parent.content.edit.map(t => t.position).indexOf(this.dataId), 1), 0 === this.$parent.paginationContent.content.length && 0 !== this.$parent.state.pagination && (this.$parent.state.pagination -= 1), this.$parent.forceRerender() }, editElement() { this.$parent.modal.type = "edit", this.$parent.entry = this.content, this.$parent.modal.status = !0 } }, template: '\n <li :class="realClass">\n <template v-if="dataType === \'manager\'">\n <a class="rela-element rela-manager">\n <div class="rela-image" :style="\'background-image: url(\' + content.img + \')\'"></div>\n <div class="rela-content">\n <div class="rela-title">\n <h4>{{ content.name }}</h4>\n <div class="rp-controls"><span v-on:click="editElement()" title="Editar entrada">Editar</span> / <span v-on:click="deleteElement()" title="Eliminar entrada">Eliminar</span></div>\n </div>\n <div class="small-text is-content" :inner-html.prop="content.desc | turn-br"></div>\n </div>\n </a>\n </template>\n <template v-else-if="dataType === \'profile\'">\n <template v-if="content.type">\n <a class="rela-element" :href="content.url" target="_blank" :title="\'Ir al \' + profileName + \' de «\' + content.name + \'»\'">\n <div class="rela-image" :style="\'background-image: url(\' + content.img + \')\'"></div>\n <div class="rela-content">\n <div class="rela-title">\n <h4>{{ content.name }}</h4>\n </div>\n <div class="small-text is-content" :inner-html.prop="content.desc | turn-br"></div>\n </div>\n </a>\n </template>\n <template v-else>\n <a class="rela-element">\n <div class="rela-image" :style="\'background-image: url(\' + content.img + \')\'"></div>\n <div class="rela-content">\n <div class="rela-title">\n <h4>{{ content.name }}</h4>\n </div>\n <div class="small-text is-content" :inner-html.prop="content.desc | turn-br"></div>\n </div>\n </a>\n </template>\n </template>\n </li>\n ' });
1
+ Vue.component("modal-relaciones", { props: ["dataElement", "dataType"], data() { return { state: { modal: !1 }, info: { users: this.$parent.users, user: "", people: [] }, content: { edit: JSON.parse(JSON.stringify(this.dataElement)), current: this.dataElement } } }, computed: { modalTitle() { return "new" === this.dataType ? "Nueva entrada" : "edit" === this.dataType ? "Editar entrada" : void 0 }, oneCheck() { let t = ""; return Object.keys(this.content.edit).length ? (this.content.edit.name.length < 3 && (t += "<li>Escribe el nombre del personaje.</li>"), -1 === this.content.edit.color && (t += "<li>Selecciona una facción para el personaje.</li>"), -1 === this.content.edit.url.indexOf("/u") && (t += "<li>Escribe el enlace al perfil del personaje.</li>"), this.content.edit.img.match(/(jpg|jpeg|png)$/i) || (t += "<li>Escribe el enlace a la imagen del personaje (debe ser de 190x190).</li>"), this.content.edit.desc.length < 151 && (t += "<li>Escribe una descripción lo suficientemente larga (150 carácteres al menos).</li>"), t) : t }, finalCheck() { return JSON.stringify(this.content.current) !== JSON.stringify(this.content.edit) }, sortedCharacters() { return Object.keys(this.content.edit).length ? this.info.users.filter(t => -1 === this.info.people.indexOf(t.user)).filter(t => t.user.toLowerCase().indexOf(this.content.edit.name.toLowerCase()) > -1) : this.$parent.users.map(t => t.user) } }, methods: { modalClose() { this.$parent.modal.type = "new", this.$parent.modal.status = !1, this.$parent.setEntry() }, addCharacter: function (t) { this.content.edit.type = !0, this.content.edit.name = t.user, this.content.edit.img = t.img, this.content.edit.color = t.color, this.content.edit.url = t.id }, updateData() { const t = JSON.parse(JSON.stringify(this.info.users)).filter(t => t.user === this.content.current.name)[0]; this.content.edit.img = t.img }, pushElement() { "edit" === this.$parent.modal.type && this.$parent.content.edit.splice(this.$parent.content.edit.map(t => t.position).indexOf(this.content.current.position), 1); let t = this.content.edit; "new" === this.$parent.modal.type && (t.position = this.$parent.content.edit.length), this.$parent.content.edit.push(t), this.modalClose() } }, template: '\n <modal-foro :data-title="modalTitle" @modal-close="modalClose()">\n <template v-if="content.edit.type">\n <template slot="content">\n <aviso-foro v-show="oneCheck.length">\n <ul v-html="oneCheck"></ul>\n </aviso-foro>\n <ul class="forum-fieldlist no-style">\n <li>\n <campo-foro data-name="Nombre">\n <div class="character-selector">\n <input type="text" v-model="content.edit.name" placeholder="Escribe el nombre del personaje." disabled />\n <a class="character-custom" @click="updateData()" :title="\'Actualizar avatar de «\' + content.current.name + \'»\'">\n <i class="fas fa-redo-alt"></i>\n </a>\n </div>\n </campo-foro>\n </li>\n </ul>\n <h4 class="mt-5">Descripción</h4>\n <ul class="forum-fieldlist no-style">\n <li class="has-no-label">\n <campo-foro data-name="Descripción">\n <textarea v-model="content.edit.desc" placeholder="Escribe la descripción del personaje."></textarea>\n </campo-foro>\n </li>\n </ul>\n </template>\n <template slot="controls" v-if="!oneCheck.length && finalCheck">\n <controles-modal>\n <button class="button1 btn-main" @click="pushElement()" title="Guardar entrada">Guardar</button>\n </controles-modal>\n </template>\n </template>\n <template v-else>\n <template slot="content">\n <aviso-foro v-show="oneCheck.length">\n <ul v-html="oneCheck"></ul>\n </aviso-foro>\n <ul class="forum-fieldlist no-style">\n <li>\n <campo-foro data-name="Nombre">\n <div class="character-selector"> \n <input type="text" v-model="content.edit.name" placeholder="Escribe el nombre del personaje." />\n <ul class="no-style selector-list" v-if="sortedCharacters.length > 0">\n <li v-for="(character, index) in sortedCharacters" @click="addCharacter(character)" :title="\'Seleccionar \' + character.user">{{ character.user }}<i class="fas fa-plus"></i></li>\n </ul>\n </div>\n </campo-foro>\n </li>\n <li>\n <campo-foro data-name="Imagen">\n <input type="text" v-model="content.edit.img" placeholder="Escribe el enlace a la imagen del personaje." />\n </campo-foro>\n </li>\n <li>\n <campo-foro data-name="Perfil">\n <input type="text" v-model="content.edit.url" placeholder="Escribe el enlace al perfil del personaje." />\n </campo-foro>\n </li>\n <li>\n <campo-foro data-name="Facción">\n <div class="select-container">\n <select v-model="content.edit.color">\n <option value="-1" hidden>Selecciona la facción del personaje.</option>\n <option value="azul">Imperio Galáctico</option>\n <option value="rojo">Remanente Purista</option>\n <option value="naranja">Autoridad del Sector Corporativo</option>\n <option value="verde">Cártel</option>\n <option value="turquesa">Nueva Rebelión</option>\n <option value="amarillo">Neutral</option>\n </select>\n </div>\n </campo-foro>\n </li>\n </ul>\n <h4 class="mt-5">Descripción</h4>\n <ul class="forum-fieldlist no-style">\n <li class="has-no-label">\n <campo-foro data-name="Descripción">\n <textarea v-model="content.edit.desc" placeholder="Escribe la descripción del personaje."></textarea>\n </campo-foro>\n </li>\n </ul>\n </template>\n <template slot="controls" v-if="!oneCheck.length && finalCheck">\n <controles-modal>\n <button class="button1 btn-main" @click="pushElement()" title="Guardar entrada">Guardar</button>\n </controles-modal>\n </template>\n </template>\n </modal-foro>\n ' }), Vue.component("gestor-relaciones", { data() { return { render: 0, modal: { type: "new", status: !1 }, users: [], state: { page: 0, pagination: 0 }, entry: {}, content: { edit: [], current: [] } } }, computed: { sortedContent() { return JSON.parse(JSON.stringify(this.content.edit)).sort((t, e) => t.name < e.name ? -1 : t.name > e.name ? 1 : 0) }, paginationContent() { const t = parseInt(forumConfig.skinOptions.paginationDefault / 2) + 1, e = Math.floor((this.sortedContent.length - 1) / t) + 1; let n = []; for (let t = 0; t < e; t++)n.push(t); return this.forceRerender(), { pages: n, content: this.sortedContent.slice(this.state.pagination * t, (this.state.pagination + 1) * t) } }, finalCheck() { return JSON.stringify(this.content.current) !== JSON.stringify(this.content.edit) } }, methods: { forceRerender() { this.render += 1 }, setEntry() { this.entry = { type: !1, color: -1, url: "", img: "", name: "", desc: "" } }, addEntry: function (t) { t.preventDefault(), this.modal.status = !0 }, save: function (t) { t.preventDefault(), this.state.page = 2; const e = this.sortedContent.map(t => (void 0 !== t.position && delete t.position, t)); FNR.user.profile.setData([{ name: forumConfig.profileUser.relaField, type: "textarea", value: JSON.stringify(e).replace(/"/g, "`") }]).then(t => { t ? (FNR.html.genNotification("Atención", "Información actualizada sin inconvenientes.", "fas fa-check"), setTimeout(() => { window.location.reload() }, 2e3)) : FNR.html.genNotification("Atención", "Hubo un problema al actualizar. Dale otro intento.", "fas fa-exclamation") }) } }, created() { FNR.user.profile.getData([{ name: forumConfig.profileUser.relaField, type: "textarea" }]).then(t => { const e = FNR.utility.genArray(t[0].value).map((t, e) => { let n = t; return n.position = e, n }); this.content.edit = e, this.content.current = JSON.parse(JSON.stringify(e)), FNR.forum.getMembers().then(t => { this.setEntry(), this.users = t, this.state.page = 1 }) }) }, template: '\n <section id="forum-relationships" class="wiki-content is-dramatic">\n <div class="is-content">\n <h2>Relaciones</h2>\n <hr />\n <p>En esta página podrás editar las relaciones de tu personaje. Experimenta con su funcionamiento, es bastante intuitivo.</p>\n </div>\n <separador-foro />\n <template v-if="state.page === 0">\n <cargando-foro data-text="Cargando utilidad…"></cargando-foro>\n </template>\n <template v-else-if="state.page === 1">\n <modal-relaciones v-if="modal.status" :data-type="modal.type" :data-element="entry"></modal-relaciones>\n <mando-foro data-id="upper-controls" data-app="true">\n <template slot="pagination" v-if="paginationContent.pages.length > 1">\n <a class="page-action" title="Ir a la página anterior" v-if="state.pagination > 0" @click="state.pagination -= 1">\n <i class="fas fa-chevron-left"></i>\n </a>\n <template v-for="page in paginationContent.pages">\n <strong v-if="page === state.pagination">{{ page + 1 }}</strong>\n <a class="page-link" :title="\'Ir a la página «\' + (page + 1) + \'»\'" v-else @click="state.pagination = page">{{ page + 1 }}</a>\n </template>\n <a class="page-action" title="Ir a la página siguiente" v-if="(state.pagination + 1) < paginationContent.pages.length" @click="state.pagination += 1">\n <i class="fas fa-chevron-right"></i>\n </a>\n </template>\n <template slot="controls">\n <li @click="addEntry($event)">\n <boton-foro data-url="#" data-name="Añadir" data-icon="fas fa-plus"></boton-foro>\n </li>\n <li v-if="finalCheck" @click="save($event)">\n <boton-foro data-url="#" data-name="Guardar" data-icon="fas fa-save" data-type="no-name"></boton-foro>\n </li>\n </template>\n </mando-foro>\n <ul id="forum-rplist" class="no-style" :key="render">\n <template v-if="!paginationContent.content.length">\n <li class="is-not-lastpost not-status">\n <h6>No hay entradas en tus relaciones</h6>\n </li>\n </template>\n <template v-else v-for="character in paginationContent.content">\n <elemento-relaciones :data-element="character" data-type="manager" :data-id="character.position" />\n </template>\n </ul>\n <mando-foro data-id="lower-controls" data-app="true">\n <template slot="pagination" v-if="paginationContent.pages.length > 1">\n <a class="page-action" title="Ir a la página anterior" v-if="state.pagination > 0" @click="state.pagination -= 1">\n <i class="fas fa-chevron-left"></i>\n </a>\n <template v-for="page in paginationContent.pages">\n <strong v-if="page === state.pagination">{{ page + 1 }}</strong>\n <a class="page-link" :title="\'Ir a la página «\' + (page + 1) + \'»\'" v-else @click="state.pagination = page">{{ page + 1 }}</a>\n </template>\n <a class="page-action" title="Ir a la página siguiente" v-if="(state.pagination + 1) < paginationContent.pages.length" @click="state.pagination += 1">\n <i class="fas fa-chevron-right"></i>\n </a>\n </template>\n <template slot="controls">\n <li @click="addEntry($event)">\n <boton-foro data-url="#" data-name="Añadir" data-icon="fas fa-plus"></boton-foro>\n </li>\n <li v-if="finalCheck" @click="save($event)">\n <boton-foro data-url="#" data-name="Guardar" data-icon="fas fa-save" data-type="no-name"></boton-foro>\n </li>\n </template>\n </mando-foro>\n </template>\n <template v-else-if="state.page === 2">\n <cargando-foro data-text="Actualizando información…"></cargando-foro>\n </template>\n </section>\n ' }), Vue.component("elemento-relaciones", { props: ["dataElement", "dataType", "dataId"], data() { return { profileName: forumConfig.profileOptions.profileName || "perfil", content: this.dataElement } }, computed: { realClass() { return "rela-list usergroup-" + this.content.color } }, methods: { deleteElement() { this.$parent.content.edit.splice(this.$parent.content.edit.map(t => t.position).indexOf(this.dataId), 1), 0 === this.$parent.paginationContent.content.length && 0 !== this.$parent.state.pagination && (this.$parent.state.pagination -= 1), this.$parent.forceRerender() }, editElement() { this.$parent.modal.type = "edit", this.$parent.entry = this.content, this.$parent.modal.status = !0 } }, template: '\n <li :class="realClass">\n <template v-if="dataType === \'manager\'">\n <a class="rela-element rela-manager">\n <div class="rela-image" :style="\'background-image: url(\' + content.img + \')\'"></div>\n <div class="rela-content">\n <div class="rela-title">\n <h4>{{ content.name }}</h4>\n <div class="rp-controls"><span @click="editElement()" title="Editar entrada">Editar</span> / <span @click="deleteElement()" title="Eliminar entrada">Eliminar</span></div>\n </div>\n <div class="small-text is-content" :inner-html.prop="content.desc | turn-br"></div>\n </div>\n </a>\n </template>\n <template v-else-if="dataType === \'profile\'">\n <template v-if="content.type">\n <a class="rela-element" :href="content.url" target="_blank" :title="\'Ir al \' + profileName + \' de «\' + content.name + \'»\'">\n <div class="rela-image" :style="\'background-image: url(\' + content.img + \')\'"></div>\n <div class="rela-content">\n <div class="rela-title">\n <h4>{{ content.name }}</h4>\n </div>\n <div class="small-text is-content" :inner-html.prop="content.desc | turn-br"></div>\n </div>\n </a>\n </template>\n <template v-else>\n <a class="rela-element">\n <div class="rela-image" :style="\'background-image: url(\' + content.img + \')\'"></div>\n <div class="rela-content">\n <div class="rela-title">\n <h4>{{ content.name }}</h4>\n </div>\n <div class="small-text is-content" :inner-html.prop="content.desc | turn-br"></div>\n </div>\n </a>\n </template>\n </template>\n </li>\n ' });
@@ -359,14 +359,14 @@ Vue.component('controles-foro', {
359
359
  <navbar-foro :data-username="userName" :data-userlevel="userLevel" :data-userid="userId" :data-userlog="userLog" :data-usermp="userMP" :data-userout="userOut" />
360
360
  </section>
361
361
  <section id="forum-navbar-mobile" class="is-hidden-desktop">
362
- <div id="hmg-button" v-on:click="turnActive()" class="is-pointer">
362
+ <div id="hmg-button" @click="turnActive()" class="is-pointer">
363
363
  <i class="fas fa-bars"></i>
364
364
  </div>
365
365
  <div id="hmg-menu" :class="isActiveClass">
366
- <h3>{{ userName | just-name }}<i class="fas fa-times is-pointer" v-on:click="turnActive()"></i></h3>
366
+ <h3>{{ userName | just-name }}<i class="fas fa-times is-pointer" @click="turnActive()"></i></h3>
367
367
  <navbar-foro :data-username="userName" :data-userlevel="userLevel" :data-userid="userId" :data-userlog="userLog" :data-usermp="userMP" :data-userout="userOut" />
368
368
  </div>
369
- <div class="bg-active" v-on:click="turnActive()"></div>
369
+ <div class="bg-active" @click="turnActive()"></div>
370
370
  </section>
371
371
  <section v-if="maPage === 1" id="multiaccount-transition">
372
372
  <cargando-foro data-text="Cambiando de cuenta…"></cargando-foro>
@@ -517,7 +517,7 @@ Vue.component('navbar-foro', {
517
517
  <template v-if="multiAccount.status">
518
518
  <hr/>
519
519
  <div class="select-container">
520
- <select v-model="multiAccount.position" v-on:change="changeAccount()" v-on:click="$event.stopPropagation()">
520
+ <select v-model="multiAccount.position" @change="changeAccount()" @click="$event.stopPropagation()">
521
521
  <option value="-1" hidden selected>Selec. personaje</option>
522
522
  <option v-for="(account, index) in multiAccount.accounts" :value="index">{{ account.name }}</option>
523
523
  </select>
@@ -842,7 +842,7 @@ Vue.component('modal-foro', {
842
842
  <div class="modal-element">
843
843
  <div class="modal-title">
844
844
  <h3>{{ dataTitle }}</h3>
845
- <a v-on:click="modalClose()">
845
+ <a @click="modalClose()">
846
846
  <i class="fas fa-times"></i>
847
847
  </a>
848
848
  </div>
@@ -853,7 +853,7 @@ Vue.component('modal-foro', {
853
853
  <slot name="controls"></slot>
854
854
  </div>
855
855
  </div>
856
- <div class="is-bgmodal bg-active" v-on:click="modalClose()"></div>
856
+ <div class="is-bgmodal bg-active" @click="modalClose()"></div>
857
857
  </div>
858
858
  `
859
859
  });