User:Fredddie/script/CustomRefToolbar.js
Appearance
Code that you insert on this page could contain malicious content capable of compromising your account. If you import a script from another page with "importScript", "mw.loader.load", "iusc", or "lusc", take note that this causes you to dynamically load a remote script, which could be changed by others. Editors are responsible for all edits and actions they perform, including by scripts. User scripts are not centrally supported and may malfunction or become inoperable due to software changes. A guide to help you find broken scripts is available. If you are unsure whether code you are adding to this page is safe, you can ask at the appropriate village pump. This code will be executed when previewing this page. |
Documentation for this user script can be added at User:Fredddie/script/CustomRefToolbar. |
/*
Many, many thanks to [[User:Mr.Z-man]] for his creation of the excellent RefToolbar gadget.
I have only modified his work; I have not created a new gadget, as he did, from scratch.
If you're using RefToolbar, this modification, or have modified it for your own use, you
owe a great debt of gratitude to Mr.Z-man for all his hard work, which continues.
Thank you, good sir!
*/
/*
Change log:
2016-02-25 Update new parameter names.
2014-06-30 Add "agency" parameter to web template.
2014-06-10 Add UN doc template.
2014-06-04 Added cite interview template. Updated all labels for dialog boxes to include "(custom)". Tried to override default options, but "expandtemplates" still doesn't work.
Turned off "modal" as a test; while it doesn't allow me to leave the form and edit the document, it does bypass graying out the entire screen; easier to see edit area.
2014-06-03 Added the code that parses the information; customized it to include a space before the pipe.
2014-06-02 Updated to include new incrementing features of RefToolbar; removed "coauthors" everywhere.
2014-05-25 Added autofill to DOI fields; added the deprecated "coauthors" field which is still being populated by autofill tools, along with a tooltip about not using it.
Made all fields on patent template show; it's so short there's no reason not to show them all.
2014-05-25 Finalized modifications and wrote documentation.
*/
// Custom RefToolbar
$('head').one('reftoolbarbase', function() {
if (typeof CiteTB === 'undefined') return;
// Set default options
CiteTB.Options = {
"date format" : "<monthname> <date>, <year>",
"autodate fields" : ['date', 'access-date', 'archive-date'],
"months" : ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
"modal" : false,
"autoparse" : true,
"expandtemplates" : true,
};
// Set user options
CiteTB.UserOptions['date format'] = "<monthname> <date>, <year>";
CiteTB.UserOptions['autodate fields'] = ['date', 'access-date', 'archive-date'];
CiteTB.UserOptions['autoparse'] = true;
// Cite template definitions
new citeTemplate('cite map', 'map',
[ // Basic fields
{"field": "first<N>", "autofillprop":"first-incr", 'increment_group':'author'},
{"field": "last<N>", "autofillprop":"last-incr", 'increment_group':'author', 'increment_button':true},
{"field": "title", "autofillprop":"title"},
{"field": "url"},
{"field": "date", "autofillprop":"year"},
{"field": "publisher", "autofillprop":"publisher"},
{"field": "location", "autofillprop":"location"},
{"field": "isbn", "autofillid":"isbn"},
{"field": "cartography",},
{"field": "edition", "autofillprop":"edition"},
{"field": "access-date", "autofillprop":"date"},
{"field": "ref", "tooltip":"cite-ref-tooltip"},
],
[ // Expanded fields
{"field": "author<N>", 'increment_group':'author_alt', 'increment_button':true},
{"field": "author<N>-link", "tooltip":"cite-author-link-tooltip", 'increment_group':'authorlink', 'increment_button':true},
{"field": "archive-url"},
{"field": "archive-date", "autofillprop":"date"},
{"field": "dead-url"},
{"field": "page", "tooltip":"cite-page-tooltip"},
{"field": "pages", "autofillprop":"pages", "tooltip":"cite-pages-tooltip"},
{"field": "language"},
{"field": "trans-title"},
{"field": "format"},
{"field": "scale"},
{"field": "series"},
{"field": "section"},
{"field": "sections"},
{"field": "inset"},
{"field": "type"},
{"field": "via"},
]);
new citeTemplate('cite IowaDOT map', 'iowadotmap',
[ // Basic fields
{"field": "year", "autofillprop":"year"},
{"field": "month"},
{"field": "access-date", "autofillprop":"date"},
{"field": "link"},
],
[ // Expanded fields
{"field": "inset"},
{"field": "scale"},
{"field": "section"},
{"field": "sections"},
{"field": "ref", "tooltip":"cite-ref-tooltip"},
]);
// Cite template headings, field labels, and tooltips
mw.usability.addMessages( {
'cite-dialog-map' : 'Map citation (custom)',
'cite-dialog-iowadotmap' : 'IowaDOT map citation (custom)',
'cite-increment-alt' : 'Add another', // Alt text for field increment button, not specific to a particular field
'cite-author-link-tooltip' : 'If the author has a Wikipedia article, the name of the article',
'cite-body-tooltip' : "A=General Assembly; S=Security Council; T=Secretariat; E=Economic and Social Council; H=Human Rights Campaign",
'cite-subject-link-tooltip' : 'If the subject has a Wikipedia article, the name of the article',
'cite-type-tooltip' : "A=Agenda item; D=Document; M=Meeting; R=Resolution; S=Summary Report; V=Verbatim Report",
'cite-others-tooltip' : "Use for translators, photographers, illustrators, etc. List last name followed by a comma and a space, then first name followed by their role in parentheses; if more than one, separate with semicolons",
'cite-access-date-label' : 'Access date',
'cite-archive-date-label' : 'Archive date',
'cite-archive-url-label' : 'Archive URL',
'cite-cartography-label' : 'Cartography by',
'cite-dead-url-label' : "Dead url?",
'cite-docid-label' : 'Doc ID',
'cite-document_number-label' : 'Document number',
'cite-edition-label' : 'Edition',
'cite-inset-label' : 'Inset',
'cite-map-label' : 'Map',
'cite-map-url-label' : 'Map URL',
'cite-number-label' : 'Number',
'cite-others-label' : 'Others',
'cite-pubdate-label' : 'Publication date',
'cite-scale-label' : 'Scale',
'cite-section-label' : 'Section',
'cite-sections-label' : 'Sections',
'cite-series-label' : 'Series',
'cite-status-label' : 'Status',
'cite-subject-link-label' : "Subject's article",
'cite-trans-title-label' : 'Translated title',
'cite-type-label' : 'Type',
});
});
// REF FUNCTIONS - hoping to customize this to add a space before the pipe
// Actually assemble a ref from user input
if(typeof CiteTB !== 'undefined') {
CiteTB.getRef = function(inneronly, forinsert) {
var i;
var template = CiteTB.getOpenTemplate();
var templatename = template.templatename;
var res = '';
var refobj = {'shorttag':false};
if (!inneronly) {
var group = $('#cite-'+CiteTB.escStr(template.shortform)+'-group').val();
var refname = $('#cite-'+CiteTB.escStr(template.shortform)+'-name').val();
res += '<ref';
if (refname) {
refname = $.trim(refname);
res+=' name='+CiteTB.getQuotedString(refname);
refobj.refname = refname;
}
if (group) {
group = $.trim(group);
res+=' group='+CiteTB.getQuotedString(group);
refobj.refgroup = group;
}
res+='>';
}
var content ='{{'+templatename;
for( g in template.incrementables ) {
group = template.incrementables[g];
for (i=1; i<=group.val; i++) {
for (j=0; j<group.fields.length; j++) {
var fieldname = group.fields[j].field;
var fieldid = fieldname.replace('<N>', i.toString());
var field = $('#cite-'+CiteTB.escStr(template.shortform)+'-'+fieldid).val();
if (field) {
content+= ' |'+fieldid+'=';
content+= $.trim(field);
}
}
}
}
for( i=0; i<template.basic.length; i++ ) {
if (template.basic[i].increment_group) {
continue;
}
var fieldname = template.basic[i].field;
var field = $('#cite-'+CiteTB.escStr(template.shortform)+'-'+fieldname).val();
if (field) {
content+= ' |'+fieldname+'=';
content+= $.trim(field);
}
}
if ($('#cite-form-status').val() !== 'closed') {
for( i=0; i<template.extra.length; i++ ) {
if (template.extra[i].increment_group) {
continue;
}
var fieldname = template.extra[i].field;
var field = $('#cite-'+CiteTB.escStr(template.shortform)+'-'+fieldname).val();
if (field) {
content+= ' |'+fieldname+'=';
content+= $.trim(field);
}
}
}
content+= '}}';
res+=content;
refobj.content = content;
if (!inneronly) {
res+= '</ref>';
}
if (forinsert) {
CiteTB.mainRefList.push(refobj);
}
return res;
};
}