User:Abigor/ms.js

From Wikimedia Commons, the free media repository
Jump to navigation Jump to search
Note: After saving, you have to bypass your browser's cache to see the changes. Internet Explorer: press Ctrl-F5, Mozilla: hold down Shift while clicking Reload (or press Ctrl-Shift-R), Opera/Konqueror: press F5, Safari: hold down Shift + Alt while clicking Reload, Chrome: hold down Shift while clicking Reload.
/*
==Automatic user messages ==
Installing this script as described on the talk page will give you links in the toolbox
for all pages in the User talk: namespace, that say 'Please tag', 'Please name', and
'Please link'. Clicking any of the buttons will add one of the following templates to
the user's talk page, signed by you:
*{{tl|attackimage}}*
*{{tl|attackpage}}*
*{{tl|be civil final}}
*{{tl|be civil}}
*{{tl|blocked user}}
*{{tl|copyvionote}}*
*{{tl|derivativenote}}*
*{{tl|dont overwrite}}*
*{{tl|dont recreate}}*
*{{tl|dont remove delete}}
*{{tl|dont remove nsd or nld}}
*{{tl|dont remove speedy}}
*{{tl|dont remove warnings}}
*{{tl|end of copyvios}}
*{{tl|imposter}}*
*{{tl|inappropriate username}}
*{{tl|off topic}}
*{{tl|please describe images}}
*{{tl|please link images}}
*{{tl|please name images}}
*{{tl|please tag images}}
*{{tl|project scope}}
*{{tl|Provide better quality}}*
*{{tl|sockpuppet}}*
*{{tl|test}}
*{{tl|test2}}
*{{tl|test3}}
*{{tl|test4}}
*{{tl|unfree}}*
*{{tl|welcome}}
*{{tl|No re-uploading}}
*{{tl|Speedywhat}}
*{{tl|No fair use}}*
*{{tl|Inappropriate imagenotes}}*

Alternatively you can place some templates in a user's language. Templates marked
with an asterisk (*) use a parameter and can be translated, but cannot be localised
on the user page with the script. Click the link 'lang' and fill in a language code
to have a localised version of the template put on the talk page.

Main code by [[User:Siebrand]], derived from [[MediaWiki:Quick-delete.js]] by
[[:en:User:Jietse Niesen|Jietse Niesen]], [[User:pfctdayelise|pfctdayelise]] and
[[User:Alphax|Alphax]]

===TODO===
* Add remaining templates from [[Commons:Message templates]]:
**{{tl|speedywhat}}
* Do not add a trailing /<langcode> at the end of the subst'ed template, as they now (almost) all use the autotranslation mechanism (see [[Commons:Template_i18n/User_templates]])
*/
// <source lang="javascript">
// Configuration

// Should the edits be saved automatically?
if(window.template_autosave == false){}else{ template_autosave = true; }

// String constants
var uTemplate = new Array(33)
uTemplate[0] = 'Please describe images'
uTemplate[1] = 'Dont remove nsd or nld'
uTemplate[2] = 'End of copyvios'
uTemplate[3] = 'Please link images'
uTemplate[4] = 'Please name images'
uTemplate[5] = 'Please tag images'
uTemplate[6] = 'Test'
uTemplate[7] = 'Test2'
uTemplate[8] = 'Test3'
uTemplate[9] = 'Test4'
uTemplate[10] = 'Welcome'
uTemplate[11] = 'Dont remove speedy'
uTemplate[12] = 'Dont remove warnings'
uTemplate[13] = 'Be civil'
uTemplate[14] = 'Be civil final'
uTemplate[15] = 'Project scope'
uTemplate[16] = 'Inappropriate username'
uTemplate[17] = 'Copyvionote'
uTemplate[18] = 'Attackpage'
uTemplate[19] = 'Attackimage'
uTemplate[20] = 'Dont remove delete'
uTemplate[21] = 'Provide better quality'
uTemplate[22] = 'Dont recreate'
uTemplate[23] = 'Blocked User'
uTemplate[24] = 'Sockpuppet'
uTemplate[25] = 'Unfree'
uTemplate[26] = 'Imposter'
uTemplate[27] = 'Dont overwrite'
uTemplate[28] = 'Off topic'
uTemplate[29] = 'No re-uploading'
uTemplate[30] = 'Speedywhat'
uTemplate[31] = 'Derivativenote'
uTemplate[32] = 'No fair use'
uTemplate[33] = 'No comments'
uTemplate[34] = 'Inappropriate imagenotes'
uTemplate[35] = 'Welcomeip'
uTemplate[36] = 'Well done'

