summaryrefslogtreecommitdiff
path: root/data
diff options
context:
space:
mode:
Diffstat (limited to 'data')
-rw-r--r--data/docs/73
-rw-r--r--data/global.pl4
-rw-r--r--data/lang.txt377
-rw-r--r--data/script.js173
-rw-r--r--data/style.css4
5 files changed, 406 insertions, 155 deletions
diff --git a/data/docs/7 b/data/docs/7
index 7a8e2d83..058075fd 100644
--- a/data/docs/7
+++ b/data/docs/7
@@ -50,7 +50,8 @@
<b>Code development</b><br />
<dl>
<dt>Yorhel</dt><dd>Main developer.</dd>
- <dt>3dB</dt><dd>Wrote the current user authentication code and implemented post throttling on the discussion board.</dd>
+ <dt>QCyph</dt><dd>Contributed the character filters.</dd>
+ <dt>3dB</dt><dd>Contributed the current user authentication code and post throttling on the discussion board.</dd>
</dl>
<br />
diff --git a/data/global.pl b/data/global.pl
index 31d45631..fd9c3e31 100644
--- a/data/global.pl
+++ b/data/global.pl
@@ -31,8 +31,8 @@ our %S = (%S,
scr_size => [ 136, 102 ], # w*h of screenshot thumbnails
ch_size => [ 256, 300 ], # max. w*h of char images
cv_size => [ 256, 400 ], # max. w*h of cover images
- # bit flags
- permissions => {qw| board 1 boardmod 2 edit 4 charedit 8 tag 16 dbmod 32 tagmod 64 usermod 128 affiliate 256 |},
+ # bit flags (TODO: completely merge charedit into edit)
+ permissions => {qw| board 1 boardmod 2 edit 4 charedit 4 tag 16 dbmod 32 tagmod 64 usermod 128 affiliate 256 |},
languages => [qw|cs da de en es fi fr hu it ja ko nl no pl pt-br pt-pt ru sk sv tr vi zh|],
producer_types => [qw|co in ng|],
discussion_boards => [qw|an db ge v p u|], # <- note that some properties of these boards are hard-coded
diff --git a/data/lang.txt b/data/lang.txt
index 03c7b132..a453fc48 100644
--- a/data/lang.txt
+++ b/data/lang.txt
@@ -1641,6 +1641,22 @@ hu : Beküldés
nl : Verstuur
de : Bestätigen
+:_form_continue
+en : Continue
+ru*:
+cs*:
+hu*:
+nl : Verder
+de*:
+
+:_form_continue_ign
+en : Continue and ignore duplicates
+ru*:
+cs*:
+hu*:
+nl : Ga verder en negeer dubbele items
+de*:
+
:_form_ihid
en : Deleted
ru : Удалено
@@ -1724,6 +1740,22 @@ hu : -nap-
nl : -dag-
de : -Tag-
+:_js_remove
+en : remove
+ru : убрать
+cs : odstranit
+hu : eltávolítás
+nl : verwijder
+de : entfernen
+
+:_js_add
+en : add
+ru : добавить
+cs : přidat
+hu : bejegyez
+nl : toevoegen
+de : hinzufügen
+
:_js_ds_noresults
en : No results...
ru : Совпадений не найдено...
@@ -1772,6 +1804,30 @@ hu : Itt nem használhatsz meta címkéket!
nl : Meta tags kunnen hier niet gebruikt worden!
de : Meta-Tags können hier nicht genutzt werden!
+:_js_ds_trait_meta
+en : meta
+ru*:
+cs*:
+hu*:
+nl :
+de*:
+
+:_js_ds_trait_mod
+en : awaiting moderation
+ru*:
+cs*:
+hu*:
+nl : ongemodereerd
+de*:
+
+:_js_ds_trait_nometa
+en : Can't use meta traits here!
+ru*:
+cs*:
+hu*:
+nl : Meta kenmerken kunnen hier niet gebruikt worden!
+de*:
+
# Filter selector
@@ -2354,15 +2410,6 @@ hu : szerkesztés
nl : wijzig
de : bearbeiten
-# delete
-:_mtabs_del
-en : del
-ru : удалить
-cs : smazat
-hu : törlés
-nl : verwijder
-de : löschen
-
# VN relations
:_mtabs_relations
en : relations
@@ -3494,22 +3541,6 @@ hu : Készítő bejegyzése
nl : Nieuwe producent toevoegen
de : Hersteller hinzufügen
-:_pedit_rel_addbut
-en : add
-ru : добавить
-cs : přidat
-hu : hozzáad
-nl : toevoegen
-de : hinzufügen
-
-:_pedit_rel_del
-en : remove
-ru : убрать
-cs : odebrat
-hu : eltávolít
-nl : verwijderen
-de : entfernen
-
:_pedit_rel_none
en : Nothing selected.
ru : Ничего не выбрано.
@@ -4256,14 +4287,6 @@ hu : -medium-
nl :
de : -Medium-
-:_redit_form_med_remove
-en : remove
-ru : убрать
-cs : odebrat
-hu : eltávolítás
-nl : verwijder
-de : entfernen
-
:_redit_form_prod
en : Producers
ru : Компании
@@ -4312,22 +4335,6 @@ hu : Mindkettő
nl : Beide
de : Beides
-:_redit_form_prod_addbut
-en : add
-ru : добавить
-cs : přidat
-hu : bejegyez
-nl : voeg toe
-de : hinzufügen
-
-:_redit_form_prod_remove
-en : remove
-ru : убрать
-cs : odebrat
-hu : eltávolít
-nl : verwijder
-de : entfernen
-
:_redit_form_prod_none
en : Nothing selected.
ru : Ничего не выбрано.
@@ -4384,22 +4391,6 @@ hu : Visual novel bejegyzése
nl : Nieuwe visual novel
de : Visual Novel hinzufügen
-:_redit_form_vn_addbut
-en : add
-ru : добавить
-cs : přidat
-hu : bejegyez
-nl : voeg toe
-de : hinzufügen
-
-:_redit_form_vn_remove
-en : remove
-ru : убрать
-cs : odebrat
-hu : eltávolít
-nl : verwijder
-de : entfernen
-
:_redit_form_vn_none
en : Nothing selected.
ru : Ничего не выбрано.
@@ -5268,14 +5259,6 @@ hu : Aktív szűrők:
nl : Actieve filters:
de : Aktive Filter:
-:_taglink_fil_remove
-en : remove
-ru : убрать
-cs : odstranit
-hu : eltávolít
-nl : verwijder
-de : entfernen
-
:_taglink_fil_user
en : User:
ru : Пользователь:
@@ -6171,14 +6154,6 @@ hu : Sajátosság hozzáadása
nl : Voeg kenmerk toe
de : Füge Eigenschaft hinzu
-:_chare_traits_del
-en : del
-ru*:
-cs*:
-hu : töröl
-nl :
-de : entfernen
-
:_chare_traits_present
en : Selected trait is already present.
ru*:
@@ -6251,14 +6226,6 @@ hu : Mind / mások
nl : Alle / overige
de : Alle / andere
-:_chare_vns_del
-en : remove
-ru*:
-cs : odstranit
-hu : eltávolít
-nl : verwijder
-de : entfernen
-
:_chare_vns_allrel
en : All releases already selected.
ru*:
@@ -6310,8 +6277,181 @@ hu : A kritériumaid alapján nem található szereplő.
nl : Geen karakters gevonden die aan je kriteria voldoen.
de : Keine Charaktere, die deinen Kriterien entsprechen, gefunden.
+:_charb_fil_title
+en : Character filters
+ru*:
+cs*:
+hu*:
+nl : Karakterfilters
+de*:
+
+:_charb_general
+en : General
+ru*:
+cs*:
+hu*:
+nl : Algemeen
+de*:
+
+:_charb_gender
+en : Gender
+ru*:
+cs*:
+hu*:
+nl : Geslacht
+de*:
+
+:_charb_bust_min
+en : Bust min
+ru*:
+cs*:
+hu*:
+nl : Borst min
+de*:
+
+:_charb_bust_max
+en : Bust max
+ru*:
+cs*:
+hu*:
+nl : Borst max
+de*:
+
+:_charb_waist_min
+en : Waist min
+ru*:
+cs*:
+hu*:
+nl : Taille min
+de*:
+
+:_charb_waist_max
+en : Waist max
+ru*:
+cs*:
+hu*:
+nl : Taille max
+de*:
+
+:_charb_hip_min
+en : Hips min
+ru*:
+cs*:
+hu*:
+nl : Heupen min
+de*:
+
+:_charb_hip_max
+en : Hips max
+ru*:
+cs*:
+hu*:
+nl : Heupen max
+de*:
+
+:_charb_height_min
+en : Height min
+ru*:
+cs*:
+hu*:
+nl : Lengte min
+de*:
+
+:_charb_height_max
+en : Height max
+ru*:
+cs*:
+hu*:
+nl : Lengte max
+de*:
+
+:_charb_weight_min
+en : Weight min
+ru*:
+cs*:
+hu*:
+nl : Gewicht min
+de*:
+
+:_charb_weight_max
+en : Weight max
+ru*:
+cs*:
+hu*:
+nl : Gewicht max
+de*:
+
+:_charb_bloodt
+en : Blood type
+ru*:
+cs*:
+hu*:
+nl : Bloedgroep
+de*:
+
+:_charb_traits
+en : Traits
+ru*:
+cs*:
+hu*:
+nl : Kenmerken
+de*:
+
+:_charb_traitinc
+en : Traits to include
+ru*:
+cs*:
+hu*:
+nl : Kenmerken meenemen
+de*:
+
+:_charb_traitexc
+en : Traits to exclude
+ru*:
+cs*:
+hu*:
+nl : Kenmerken uitsluiten
+de*:
+:_charb_traitnothere
+en : Additional trait filters are not available on this page. Use the character browser instead (available from the main menu -> characters).
+ru*:
+cs*:
+hu*:
+nl : Extra kenmerkfilters zijn niet aanwezig op deze pagina. Gebruik de karakterbrowser voor deze functionaliteit (beschikbaar via het hoofdmenu -> karakters).
+de*:
+:_charb_spoil0
+en : Hide spoilers
+ru*:
+cs*:
+hu*:
+nl : Verberg spoilers
+de*:
+
+:_charb_spoil1
+en : Show minor spoilers
+ru*:
+cs*:
+hu*:
+nl : Toon geringe spoilers
+de*:
+
+:_charb_spoil2
+en : Show major spoilers
+ru*:
+cs*:
+hu*:
+nl : Toon alle spoilers
+de*:
+
+:_charb_roles
+en : Roles
+ru*:
+cs*:
+hu*:
+nl : Rol
+de*:
@@ -8112,14 +8252,6 @@ hu : Ezzek a szűrők figyelmen kívűl maradnak a címke oldalakon (ha alapért
nl : Deze filters worden genegeerd op tagpaginas (als ze gebruikt worden als standaardfilters).
de : Diese Filter werden auf Tag-Seiten ignoriert (wenn als Standard eingestellt).
-:_vnbrowse_tagrem
-en : remove
-ru : убрать
-cs : odstranit
-hu : eltávolítás
-nl : verwijder
-de : entfernen
-
:_vnbrowse_taginc
en : Tags to include
ru : Включить теги
@@ -8299,6 +8431,33 @@ hu : Új visual novel bejegyzése
nl : Voeg nieuwe visual novel toe
de : Neue Visual Novel hinzufügen
+:_vnedit_dup_title
+en : Possible duplicates found
+ru*:
+cs*:
+hu*:
+nl : Mogelijke dubbele items gevonden
+de*:
+
+:_vnedit_dup_msg
+en : The following is a list of visual novels that match the title(s) you gave.
+ Please check this list to avoid creating a duplicate visual novel entry.
+ Be especially wary of items that have been deleted! To see why an entry
+ has been deleted, click on its title.[br]
+ [br]
+ To add the visual novel either way, hit the "Continue and ignore
+ duplicates" button below.
+ru*:
+cs*:
+hu*:
+nl : De onderstaande lijst bevat visual novels met een vergelijkbare titel.
+ Controleer deze lijst a.u.b. om te voorkomen dat je een visual novel dubbel toevoegt.
+ Wees helemaal op de hoede van items die verwijderd zijn! Om te zien waarom
+ iets verwijderd is, klik op de titel.[br]
+ [br]
+ Klik op de "Ga verder en negeer dubbele items" knop om alsnog verder te gaan.
+de*:
+
:_vnedit_geninfo
en : General info
ru : Основная информация
@@ -8577,22 +8736,6 @@ hu : -
nl : van
de : von
-:_vnedit_rel_addbut
-en : add
-ru : добавить
-cs : přidat
-hu : bejegyez
-nl : toevoegen
-de : hinzufügen
-
-:_vnedit_rel_del
-en : del
-ru : убрать
-cs : smazat
-hu : töröl
-nl : verwijder
-de : entfernen
-
:_vnedit_rel_none
en : No relations selected.
ru : Отношений не выбрано.
@@ -8789,14 +8932,6 @@ hu : #[_1]-dik pillanatkép
nl :
de : Screenshot #[_1]
-:_vnedit_scr_remove
-en : remove
-ru : убрать
-cs : odebrat
-hu : eltávolítás
-nl : verwijder
-de : entfernen
-
:_vnedit_scr_fullsize
en : Full size: [_1]
ru : Полный размер: [_1]
diff --git a/data/script.js b/data/script.js
index e85bce3d..4065def4 100644
--- a/data/script.js
+++ b/data/script.js
@@ -819,7 +819,7 @@ function vnrAdd(rel, vid, official, title) {
tag('label', {'for':'official_'+vid}, mt('_vnedit_rel_official')),
sel, ' '+mt('_vnedit_rel_of')),
tag('td', {'class':'tc_title'}, shorten(byId('title').value, 40)),
- tag('td', {'class':'tc_add' }, tag('a', {href:'#', onclick:vnrDel}, mt('_vnedit_rel_del')))
+ tag('td', {'class':'tc_add' }, tag('a', {href:'#', onclick:vnrDel}, mt('_js_remove')))
));
vnrEmpty();
@@ -880,7 +880,7 @@ function vnrFormAdd() {
ajax('/xml/vn.xml?q='+encodeURIComponent(input), function(hr) {
txt.disabled = sel.disabled = off.disabled = false;
txt.value = '';
- setText(lnk, mt('_vnedit_rel_addbut'));
+ setText(lnk, mt('_js_add'));
var items = hr.responseXML.getElementsByTagName('item');
if(items.length < 1)
@@ -933,7 +933,7 @@ function medAdd(med, qty) {
msel.appendChild(tag('option', {value:medTypes[i][0], selected: med==medTypes[i][0]}, medTypes[i][1]));
byId('media_div').appendChild(tag('span', qsel, msel,
- med != '' ? tag('input', {type: 'button', 'class':'submit', onclick:medDel, value:mt('_redit_form_med_remove')}) : null
+ med != '' ? tag('input', {type: 'button', 'class':'submit', onclick:medDel, value:mt('_js_remove')}) : null
));
}
@@ -1148,7 +1148,7 @@ function scrCheckStatus() {
var nsfwid = 'scr_sfw_'+tr.scr_id;
setContent(byName(tr, 'td')[1],
tag('b', mt('_vnedit_scr_id', tr.scr_id)),
- ' (', tag('a', {href: '#', onclick:scrDel}, mt('_vnedit_scr_remove')), ')',
+ ' (', tag('a', {href: '#', onclick:scrDel}, mt('_js_remove')), ')',
tag('br', null),
mt('_vnedit_scr_fullsize', dim),
odd ? tag('b', {'class':'standout', 'style':'font-weight: bold'}, ' '+mt('_vnedit_scr_nonstandard')) : null,
@@ -1454,7 +1454,7 @@ function rvnLoad() {
function rvnAdd(id, title) {
byId('vn_tbl').appendChild(tag('tr', {id:'rvn_'+id, rvn_id:id},
tag('td', {'class':'tc_title'}, 'v'+id+':', tag('a', {href:'/v'+id}, shorten(title, 40))),
- tag('td', {'class':'tc_rm'}, tag('a', {href:'#', onclick:rvnDel}, mt('_redit_form_vn_remove')))
+ tag('td', {'class':'tc_rm'}, tag('a', {href:'#', onclick:rvnDel}, mt('_js_remove')))
));
rvnStripe();
rvnEmpty();
@@ -1502,7 +1502,7 @@ function rvnFormAdd() {
ajax('/xml/vn.xml?q='+encodeURIComponent(val), function(hr) {
txt.disabled = false;
txt.value = '';
- setText(lnk, mt('_redit_form_vn_addbut'));
+ setText(lnk, mt('_js_add'));
var items = hr.responseXML.getElementsByTagName('item');
if(items.length < 1)
@@ -1564,7 +1564,7 @@ function rprAdd(id, role, name) {
byId('producer_tbl').appendChild(tag('tr', {id:'rpr_'+id, rpr_id:id},
tag('td', {'class':'tc_name'}, 'p'+id+':', tag('a', {href:'/p'+id}, shorten(name, 40))),
tag('td', {'class':'tc_role'}, rl),
- tag('td', {'class':'tc_rm'}, tag('a', {href:'#', onclick:rprDel}, mt('_redit_form_prod_remove')))
+ tag('td', {'class':'tc_rm'}, tag('a', {href:'#', onclick:rprDel}, mt('_js_remove')))
));
rprEmpty();
}
@@ -1604,7 +1604,7 @@ function rprFormAdd() {
ajax('/xml/producers.xml?q='+encodeURIComponent(val), function(hr) {
txt.disabled = false;
txt.value = '';
- setText(lnk, mt('_redit_form_prod_addbut'));
+ setText(lnk, mt('_js_add'));
var items = hr.responseXML.getElementsByTagName('item');
if(items.length < 1)
@@ -1676,7 +1676,7 @@ function prrAdd(rel, pid, title) {
byId('relation_tbl').appendChild(tag('tr', {id:'relation_tr_'+pid},
tag('td', {'class':'tc_prod' }, 'p'+pid+':', tag('a', {href:'/p'+pid}, shorten(title, 40))),
tag('td', {'class':'tc_rel' }, sel),
- tag('td', {'class':'tc_add' }, tag('a', {href:'#', onclick:prrDel}, mt('_pedit_rel_del')))
+ tag('td', {'class':'tc_add' }, tag('a', {href:'#', onclick:prrDel}, mt('_js_remove')))
));
prrEmpty();
@@ -1735,7 +1735,7 @@ function prrFormAdd() {
ajax('/xml/producers.xml?q='+encodeURIComponent(input), function(hr) {
txt.disabled = sel.disabled = false;
txt.value = '';
- setText(lnk, mt('_pedit_rel_addbut'));
+ setText(lnk, mt('_js_add'));
var items = hr.responseXML.getElementsByTagName('item');
if(items.length < 1)
@@ -1818,7 +1818,7 @@ function ctrAdd(item, spoil) {
tag('b', {'class':'grayedout'}, group?group+' / ':''),
tag('a', {'href':'/i'+id}, name)),
sp,
- tag('td', {'class':'tc_del'}, tag('a', {href:'#', onclick:ctrDel}, mt('_chare_traits_del')))
+ tag('td', {'class':'tc_del'}, tag('a', {href:'#', onclick:ctrDel}, mt('_js_remove')))
));
ctrEmpty();
ctrSerialize();
@@ -1988,7 +1988,7 @@ function cvnRelAdd(vid, rid, role, spoil) {
tag('td', {'class':'tc_rel'}, rsel),
tag('td', {'class':'tc_rol'}, lsel),
tag('td', {'class':'tc_spl'}, ssel),
- tag('td', {'class':'tc_del'}, tag('a', {href:'#', onclick:cvnRelDel}, mt('_chare_vns_del')))
+ tag('td', {'class':'tc_del'}, tag('a', {href:'#', onclick:cvnRelDel}, mt('_js_remove')))
), last);
}
@@ -2124,7 +2124,9 @@ if(byId('jt_box_chare_vns'))
var fil_cats; // [ <object with field->tr mapping>, <category-link1>, .. ]
var fil_escape = "_ !\"#$%&'()*+,-./:;<=>?@[\\]^`{|}~".split('');
function filLoad() {
- var l = byId('filselect').href.match(/#r$/) ? filReleases() : filVN();
+ var l = byId('filselect').href.match(/#r$/) ? filReleases()
+ : byId('filselect').href.match(/#c$/) ? filChars()
+ : filVN();
fil_cats = [ new Object ];
var p = tag('p', {'class':'browseopts'});
@@ -2179,7 +2181,8 @@ function filLoad() {
f.submit();
}}),
tag('input', {type:'button', 'class':'submit', value: mt('_js_fil_reset'), onclick:function () { byId('fil').value = ''; filDeSerialize()} }),
- PREF_CODE != '' ? tag('input', {type:'button', 'class':'submit', value: mt('_js_fil_save'), onclick:filSaveDefault }) : null,
+ typeof PREFS != 'undefined' && ('filter_vn' in PREFS | 'filter_release' in PREFS) && PREF_CODE != '' ?
+ tag('input', {type:'button', 'class':'submit', value: mt('_js_fil_save'), onclick:filSaveDefault }) : null,
tag('p', {id:'fil_savenote', 'class':'hidden'}, '')
));
filSelectCat(1);
@@ -2265,7 +2268,7 @@ function filSerialize() {
if(r.length > 0 && r[0] != '')
values[fil_cats[0][f].fil_code] = r.join('~');
}
- if(!values['tag_inc'])
+ if(!values['tag_inc'] && !values['trait_inc'])
delete values['tagspoil'];
var l = [];
for(var f in values)
@@ -2323,6 +2326,63 @@ function filShow() {
return false;
}
+var curSlider = null;
+function filFSlider(c, n, min, max, def, unit) {
+ var bw = 200; var pw = 1; // slidebar width and pointer width
+ var s = tag('p', {fil_val:def, 'class':'slider'});
+ var b = tag('div', {style:'width:'+(bw-2)+'px;', s:s});
+ var p = tag('div', {style:'width:'+pw+'px;', s:s});
+ var v = tag('span', def+' '+unit);
+ s.appendChild(b);
+ b.appendChild(p);
+ s.appendChild(v);
+
+ var set = function (e, v) {
+ var w = bw-pw-6;
+ var s,x;
+
+ if(v) {
+ s = e;
+ x = v[0] == '' ? def : parseInt(v[0]);
+ x = (x-min)*w/(max-min);
+ } else {
+ s = curSlider;
+ if(!e) e = window.event;
+ x = (!e) ? (def-min)*w/(max-min)
+ : (e.pageX || e.clientX + document.body.scrollLeft - document.body.clientLeft)-5;
+ var o = s.childNodes[0];
+ while(o.offsetParent) {
+ x -= o.offsetLeft;
+ o = o.offsetParent;
+ }
+ }
+
+ if(x<0) x = 0; if(x>w) x = w;
+ s.fil_val = min + Math.floor(x*(max-min)/w);
+ s.childNodes[1].innerHTML = s.fil_val+' '+unit;
+ s.childNodes[0].childNodes[0].style.left = x+'px';
+ return false;
+ }
+
+ b.onmousedown = p.onmousedown = function (e) {
+ curSlider = this.s;
+ if(!curSlider.oldmousemove) curSlider.oldmousemove = document.onmousemove;
+ if(!curSlider.oldmouseup) curSlider.oldmouseup = document.onmouseup;
+ document.onmouseup = function () {
+ document.onmousemove = curSlider.oldmousemove;
+ curSlider.oldmousemove = null;
+ document.onmouseup = curSlider.oldmouseup;
+ curSlider.oldmouseup = null;
+ filSelectField(curSlider);
+ return false;
+ }
+ document.onmousemove = set;
+ return set(e);
+ }
+
+ return [c, n, s, function (c) { return [ c.fil_val ]; }, set ];
+}
+
function filFSelect(c, n, lines, opts) {
var s = tag('select', {onfocus: filSelectField, onchange: filSerialize, multiple: lines > 1, size: lines});
for(var i=0; i<opts.length; i++) {
@@ -2379,14 +2439,18 @@ function filFOptions(c, n, opts, setfunc) {
];
}
-function filFTagInput(name, label) {
+function filFTagInput(name, label, type) {
+ var src = type=='tag' ? '/xml/tags.xml' : '/xml/traits.xml';
+
var visible = false;
var remove = function() {
;
};
- var addtag = function(ul, id, name) {
- ul.appendChild(tag('li', { fil_id: id },
- tag('a', {href:'/g'+id}, name||'g'+id),
+ var addtag = function(ul, id, name, group) {
+ ul.appendChild(
+ tag('li', { fil_id: id },
+ type=='trait' && group ? tag('b', {'class':'grayedout'}, group+' / ') : null,
+ type=='tag' ? tag('a', {href:'/g'+id}, name||'g'+id) : tag('a', {href:'/i'+id}, name||'i'+id),
' (', tag('a', {href:'#',
onclick:function () {
// a -> li -> ul -> div
@@ -2395,7 +2459,7 @@ function filFTagInput(name, label) {
filSelectField(ul.parentNode);
return false
}
- }, mt('_vnbrowse_tagrem')), ')'
+ }, mt('_js_remove')), ')'
));
}
var fetch = function(c) {
@@ -2421,12 +2485,12 @@ function filFTagInput(name, label) {
txt.value = mt('_js_loading');
txt.disabled = true;
if(visible)
- ajax('/xml/tags.xml?'+q.join(';'), function (hr) {
+ ajax(src+'?'+q.join(';'), function (hr) {
var l = [];
var items = hr.responseXML.getElementsByTagName('item');
setText(ul, '');
for(var i=0; i<items.length; i++)
- addtag(ul, items[i].getAttribute('id'), items[i].firstChild.nodeValue);
+ addtag(ul, items[i].getAttribute('id'), items[i].firstChild.nodeValue, items[i].getAttribute('groupname'));
txt.value = '';
txt.disabled = false;
c.fil_val = null;
@@ -2434,18 +2498,21 @@ function filFTagInput(name, label) {
};
var input = tag('input', {type:'text', 'class':'text', style:'width:300px', onfocus:filSelectField});
var list = tag('ul', null);
- dsInit(input, '/xml/tags.xml?q=',
+ dsInit(input, src+'?q=',
function(item, tr) {
- tr.appendChild(tag('td', shorten(item.firstChild.nodeValue, 40),
- item.getAttribute('meta') == 'yes' ? tag('b', {'class': 'grayedout'}, ' '+mt('_js_ds_tag_meta')) : null,
- item.getAttribute('state') == 0 ? tag('b', {'class': 'grayedout'}, ' '+mt('_js_ds_tag_mod')) : null
+ var g = item.getAttribute('groupname');
+ tr.appendChild(tag('td',
+ type=='trait' && g ? tag('b', {'class':'grayedout'}, g+' / ') : null,
+ shorten(item.firstChild.nodeValue, 40), // l10n /_js_ds_(tag|trait)_(meta|mod)/
+ item.getAttribute('meta') == 'yes' ? tag('b', {'class': 'grayedout'}, ' '+mt('_js_ds_'+type+'_meta')) : null,
+ item.getAttribute('state') == 0 ? tag('b', {'class': 'grayedout'}, ' '+mt('_js_ds_'+type+'_mod')) : null
));
},
function(item, obj) {
- if(item.getAttribute('meta') == 'yes')
- alert(mt('_js_ds_tag_nometa'));
+ if(item.getAttribute('meta') == 'yes') // l10n /_js_ds_(tag|trait)_nometa/
+ alert(mt('_js_ds_'+type+'_nometa'));
else {
- addtag(byName(obj.parentNode, 'ul')[0], item.getAttribute('id'), item.firstChild.nodeValue);
+ addtag(byName(obj.parentNode, 'ul')[0], item.getAttribute('id'), item.firstChild.nodeValue, item.getAttribute('groupname'));
filSelectField(obj);
}
return '';
@@ -2466,6 +2533,50 @@ function filFTagInput(name, label) {
];
}
+function filChars() {
+ var gend = genders;
+ for(var i=0; i<gend.length; i++) // l10n /_gender_.+/
+ gend[i] = [ gend[i], mt('_gender_'+gend[i]) ];
+ var bloodt = blood_types;
+ for(var i=0; i<bloodt.length; i++) // l10n /_bloodt_.+/
+ bloodt[i] = [ bloodt[i], mt('_bloodt_'+bloodt[i]) ];
+ var roles = char_roles;
+ for(var i=0; i<roles.length; i++) // l10n /_charrole_.+/
+ roles[i] = [ roles[i], mt('_charrole_'+roles[i]) ];
+
+ var ontraitpage = location.pathname.indexOf('/c/') < 0;
+
+ return [
+ mt('_charb_fil_title'),
+ [ mt('_charb_general'),
+ filFSelect('gender', mt('_charb_gender'), 4, gend),
+ filFSelect('bloodt', mt('_charb_bloodt'), 5, bloodt),
+ '',
+ filFSlider('bust_min', mt('_charb_bust_min'), 20, 120, 40, 'cm'),
+ filFSlider('bust_max', mt('_charb_bust_max'), 20, 120, 100, 'cm'),
+ filFSlider('waist_min', mt('_charb_waist_min'), 20, 120, 40, 'cm'),
+ filFSlider('waist_max', mt('_charb_waist_max'), 20, 120, 100, 'cm'),
+ filFSlider('hip_min', mt('_charb_hip_min'), 20, 120, 40, 'cm'),
+ filFSlider('hip_max', mt('_charb_hip_max'), 20, 120, 100, 'cm'),
+ '',
+ filFSlider('height_min', mt('_charb_height_min'), 0, 300, 60, 'cm'),
+ filFSlider('height_max', mt('_charb_height_max'), 0, 300, 240, 'cm'),
+ filFSlider('weight_min', mt('_charb_weight_min'), 0, 400, 80, 'kg'),
+ filFSlider('weight_max', mt('_charb_weight_max'), 0, 400, 320, 'kg'),
+ ],
+ ontraitpage ? [ mt('_charb_traits'),
+ [ '', ' ', tag(mt('_charb_traitnothere')) ],
+ ] : [ mt('_charb_traits'),
+ [ '', ' ', tag(mt('_js_fil_booland')) ],
+ filFTagInput('trait_inc', mt('_charb_traitinc'), 'trait'),
+ filFTagInput('trait_exc', mt('_charb_traitexc'), 'trait'),
+ filFOptions('tagspoil', ' ', [[0, mt('_charb_spoil0')],[1, mt('_charb_spoil1')],[2, mt('_charb_spoil2')]],
+ function (o) { var s = getCookie('tagspoil'); if(o+'' == '') return s == null ? 0 : s; setCookie('tagspoil', o); return o})
+ ],
+ [ mt('_charb_roles'), filFSelect('role', mt('_charb_roles'), 4, roles) ]
+ ];
+}
+
function filReleases() {
var types = release_types;
for(var i=0; i<types.length; i++) // l10n /_rtype_.+/
@@ -2537,8 +2648,8 @@ function filVN() {
] : [ mt('_vnbrowse_tags'),
[ '', ' ', tag(mt('_js_fil_booland')) ],
[ '', ' ', PREF_CODE != '' ? tag(mt('_vnbrowse_tagactive')) : null ],
- filFTagInput('tag_inc', mt('_vnbrowse_taginc')),
- filFTagInput('tag_exc', mt('_vnbrowse_tagexc')),
+ filFTagInput('tag_inc', mt('_vnbrowse_taginc'), 'tag'),
+ filFTagInput('tag_exc', mt('_vnbrowse_tagexc'), 'tag'),
filFOptions('tagspoil', ' ', [[0, mt('_vnbrowse_spoil0')],[1, mt('_vnbrowse_spoil1')],[2, mt('_vnbrowse_spoil2')]],
function (o) { var s = getCookie('tagspoil'); if(o+'' == '') return s == null ? 0 : s; setCookie('tagspoil', o); return o})
],
diff --git a/data/style.css b/data/style.css
index 78f3736f..ecb8bb42 100644
--- a/data/style.css
+++ b/data/style.css
@@ -768,6 +768,10 @@ div#fil_div {
#fil_div .opts a.tsel { color: $maintext$; }
#filselect i { font-style: normal }
#fil_div table ul { margin: 0 0 0 15px }
+#fil_div .slider p { margin: 1px; }
+#fil_div .slider div { margin: 1px; border: 1px solid $secborder$; float: left; height: 12px; }
+#fil_div .slider div div { border-top: none; border-bottom: none; cursor: default; position: relative; height: 10px; margin: 1px; }
+#fil_div .slider span { margin-left: 5px }