مدیاویکی:Gadget-Newuser.js

از ویکی‌گفتاورد

نکته: پس از انتشار ممکن است برای دیدن تغییرات نیاز باشد که حافظهٔ نهانی مرورگر خود را پاک کنید.

  • فایرفاکس / سافاری: کلید Shift را نگه دارید و روی دکمهٔ Reload کلیک کنید، یا کلید‌های Ctrl-F5 یا Ctrl-R را با هم فشار دهید (در رایانه‌های اپل مکینتاش کلید‌های ⌘-R)
  • گوگل کروم: کلیدهای Ctrl+Shift+R را با هم فشار دهید (در رایانه‌های اپل مکینتاش کلید‌های ⌘-Shift-R)
  • اینترنت اکسپلورر/ Edge: کلید Ctrl را نگه‌دارید و روی دکمهٔ Refresh کلیک کنید، یا کلید‌های Ctrl-F5 را با هم فشار دهید
  • اپرا: Ctrl-F5 را بفشارید.
/*
<<<<<<<<<< derived from [[n:en:MediaWiki:Gadget-UserMessages.js]] and [[n:MediaWiki:Gadget-UserMessages.js]] for fa.wikiquote.org >>>>>>>>>>
==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|Welcome}}
 
 
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]].
 
Code stolen from Commons by [[User:ShakataGaNai]] for Wikinews (Fixed by Bawolff)
* [[:Category:Block templates]]
* [[:Category:User_talk_templates]]
 
===TODO===
* 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">
//moved here from commons
function getParamValue(paramName, url) {
  if (typeof url == "undefined") {
    url = document.location.href;
  }
  var cmdRe = RegExp("[&?]" + paramName + "=([^&]*)");
  var m = cmdRe.exec(url);
  if (m) {
    try {
      return decodeURIComponent(m[1]);
    } catch (someError) {}
  }
  return null;
}
//end moved here from commons
// Configuration

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

template_pagename = "نام مقاله را بنویسید:";
template_what = "با چی؟";

uMessage = new Array();

uMessage.push(['خوشامدید', 'خوشامد > کاربر', 'خوشامدید', false]);
uMessage.push(['خوشامد-آی\u200cپی', 'خوشامد > آی‌پی', 'خوشامد-آی\u200cپی', false]);
uMessage.push(['امضا کنید', 'کاربر جدید > امضا کنید', 'کاربر جدید > امضا کنید', false]);
uMessage.push(['صفحه کلید فارسی', 'کاربر جدید > صفحه‌کلید فارسی', 'کاربر جدید > صفحه کلید فارسی', false]);
uMessage.push(['ابزارهای ویرایشی', 'کاربر جدید > ابزارهای ویرایشی', 'کاربر جدید > ابزارهای ویرایشی', false]);
uMessage.push(['از پیش\u200cنمایش استفاده کنید', 'از پیش‌نمایش استفاده کنید', 'از پیش\u200cنمایش استفاده کنید', false]);
uMessage.push(['تذکر خلاصه ویرایش', 'خلاصه ویرایش بنویسید', 'تذکر خلاصه ویرایش', false]);
uMessage.push(['نوشتار نامناسب', 'مقاله > نوشتار کتره‌ای', 'مقاله > نوشتار کتره‌ای', false]);
uMessage.push(['تبلیغ مکنید', 'هرزنگاری > تبلیغ مکنید', 'هرزنگاری > تبلیغ مکنید', template_pagename]);

// Site info
scriptPath = "/w/index.php";
prettyPath = "/wiki/";
wikiHostname = "fa.wikiquote.org";

// From [[en:Wikipedia:WikiProject User scripts/Scripts/addLink]]
function addLink(where, url1, name1, id, title, key, after, url2, name2) {
  //* where is the id of the toolbar where the button should be added;
  //   i.e. one of "p-cactions", "p-personal", "p-navigation", or "p-tb".
  //
  //* url1 is the URL which will be called when the button is clicked.
  //   javascript: urls can be used to do more complex things.
  //
  //* name1 is what will appear as the name of the button.
  //
  //* id is the id of the button; it's best to define one.
  //   Use a prefix to make sure its unique. Optional.
  //
  //* title is the tooltip title that gives a longer description
  //   of the button; if you define a accesskey, mention it here. Optional.
  //
  //* key is the char you want for the accesskey. Optional.
  //
  //* after is the id of the button you want to follow this one. Optional.
  //
  //* url2 is a second url to add. Optional
  //
  //*name2 is the name of the second url; defaults to name1. Optional
  var na = document.createElement('a');
  na.href = url1;
  na.appendChild(document.createTextNode(name1));
  var li = document.createElement('li');
  if (id) li.id = id;
  li.appendChild(na);

  if (url2) { //Another link, brother of the previous.
    var na = document.createElement('a');
    na.href = url2;
    na.appendChild(document.createTextNode(name2 ? name2 : name1));
    li.appendChild(document.createTextNode(" · ")); //separate them a bit
    li.appendChild(na);
  }

  var tabs = document.getElementById(where).getElementsByTagName('ul')[0];
  if (after) {
    tabs.insertBefore(li, document.getElementById(after));
  } else {
    tabs.appendChild(li);
  }
  //akeytt is deprected and does nothing. who cares about access keys anyhow.
  /*if(id && ta) { //ta does not exist in vector? 
        if(key && title) { ta[id] = [key, title]; }
        else if(key) { ta[id] = [key, '']; }
        else if(title) { ta[id] = ['', title];}
    }
    // re-render the title and accesskeys from existing code in wikibits.js
    akeytt();*/
  return li;
}