var uText = new Array(33)
uText[0] = "Please describe"
uText[1] = "Rem.n(slp)d"
uText[2] = "End copyvio"
uText[3] = "Please link"
uText[4] = "Please name"
uText[5] = "Please tag"
uText[6] = "Sandboxing"
uText[7] = "Vandalism"
uText[8] = "Vandalism 2"
uText[9] = "Vandalism 3"
uText[10] = "Welcome"
uText[11] = "Rem.speedy"
uText[12] = "Rem.warning"
uText[13] = "Be civil"
uText[14] = "Be civil final"
uText[15] = "Project scope"
uText[16] = "Inapp.username"
uText[17] = "Copyvionote"
uText[18] = "Attackpage"
uText[19] = "Attackimage"
uText[20] = "Rem.Delete"
uText[21] = "Better quality"
uText[22] = "Dont recreate"
uText[23] = "Blocked"
uText[24] = "Sockpuppet"
uText[25] = "Unfree"
uText[26] = "Imposter"
uText[27] = "Dont overwrite"
uText[28] = "Off topic"
uText[29] = "No re-uploading"
uText[30] = "Speedy warn"
uText[31] = "Derivativenote"
uText[32] = "No fair use"
uText[33] = "Use talk pages"
uText[34] = "Imagenotes"
uText[35] = "Welcome ip"
uText[36] = "Well done"

var uHelp = new Array(33)
uHelp[0] = "Request user to please describe his images"
uHelp[1] = "Reminder to not remove deletion templates unless all information is complete. Notifying user has reverted removal somewhere"
uHelp[2] = "Give user a final warning because of previous copyright violations"
uHelp[3] = "Request user to please link his images through categories or galleries"
uHelp[4] = "Request user to please name his images correctly"
uHelp[5] = "Request user to please tag his images"
uHelp[6] = "Referral to sandbox for conducting experiments"
uHelp[7] = "Warning or vandalism and request to cease"
uHelp[8] = "Second warning for vandalism and announcement of block if it continues"
uHelp[9] = "Last warning for vandalism and announcement of block on next violation"
uHelp[10] = "Welcome a new user or a user who has not yet received a welcome message"
uHelp[11] = "Warn a user about having removed a speedy tag from an image and inform him about proper process"
uHelp[12] = "Warn a user about removing valid warning templates from his talk page and inform him about proper process"
uHelp[13] = "Ask a user to remain civil, even if he or his contributions are being attacked"
uHelp[14] = "Last request to user to remain civil. Will be blocked next time"
uHelp[15] = "Inform user on project scope after deleting out of scope contributions"
uHelp[16] = "Inform user about his inappropriate username and block"
uHelp[17] = "Inform user about speedy deletion of uploaded media"
uHelp[18] = "Please do not create attack pages"
uHelp[19] = "Please do not upload attack images"
uHelp[20] = "Please do not remove deletion requests"
uHelp[21] = "Do you have a better version of media"
uHelp[22] = "Please do not recreate deleted images"
uHelp[23] = "This user has been blocked - without parameters - use manual version for more paras"
uHelp[24] = "It is suspected that this user may be a sock puppet or impersonator"
uHelp[25] = "Image deletion notification"
uHelp[26] = "This account has been blocked indefinitely, because it exists solely to impersonate or attack"
uHelp[27] = "Please do not overwrite images"
uHelp[28] = "Please stay on topic in Commons"
uHelp[29] = "Please do not re-upload"
uHelp[30] = "Inform user that one of his uploads has been speedy-deleted"
uHelp[31] = "Inform user about speedy deletion of uploaded derivative media"
uHelp[32] = "Inform user that Commons do not accept fair use"
uHelp[33] = "Inform user to use talk pages"
uHelp[34] = "Tell user not to add inappropriate imagenotes"
uHelp[35] = "Welcome to Commons"
uHelp[36] = "Well done!"
template_langquery = "In which language should the message be given? " +
"Example: en for English, de for German, es for Spanish, etc. " +
"If the language does not exist for the template, a red link will be inserted. ";
template_mediaquery = "Which media is this message about? " +
"Example: \\'Image Name.ext\\' - omit namespace.";
template_mediaquery2 = "Which media is this message about? " +
"Example: \\'Image Name.ext\\' - omit namespace. Leave empty to not specify";
template_pagequery = "Which page is this message about? " +
"Example: \\'Page_Name\\'.";
template_usernamequery = "Which user should the message refer to?";


// Add the template
function template_mark(talkpage_fakeaction, message_lang) {
  //if (!message_lang) return; //User pressed cancel
  
  //Now we assume message templates to be properly autotranslated
  if (message_lang) langparam='&template_lang=' + message_lang;
  else langparam='';

  var pagename = encodeURIComponent(mw.config.get('wgPageName'));
  var editlk = document.getElementById('ca-edit').getElementsByTagName('a')[0].href;
  document.location = editlk + '&fakeaction=' + talkpage_fakeaction + langparam + '&template_type=1';
}

