ميدياويكي:Common.js
ملاحظة: بعد النشر، أنت قد تحتاج إلى إفراغ الكاش الخاص بمتصفحك لرؤية التغييرات.
- فايرفوكس / سافاري: أمسك Shift أثناء ضغط Reload، أو اضغط على إما Ctrl-F5 أو Ctrl-R (⌘-R على ماك)
- جوجل كروم: اضغط Ctrl-Shift-R (⌘-Shift-R على ماك)
- إنترنت إكسبلورر/إيدج: أمسك Ctrl أثناء ضغط Refresh، أو اضغط Ctrl-F5
- أوبرا: اضغط Ctrl-F5.
/* أي JavaScript هنا سوف يحمل لجميع المستخدمين في أثناء تحميل أي صفحة. */
/*
{{interwiki-all|Mediawiki:Common.js}}
*/
/* plus tab for beer parlour and tea room */
function addPlusToBeerParlour() {
// get page title
var pagetitle = document.getElementById('content').getElementsByTagName('h1').item(0).firstChild.nodeValue;
if ( !pagetitle ) {
return;
}
// is this the beer parlour (in normal mode)?
if ((pagetitle.search(/^Wiktionary:Beer parlour$/) != -1) || (pagetitle.search(/^Wiktionary:Tea room$/) != -1)) {
// find the spot to add our new tab
var edittabli = document.getElementById('ca-edit');
// create the plus tab
var plustabli = document.createElement('li');
plustabli.id = 'ca-addsection';
var plustablink = document.createElement('a');
plustablink.href = '/w/index.php?title=' + pagetitle + '&action=edit§ion=new';
plustablink.appendChild(document.createTextNode('+'));
plustabli.appendChild(plustablink);
// add the plus tab
edittabli.className = 'istalk';
edittabli.parentNode.insertBefore(plustabli, edittabli.nextSibling);
}
}
/* select subsection of special characters */
function chooseCharSubset(s) {
var l = document.getElementById('editpage-specialchars').getElementsByTagName('p');
for (var i = 0; i < l.length ; i++) {
l[i].style.display = i == s ? 'inline' : 'none';
l[i].style.visibility = i == s ? 'visible' : 'hidden';
}
}
/* Remember to keep [[MediaWiki:Standard.js]] in sync with this, for classic style! */
/**
* إضافة بعض الأزرار
*/
mw.loader.using( 'user.options', function () {
if (mw.user.options.get( 'showtoolbar' ) == 1 && mw.toolbar) {
mw.toolbar.addButton({
"imageFile": "//upload.wikimedia.org/wikipedia/commons/3/30/Btn_toolbar_rayer.png",
"speedTip": "حذف",
"tagOpen": "<s>",
"tagClose": "</s>",
"sampleText": ""
});
mw.toolbar.addButton({
"imageFile": "//upload.wikimedia.org/wikipedia/commons/8/88/Btn_toolbar_enum.png",
"speedTip": "ترقيم",
"tagOpen": "",
"tagClose": "",
"sampleText": "\n# عنصر 1\n# عنصر 2\n# عنصر 3"
});
mw.toolbar.addButton({
"imageFile": "//upload.wikimedia.org/wikipedia/commons/1/11/Btn_toolbar_liste.png",
"speedTip": "قائمة",
"tagOpen": "",
"tagClose": "",
"sampleText": "\n* عنصر أ\n* عنصر ب\n* عنصر ج"
});
mw.toolbar.addButton({
"imageFile": "//upload.wikimedia.org/wikipedia/commons/f/fd/Button_blockquote.png",
"speedTip": "اقتباس",
"tagOpen": "<blockquote>\n",
"tagClose": "\n</blockquote>",
"sampleText": "نص اقتباس"
});
mw.toolbar.addButton({
"imageFile": "//upload.wikimedia.org/wikipedia/commons/3/37/Btn_toolbar_commentaire.png",
"speedTip": "تعليق",
"tagOpen": "<!--",
"tagClose": "-->",
"sampleText": ""
});
mw.toolbar.addButton({
"imageFile": "//upload.wikimedia.org/wikipedia/commons/a/ac/Button_redir_rtl.png",
"speedTip": "تحويل",
"tagOpen": "#تحويل [[",
"tagClose": "]]",
"sampleText": "المكان المقصود"
});
mw.toolbar.addButton({
"imageFile": "//upload.wikimedia.org/wikipedia/commons/3/3b/Button_template_alt.png",
"speedTip": "قالب",
"tagOpen": "{{",
"tagClose": "}}",
"sampleText": ""
});
mw.toolbar.addButton({
"imageFile": "//upload.wikimedia.org/wikipedia/commons/b/b4/Button_category03.png",
"speedTip": "تصنيف",
"tagOpen": "[[تصنيف:",
"tagClose": "]]",
"sampleText": ""
});
}
});
/****************************************/
function mwInsertEditButton(parent, item) {
var image = document.createElement("img");
image.width = 23;
image.height = 22;
image.src = item.imageFile;
image.border = 0;
image.style.cursor = "pointer";
var ref = document.createElement("a");
ref.setAttribute("href", "javascript:insertTags(\"" + item.tagOpen + "\",\"" + item.tagClose + "\",\"" + item.sampleText + "\");");
ref.setAttribute("title", item.speedTip);
ref.appendChild(image);
parent.appendChild(ref);
}
/* شفرة إضافة زر إنشاء جدول */
/* فتح نافذة جدول */
function generateTableau(nbCol, nbRow, border, styleHeader, styleLine)
{
var code = "\n";
if (styleHeader==1) {
code += '{| class=\"wikitable\" border=\"' + border + '\"\n';
} else {
code += '{| border=\"' + border + '\"\n';
code += '|+ اسم\n';
}
for (var i=0;i<nbCol;i++) {
code += '! عمود ' + i + '\n';
}
for (var j=0;j<nbRow;j++) {
if ((j+1)%2==0 && styleLine==1) {
code += '|- bgcolor=\"#EFEFEF\"\n';
} else {
code += '|-\n';
}
for (var i=0;i<nbCol;i++) {
code += '| سطر\n';
}
}
code += '|}';
insertTags('','', code);
}
function popupTableau()
{
var popup = window.open('','name','height=200,width=250');
var javaCode = '<script type=\"text\/javascript\">function insertCode(){';
javaCode += 'var row = parseInt(document.paramForm.inputRow.value); ';
javaCode += 'var col = parseInt(document.paramForm.inputCol.value); ';
javaCode += 'var bord = parseInt(document.paramForm.inputBorder.value); ';
javaCode += 'var styleHeader = document.paramForm.inputHeader.checked; ';
javaCode += 'var styleLine = document.paramForm.inputLine.checked; ';
javaCode += 'window.opener.generateTableau(col,row,bord,styleHeader,styleLine); ';
javaCode += '}<\/script>';
popup.document.write('<html><head><title>إنشاء جدول</title>');
popup.document.write(javaCode);
popup.document.write('</head><body>');
popup.document.write('<p> إنشاء جدول : </p>');
popup.document.write('<form name=\"paramForm\">');
popup.document.write('عدد الصفوف : <input type=\"text\" name=\"inputRow\" maxlength=\"3\" value=\"3\" style=\"width:50px;\"><p>');
popup.document.write('عدد الأعمدة : <input type=\"text\" name=\"inputCol\" maxlength=\"3\" value=\"3\" style=\"width:50px;\"><p>');
popup.document.write('الحدود : <input type=\"text\" name=\"inputBorder\" maxlength=\"2\" value=\"1\" style=\"width:50px;\"><p>');
popup.document.write('أسماء الأعمدة : <input type=\"checkbox\" name=\"inputHeader\" checked=\"1\" ><p>');
popup.document.write('أسماء الأسطر : <input type=\"checkbox\" name=\"inputLine\" checked=\"1\" ><p>');
popup.document.write('</form">');
popup.document.write('<p><a href=\"javascript:insertCode();self.close();\"> إنشاء </a></p>');
popup.document.write('<p><a href=\"javascript:self.close()\"> إغلاق </a></p>');
popup.document.write('</body></html>');
popup.document.close();
}
/* دالة زر الجدول */
function tableButton()
{
var tooly = document.getElementById('toolbar');
if (tooly != null)
{
/* صورة و حجم الزر */
var tableButton=document.createElement("img");
tableButton.width = 23;
tableButton.height = 22;
tableButton.src = "//upload.wikimedia.org/wikipedia/commons/0/04/Button_array.png";
tableButton.border = 0;
tableButton.alt = "جدول";
tableButton.title = "إنشاء جدول";
tableButton.style.cursor = "pointer";
tableButton.onclick = popupTableau;
tooly.appendChild(tableButton);
}
}
/* إظهار الزر */
$(document).ready(tableButton);
// ============================================================
// BEGIN Dynamic Navigation Bars
// set up the words in your language
var NavigationBarHide = 'اخفِ';
var NavigationBarShow = 'أظهر';
// set up max count of Navigation Bars on page,
// if there are more, all will be hidden
// NavigationBarShowDefault = 0; // all bars will be hidden
// NavigationBarShowDefault = 1; // on pages with more than 1 bar all bars will be hidden
var NavigationBarShowDefault = 0;
// shows and hides content and picture (if available) of navigation bars
// Parameters:
// indexNavigationBar: the index of navigation bar to be toggled
function toggleNavigationBar(indexNavigationBar)
{
var NavToggle = document.getElementById("NavToggle" + indexNavigationBar);
var NavFrame = document.getElementById("NavFrame" + indexNavigationBar);
if (!NavFrame || !NavToggle) {
return false;
}
// if shown now
if (NavToggle.firstChild.data == NavigationBarHide) {
for (
var NavChild = NavFrame.firstChild;
NavChild != null;
NavChild = NavChild.nextSibling
) {
if (NavChild.className == 'NavPic') {
NavChild.style.display = 'none';
}
if (NavChild.className == 'NavContent') {
NavChild.style.display = 'none';
}
}
NavToggle.firstChild.data = NavigationBarShow;
// if hidden now
} else if (NavToggle.firstChild.data == NavigationBarShow) {
for (
var NavChild = NavFrame.firstChild;
NavChild != null;
NavChild = NavChild.nextSibling
) {
if (NavChild.className == 'NavPic') {
NavChild.style.display = 'block';
}
if (NavChild.className == 'NavContent') {
NavChild.style.display = 'block';
}
}
NavToggle.firstChild.data = NavigationBarHide;
}
}
// adds show/hide-button to navigation bars
function createNavigationBarToggleButton()
{
var indexNavigationBar = 0;
// iterate over all < div >-elements
for(
var i=0;
NavFrame = document.getElementsByTagName("div")[i];
i++
) {
// if found a navigation bar
if (NavFrame.className == "NavFrame") {
indexNavigationBar++;
var NavToggle = document.createElement("a");
NavToggle.className = 'NavToggle';
NavToggle.setAttribute('id', 'NavToggle' + indexNavigationBar);
NavToggle.setAttribute('href', 'javascript:toggleNavigationBar(' + indexNavigationBar + ');');
var NavToggleText = document.createTextNode(NavigationBarHide);
NavToggle.appendChild(NavToggleText);
// Find the NavHead and attach the toggle link (Must be this complicated because Moz's firstChild handling is borked)
for(
var j=0;
j < NavFrame.childNodes.length;
j++
) {
if (NavFrame.childNodes[j].className == "NavHead") {
NavFrame.childNodes[j].appendChild(NavToggle);
}
}
NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar);
}
}
// if more Navigation Bars found than Default: hide all
if (NavigationBarShowDefault < indexNavigationBar) {
for(
var i=1;
i<=indexNavigationBar;
i++
) {
toggleNavigationBar(i);
}
}
}
$(document).ready(createNavigationBarToggleButton);
// END Dynamic Navigation Bars
// ============================================================
// == Collapsible tables ======================================
var autoCollapse = 2;
var collapseCaption = "اخفِ";
var expandCaption = "أظهر";
function hasClass( element, className ) {
var Classes = element.className.split( " " );
for ( var i = 0; i < Classes.length; i++ ) {
if ( Classes[i] == className ) {
return ( true );
}
}
return ( false );
}
function collapseTable( tableIndex )
{
var Button = document.getElementById( "collapseButton" + tableIndex );
var Table = document.getElementById( "collapsibleTable" + tableIndex );
if ( !Table || !Button ) {
return false;
}
var Rows = Table.getElementsByTagName( "tr" );
if ( Button.firstChild.data == collapseCaption ) {
for ( var i = 1; i < Rows.length; i++ ) {
Rows[i].style.display = "none";
}
Button.firstChild.data = expandCaption;
} else {
for ( var i = 1; i < Rows.length; i++ ) {
Rows[i].style.display = Rows[0].style.display;
}
Button.firstChild.data = collapseCaption;
}
}
function createCollapseButtons()
{
var tableIndex = 0;
var NavigationBoxes = {};
var Tables = document.getElementsByTagName("table");
for ( var i = 0; i < Tables.length; i++ ) {
if ( hasClass( Tables[i], "collapsible" ) ) {
NavigationBoxes[ tableIndex ] = Tables[i];
Tables[i].setAttribute( "id", "collapsibleTable" + tableIndex);
var Button = document.createElement( "span" );
var ButtonLink = document.createElement( "a" );
var ButtonText = document.createTextNode( collapseCaption );
Button.style.styleFloat = "left";
Button.style.cssFloat = "left";
Button.style.textAlign = "left";
Button.style.width = "6em";
ButtonLink.setAttribute( "id", "collapseButton" + tableIndex );
ButtonLink.setAttribute( "href", "javascript:collapseTable(" + tableIndex + ");" );
ButtonLink.appendChild( ButtonText );
Button.appendChild( document.createTextNode( "[" ) );
Button.appendChild( ButtonLink );
Button.appendChild( document.createTextNode( "]" ) );
var Header = Tables[i].getElementsByTagName( "tr" )[0].getElementsByTagName( "th" )[0];
Header.insertBefore( Button, Header.childNodes[0] );
tableIndex++;
}
}
for ( var i = 0; i < tableIndex; i++ ) {
if ( hasClass( NavigationBoxes[i], "collapsed" ) || ( tableIndex >= autoCollapse && hasClass( NavigationBoxes[i], "autocollapse" ) ) ) {
collapseTable(i);
}
}
}
$(document).ready(createCollapseButtons);
// == END Collapsible tables =============================
/** وصلات إنترويكي للمقالات المختارة ***************************************
*
* وصف: يبرز هذا القسم الوصلات التي اختيرت كمقالات مميزة في ويكيبيديا
باللغات الأخرى بوضع نجمة مكان مربع القائمة.
المصدر: نسخ من ويكيبيديا الإنجليزية.
*/
function LinkFA() {
var a = document.getElementsByTagName("span")[i];
for(var i=0; a; i++) {
if(a.className == "FA") {
var b = document.getElementsByTagName("li")[j];
for(var j=0; b; j++) {
if(b.className == "interwiki-" + a.id) {
b.className += " FA";
b.title = "اختيرت كمقالة مختارة";
}
}
}
}
}
$(document).ready( LinkFA );
function LinkGA() {
var a = document.getElementsByTagName("span")[i];
for(var i=0; a; i++) {
if(a.className == "GA") {
var b = document.getElementsByTagName("li")[j];
for(var j=0; b; j++) {
if(b.className == "interwiki-" + a.id) {
b.className += " GA";
b.title = "اختيرت كمقالة جيدة";
}
}
}
}
}
$(document).ready( LinkGA );
/*
//============================================================
//
// إضافة بلوك للتحميل لمن يقومون برفع ملفات بدون ترخيص، لن يمنعهم من المشاركة العادية، فقط تمنع تحميل الصور.
// لمنع أي مستخدم من تحميل أي صورة فقط انسخ السطرين في الأسفل بدون علامات الخطوط التي تسبقها
//
// ============================================================
//var date = new Date(); date.setTime(date.getTime()+86400000);
//document.cookie = "evilbit=True; expires=" + date.toGMTString() + "; path=/";
//إلى صفحة User:Username/monobook.js
//هذا سيمنع المستخدم من رفع الصور لمدة 24 ساعة فور دخوله بحسابه.
//لا يتوجب عليهم أن يعدلوا أي شيء، مجرد الدخول بالحساب يكفي، طبعا يبقى قادرا على التعديل في جميع أنحاء الموقع
//
function checkevilbit() {
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
if (c.replace(/^\s+|\s+$/g,"") == "evilbit=True") {
document.getElementById("wpSave").disabled=true;
document.getElementById("wpUpload").disabled=true;
}
}
}
$(document).ready(checkevilbit);
//دالة مساعدة لإضافة زر جديد لأحد قوائم الواجهة.
//An improved(I hope) version of [[Wikipedia:WikiProject User scripts/Scripts/Add LI link|addlilink]].
//[[User:JesseW/sig|JesseW, the juggling janitor]] 05:33, 8 November *2005 (UTC)
function addLink(where, url, name, id, title, key, after){
//* 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".
//
//* url is the URL which will be called when the button is clicked.
// javascript: urls can be used to do more complex things.
//
//* name 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 or DOM node of the button you want to follow this one. Optional.
//
var na = document.createElement('a');
na.href = url;
na.appendChild(document.createTextNode(name));
var li = document.createElement('li');
if(id) li.id = id;
li.appendChild(na);
var tabs = document.getElementById(where).getElementsByTagName('ul')[0];
if (!after) {
tabs.appendChild(li);
} else if (after.cloneNode) { // looks like a DOM node
tabs.insertBefore(li,after);
} else { // assume this is an ID string
tabs.insertBefore(li,document.getElementById(after));
}
return li;
}
// * إضافة قائمة بمحركات بحث في صفحة البحث
// * أنشئ بواسطة : [[:en:User:Gracenotes]]
// *
if (mw.config.get('wgPageName') == "خاص:بحث") {
var searchEngines = [];
$(document).ready(SpecialSearchEnhanced);
}
function SpecialSearchEnhanced() {
var createOption = function(site, action, mainQ, addQ, addV) {
var opt = document.createElement('option');
opt.appendChild(document.createTextNode(site));
searchEngines[searchEngines.length] = [action, mainQ, addQ, addV];
return opt;
};
var searchForm, searchBox;
if (document.forms['powersearch']) {
searchForm = document.forms['powersearch'];
}
if (document.forms['search']) {
searchForm = document.forms['search'];
}
if (searchForm.lsearchbox) {
searchBox = searchForm.lsearchbox;
} else {
searchBox = searchForm.search;
}
var selectBox = document.createElement('select');
selectBox.id = 'searchEngine';
searchForm.onsubmit = function() {
var optId = document.getElementById('searchEngine').selectedIndex;
var optSelected = searchEngines[optId];
searchForm.action = optSelected[0];
searchBox.name = optSelected[1];
searchForm.title.value = optSelected[3];
searchForm.title.name = optSelected[2];
// stockage du moteur dans un cookie
document.cookie = "searchEngineId=" + optId;
};
selectBox.appendChild(createOption('بحث الميدياويكي', mw.config.get('wgScriptPath') + '/index.php', 'search', 'title', 'Special:Search'));
selectBox.appendChild(createOption('Wikiwix', 'http://www.wikiwix.com/', 'action', 'lang', 'ar'));
selectBox.appendChild(createOption('Google', 'http://www.google.com/search', 'q', 'sitesearch', 'ar.wikipedia.org'));
selectBox.appendChild(createOption('Yahoo', 'http://search.yahoo.com/search', 'p', 'vs', 'ar.wikipedia.org'));
selectBox.appendChild(createOption('Windows Live', 'http://search.live.com/results.aspx', 'q', 'q1', 'site:http://ar.wikipedia.org'));
searchBox.style.marginLeft = '0px';
var lStat;
if (document.getElementById('loadStatus')) {
lStat = document.getElementById('loadStatus');
} else {
lStat = searchForm.fulltext;
}
lStat.parentNode.insertBefore(selectBox, lStat);
}
/** WikiMiniAtlas *******************************************************
*
* Description: WikiMiniAtlas is a popup click and drag world map.
* This script causes all of our coordinate links to display the WikiMiniAtlas popup button.
* The script itself is located on meta because it is used by many projects.
* See [[Meta:WikiMiniAtlas]] for more information.
* Created by: [[User:Dschwen]]
*/
mw.loader.load('//meta.wikimedia.org/w/index.php?title=MediaWiki:Wikiminiatlas.js&action=raw&ctype=text/javascript');
/** Main Page layout fixes *********************************************************
*
* Description: Various layout fixes for the main page, including an
* additional link to the complete list of languages available
* and the renaming of the 'Article' to to 'Main Page'.
* Maintainers: [[User:AzaToth]], [[User:R. Koot]], [[User:Alex Smotrov]]
*/
function mainPageRenameNamespaceTab() {
try {
var Node = document.getElementById( 'ca-nstab-main' ).firstChild;
if ( Node.textContent ) { // Per DOM Level 3
Node.textContent = 'الصفحة الرئيسية';
} else if ( Node.innerText ) { // IE doesn't handle .textContent
Node.innerText = 'الصفحة الرئيسية';
} else { // Fallback
Node.replaceChild( Node.firstChild, document.createTextNode( 'الصفحة الرئيسية' ) );
}
} catch(e) {
// bailing out!
}
}
/* وصلة القائمة الكاملة للويكاموسات في قسم وصلات إنترويكي الصفحة الرئيسية: [[ويكاموس:الصفحة الرئيسية]] */
mw.loader.using("mediawiki.util", function(){
// Hide the title and "Redirected from" (maybe we should keep the redirected from so's people update their bookmarks ;)
// Broken in IE!
if (mw.config.get('wgIsMainPage') && !(mw.config.get('wgAction') === 'view' || mw.config.get('wgAction') === 'submit')) {
mw.util.addCSS('.firstHeading { display: block !important; }');
mw.util.addCSS('#contentSub { display: inline !important; }');
}
if (mw.config.get('wgIsMainPage')) {
$(function(){
mw.util.addPortletLink('p-lang', '//meta.wikimedia.org/wiki/Wiktionary/ar#قائمة_مواقع_ويكاموس',
'القائمة الكاملة', 'interwiki-completelist', 'القائمة الكاملة للويكاموسات');
});
}
});
/* == [[ويكاموس:استطلاع رأي]] == */
// من طرف [[:en:User:Conrad.Irwin/feedback.js]]
if (true) {
$(function(){
var fb_comment_url = mw.config.get('wgScript') + "?title=ويكاموس:استطلاع رأي" +
"&action=edit§ion=new" + "&preload=ويكاموس:استطلاع رأي%2Fطليعة" + "&editintro=ويكاموس:استطلاع رأي%2Fاستهلال" +
"&preloadtitle=" + encodeURIComponent("[[:" + mw.config.get('wgPageName').replace(/_/g, ' ') + "]]");
var fb_comment = "اترك ملاحظة";
$('<a>').attr('href', fb_comment_url).text(fb_comment)
.appendTo($('<p>').css('font-size', '80%')).parent()
.appendTo($('<div>').addClass("body")).parent().before($('<h3>استطلاع رأي</h3>'))
.appendTo($('<div>').addClass("portal expanded").attr("id", "p-feedback")).parent()
.appendTo($('#mw-panel'));
});
}
;
/*******************************************************************************
* تعويض وصلة القالب بوصلة الصفحة لتعديل القسم الأقرب وتفادي تعديل كل الصفحة
* Auteur : [[Utilisateur:Darkdadaah]].
*******************************************************************************/
jQuery(function stubeditLink() {
$( '.stubedit a' ).attr( 'href', function() {
var $ol = $( this );
var lim = 0;
// Remonte en haut de la hiérarchie
while( $ol.parent().attr( 'id' ) !== 'mw-content-text' && lim < 50 ) {
$ol = $ol.parent();
lim++;
}
// On remonte et on récupère le premier titre venu
var $hall = $ol.prevAll( 'h2, h3, h4' );
if ( $hall.length > 0 ) {
var href = '';
$hall.each(function() {
$modif = $( this ).find( '.mw-editsection a' );
href = $modif.attr( 'href' );
return false; // break each loop
});
return href; // Nouveau lien
}
return $( this ).attr( 'href' ); // Défaut : lien normal
});
});