generic-skin 2.5.3 → 2.9.56

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,9 +1,9 @@
1
1
  /* Estructura del foro */
2
2
  Vue.component('categoria-foro', {
3
- props: ['dataId'],
3
+ props: ['id'],
4
4
  computed: {
5
- slugName: function () {
6
- const name = (this.dataId.indexOf('<h2>') > -1 ? FNR.utility.genSlug(this.dataId.split('<h2>')[1].split('</h2>')[0], '-') : FNR.utility.genSlug(this.dataId, '-'));
5
+ slugName() {
6
+ const name = (this.id.indexOf('<h2>') > -1 ? FNR.utility.genSlug(this.id.split('<h2>')[1].split('</h2>')[0], '-') : FNR.utility.genSlug(this.id, '-'));
7
7
 
8
8
  return 'category-' + name;
9
9
  }
@@ -16,48 +16,48 @@ Vue.component('categoria-foro', {
16
16
  });
17
17
 
18
18
  Vue.component('cabecera-foro', {
19
- data: function () {
19
+ data() {
20
20
  return {
21
- dataTitle: this.$slots['title'][0].tag === undefined ? this.$slots['title'][0].text : this.$slots['title'][0].children[0].text
21
+ title: this.$slots['title'][0].tag === undefined ? this.$slots['title'][0].text : this.$slots['title'][0].children[0].text
22
22
  }
23
23
  },
24
24
  template: `
25
25
  <div class="forum-head regular-head">
26
- <titulo-especial :data-title="dataTitle"></titulo-especial>
26
+ <titulo-especial :title="title"></titulo-especial>
27
27
  </div>
28
28
  `
29
29
  });
30
30
 
31
31
  Vue.component('cabcategoria-foro', {
32
- data: function () {
32
+ data() {
33
33
  return {
34
- dataTitle: this.$slots['title'][0].tag === undefined ? this.$slots['title'][0].text : this.$slots['title'][0].children[0].text
34
+ title: this.$slots['title'][0].tag === undefined ? this.$slots['title'][0].text : this.$slots['title'][0].children[0].text
35
35
  }
36
36
  },
37
37
  template: `
38
38
  <div class="forum-head category-head">
39
- <titulo-especial :data-title="dataTitle"></titulo-especial>
39
+ <titulo-especial :title="title"></titulo-especial>
40
40
  </div>
41
41
  `
42
42
  });
43
43
 
44
44
  Vue.component('cabespecial-foro', {
45
- data: function () {
45
+ data() {
46
46
  return {
47
- dataTitle: this.$slots['title'][0].tag === undefined ? this.$slots['title'][0].text : this.$slots['title'][0].children[0].text
47
+ title: this.$slots['title'][0].tag === undefined ? this.$slots['title'][0].text : this.$slots['title'][0].children[0].text
48
48
  }
49
49
  },
50
50
  template: `
51
51
  <div class="forum-head special-head">
52
- <titulo-especial :data-title="dataTitle"></titulo-especial>
52
+ <titulo-especial :title="title"></titulo-especial>
53
53
  </div>
54
54
  `
55
55
  });
56
56
 
57
57
  Vue.component('subforo-foro', {
58
- props: ['dataId'],
58
+ props: ['id'],
59
59
  computed: {
60
- slugId: function () {
60
+ slugId() {
61
61
  let id = '';
62
62
 
63
63
  if (window.location.pathname.match(/f(\d+)-/)) {
@@ -68,8 +68,8 @@ Vue.component('subforo-foro', {
68
68
 
69
69
  return 'subforum-' + id;
70
70
  },
71
- slugName: function () {
72
- const name = (this.dataId.indexOf('<h2>') > -1 ? FNR.utility.genSlug(this.dataId.split('<h2>')[1].split('</h2>')[0], '-') : FNR.utility.genSlug(this.dataId, '-'));
71
+ slugName() {
72
+ const name = (this.id.indexOf('<h2>') > -1 ? FNR.utility.genSlug(this.id.split('<h2>')[1].split('</h2>')[0], '-') : FNR.utility.genSlug(this.id, '-'));
73
73
 
74
74
  return 'subforum-' + name;
75
75
  }
@@ -82,16 +82,16 @@ Vue.component('subforo-foro', {
82
82
  });
83
83
 
84
84
  Vue.component('lista-temas-cabecera', {
85
- props: ['dataElements'],
86
- data: function () {
85
+ props: ['elements'],
86
+ data() {
87
87
  return {
88
- elementos: JSON.parse(this.dataElements.replace(/'/g, '"'))
88
+ elementos: JSON.parse(this.elements.replace(/'/g, '"'))
89
89
  }
90
90
  },
91
91
  template: `
92
92
  <ul class="topiclist-header no-style">
93
93
  <li v-for="element in elementos">
94
- <titulo-especial :data-title="element"></titulo-especial>
94
+ <titulo-especial :title="element"></titulo-especial>
95
95
  </li>
96
96
  </ul>
97
97
  `
@@ -99,7 +99,7 @@ Vue.component('lista-temas-cabecera', {
99
99
 
100
100
  Vue.component('tema-foro', {
101
101
  computed: {
102
- slugId: function () {
102
+ slugId() {
103
103
  let id = '';
104
104
 
105
105
  if (window.location.pathname.match(/t(\d+)-/)) {
@@ -110,7 +110,7 @@ Vue.component('tema-foro', {
110
110
 
111
111
  return 'topic-' + id;
112
112
  },
113
- slugName: function () {
113
+ slugName() {
114
114
  const name = FNR.utility.genSlug((this.$slots['title'][0].tag === undefined ? this.$slots['title'][0].text : this.$slots['title'][0].children[0].text), '-');
115
115
 
116
116
  return 'topic-' + name;
@@ -124,26 +124,10 @@ Vue.component('tema-foro', {
124
124
  });
125
125
 
126
126
  Vue.component('mando-foro', {
127
- props: ['dataId', 'dataApp'],
128
- data: function () {
129
- return {
130
- children: 0
131
- }
132
- },
133
- computed: {
134
- isStatusClass: function () {
135
- if (this.children > 0) return 'forum-controls';
136
- else return 'forum-controls not-show';
137
- }
138
- },
139
- created() {
140
- Object.values(this.$slots).map((item) => {
141
- this.children += item.length;
142
- });
143
- },
127
+ props: ['id', 'app'],
144
128
  template: `
145
- <section :id="dataId" :class="isStatusClass">
146
- <template v-if="dataApp === 'true'">
129
+ <section :id="id" class="forum-controls">
130
+ <template v-if="app === 'true'">
147
131
  <div class="left page-pagination">
148
132
  <slot name="pagination"></slot>
149
133
  </div>
@@ -161,27 +145,18 @@ Vue.component('mando-foro', {
161
145
 
162
146
  /* Componentes del foro */
163
147
  Vue.component('titulo-especial', {
164
- props: ['dataTitle'],
165
- computed: {
166
- cleaned: function () {
167
- if (this.dataTitle.indexOf('<h2>') > -1) return this.dataTitle.split('<h2>')[1].split('</h2>')[0];
168
- else return this.dataTitle;
169
- },
170
- minimized: function () {
171
- return FNR.utility.genSlug(this.cleaned, ' ');
172
- }
173
- },
148
+ props: ['title'],
174
149
  template: `
175
- <h3 class="is-tweakeable"><span class="is-measurable">{{ cleaned }}</span></h3>
150
+ <h3 class="is-tweakeable"><span class="is-measurable" v-html="title"></span></h3>
176
151
  `
177
152
  });
178
153
 
179
154
  Vue.component('cuerpo-widget', {
180
- props: ['dataClass'],
155
+ props: ['class'],
181
156
  computed: {
182
- currentClass: function () {
183
- if (this.dataClass === undefined) return 'plank-inner';
184
- else return 'plank-inner' + ' ' + this.dataClass;
157
+ currentClass() {
158
+ if (this.class === undefined) return 'plank-inner';
159
+ else return 'plank-inner' + ' ' + this.class;
185
160
  }
186
161
  },
187
162
  template: `
@@ -194,8 +169,8 @@ Vue.component('cuerpo-widget', {
194
169
  });
195
170
 
196
171
  Vue.component('separador-foro', {
197
- props: ['dataFaction'],
198
- data: function () {
172
+ props: ['faction'],
173
+ data() {
199
174
  return {
200
175
  image: forumDefaults.separator
201
176
  }
@@ -208,41 +183,41 @@ Vue.component('separador-foro', {
208
183
  });
209
184
 
210
185
  Vue.component('tema-ref', {
211
- props: ['dataInfo'],
212
- data: function () {
186
+ props: ['info'],
187
+ data() {
213
188
  return {
214
189
  profileName: forumConfig.profileOptions.profileName || 'perfil'
215
190
  }
216
191
  },
217
192
  computed: {
218
- userColor: function () {
219
- return 'color: ' + this.dataInfo.lastpost.who.color;
193
+ userColor() {
194
+ return 'color: ' + this.info.lastpost.who.color;
220
195
  }
221
196
  },
222
197
  template: `
223
198
  <div class="ltopic-element">
224
- <a class="ltopic-last" :href="dataInfo.lastpost.url" target="_blank" :title="'Ir al último mensaje del tema «' + dataInfo.name + '»'">
199
+ <a class="ltopic-last" :href="info.lastpost.url" target="_blank" :title="'Ir al último mensaje del tema «' + info.name + '»'">
225
200
  <i class="fas fa-link"></i>
226
201
  </a>
227
202
  <div class="ltopic-data">
228
- <a class="ltopic-title" :href="dataInfo.url" target="_blank" :title="'Ir al tema «' + dataInfo.name + '»'">{{ dataInfo.name }}</a>
229
- <small class="ltopic-info"><a :href="dataInfo.lastpost.who.url" target="_blank" :style="userColor" :title="'Ir al ' + profileName + ' de «' + dataInfo.lastpost.who.name + '»'">{{ dataInfo.lastpost.who.name | just-name }}</a>, {{ dataInfo.lastpost.date }} en <a :href="dataInfo.forum.url" target="_blank" :title="'Ir al subforo «' + dataInfo.forum.name + '»'">{{ dataInfo.forum.name }}</a></small>
203
+ <a class="ltopic-title" :href="info.url" target="_blank" :title="'Ir al tema «' + info.name + '»'">{{ info.name }}</a>
204
+ <small class="ltopic-info"><a :href="info.lastpost.who.url" target="_blank" :style="userColor" :title="'Ir al ' + profileName + ' de «' + info.lastpost.who.name + '»'">{{ info.lastpost.who.name | just-name }}</a>, {{ info.lastpost.date }} en <a :href="info.forum.url" target="_blank" :title="'Ir al subforo «' + info.forum.name + '»'">{{ info.forum.name }}</a></small>
230
205
  </div>
231
206
  </div>
232
207
  `
233
208
  });
234
209
 
235
210
  Vue.component('campo-foro', {
236
- props: ['dataName'],
211
+ props: ['name'],
237
212
  mounted() {
238
213
  const classList = this.$el.parentElement.classList;
239
214
 
240
215
  classList.add('field-element');
241
- classList.add('field-' + FNR.utility.genSlug(this.dataName, '-'));
216
+ classList.add('field-' + FNR.utility.genSlug(this.name, '-'));
242
217
  },
243
218
  template: `
244
219
  <div class="forum-field">
245
- <div class="field-name">{{ dataName | capitalize }}</div>
220
+ <div class="field-name">{{ name | capitalize }}</div>
246
221
  <div class="field-content">
247
222
  <slot></slot>
248
223
  </div>
@@ -251,33 +226,33 @@ Vue.component('campo-foro', {
251
226
  });
252
227
 
253
228
  Vue.component('boton-foro', {
254
- props: ['dataUrl', 'dataName', 'dataIcon', 'dataType', 'dataInput'],
229
+ props: ['url', 'name', 'icon', 'type', 'input'],
255
230
  computed: {
256
- realClass: function () {
257
- if (this.dataInput === 'true') return 'forum-button is-input';
231
+ realClass() {
232
+ if (this.input === 'true') return 'forum-button is-input';
258
233
  else return 'forum-button';
259
234
  },
260
- realName: function () {
261
- return 'text' + (this.dataType === 'no-name' ? ' is-hidden-touch' : '');
235
+ realName() {
236
+ return 'text' + (this.type === 'no-name' ? ' is-hidden-touch' : '');
262
237
  },
263
- realUrl: function () {
264
- if (this.dataInput === 'true') return 'javascript:{}';
265
- else return this.dataUrl;
238
+ realUrl() {
239
+ if (this.input === 'true') return 'javascript:{}';
240
+ else return this.url;
266
241
  }
267
242
  },
268
243
  mounted() {
269
244
  const classList = this.$el.parentElement.classList;
270
245
 
271
246
  classList.add('btn-element');
272
- classList.add('btn-' + FNR.utility.genSlug(this.dataName, '-'));
247
+ classList.add('btn-' + FNR.utility.genSlug(this.name, '-'));
273
248
  },
274
249
  template: `
275
- <a :href="realUrl" targer="_blank" :class="realClass" :title="dataName">
250
+ <a :href="realUrl" targer="_blank" :class="realClass" :title="name">
276
251
  <span class="icon">
277
- <i :class="dataIcon"></i>
252
+ <i :class="icon"></i>
278
253
  </span>
279
- <span :class="realName">{{ dataName }}</span>
280
- <span v-if="dataInput === 'true'" class="input-real">
254
+ <span :class="realName">{{ name }}</span>
255
+ <span v-if="input === 'true'" class="input-real">
281
256
  <slot name="input"></slot>
282
257
  </span>
283
258
  </a>
@@ -285,12 +260,12 @@ Vue.component('boton-foro', {
285
260
  });
286
261
 
287
262
  Vue.component('cargando-foro', {
288
- props: ['dataText'],
263
+ props: ['text'],
289
264
  template: `
290
265
  <section id="loading-element">
291
266
  <div id="loading-content">
292
267
  <i class="fas fa-circle-notch fa-spin"></i>
293
- <span>{{ dataText }}</span>
268
+ <span>{{ text }}</span>
294
269
  </div>
295
270
  </section>
296
271
  `
@@ -306,7 +281,7 @@ Vue.component('aviso-foro', {
306
281
  });
307
282
 
308
283
  Vue.component('afiliaciones-foro', {
309
- data: function () {
284
+ data() {
310
285
  return {
311
286
  afis: {}
312
287
  }
@@ -323,7 +298,7 @@ Vue.component('afiliaciones-foro', {
323
298
 
324
299
  /* Navbar del foro */
325
300
  Vue.component('controles-foro', {
326
- data: function () {
301
+ data() {
327
302
  return {
328
303
  maPage: 0,
329
304
  userName: _userdata.username,
@@ -336,12 +311,12 @@ Vue.component('controles-foro', {
336
311
  };
337
312
  },
338
313
  computed: {
339
- isActiveClass: function () {
314
+ isActiveClass() {
340
315
  return 'has-bg' + ((this.isActive) ? ' visible' : ' not-visible');
341
316
  }
342
317
  },
343
318
  methods: {
344
- turnActive: function () {
319
+ turnActive() {
345
320
  this.isActive = (this.isActive) ? false : true;
346
321
  }
347
322
  },
@@ -365,20 +340,20 @@ Vue.component('controles-foro', {
365
340
  </nav>
366
341
  <nav class="right">
367
342
  <section id="forum-navbar-desktop" class="is-hidden-touch">
368
- <navbar-foro :data-username="userName" :data-userlevel="userLevel" :data-userid="userId" :data-userlog="userLog" :data-usermp="userMP" :data-userout="userOut" />
343
+ <navbar-foro :username="userName" :userlevel="userLevel" :userid="userId" :userlog="userLog" :usermp="userMP" :userout="userOut" />
369
344
  </section>
370
345
  <section id="forum-navbar-mobile" class="is-hidden-desktop">
371
- <div id="hmg-button" v-on:click="turnActive()" class="is-pointer">
346
+ <div id="hmg-button" @click="turnActive()" class="is-pointer">
372
347
  <i class="fas fa-bars"></i>
373
348
  </div>
374
349
  <div id="hmg-menu" :class="isActiveClass">
375
- <h3>{{ userName | just-name }}<i class="fas fa-times is-pointer" v-on:click="turnActive()"></i></h3>
376
- <navbar-foro :data-username="userName" :data-userlevel="userLevel" :data-userid="userId" :data-userlog="userLog" :data-usermp="userMP" :data-userout="userOut" />
350
+ <h3>{{ userName | just-name }}<i class="fas fa-times is-pointer" @click="turnActive()"></i></h3>
351
+ <navbar-foro :username="userName" :userlevel="userLevel" :userid="userId" :userlog="userLog" :usermp="userMP" :userout="userOut" />
377
352
  </div>
378
- <div class="bg-active" v-on:click="turnActive()"></div>
353
+ <div class="bg-active" @click="turnActive()"></div>
379
354
  </section>
380
355
  <section v-if="maPage === 1" id="multiaccount-transition">
381
- <cargando-foro data-text="Cambiando de cuenta…"></cargando-foro>
356
+ <cargando-foro text="Cambiando de cuenta…"></cargando-foro>
382
357
  </section>
383
358
  </nav>
384
359
  </div>
@@ -386,11 +361,12 @@ Vue.component('controles-foro', {
386
361
  });
387
362
 
388
363
  Vue.component('navbar-foro', {
389
- props: ['dataUsername', 'dataUserlevel', 'dataUserid', 'dataUserlog', 'dataUsermp', 'dataUserout'],
390
- data: function () {
364
+ props: ['username', 'userlevel', 'userid', 'userlog', 'usermp', 'userout'],
365
+ data() {
391
366
  return {
392
367
  profileName: forumConfig.profileOptions.profileName || 'perfil',
393
368
  items: forumContent.navbar,
369
+ navigation: forumContent.links,
394
370
  directions: forumConfig.usableDirections,
395
371
  multiAccount: {
396
372
  status: false,
@@ -400,23 +376,23 @@ Vue.component('navbar-foro', {
400
376
  }
401
377
  },
402
378
  computed: {
403
- isStatusClass: function () {
404
- return ((this.dataUserlog === 1) ? 'is-logged' : 'is-unlogged') + ((this.dataUserlevel === 1) ? ' is-admin' : ' is-user')
379
+ isStatusClass() {
380
+ return ((this.userlog === 1) ? 'is-logged' : 'is-unlogged') + ((this.userlevel === 1) ? ' is-admin' : ' is-user')
405
381
  },
406
- mpText: function () {
407
- return 'Mensajería' + ((this.dataUsermp !== 0) ? ' (' + this.dataUsermp + ')' : '')
382
+ mpText() {
383
+ return 'Mensajería' + ((this.usermp !== 0) ? ' (' + this.usermp + ')' : '')
408
384
  },
409
- links: function () {
410
- return forumContent.links.filter((item) => {
385
+ links() {
386
+ return this.navigation.filter((item) => {
411
387
  return item.icon !== undefined;
412
388
  });
413
389
  }
414
390
  },
415
391
  methods: {
416
- changeAccount: function () {
392
+ changeAccount() {
417
393
  this.$parent.maPage = 1;
418
394
 
419
- FNR.user.changeAccount(this.dataUserout, this.multiAccount.accounts[this.multiAccount.position].name, this.multiAccount.accounts[this.multiAccount.position].password).then((r) => {
395
+ FNR.user.changeAccount(this.userout, this.multiAccount.accounts[this.multiAccount.position].name, this.multiAccount.accounts[this.multiAccount.position].password).then((r) => {
420
396
  if (r) {
421
397
  window.location.reload();
422
398
  }
@@ -440,7 +416,7 @@ Vue.component('navbar-foro', {
440
416
  },
441
417
  template: `
442
418
  <ul :class="isStatusClass">
443
- <template v-if="!dataUserlog">
419
+ <template v-if="!userlog">
444
420
  <li class="navbar-item">
445
421
  <a href="/register" title="Registrarse en el foro">
446
422
  <div class="icon">
@@ -488,10 +464,10 @@ Vue.component('navbar-foro', {
488
464
  <div class="icon">
489
465
  <i class="fas fa-user"></i>
490
466
  </div>
491
- <div class="text">{{ dataUsername | just-name }}</div>
467
+ <div class="text">{{ username | just-name }}</div>
492
468
  </a>
493
469
  <div class="navbar-dropdown is-right">
494
- <template v-if="dataUserlevel === 1">
470
+ <template v-if="userlevel === 1">
495
471
  <a class="navbar-item" href="/admin" target="_blank" title="Ir al «Panel de Administrador»">
496
472
  <div class="icon">
497
473
  <i class="fas fa-cogs"></i>
@@ -505,7 +481,7 @@ Vue.component('navbar-foro', {
505
481
  </div>
506
482
  <div class="text">Panel Usuario</div>
507
483
  </a>
508
- <a class="navbar-item" :href="'/u' + dataUserid" :title="'Ir a tu ' + profileName">
484
+ <a class="navbar-item" :href="'/u' + userid" :title="'Ir a tu ' + profileName">
509
485
  <div class="icon">
510
486
  <i class="far fa-id-card"></i>
511
487
  </div>
@@ -517,7 +493,7 @@ Vue.component('navbar-foro', {
517
493
  </div>
518
494
  <div class="text">Temas personales</div>
519
495
  </a>
520
- <a class="navbar-item" :href="dataUserout">
496
+ <a class="navbar-item" :href="userout" title="Cerrar sesión">
521
497
  <div class="icon">
522
498
  <i class="fas fa-sign-out-alt"></i>
523
499
  </div>
@@ -526,7 +502,7 @@ Vue.component('navbar-foro', {
526
502
  <template v-if="multiAccount.status">
527
503
  <hr/>
528
504
  <div class="select-container">
529
- <select v-model="multiAccount.position" v-on:change="changeAccount()" v-on:click="$event.stopPropagation()">
505
+ <select v-model="multiAccount.position" @change="changeAccount()" @click="$event.stopPropagation()">
530
506
  <option value="-1" hidden selected>Selec. personaje</option>
531
507
  <option v-for="(account, index) in multiAccount.accounts" :value="index">{{ account.name }}</option>
532
508
  </select>
@@ -541,7 +517,7 @@ Vue.component('navbar-foro', {
541
517
 
542
518
  /* Widgets del foro */
543
519
  Vue.component('links-ayuda', {
544
- data: function () {
520
+ data() {
545
521
  return {
546
522
  links: forumContent.links
547
523
  }
@@ -554,7 +530,7 @@ Vue.component('links-ayuda', {
554
530
  });
555
531
 
556
532
  Vue.component('links-anuncios', {
557
- data: function () {
533
+ data() {
558
534
  return {
559
535
  announcements: forumContent.announcements
560
536
  }
@@ -570,7 +546,7 @@ Vue.component('links-anuncios', {
570
546
  });
571
547
 
572
548
  Vue.component('links-staff', {
573
- data: function () {
549
+ data() {
574
550
  return {
575
551
  staff: forumContent.staff
576
552
  }
@@ -583,47 +559,35 @@ Vue.component('links-staff', {
583
559
  });
584
560
 
585
561
  Vue.component('sabias-que', {
586
- data: function () {
562
+ data() {
587
563
  return {
588
- content: forumContent.sq,
589
- position: forumContent.sq[Math.floor(Math.random() * forumContent.sq.length)]
590
- }
591
- },
592
- computed: {
593
- current: function () {
594
- return this.content[this.position];
564
+ content: forumContent.sq[Math.floor(Math.random() * forumContent.sq.length)]
595
565
  }
596
566
  },
597
567
  created() {
598
568
  setInterval(() => {
599
- this.position = this.content[Math.floor(Math.random() * this.content.length)];
569
+ this.content = forumContent.sq[Math.floor(Math.random() * forumContent.sq.length)];
600
570
  }, 12000);
601
571
  },
602
572
  template: `
603
- <img id="sq-img" :src="current" alt="¿Sabías que?" />
573
+ <img id="sq-img" :src="content" alt="¿Sabías que?" />
604
574
  `
605
575
  });
606
576
 
607
577
  Vue.component('busquedas', {
608
- data: function () {
578
+ data() {
609
579
  return {
610
- content: forumContent.searches,
611
- position: forumContent.searches[Math.floor(Math.random() * forumContent.searches.length)]
612
- }
613
- },
614
- computed: {
615
- current: function () {
616
- return this.content[this.position];
580
+ content: forumContent.searches[Math.floor(Math.random() * forumContent.searches.length)]
617
581
  }
618
582
  },
619
583
  created() {
620
584
  setInterval(() => {
621
- this.position = this.content[Math.floor(Math.random() * this.content.length)];
585
+ this.content = forumContent.searches[Math.floor(Math.random() * forumContent.searches.length)];
622
586
  }, 16000);
623
587
  },
624
588
  template: `
625
- <a id="search-img" :href="current.url" target="_blank" :title="current.desc">
626
- <img :src="current.img" alt="Búsqueda" />
589
+ <a id="search-img" :href="content.url" target="_blank" :title="content.desc">
590
+ <img :src="content.img" alt="Búsqueda" />
627
591
  </a>
628
592
  `
629
593
  });
@@ -641,16 +605,16 @@ Vue.component('note-info', {
641
605
  });
642
606
 
643
607
  Vue.component('redirect', {
644
- props: ['dataTo'],
608
+ props: ['to'],
645
609
  computed: {
646
- currentStatus: function () {
610
+ currentStatus() {
647
611
  if (window.location.pathname.match(/t(\d+)-/)) return true;
648
612
  else return false;
649
613
  }
650
614
  },
651
615
  created() {
652
616
  if (this.currentStatus) {
653
- window.location.replace(this.dataTo);
617
+ window.location.replace(this.to);
654
618
  }
655
619
  },
656
620
  template: `
@@ -663,7 +627,7 @@ Vue.component('redirect', {
663
627
  });
664
628
 
665
629
  Vue.component('quote', {
666
- props: ['dataFrom', 'from'],
630
+ props: ['from'],
667
631
  template: `
668
632
  <div class="admin-block admin-box user-coolquote">
669
633
  <div class="coolquote-quote">
@@ -673,17 +637,17 @@ Vue.component('quote', {
673
637
  </div>
674
638
  <div class="fas fa-quote-right"></div>
675
639
  </div>
676
- <div class="coolquote-from">{{ dataFrom }}{{ from }}</div>
640
+ <div class="coolquote-from">{{ from }}</div>
677
641
  </div>
678
642
  `
679
643
  });
680
644
 
681
645
  /* Wiki del foro */
682
646
  Vue.component('wiki-index-items-d', {
683
- props: ['dataContent'],
647
+ props: ['content'],
684
648
  template: `
685
649
  <ul>
686
- <li v-for="content in dataContent">
650
+ <li v-for="content in content">
687
651
  <div class="wiki-controls">
688
652
  <router-link :to="content.id" v-if="!content.children.length" :title="'Ir al artículo de «' + content.name + '»'">{{ content.name }}</router-link>
689
653
  <a class="wiki-cascade" :title="'Desplegar categoría de «' + content.name + '»'" v-else>
@@ -694,7 +658,7 @@ Vue.component('wiki-index-items-d', {
694
658
  </span>
695
659
  </a>
696
660
  </div>
697
- <wiki-index-items-d v-if="content.children.length" :data-content="content.children"></wiki-index-items-d>
661
+ <wiki-index-items-d v-if="content.children.length" :content="content.children"></wiki-index-items-d>
698
662
  </li>
699
663
  </ul>
700
664
  `
@@ -702,7 +666,7 @@ Vue.component('wiki-index-items-d', {
702
666
 
703
667
  Vue.component('wiki-index', {
704
668
  computed: {
705
- indexContent: function () {
669
+ indexContent() {
706
670
  const getChildren = (name) => {
707
671
  return filtered.filter((item) => {
708
672
  return item.component.page_parent === name;
@@ -736,7 +700,7 @@ Vue.component('wiki-index', {
736
700
  <aside class="wiki-index is-content profile-sticky">
737
701
  <div class="is-hidden-touch">
738
702
  <h3>Contenido</h3>
739
- <wiki-index-items-d :data-content="indexContent"></wiki-index-items-d>
703
+ <wiki-index-items-d :content="indexContent"></wiki-index-items-d>
740
704
  </div>
741
705
  <div class="select-container is-hidden-desktop">
742
706
  <select>
@@ -775,11 +739,11 @@ Vue.component('wiki-index', {
775
739
  });
776
740
 
777
741
  Vue.component('wiki-contenido', {
778
- props: ['dataMode'],
742
+ props: ['mode'],
779
743
  template: `
780
744
  <div class="wiki-body has-small-topiclist">
781
745
  <wiki-index></wiki-index>
782
- <template v-if="dataMode === 'app'">
746
+ <template v-if="mode === 'app'">
783
747
  <slot></slot>
784
748
  </template>
785
749
  <template v-else>
@@ -793,7 +757,7 @@ Vue.component('wiki-contenido', {
793
757
 
794
758
  Vue.component('wiki-nav', {
795
759
  computed: {
796
- more: function () {
760
+ more() {
797
761
  return routes.filter((item) => {
798
762
  return item.component
799
763
  }).filter((item) => {
@@ -802,7 +766,7 @@ Vue.component('wiki-nav', {
802
766
  })[0].component.page_parent
803
767
  }).length > 1;
804
768
  },
805
- nav: function () {
769
+ nav() {
806
770
  const list = routes.filter((item) => {
807
771
  return item.component
808
772
  }).filter((item) => {
@@ -831,19 +795,19 @@ Vue.component('wiki-nav', {
831
795
  });
832
796
 
833
797
  Vue.component('wiki-children', {
834
- props: ['dataName', 'dataCategory'],
798
+ props: ['name', 'category'],
835
799
  computed: {
836
- nav: function () {
800
+ nav() {
837
801
  return routes.filter((item) => {
838
802
  return item.component
839
803
  }).filter((item) => {
840
- return item.component.page_parent === this.dataCategory;
804
+ return item.component.page_parent === this.category;
841
805
  });
842
806
  }
843
807
  },
844
808
  template: `
845
809
  <div class="wiki-nav" v-if="nav.length > 0">
846
- <h2>{{ dataName }}</h2>
810
+ <h2>{{ name }}</h2>
847
811
  <template v-for="route in nav">* <router-link :to="route.path" :title="'Ir al artículo «' + route.component.page_name + '»'">{{ route.component.page_name }}</router-link><br/></template>
848
812
  </div>
849
813
  `
@@ -851,9 +815,9 @@ Vue.component('wiki-children', {
851
815
 
852
816
  /* Modal del foro */
853
817
  Vue.component('modal-foro', {
854
- props: ['dataTitle'],
818
+ props: ['title'],
855
819
  methods: {
856
- modalClose: function () {
820
+ modalClose() {
857
821
  this.$parent.state.modal = false;
858
822
  this.$emit('modal-close');
859
823
  }
@@ -862,8 +826,8 @@ Vue.component('modal-foro', {
862
826
  <div id="forum-modal">
863
827
  <div class="modal-element">
864
828
  <div class="modal-title">
865
- <h3>{{ dataTitle }}</h3>
866
- <a v-on:click="modalClose()">
829
+ <h3>{{ title }}</h3>
830
+ <a @click="modalClose()">
867
831
  <i class="fas fa-times"></i>
868
832
  </a>
869
833
  </div>
@@ -874,7 +838,7 @@ Vue.component('modal-foro', {
874
838
  <slot name="controls"></slot>
875
839
  </div>
876
840
  </div>
877
- <div class="is-bgmodal bg-active" v-on:click="modalClose()"></div>
841
+ <div class="is-bgmodal bg-active" @click="modalClose()"></div>
878
842
  </div>
879
843
  `
880
844
  });
@@ -889,7 +853,7 @@ Vue.component('controles-modal', {
889
853
 
890
854
  /* Expediente */
891
855
  Vue.component('expediente-usuario', {
892
- data: function () {
856
+ data() {
893
857
  return {
894
858
  info: {
895
859
  name: _userdata.username,
@@ -901,16 +865,16 @@ Vue.component('expediente-usuario', {
901
865
  }
902
866
  },
903
867
  computed: {
904
- userRank: function () {
868
+ userRank() {
905
869
  return this.profile.fields[forumConfig.profileOptions.profileRank].content;
906
870
  },
907
- userCite: function () {
871
+ userCite() {
908
872
  return this.profile.fields[forumConfig.profileOptions.profileCite].content
909
873
  },
910
- userCover: function () {
874
+ userCover() {
911
875
  return this.profile.fields[forumConfig.profileOptions.profileCover].content
912
876
  },
913
- usableMiniFields: function () {
877
+ usableMiniFields() {
914
878
  if (this.config.miniFields === undefined || !this.config.miniFields.length) return [];
915
879
  else return Object.entries(this.profile.fields).filter((item) => {
916
880
  return this.config.miniFields.indexOf(item[0]) > -1;
@@ -934,7 +898,7 @@ Vue.component('expediente-usuario', {
934
898
  };
935
899
  });
936
900
  },
937
- usableBigFields: function () {
901
+ usableBigFields() {
938
902
  if (this.config.mainFields === undefined || !Object.keys(this.config.mainFields).length) return [];
939
903
  else return Object.entries(this.profile.fields).filter((item) => {
940
904
  return Object.keys(this.config.mainFields).indexOf(item[0]) > -1;
@@ -960,7 +924,7 @@ Vue.component('expediente-usuario', {
960
924
  };
961
925
  });
962
926
  },
963
- lengthBigFields: function () {
927
+ lengthBigFields() {
964
928
  let length = 0;
965
929
 
966
930
  this.usableBigFields.map((item) => {
@@ -971,7 +935,7 @@ Vue.component('expediente-usuario', {
971
935
 
972
936
  return length;
973
937
  },
974
- usableExtraFields: function () {
938
+ usableExtraFields() {
975
939
  if (this.config.extraFields === undefined || !this.config.extraFields.length) return [];
976
940
  else return Object.entries(this.profile.fields).filter((item) => {
977
941
  return this.config.extraFields.indexOf(item[0]) > -1;
@@ -995,7 +959,7 @@ Vue.component('expediente-usuario', {
995
959
  };
996
960
  });
997
961
  },
998
- lengthExtraFields: function () {
962
+ lengthExtraFields() {
999
963
  let length = 0;
1000
964
 
1001
965
  this.usableExtraFields.map((item) => {
@@ -1006,7 +970,7 @@ Vue.component('expediente-usuario', {
1006
970
 
1007
971
  return length;
1008
972
  },
1009
- usableLinkFields: function () {
973
+ usableLinkFields() {
1010
974
  if (this.profile.contact.length) return [];
1011
975
  else return Object.entries(this.profile.contact).filter((item) => {
1012
976
  return item[1].label !== 'Mensaje Privado';
@@ -1020,15 +984,15 @@ Vue.component('expediente-usuario', {
1020
984
  }
1021
985
  });
1022
986
  },
1023
- chronologyField: function () {
987
+ chronologyField() {
1024
988
  if (this.config.cronoField === undefined || !this.config.cronoField.length) return [];
1025
989
  else return FNR.utility.genArray(this.profile.fields[FNR.utility.genSlug(this.config.cronoField, '_')].content);
1026
990
  },
1027
- relationshipsField: function () {
991
+ relationshipsField() {
1028
992
  if (this.config.relaField === undefined || !this.config.relaField.length) return [];
1029
993
  else return FNR.utility.genArray(this.profile.fields[FNR.utility.genSlug(this.config.relaField, '_')].content);
1030
994
  },
1031
- lengthHistoryFields: function () {
995
+ lengthHistoryFields() {
1032
996
  let length = 0;
1033
997
 
1034
998
  length += this.chronologyField.length;
@@ -1036,7 +1000,7 @@ Vue.component('expediente-usuario', {
1036
1000
 
1037
1001
  return length;
1038
1002
  },
1039
- currentClass: function () {
1003
+ currentClass() {
1040
1004
  return 'usergroup-' + this.profile.colour
1041
1005
  }
1042
1006
  },
@@ -1082,16 +1046,16 @@ Vue.component('expediente-usuario', {
1082
1046
  </div>
1083
1047
  </section>
1084
1048
  <section id="profile-subhead">
1085
- <div class="columns is-vcentered">
1049
+ <div class="columns is-centered is-vcentered is-gapless">
1086
1050
  <div class="column is-6 is-full-mobile">
1087
1051
  <div id="profile-quote" class="is-content">
1088
1052
  <quote>{{ userCite }}</quote>
1089
1053
  </div>
1090
1054
  </div>
1091
- <div class="column is-5 is-offset-1 is-full-mobile is-offset-0-mobile">
1092
- <div class="columns is-flex is-vcentered">
1093
- <div class="column is-half is-half-mobile">
1094
- <ul class="profile-links">
1055
+ <div class="column is-5 is-full-mobile">
1056
+ <div id="profile-links" class="columns is-flex is-vcentered is-multiline py-4">
1057
+ <div class="column is-full-touch is-half-desktop">
1058
+ <ul class="profile-linklist">
1095
1059
  <li>
1096
1060
  <a :href="profile.links.posts" :title="'Mensajes de «' + profile.name + '»'" target="_blank">
1097
1061
  <i :class="config.contactFields.mensajes"></i> Mensajes
@@ -1109,8 +1073,8 @@ Vue.component('expediente-usuario', {
1109
1073
  </li>
1110
1074
  </ul>
1111
1075
  </div>
1112
- <div class="column is-half is-half-mobile">
1113
- <ul class="profile-links">
1076
+ <div class="column is-full-touch is-half-desktop">
1077
+ <ul class="profile-linklist">
1114
1078
  <li :id="'profile-link-' + field.id" v-for="field in usableLinkFields">
1115
1079
  <a :href="field.url" :title="field.desc" target="_blank">
1116
1080
  <i :class="field.icon"></i> {{ field.title }}
@@ -1169,7 +1133,7 @@ Vue.component('expediente-usuario', {
1169
1133
  </div>
1170
1134
  <ul id="chronology-element" class="is-two-columns-list">
1171
1135
  <template v-for="element in chronologyField">
1172
- <elemento-cronologia :data-element="element" data-type="profile" />
1136
+ <elemento-cronologia :element="element" type="profile" />
1173
1137
  </template>
1174
1138
  </ul>
1175
1139
  </li>
@@ -1179,7 +1143,7 @@ Vue.component('expediente-usuario', {
1179
1143
  </div>
1180
1144
  <ul id="relationships-element" class="is-two-columns-list">
1181
1145
  <template v-for="element in relationshipsField">
1182
- <elemento-relaciones :data-element="element" data-type="profile" />
1146
+ <elemento-relaciones :element="element" type="profile" />
1183
1147
  </template>
1184
1148
  </ul>
1185
1149
  </li>
@@ -1192,16 +1156,17 @@ Vue.component('expediente-usuario', {
1192
1156
 
1193
1157
  /* Tablillas */
1194
1158
  Vue.component('cuerpo-principal', {
1195
- props: ['dataTitle'],
1159
+ props: ['title'],
1196
1160
  computed: {
1197
- title: function () {
1198
- if (typeof this.dataTitle === 'undefined') return '';
1199
- else return this.dataTitle;
1161
+ realTitle() {
1162
+ if (typeof this.title !== 'undefined') return this.title;
1163
+ else if (typeof this.$attrs['data-title'] !== 'undefined') return this.$attrs['data-title'];
1164
+ else return '';
1200
1165
  }
1201
1166
  },
1202
1167
  template: `
1203
1168
  <div class="main-slat">
1204
- <div class="mainslat-title" v-if="title.length">{{ title }}</div>
1169
+ <div class="mainslat-title" v-if="realTitle.length">{{ realTitle }}</div>
1205
1170
  <div class="mainslat-content">
1206
1171
  <slot></slot>
1207
1172
  </div>
@@ -1210,16 +1175,17 @@ Vue.component('cuerpo-principal', {
1210
1175
  });
1211
1176
 
1212
1177
  Vue.component('cuerpo-interior', {
1213
- props: ['dataTitle'],
1178
+ props: ['title'],
1214
1179
  computed: {
1215
- title: function () {
1216
- if (typeof this.dataTitle === 'undefined') return '';
1217
- else return this.dataTitle;
1180
+ realTitle() {
1181
+ if (typeof this.title !== 'undefined') return this.title;
1182
+ else if (typeof this.$attrs['data-title'] !== 'undefined') return this.$attrs['data-title'];
1183
+ else return '';
1218
1184
  }
1219
1185
  },
1220
1186
  template: `
1221
1187
  <div class="slat-interior">
1222
- <div class="slatinterior-title" v-if="title.length">{{ title }}</div>
1188
+ <div class="slatinterior-title" v-if="realTitle.length">{{ realTitle }}</div>
1223
1189
  <div class="slatinterior-content">
1224
1190
  <slot></slot>
1225
1191
  </div>
@@ -1228,16 +1194,17 @@ Vue.component('cuerpo-interior', {
1228
1194
  });
1229
1195
 
1230
1196
  Vue.component('cuerpo-lista', {
1231
- props: ['dataTitle'],
1197
+ props: ['title'],
1232
1198
  computed: {
1233
- title: function () {
1234
- if (typeof this.dataTitle === 'undefined') return '';
1235
- else return this.dataTitle;
1199
+ realTitle() {
1200
+ if (typeof this.title !== 'undefined') return this.title;
1201
+ else if (typeof this.$attrs['data-title'] !== 'undefined') return this.$attrs['data-title'];
1202
+ else return '';
1236
1203
  }
1237
1204
  },
1238
1205
  template: `
1239
1206
  <div class="slat-list">
1240
- <div class="slatlist-title" v-if="title.length">{{ title }}</div>
1207
+ <div class="slatlist-title" v-if="realTitle.length">{{ realTitle }}</div>
1241
1208
  <ol class="slatlist-content">
1242
1209
  <slot></slot>
1243
1210
  </ol>