// Add template to user talk page
function template_addTemplate(template) {
  if (getParamValue('template_lang')) {
          template = template + '/' + getParamValue('template_lang');
  }

  var txt = '{{subst:' + template + '}}';
  document.editform.wpTextbox1.value = document.editform.wpTextbox1.value + '\n' + txt + ' ~~~~';
  //  the edit summary for when you mark the image. You can change it if you want.
  document.editform.wpSummary.value = 'Adding template \"' + template + '\" to inform user.';
  if (template_autosave) document.editform.wpSave.click();
}

// Add the template
function template_mark2(talkpage_fakeaction, media_name, can_handle_empty_parameter, add_namespace) {
  if (media_name == null) return; // User pressed cancel
  if (media_name == '' && can_handle_empty_parameter != 1) return; // User did not supply parameter and template cannot handle that
  // Parameter handling for special cases
  if (add_namespace && media_name.length > 0) media_name = 'File:' + media_name;

  var pagename = encodeURIComponent(mw.config.get('wgPageName'));
  var editlk = document.getElementById('ca-edit').getElementsByTagName('a')[0].href;
  document.location = editlk + '&fakeaction=' + talkpage_fakeaction + '&media_name=' + encodeURIComponent (media_name) + '&template_type=2';
}

// Add template to user talk page
function template_addTemplate2(template) {
  if (getParamValue('media_name')) {
          template = template + '|' + getParamValue('media_name');
  }

  var txt = '{{subst:' + template + '}}';
  document.editform.wpTextbox1.value = document.editform.wpTextbox1.value + '\n' + txt + ' ~~~~';
  //  the edit summary for when you mark the image. You can change it if you want.
  document.editform.wpSummary.value = 'Adding template \"' + template + '\" to inform user.';
  if (template_autosave) document.editform.wpSave.click();
}

