summaryrefslogtreecommitdiff
path: root/data
diff options
context:
space:
mode:
authormorkt <>2014-12-22 11:14:18 +0100
committerYorhel <git@yorhel.nl>2014-12-22 11:20:39 +0100
commitac784a64d0f74f9e04ac41890075c411e50ca823 (patch)
treef527926f531975751563e3d9286ce02212152850 /data
parentdf383d117908160d1a84ce4519edc0c9bcf08c3b (diff)
Initial implementation of a staff/seiyuu database
Diffstat (limited to 'data')
-rw-r--r--data/docs/1620
-rw-r--r--data/docs/index1
-rw-r--r--data/global.pl1
-rw-r--r--data/lang.txt203
-rw-r--r--data/script.js196
-rw-r--r--data/style.css30
6 files changed, 449 insertions, 2 deletions
diff --git a/data/docs/16 b/data/docs/16
new file mode 100644
index 00000000..97d7b2db
--- /dev/null
+++ b/data/docs/16
@@ -0,0 +1,20 @@
+:TITLE:Adding/Editing Staff Members
+:INC:index
+
+:SUB:Introduction
+<p>
+ Add major staff members.
+</p>
+
+:SUB:General info
+<dl>
+ <dt>Name (romaji)</dt><dd>Person true name, in the latin alphabet.
+ Check out the <a href="/d5">general editing guidelines</a>
+ for information on name order and romanization. Try to use the full name when known.
+ <a href="/d5.1">Romanise</a> according to our guidelines.
+ </dd><dt>Original name</dt><dd>The actual name of the person, in the case it is not officially in the latin alphabet. Leave empty if it's the same as the "Name (romaji)". If possible, try to include a space between the given name and the surname.
+ </dd><dt>Staff note</dt><dd>Comment.
+ </dd><dt>Gender</dt><dd>.
+ </dd><dt>Primary language</dt><dd>.
+ </dd>
+</dl>
diff --git a/data/docs/index b/data/docs/index
index e0d11a8b..a1ca1acd 100644
--- a/data/docs/index
+++ b/data/docs/index
@@ -5,6 +5,7 @@
<li><a href="/d15">Special Games</a></li>
<li><a href="/d3">Releases</a></li>
<li><a href="/d4">Producers</a></li>
+ <li><a href="/d16">Staff</a></li>
<li><a href="/d12">Characters</a></li>
<li><a href="/d10">Tags &amp; traits</a></li>
<li><a href="/d13">Capturing screenshots</a></li>
diff --git a/data/global.pl b/data/global.pl
index cf9a9fd4..b07281b2 100644
--- a/data/global.pl
+++ b/data/global.pl
@@ -113,6 +113,7 @@ our %S = (%S,
changes => [ 25, 'VNDB Recent Changes', '/hist' ],
posts => [ 25, 'VNDB Recent Posts', '/t' ],
},
+ staff_roles => [qw|script chardesign music director art songs staff|],
);
diff --git a/data/lang.txt b/data/lang.txt
index 48365acf..d64c8e92 100644
--- a/data/lang.txt
+++ b/data/lang.txt
@@ -3053,6 +3053,9 @@ tr : Yapımcılar
uk : Компанії
it : Editori
+:_menu_staff
+en : Staff
+
:_menu_characters
en : Characters
ru : Персонажи
@@ -3260,6 +3263,9 @@ tr : Yapımcı ekle
uk : Додати компанію
it : Aggiungi Editore
+:_menu_addstaff
+en : Add Staff
+
:_menu_addcharacter
en : Add Character
ru : Добавить персонажа
@@ -3884,6 +3890,9 @@ tr : Yapımcılar
uk : Компанії
it : Editori
+:_searchbox_staff
+en : Staff
+
:_searchbox_chars
en : Characters
ru : Персонажи
@@ -5328,8 +5337,186 @@ tr : Sonuç bulunamadı
uk : Нічого не знайдено
it : Nessun risultato
+#############################################################################
+## Staff pages (/s/*) ##
+#############################################################################
+# Handler::Staff
+
+# Built-in credits
+
+:_credit_script
+en : Script writer
+
+:_credit_chardesign
+en : Character design
+
+:_credit_music
+en : Composer
+
+:_credit_director
+en : Director
+
+:_credit_art
+en : Artist
+
+:_credit_songs
+en : Vocals
+
+:_credit_voice
+en : Additional voices
+
+:_credit_staff
+en : Staff
+
+# Staff diff fields (/s+.+)
+
+:_revfield_s_name
+en : Name (romaji)
+
+:_revfield_s_original
+en : Original name
+
+:_revfield_s_gender
+en : Gender
+
+:_revfield_s_lang
+en : Language
+
+:_revfield_s_aliases
+en : Aliases
+
+:_revfield_s_l_wp
+en : Wikipedia link
+
+:_revfield_s_desc
+en : Description
+
+# Staff browser
+
+:_sbrowse_title
+en : Browse staff
+
+:_sbrowse_list
+en : Staff list
+:_sbrowse_searchres
+en : Search results
+
+:_sbrowse_noresults
+en : No results found
+:_staff_credits
+en : Credits
+
+:_staff_as
+en : as
+
+:_staff_gender
+en : Gender
+
+:_staff_language
+en : Language
+
+:_staff_aliases
+en : Aliases
+
+:_staff_l_wp
+en : Wikipedia
+
+:_staff_bio
+en : Info
+
+:_staff_col_title
+en : Title
+
+:_staff_col_released
+en : Released
+
+:_staff_col_role
+en : Role
+
+:_staff_col_credit
+en : Credit
+
+:_staff_col_note
+en : Note
+
+# Add/edit staff
+
+:_staffe_title_edit
+en : Edit [_1]
+
+:_staffe_title_add
+en : Add staff member
+
+:_staffe_form_generalinfo
+en : General info
+
+:_staffe_form_name
+en : Name (romaji)
+
+:_staffe_form_original
+en : Original name
+
+:_staffe_form_alias
+en : Alias (romaji)
+
+:_staffe_form_original_alias
+en : Original alias
+
+:_staffe_form_original_note
+en : The original name of the person, leave blank if it is already in the Latin alphabet.
+
+:_staffe_form_note
+en : Staff note
+
+:_staffe_form_gender
+en : Gender
+
+:_staffe_form_lang
+en : Primary language
+
+:_staffe_form_wikipedia
+en : Wikipedia link
+
+:_staffe_aliases
+en : Aliases
+
+:_staffe_aliases_sel
+en : Selected aliases
+
+:_staffe_aliases_add
+en : Add alias
+
+:_staffe_vns
+en : Visual novels
+
+:_sedit_form_alias_none
+en : None
+
+:_vnstaff_edit_title
+en : Edit staff of [_1]
+
+:_vnstaff_edit_credits
+en : Credits
+
+:_vnstaffe_form_staff
+en : Staff
+
+:_vnstaffe_form_role
+en : Credit
+
+:_vnstaffe_form_note
+en : Note
+
+:_vnstaffe_add
+en : Add staff
+
+:_vnstaffe_none
+en : None
+
+:_vnstaffe_credit_exists
+en : Credit already given.
#############################################################################
## Release pages (/r/*) ##
@@ -8673,6 +8860,9 @@ tr : Diğer tüm yayımlar
uk : Усі інші релізи
it : Tutte le altre pubblicazioni
+:_charp_voice
+en : Voiced by
+
:_charp_description
en : Description
ru : Описание
@@ -14294,6 +14484,9 @@ tr : karakterler
uk : персонажі
it : personaggi
+:_vnpage_tab_staff
+en : staff
+
:_vnpage_rel
en : Releases
ru : Выпуски
@@ -14405,6 +14598,12 @@ tr : karakter ekle
uk : додати персонажа
it : aggiungi personaggio
+:_vnpage_staff_add
+en : add staff
+
+:_vnpage_staff_edit
+en : edit staff
+
:_vnpage_rel_add
en : add release
ru : добавить выпуск
@@ -14793,7 +14992,7 @@ uk : Огляньте [url,_1,історію редагувань], можлив
it : Controlla le [url,_1,attività] per eventuali modifiche recenti riguardo a ciò che vuoi cambiare.
:_editmsg_msg_search
-en : [url,_1,Search the database] to see if we already have information about this [index,_2,visual novel,release,producer,character].
+en : [url,_1,Search the database] to see if we already have information about this [index,_2,visual novel,release,producer,character,person].
ru : [url,_1,Воспользуйтесь поиском], ведь вполне возможно, что у нас уже есть информация об [index,_2,этой новелле,этом выпуске,этой компании,этом персонаже].
cs : [url,_1,Prohledejte databázi], zda již nemáme informaci o [index,_2,této vizuální novele,tomto vydání,tomto producentovi,této postavě].
hu : [url,_1,Nézd át az adatbázist], hogy van-e már információ erről a [index,_2,visual novelről, kiadásról, készítőről, szereplőről].
@@ -14817,7 +15016,7 @@ uk : Відновлення
it : Ripristina
:_editmsg_revert_msg
-en : You are editing an old revision of this [index,_1,visual novel,release,producer,character].
+en : You are editing an old revision of this [index,_1,visual novel,release,producer,character,person].
If you save it, all changes made after this revision will be reverted!
ru : Вы правите старую редакцию страницы [index,_1,новеллы,выпуска,компании,персонажа].
Если вы сохраните её, все изменения, сделанные после этой правки, будут утеряны!
diff --git a/data/script.js b/data/script.js
index ce66bc02..6a3bd25e 100644
--- a/data/script.js
+++ b/data/script.js
@@ -16,6 +16,8 @@
* tgl -> VN tag linking
* tvs -> VN page tag spoilers
* vnr -> VN relation editor
+ * vns -> VN staff
+ * sal -> Staff aliases editor
*/
/* Internationalization note:
@@ -2047,6 +2049,200 @@ if(byId('jt_box_chare_vns'))
+/* S T A F F (/s+/edit) */
+
+function salLoad () {
+ var aliases = byId('aliases').value.split('|||');
+ for (var i = 0; i < aliases.length && aliases[i].length > 1; i++) {
+ var al = aliases[i].split(',', 3);
+ salAdd(al[0], al[1], al[2]);
+ }
+ salEmpty();
+
+ // bind the add-link
+ byName(byClass(byId('alias_new'), 'td', 'tc_add')[0], 'a')[0].onclick = salFormAdd;
+ byName(byId('maincontent'), 'form')[0].onsubmit = salSerialize;
+}
+
+function salAdd(aid, name, original) {
+ byId('alias_tbl').appendChild(tag('tr', {id:'alias_tr_'+aid},
+ tag('td', {'class':'tc_name' }, tag('input', {type:'text', 'class':'text', value:name})),
+ tag('td', {'class':'tc_original' }, tag('input', {type:'text', 'class':'text', value:original})),
+ tag('td', {'class':'tc_add' },
+ tag('input', {type:'hidden', value:aid}),
+ tag('a', {href:'#', onclick:salDel}, mt('_js_remove')))
+ ));
+
+ salEmpty();
+}
+
+function salEmpty() {
+ var tbl = byId('alias_tbl');
+ if (byName(tbl, 'tr').length < 1)
+ tbl.appendChild(tag('tr', {id:'alias_tr_none'}, tag('td', {colspan:3}, mt('_sedit_form_alias_none'))));
+ else if (byId('alias_tr_none'))
+ tbl.removeChild(byId('alias_tr_none'));
+}
+
+function salSerialize() {
+ var tbl = byName(byId('alias_tbl'), 'tr');
+ var a = [];
+ for (var i = 0; i < tbl.length; ++i) {
+ if(tbl[i].id == 'alias_tr_none')
+ continue;
+ var name = byName(byClass(tbl[i], 'td', 'tc_name')[0], 'input')[0].value;
+ var orig = byName(byClass(tbl[i], 'td', 'tc_original')[0], 'input')[0].value;
+ var id = byName(byClass(tbl[i], 'td', 'tc_add')[0], 'input')[0].value;
+ a[a.length] = [ id, name, orig ].join(',');
+ }
+ byId('aliases').value = a.join('|||');
+}
+
+function salDel() {
+ var tr = this;
+ while (tr.nodeName.toLowerCase() != 'tr')
+ tr = tr.parentNode;
+ byId('alias_tbl').removeChild(tr);
+ salSerialize();
+ salEmpty();
+ return false;
+}
+
+function salFormAdd() {
+ var alnew = byId('alias_new');
+ var name = byName(byClass(alnew, 'td', 'tc_name')[0], 'input')[0];
+ var orig = byName(byClass(alnew, 'td', 'tc_original')[0], 'input')[0];
+ if(name.value.length < 1)
+ return false;
+
+ salAdd(0, name.value, orig.value);
+ salSerialize();
+ name.value = '';
+ orig.value = '';
+ return false;
+}
+
+if(byId('jt_box_staffe_aliases'))
+ salLoad();
+
+
+
+
+/* S T A F F < - > V N L I N K I N G (/v+/staff/edit) */
+
+function vnsLoad() {
+ var credits = byId('credits').value.split('|||');
+ var s = {}; // staff -> { aid: [ role, note ], .. }
+ var q = []; // list of a=X paramters
+ for (var i = 0; i < credits.length && credits[i].length > 1; i++) {
+ var c = credits[i].split('-', 3); // aid, role, note
+ if (!s[c[0]])
+ q.push('a='+c[0]);
+ s[c[0]] = [ c[1], c[2] ];
+ }
+ if (q.length > 0)
+ ajax('/xml/staff.xml?'+q.join(';'), function(hs) {
+ var staff = hs.responseXML.getElementsByTagName('item');
+ for (var i = 0; i < staff.length; i++) {
+ var aid = staff[i].getAttribute('aid');
+ if (s[aid])
+ vnsAdd (staff[i], s[aid][0], s[aid][1]);
+ else
+ vnsAdd (staff[i], 'staff', '');
+ }
+ vnsEmpty();
+ }, 1);
+ else
+ vnsEmpty();
+
+ byName(byId('maincontent'), 'form')[0].onsubmit = vnsSerialize;
+
+ // dropdown search
+ dsInit(byId('credit_input'), '/xml/staff.xml?q=', function(item, tr) {
+ tr.appendChild(tag('td', { style: 'text-align: right; padding-right: 5px'}, 's'+item.getAttribute('id')));
+ tr.appendChild(tag('td', item.firstChild.nodeValue));
+ }, vnsFormAdd);
+}
+
+function vnsAdd(staff, role, note) {
+ var sid = staff.getAttribute('id');
+ var aid = staff.getAttribute('aid');
+ var tbl = byId('credits_tbl');
+
+ var rlist = tag('select', {onchange:vnsSerialize});
+ for (var i = 0; i < staff_roles.length; i++) // l10n /^_credit_/
+ rlist.appendChild(tag('option', {value:staff_roles[i], selected:staff_roles[i]==role},
+ mt('_credit_'+staff_roles[i])));
+
+ var note = tag('input', {type:'text', 'class':'text'});
+ tbl.appendChild(tag('tr', {id:'vns_a'+aid},
+ tag('td', {'class':'tc_name'},
+ tag('input', {type:'hidden', value:aid}),
+ tag('a', {href:'/s'+sid}, staff.firstChild.nodeValue)),
+ tag('td', {'class':'tc_role'}, rlist),
+ tag('td', {'class':'tc_note'}, note),
+ tag('td', {'class':'tc_del'}, tag('a', {href:'#', onclick:vnsDel}, mt('_js_remove')))
+ ));
+ vnsEmpty();
+ vnsSerialize();
+}
+
+function vnsEmpty() {
+ var x = byId('credits_loading');
+ var tbody = byId('credits_tbl');
+ var tbl = tbody.parentNode;
+ var thead = byName(tbl, 'thead');
+ if(x)
+ tbody.removeChild(x);
+ if(byName(tbody, 'tr').length < 1) {
+ tbody.appendChild(tag('tr', {id:'credits_tr_none'},
+ tag('td', {colspan:4}, mt('_vnstaffe_none'))));
+ if (thead.length)
+ tbl.removeChild(thead[0]);
+ } else {
+ if(byId('credits_tr_none'))
+ tbody.removeChild(byId('credits_tr_none'));
+ if (thead.length < 1) {
+ thead = tag('thead', tag('tr',
+ tag('td', {'class':'tc_name'}, mt('_vnstaffe_form_staff')),
+ tag('td', {'class':'tc_role'}, mt('_vnstaffe_form_role')),
+ tag('td', {'class':'tc_note'}, mt('_vnstaffe_form_note'))));
+ tbl.insertBefore(thead, tbody);
+ }
+ }
+}
+
+function vnsSerialize() {
+ var l = byName(byId('credits_tbl'), 'tr');
+ var c = [];
+ for (var i = 0; i < l.length; i++) {
+ var aid = byName(byName(l[i], 'td')[0], 'input')[0].value;
+ var role = byName(byClass(l[i], 'tc_role')[0], 'select')[0];
+ var note = byName(byClass(l[i], 'tc_note')[0], 'input')[0];
+ c.push (aid+'-'+role.options[role.selectedIndex].value+'-'+note.value);
+ }
+ byId('credits').value = c.join('|||');
+}
+
+function vnsDel() {
+ var tr = this;
+ while (tr.nodeName.toLowerCase() != 'tr')
+ tr = tr.parentNode;
+ byId('credits_tbl').removeChild(tr);
+ vnsEmpty();
+ vnsSerialize();
+ return false;
+}
+
+function vnsFormAdd(item) {
+ vnsAdd(item, 'staff', '');
+ return '';
+}
+
+if(byId('jt_box_vnstaffe_credits'))
+ vnsLoad();
+
+
/* F I L T E R S Y S T E M */
diff --git a/data/style.css b/data/style.css
index 9b9ecb9a..3c565700 100644
--- a/data/style.css
+++ b/data/style.css
@@ -565,6 +565,36 @@ div.charb td.tc2 b { margin-left: 10px }
div.charb td.tc2 b a { color: $grayedout$!important }
+/***** Staff browse *****/
+
+div.staffbrowse { padding-bottom: 10px }
+.staffbrowse ul { float: left; margin-top: -5px; margin-left: 3%; width: 28%; }
+.staffbrowse ul li { list-style-type: none; }
+.staffbrowse ul li acronym { margin-right: 5px; margin-top: 1px; }
+div.staffinfo { position: relative; float: left; margin-right: 3%; }
+div.staffdesc { margin-bottom: 10px; }
+
+
+/***** Staff edit *****/
+
+#jt_box_vnstaffe_credits table,
+#jt_box_staffe_aliases table { margin-bottom: 10px; }
+#jt_box_vnstaffe_credits h2,
+#jt_box_staffe_aliases h2 { margin: 0 0 3px 0px; }
+#jt_box_vnstaffe_credits td,
+#jt_box_staffe_aliases td { padding: 1px 2px; vertical-align: middle; }
+#jt_box_vnstaffe_credits td.tc_role,
+#jt_box_vnstaffe_credits td.tc_role select { width: 120px }
+#jt_box_vnstaffe_credits td.tc_staff,
+#jt_box_staffe_aliases td.tc_name,
+#jt_box_staffe_aliases td.tc_original { width: 200px }
+#jt_box_vnstaffe_credits td.tc_staff input,
+#jt_box_staffe_aliases td.tc_name input,
+#jt_box_staffe_aliases td.tc_original input { width: 200px }
+#jt_box_vnstaffe_credits td.tc_note,
+#jt_box_vnstaffe_credits td.tc_note input { width: 250px }
+#jt_box_vnstaffe_credits td.tc_add,
+#jt_box_staffe_aliases td.tc_add { width: 40px; text-align: left }
/***** Documentation pages *****/