ميدياويكي:Common.js
اذهب إلى التنقل
اذهب إلى البحث
ملاحظة: بعد الحفظ، أنت قد تحتاج إلى إفراغ الكاش الخاص بمتصفحك لرؤية التغييرات.
- فايرفوكس / سافاري: أمسك Shift أثناء ضغط Reload، أو اضغط على إما Ctrl-F5 أو Ctrl-R (⌘-R على ماك)
- جوجل كروم: اضغط Ctrl-Shift-R (⌘-Shift-R على ماك)
- إنترنت إكسبلورر: أمسك Ctrl أثناء ضغط Refresh، أو اضغط Ctrl-F5
- أوبرا: اذهب إلى Menu → Settings (Opera → Preferences على ماك) ثم إلى Privacy & security → Clear browsing data → Cached images and files.
/* الجافاسكريبت الموضوع هنا سيتم تحميله لكل المستخدمين مع كل تحميل للصفحة. */
/* تحميل صندوق أدوات التحرير وصندوق البحث */
if (wgAction == 'edit' || wgAction == 'submit' || wgPageName == 'Special:Upload') {
importScript('Mediawiki:Edittools.js');
} else if (wgPageName == 'Special:Search') {
importScript('Mediawiki:Common.js/search.js');
}
/* إخفاء شريط ملخصات التعديل ورسائل الحذف من صفحات تواصل تؤرشف بالنقل */
function hideStuff() {
if ((wgPageName.search('ويكيبيديا:طلبات_مراجعة_التعديلات/الحالية') != -1) || (wgPageName.search('ويكيبيديا:إخطار_الإداريين/إزالة_حماية/الحالية') != -1) || (wgPageName.search('ويكيبيديا:إخطار_الإداريين/إزالة_منع/الحالية') != -1) || (wgPageName.search('ويكيبيديا:إخطار_الإداريين/استرجاع/الحالية') != -1) || (wgPageName.search('ويكيبيديا:إخطار_الإداريين/حماية/الحالية') != -1) || (wgPageName.search('ويكيبيديا:إخطار_الإداريين/منع/الحالية') != -1) || (wgPageName.search('ويكيبيديا:طلبات_صلاحيات/إعطاء') != -1) || (wgPageName.search('ويكيبيديا:طلبات_صلاحيات/إزالة') != -1) || (wgPageName.search('ويكيبيديا:طلبات_النقل/الحالية') != -1))
mw.util.addCSS('.mw-summary, .mw-warning-with-logexcerpt, #editpage-copywarn, #contentSub2, #newarticletext { display: none !important; } ');
}
addOnloadHook(hideStuff);
/* طي قائمة القوالب المستخدمة في الصفحة */
$(".templatesUsed p").click(function(){$(".templatesUsed ul").slideToggle("fast")});$(".hiddencats p").click(function(){$(".hiddencats ul").slideToggle("fast")});mw.util.addCSS(" .templatesUsed ul, .hiddencats ul { display:none; list-style-type: none !important; list-style-image: none !important;}");mw.util.addCSS(" .templatesUsed p, .hiddencats p { cursor: pointer; color: rgb(6, 69, 173); text-indent: .5em; border-right: 1px dotted rgb(170, 170, 170)}");
/* [[قالب:قائمة أفقية]] */
var arrowimages={down:["downarrowclass","//upload.wikimedia.org/wikipedia/commons/f/f1/MediaWiki_Vector_skin_action_arrow.svg",10],left:["leftarrowclass","//upload.wikimedia.org/wikipedia/commons/8/8e/MediaWiki_Vector_skin_left_arrow.svg"]};var jqueryslidemenu={animateduration:{over:400,out:400},buildmenu:function(menuid,arrowsvar){jQuery(document).ready(function($){var $mainmenu=$("#"+menuid+">ul");var $headers=$mainmenu.find("ul").parent();$headers.each(function(i){var $curobj=$(this);var $subul=$(this).find("ul:eq(0)");this._dimensions={w:this.offsetWidth,h:this.offsetHeight,subulw:$subul.outerWidth(),subulh:$subul.outerHeight()};this.istopheader=$curobj.parents("ul").length==1?true:false;$subul.css({top:this.istopheader?this._dimensions.h+"px":0});$curobj.children("a:eq(0)").css(this.istopheader?{paddingLeft:arrowsvar.down[2]}:{}).append('<img src="'+(this.istopheader?arrowsvar.down[1]:arrowsvar.left[1])+'" class="'+(this.istopheader?arrowsvar.down[0]:arrowsvar.left[0])+'" style="border:0;" />');$curobj.hover(function(e){var $targetul=$(this).children("ul:eq(0)");this._offsets={right:$(this).offset().right,top:$(this).offset().top};var menuright=this.istopheader?0:this._dimensions.w;menuright=(this._offsets.right+menuright+this._dimensions.subulw>$(window).width())?(this.istopheader?-this._dimensions.subulw+this._dimensions.w:-this._dimensions.w):menuright;if($targetul.queue().length<=1){$targetul.css({right:menuright+"px",width:this._dimensions.subulw+"px"}).slideDown(jqueryslidemenu.animateduration.over)}},function(e){var $targetul=$(this).children("ul:eq(0)");$targetul.slideUp(jqueryslidemenu.animateduration.out)});$curobj.click(function(){$(this).children("ul:eq(0)").hide()})});$mainmenu.find("ul").css({display:"none",visibility:"visible"})})}};jqueryslidemenu.buildmenu("myslidemenu",arrowimages);
/* ويكي الحب */
importStylesheet('MediaWiki:WikiLove.css');
importScript("MediaWiki:WikiLove.js");
/* وصلات مقالات جيدة ومختارة بلغات أخرى */
importScript("MediaWiki:FeaturedInterwiki.js");
/* [[قالب:عنصر مخفي]] */
importStylesheet('MediaWiki:EnhancedCollapsibleElements.css');
importScript("MediaWiki:EnhancedCollapsibleElements.js");
/* [[قالب:مبوبة]] */
importStylesheet('MediaWiki:Metabox.css');
importScript("MediaWiki:Metabox.js");
/* أوبن ستريت ماب */
importScript("MediaWiki:OpenStreetMap.js");
/* ويكي ميني أطلس */
mw.loader.load('//meta.wikimedia.org/w/index.php?title=MediaWiki:Wikiminiatlas.js&action=raw&ctype=text/javascript&smaxage=21600&maxage=86400');
/* إخفاء وصلات في نطاق الملفات لا لزوم لها */
if (wgNamespaceNumber == 6) {
importScript('Mediawiki:Filepage.js');
}
/* كود يعمل مع بوابة المشاركة */
if (wgPageName == 'ويكيبيديا:بوابة_المشاركة' || 'ويكيبيديا:بوابة المشاركة/RegisterUser') {
importScript('User:Haithams/ContributionPortalScript.js');
}
if (wgPageName == 'ويكيبيديا:بوابة_المشاركة/قاعة_الشاي/أسئلة') {
importScript('مستخدم:Haithams/Gadget-teahouse.js');
}
/* وصلة القائمة الكاملة تحت وصلات لغات الصفحة الرئيسية */
if (wgPageName == 'الصفحة_الرئيسية' || wgPageName == 'نقاش:الصفحة_الرئيسية') {
$(function () {
mw.util.addPortletLink('p-lang', '//meta.wikimedia.org/wiki/قائمة_الويكيبيديات', 'القائمة الكاملة', 'interwiki-completelist', 'قائمة الويكيبيديات الكاملة');
var nstab = document.getElementById('ca-nstab-main');
if (nstab && wgUserLanguage == 'ar') {
while (nstab.firstChild) {
nstab = nstab.firstChild;
}
nstab.nodeValue = 'الصفحة الرئيسية';
}
});
}
/**
* Collapsible tables *********************************************************
*
* Description: Allows tables to be collapsed, showing only the header.
*/
var autoCollapse = 2;
var collapseCaption = 'أخف';
var expandCaption = 'أظهر';
window.collapseTable = function ( tableIndex ) {
var Button = document.getElementById( 'collapseButton' + tableIndex );
var Table = document.getElementById( 'collapsibleTable' + tableIndex );
if ( !Table || !Button ) {
return false;
}
var Rows = Table.rows;
var i;
if ( Button.firstChild.data === collapseCaption ) {
for ( i = 1; i < Rows.length; i++ ) {
Rows[i].style.display = 'none';
}
Button.firstChild.data = expandCaption;
} else {
for ( 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' );
var i;
function handleButtonLink( index, e ) {
window.collapseTable( index );
e.preventDefault();
}
for ( i = 0; i < Tables.length; i++ ) {
if ( $( Tables[i] ).hasClass( 'collapsible' ) ) {
/* only add button and increment count if there is a header row to work with */
var HeaderRow = Tables[i].getElementsByTagName( 'tr' )[0];
if ( !HeaderRow ) continue;
var Header = HeaderRow.getElementsByTagName( 'th' )[0];
if ( !Header ) continue;
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.className = 'collapseButton'; /* Styles are declared in Common.css */
ButtonLink.style.color = Header.style.color;
ButtonLink.setAttribute( 'id', 'collapseButton' + tableIndex );
ButtonLink.setAttribute( 'href', '#' );
$( ButtonLink ).on( 'click', $.proxy( handleButtonLink, ButtonLink, tableIndex ) );
ButtonLink.appendChild( ButtonText );
Button.appendChild( document.createTextNode( '[' ) );
Button.appendChild( ButtonLink );
Button.appendChild( document.createTextNode( ']' ) );
Header.insertBefore( Button, Header.firstChild );
tableIndex++;
}
}
for ( i = 0; i < tableIndex; i++ ) {
if ( $( NavigationBoxes[i] ).hasClass( 'collapsed' ) || ( tableIndex >= autoCollapse && $( NavigationBoxes[i] ).hasClass( 'autocollapse' ) ) ) {
window.collapseTable( i );
}
else if ( $( NavigationBoxes[i] ).hasClass ( 'innercollapse' ) ) {
var element = NavigationBoxes[i];
while ((element = element.parentNode)) {
if ( $( element ).hasClass( 'outercollapse' ) ) {
window.collapseTable ( i );
break;
}
}
}
}
}
$( createCollapseButtons );
/**
* Dynamic Navigation Bars (experimental)
*
* Description: See [[Wikipedia:NavFrame]].
* Maintainers: UNMAINTAINED
*/
/* set up the words in your language */
var NavigationBarHide = '[' + collapseCaption + ']';
var NavigationBarShow = '[' + expandCaption + ']';
/**
* Shows and hides content and picture (if available) of navigation bars
* Parameters:
* indexNavigationBar: the index of navigation bar to be toggled
**/
window.toggleNavigationBar = function ( indexNavigationBar, event ) {
var NavToggle = document.getElementById( 'NavToggle' + indexNavigationBar );
var NavFrame = document.getElementById( 'NavFrame' + indexNavigationBar );
var NavChild;
if ( !NavFrame || !NavToggle ) {
return false;
}
/* if shown now */
if ( NavToggle.firstChild.data === NavigationBarHide ) {
for ( NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) {
if ( $( NavChild ).hasClass( 'NavContent' ) || $( NavChild ).hasClass( 'NavPic' ) ) {
NavChild.style.display = 'none';
}
}
NavToggle.firstChild.data = NavigationBarShow;
/* if hidden now */
} else if ( NavToggle.firstChild.data === NavigationBarShow ) {
for ( NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) {
if ( $( NavChild ).hasClass( 'NavContent' ) || $( NavChild ).hasClass( 'NavPic' ) ) {
NavChild.style.display = 'block';
}
}
NavToggle.firstChild.data = NavigationBarHide;
}
event.preventDefault();
};
/* adds show/hide-button to navigation bars */
function createNavigationBarToggleButton() {
var indexNavigationBar = 0;
var NavFrame;
var NavChild;
/* iterate over all < div >-elements */
var divs = document.getElementsByTagName( 'div' );
for ( var i = 0; (NavFrame = divs[i]); i++ ) {
/* if found a navigation bar */
if ( $( NavFrame ).hasClass( 'NavFrame' ) ) {
indexNavigationBar++;
var NavToggle = document.createElement( 'a' );
NavToggle.className = 'NavToggle';
NavToggle.setAttribute( 'id', 'NavToggle' + indexNavigationBar );
NavToggle.setAttribute( 'href', '#' );
$( NavToggle ).on( 'click', $.proxy( window.toggleNavigationBar, window, indexNavigationBar ) );
var isCollapsed = $( NavFrame ).hasClass( 'collapsed' );
/**
* Check if any children are already hidden. This loop is here for backwards compatibility:
* the old way of making NavFrames start out collapsed was to manually add style="display:none"
* to all the NavPic/NavContent elements. Since this was bad for accessibility (no way to make
* the content visible without JavaScript support), the new recommended way is to add the class
* "collapsed" to the NavFrame itself, just like with collapsible tables.
*/
for ( NavChild = NavFrame.firstChild; NavChild != null && !isCollapsed; NavChild = NavChild.nextSibling ) {
if ( $( NavChild ).hasClass( 'NavPic' ) || $( NavChild ).hasClass( 'NavContent' ) ) {
if ( NavChild.style.display === 'none' ) {
isCollapsed = true;
}
}
}
if ( isCollapsed ) {
for ( NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) {
if ( $( NavChild ).hasClass( 'NavPic' ) || $( NavChild ).hasClass( 'NavContent' ) ) {
NavChild.style.display = 'none';
}
}
}
var NavToggleText = document.createTextNode( isCollapsed ? NavigationBarShow : 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] ).hasClass( 'NavHead' ) ) {
NavToggle.style.color = NavFrame.childNodes[j].style.color;
NavFrame.childNodes[j].appendChild( NavToggle );
}
}
NavFrame.setAttribute( 'id', 'NavFrame' + indexNavigationBar );
}
}
}
$( createNavigationBarToggleButton );
/* دالة مساعدة لإضافة زر جديد لأحد قوائم الواجهة */
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));
}
if (id) {
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;
}
/* نصوص لإنترنت إكسبلورر */
if ($.client.profile().name == 'msie') {
/** Internet Explorer bug fix **************************************************
*
* Description: Fixes IE horizontal scrollbar bug
*/
var oldWidth;
var docEl = document.documentElement;
var fixIEScroll = function () {
if (!oldWidth || docEl.clientWidth > oldWidth) {
doFixIEScroll();
} else {
setTimeout(doFixIEScroll, 1);
}
oldWidth = docEl.clientWidth;
};
var doFixIEScroll = function () {
docEl.style.overflowX = (docEl.scrollWidth - docEl.clientWidth < 4) ? "hidden" : "";
};
document.attachEvent("onreadystatechange", fixIEScroll);
document.attachEvent("onresize", fixIEScroll);
// In print IE (7?) does not like line-height
mw.util.addCSS('@media print { sup, sub, p, .documentDescription { line-height: normal; } }');
// IE overflow bug
mw.util.addCSS('div.overflowbugx { overflow-x: scroll !important; overflow-y: hidden !important; } ' + 'div.overflowbugy { overflow-y: scroll !important; overflow-x: hidden !important; }');
// IE zoomfix
// Use to fix right floating div/table inside tables
mw.util.addCSS('.iezoomfix div, .iezoomfix table { zoom: 1; }');
// Import scripts specific to Internet Explorer 6
if ($.client.profile().versionBase == '6') {
importScript('MediaWiki:Common.js/IE60Fixes.js');
}
}
/* [[قالب:أصد]] و[[قالب:يونيكود]] */
if ($.client.profile().platform == 'win') {
mw.util.addCSS('.IPA, .Unicode { font-family: "Arial Unicode MS", "Lucida Sans Unicode", "Segoe UI", "Microsoft Sans Serif"; }');
}
/* [[قالب:لائحة مسطحة]] */
if ($.client.profile().name == 'msie') {
/* Add pseudo-selector class to last child list items in IE 8 */
if ($.client.profile().versionBase == '8') {
$('.hlist').find('dd:last-child, dt:last-child, li:last-child').addClass('hlist-last-child');
}
/* Generate interpuncts and parens for IE < 8 */
if ($.client.profile().versionBase < '8') {
$('.hlist').find('dt + dd, dt + dt').prev().append('<b>:</b> ');
$('.hlist').find('dd + dd, dd + dt, li + li').prev().append('<b>·</b> ');
$('.hlist').find('dl dl, ol ol, ul ul').prepend('( ').append(') ');
}
}
/* [[قالب:اسم مستخدم]] */
function UsernameReplace() {
if (window.disableUsernameReplace || wgUserName == null) return;
var un = getElementsByClassName(document, 'span', 'insertusername');
for (var i = 0; i < un.length; i++) {
var d = 0;
for (var j = 0; j < un[i].childNodes.length; j++) {
if (un[i].childNodes[j].nodeType == 3 && d < 1) {
//find first text node and replace;
un[i].childNodes[j].nodeValue = wgUserName;
d++;
}
}
}
}
addOnloadHook(UsernameReplace);
/* تعريب كلمة تحويل بالإنجليزية المدرجة في شريط أدوات التحرير */
/* [[bugzilla:24114]] */
(function (mw, $) {
if (window.wgWikiEditorEnabledModules && wgWikiEditorEnabledModules.toolbar) {
try {
$('#wpTextbox1').bind('wikiEditor-toolbar-buildSection-advanced', function (event, section) {
section.groups.insert.tools.redirect.action.options.pre = '#تحويل [[';
});
} catch (e) {
// Woopsie, die without a notice
}
}
})(mediaWiki, jQuery);
/**
* Redirect User:Name/skin.js and skin.css to the current skin's pages
* (unless the 'skin' page really exists)
* @source: http://www.mediawiki.org/wiki/Snippets/Redirect_skin.js
* @rev: 3
*/
if (mw.config.get('wgArticleId') === 0 && mw.config.get('wgNamespaceNumber') === 2) {
var titleParts = mw.config.get('wgPageName').split('/');
// Make sure there was a part before and after the slash
// And that the latter is 'skin.js' or 'skin.css'
if (titleParts.length == 2) {
var userSkinPage = titleParts[0] + '/' + mw.config.get('skin');
if (titleParts[1] === 'skin.js') {
window.location.href = mw.util.wikiGetlink(userSkinPage + '.js');
} else if (titleParts[1] === 'skin.css') {
window.location.href = mw.util.wikiGetlink(userSkinPage + '.css');
}
}
}
/* إبقاء [[وب:إأ#الطريقة الأولى]] صالحة للاستعمال
** [[mw:Snippets/ToolboxLayer]] */
(function ($) {
if ($.inArray(mw.config.get('wgAction'), ['edit', 'submit']) === -1 || $.fn.wikiEditor === undefined) {
return;
}
$(document).ready(function () {
var $tb = $('#wpTextbox1');
$.each(window.mwCustomEditButtons || [], function (i) {
var wikiOptions = {
section: 'main',
group: 'insert',
tools: {}
}, tool = this;
wikiOptions.tools[tool.name || 'mw-custom-edit-button-' + (i + 1)] = {
label: tool.speedTip,
type: 'button',
icon: tool.imageFile,
action: {
type: 'callback',
execute: function () {
$tb.textSelection('encapsulateSelection', {
pre: tool.tagOpen || '',
peri: tool.sampleText || '',
post: tool.tagClose || ''
});
if ($.isFunction(tool.callbackFunct)) {
tool.callbackFunct.call(window);
}
}
}
}
$tb.wikiEditor('addToToolbar', wikiOptions);
});
});
})(jQuery);
/* زر تحويل جهة كتابة المقارنة بين نسختين */
$(function () {
$(".diff-otitle").after('<a href="javascript:diffToggleDir();"><tt style="float: left; font-weight: bold;" title="تغيير جهة كتابة المقارنة"><-></tt>');
});
function diffToggleDir() {
var wDir = "ltr";
if ($(".diff-context").css('direction') == 'ltr') wDir = "rtl";
$(".diff-addedline, .diff-deletedline, .diff-context").css("direction", wDir);
}
/* [[قالب:مب]]
** [[mw:Snippets/Load_JS_and_CSS_by_URL]] */
var extraCSS = mw.util.getParamValue("withCSS");
if (extraCSS && extraCSS.match(/^MediaWiki:[^&<>=%]*\.css$/)) {
importStylesheet(extraCSS);
}
var extraJS = mw.util.getParamValue("withJS");
if (extraJS && extraJS.match(/^MediaWiki:[^&<>=%]*\.js$/)) {
importScript(extraJS);
}
/* [[MediaWiki:Gadget-SummaryEnterPreview.js]] */
jQuery(document).ready(function ($) {
if (typeof summaryEnterRejectDisable === 'undefined' || summaryEnterRejectDisable == false) {
$("#wpSummary").keypress(function (e) {
if (e.keyCode == 13) {
e.preventDefault();
}
});
$("#wpSave").css("font-weight", "normal");
}
});
/* [[قالب:قسم مخفي]]
** http://www.snilesh.com/resources/jquery/jquery-expand-collapse-expand-all-collapse-all/
*/
$(document).ready(function(){
$(".toggle_container").hide();
$("h2.expand_heading").toggle(function(){
$(this).addClass("active");
}, function () {
$(this).removeClass("active");
});
$("h2.expand_heading").click(function(){
$(this).next(".toggle_container").slideToggle("fast");
});
$(".expand_all").toggle(function(){
$(this).addClass("expanded");
}, function () {
$(this).removeClass("expanded");
});
$(".expand_all").click(function(){
$(".toggle_container").slideToggle("fast");
});
});