משתמש:שרדינגר/user-articles-list.js
מראה
הערה: לאחר הפרסום, ייתכן שיהיה צורך לנקות את זיכרון המטמון (cache) של הדפדפן כדי להבחין בשינויים.
- פיירפוקס / ספארי: להחזיק את המקש Shift בעת לחיצה על טעינה מחדש (Reload) או ללחוץ על צירוף המקשים Ctrl-F5 או Ctrl-R (במחשב מק: ⌘-R).
- גוגל כרום: ללחוץ על צירוף המקשים Ctrl-Shift-R (במחשב מק: ⌘-Shift-R).
- אדג': להחזיק את המקש Ctrl בעת לחיצה על רענן (Refresh) או ללחוץ על צירוף המקשים Ctrl-F5.
// פונקציה להוספת רשימת הערכים שיצר המשתמש לדף
function addPages() {
var username = mw.config.get('wgUserName');
var apiUrl = 'https://he.wikipedia.org/w/api.php?action=query&list=usercontribs&ucuser=' + encodeURIComponent(username) + '&ucnamespace=0&uclimit=max&format=json&origin=*';
$.getJSON(apiUrl, function(data) {
var pages = data.query.usercontribs.filter(function(contrib) {
return contrib.comment.includes('יצירת דף חדש') || contrib.parentid === 0;
}).map(function(contrib) {
return contrib.title;
});
if (pages.length > 0) {
var uniquePages = [...new Set(pages)].sort(); // הסרת כפילויות ומיון לפי סדר הא-ב
var listType = 'ערכים שיצרתי (' + uniquePages.length + ')';
// בדיקה אם הערך נכתב במסגרת מיזם לטיפול דחוף
var checkProjectPromises = uniquePages.map(function(page) {
return checkIfProjectPage(page).then(function(isProjectPage) {
return { title: page, isProjectPage: isProjectPage };
});
});
Promise.all(checkProjectPromises).then(function(results) {
var newText = '<div id="user-script-list" style="background-color:#f0f8ff; border:2px solid #0f5132; padding:20px; text-align:right; margin-top:20px; border-radius: 10px;">' +
'<h2 style="color:#0f5132; margin-top:0;">' + listType + '</h2>' +
'<div style="column-count: 2; column-gap: 20px; list-style-type: none; padding: 0;">' +
'<ul style="list-style-type: none; padding: 0;">' +
results.map(function(result) {
var projectNote = result.isProjectPage ? ' (נכתב במסגרת [[תבנית: לטיפול דחוף|המיזם לטיפול דחוף]])' : '';
return '<li>🔹 [[' + result.title + ']]' + projectNote + '</li>';
}).join('') +
'</ul></div>' +
'<div style="margin-top: 20px; font-size: 12px; color: #555;">' +
'ℹ️ נוצר באופן אוטומטי על ידי [[משתמש:שרדינגר/user-articles-list.js|סקריפט לעדכון ערכים שכתבתי]]. להוספת הסקריפט לדף הסקריפטים האישי שלכם, הוסיפו <code>importScript(\'משתמש:שרדינגר/user-articles-list.js\');</code>. למידע נוסף, ראו [[ויקיפדיה:סקריפטים#סקריפטים_פרטיים]].' +
'</div></div>';
// הוספת התבנית המעוצבת לתיבת העריכה בראש הדף או עדכון תבנית קיימת
var textarea = $('#wpTextbox1');
var currentText = textarea.val();
var startTag = '<div id="user-script-list"';
var endTag = '</div></div>';
var startIndex = currentText.indexOf(startTag);
var endIndex = currentText.indexOf(endTag, startIndex) + endTag.length;
if (startIndex !== -1 && endIndex !== -1) {
// מחיקת התוכן הקיים והוספת החדש
textarea.val(currentText.slice(0, startIndex) + newText + currentText.slice(endIndex));
} else {
// הוספת התוכן החדש
textarea.val(newText + '\n\n' + currentText);
}
// הודעה על המסך
$('#editform').prepend('<div id="added-notification" style="color: green; font-weight: bold;">הערכים נוספו לתיבת העריכה בראש הדף. אנא בדוק את התוספות ושמור את השינויים אם תרצה.</div>');
}).catch(function(error) {
// הודעה על המסך במקרה של שגיאה
$('#editform').prepend('<div id="added-notification" style="color: red; font-weight: bold;">אירעה שגיאה בעת ניסיון לעדכן את רשימת הערכים.</div>');
console.error('אירעה שגיאה בעת ניסיון לעדכן את רשימת הערכים:', error);
});
} else {
// הודעה על המסך
$('#editform').prepend('<div id="added-notification" style="color: red; font-weight: bold;">לא נמצאו ערכים שיצרת.</div>');
}
}).fail(function() {
// הודעה על המסך
$('#editform').prepend('<div id="added-notification" style="color: red; font-weight: bold;">אירעה שגיאה בעת ניסיון לקבל את רשימת התרומות.</div>');
});
}
// פונקציה לבדיקת אם הערך נכתב במסגרת המיזם לטיפול דחוף
function checkIfProjectPage(page) {
return new Promise(function(resolve, reject) {
var talkPageTitle = 'שיחה:' + page;
var apiUrl = 'https://he.wikipedia.org/w/api.php?action=query&titles=' + encodeURIComponent(talkPageTitle) + '&prop=templates&format=json&origin=*';
$.getJSON(apiUrl, function(data) {
var pages = data.query.pages;
var pageId = Object.keys(pages)[0];
var templates = pages[pageId].templates || [];
var isProjectPage = templates.some(function(template) {
return template.title.includes('תבנית:מיזם לטיפול דחוף');
});
resolve(isProjectPage);
}).fail(function() {
reject(new Error('אירעה שגיאה בעת ניסיון לבדוק את דף השיחה של הערך ' + page));
});
});
}
// בדיקה אם המשתמש עורך דף במרחב המשתמש שלו
$(function() {
var pageName = mw.config.get('wgPageName');
var action = mw.config.get('wgAction');
if (pageName.startsWith('משתמש:' + mw.config.get('wgUserName')) && action === 'edit') {
// יצירת כפתור להוספת רשימת הערכים שיצרתי
var buttonContainer = $('<div>', { id: 'buttonContainer' }).css({
'margin-bottom': '15px',
'display': 'inline-block' // להבטיח שהכפתור יוצג נכון
});
var createdButton = $('<button>')
.text('הוספת רשימת ערכים שיצרתי')
.css({
'padding': '10px 15px',
'background-color': '#0366d6',
'color': 'white',
'border': 'none',
'border-radius': '5px',
'cursor': 'pointer',
'display': 'inline-block',
'margin-right': '10px' // להבטיח רווח בין הכפתורים
})
.on('click', function(event) {
event.preventDefault(); // מניעת ברירת המחדל של הכפתור
addPages();
});
buttonContainer.append(createdButton);
$('#wpTextbox1').before(buttonContainer);
}
});