generic-skin 5.0.28 → 5.1.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.
@@ -73,4 +73,9 @@ Vue.filter('turn-br', (value) => {
73
73
  Vue.filter('mini-sanitize', (value) => {
74
74
  if (!value || typeof value !== 'string') return value;
75
75
  else return value.replace(/</g, '&lt;').replace(/>/g, '&gt;');
76
+ });
77
+
78
+ Vue.filter('twist-field', (value) => {
79
+ if (!value || typeof value !== 'string') return value;
80
+ else return value.split(' — ').reverse().join(' — ');
76
81
  });
@@ -1 +1 @@
1
- Vue.filter("to-number",e=>e&&"string"==typeof e?parseFloat(e):e),Vue.filter("in-two-digits",e=>null===e||"string"==typeof e?e:e>9?e:"0"+e),Vue.filter("max-two-digits",e=>e&&"string"==typeof e&&parseFloat(e)>99?[e.toString.split("")[0],e.toString.split("")[1]].join():e),Vue.filter("just-name",e=>e&&"string"==typeof e?"Anonymous"===e?"Invitado":!e.includes(" ")&&e.length<9?e:!e.includes(" ")&&e.includes("-")?e.split("-")[0].length<3?e.split("-")[1]:e.split("-")[0]:!e.includes(" ")&&e.includes("'")?e.split("'")[0].length<3?e.split("'")[1]:e.split("'")[0]:e.includes(" ")?e.split(" ")[0].length<3?e.split(" ")[1]:e.split(" ")[0]:e:e),Vue.filter("capitalize",e=>e&&"string"==typeof e?"¿"===e.charAt(0)||"¡"===e.charAt(0)?e.charAt(0)+e.charAt(1).toUpperCase()+e.slice(2).toLowerCase():e.charAt(0).toUpperCase()+e.slice(1).toLowerCase():e),Vue.filter("url-to-normal",e=>e&&"string"==typeof e?e.replace(/[\?\&]change_version=invision/,""):e),Vue.filter("url-to-invision",e=>e&&"string"==typeof e?e.split("#")[0]+"?change_version=invision#"+e.split("#")[1]:e),Vue.filter("tray-title",e=>e&&"string"==typeof e?e.indexOf("bandeja de entrada")>-1?"Bandeja de Entrada":e.indexOf("bandeja de recepción")>-1?"Bandeja de Entrada":e.indexOf("andeja de Mensajes enviados")>-1?"Elementos Enviados":e.indexOf("andeja de envío")>-1?"Bandeja de Envio":e.indexOf("andeja de elementos guardados")>-1?"Elementos Guardados":void 0:e),Vue.filter("tray-percent",e=>e&&"string"==typeof e?-1===e.indexOf("vacía")?e.match(/[\d]+/)[0]:0:e),Vue.filter("search-from",e=>e&&"string"==typeof e?e.split(" para ")[1]:e),Vue.filter("search-number",e=>e&&"string"==typeof e?e+` resultado${1===parseFloat(e)?"":"s"}`:e),Vue.filter("turn-br",e=>e&&"string"==typeof e?e.replace(/\n/g,"<br>"):e),Vue.filter("mini-sanitize",e=>e&&"string"==typeof e?e.replace(/</g,"&lt;").replace(/>/g,"&gt;"):e);
1
+ Vue.filter("to-number",e=>e&&"string"==typeof e?parseFloat(e):e),Vue.filter("in-two-digits",e=>null===e||"string"==typeof e?e:e>9?e:"0"+e),Vue.filter("max-two-digits",e=>e&&"string"==typeof e&&parseFloat(e)>99?[e.toString.split("")[0],e.toString.split("")[1]].join():e),Vue.filter("just-name",e=>e&&"string"==typeof e?"Anonymous"===e?"Invitado":!e.includes(" ")&&e.length<9?e:!e.includes(" ")&&e.includes("-")?e.split("-")[0].length<3?e.split("-")[1]:e.split("-")[0]:!e.includes(" ")&&e.includes("'")?e.split("'")[0].length<3?e.split("'")[1]:e.split("'")[0]:e.includes(" ")?e.split(" ")[0].length<3?e.split(" ")[1]:e.split(" ")[0]:e:e),Vue.filter("capitalize",e=>e&&"string"==typeof e?"¿"===e.charAt(0)||"¡"===e.charAt(0)?e.charAt(0)+e.charAt(1).toUpperCase()+e.slice(2).toLowerCase():e.charAt(0).toUpperCase()+e.slice(1).toLowerCase():e),Vue.filter("url-to-normal",e=>e&&"string"==typeof e?e.replace(/[\?\&]change_version=invision/,""):e),Vue.filter("url-to-invision",e=>e&&"string"==typeof e?e.split("#")[0]+"?change_version=invision#"+e.split("#")[1]:e),Vue.filter("tray-title",e=>e&&"string"==typeof e?e.indexOf("bandeja de entrada")>-1?"Bandeja de Entrada":e.indexOf("bandeja de recepción")>-1?"Bandeja de Entrada":e.indexOf("andeja de Mensajes enviados")>-1?"Elementos Enviados":e.indexOf("andeja de envío")>-1?"Bandeja de Envio":e.indexOf("andeja de elementos guardados")>-1?"Elementos Guardados":void 0:e),Vue.filter("tray-percent",e=>e&&"string"==typeof e?-1===e.indexOf("vacía")?e.match(/[\d]+/)[0]:0:e),Vue.filter("search-from",e=>e&&"string"==typeof e?e.split(" para ")[1]:e),Vue.filter("search-number",e=>e&&"string"==typeof e?e+` resultado${1===parseFloat(e)?"":"s"}`:e),Vue.filter("turn-br",e=>e&&"string"==typeof e?e.replace(/\n/g,"<br>"):e),Vue.filter("mini-sanitize",e=>e&&"string"==typeof e?e.replace(/</g,"&lt;").replace(/>/g,"&gt;"):e),Vue.filter("twist-field",e=>e&&"string"==typeof e?e.split(" — ").reverse().join(" — "):e);
@@ -174,7 +174,7 @@ Vue.component('directorio-personajes', {
174
174
  <img :src="character.avatar" :alt="'Avatar de «' + character.name + '»'" class="memberlist-avatar">
175
175
  <ul class="memberlist-fields">
176
176
  <li v-for="field in directoryFields" :key="field" :class="'memberlist-field field-' + genSlug(character.fields[field].name)">
177
- <strong>{{ character.fields[field].name }}:</strong> {{ character.fields[field].content }}
177
+ <strong>{{ character.fields[field].name }}:</strong> {{ character.fields[field].content | twist-field }}
178
178
  </li>
179
179
  </ul>
180
180
  </a>
@@ -1 +1 @@
1
- Vue.component("directorio-personajes",{data:()=>({loading:!0,config:forumConfig,logged:""!==_userdata.groupcolor,busqueda:{name:"",faceClaim:"",user:-1,group:-1},characters:[],users:[]}),computed:{directoryFields(){const e=this.config.profileUser.directoryFields;return this.logged&&e.unshift("usuario"),e},filteredCharacters(){if(!this.busqueda.name&&!this.busqueda.faceClaim&&-1===this.busqueda.user&&-1===this.busqueda.group)return this.characters;const e=this.busqueda.name.toLowerCase(),a=this.busqueda.faceClaim.toLowerCase();return this.characters.filter(s=>s.name.toLowerCase().includes(e)&&s.fields.face_claim.content.toLowerCase().includes(a)&&(-1===this.busqueda.user||s.fields.usuario.content===this.busqueda.user)&&(-1===this.busqueda.group||s.colour===forumConfig.profileUser.forumGroups[this.busqueda.group].group))},availableUsers(){const e=new Set(this.characters.map(e=>e.fields.usuario.content));return e}},methods:{async obtainCharacters(){let e;try{e=await FNR.cache.useData("members",.25)}catch(a){e=null}e||(e=await FNR.forum.getMembers(),FNR.cache.setData("members",e,.25));const a=await Promise.allSettled(e.map(e=>FNR.user.getProfile(e.id.replace("/u",""),.25)));this.characters=a.filter(e=>"fulfilled"===e.status).map(e=>e.value),this.loading=!1},updateParams(e,a){const s=new URL(window.location.href);a?s.searchParams.set(e,a):s.searchParams.delete(e),window.history.replaceState({},"",s)},genSlug:e=>FNR.utility.genSlug(e,"-")},created(){this.obtainCharacters()},mounted(){document.title="Directorio de Personajes";const e=new URL(window.location.href);e.searchParams.has("group")&&(this.busqueda.group=e.searchParams.get("group")),e.searchParams.has("user")&&this.logged?this.busqueda.user=e.searchParams.get("user"):e.searchParams.has("user")&&this.updateParams("user")},updated(){FNR.behaviour.genMeassure()},template:'\n <section id="directory-section" class="basic-element">\n <section v-if="!loading" class="generic-element">\n <cabespecial-foro>\n <template slot="title">Directorio de Personajes</template>\n </cabespecial-foro>\n <section id="memberlist-options" class="field-block">\n <ul class="forum-fieldlist no-style">\n <li class="field-element field-nombre">\n <div class="forum-field">\n <div class="field-name">Nombre</div>\n <div class="field-content">\n <input type="text" :disabled="busqueda.faceClaim !== \'\'" v-model="busqueda.name" placeholder="Buscar por nombre de personaje">\n </div>\n </div>\n </li>\n <li class="field-element field-faceclaim">\n <div class="forum-field">\n <div class="field-name">Face claim</div>\n <div class="field-content">\n <input type="text" :disabled="busqueda.name !== \'\'" v-model="busqueda.faceClaim" placeholder="Buscar por face claim">\n </div>\n </div>\n </li>\n <li v-if="logged" class="field-element field-usuario">\n <div class="forum-field">\n <div class="field-name">Usuario</div>\n <div class="field-content">\n <div class="select-container">\n <select v-model="busqueda.user" @change="updateParams(\'user\', busqueda.user !== -1 ? busqueda.user : null)">\n <option value="-1" selected="selected" hidden="hidden">Buscar por usuario</option>\n <option v-for="user in availableUsers" :key="user" :value="user">{{ user }}</option>\n </select>\n </div>\n </div>\n </div>\n </li>\n <li class="field-element field-group">\n <div class="forum-field">\n <div class="field-name">Grupo</div>\n <div class="field-content">\n <div class="select-container">\n <select v-model="busqueda.group" @change="updateParams(\'group\', busqueda.group !== -1 ? busqueda.group : null)">\n <option value="-1" selected="selected" hidden="hidden">Buscar por grupo</option>\n <option v-for="group in Object.values(config.profileUser.forumGroups)" :key="group.name" :value="genSlug(group.name)">{{ group.name }}</option>\n </select>\n </div>\n </div>\n </div>\n </li>\n </ul>\n \t\t<div id="usereply-comand">\n <button class="button2 btn-main" @click="busqueda.name = \'\'; busqueda.faceClaim = \'\'; busqueda.user = -1; busqueda.group = -1; updateParams(\'group\'); updateParams(\'user\')">Reiniciar</button>\n \t\t</div>\n </section>\n <separador-foro />\n <cabecera-foro>\n <template slot="title">Listado</template>\n </cabecera-foro>\n <section class="forum-memberlist">\n <ul :class="\'memberlist-members no-style\' + (filteredCharacters.length ? \'\' : \' no-results\')">\n <li v-if="!filteredCharacters.length">\n <h6>No hay personajes que coincidan con la búsqueda.</h6>\n </li>\n <li v-else v-for="character in filteredCharacters" :key="character.name" class="row">\n <a :href="character.links.profile" target="_blank" :title="\'Ir al \' + config.profileOptions.profileName + \' de «\' + character.name + \'»\'" :class="\'memberitem-element usergroup-\' + character.colour">\n <div class="memberlist-name">\n <h3 class="is-tweakeable">\n <span class="is-measurable">{{ character.name }}</span>\n </h3>\n </div>\n <img :src="character.avatar" :alt="\'Avatar de «\' + character.name + \'»\'" class="memberlist-avatar">\n <ul class="memberlist-fields">\n <li v-for="field in directoryFields" :key="field" :class="\'memberlist-field field-\' + genSlug(character.fields[field].name)">\n <strong>{{ character.fields[field].name }}:</strong> {{ character.fields[field].content }}\n </li>\n </ul>\n </a>\n </li>\n </ul>\n </section>\n </section>\n <section v-else class="generic-element">\n <cabespecial-foro>\n <template slot="title">Directorio de Personajes</template>\n </cabespecial-foro>\n <separador-foro />\n <cargando-foro text="Cargando utilidad…"></cargando-foro>\n </section>\n </section>\n '});
1
+ Vue.component("directorio-personajes",{data:()=>({loading:!0,config:forumConfig,logged:""!==_userdata.groupcolor,busqueda:{name:"",faceClaim:"",user:-1,group:-1},characters:[],users:[]}),computed:{directoryFields(){const e=this.config.profileUser.directoryFields;return this.logged&&e.unshift("usuario"),e},filteredCharacters(){if(!this.busqueda.name&&!this.busqueda.faceClaim&&-1===this.busqueda.user&&-1===this.busqueda.group)return this.characters;const e=this.busqueda.name.toLowerCase(),a=this.busqueda.faceClaim.toLowerCase();return this.characters.filter(s=>s.name.toLowerCase().includes(e)&&s.fields.face_claim.content.toLowerCase().includes(a)&&(-1===this.busqueda.user||s.fields.usuario.content===this.busqueda.user)&&(-1===this.busqueda.group||s.colour===forumConfig.profileUser.forumGroups[this.busqueda.group].group))},availableUsers(){const e=new Set(this.characters.map(e=>e.fields.usuario.content));return e}},methods:{async obtainCharacters(){let e;try{e=await FNR.cache.useData("members",.25)}catch(a){e=null}e||(e=await FNR.forum.getMembers(),FNR.cache.setData("members",e,.25));const a=await Promise.allSettled(e.map(e=>FNR.user.getProfile(e.id.replace("/u",""),.25)));this.characters=a.filter(e=>"fulfilled"===e.status).map(e=>e.value),this.loading=!1},updateParams(e,a){const s=new URL(window.location.href);a?s.searchParams.set(e,a):s.searchParams.delete(e),window.history.replaceState({},"",s)},genSlug:e=>FNR.utility.genSlug(e,"-")},created(){this.obtainCharacters()},mounted(){document.title="Directorio de Personajes";const e=new URL(window.location.href);e.searchParams.has("group")&&(this.busqueda.group=e.searchParams.get("group")),e.searchParams.has("user")&&this.logged?this.busqueda.user=e.searchParams.get("user"):e.searchParams.has("user")&&this.updateParams("user")},updated(){FNR.behaviour.genMeassure()},template:'\n <section id="directory-section" class="basic-element">\n <section v-if="!loading" class="generic-element">\n <cabespecial-foro>\n <template slot="title">Directorio de Personajes</template>\n </cabespecial-foro>\n <section id="memberlist-options" class="field-block">\n <ul class="forum-fieldlist no-style">\n <li class="field-element field-nombre">\n <div class="forum-field">\n <div class="field-name">Nombre</div>\n <div class="field-content">\n <input type="text" :disabled="busqueda.faceClaim !== \'\'" v-model="busqueda.name" placeholder="Buscar por nombre de personaje">\n </div>\n </div>\n </li>\n <li class="field-element field-faceclaim">\n <div class="forum-field">\n <div class="field-name">Face claim</div>\n <div class="field-content">\n <input type="text" :disabled="busqueda.name !== \'\'" v-model="busqueda.faceClaim" placeholder="Buscar por face claim">\n </div>\n </div>\n </li>\n <li v-if="logged" class="field-element field-usuario">\n <div class="forum-field">\n <div class="field-name">Usuario</div>\n <div class="field-content">\n <div class="select-container">\n <select v-model="busqueda.user" @change="updateParams(\'user\', busqueda.user !== -1 ? busqueda.user : null)">\n <option value="-1" selected="selected" hidden="hidden">Buscar por usuario</option>\n <option v-for="user in availableUsers" :key="user" :value="user">{{ user }}</option>\n </select>\n </div>\n </div>\n </div>\n </li>\n <li class="field-element field-group">\n <div class="forum-field">\n <div class="field-name">Grupo</div>\n <div class="field-content">\n <div class="select-container">\n <select v-model="busqueda.group" @change="updateParams(\'group\', busqueda.group !== -1 ? busqueda.group : null)">\n <option value="-1" selected="selected" hidden="hidden">Buscar por grupo</option>\n <option v-for="group in Object.values(config.profileUser.forumGroups)" :key="group.name" :value="genSlug(group.name)">{{ group.name }}</option>\n </select>\n </div>\n </div>\n </div>\n </li>\n </ul>\n \t\t<div id="usereply-comand">\n <button class="button2 btn-main" @click="busqueda.name = \'\'; busqueda.faceClaim = \'\'; busqueda.user = -1; busqueda.group = -1; updateParams(\'group\'); updateParams(\'user\')">Reiniciar</button>\n \t\t</div>\n </section>\n <separador-foro />\n <cabecera-foro>\n <template slot="title">Listado</template>\n </cabecera-foro>\n <section class="forum-memberlist">\n <ul :class="\'memberlist-members no-style\' + (filteredCharacters.length ? \'\' : \' no-results\')">\n <li v-if="!filteredCharacters.length">\n <h6>No hay personajes que coincidan con la búsqueda.</h6>\n </li>\n <li v-else v-for="character in filteredCharacters" :key="character.name" class="row">\n <a :href="character.links.profile" target="_blank" :title="\'Ir al \' + config.profileOptions.profileName + \' de «\' + character.name + \'»\'" :class="\'memberitem-element usergroup-\' + character.colour">\n <div class="memberlist-name">\n <h3 class="is-tweakeable">\n <span class="is-measurable">{{ character.name }}</span>\n </h3>\n </div>\n <img :src="character.avatar" :alt="\'Avatar de «\' + character.name + \'»\'" class="memberlist-avatar">\n <ul class="memberlist-fields">\n <li v-for="field in directoryFields" :key="field" :class="\'memberlist-field field-\' + genSlug(character.fields[field].name)">\n <strong>{{ character.fields[field].name }}:</strong> {{ character.fields[field].content | twist-field }}\n </li>\n </ul>\n </a>\n </li>\n </ul>\n </section>\n </section>\n <section v-else class="generic-element">\n <cabespecial-foro>\n <template slot="title">Directorio de Personajes</template>\n </cabespecial-foro>\n <separador-foro />\n <cargando-foro text="Cargando utilidad…"></cargando-foro>\n </section>\n </section>\n '});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "generic-skin",
3
- "version": "5.0.28",
3
+ "version": "5.1.0",
4
4
  "description": "Generic Forum Skin for Forumotion created by Gaylien.",
5
5
  "license": "ISC",
6
6
  "author": "Gaylien",