function template_onload() {
  if (wgNamespaceNumber == 3) { //NS_USERTALK
    mw.util.addPortletLink('p-tb', 'javascript:template_mark(\'3\')', uText[3], 'mark-please', uHelp[3], null, null);
    mw.util.addPortletLink('p-tb', 'javascript:template_mark2(\'17\', prompt(\'' + template_mediaquery + '\', \'\'), 0, true)', uText[17], 'mark-warn', uHelp[17]);
    mw.util.addPortletLink('p-tb', 'javascript:template_mark2(\'31\', prompt(\'' + template_mediaquery + '\', \'\'), 0, true)', uText[31], 'mark-warn', uHelp[31]);
    mw.util.addPortletLink('p-tb', 'javascript:template_mark2(\'32\', prompt(\'' + template_mediaquery + '\', \'\'), 0, true)', uText[32], 'mark-warn', uHelp[32]);
    mw.util.addPortletLink('p-tb', 'javascript:template_mark(\'4\')', uText[4], 'mark-please', uHelp[4], null, null);
    mw.util.addPortletLink('p-tb', 'javascript:template_mark(\'5\')', uText[5], 'mark-please', uHelp[5], null, null);
    mw.util.addPortletLink('p-tb', 'javascript:template_mark2(\'0\', prompt(\'' + template_mediaquery + '\', \'\'), 0, true)', uText[0], 'mark-warn', uHelp[0]);
    mw.util.addPortletLink('p-tb', 'javascript:template_mark(\'15\')', uText[15], 'mark-please', uHelp[15], null, null);
    mw.util.addPortletLink('p-tb', 'javascript:template_mark(\'33\')', uText[33], 'mark-please', uHelp[33], null, null);
    mw.util.addPortletLink('p-tb', 'javascript:template_mark(\'10\')', uText[10], 'mark-welcome', uHelp[10], null, null);
    mw.util.addPortletLink('p-tb', 'javascript:template_mark(\'2\')', uText[2], 'mark-warn',   uHelp[2], null, null);
    mw.util.addPortletLink('p-tb', 'javascript:template_mark(\'28\')', uText[28], 'mark-warn', uHelp[28], null, null);
    mw.util.addPortletLink('p-tb', 'javascript:template_mark(\'29\')', uText[29], 'mark-warn', uHelp[29], null, null);
    mw.util.addPortletLink('p-tb', 'javascript:template_mark(\'6\')', uText[6], 'mark-warn',   uHelp[6], null, null);
    mw.util.addPortletLink('p-tb', 'javascript:template_mark(\'7\')', uText[7], 'mark-warn',   uHelp[7], null, null);
    mw.util.addPortletLink('p-tb', 'javascript:template_mark(\'8\')', uText[8], 'mark-warn',   uHelp[8], null, null);
    mw.util.addPortletLink('p-tb', 'javascript:template_mark(\'9\')', uText[9], 'mark-warn',   uHelp[9], null, null);
    mw.util.addPortletLink('p-tb', 'javascript:template_mark(\'34\')', uText[34], 'mark-please', uHelp[34], null, null);
    mw.util.addPortletLink('p-tb', 'javascript:template_mark(\'20\')', uText[20], 'mark-warn', uHelp[20], null, null);
    mw.util.addPortletLink('p-tb', 'javascript:template_mark(\'1\')', uText[1], 'mark-warn',   uHelp[1], null, null);
    mw.util.addPortletLink('p-tb', 'javascript:template_mark(\'11\')', uText[11], 'mark-warn', uHelp[11], null, null);
    mw.util.addPortletLink('p-tb', 'javascript:template_mark(\'12\')', uText[12], 'mark-warn', uHelp[12], null, null);
    mw.util.addPortletLink('p-tb', 'javascript:template_mark(\'13\')', uText[13], 'mark-warn', uHelp[13], null, null);
    mw.util.addPortletLink('p-tb', 'javascript:template_mark(\'14\')', uText[14], 'mark-warn', uHelp[14], null, null);
    mw.util.addPortletLink('p-tb', 'javascript:template_mark(\'23\')', uText[23], 'mark-warn', uHelp[23], null, null);
    mw.util.addPortletLink('p-tb', 'javascript:template_mark(\'16\')', uText[16], 'mark-warn', uHelp[16], null, null);
    mw.util.addPortletLink('p-tb', 'javascript:template_mark(\'35\')', uText[35], 'mark-warn', uHelp[35], null, null);
    mw.util.addPortletLink('p-tb', 'javascript:template_mark(\'36\')', uText[36], 'mark-warn', uHelp[36], null, null);
    mw.util.addPortletLink('p-tb', 'javascript:template_mark2(\'21\', prompt(\'' + template_mediaquery + '\', \'\'), 0, true)', uText[21], 'mark-warn', uHelp[21]);
    mw.util.addPortletLink('p-tb', 'javascript:template_mark2(\'25\', prompt(\'' + template_mediaquery2 + '\', \'\'), 1, true)', uText[25], 'mark-warn', uHelp[25]);
    mw.util.addPortletLink('p-tb', 'javascript:template_mark2(\'19\', prompt(\'' + template_mediaquery + '\', \'\'), 0, true)', uText[19], 'mark-warn', uHelp[19]);
    mw.util.addPortletLink('p-tb', 'javascript:template_mark2(\'18\', prompt(\'' + template_langquery + '\', \'\'), 0, false)', uText[18], 'mark-warn', uHelp[18]);
    mw.util.addPortletLink('p-tb', 'javascript:template_mark2(\'27\', prompt(\'' + template_mediaquery2 + '\', \'\'), 1, true)', uText[27], 'mark-warn', uHelp[27]);
    mw.util.addPortletLink('p-tb', 'javascript:template_mark2(\'22\', prompt(\'' + template_mediaquery + '\', \'\'), 0, true)', uText[22], 'mark-warn', uHelp[22]);
    mw.util.addPortletLink('p-tb', 'javascript:template_mark2(\'26\', prompt(\'' + template_usernamequery + '\', \'\'), 0, false)', uText[26], 'mark-warn', uHelp[26]);
    mw.util.addPortletLink('p-tb', 'javascript:template_mark2(\'24\', prompt(\'' + template_usernamequery + '\', \'\'), 0, false)', uText[24], 'mark-warn', uHelp[24]);
    mw.util.addPortletLink('p-tb', 'javascript:template_mark2(\'30\', prompt(\'' + template_mediaquery + '\', \'\'), 0, true)', uText[30], 'mark-warn', uHelp[30]);
  }

  var fakeaction = getParamValue('fakeaction');
  var template_type = getParamValue('template_type');	// Fetch what template to add
  
  var action_idx = -1;
  try {
    action_idx = parseInt (fakeaction, 10);
  } catch (some_error) {
    action_idx = -1;    
  }
  var add_idx = -1;
  try {
    add_idx = parseInt (template_type, 10);
  } catch (some_error) {
    add_idx = -1;    
  }
  if (add_idx >= 1 && add_idx <= 2 && action_idx >= 0 && action_idx < uTemplate.length) {
    if (add_idx == 1)
      template_addTemplate (uTemplate[action_idx]);
    else
      template_addTemplate2 (uTemplate[action_idx]);
  }
}

$(template_onload);
// </source>