Користувач:Bunyk/utils.js
Увага: Після публікування слід очистити кеш браузера, щоб побачити зміни.
- Firefox / Safari: тримайте Shift, коли натискаєте Оновити, або натисніть Ctrl-F5 чи Ctrl-Shift-R (⌘-R на Apple Mac)
- Google Chrome: натисніть Ctrl-Shift-R (⌘-Shift-R на Apple Mac)
- Internet Explorer / Edge: тримайте Ctrl, коли натискаєте Оновити, або натисніть Ctrl-F5
- Opera: натисніть Ctrl-F5
/*
Всілякі корисні функції для роботи з вікіпедією.
importScript('Користувач:Bunyk/utils.js');
Створює два об’єкти - window.wlib, та window.utils.
<nowiki>
*/
if (typeof(window.wlib) == 'undefined') {
window.wlib = {
get_current_page_categories: function() {
return mw.config.get('wgCategories');
},
get_page_namespace: function() {
return mw.config.get('wgNamespaceNumber');
},
get_current_page_name: function () {
return mw.config.get('wgPageName');
},
add_menu_item: function (div_id, text, action, item_id, item_hint) {
// div_id: p-cactions - для пункту в меню вкладки "ще" сторінки
// p-views - для вкладок вгорі сторінки (редагувати, історія, додати до вибраного)
// p-tb - для меню "панель інструментів"
// text: текст меню
// action: функція що виконається при натисненні
// item_id: ідентифікатор пункту меню
// item_hint: підказка меню
var link = mw.util.addPortletLink(div_id, '#', text, item_id, item_hint);
$(link).click(function (e) {
e.preventDefault();
action();
});
},
EDIT_ERRORS: {
'editconflict': 'Конфлікт редагувань на сторінці {PAGENAME}.' +
'Відкиньте редагування, зроблені цим додатком за останні ' +
'декілька секунд та спробуйте ще раз',
'protectedtitle': 'Сторінка {PAGENAME} захищена. Зв\'яжіться з ' +
'адміністраторами на сторінці ВП:Запити до адміністраторів',
'spamdetected': 'При редагуванні сторінки {PAGENAME} ' +
'автоматичний фільтр визначив ваш текст, як спам',
'blocked': 'Ви заблоковані у цій вікі. Спробуйте, будь ласка, пізніше',
'filtered': 'Автоматичний фільтр заборонив редагування сторінки {PAGENAME}',
'abusefilter-disallowed': 'Автоматичний фільтр заборонив редагування сторінки {PAGENAME}',
'notoken': 'Неможливо отримати токен. Зверніться, будь ласка, у «Кнайпу (адміністрування)»',
},
write_page: function(title, content, summary, section, success, timestamp, bot) {
var param = {
action: 'edit',
title: title,
summary: summary,
text: content,
watchlist: 'watch',
basetimestamp: timestamp,
bot: bot,
token: mw.user.tokens.get('editToken'),
format: 'json'
};
if (section || section === 0)
param.section = section;
console.log('API: ', param);
$.post(mw.util.wikiScript('api'), param).done( function(data) {
if (data.hasOwnProperty('edit') && data.edit.result == 'Success') {
success();
} else if (data.hasOwnProperty('edit') && data.edit.result == 'Failure') {
if(data.edit.hasOwnProperty('code')) {
var code = data.edit.code;
alert(utils.getattr(
wlib.EDIT_ERRORS, code,
'Невідома помилка при редагуванні сторінки {PAGENAME}. Відкиньте редагування, зроблені цим додатком за останні декілька секунд та спробуйте пізніше'
).replace('{PAGENAME}', title));
} else if(data.edit.hasOwnProperty(captcha)) {
alert('API Вікіпедії повернув капчу, яку цей додаток поки що не підтримує. Можливо ви занадто часто робите редагування? Спробуйте, будь ласка, через декілька хвилин');
}
}
});
},
get_last_page_revision: function(title, on_success) {
var param = {
action: 'query',
prop: 'revisions',
format: 'json',
rvprop: 'content|timestamp',
rvlimit: '1',
titles: title,
indexpageids: ''
};
$.get(mw.util.wikiScript('api'), param).done(function(data) {
on_success(data.query.pages[data.query.pageids[0]].revisions[0]);
});
},
};
console.log('Installed wlib');
}
if (typeof(window.utils) == 'undefined') {
window.utils = {
getattr: function(o, prop, def) {
if (o[prop] !== undefined) return o[prop];
else return def;
},
monthNames: [
"січня", "лютого",
"березня", "квітня", "травня",
"червня", "липня", "серпня",
"вересня", "жовтня", "листопада",
"грудня"
],
format_date: function(date) {
var day = date.getDate();
var monthIndex = date.getMonth();
var year = date.getFullYear();
return day + ' ' + utils.monthNames[monthIndex] + ' ' + year;
}
};
console.log('Installed utils');
}