מדיה ויקי:סקריפטים/112.js
מראה
הערה: לאחר הפרסום, ייתכן שיהיה צורך לנקות את זיכרון המטמון (cache) של הדפדפן כדי להבחין בשינויים.
- פיירפוקס / ספארי: להחזיק את המקש Shift בעת לחיצה על טעינה מחדש (Reload) או ללחוץ על צירוף המקשים Ctrl-F5 או Ctrl-R (במחשב מק: ⌘-R).
- גוגל כרום: ללחוץ על צירוף המקשים Ctrl-Shift-R (במחשב מק: ⌘-Shift-R).
- אדג': להחזיק את המקש Ctrl בעת לחיצה על רענן (Refresh) או ללחוץ על צירוף המקשים Ctrl-F5.
/*
Adds a "My links" section at the sidebar menu for personal links.
The links are defined at [[Special:MyPage/הקישורים שלי]].
Idea based on [[MediaWiki:Gadget-CustomSideBarLinks.js]].
Rewritten by [[User:Guycn2]] to adapt to vector-2022 and minerva,
among other layout adjustments.
__________________________________________________
הוספת תיבה "הקישורים שלי" בתפריט הצד, ליצירת קישורים אישיים.
הקישורים מוגדרים בדף [[מיחד:הדף שלי/הקישורים שלי]].
הרעיון מבוסס על [[מדיה ויקי:Gadget-CustomSideBarLinks.js]].
נכתב מחדש ע"י [[משתמש:Guycn2]],
לצורך התאמה לעיצוב וקטור 2022 ולתצוגת ניידים, בנוסף לתיקוני תצוגה אחרים.
*/
$( async () => {
'use strict';
const skin = mw.config.get( 'skin' );
const menuHeadingText =
mw.config.get( 'wgUserLanguage' ) === 'he' ? 'הקישורים שלי' : 'My links';
let $communityMenu, $myLinksMenu, $menuHeading, $menuContent, $menuList;
switch ( skin ) {
case 'vector-2022':
$communityMenu = $( '#p-community' );
$myLinksMenu = $communityMenu.clone();
$myLinksMenu.removeClass( 'mw-portlet-community' );
$menuHeading = $myLinksMenu.children( '.vector-menu-heading' );
$menuHeading.text( menuHeadingText );
$menuContent = $myLinksMenu.children( '.vector-menu-content' );
$menuList = $menuContent.children( 'ul' ).empty();
break;
case 'vector':
$communityMenu = $( '#p-community' );
$myLinksMenu = $communityMenu.clone();
$myLinksMenu.removeClass( 'mw-portlet-community' );
$myLinksMenu.attr( 'aria-labelledby', 'p-personal-links-label' );
$menuHeading = $myLinksMenu.children( '.vector-menu-heading' );
$menuHeading.attr( 'id', 'p-personal-links-label' );
$menuHeading.children( '.vector-menu-heading-label' ).text( menuHeadingText );
$menuContent = $myLinksMenu.children( '.vector-menu-content' );
$menuList = $menuContent.children( 'ul' ).empty();
break;
case 'monobook':
$communityMenu = $( '#p-community' );
$myLinksMenu = $communityMenu.clone();
$myLinksMenu.removeClass( 'mw-portlet-community' );
$myLinksMenu.attr( 'aria-labelledby', 'p-personal-links-label' );
$menuHeading = $myLinksMenu.children( '#p-community-label' );
$menuHeading.attr( 'id', 'p-personal-links-label' ).text( menuHeadingText );
$menuContent = $myLinksMenu.children( '.pBody' );
$menuList = $menuContent.children( 'ul' ).empty();
break;
case 'timeless':
$communityMenu = $( '#p-community' );
$myLinksMenu = $communityMenu.clone();
$myLinksMenu.attr( 'aria-labelledby', 'p-personal-links-label' );
$menuHeading = $myLinksMenu.children( '#p-community-label' );
$menuHeading.attr( 'id', 'p-personal-links-label' ).text( menuHeadingText );
$menuContent = $myLinksMenu.children( '.mw-portlet-body' );
$menuList = $menuContent.children( 'ul' ).empty();
break;
case 'minerva':
$communityMenu = $( '#p-interaction' );
$myLinksMenu = $communityMenu.clone();
$menuList = $myLinksMenu.empty();
break;
default:
return;
}
$myLinksMenu.attr( 'id', 'p-personal-links' ).insertBefore( $communityMenu );
const params = {
action: 'parse',
page: `User:${ mw.config.get( 'wgUserName' ) }/הקישורים שלי`,
prop: 'text',
disablelimitreport: true,
useskin: skin,
mobileformat: skin === 'minerva'
};
await mw.loader.using( 'mediawiki.api' );
let data, $outputElem;
try {
data = await new mw.Api().get( params );
$outputElem = $( data.parse.text[ '*' ] );
} catch ( e ) {
return;
}
const $listItems = $outputElem.find( 'ul' ).children( 'li' );
$listItems.each( function () {
const $listItem = $( this );
if ( skin === 'minerva' ) {
$listItem.addClass( 'toggle-list-item' );
const $links = $listItem.find( 'a' );
$links.each( function () {
const $link = $( this ), linkText = $link.text();
$link
.removeClass( 'external' )
.addClass( 'toggle-list-item__anchor' )
.attr( 'data-mw', 'interface' )
.empty()
.append(
$( '<span>' )
.addClass( 'toggle-list-item__label' )
.text( linkText )
.css( 'margin-right', '1.07rem' )
);
} );
} else {
$listItem.addClass( 'mw-list-item' );
}
$listItem.appendTo( $menuList );
} );
} );