מדיה ויקי:סקריפטים/22.js
הערה: לאחר הפרסום, ייתכן שיהיה צורך לנקות את זיכרון המטמון (cache) של הדפדפן כדי להבחין בשינויים.
- פיירפוקס / ספארי: להחזיק את המקש Shift בעת לחיצה על טעינה מחדש (Reload) או ללחוץ על צירוף המקשים Ctrl-F5 או Ctrl-R (במחשב מק: ⌘-R).
- גוגל כרום: ללחוץ על צירוף המקשים Ctrl-Shift-R (במחשב מק: ⌘-Shift-R).
- אדג': להחזיק את המקש Ctrl בעת לחיצה על רענן (Refresh) או ללחוץ על צירוף המקשים Ctrl-F5.
// סקריפט 22: מתוך [[ויקיפדיה:סקריפטים/22]]
// מוסיף קישור "ארכוב" מתחת לתיבת הכלים (בדף המשתמש שלך בלבד)
// נכתב על ידי [[User:Yonidebest]]
var defualtPrefixArchive = 'ארכיון ';
// load the talk page in edit mode
function archiveUserPageStage1() {
var archivename = document.getElementById('archivename').value;
var numberoftalks = document.getElementById('numberoftalks').value;
if (!archivename || archivename === '') {
alert("יש למלא את שם הארכיון.");
return;
}
if (!numberoftalks || numberoftalks === '') numberoftalks = 'all';
document.location = '//he.wikipedia.org/w/index.php?title=User Talk:' + encodeURIComponent(mw.config.get('wgUserName')) + '&action=edit&archivestage=2&archivename=' + encodeURIComponent(archivename) + '&numberoftalks=' + numberoftalks;
}
// remove the text that needs to be archived and send it to new window.
function archiveUserPageStage2() {
if (mw.util.getParamValue('archivestage') != '2') return;
var numberoftalks = mw.util.getParamValue('numberoftalks');
var tempText = $('#wpTextbox1').val();
var rx = new RegExp('[^=]==[^=]*==[^=]', 'g');
var m;
// find the first section
m = rx.exec(tempText);
if (!m) {
// exit early if the regex didn't match.
return;
}
var firstSectionIndex = m.index;
// find the last section to archive
var lastSectionIndex;
if (numberoftalks == 'all')
lastSectionIndex = tempText.length - 1;
else {
var numberOfSections = 0;
while (numberOfSections < numberoftalks) {
m = rx.exec(tempText);
if (m) {
numberOfSections++;
lastSectionIndex = m.index;
} else {
lastSectionIndex = tempText.length - 1;
break;
}
}
}
// get archiveText, load archive and save this page
var archiveText = tempText.substring(firstSectionIndex, lastSectionIndex);
var saveParameters = {action: 'edit', title: 'User Talk:'+mw.config.get('wgUserName')+'/'+defualtPrefixArchive + mw.util.getParamValue('archivename'), summary: 'ארכוב אוטומטי', token: mw.user.tokens.get('csrfToken'), appendtext: '\n'+archiveText, format: 'json'};
$.post(mw.util.wikiScript('api'), saveParameters).done( function (data) {
if (data && data.error)
alert('שגיאה בשמירה: ' + data.error.info);
else if (data && data.edit && data.edit.result == 'Success')
{
$('#wpTextbox1').val($('#wpTextbox1').val().replace(archiveText, ""));
$('#wpSummary').val('ארכוב אוטומטי');
$('#wpSave').click();
}
});
}
function navArchiveToggle() {
var divBody = document.getElementById('p-archiveBody1');
if (divBody.style.display == 'none') // show content
divBody.style.display = 'block';
else { // hide content
divBody.style.display = 'none';
}
}
function initArchiveUserPage() {
if (mw.config.get('wgNamespaceNumber') != 3 || mw.config.get('wgUserName') != mw.config.get('wgTitle')) return;
var navArchiveMain = document.createElement('DIV');
navArchiveMain.className = 'portlet';
var h5ArchiveTitle = document.createElement('H5');
var aLink = document.createElement('A');
aLink.appendChild(document.createTextNode('ארכוב'));
aLink.href = 'javascript:navArchiveToggle();';
h5ArchiveTitle.appendChild(aLink);
navArchiveMain.appendChild(h5ArchiveTitle);
var divArchiveBody;
try { // for IE
divArchiveBody = document.createElement('<DIV ID="p-archiveBody1"></DIV>');
} catch (e) { // for FF
divArchiveBody = document.createElement('DIV');
divArchiveBody.id = 'p-archiveBody1';
}
divArchiveBody.className = 'pBody';
divArchiveBody.style.padding = '5px';
divArchiveBody.innerHTML = 'שם הארכיון:<br /><input id="archivename" type="text" size="15" /><br />מספר השיחות לארכוב:<br /><input id="numberoftalks" type="text" size="15" /><br /><a href="javascript:archiveUserPageStage1()" title="ארכב עכשיו">ארכב עכשיו</a>';
navArchiveMain.appendChild(divArchiveBody);
var pToolBox = document.getElementById('p-tb');
pToolBox.parentNode.appendChild(navArchiveMain);
navArchiveToggle();
}
$(initArchiveUserPage);
$(archiveUserPageStage2);
// עד כאן סקריפט 22