// 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 = 'الگوی «' + template + '» به بحث کاربر افزوده شد. ([[W:وپ:ابزار تذکر به کاربر جدید|با استفاده از ابزار]])';
  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 = 'الگوی «' + template + '» به بحث کاربر افزوده شد. ([[وپ:ابزار تذکر به کاربران|ابزار تذکر به کاربران]])';
  if (template_autosave) document.editform.wpSave.click();
}


// Do the thing with the stuff here.
function template_onload() {
  if (mw.config.get('wgNamespaceNumber') == 3) { //NS_USERTALK
    // new section
    try {
      if (skin === 'vector') {
        if (window.useFancyVectorDropdown || window.useFancyVectorDropdown === undefined) {
          try {
            makeVectorFancySection();
            useFancyVectorDropdown = 'done'; //this is for debug. can remove
          } catch (e) {
            document.getElementById('panel').innerHTML += '<div id="p-Notify" class="portal"><h5 lang="fa" xml:lang="fa">تذکر</h5><div class="body"><ul> </ul> </div> </div>';
          }
        } else {
          document.getElementById('panel').innerHTML += '<div id="p-Notify" class="portal"><h5 lang="fa" xml:lang="fa">تذکر</h5><div class="body">\n <ul> </ul> </div> </div>';
        }
      }
      if (skin === 'monobook') {
        document.getElementById('column-one').innerHTML += '<div id="p-Notify" class="portlet"> <h5 lang="fa" xml:lang="fa">تذکر</h5> <div class="pBody">	<ul></ul></div>	</div>';
      }
    } catch (e) {} //ignore errors and just use tb if they happen.
    var portlet = (document.getElementById('p-Notify') ? 'p-Notify' : 'p-tb');

    for (i = 0; i < uMessage.length; i++) {
      if (uMessage[i][3]) {
        addLink(portlet, 'javascript:template_mark2(\'' + i + '\', prompt(\'' + uMessage[i][3] + '\', \'\'), 0, false)', uMessage[i][1], 'mark-warn', uMessage[i][2]);
      } else {
        addLink(portlet, 'javascript:template_mark(\'' + i + '\')', uMessage[i][1],
          'mark-warn', uMessage[i][2], null, null);
      }
    }
  }
  // Important thing and stuff above.

  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 < uMessage.length) {
    //may i take this moment to mention, this script is very very confusing - bawolff
    if (mw.config.get('wgNamespaceNumber') !== 3) {
      alert("The user notify script has been disabled in this namespace for security reasons. If you see this message, please tell [[n:en:User:Bawolff]] what linked you clicked on to get here.");
      throw new Error("خطای امنیتی: فضای نامی اشتباه برای ابزار اطلاع رسانی.");
    }
    if (add_idx == 1) template_addTemplate(uMessage[action_idx][0]);
    else template_addTemplate2(uMessage[action_idx][0]);
  }
}

$(template_onload);

function makeVectorFancySection() {
  //wrap this in a try. this might be somewhat delicate at the moment.
  var pNotify = document.createElement('div');
  pNotify.id = 'p-Notify'
  pNotify.className = 'vectorMenu extraMenu'
  pNotify.innerHTML = ' <a href="#" style="background-image:none;"><h5><span>اعلان</span></a></h5> <div class="menu"> <ul lang="fa" xml:lang="fa"> </ul> </div>';
  var rightNav = document.getElementById('right-navigation');
  var pViews = document.getElementById('p-views');
  rightNav.insertBefore(pNotify, pViews.nextSibling)
}
// </source>