diff options
Diffstat (limited to 'data/script.js')
-rw-r--r-- | data/script.js | 173 |
1 files changed, 142 insertions, 31 deletions
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}) ], |