summaryrefslogtreecommitdiff
path: root/data
diff options
context:
space:
mode:
authorQCyph <dev@lived.nl>2011-08-27 10:50:29 +0200
committerYorhel <git@yorhel.nl>2011-08-27 11:01:10 +0200
commite26056de79c72a113fa1c5cc725e053e0efe3a97 (patch)
tree015770471e514ef07a73e3d7e813eae04e117975 /data
parent96c8f09ca054ea21f59bd62b3fdc9de90ebf1348 (diff)
Added filters to character browse page and trait page
Diffstat (limited to 'data')
-rw-r--r--data/global.pl5
-rw-r--r--data/lang.txt179
-rw-r--r--data/script.js90
3 files changed, 252 insertions, 22 deletions
diff --git a/data/global.pl b/data/global.pl
index 31d45631..844d69d1 100644
--- a/data/global.pl
+++ b/data/global.pl
@@ -102,6 +102,11 @@ our %S = (%S,
vnlist_status => [ 0..4 ],
blood_types => [qw| unknown a b ab o |],
genders => [qw| unknown m f b |],
+ bust_ranges => [ 50, 60, 65, 70, 75, 80, 85, 90, 100, 110, 120 ],
+ waist_ranges => [ 40, 50, 55, 60, 65, 70, 75, 80 ],
+ hip_ranges => [ 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100 ],
+ height_ranges => [ 10, 50, 100, 120, 140, 150, 160, 170, 180, 190, 200, 220, 240, 280 ],
+ weight_ranges => [ 20, 50, 60, 70, 80, 90, 100, 150, 200, 250, 350 ],
char_roles => [qw| main primary side appears |],
atom_feeds => { # num_entries, title, id
announcements => [ 10, 'VNDB Site Announcements', '/t/an' ],
diff --git a/data/lang.txt b/data/lang.txt
index 9639cc11..90463878 100644
--- a/data/lang.txt
+++ b/data/lang.txt
@@ -1533,6 +1533,13 @@ cs : -dne-
hu : -nap-
nl : -dag-
+:_js_remove
+en : remove
+ru : убрать
+cs : odstranit
+hu : eltávolítás
+nl : verwijder
+
:_js_ds_noresults
en : No results...
ru : Совпадений не найдено...
@@ -1575,6 +1582,27 @@ cs : Zde se nedají použít meta-tagy!
hu : Itt nem használhatsz meta címkéket!
nl : Meta tags kunnen hier niet gebruikt worden!
+:_js_ds_trait_meta
+en : meta
+ru*:
+cs*:
+hu*:
+nl :
+
+:_js_ds_trait_mod
+en : awaiting moderation
+ru*:
+cs*:
+hu*:
+nl : ongemodereerd
+
+:_js_ds_trait_nometa
+en : Can't use meta traits here!
+ru*:
+cs*:
+hu*:
+nl : Meta kenmerken kunnen hier niet gebruikt worden!
+
# Filter selector
@@ -5571,8 +5599,152 @@ cs : Žádné postavy odpovídající vašim požadavkům.
hu : A kritériumaid alapján nem található szereplő.
nl : Geen karakters gevonden die aan je kriteria voldoen.
+:_charb_fil_title
+en : Character filters
+ru*:
+cs*:
+hu*:
+nl : Karakterfilters
+
+:_charb_general
+en : General
+ru*:
+cs*:
+hu*:
+nl : Algemeen
+
+:_charb_gender
+en : Gender
+ru*:
+cs*:
+hu*:
+nl : Geslacht
+:_charb_bust_min
+en : Bust min
+ru*:
+cs*:
+hu*:
+nl : Borst min
+:_charb_bust_max
+en : Bust max
+ru*:
+cs*:
+hu*:
+nl : Borst max
+
+:_charb_waist_min
+en : Waist min
+ru*:
+cs*:
+hu*:
+nl : Taille min
+
+:_charb_waist_max
+en : Waist max
+ru*:
+cs*:
+hu*:
+nl : Taille max
+
+:_charb_hip_min
+en : Hips min
+ru*:
+cs*:
+hu*:
+nl : Heupen min
+
+:_charb_hip_max
+en : Hips max
+ru*:
+cs*:
+hu*:
+nl : Heupen max
+
+:_charb_height_min
+en : Height min
+ru*:
+cs*:
+hu*:
+nl : Lengte min
+
+:_charb_height_max
+en : Height max
+ru*:
+cs*:
+hu*:
+nl : Lengte max
+
+:_charb_weight_min
+en : Weight min
+ru*:
+cs*:
+hu*:
+nl : Gewicht min
+
+:_charb_weight_max
+en : Weight max
+ru*:
+cs*:
+hu*:
+nl : Gewicht max
+
+:_charb_bloodt
+en : Blood type
+ru*:
+cs*:
+hu*:
+nl : Bloedgroep
+
+:_charb_traits
+en : Traits
+ru*:
+cs*:
+hu*:
+nl : Kenmerken
+
+:_charb_traitinc
+en : Traits to include
+ru*:
+cs*:
+hu*:
+nl : Kenmerken meenemen
+
+:_charb_traitexc
+en : Traits to exclude
+ru*:
+cs*:
+hu*:
+nl : Kenmerken uitsluiten
+
+:_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).
+
+:_charb_spoil0
+en : Hide spoilers
+ru*:
+cs*:
+hu*:
+nl : Verberg spoilers
+
+:_charb_spoil1
+en : Show minor spoilers
+ru*:
+cs*:
+hu*:
+nl : Toon geringe spoilers
+
+:_charb_spoil2
+en : Show major spoilers
+ru*:
+cs*:
+hu*:
+nl : Toon alle spoilers
@@ -7131,13 +7303,6 @@ cs : Tyto filtry jsou na stránkách tagů ignorovány (když jsou nastaveny jak
hu : Ezzek a szűrők figyelmen kívűl maradnak a címke oldalakon (ha alapértelmezetnek vannak beállítva).
nl : Deze filters worden genegeerd op tagpaginas (als ze gebruikt worden als standaardfilters).
-:_vnbrowse_tagrem
-en : remove
-ru : убрать
-cs : odstranit
-hu : eltávolítás
-nl : verwijder
-
:_vnbrowse_taginc
en : Tags to include
ru : Включить теги
diff --git a/data/script.js b/data/script.js
index e85bce3d..824ca12a 100644
--- a/data/script.js
+++ b/data/script.js
@@ -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)
@@ -2379,14 +2382,16 @@ 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),
+ 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 +2400,7 @@ function filFTagInput(name, label) {
filSelectField(ul.parentNode);
return false
}
- }, mt('_vnbrowse_tagrem')), ')'
+ }, mt('_js_remove')), ')'
));
}
var fetch = function(c) {
@@ -2421,7 +2426,7 @@ 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, '');
@@ -2434,16 +2439,16 @@ 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
+ tr.appendChild(tag('td', 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);
filSelectField(obj);
@@ -2466,6 +2471,61 @@ 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 bust = bust_ranges;
+ for(var i=0; i<bust.length; i++)
+ bust[i] = [ bust[i], bust[i]+' cm' ];
+ var waist = waist_ranges;
+ for(var i=0; i<waist.length; i++)
+ waist[i] = [ waist[i], waist[i]+' cm' ];
+ var hip = hip_ranges;
+ for(var i=0; i<hip.length; i++)
+ hip[i] = [ hip[i], hip[i]+' cm' ];
+ var height = height_ranges;
+ for(var i=0; i<height.length; i++)
+ height[i] = [ height[i], height[i]+' cm' ];
+ var weight = weight_ranges;
+ for(var i=0; i<weight.length; i++)
+ weight[i] = [ weight[i], weight[i]+' kg' ];
+ var bloodt = blood_types;
+ for(var i=0; i<bloodt.length; i++) // l10n /_bloodt_.+/
+ bloodt[i] = [ bloodt[i], mt('_bloodt_'+bloodt[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),
+ '',
+ filFSelect('bust_min', mt('_charb_bust_min'), 1, bust),
+ filFSelect('bust_max', mt('_charb_bust_max'), 1, bust),
+ filFSelect('waist_min', mt('_charb_waist_min'), 1, waist),
+ filFSelect('waist_max', mt('_charb_waist_max'), 1, waist),
+ filFSelect('hip_min', mt('_charb_hip_min'), 1, hip),
+ filFSelect('hip_max', mt('_charb_hip_max'), 1, hip),
+ '',
+ filFSelect('height_min', mt('_charb_height_min'), 1, height),
+ filFSelect('height_max', mt('_charb_height_max'), 1, height),
+ filFSelect('weight_min', mt('_charb_weight_min'), 1, weight),
+ filFSelect('weight_max', mt('_charb_weight_max'), 1, weight),
+ ],
+ 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})
+ ]
+ ];
+}
+
function filReleases() {
var types = release_types;
for(var i=0; i<types.length; i++) // l10n /_rtype_.+/
@@ -2537,8 +2597,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})
],