משתמש:Mikimik/js/customizeContent.js
מראה
הערה: לאחר הפרסום, ייתכן שיהיה צורך לנקות את זיכרון המטמון (cache) של הדפדפן כדי להבחין בשינויים.
- פיירפוקס / ספארי: להחזיק את המקש Shift בעת לחיצה על טעינה מחדש (Reload) או ללחוץ על צירוף המקשים Ctrl-F5 או Ctrl-R (במחשב מק: ⌘-R).
- גוגל כרום: ללחוץ על צירוף המקשים Ctrl-Shift-R (במחשב מק: ⌘-Shift-R).
- אדג': להחזיק את המקש Ctrl בעת לחיצה על רענן (Refresh) או ללחוץ על צירוף המקשים Ctrl-F5.
/* user Contributions page modifications: mark the last change with bold font "history" link instead of "last" text
written by [[User:Mikimik]] */
function markLastChangeContributions ( node )
{
try {
if ( !node ) node = document.getElementById("bodyContent");
var lines = node.getElementsByTagName("li");
for ( var i = 0 ; i < lines.length ; i++ )
for ( var item = lines[i].firstChild ; item ; item = item.nextSibling ) // find the the history link - it's location can
if ( item.nodeName == "A" && /&action=history$/.test(item.href) ) // change between different wikis and between lines
{
item.className += " hist"; // mark the history link
// mark the line according to the presence of the "(last)" span
lines[i].className += lines[i].getElementsByClassName("mw-uctop")[0] ? " topedit" : " nontopedit";
break;
}
appendCSS (".topedit .hist { font-weight:bold; } .nontopedit .hist { margin-left:2px; margin-right:2px; } span.mw-uctop { display:none; }");
}
catch(e)
{
return; // lets just ignore what's happened
}
}
if ( wgCanonicalSpecialPageName == "Contributions" ) addOnloadHook ( markLastChangeContributions );
// 1. change diff view of JS text to left-to-right
// 2. change diff view of mostly english text to left-to-right
// written by [[user:Mikimik]]
function diffLeftToRight()
{
function getfullline ( node )
{
var s = "";
if ( !/\bdiff-lineno\b/.test(node.className) )
if ( node.hasChildNodes() ) for ( var child = node.firstChild ; child ; child = child.nextSibling ) s += getfullline ( child );
else if ( node.nodeValue ) s = node.nodeValue;
return s;
}
try {
if ( !document.getElementById("bodyContent").getElementsByClassName("diff")[0] ) return;
var diff = document.getElementById("bodyContent").getElementsByClassName("diff")[0].getElementsByTagName("TBODY")[0];
var cells = diff.getElementsByTagName("TD");
if ( !/\.(js|css)$/i.test(wgPageName) ) // not JS or CSS
{
var english = 0;
var hebrew = 0;
for ( var i = 4 ; i < cells.length ; i++ )
{
var str = getfullline ( cells[i] )
.replace ( /\[\[ *:? *(קובץ|file|תמונה|image) *: *[^\[\]|\n]/gi, "" ) // remove picture names
.replace ( /http:\/\/[^\[\] \n<>]+/gi, "" ) // remove external html links
.replace ( /\[\[ *[a-z-]{2,} *:.+]]/gi, "" ); // remove interwiki links
english += str.replace(/[^a-z]+/gi,"").length;
hebrew += str.replace(/[^א-ת]+/g,"").length;
}
if ( hebrew >= english ) return; // exit if the text is mostly hebrew
}
for ( var i = 2 ; i < cells.length ; i++ ) cells[i].dir = "ltr"; // left-to-right
var linenums = diff.getElementsByClassName("diff-lineno");
for ( var i = 0 ; i < linenums.length ; i++ )
linenums[i].replaceChild ( document.createTextNode(linenums[i].firstChild.nodeValue.replace("שורה","line")), linenums[i].firstChild );
}
catch (e)
{
return; // lets just ignore what's happened
}
}
if ( wgUserLanguage == "he" ) addOnloadHook ( diffLeftToRight );
// change bulleted lists to numbered Lists in Recentchanges, Watchlist, Log, Whatlinkshere, Contributions, DeletedContributions and Recentchangeslinked pages
function bulletedListsToNumberedLists ( node )
{
try {
if ( !node ) node = document.getElementById("bodyContent");
var ulNodes = node.getElementsByTagName("ul");
for ( var i = 0 ; i < ulNodes.length ; i++ )
{
var olNode = document.createElement("ol");
olNode.className = "olContainer";
ulNodes[i].insertBefore ( olNode, ulNodes[i].firstChild );
ulNodes[i].className += " ulContainer";
for ( var item = olNode.nextSibling, next = null ; item ; item = next )
{
next = item.nextSibling;
olNode.appendChild ( item );
}
}
appendCSS ( "ul.ulContainer { margin-left:0px; margin-right:0px; margin-top:0px; width:98%; }" +
"ol.olContainer { margin-" + ( wgUserLanguage == "he" ? "left" : "right" ) + ":0px; margin-top:0px; width:98%; }" );
}
catch (e)
{
return; // lets just ignore what's happened
}
}
if ( /^(Recentchanges|Watchlist|Log|Whatlinkshere|Contributions|DeletedContributions|Recentchangeslinked)$/.test(wgCanonicalSpecialPageName) ||
wgAction == "history" ) addOnloadHook ( bulletedListsToNumberedLists );
/* move [edit] link after section title, instead of floating on the left */
function moveEditLink()
{
try {
var editsection = document.getElementById("bodyContent").getElementsByClassName("editsection");
for ( var i = 0 ; i < editsection.length ; i++ )
{
editsection[i].style.cssFloat = "none";
if ( wgUserLanguage == "he" ) editsection[i].style.marginRight = "5em";
else editsection[i].style.marginLeft = "5em";
editsection[i].parentNode.appendChild ( editsection[i] );
}
}
catch (e)
{
return; // lets just ignore what's happened
}
}
$ ( moveEditLink );
function nicePatrollLink() // add a linebreak before a patroll link in diff view
{
try {
if ( !document.getElementsByClassName("diff").length ) return;
var patroll = document.getElementsByClassName("diff")[0].getElementsByClassName("patrollink");
for ( var i = 0 ; i < patroll.length ; i++ ) // there can be only one patroll link inside a diff, but let's do it anyway
patroll[i].parentNode.insertBefore(document.createElement("BR"),patroll[i]);
}
catch (e)
{
return; // lets just ignore what's happened
}
}
if ( wgArticleId && wgAction == "view" && /\b(sysop|patroller)\b/.test(wgUserGroups.join(" ")) ) addOnloadHook ( nicePatrollLink );
function revdelundelChangeText() // change the text of revdelundel links to "(x)"
{
try {
$(".mw-revdelundel-link > a").text("\u200Fx\u200F");
}
catch (e)
{
return; // lets just ignore what's happened
}
}
$ ( revdelundelChangeText );
/* from [[w:User:Yonidebest/monobook.js/newMsg.js]], changed by [[User:Mikimik]]. */
/* changes the border of the content page when new message is received */
function borderOnNewMsg()
{
try {
if ( document.getElementById("bodyContent").getElementsByClassName("usermessage")[0] )
document.getElementById("content").style.borderColor = "#FFA500";
}
catch (e)
{
return; // lets just ignore what's happened
}
}
$ ( borderOnNewMsg );
/* יוצר תקציר עריכה אוטומטי כשעורכים גרסה ישנה. */
function oldRevisionEdit()
{
try {
if ( document.getElementById("mw-revision-info") && document.getElementById("wpSummary") )
document.getElementById("wpSummary").value +=
( wgUserLanguage == "he" ? "שחזור לגרסה " : "Revert to revision " ) + getParamValue("oldid") +
( document.getElementById("mw-revision-date") ? ( wgUserLanguage == "he" ? " מתאריך " : " as of " ) + document.getElementById("mw-revision-date").firstChild.nodeValue : "" ) +
( wgUserLanguage == "he" ? " מאת " : " by " ) + "[[User:" + document.getElementById("mw-revision-info").getElementsByClassName("mw-userlink")[0].firstChild.nodeValue + "|" +
document.getElementById("mw-revision-info").getElementsByClassName("mw-userlink")[0].firstChild.nodeValue + "]]";
}
catch (e)
{
return; // lets just ignore what's happened
}
}
if ( wgAction == "edit" ) addOnloadHook ( oldRevisionEdit );
/* changes discussions look. by [[User:Mikimik]] */
function styleDiscussionPage()
{
try {
var talkrx = /(\/אולם_דיונים|:בירורים|:בקשות_ממפעילים|:דיווח_הפרעות|:דלפק_ייעוץ|:דסק_חדשות|:הומור|:הכה_את_המומחה|:ייעוץ|:כיכר_העיר|:לוח_מודעות|:מזנון|:מפעיל_נולד|:סדנה_לגרפיקה|:ספר_אורחים|:פרלמנט|\/רשימת_המתנה|:רשימת_מועמדים_למחיקה|:רשימת_ערכים_במחלוקת|\/שאלות_ותשובות|:מתקפת_איכות|:מיזמי_ויקיציטוט|:מיזמי_ויקיפדיה)/;
if ( !document.getElementById("ca-addsection") )
if ( wgCanonicalSpecialPageName == "Undelete" ) // צפייה ושחזור דפים מחוקים
{
if ( !document.getElementById("mw-undelete-revision") || !document.getElementsByTagName("input").length ) return;
var delname = document.getElementsByTagName("input")[0].value;
if ( ( wgNamespaceIds[delname.replace(/:.+/,"")] == undefined || wgNamespaceIds[delname.replace(/:.+/,"")] % 2 == 0 ) && !talkrx.test(delname) ) return;
}
else if ( wgNamespaceNumber != 4 || !talkrx.test(wgPageName) ) return;
appendCSS ( // from [[w:he:עזרה:דפי CSS אישיים#שינוי מראה דיונים בוויקי]] + changes
'#bodyContent dd { border-top:solid 1px #F0F080; border-' + ( wgUserLanguage == "he" ? 'right' : 'left' ) + ':solid 1px #F0F080; padding:0; margin:0; }' +
'#bodyContent dl { padding:0; margin:' + ( wgUserLanguage == "he" ? '0 1em 0 0' : '0 0 0 1em' ) + '; }' +
'#bodyContent dl { background-color:#FFFFE0; }' + // 1 Indentation
'#bodyContent dl dl { background-color:#FFFFEE; }' + // 2 Indentations
'#bodyContent dl dl dl { background-color:#FFFFE0; }' +
'#bodyContent dl dl dl dl { background-color:#FFFFEE; }' +
'#bodyContent dl dl dl dl dl { background-color:#FFFFE0; }' +
'#bodyContent dl dl dl dl dl dl { background-color:#FFFFEE; }' +
'#bodyContent dl dl dl dl dl dl dl { background-color:#FFFFE0; }' +
'#bodyContent dl dl dl dl dl dl dl dl { background-color:#FFFFEE; }' +
'#bodyContent dl dl dl dl dl dl dl dl dl { background-color:#FFFFE0; }' +
'#bodyContent dl dl dl dl dl dl dl dl dl dl { background-color:#FFFFEE; }' +
'#bodyContent dl dl dl dl dl dl dl dl dl dl dl { background-color:#FFFFE0; }' +
'#bodyContent dl dl dl dl dl dl dl dl dl dl dl dl { background-color:#FFFFEE; }' +
'#bodyContent dl dl dl dl dl dl dl dl dl dl dl dl dl { background-color:#FFFFE0; }' +
'#bodyContent dl dl dl dl dl dl dl dl dl dl dl dl dl dl { background-color:#FFFFEE; }' +
'#bodyContent dl dl dl dl dl dl dl dl dl dl dl dl dl dl dl { background-color:#FFFFE0; }' +
'#bodyContent dl dl dl dl dl dl dl dl dl dl dl dl dl dl dl dl { background-color:#FFFFEE; }' +
'#bodyContent dl dl dl dl dl dl dl dl dl dl dl dl dl dl dl dl dl { background-color:#FFFFEE; }' +
'#bodyContent dl dl dl dl dl dl dl dl dl dl dl dl dl dl dl dl dl dl { background-color:#FFFFEE; }' +
'#bodyContent dl dl dl dl dl dl dl dl dl dl dl dl dl dl dl dl dl dl dl { background-color:#FFFFEE; }' +
'#bodyContent dl dl dl dl dl dl dl dl dl dl dl dl dl dl dl dl dl dl dl dl { background-color:#FFFFEE; }'); // 20 Indentations
}
catch (e)
{
return; // lets just ignore what's happened
}
}
$ ( styleDiscussionPage );
/* add usermassage with last-modified-time */
function mkUserMassage()
{
try {
var usermassage = document.createElement("div");
usermassage.id = "mk-usermassage";
usermassage.style.cssText = "position:absolute; z-index:40;" + ( wgUserLanguage == "he" ? "left" : "right" ) + ":33px; top:1.6em; font-size:95%;";
var lastmod = document.getElementById("Lastmodified");
if ( !lastmod ) lastmod = document.getElementById("lastmod");
if ( lastmod ) usermassage.appendChild ( document.createTextNode(lastmod.firstChild.nodeValue.replace(/\.$/,"") + " - ") );
var clock = new Date().getHours().toString().replace(/^(\d)$/,"0$1") + ":" + new Date().getMinutes().toString().replace(/^(\d)$/,"0$1");
var date = new Date().getDate() + "/" + (new Date().getMonth()+1) + "/" + new Date().getFullYear();
usermassage.appendChild ( document.createTextNode(wgUserLanguage == "he" ? clock + " " + date : date + " " + clock) );
var wrapper = document.getElementById("globalWrapper");
wrapper.insertBefore ( usermassage, wrapper.firstChild );
}
catch (e)
{
return; // lets just ignore what's happened
}
}
$ ( mkUserMassage );
/* קיצורים בשורת התקציר */
function editSummaryAutoText()
{
try
{
var wpSummaryInput = document.getElementById("wpSummary");
if ( /^(\/\*[^\/*]+\*\/)? *([^ ]) *$/.test(wpSummaryInput.value) )
switch ( wpSummaryInput.value.match ( /^(\/\*[^\/*]+\*\/)? *([^ ]) *$/ )[2].toLowerCase() )
{
case "ה" :
case "v" :
case "a" : wpSummaryInput.value = wpSummaryInput.value.replace ( / *[^ ] *$/, wgContentLanguage == "he" ? " השלמה" : " addition" );
break;
case "ז" :
case "z" :
case "m" : wpSummaryInput.value = wpSummaryInput.value.replace ( / *[^ ] *$/, wgContentLanguage == "he" ? " זוטא" : " minor" );
break;
case "ת" :
case "," :
case "r" : wpSummaryInput.value = wpSummaryInput.value.replace ( / *[^ ] *$/, wgContentLanguage == "he" ? " תגובה" : " response" );
break;
}
wpSummaryInput.value = wpSummaryInput.value.replace ( /^ +/, "" );
return true;
}
catch ( e )
{
return true;
}
}
function hookEditSummaryAutoText()
{
try
{
var form = document.getElementById("editform");
if ( !form ) return;
form.onsubmit = editSummaryAutoText;
}
catch ( e )
{
return;
}
}
if ( wgAction == "edit" || wgAction == "submit" ) addOnloadHook ( hookEditSummaryAutoText );