generic-skin 2.5.1 → 3.0.0

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.
@@ -1 +1 @@
1
- Vue.component("modal-relaciones",{props:["dataElement","dataType"],data:function(){return{state:{modal:!1},info:{users:this.$parent.users,user:"",people:[]},content:{edit:JSON.parse(JSON.stringify(this.dataElement)),current:this.dataElement}}},computed:{modalTitle:function(){return"new"===this.dataType?"Nueva entrada":"edit"===this.dataType?"Editar entrada":void 0},oneCheck:function(){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:function(){return JSON.stringify(this.content.current)!==JSON.stringify(this.content.edit)},sortedCharacters:function(){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:function(){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:function(){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:function(){"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 v-bind: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()" v-bind: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)" v-bind: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:function(){return{render:0,modal:{type:"new",status:!1},users:[],state:{page:0,pagination:0},entry:{},content:{edit:[],current:[]}}},computed:{sortedContent:function(){return JSON.parse(JSON.stringify(this.content.edit)).sort((t,e)=>t.name<e.name?-1:t.name>e.name?1:0)},paginationContent:function(){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:function(){return JSON.stringify(this.content.current)!==JSON.stringify(this.content.edit)}},methods:{forceRerender:function(){this.render+=1},setEntry:function(){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" v-bind:data-type="modal.type" v-bind: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" v-bind: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" v-bind: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 v-bind:data-element="character" data-type="manager" v-bind: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" v-bind: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:function(){return{profileName:forumConfig.profileOptions.profileName||"perfil",content:this.dataElement}},computed:{realClass:function(){return"rela-list usergroup-"+this.content.color}},methods:{deleteElement:function(){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:function(){this.$parent.modal.type="edit",this.$parent.entry=this.content,this.$parent.modal.status=!0}},template:'\n <li v-bind:class="realClass">\n <template v-if="dataType === \'manager\'">\n <a class="rela-element rela-manager">\n <div class="rela-image" v-bind: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" v-bind:href="content.url" target="_blank" v-bind:title="\'Ir al \' + profileName + \' de «\' + content.name + \'»\'">\n <div class="rela-image" v-bind: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" v-bind: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: function () { return { state: { modal: !1 }, info: { users: this.$parent.users, user: "", people: [] }, content: { edit: JSON.parse(JSON.stringify(this.dataElement)), current: this.dataElement } } }, computed: { modalTitle: function () { return "new" === this.dataType ? "Nueva entrada" : "edit" === this.dataType ? "Editar entrada" : void 0 }, oneCheck: function () { 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: function () { return JSON.stringify(this.content.current) !== JSON.stringify(this.content.edit) }, sortedCharacters: function () { 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: function () { 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: function () { 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: function () { "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: function () { return { render: 0, modal: { type: "new", status: !1 }, users: [], state: { page: 0, pagination: 0 }, entry: {}, content: { edit: [], current: [] } } }, computed: { sortedContent: function () { return JSON.parse(JSON.stringify(this.content.edit)).sort((t, e) => t.name < e.name ? -1 : t.name > e.name ? 1 : 0) }, paginationContent: function () { 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: function () { return JSON.stringify(this.content.current) !== JSON.stringify(this.content.edit) } }, methods: { forceRerender: function () { this.render += 1 }, setEntry: function () { 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: function () { return { profileName: forumConfig.profileOptions.profileName || "perfil", content: this.dataElement } }, computed: { realClass: function () { return "rela-list usergroup-" + this.content.color } }, methods: { deleteElement: function () { 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: function () { 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 ' });
@@ -258,7 +258,7 @@ Vue.component('boton-foro', {
258
258
  else return 'forum-button';
259
259
  },
260
260
  realName: function () {
261
- return 'text' + (this.dataType === 'no-name' ? ' is-hidden-touch': '');
261
+ return 'text' + (this.dataType === 'no-name' ? ' is-hidden-touch' : '');
262
262
  },
263
263
  realUrl: function () {
264
264
  if (this.dataInput === 'true') return 'javascript:{}';
@@ -415,7 +415,7 @@ Vue.component('navbar-foro', {
415
415
  methods: {
416
416
  changeAccount: function () {
417
417
  this.$parent.maPage = 1;
418
-
418
+
419
419
  FNR.user.changeAccount(this.dataUserout, this.multiAccount.accounts[this.multiAccount.position].name, this.multiAccount.accounts[this.multiAccount.position].password).then((r) => {
420
420
  if (r) {
421
421
  window.location.reload();
@@ -598,7 +598,7 @@ Vue.component('sabias-que', {
598
598
  }, 12000);
599
599
  },
600
600
  template: `
601
- <img id="sq-img" v-bind:src="content" alt="¿Sabías que?" />
601
+ <img id="sq-img" v-bind:src="current" alt="¿Sabías que?" />
602
602
  `
603
603
  });
604
604
 
@@ -618,8 +618,8 @@ Vue.component('busquedas', {
618
618
  }, 16000);
619
619
  },
620
620
  template: `
621
- <a id="search-img" v-bind:href="content.url" target="_blank" v-bind:title="content.desc">
622
- <img v-bind:src="content.img" alt="Búsqueda" />
621
+ <a id="search-img" v-bind:href="current.url" target="_blank" v-bind:title="current.desc">
622
+ <img v-bind:src="current.img" alt="Búsqueda" />
623
623
  </a>
624
624
  `
625
625
  });
@@ -800,12 +800,12 @@ Vue.component('wiki-nav', {
800
800
  },
801
801
  nav: function () {
802
802
  const list = routes.filter((item) => {
803
- return item.component
804
- }).filter((item) => {
805
- return item.component.page_parent === routes.filter((item) => {
806
- return item.path === router.history.current.path
807
- })[0].component.page_parent
808
- }),
803
+ return item.component
804
+ }).filter((item) => {
805
+ return item.component.page_parent === routes.filter((item) => {
806
+ return item.path === router.history.current.path
807
+ })[0].component.page_parent
808
+ }),
809
809
  current = list.map((item) => {
810
810
  return item.path
811
811
  }).indexOf(router.history.current.path);
@@ -906,7 +906,7 @@ Vue.component('expediente-usuario', {
906
906
  userCover: function () {
907
907
  return this.profile.fields[forumConfig.profileOptions.profileCover].content
908
908
  },
909
- usableMiniFields: function () {
909
+ usableMiniFields: function () {
910
910
  if (this.config.miniFields === undefined || !this.config.miniFields.length) return [];
911
911
  else return Object.entries(this.profile.fields).filter((item) => {
912
912
  return this.config.miniFields.indexOf(item[0]) > -1;
@@ -1,2 +1,2 @@
1
- Vue.component("categoria-foro",{props:["dataId"],computed:{slugName:function(){const n=this.dataId.indexOf("<h2>")>-1?FNR.utility.genSlug(this.dataId.split("<h2>")[1].split("</h2>")[0],"-"):FNR.utility.genSlug(this.dataId,"-");return"category-"+n}},template:"\n <section v-bind:class=\"'category-element ' + slugName\">\n \t\t<slot></slot>\n </section>\n "}),Vue.component("cabecera-foro",{data:function(){return{dataTitle:void 0===this.$slots.title[0].tag?this.$slots.title[0].text:this.$slots.title[0].children[0].text}},template:'\n <div class="forum-head regular-head">\n <titulo-especial v-bind:data-title="dataTitle"></titulo-especial>\n </div>\n '}),Vue.component("cabcategoria-foro",{data:function(){return{dataTitle:void 0===this.$slots.title[0].tag?this.$slots.title[0].text:this.$slots.title[0].children[0].text}},template:'\n <div class="forum-head category-head">\n <titulo-especial v-bind:data-title="dataTitle"></titulo-especial>\n </div>\n '}),Vue.component("cabespecial-foro",{data:function(){return{dataTitle:void 0===this.$slots.title[0].tag?this.$slots.title[0].text:this.$slots.title[0].children[0].text}},template:'\n <div class="forum-head special-head">\n <titulo-especial v-bind:data-title="dataTitle"></titulo-especial>\n </div>\n '}),Vue.component("subforo-foro",{props:["dataId"],computed:{slugId:function(){let n="";return window.location.pathname.match(/f(\d+)-/)?n=window.location.pathname.match(/f(\d+)-/)[1]:window.location.pathname.match(/f(\d+)p(\d+)-/)&&(n=window.location.pathname.match(/f(\d+)p(\d+)-/)[1]),"subforum-"+n},slugName:function(){const n=this.dataId.indexOf("<h2>")>-1?FNR.utility.genSlug(this.dataId.split("<h2>")[1].split("</h2>")[0],"-"):FNR.utility.genSlug(this.dataId,"-");return"subforum-"+n}},template:"\n <section v-bind:class=\"'subforum-element ' + slugId + ' ' + slugName\">\n \t\t<slot></slot>\n </section>\n "}),Vue.component("lista-temas-cabecera",{props:["dataElements"],data:function(){return{elementos:JSON.parse(this.dataElements.replace(/'/g,'"'))}},template:'\n <ul class="topiclist-header no-style">\n <li v-for="element in elementos">\n <titulo-especial v-bind:data-title="element"></titulo-especial>\n </li>\n </ul>\n '}),Vue.component("tema-foro",{computed:{slugId:function(){let n="";return window.location.pathname.match(/t(\d+)-/)?n=window.location.pathname.match(/t(\d+)-/)[1]:window.location.pathname.match(/t(\d+)p(\d+)-/)&&(n=window.location.pathname.match(/t(\d+)p(\d+)-/)[1]),"topic-"+n},slugName:function(){const n=FNR.utility.genSlug(void 0===this.$slots.title[0].tag?this.$slots.title[0].text:this.$slots.title[0].children[0].text,"-");return"topic-"+n}},template:"\n <section v-bind:class=\"'topic-element ' + slugId + ' ' + slugName\">\n \t\t<slot></slot>\n </section>\n "}),Vue.component("mando-foro",{props:["dataId","dataApp"],data:function(){return{children:0}},computed:{isStatusClass:function(){return this.children>0?"forum-controls":"forum-controls not-show"}},created(){Object.values(this.$slots).map(n=>{this.children+=n.length})},template:'\n <section v-bind:id="dataId" v-bind:class="isStatusClass">\n <template v-if="dataApp === \'true\'">\n <div class="left page-pagination">\n <slot name="pagination"></slot>\n </div>\n <ul class="right no-style page-buttons">\n <slot name="controls"></slot>\n </ul>\n </template>\n <template v-else>\n <div class="left page-pagination"></div>\n <ul class="right no-style page-buttons"></ul>\n </template>\n </section>\n '}),Vue.component("titulo-especial",{props:["dataTitle"],computed:{cleaned:function(){return this.dataTitle.indexOf("<h2>")>-1?this.dataTitle.split("<h2>")[1].split("</h2>")[0]:this.dataTitle},minimized:function(){return FNR.utility.genSlug(this.cleaned," ")}},template:'\n <h3 class="is-tweakeable"><span class="is-measurable">{{ cleaned }}</span></h3>\n '}),Vue.component("cuerpo-widget",{props:["dataClass"],computed:{currentClass:function(){return void 0===this.dataClass?"plank-inner":"plank-inner "+this.dataClass}},template:'\n <div class="plank-content">\n <div v-bind:class="currentClass">\n <slot></slot>\n </div>\t\t\t\t\t\t \n </div>\n '}),Vue.component("separador-foro",{props:["dataFaction"],data:function(){return{image:forumDefaults.separator}},template:'\n <section class="forumseparator-element">\n <img v-bind:src="image" />\n </section>\n '}),Vue.component("tema-ref",{props:["dataInfo"],data:function(){return{profileName:forumConfig.profileOptions.profileName||"perfil"}},computed:{userColor:function(){return"color: "+this.dataInfo.lastpost.who.color}},template:'\n <div class="ltopic-element">\n <a class="ltopic-last" v-bind:href="dataInfo.lastpost.url" target="_blank" v-bind:title="\'Ir al último mensaje del tema «\' + dataInfo.name + \'»\'">\n <i class="fas fa-link"></i>\n </a>\n <div class="ltopic-data">\n <a class="ltopic-title" v-bind:href="dataInfo.url" target="_blank" v-bind:title="\'Ir al tema «\' + dataInfo.name + \'»\'">{{ dataInfo.name }}</a>\n <small class="ltopic-info"><a v-bind:href="dataInfo.lastpost.who.url" target="_blank" v-bind:style="userColor" v-bind:title="\'Ir al \' + profileName + \' de «\' + dataInfo.lastpost.who.name + \'»\'">{{ dataInfo.lastpost.who.name | just-name }}</a>, {{ dataInfo.lastpost.date }} en <a v-bind:href="dataInfo.forum.url" target="_blank" v-bind:title="\'Ir al subforo «\' + dataInfo.forum.name + \'»\'">{{ dataInfo.forum.name }}</a></small>\n </div>\n </div>\n '}),Vue.component("campo-foro",{props:["dataName"],mounted(){const n=this.$el.parentElement.classList;n.add("field-element"),n.add("field-"+FNR.utility.genSlug(this.dataName,"-"))},template:'\n <div class="forum-field">\n <div class="field-name">{{ dataName | capitalize }}</div>\n <div class="field-content">\n <slot></slot>\n </div>\n </div>\n '}),Vue.component("boton-foro",{props:["dataUrl","dataName","dataIcon","dataType","dataInput"],computed:{realClass:function(){return"true"===this.dataInput?"forum-button is-input":"forum-button"},realName:function(){return"text"+("no-name"===this.dataType?" is-hidden-touch":"")},realUrl:function(){return"true"===this.dataInput?"javascript:{}":this.dataUrl}},mounted(){const n=this.$el.parentElement.classList;n.add("btn-element"),n.add("btn-"+FNR.utility.genSlug(this.dataName,"-"))},template:'\n <a v-bind:href="realUrl" targer="_blank" v-bind:class="realClass" v-bind:title="dataName">\n <span class="icon">\n <i v-bind:class="dataIcon"></i>\n </span>\n <span v-bind:class="realName">{{ dataName }}</span>\n <span v-if="dataInput === \'true\'" class="input-real">\n <slot name="input"></slot>\n </span>\n </a>\n '}),Vue.component("cargando-foro",{props:["dataText"],template:'\n <section id="loading-element">\n <div id="loading-content">\n <i class="fas fa-circle-notch fa-spin"></i>\n <span>{{ dataText }}</span>\n </div>\n </section>\n '}),Vue.component("aviso-foro",{template:' \n <div class="forum-infoblock">\n <h5>Antes de proceder recuerda:</h5>\n <slot></slot>\n </div>\n '}),Vue.component("afiliaciones-foro",{data:function(){return{afis:{}}},created(){FNR.forum.getAffiliates().then(n=>{this.afis=n})},template:'\n <ul v-html="afis.normal" class="no-style"></ul>\n '}),Vue.component("controles-foro",{data:function(){return{maPage:0,userName:_userdata.username,userLevel:_userdata.user_level,userId:_userdata.user_id,userLog:_userdata.session_logged_in,userMP:0,userOut:"",isActive:!1}},computed:{isActiveClass:function(){return"has-bg"+(this.isActive?" visible":" not-visible")}},methods:{turnActive:function(){this.isActive=!this.isActive}},created(){0!==this.userLog&&(null!==document.getElementById("i_icon_mini_new_message")&&null!==document.getElementById("i_icon_mini_new_message").title.match(/[0-255]/)&&(this.userMP=parseInt(document.getElementById("i_icon_mini_new_message").title.match(/[0-255]/)[0])),this.userOut=document.getElementById("logout").href)},template:'\n <div class="main-body">\n \t\t<nav id="forum-breadcrumb" class="breadcrumb has-succeeds-separator left" aria-label="breadcrumbs">\n \t<ul>\n \t<li>\n \t<a href="/" title="Ir a «Inicio»">Inicio</a>\n \t</li>\n \t</ul>\n \t</nav>\n <nav class="right"> \n <section id="forum-navbar-desktop" class="is-hidden-touch">\n <navbar-foro v-bind:data-username="userName" v-bind:data-userlevel="userLevel" v-bind:data-userid="userId" v-bind:data-userlog="userLog" v-bind:data-usermp="userMP" v-bind:data-userout="userOut" />\n </section>\n <section id="forum-navbar-mobile" class="is-hidden-desktop">\n <div id="hmg-button" v-on:click="turnActive()" class="is-pointer">\n <i class="fas fa-bars"></i>\n </div>\n <div id="hmg-menu" v-bind:class="isActiveClass">\n <h3>{{ userName | just-name }}<i class="fas fa-times is-pointer" v-on:click="turnActive()"></i></h3>\n <navbar-foro v-bind:data-username="userName" v-bind:data-userlevel="userLevel" v-bind:data-userid="userId" v-bind:data-userlog="userLog" v-bind:data-usermp="userMP" v-bind:data-userout="userOut" />\n </div>\n <div class="bg-active" v-on:click="turnActive()"></div>\n </section>\n <section v-if="maPage === 1" id="multiaccount-transition">\n <cargando-foro data-text="Cambiando de cuenta…"></cargando-foro>\n </section>\n </nav>\n </div>\n '}),Vue.component("navbar-foro",{props:["dataUsername","dataUserlevel","dataUserid","dataUserlog","dataUsermp","dataUserout"],data:function(){return{profileName:forumConfig.profileOptions.profileName||"perfil",items:forumContent.navbar,directions:forumConfig.usableDirections,multiAccount:{status:!1,position:-1,accounts:[]}}},computed:{isStatusClass:function(){return(1===this.dataUserlog?"is-logged":"is-unlogged")+(1===this.dataUserlevel?" is-admin":" is-user")},mpText:function(){return"Mensajería"+(0!==this.dataUsermp?" ("+this.dataUsermp+")":"")},links:function(){return forumContent.links.filter(n=>void 0!==n.icon)}},methods:{changeAccount:function(){this.$parent.maPage=1,FNR.user.changeAccount(this.dataUserout,this.multiAccount.accounts[this.multiAccount.position].name,this.multiAccount.accounts[this.multiAccount.position].password).then(n=>{n&&window.location.reload()})}},created(){this.multiAccount.status=!1!==FNR.cache.getData("usermultiaccounts")&&!1!==FNR.cache.getData("userpassword"),this.multiAccount.accounts=(!1===FNR.cache.getData("usermultiaccounts")?[]:FNR.cache.getData("usermultiaccounts").map(n=>({name:n.name,password:sjcl.decrypt(FNR.cache.getData("userpassword"),n.password)}))).filter(n=>n.name!==_userdata.username).sort((n,e)=>n.name<e.name?-1:n.name>e.name?1:0)},template:'\n <ul v-bind:class="isStatusClass">\n <template v-if="!dataUserlog">\n <li class="navbar-item">\n <a href="/register" title="Registrarse en el foro">\n <div class="icon">\n <i class="fas fa-user-plus"></i>\n </div>\n <div class="text">Registrarse</div>\n </a>\n </li>\n <li class="navbar-item">\n <a href="/login" title="Iniciar sesión en el foro">\n <div class="icon">\n <i class="fas fa-sign-in-alt"></i>\n </div>\n <div class="text">Conectarse</div>\n </a>\n </li>\n </template>\n <template v-else>\n <li class="navbar-item is-hidden-desktop" v-for="link in links">\n <a v-bind:href="link.url" v-bind:title="\'Ir a «\' + link.name + \'»\'">\n <div class="icon">\n <i v-bind:class="link.icon"></i>\n </div>\n <div class="text">{{ link.name }}</div>\n </a>\n </li>\n <li class="navbar-item" v-for="item in items">\n <a v-bind:href="item.url" v-bind:title="\'Ir a «\' + item.name + \'»\'">\n <div class="icon">\n <i v-bind:class="item.icon"></i>\n </div>\n <div class="text">{{ item.name }}</div>\n </a>\n </li>\n <li class="navbar-item">\n <a href="/privmsg?folder=inbox" title="Ir a tu mensajería privada">\n <div class="icon">\n <i class="fas fa-envelope"></i>\n </div>\n <div class="text">{{ mpText }}</div>\n </a>\n </li>\n <li class="navbar-item has-dropdown is-dropeable has-bg">\n <a class="navbar-link is-pointer" title="Accionar menú de usuario">\n <div class="icon">\n <i class="fas fa-user"></i>\n </div>\n <div class="text">{{ dataUsername | just-name }}</div>\n </a>\n <div class="navbar-dropdown is-right">\n <template v-if="dataUserlevel === 1">\n <a class="navbar-item" href="/admin" target="_blank" title="Ir al «Panel de Administrador»">\n <div class="icon">\n <i class="fas fa-cogs"></i>\n </div>\n <div class="text">Panel Administrador</div>\n </a>\n </template>\n <a class="navbar-item" v-bind:href="directions.ucp" target="_blank" title="Ir al «Panel de Usuario»">\n <div class="icon">\n <i class="fas fa-sliders-h"></i>\n </div>\n <div class="text">Panel Usuario</div>\n </a>\n <a class="navbar-item" v-bind:href="\'/u\' + dataUserid" v-bind:title="\'Ir a tu \' + profileName">\n <div class="icon">\n <i class="far fa-id-card"></i>\n </div>\n <div class="text">{{ profileName | capitalize }}</div>\n </a>\n <a class="navbar-item" href="/search?search_id=egosearch" title="Ir a tus temas personales">\n <div class="icon">\n <i class="fas fa-archive"></i>\n </div>\n <div class="text">Temas personales</div>\n </a>\n <a class="navbar-item" v-bind:href="dataUserout">\n <div class="icon">\n <i class="fas fa-sign-out-alt"></i>\n </div>\n <div class="text">Cerrar sesión</div>\n </a>\n <template v-if="multiAccount.status">\n <hr/>\n <div class="select-container">\n <select v-model="multiAccount.position" v-on:change="changeAccount()" v-on:click="$event.stopPropagation()">\n <option value="-1" hidden selected>Selec. personaje</option>\n <option v-for="(account, index) in multiAccount.accounts" v-bind:value="index">{{ account.name }}</option>\n </select>\n </div>\n </template>\n </div>\n </li>\n </template>\n </ul>\n '}),Vue.component("links-ayuda",{data:function(){return{links:forumContent.links}},template:'\n <div class="columns is-multiline is-gapless is-vcentered">\n <a target="_blank" v-bind:href="link.url" v-bind:title="\'Ir a «\' + link.name + \'»\'" class="column" v-for="link in links">{{ link.name }}</a>\n </div>\n '}),Vue.component("links-anuncios",{data:function(){return{announcements:forumContent.announcements}},template:'\n <div id="anmt-main">\n <template v-for="(announcement, index) in announcements">\n <a target="_blank" v-bind:href="announcement.url" v-bind:title="\'Ir al anuncio «\' + announcement.name + \'»\'" class="anmt-element"><span class="anmt-title">{{ announcement.name }}</span><span class="anmt-date">{{ announcement.date }}</span></a>\n <div class="anmt-sep" v-if="(announcements.length - 1) !== index"></div>\n </template>\n </div>\n '}),Vue.component("links-staff",{data:function(){return{staff:forumContent.staff}},template:'\n <div id="admin-main">\n <a target="_blank" v-bind:href="admin.url" class="admin-element" v-bind:style="\'background-image: url(\' + admin.avatar + \')\'" v-bind:title="admin.title" v-for="admin in staff"><span class="admin-name">{{ admin.name }}</span><span class="admin-desc">{{ admin.desc }}</span></a>\n </div>\n '}),Vue.component("sabias-que",{data:function(){return{content:{}}},created(){const n=forumContent.sq;this.content=n[Math.floor(Math.random()*n.length)],setInterval(()=>{this.content=n[Math.floor(Math.random()*n.length)]},12e3)},template:'\n <img id="sq-img" v-bind:src="content" alt="¿Sabías que?" />\n '}),Vue.component("busquedas",{data:function(){return{content:{}}},created(){const n=forumContent.searches;this.content=n[Math.floor(Math.random()*n.length)],setInterval(()=>{this.content=n[Math.floor(Math.random()*n.length)]},16e3)},template:'\n <a id="search-img" v-bind:href="content.url" target="_blank" v-bind:title="content.desc">\n <img v-bind:src="content.img" alt="Búsqueda" />\n </a>\n '}),Vue.component("note-info",{template:'\n <div class="admin-block admin-note">\n <div class="admin-icon fas fa-caret-right"></div>\n <div class="admin-content admin-title">\n <slot></slot>\n </div>\n </div>\n '}),Vue.component("redirect",{props:["dataTo"],computed:{currentStatus:function(){return!!window.location.pathname.match(/t(\d+)-/)}},created(){this.currentStatus&&window.location.replace(this.dataTo)},template:'\n <div class="is-content">\n <template v-if="!currentStatus">\n <p>No hay mensaje.</p>\n </template>\n </div>\n '}),Vue.component("quote",{props:["dataFrom","from"],template:'\n <div class="admin-block admin-box user-coolquote">\n <div class="coolquote-quote">\n <div class="fas fa-quote-left"></div>\n <div class="coolquote-content">\n <slot></slot>\n </div>\n <div class="fas fa-quote-right"></div>\n </div>\n <div class="coolquote-from">{{ dataFrom }}{{ from }}</div>\n </div>\n '}),Vue.component("wiki-index-items-d",{props:["dataContent"],template:'\n <ul>\n <li v-for="content in dataContent">\n <div class="wiki-controls">\n <router-link v-bind:to="content.id" v-if="!content.children.length" v-bind:title="\'Ir al artículo de «\' + content.name + \'»\'">{{ content.name }}</router-link>\n <a class="wiki-cascade" v-bind:title="\'Desplegar categoría de «\' + content.name + \'»\'" v-else>\n <span class="text">{{ content.name }}</span>\n <span class="icon">\n <i class="fas fa-plus"></i>\n <i class="fas fa-minus"></i>\n </span>\n </a>\n </div>\n <wiki-index-items-d v-if="content.children.length" v-bind:data-content="content.children"></wiki-index-items-d>\n </li>\n </ul>\n '}),Vue.component("wiki-index",{computed:{indexContent:function(){const n=t=>e.filter(n=>n.component.page_parent===t).map(e=>({id:e.path,name:e.component.page_name,children:n(e.component.page_name)})),e=routes.filter(n=>void 0!==n.component).filter(n=>!n.component.page_skip);return e.filter(n=>void 0===n.component.page_parent).map(e=>({id:e.path,name:e.component.page_name,children:n(e.component.page_name)}))}},template:'\n <aside class="wiki-index is-content profile-sticky">\n <div class="is-hidden-touch">\n <h3>Contenido</h3>\n <wiki-index-items-d v-bind:data-content="indexContent"></wiki-index-items-d>\n </div>\n <div class="select-container is-hidden-desktop">\n <select>\n <option value="-1" hidden selected>Contenido</option>\n <template v-for="content in indexContent">\n <template v-if="content.children.length">\n <option v-bind:value="content.id" disabled >— {{ content.name }}</option>\n <template v-for="content in content.children">\n <template v-if="content.children.length">\n <option v-bind:value="content.id" disabled >&nbsp&nbsp&nbsp&nbsp— {{ content.name }}</option>\n <template v-for="content in content.children">\n <template v-if="content.children.length">\n <option v-bind:value="content.id" disabled >&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp— {{ content.name }}</option>\n <template v-for="content in content.children">\n <template v-if="content.children.length">\n <option v-bind:value="content.id" disabled >&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp— {{ content.name }}</option>\n <template v-for="content in content.children">\n <option v-bind:value="content.id">&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp— {{ content.name }}</option>\n </template>\n </template>\n <option v-bind:value="content.id" v-else >&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp— {{ content.name }}</option>\n </template>\n </template>\n <option v-bind:value="content.id" v-else >&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp— {{ content.name }}</option>\n </template>\n </template>\n <option v-bind:value="content.id" v-else >&nbsp&nbsp&nbsp&nbsp— {{ content.name }}</option>\n </template>\n </template>\n <option v-bind:value="content.id" v-else >— {{ content.name }}</option>\n </template>\n </select>\n </div>\n </aside>\n '}),Vue.component("wiki-contenido",{props:["dataMode"],template:'\n <div class="wiki-body has-small-topiclist">\n <wiki-index></wiki-index>\n <template v-if="dataMode === \'app\'">\n <slot></slot>\n </template>\n <template v-else>\n <section class="wiki-content is-dramatic">\n <slot></slot>\n </section>\n </template>\n </div>\n '}),Vue.component("wiki-nav",{computed:{more:function(){return routes.filter(n=>n.component).filter(n=>n.component.page_parent===routes.filter(n=>n.path===router.history.current.path)[0].component.page_parent).length>1},nav:function(){const n=routes.filter(n=>n.component).filter(n=>n.component.page_parent===routes.filter(n=>n.path===router.history.current.path)[0].component.page_parent),e=n.map(n=>n.path).indexOf(router.history.current.path);return{next:!(e+1>=n.length)&&n[e+1],prev:!(e-1<0)&&n[e-1]}}},template:'\n <div class="wiki-nav" v-if="more">\n <h2>Navegación</h2>\n <template v-if="nav.prev !== false">* <router-link v-bind:to="nav.prev.path" v-bind:title="\'Ir al artículo «\' + nav.prev.component.page_name + \'»\'">Página anterior: {{ nav.prev.component.page_name }}</router-link></template>\n <br v-if="nav.prev !== false && nav.next !== false"/>\n <template v-if="nav.next !== false">* <router-link v-bind:to="nav.next.path" v-bind:title="\'Ir al artículo «\' + nav.next.component.page_name + \'»\'">Página siguiente: {{ nav.next.component.page_name }}</router-link></template>\n </div>\n '}),Vue.component("wiki-children",{props:["dataName","dataCategory"],computed:{nav:function(){return routes.filter(n=>n.component).filter(n=>n.component.page_parent===this.dataCategory)}},template:'\n <div class="wiki-nav" v-if="nav.length > 0">\n <h2>{{ dataName }}</h2>\n <template v-for="route in nav">* <router-link v-bind:to="route.path" v-bind:title="\'Ir al artículo «\' + route.component.page_name + \'»\'">{{ route.component.page_name }}</router-link><br/></template>\n </div>\n '}),Vue.component("modal-foro",{props:["dataTitle"],methods:{modalClose:function(){this.$parent.state.modal=!1,this.$emit("modal-close")}},template:' \n <div id="forum-modal">\n <div class="modal-element">\n <div class="modal-title">\n <h3>{{ dataTitle }}</h3>\n <a v-on:click="modalClose()">\n <i class="fas fa-times"></i>\n </a>\n </div>\n <div class="modal-content">\n <div class="is-content">\n <slot name="content"></slot>\n </div>\n <slot name="controls"></slot>\n </div>\n </div>\n <div class="is-bgmodal bg-active" v-on:click="modalClose()"></div>\n </div>\n '}),Vue.component("controles-modal",{template:' \n <div class="modal-buttons">\n <slot></slot>\n </div>\n '}),Vue.component("expediente-usuario",{data:function(){return{info:{name:_userdata.username,level:_userdata.user_level,log:_userdata.session_logged_in},config:forumConfig.profileUser,profile:profile}},computed:{userRank:function(){return this.profile.fields[forumConfig.profileOptions.profileRank].content},userCite:function(){return this.profile.fields[forumConfig.profileOptions.profileCite].content},userCover:function(){return this.profile.fields[forumConfig.profileOptions.profileCover].content},usableMiniFields:function(){return void 0!==this.config.miniFields&&this.config.miniFields.length?Object.entries(this.profile.fields).filter(n=>this.config.miniFields.indexOf(n[0])>-1).map(n=>({id:n[0],title:n[1].label,content:n[1].content})).sort((n,e)=>this.config.miniFields.indexOf(n.id)>this.config.miniFields.indexOf(e.id)?1:-1).map(n=>({id:FNR.utility.genSlug(n.title,"-"),title:n.title,content:n.content})):[]},usableBigFields:function(){return void 0!==this.config.mainFields&&Object.keys(this.config.mainFields).length?Object.entries(this.profile.fields).filter(n=>Object.keys(this.config.mainFields).indexOf(n[0])>-1).map(n=>({id:n[0],title:n[1].label,subtitle:this.config.mainFields[n[0]],content:" &nbsp;-"===n[1].content?"":n[1].content})).sort((n,e)=>Object.keys(this.config.mainFields).indexOf(n.id)>Object.keys(this.config.mainFields).indexOf(e.id)?1:-1).map(n=>({id:FNR.utility.genSlug(n.title,"-"),title:n.title,subtitle:n.subtitle,content:n.content})):[]},lengthBigFields:function(){let n=0;return this.usableBigFields.map(e=>{void 0!==e.content&&(n+=e.content.length)}),n},usableExtraFields:function(){return void 0!==this.config.extraFields&&this.config.extraFields.length?Object.entries(this.profile.fields).filter(n=>this.config.extraFields.indexOf(n[0])>-1).map(n=>({id:n[0],title:n[1].label,content:" &nbsp;-"===n[1].content?"":n[1].content})).sort((n,e)=>this.config.extraFields.indexOf(n.id)>this.config.extraFields.indexOf(e.id)?1:-1).map(n=>({id:FNR.utility.genSlug(n.title,"-"),title:n.title,content:n.content})):[]},lengthExtraFields:function(){let n=0;return this.usableExtraFields.map(e=>{void 0!==e.content&&(n+=e.content.length)}),n},usableLinkFields:function(){return this.profile.contact.length?[]:Object.entries(this.profile.contact).filter(n=>"Mensaje Privado"!==n[1].label).map(n=>({id:FNR.utility.genSlug(n[1].label,"-"),title:n[1].label,url:n[1].content,icon:this.config.contactFields[n[0]],desc:"Ir a "+n[1].label+" de «"+this.profile.name+"»"}))},chronologyField:function(){return void 0!==this.config.cronoField&&this.config.cronoField.length?FNR.utility.genArray(this.profile.fields[FNR.utility.genSlug(this.config.cronoField,"_")].content):[]},relationshipsField:function(){return void 0!==this.config.relaField&&this.config.relaField.length?FNR.utility.genArray(this.profile.fields[FNR.utility.genSlug(this.config.relaField,"_")].content):[]},lengthHistoryFields:function(){let n=0;return n+=this.chronologyField.length,n+=this.relationshipsField.length,n},currentClass:function(){return"usergroup-"+this.profile.colour}},
1
+ Vue.component("categoria-foro",{props:["dataId"],computed:{slugName:function(){const n=this.dataId.indexOf("<h2>")>-1?FNR.utility.genSlug(this.dataId.split("<h2>")[1].split("</h2>")[0],"-"):FNR.utility.genSlug(this.dataId,"-");return"category-"+n}},template:"\n <section v-bind:class=\"'category-element ' + slugName\">\n \t\t<slot></slot>\n </section>\n "}),Vue.component("cabecera-foro",{data:function(){return{dataTitle:void 0===this.$slots.title[0].tag?this.$slots.title[0].text:this.$slots.title[0].children[0].text}},template:'\n <div class="forum-head regular-head">\n <titulo-especial v-bind:data-title="dataTitle"></titulo-especial>\n </div>\n '}),Vue.component("cabcategoria-foro",{data:function(){return{dataTitle:void 0===this.$slots.title[0].tag?this.$slots.title[0].text:this.$slots.title[0].children[0].text}},template:'\n <div class="forum-head category-head">\n <titulo-especial v-bind:data-title="dataTitle"></titulo-especial>\n </div>\n '}),Vue.component("cabespecial-foro",{data:function(){return{dataTitle:void 0===this.$slots.title[0].tag?this.$slots.title[0].text:this.$slots.title[0].children[0].text}},template:'\n <div class="forum-head special-head">\n <titulo-especial v-bind:data-title="dataTitle"></titulo-especial>\n </div>\n '}),Vue.component("subforo-foro",{props:["dataId"],computed:{slugId:function(){let n="";return window.location.pathname.match(/f(\d+)-/)?n=window.location.pathname.match(/f(\d+)-/)[1]:window.location.pathname.match(/f(\d+)p(\d+)-/)&&(n=window.location.pathname.match(/f(\d+)p(\d+)-/)[1]),"subforum-"+n},slugName:function(){const n=this.dataId.indexOf("<h2>")>-1?FNR.utility.genSlug(this.dataId.split("<h2>")[1].split("</h2>")[0],"-"):FNR.utility.genSlug(this.dataId,"-");return"subforum-"+n}},template:"\n <section v-bind:class=\"'subforum-element ' + slugId + ' ' + slugName\">\n \t\t<slot></slot>\n </section>\n "}),Vue.component("lista-temas-cabecera",{props:["dataElements"],data:function(){return{elementos:JSON.parse(this.dataElements.replace(/'/g,'"'))}},template:'\n <ul class="topiclist-header no-style">\n <li v-for="element in elementos">\n <titulo-especial v-bind:data-title="element"></titulo-especial>\n </li>\n </ul>\n '}),Vue.component("tema-foro",{computed:{slugId:function(){let n="";return window.location.pathname.match(/t(\d+)-/)?n=window.location.pathname.match(/t(\d+)-/)[1]:window.location.pathname.match(/t(\d+)p(\d+)-/)&&(n=window.location.pathname.match(/t(\d+)p(\d+)-/)[1]),"topic-"+n},slugName:function(){const n=FNR.utility.genSlug(void 0===this.$slots.title[0].tag?this.$slots.title[0].text:this.$slots.title[0].children[0].text,"-");return"topic-"+n}},template:"\n <section v-bind:class=\"'topic-element ' + slugId + ' ' + slugName\">\n \t\t<slot></slot>\n </section>\n "}),Vue.component("mando-foro",{props:["dataId","dataApp"],data:function(){return{children:0}},computed:{isStatusClass:function(){return this.children>0?"forum-controls":"forum-controls not-show"}},created(){Object.values(this.$slots).map(n=>{this.children+=n.length})},template:'\n <section v-bind:id="dataId" v-bind:class="isStatusClass">\n <template v-if="dataApp === \'true\'">\n <div class="left page-pagination">\n <slot name="pagination"></slot>\n </div>\n <ul class="right no-style page-buttons">\n <slot name="controls"></slot>\n </ul>\n </template>\n <template v-else>\n <div class="left page-pagination"></div>\n <ul class="right no-style page-buttons"></ul>\n </template>\n </section>\n '}),Vue.component("titulo-especial",{props:["dataTitle"],computed:{cleaned:function(){return this.dataTitle.indexOf("<h2>")>-1?this.dataTitle.split("<h2>")[1].split("</h2>")[0]:this.dataTitle},minimized:function(){return FNR.utility.genSlug(this.cleaned," ")}},template:'\n <h3 class="is-tweakeable"><span class="is-measurable">{{ cleaned }}</span></h3>\n '}),Vue.component("cuerpo-widget",{props:["dataClass"],computed:{currentClass:function(){return void 0===this.dataClass?"plank-inner":"plank-inner "+this.dataClass}},template:'\n <div class="plank-content">\n <div v-bind:class="currentClass">\n <slot></slot>\n </div>\t\t\t\t\t\t \n </div>\n '}),Vue.component("separador-foro",{props:["dataFaction"],data:function(){return{image:forumDefaults.separator}},template:'\n <section class="forumseparator-element">\n <img v-bind:src="image" />\n </section>\n '}),Vue.component("tema-ref",{props:["dataInfo"],data:function(){return{profileName:forumConfig.profileOptions.profileName||"perfil"}},computed:{userColor:function(){return"color: "+this.dataInfo.lastpost.who.color}},template:'\n <div class="ltopic-element">\n <a class="ltopic-last" v-bind:href="dataInfo.lastpost.url" target="_blank" v-bind:title="\'Ir al último mensaje del tema «\' + dataInfo.name + \'»\'">\n <i class="fas fa-link"></i>\n </a>\n <div class="ltopic-data">\n <a class="ltopic-title" v-bind:href="dataInfo.url" target="_blank" v-bind:title="\'Ir al tema «\' + dataInfo.name + \'»\'">{{ dataInfo.name }}</a>\n <small class="ltopic-info"><a v-bind:href="dataInfo.lastpost.who.url" target="_blank" v-bind:style="userColor" v-bind:title="\'Ir al \' + profileName + \' de «\' + dataInfo.lastpost.who.name + \'»\'">{{ dataInfo.lastpost.who.name | just-name }}</a>, {{ dataInfo.lastpost.date }} en <a v-bind:href="dataInfo.forum.url" target="_blank" v-bind:title="\'Ir al subforo «\' + dataInfo.forum.name + \'»\'">{{ dataInfo.forum.name }}</a></small>\n </div>\n </div>\n '}),Vue.component("campo-foro",{props:["dataName"],mounted(){const n=this.$el.parentElement.classList;n.add("field-element"),n.add("field-"+FNR.utility.genSlug(this.dataName,"-"))},template:'\n <div class="forum-field">\n <div class="field-name">{{ dataName | capitalize }}</div>\n <div class="field-content">\n <slot></slot>\n </div>\n </div>\n '}),Vue.component("boton-foro",{props:["dataUrl","dataName","dataIcon","dataType","dataInput"],computed:{realClass:function(){return"true"===this.dataInput?"forum-button is-input":"forum-button"},realName:function(){return"text"+("no-name"===this.dataType?" is-hidden-touch":"")},realUrl:function(){return"true"===this.dataInput?"javascript:{}":this.dataUrl}},mounted(){const n=this.$el.parentElement.classList;n.add("btn-element"),n.add("btn-"+FNR.utility.genSlug(this.dataName,"-"))},template:'\n <a v-bind:href="realUrl" targer="_blank" v-bind:class="realClass" v-bind:title="dataName">\n <span class="icon">\n <i v-bind:class="dataIcon"></i>\n </span>\n <span v-bind:class="realName">{{ dataName }}</span>\n <span v-if="dataInput === \'true\'" class="input-real">\n <slot name="input"></slot>\n </span>\n </a>\n '}),Vue.component("cargando-foro",{props:["dataText"],template:'\n <section id="loading-element">\n <div id="loading-content">\n <i class="fas fa-circle-notch fa-spin"></i>\n <span>{{ dataText }}</span>\n </div>\n </section>\n '}),Vue.component("aviso-foro",{template:' \n <div class="forum-infoblock">\n <h5>Antes de proceder recuerda:</h5>\n <slot></slot>\n </div>\n '}),Vue.component("afiliaciones-foro",{data:function(){return{afis:{}}},created(){FNR.forum.getAffiliates().then(n=>{this.afis=n})},template:'\n <ul v-html="afis.normal" class="no-style"></ul>\n '}),Vue.component("controles-foro",{data:function(){return{maPage:0,userName:_userdata.username,userLevel:_userdata.user_level,userId:_userdata.user_id,userLog:_userdata.session_logged_in,userMP:0,userOut:"",isActive:!1}},computed:{isActiveClass:function(){return"has-bg"+(this.isActive?" visible":" not-visible")}},methods:{turnActive:function(){this.isActive=!this.isActive}},created(){0!==this.userLog&&(null!==document.getElementById("i_icon_mini_new_message")&&null!==document.getElementById("i_icon_mini_new_message").title.match(/[0-255]/)&&(this.userMP=parseInt(document.getElementById("i_icon_mini_new_message").title.match(/[0-255]/)[0])),this.userOut=document.getElementById("logout").href)},template:'\n <div class="main-body">\n \t\t<nav id="forum-breadcrumb" class="breadcrumb has-succeeds-separator left" aria-label="breadcrumbs">\n \t<ul>\n \t<li>\n \t<a href="/" title="Ir a «Inicio»">Inicio</a>\n \t</li>\n \t</ul>\n \t</nav>\n <nav class="right"> \n <section id="forum-navbar-desktop" class="is-hidden-touch">\n <navbar-foro v-bind:data-username="userName" v-bind:data-userlevel="userLevel" v-bind:data-userid="userId" v-bind:data-userlog="userLog" v-bind:data-usermp="userMP" v-bind:data-userout="userOut" />\n </section>\n <section id="forum-navbar-mobile" class="is-hidden-desktop">\n <div id="hmg-button" v-on:click="turnActive()" class="is-pointer">\n <i class="fas fa-bars"></i>\n </div>\n <div id="hmg-menu" v-bind:class="isActiveClass">\n <h3>{{ userName | just-name }}<i class="fas fa-times is-pointer" v-on:click="turnActive()"></i></h3>\n <navbar-foro v-bind:data-username="userName" v-bind:data-userlevel="userLevel" v-bind:data-userid="userId" v-bind:data-userlog="userLog" v-bind:data-usermp="userMP" v-bind:data-userout="userOut" />\n </div>\n <div class="bg-active" v-on:click="turnActive()"></div>\n </section>\n <section v-if="maPage === 1" id="multiaccount-transition">\n <cargando-foro data-text="Cambiando de cuenta…"></cargando-foro>\n </section>\n </nav>\n </div>\n '}),Vue.component("navbar-foro",{props:["dataUsername","dataUserlevel","dataUserid","dataUserlog","dataUsermp","dataUserout"],data:function(){return{profileName:forumConfig.profileOptions.profileName||"perfil",items:forumContent.navbar,directions:forumConfig.usableDirections,multiAccount:{status:!1,position:-1,accounts:[]}}},computed:{isStatusClass:function(){return(1===this.dataUserlog?"is-logged":"is-unlogged")+(1===this.dataUserlevel?" is-admin":" is-user")},mpText:function(){return"Mensajería"+(0!==this.dataUsermp?" ("+this.dataUsermp+")":"")},links:function(){return forumContent.links.filter(n=>void 0!==n.icon)}},methods:{changeAccount:function(){this.$parent.maPage=1,FNR.user.changeAccount(this.dataUserout,this.multiAccount.accounts[this.multiAccount.position].name,this.multiAccount.accounts[this.multiAccount.position].password).then(n=>{n&&window.location.reload()})}},created(){this.multiAccount.status=!1!==FNR.cache.getData("usermultiaccounts")&&!1!==FNR.cache.getData("userpassword"),this.multiAccount.accounts=(!1===FNR.cache.getData("usermultiaccounts")?[]:FNR.cache.getData("usermultiaccounts").map(n=>({name:n.name,password:sjcl.decrypt(FNR.cache.getData("userpassword"),n.password)}))).filter(n=>n.name!==_userdata.username).sort((n,e)=>n.name<e.name?-1:n.name>e.name?1:0)},template:'\n <ul v-bind:class="isStatusClass">\n <template v-if="!dataUserlog">\n <li class="navbar-item">\n <a href="/register" title="Registrarse en el foro">\n <div class="icon">\n <i class="fas fa-user-plus"></i>\n </div>\n <div class="text">Registrarse</div>\n </a>\n </li>\n <li class="navbar-item">\n <a href="/login" title="Iniciar sesión en el foro">\n <div class="icon">\n <i class="fas fa-sign-in-alt"></i>\n </div>\n <div class="text">Conectarse</div>\n </a>\n </li>\n </template>\n <template v-else>\n <li class="navbar-item is-hidden-desktop" v-for="link in links">\n <a v-bind:href="link.url" v-bind:title="\'Ir a «\' + link.name + \'»\'">\n <div class="icon">\n <i v-bind:class="link.icon"></i>\n </div>\n <div class="text">{{ link.name }}</div>\n </a>\n </li>\n <li class="navbar-item" v-for="item in items">\n <a v-bind:href="item.url" v-bind:title="\'Ir a «\' + item.name + \'»\'">\n <div class="icon">\n <i v-bind:class="item.icon"></i>\n </div>\n <div class="text">{{ item.name }}</div>\n </a>\n </li>\n <li class="navbar-item">\n <a href="/privmsg?folder=inbox" title="Ir a tu mensajería privada">\n <div class="icon">\n <i class="fas fa-envelope"></i>\n </div>\n <div class="text">{{ mpText }}</div>\n </a>\n </li>\n <li class="navbar-item has-dropdown is-dropeable has-bg">\n <a class="navbar-link is-pointer" title="Accionar menú de usuario">\n <div class="icon">\n <i class="fas fa-user"></i>\n </div>\n <div class="text">{{ dataUsername | just-name }}</div>\n </a>\n <div class="navbar-dropdown is-right">\n <template v-if="dataUserlevel === 1">\n <a class="navbar-item" href="/admin" target="_blank" title="Ir al «Panel de Administrador»">\n <div class="icon">\n <i class="fas fa-cogs"></i>\n </div>\n <div class="text">Panel Administrador</div>\n </a>\n </template>\n <a class="navbar-item" v-bind:href="directions.ucp" target="_blank" title="Ir al «Panel de Usuario»">\n <div class="icon">\n <i class="fas fa-sliders-h"></i>\n </div>\n <div class="text">Panel Usuario</div>\n </a>\n <a class="navbar-item" v-bind:href="\'/u\' + dataUserid" v-bind:title="\'Ir a tu \' + profileName">\n <div class="icon">\n <i class="far fa-id-card"></i>\n </div>\n <div class="text">{{ profileName | capitalize }}</div>\n </a>\n <a class="navbar-item" href="/search?search_id=egosearch" title="Ir a tus temas personales">\n <div class="icon">\n <i class="fas fa-archive"></i>\n </div>\n <div class="text">Temas personales</div>\n </a>\n <a class="navbar-item" v-bind:href="dataUserout">\n <div class="icon">\n <i class="fas fa-sign-out-alt"></i>\n </div>\n <div class="text">Cerrar sesión</div>\n </a>\n <template v-if="multiAccount.status">\n <hr/>\n <div class="select-container">\n <select v-model="multiAccount.position" v-on:change="changeAccount()" v-on:click="$event.stopPropagation()">\n <option value="-1" hidden selected>Selec. personaje</option>\n <option v-for="(account, index) in multiAccount.accounts" v-bind:value="index">{{ account.name }}</option>\n </select>\n </div>\n </template>\n </div>\n </li>\n </template>\n </ul>\n '}),Vue.component("links-ayuda",{data:function(){return{links:forumContent.links}},template:'\n <div class="columns is-multiline is-gapless is-vcentered">\n <a target="_blank" v-bind:href="link.url" v-bind:title="\'Ir a «\' + link.name + \'»\'" class="column" v-for="link in links">{{ link.name }}</a>\n </div>\n '}),Vue.component("links-anuncios",{data:function(){return{announcements:forumContent.announcements}},template:'\n <div id="anmt-main">\n <template v-for="(announcement, index) in announcements">\n <a target="_blank" v-bind:href="announcement.url" v-bind:title="\'Ir al anuncio «\' + announcement.name + \'»\'" class="anmt-element"><span class="anmt-title">{{ announcement.name }}</span><span class="anmt-date">{{ announcement.date }}</span></a>\n <div class="anmt-sep" v-if="(announcements.length - 1) !== index"></div>\n </template>\n </div>\n '}),Vue.component("links-staff",{data:function(){return{staff:forumContent.staff}},template:'\n <div id="admin-main">\n <a target="_blank" v-bind:href="admin.url" class="admin-element" v-bind:style="\'background-image: url(\' + admin.avatar + \')\'" v-bind:title="admin.title" v-for="admin in staff"><span class="admin-name">{{ admin.name }}</span><span class="admin-desc">{{ admin.desc }}</span></a>\n </div>\n '}),Vue.component("sabias-que",{data:function(){return{content:{}}},created(){const n=forumContent.sq;this.content=n[Math.floor(Math.random()*n.length)],setInterval(()=>{this.content=n[Math.floor(Math.random()*n.length)]},12e3)},template:'\n <img id="sq-img" v-bind:src="current" alt="¿Sabías que?" />\n '}),Vue.component("busquedas",{data:function(){return{content:{}}},created(){const n=forumContent.searches;this.content=n[Math.floor(Math.random()*n.length)],setInterval(()=>{this.content=n[Math.floor(Math.random()*n.length)]},16e3)},template:'\n <a id="search-img" v-bind:href="current.url" target="_blank" v-bind:title="current.desc">\n <img v-bind:src="current.img" alt="Búsqueda" />\n </a>\n '}),Vue.component("note-info",{template:'\n <div class="admin-block admin-note">\n <div class="admin-icon fas fa-caret-right"></div>\n <div class="admin-content admin-title">\n <slot></slot>\n </div>\n </div>\n '}),Vue.component("redirect",{props:["dataTo"],computed:{currentStatus:function(){return!!window.location.pathname.match(/t(\d+)-/)}},created(){this.currentStatus&&window.location.replace(this.dataTo)},template:'\n <div class="is-content">\n <template v-if="!currentStatus">\n <p>No hay mensaje.</p>\n </template>\n </div>\n '}),Vue.component("quote",{props:["dataFrom","from"],template:'\n <div class="admin-block admin-box user-coolquote">\n <div class="coolquote-quote">\n <div class="fas fa-quote-left"></div>\n <div class="coolquote-content">\n <slot></slot>\n </div>\n <div class="fas fa-quote-right"></div>\n </div>\n <div class="coolquote-from">{{ dataFrom }}{{ from }}</div>\n </div>\n '}),Vue.component("wiki-index-items-d",{props:["dataContent"],template:'\n <ul>\n <li v-for="content in dataContent">\n <div class="wiki-controls">\n <router-link v-bind:to="content.id" v-if="!content.children.length" v-bind:title="\'Ir al artículo de «\' + content.name + \'»\'">{{ content.name }}</router-link>\n <a class="wiki-cascade" v-bind:title="\'Desplegar categoría de «\' + content.name + \'»\'" v-else>\n <span class="text">{{ content.name }}</span>\n <span class="icon">\n <i class="fas fa-plus"></i>\n <i class="fas fa-minus"></i>\n </span>\n </a>\n </div>\n <wiki-index-items-d v-if="content.children.length" v-bind:data-content="content.children"></wiki-index-items-d>\n </li>\n </ul>\n '}),Vue.component("wiki-index",{computed:{indexContent:function(){const n=t=>e.filter(n=>n.component.page_parent===t).map(e=>({id:e.path,name:e.component.page_name,children:n(e.component.page_name)})),e=routes.filter(n=>void 0!==n.component).filter(n=>!n.component.page_skip);return e.filter(n=>void 0===n.component.page_parent).map(e=>({id:e.path,name:e.component.page_name,children:n(e.component.page_name)}))}},template:'\n <aside class="wiki-index is-content profile-sticky">\n <div class="is-hidden-touch">\n <h3>Contenido</h3>\n <wiki-index-items-d v-bind:data-content="indexContent"></wiki-index-items-d>\n </div>\n <div class="select-container is-hidden-desktop">\n <select>\n <option value="-1" hidden selected>Contenido</option>\n <template v-for="content in indexContent">\n <template v-if="content.children.length">\n <option v-bind:value="content.id" disabled >— {{ content.name }}</option>\n <template v-for="content in content.children">\n <template v-if="content.children.length">\n <option v-bind:value="content.id" disabled >&nbsp&nbsp&nbsp&nbsp— {{ content.name }}</option>\n <template v-for="content in content.children">\n <template v-if="content.children.length">\n <option v-bind:value="content.id" disabled >&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp— {{ content.name }}</option>\n <template v-for="content in content.children">\n <template v-if="content.children.length">\n <option v-bind:value="content.id" disabled >&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp— {{ content.name }}</option>\n <template v-for="content in content.children">\n <option v-bind:value="content.id">&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp— {{ content.name }}</option>\n </template>\n </template>\n <option v-bind:value="content.id" v-else >&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp— {{ content.name }}</option>\n </template>\n </template>\n <option v-bind:value="content.id" v-else >&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp— {{ content.name }}</option>\n </template>\n </template>\n <option v-bind:value="content.id" v-else >&nbsp&nbsp&nbsp&nbsp— {{ content.name }}</option>\n </template>\n </template>\n <option v-bind:value="content.id" v-else >— {{ content.name }}</option>\n </template>\n </select>\n </div>\n </aside>\n '}),Vue.component("wiki-contenido",{props:["dataMode"],template:'\n <div class="wiki-body has-small-topiclist">\n <wiki-index></wiki-index>\n <template v-if="dataMode === \'app\'">\n <slot></slot>\n </template>\n <template v-else>\n <section class="wiki-content is-dramatic">\n <slot></slot>\n </section>\n </template>\n </div>\n '}),Vue.component("wiki-nav",{computed:{more:function(){return routes.filter(n=>n.component).filter(n=>n.component.page_parent===routes.filter(n=>n.path===router.history.current.path)[0].component.page_parent).length>1},nav:function(){const n=routes.filter(n=>n.component).filter(n=>n.component.page_parent===routes.filter(n=>n.path===router.history.current.path)[0].component.page_parent),e=n.map(n=>n.path).indexOf(router.history.current.path);return{next:!(e+1>=n.length)&&n[e+1],prev:!(e-1<0)&&n[e-1]}}},template:'\n <div class="wiki-nav" v-if="more">\n <h2>Navegación</h2>\n <template v-if="nav.prev !== false">* <router-link v-bind:to="nav.prev.path" v-bind:title="\'Ir al artículo «\' + nav.prev.component.page_name + \'»\'">Página anterior: {{ nav.prev.component.page_name }}</router-link></template>\n <br v-if="nav.prev !== false && nav.next !== false"/>\n <template v-if="nav.next !== false">* <router-link v-bind:to="nav.next.path" v-bind:title="\'Ir al artículo «\' + nav.next.component.page_name + \'»\'">Página siguiente: {{ nav.next.component.page_name }}</router-link></template>\n </div>\n '}),Vue.component("wiki-children",{props:["dataName","dataCategory"],computed:{nav:function(){return routes.filter(n=>n.component).filter(n=>n.component.page_parent===this.dataCategory)}},template:'\n <div class="wiki-nav" v-if="nav.length > 0">\n <h2>{{ dataName }}</h2>\n <template v-for="route in nav">* <router-link v-bind:to="route.path" v-bind:title="\'Ir al artículo «\' + route.component.page_name + \'»\'">{{ route.component.page_name }}</router-link><br/></template>\n </div>\n '}),Vue.component("modal-foro",{props:["dataTitle"],methods:{modalClose:function(){this.$parent.state.modal=!1,this.$emit("modal-close")}},template:' \n <div id="forum-modal">\n <div class="modal-element">\n <div class="modal-title">\n <h3>{{ dataTitle }}</h3>\n <a v-on:click="modalClose()">\n <i class="fas fa-times"></i>\n </a>\n </div>\n <div class="modal-content">\n <div class="is-content">\n <slot name="content"></slot>\n </div>\n <slot name="controls"></slot>\n </div>\n </div>\n <div class="is-bgmodal bg-active" v-on:click="modalClose()"></div>\n </div>\n '}),Vue.component("controles-modal",{template:' \n <div class="modal-buttons">\n <slot></slot>\n </div>\n '}),Vue.component("expediente-usuario",{data:function(){return{info:{name:_userdata.username,level:_userdata.user_level,log:_userdata.session_logged_in},config:forumConfig.profileUser,profile:profile}},computed:{userRank:function(){return this.profile.fields[forumConfig.profileOptions.profileRank].content},userCite:function(){return this.profile.fields[forumConfig.profileOptions.profileCite].content},userCover:function(){return this.profile.fields[forumConfig.profileOptions.profileCover].content},usableMiniFields:function(){return void 0!==this.config.miniFields&&this.config.miniFields.length?Object.entries(this.profile.fields).filter(n=>this.config.miniFields.indexOf(n[0])>-1).map(n=>({id:n[0],title:n[1].label,content:n[1].content})).sort((n,e)=>this.config.miniFields.indexOf(n.id)>this.config.miniFields.indexOf(e.id)?1:-1).map(n=>({id:FNR.utility.genSlug(n.title,"-"),title:n.title,content:n.content})):[]},usableBigFields:function(){return void 0!==this.config.mainFields&&Object.keys(this.config.mainFields).length?Object.entries(this.profile.fields).filter(n=>Object.keys(this.config.mainFields).indexOf(n[0])>-1).map(n=>({id:n[0],title:n[1].label,subtitle:this.config.mainFields[n[0]],content:" &nbsp;-"===n[1].content?"":n[1].content})).sort((n,e)=>Object.keys(this.config.mainFields).indexOf(n.id)>Object.keys(this.config.mainFields).indexOf(e.id)?1:-1).map(n=>({id:FNR.utility.genSlug(n.title,"-"),title:n.title,subtitle:n.subtitle,content:n.content})):[]},lengthBigFields:function(){let n=0;return this.usableBigFields.map(e=>{void 0!==e.content&&(n+=e.content.length)}),n},usableExtraFields:function(){return void 0!==this.config.extraFields&&this.config.extraFields.length?Object.entries(this.profile.fields).filter(n=>this.config.extraFields.indexOf(n[0])>-1).map(n=>({id:n[0],title:n[1].label,content:" &nbsp;-"===n[1].content?"":n[1].content})).sort((n,e)=>this.config.extraFields.indexOf(n.id)>this.config.extraFields.indexOf(e.id)?1:-1).map(n=>({id:FNR.utility.genSlug(n.title,"-"),title:n.title,content:n.content})):[]},lengthExtraFields:function(){let n=0;return this.usableExtraFields.map(e=>{void 0!==e.content&&(n+=e.content.length)}),n},usableLinkFields:function(){return this.profile.contact.length?[]:Object.entries(this.profile.contact).filter(n=>"Mensaje Privado"!==n[1].label).map(n=>({id:FNR.utility.genSlug(n[1].label,"-"),title:n[1].label,url:n[1].content,icon:this.config.contactFields[n[0]],desc:"Ir a "+n[1].label+" de «"+this.profile.name+"»"}))},chronologyField:function(){return void 0!==this.config.cronoField&&this.config.cronoField.length?FNR.utility.genArray(this.profile.fields[FNR.utility.genSlug(this.config.cronoField,"_")].content):[]},relationshipsField:function(){return void 0!==this.config.relaField&&this.config.relaField.length?FNR.utility.genArray(this.profile.fields[FNR.utility.genSlug(this.config.relaField,"_")].content):[]},lengthHistoryFields:function(){let n=0;return n+=this.chronologyField.length,n+=this.relationshipsField.length,n},currentClass:function(){return"usergroup-"+this.profile.colour}},
2
2
  template:' \n <section class="profile-element"> \n <cabespecial-foro><template slot="title">Perfil de {{ profile.name }}</template></cabespecial-foro>\n <section v-bind:class="currentClass">\n <section id="profile-head">\n <div id="profile-minifields" class="profile-container is-align-items-flex-start wiki-index is-content has-text-left" v-if="lengthBigFields">\n <h3>Contenido</h3>\n <ul>\n <li v-if="lengthBigFields">\n <div class="wiki-controls">\n <a href="#anchor-info">Información</a>\n </div>\n </li>\n <li v-if="lengthExtraFields">\n <div class="wiki-controls">\n <a href="#anchor-extras">Extras</a>\n </div>\n </li>\n <li v-if="lengthHistoryFields">\n <div class="wiki-controls">\n <a href="#anchor-history">Historial</a>\n </div>\n </li>\n </ul>\n </div>\n <ul id="profile-minifields" class="profile-container is-align-items-center wiki-index is-content" v-else>\n <li v-bind:id="\'profile-minifield-\' + field.id" v-for="field in usableMiniFields" class="minifield-element">\n <span class="minifield-label">{{ field.title }}</span>\n <span class="minifield-content">{{ field.content }}</span>\n </li>\n </ul>\n <div id="profile-userinfo" v-bind:style="\'background-image: url(\' + userCover + \');\'">\n <div id="profile-userdata">\n <div id="profile-rank">{{ userRank }}</div>\n <div id="profile-username">{{ profile.name }}</div>\n </div>\n <div id="profile-usergest" v-if="Object.keys(profile.admin).length">\n <a v-bind:href="profile.admin.admin" v-bind:title="\'Administrar a «\' + profile.name + \'»\'" target="_blank">Administrar</a> / <a v-bind:href="profile.admin.ban" v-bind:title="\'Banear a «\' + profile.name + \'»\'" target="_blank">Banear</a>\n </div>\n </div>\n </section>\n <section id="profile-subhead">\n <div class="columns is-vcentered">\n <div class="column is-6 is-full-mobile">\n <div id="profile-quote" class="is-content">\n <quote>{{ userCite }}</quote>\n </div>\n </div>\n <div class="column is-5 is-offset-1 is-full-mobile is-offset-0-mobile">\n <div class="columns is-flex is-vcentered">\n <div class="column is-half is-half-mobile">\n <ul class="profile-links">\n <li>\n <a v-bind:href="profile.links.posts" v-bind:title="\'Mensajes de «\' + profile.name + \'»\'" target="_blank">\n <i v-bind:class="config.contactFields.mensajes"></i> Mensajes\n </a>\n </li>\n <li>\n <a v-bind:href="profile.links.topics" v-bind:title="\'Temas de «\' + profile.name + \'»\'" target="_blank">\n <i v-bind:class="config.contactFields.temas"></i> Temas\n </a>\n </li>\n <li v-if="profile.contact.mensaje_privado !== undefined">\n <a v-bind:href="profile.contact.mensaje_privado.content" v-bind:title="\'Enviar un mensaje privado a «\' + profile.name + \'»\'" target="_blank">\n <i v-bind:class="config.contactFields.mp"></i> Mensaje Privado\n </a>\n </li>\n </ul>\n </div>\n <div class="column is-half is-half-mobile">\n <ul class="profile-links">\n <li v-bind:id="\'profile-link-\' + field.id" v-for="field in usableLinkFields">\n <a v-bind:href="field.url" v-bind:title="field.desc" target="_blank">\n <i v-bind:class="field.icon"></i> {{ field.title }}\n </a>\n </li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n </section>\n <section id="profile-fields" class="profile-container is-relative" v-if="lengthBigFields">\n <a id="anchor-info" class="page-anchor"></a>\n <aside id="profile-infominifields" class="wiki-index profile-sticky">\n <h3>Datos básicos</h3>\n <ul class="p-0">\n <li v-bind:id="\'profile-minifield-\' + field.id" v-for="field in usableMiniFields" class="minifield-element">\n <span class="minifield-label">{{ field.title }}</span>\n <span class="minifield-content">{{ field.content }}</span>\n </li>\n </ul>\n </aside>\n <ul id="profile-infofields">\n <li v-bind:id="\'profile-field-\' + field.id" class="profilefield-element" v-for="field in usableBigFields" v-if="field.content.length">\n <div class="field-head">\n <h4>{{ field.title }}</h4>\n <h6>{{ field.subtitle }}</h6>\n </div>\n <div class="field-content is-content" v-html="field.content"></div>\n </li>\n </ul>\n </section>\n <section id="profile-extras" class="profile-extra is-relative" v-if="lengthExtraFields">\n <a id="anchor-extras" class="page-anchor"></a>\n <div class="profile-extra-header">\n <span>Extras</span>\n </div>\n <ul class="profile-container profile-extra-space">\n <li v-bind:id="\'profile-extrafield-\' + field.id" class="extrafield-element" v-for="field in usableExtraFields" v-if="field.content.length">\n <div class="extrafield-head">\n <h4>{{ field.title }}</h4>\n </div>\n <div class="extrafield-content is-content" v-html="field.content"></div>\n </li>\n </ul>\n </section>\n <section id="profile-history" class="profile-extra is-relative" v-if="lengthHistoryFields">\n <a id="anchor-history" class="page-anchor"></a>\n <div class="profile-extra-header">\n <span>Historial</span>\n </div>\n <ul class="profile-container profile-extra-space">\n <li id="profile-extrafield-chronology" class="extrafield-element" v-if="chronologyField.length">\n <div class="extrafield-head">\n <h4>Cronología</h4>\n </div>\n <ul id="chronology-element" class="is-two-columns-list">\n <template v-for="element in chronologyField">\n <elemento-cronologia v-bind:data-element="element" data-type="profile" />\n </template>\n </ul>\n </li>\n <li id="profile-extrafield-relationships" class="extrafield-element" v-if="relationshipsField.length">\n <div class="extrafield-head">\n <h4>Relaciones</h4>\n </div>\n <ul id="relationships-element" class="is-two-columns-list">\n <template v-for="element in relationshipsField">\n <elemento-relaciones v-bind:data-element="element" data-type="profile" />\n </template>\n </ul>\n </li>\n </ul>\n </section>\n </section>\n </section>\n '}),Vue.component("cuerpo-principal",{props:["dataTitle"],computed:{title:function(){return void 0===this.dataTitle?"":this.dataTitle}},template:' \n <div class="main-slat">\n <div class="mainslat-title" v-if="title.length">{{ title }}</div>\n <div class="mainslat-content">\n <slot></slot>\n </div>\n </div>\n '}),Vue.component("cuerpo-interior",{props:["dataTitle"],computed:{title:function(){return void 0===this.dataTitle?"":this.dataTitle}},template:' \n <div class="slat-interior">\n <div class="slatinterior-title" v-if="title.length">{{ title }}</div>\n <div class="slatinterior-content">\n <slot></slot>\n </div>\n </div>\n '}),Vue.component("cuerpo-lista",{props:["dataTitle"],computed:{title:function(){return void 0===this.dataTitle?"":this.dataTitle}},template:' \n <div class="slat-list">\n <div class="slatlist-title" v-if="title.length">{{ title }}</div>\n <ol class="slatlist-content">\n <slot></slot>\n </ol>\n </div>\n '});
@@ -2,7 +2,7 @@ Vue.component('tema', {
2
2
  props: ['dataType', 'dataUrl', 'dataName', 'dataDate'],
3
3
  template: `
4
4
  <div class="rp-list">
5
- <a class="rp-element" v-bind:href="dataUrl" target="_blank" v-bind:title="'Ir al tema «' + dataName + '»'">
5
+ <a class="rp-element" :href="dataUrl" target="_blank" :title="'Ir al tema «' + dataName + '»'">
6
6
  <div class="rp-icon">
7
7
  <template v-if="dataType === 'abierto'">
8
8
  <i class="fas fa-lock-open"></i>
@@ -43,10 +43,10 @@ Vue.component('relacion', {
43
43
  }
44
44
  },
45
45
  template: `
46
- <div v-bind:class="relaClass">
46
+ <div :class="relaClass">
47
47
  <template v-if="relaType">
48
- <a class="rela-element" v-bind:href="'/u' + dataId" target="_blank" v-bind:title="'Ir al ' + profileName + ' de «' + dataName + '»'">
49
- <div class="rela-image" v-bind:style="'background-image: url(' + dataImg + ')'"></div>
48
+ <a class="rela-element" :href="'/u' + dataId" target="_blank" :title="'Ir al ' + profileName + ' de «' + dataName + '»'">
49
+ <div class="rela-image" :style="'background-image: url(' + dataImg + ')'"></div>
50
50
  <div class="rela-content">
51
51
  <div class="rela-title">
52
52
  <h4>{{ dataName }}</h4>
@@ -59,7 +59,7 @@ Vue.component('relacion', {
59
59
  </template>
60
60
  <template v-else>
61
61
  <a class="rela-element">
62
- <div class="rela-image" v-bind:style="'background-image: url(' + dataImg + ')'"></div>
62
+ <div class="rela-image" :style="'background-image: url(' + dataImg + ')'"></div>
63
63
  <div class="rela-content">
64
64
  <div class="rela-title">
65
65
  <h4>{{ dataName }}</h4>
@@ -1 +1 @@
1
- Vue.component("tema",{props:["dataType","dataUrl","dataName","dataDate"],template:'\n <div class="rp-list">\n <a class="rp-element" v-bind:href="dataUrl" target="_blank" v-bind:title="\'Ir al tema «\' + dataName + \'»\'">\n <div class="rp-icon">\n <template v-if="dataType === \'abierto\'">\n <i class="fas fa-lock-open"></i>\n </template>\n <template v-else-if="dataType === \'cerrado\'">\n <i class="fas fa-lock"></i>\n </template>\n <template v-else-if="dataType === \'abandonado\'">\n <i class="fas fa-times"></i>\n </template>\n </div>\n <div class="rp-content">\n <div class="rp-name">\n <span>{{ dataName }}</span>\n <small>\n {{ dataDate }} - <slot></slot>\n </small>\n </div>\n </div>\n </a>\n </div>\n '}),Vue.component("relacion",{props:["dataId","dataName","dataImg","dataColor"],data:function(){return{profileName:forumConfig.profileOptions.profileName||"perfil"}},computed:{relaClass:function(){return"rela-list usergroup-"+this.dataColor.toLowerCase()},relaType:function(){return void 0!==this.dataId}},template:'\n <div v-bind:class="relaClass">\n <template v-if="relaType">\n <a class="rela-element" v-bind:href="\'/u\' + dataId" target="_blank" v-bind:title="\'Ir al \' + profileName + \' de «\' + dataName + \'»\'">\n <div class="rela-image" v-bind:style="\'background-image: url(\' + dataImg + \')\'"></div>\n <div class="rela-content">\n <div class="rela-title">\n <h4>{{ dataName }}</h4>\n </div>\n <div class="small-text is-content">\n <slot></slot>\n </div>\n </div>\n </a>\n </template>\n <template v-else>\n <a class="rela-element">\n <div class="rela-image" v-bind:style="\'background-image: url(\' + dataImg + \')\'"></div>\n <div class="rela-content">\n <div class="rela-title">\n <h4>{{ dataName }}</h4>\n </div>\n <div class="small-text is-content">\n <slot></slot>\n </div>\n </div>\n </a>\n </template>\n </div>\n '});
1
+ Vue.component("tema", { props: ["dataType", "dataUrl", "dataName", "dataDate"], template: '\n <div class="rp-list">\n <a class="rp-element" :href="dataUrl" target="_blank" :title="\'Ir al tema «\' + dataName + \'»\'">\n <div class="rp-icon">\n <template v-if="dataType === \'abierto\'">\n <i class="fas fa-lock-open"></i>\n </template>\n <template v-else-if="dataType === \'cerrado\'">\n <i class="fas fa-lock"></i>\n </template>\n <template v-else-if="dataType === \'abandonado\'">\n <i class="fas fa-times"></i>\n </template>\n </div>\n <div class="rp-content">\n <div class="rp-name">\n <span>{{ dataName }}</span>\n <small>\n {{ dataDate }} - <slot></slot>\n </small>\n </div>\n </div>\n </a>\n </div>\n ' }), Vue.component("relacion", { props: ["dataId", "dataName", "dataImg", "dataColor"], data: function () { return { profileName: forumConfig.profileOptions.profileName || "perfil" } }, computed: { relaClass: function () { return "rela-list usergroup-" + this.dataColor.toLowerCase() }, relaType: function () { return void 0 !== this.dataId } }, template: '\n <div :class="relaClass">\n <template v-if="relaType">\n <a class="rela-element" :href="\'/u\' + dataId" target="_blank" :title="\'Ir al \' + profileName + \' de «\' + dataName + \'»\'">\n <div class="rela-image" :style="\'background-image: url(\' + dataImg + \')\'"></div>\n <div class="rela-content">\n <div class="rela-title">\n <h4>{{ dataName }}</h4>\n </div>\n <div class="small-text is-content">\n <slot></slot>\n </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(\' + dataImg + \')\'"></div>\n <div class="rela-content">\n <div class="rela-title">\n <h4>{{ dataName }}</h4>\n </div>\n <div class="small-text is-content">\n <slot></slot>\n </div>\n </div>\n </a>\n </template>\n </div>\n ' });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "generic-skin",
3
- "version": "2.5.1",
3
+ "version": "3.0.0",
4
4
  "description": "Generic Forum Skin for Forumotion created by Gaylien.",
5
5
  "main": "readme.md",
6
6
  "scripts": {