Revision as of 00:53, 27 January 2011 view sourceKaldari (talk | contribs)Autopatrolled, Extended confirmed users, File movers, Pending changes reviewers, Rollbackers68,434 edits revert← Previous edit |
Latest revision as of 04:06, 1 November 2015 view source Mr.Z-man (talk | contribs)Extended confirmed users28,435 edits fix for issue reported on talk page |
(25 intermediate revisions by 5 users not shown) |
Line 1: |
Line 1: |
|
|
/* jshint asi: true */ |
|
// Global object |
|
|
|
/* global mw, $, CiteTB, citeTemplate, citeErrorCheck */ |
⚫ |
if (typeof CiteTB == 'undefined') { |
|
|
|
|
⚫ |
var CiteTB = { |
|
|
|
if ( window.CiteTB === undefined ) { |
|
⚫ |
window.CiteTB = { |
|
"Templates" : {}, // All templates |
|
"Templates" : {}, // All templates |
|
"Options" : {}, // Global options |
|
"Options" : {}, // Global options |
Line 8: |
Line 10: |
|
"ErrorChecks" : {} // Error check functions |
|
"ErrorChecks" : {} // Error check functions |
|
}; |
|
}; |
|
|
} |
|
|
|
|
⚫ |
if (typeof mw.usability == 'undefined') { |
|
|
mw.usability = {}; |
|
|
mw.usability.getMsg = function(m) { return mw.messages.get(m); } |
|
|
mw.usability.addMessages = function(msgs) { mw.messages.set(msgs); }; |
|
} |
|
} |
|
|
|
|
|
// Object for cite templates |
|
// Object for cite templates |
|
function citeTemplate(templatename, shortform, basicfields, expandedfields) { |
|
window.citeTemplate = function (templatename, shortform, basicfields, expandedfields) { |
|
// Properties |
|
// Properties |
|
this.templatename = templatename; // The template name - "cite web", "cite book", etc. |
|
this.templatename = templatename; // The template name - "cite web", "cite book", etc. |
Line 18: |
Line 26: |
|
// Less common - quote, archiveurl - should be everything the template supports minus the basic ones |
|
// Less common - quote, archiveurl - should be everything the template supports minus the basic ones |
|
this.extra = expandedfields; |
|
this.extra = expandedfields; |
|
|
|
|
|
this.incrementables = {}; |
|
|
|
|
|
// Add it to the list |
|
// Add it to the list |
|
CiteTB.Templates = this; |
|
CiteTB.Templates = this; |
|
// Methods |
|
// Methods |
|
this.makeFormInner = function(fields) { |
|
this.makeFormInner = function(fields, incrsetup) { |
|
var i=0; |
|
var i=0; |
|
var trs = new Array(); |
|
var trs = ; |
|
|
var autofills = |
|
for (i=0; i<fields.length; i++) { |
|
for (i=0; i<fields.length; i++) { |
|
var fieldobj = fields; |
|
var fieldobj = fields; |
|
var field = fieldobj.field; |
|
var field = labelfield = fieldobj.field; |
|
var ad = false; |
|
var ad = false; |
|
|
if (incrsetup && fieldobj.increment_group) { |
⚫ |
if ($j.inArray(field, CiteTB.getOption('autodate fields')) != -1 ) { |
|
|
|
field = fieldobj.field.replace('<N>', '1'); |
⚫ |
im = $j('<img />').attr('src', 'http://upload.wikimedia.org/wikipedia/commons/thumb/7/7b/Nuvola_apps_date.svg/20px-Nuvola_apps_date.svg.png'); |
|
|
|
labelfield = fieldobj.field.replace('<N>', ''); |
|
|
if (this.incrementables && !this.incrementables.setup) { |
|
|
// The object has been created, but not fully initialized |
|
|
this.incrementables.push(fieldobj) |
|
|
} else if (!this.incrementables) { |
|
|
// Object not yet created |
|
|
this.incrementables = { |
|
|
'fields': , |
|
|
'val':1, |
|
|
'setup': false |
|
|
}; |
|
|
} else if (this.incrementables && this.incrementables.setup) { |
|
|
// Fully initialized from a previous invocation of this function, just resetting the number |
|
|
this.incrementables.val = 1 |
|
|
} |
|
|
} else if (fieldobj.increment_group) { |
|
|
// Adding a new row |
|
|
incrval = this.incrementables.val; |
|
|
field = fieldobj.field.replace('<N>', incrval.toString()); |
|
|
labelfield = fieldobj.field.replace('<N>', ''); |
|
|
} |
|
⚫ |
if ($.inArray(field, CiteTB.getOption('autodate fields')) != -1 ) { |
|
⚫ |
im = $('<img />').attr('src', '//upload.wikimedia.org/wikipedia/commons/thumb/7/7b/Nuvola_apps_date.svg/20px-Nuvola_apps_date.svg.png'); |
|
im.attr('alt', mw.usability.getMsg('cite-insert-date')).attr('title', mw.usability.getMsg('cite-insert-date')); |
|
im.attr('alt', mw.usability.getMsg('cite-insert-date')).attr('title', mw.usability.getMsg('cite-insert-date')); |
|
var ad = $j('<a />').attr('href', '#'); |
|
var ad = $('<a />').attr('href', '#'); |
|
ad.append(im); |
|
ad.append(im); |
|
ad.attr('id', 'cite-date-'+CiteTB.escStr(this.shortform)+'-'+field); |
|
ad.attr('id', 'cite-date-'+CiteTB.escStr(this.shortform)+'-'+field); |
|
$j('#cite-date-'+CiteTB.escStr(this.shortform)+'-'+field).live('click', CiteTB.fillAccessdate); |
|
$( document ).on( 'click', '#cite-date-'+CiteTB.escStr(this.shortform)+'-'+field, CiteTB.fillAccessdate ); |
|
} |
|
} |
|
|
|
|
|
if (fieldobj.autofillid) { |
|
if (fieldobj.autofillid) { |
|
var autotype = fieldobj.autofillid; |
|
var autotype = fieldobj.autofillid; |
|
im = $j('<img />').attr('src', 'http://upload.wikimedia.org/wikipedia/commons/thumb/1/17/System-search.svg/20px-System-search.svg.png'); |
|
im = $('<img />').attr('src', '//upload.wikimedia.org/wikipedia/commons/thumb/1/17/System-search.svg/20px-System-search.svg.png'); |
|
im.attr('alt', mw.usability.getMsg('cite-autofill-alt')).attr('title', mw.usability.getMsg('cite-autofill-alt')); |
|
im.attr('alt', mw.usability.getMsg('cite-autofill-alt')).attr('title', mw.usability.getMsg('cite-autofill-alt')); |
|
var ad = $j('<a />').attr('href', '#'); |
|
var ad = $('<a />').attr('href', '#'); |
|
ad.append(im); |
|
ad.append(im); |
|
ad.attr('id', 'cite-auto-'+CiteTB.escStr(this.shortform)+'-'+field+'-'+autotype); |
|
ad.attr('id', 'cite-auto-'+CiteTB.escStr(this.shortform)+'-'+field+'-'+autotype); |
|
$j('#cite-auto-'+CiteTB.escStr(this.shortform)+'-'+field+'-'+autotype).live('click', CiteTB.initAutofill); |
|
autofills.push('#cite-auto-'+CiteTB.escStr(this.shortform)+'-'+field+'-'+autotype); |
|
|
} |
|
|
|
|
|
if (fieldobj.increment_button) { |
|
|
var incrtype = fieldobj.increment_group; |
|
|
im = $('<img />').attr('src', '//upload.wikimedia.org/wikipedia/commons/thumb/b/b9/Nuvola_action_edit_add.svg/20px-Nuvola_action_edit_add.svg.png'); |
|
|
im.attr('alt', mw.usability.getMsg('cite-increment-alt')).attr('title', mw.usability.getMsg('cite-increment-alt')); |
|
|
var ad = $('<a />').attr('href', '#'); |
|
|
ad.append(im); |
|
|
ad.attr('id', 'cite-incr-'+CiteTB.escStr(this.shortform)+'-'+incrtype); |
|
} |
|
} |
|
|
|
|
|
var display = fieldobj.label ? fieldobj.label : CiteTB.fixStr(field); |
|
var display = mw.usability.getMsg('cite-'+labelfield+'-label'); |
|
|
if (typeof display !== 'string') { |
⚫ |
var tooltip = fieldobj.tooltip ? $j('<abbr />').attr('title', fieldobj.tooltip).text('*') : false; |
|
|
|
if (fieldobj.label) { |
|
|
display = CiteTB.fixStr(fieldobj.label); |
|
|
} else { |
|
|
display = CiteTB.fixStr(labelfield) |
|
|
} |
|
|
} |
|
⚫ |
var tooltip = fieldobj.tooltip ? $('<abbr />').attr('title', mw.usability.getMsg(fieldobj.tooltip)).html('<sup>?</sup>') : false; |
|
|
|
|
|
var input = ''; |
|
var input = ''; |
|
if (ad) { |
|
if (ad) { |
|
input = $j('<input tabindex="1" style="width:85%" type="text" />'); |
|
input = $('<input tabindex="1" style="width:85%" type="text" />'); |
|
} else { |
|
} else { |
|
input = $j('<input tabindex="1" style="width:100%" type="text" />'); |
|
input = $('<input tabindex="1" style="width:100%" type="text" />'); |
|
} |
|
} |
|
input.attr('id', 'cite-'+CiteTB.escStr(this.shortform)+'-'+field); |
|
input.attr('id', 'cite-'+CiteTB.escStr(this.shortform)+'-'+field); |
|
if (fieldobj.autofillprop) { |
|
if (fieldobj.autofillprop) { |
|
input.addClass('cite-'+CiteTB.escStr(this.shortform)+'-'+fieldobj.autofillprop); |
|
classname = 'cite-'+CiteTB.escStr(this.shortform)+'-'+fieldobj.autofillprop |
|
|
if (fieldobj.increment_group) { |
|
|
input.addClass('cite-'+CiteTB.escStr(this.shortform)+'-incr-'+fieldobj.increment_group); |
|
|
classname+='-'+this.incrementables.val.toString(); |
|
|
} |
|
|
input.addClass(classname); |
|
} |
|
} |
|
var label = $j('<label />'); |
|
var label = $('<label />'); |
|
label.attr('for', 'cite-'+CiteTB.escStr(this.shortform)+'-'+field).text(display); |
|
label.attr('for', 'cite-'+CiteTB.escStr(this.shortform)+'-'+field).text(display); |
|
if (tooltip) { |
|
if (tooltip) { |
Line 70: |
Line 125: |
|
style += ' padding-left:1em;'; |
|
style += ' padding-left:1em;'; |
|
} else { |
|
} else { |
|
var tr = $j('<tr />'); |
|
var tr = $('<tr />'); |
|
} |
|
} |
|
var td1 = $j('<td class="cite-form-td" />').attr('style', style); |
|
var td1 = $('<td class="cite-form-td" />').attr('style', style); |
|
td1.append(label); |
|
td1.append(label); |
|
tr.append(td1); |
|
tr.append(td1); |
|
var td2 = $j('<td class="cite-form-td" style="width:30%" />'); |
|
var td2 = $('<td class="cite-form-td" style="width:30%" />'); |
|
td2.append(input); |
|
td2.append(input); |
|
if (ad) { |
|
if (ad) { |
Line 84: |
Line 139: |
|
trs.push(tr); |
|
trs.push(tr); |
|
} |
|
} |
|
|
} |
|
|
var needsetup = false; |
|
|
for (g in this.incrementables) { |
|
|
if (!this.incrementables.setup) { |
|
|
needsetup = true; |
|
|
$( document ).on( 'click', '#cite-incr-'+CiteTB.escStr(this.shortform)+'-'+g, CiteTB.incrementFields ); |
|
|
this.incrementables.setup = true; |
|
|
} |
|
|
} |
|
|
if (needsetup || $.isEmptyObject(this.incrementables)) { |
|
|
for(i=0; i<autofills.length; i++) { |
|
|
$( document ).on( 'click', autofills, CiteTB.initAutofill ); |
|
|
} |
|
} |
|
} |
|
return trs; |
|
return trs; |
Line 91: |
Line 159: |
|
// gives a little bit of HTML so the open form can be identified |
|
// gives a little bit of HTML so the open form can be identified |
|
this.getInitial = function() { |
|
this.getInitial = function() { |
|
var hidden = $j('<input type="hidden" class="cite-template" />'); |
|
var hidden = '<input type="hidden" class="cite-template" value="' + this.templatename + '"/>'; |
|
hidden.val(this.templatename); |
|
|
return hidden; |
|
return hidden; |
|
} |
|
} |
Line 98: |
Line 165: |
|
// makes the form used in the dialog boxes |
|
// makes the form used in the dialog boxes |
|
this.getForm = function() { |
|
this.getForm = function() { |
|
var main = $j("<div class='cite-form-container' />"); |
|
var main = $("<div class='cite-form-container' />"); |
|
var form1 = $j('<table style="width:100%; background-color:transparent;" class="cite-basic-fields" />'); |
|
var form1 = $('<table style="width:100%; background-color:transparent;" class="cite-basic-fields" />'); |
|
var i=0; |
|
var i=0; |
|
var trs = this.makeFormInner(this.basic); |
|
var trs = this.makeFormInner(this.basic, true); |
|
for (var i=0; i<trs.length; i++) { |
|
for (var i=0; i<trs.length; i++) { |
|
form1.append(trs); |
|
form1.append(trs); |
|
} |
|
} |
|
|
|
|
|
var form2 = $j('<table style="width:100%; background-color:transparent; display:none" class="cite-extra-fields">'); |
|
var form2 = $('<table style="width:100%; background-color:transparent; display:none" class="cite-extra-fields">'); |
|
trs = this.makeFormInner(this.extra); |
|
trs = this.makeFormInner(this.extra, true); |
|
for (var i=0; i<trs.length; i++) { |
|
for (var i=0; i<trs.length; i++) { |
|
form2.append(trs); |
|
form2.append(trs); |
Line 113: |
Line 180: |
|
main.append(form1).append(form2); |
|
main.append(form1).append(form2); |
|
|
|
|
|
var form3 = $j('<table style="width:100%; background-color:transparent;padding-top:1em" class="cite-other-fields">'); |
|
var form3 = $('<table style="width:100%; background-color:transparent;padding-top:1em" class="cite-other-fields">'); |
|
var tr = $j('<tr />'); |
|
var tr = $('<tr />'); |
|
var td1 = $j('<td class="cite-form-td" style="text-align:right; width:20%" />'); |
|
var td1 = $('<td class="cite-form-td" style="text-align:right; width:20%" />'); |
|
var label1 = $j('<label />'); |
|
var label1 = $('<label />'); |
|
label1.attr('for', "cite-"+CiteTB.escStr(this.shortform)+'-name').text(mw.usability.getMsg('cite-name-label')); |
|
label1.attr('for', "cite-"+CiteTB.escStr(this.shortform)+'-name').text(mw.usability.getMsg('cite-name-label')); |
|
td1.append(label1); |
|
td1.append(label1); |
|
var td2 = $j('<td class="cite-form-td" style="width:30%" />'); |
|
var td2 = $('<td class="cite-form-td" style="width:30%" />'); |
|
var input1 = $j('<input tabindex="1" style="width:100%" type="text" />'); |
|
var input1 = $('<input tabindex="1" style="width:100%" type="text" />'); |
|
input1.attr('id', 'cite-'+CiteTB.escStr(this.shortform)+'-name'); |
|
input1.attr('id', 'cite-'+CiteTB.escStr(this.shortform)+'-name'); |
|
td2.append(input1); |
|
td2.append(input1); |
|
var td3 = $j('<td class="cite-form-td" style="text-align:right; padding-left:1em; width:20%">'); |
|
var td3 = $('<td class="cite-form-td" style="text-align:right; padding-left:1em; width:20%">'); |
|
var label2 = $j('<label />'); |
|
var label2 = $('<label />'); |
|
label2.attr('for', 'cite-'+CiteTB.escStr(this.shortform)+'-group').text(mw.usability.getMsg('cite-group-label')); |
|
label2.attr('for', 'cite-'+CiteTB.escStr(this.shortform)+'-group').text(mw.usability.getMsg('cite-group-label')); |
|
td3.append(label2); |
|
td3.append(label2); |
|
var td4 = $j('<td class="cite-form-td" style="width:30%" />'); |
|
var td4 = $('<td class="cite-form-td" style="width:30%" />'); |
|
var input2 = $j('<input tabindex="1" style="width:100%" type="text" />'); |
|
var input2 = $('<input tabindex="1" style="width:100%" type="text" />'); |
|
input2.attr('id', 'cite-'+CiteTB.escStr(this.shortform)+'-group'); |
|
input2.attr('id', 'cite-'+CiteTB.escStr(this.shortform)+'-group'); |
|
td4.append(input2); |
|
td4.append(input2); |
Line 134: |
Line 201: |
|
form3.append(tr); |
|
form3.append(tr); |
|
main.append(form3); |
|
main.append(form3); |
|
var extras = $j('<div />'); |
|
var extras = $('<div />'); |
|
extras.append('<input type="hidden" class="cite-form-status" value="closed" />'); |
|
extras.append('<input type="hidden" class="cite-form-status" value="closed" />'); |
|
var hidden = $j('<input type="hidden" class="cite-template" />'); |
|
var hidden = $('<input type="hidden" class="cite-template" />'); |
|
hidden.val(this.templatename); |
|
hidden.val(this.templatename); |
|
extras.append(hidden); |
|
extras.append(hidden); |
|
var span1 = $j('<span class="cite-preview-label" style="display:none;" />'); |
|
var span1 = $('<span class="cite-preview-label" style="display:none;" />'); |
|
span1.text(mw.usability.getMsg('cite-raw-preview')); |
|
span1.text(mw.usability.getMsg('cite-raw-preview')); |
|
extras.append(span1).append('<div class="cite-ref-preview" style="padding:0.5em; font-size:110%" />'); |
|
extras.append(span1).append('<div class="cite-ref-preview" style="padding:0.5em; font-size:110%" />'); |
|
var span2 = $j('<span class="cite-prev-parsed-label" style="display:none;" />'); |
|
var span2 = $('<span class="cite-prev-parsed-label" style="display:none;" />'); |
|
span2.text(mw.usability.getMsg('cite-parsed-label')); |
|
span2.text(mw.usability.getMsg('cite-parsed-label')); |
|
extras.append(span2).append('<div class="cite-preview-parsed" style="padding-bottom:0.5em; font-size:110%" />'); |
|
extras.append(span2).append('<div class="cite-preview-parsed" style="padding-bottom:0.5em; font-size:110%" />'); |
|
var link = $j('<a href="#" class="cite-prev-parse" style="margin:0 1em 0 1em; display:none; color:darkblue" />'); |
|
var link = $('<a href="#" class="cite-prev-parse" style="margin:0 1em 0 1em; display:none; color:darkblue" />'); |
|
link.text(mw.usability.getMsg('cite-form-parse')); |
|
link.text(mw.usability.getMsg('cite-form-parse')); |
|
extras.append(link); |
|
extras.append(link); |
Line 170: |
Line 237: |
|
*/ |
|
*/ |
|
|
|
|
|
function citeErrorCheck(obj) { |
|
window.citeErrorCheck = function (obj) { |
|
this.obj = obj |
|
this.obj = obj |
|
CiteTB.ErrorChecks = this; |
|
CiteTB.ErrorChecks = this; |
Line 201: |
Line 268: |
|
|
|
|
|
this.getRow = function() { |
|
this.getRow = function() { |
|
var row = $j("<li />"); |
|
var row = $("<li />"); |
|
var check = $j("<input type='checkbox' name='cite-err-test' />"); |
|
var check = $("<input type='checkbox' name='cite-err-test' />"); |
|
check.attr('value', this.obj.testname); |
|
check.attr('value', this.obj.testname); |
|
var label = $j("<label />").html(this.obj.desc); |
|
var label = $("<label />").html(mw.usability.getMsg(this.obj.desc)); |
|
label.attr('for', this.obj.testname); |
|
label.attr('for', this.obj.testname); |
|
row.append(check).append(' – ').append(label); |
|
row.append(check).append(' – ').append(label); |
Line 210: |
Line 277: |
|
} |
|
} |
|
} |
|
} |
|
$j('head').trigger('reftoolbarbase'); |
|
$('head').trigger('reftoolbarbase'); |