Участник:Applsdev/YA2Wgeo.js
Замечание: Возможно, после публикации вам придётся очистить кэш своего браузера, чтобы увидеть изменения.
- Firefox / Safari: Удерживая клавишу Shift, нажмите на панели инструментов Обновить либо нажмите Ctrl+F5 или Ctrl+R (⌘+R на Mac)
- Google Chrome: Нажмите Ctrl+Shift+R (⌘+Shift+R на Mac)
- Internet Explorer / Edge: Удерживая Ctrl, нажмите Обновить либо нажмите Ctrl+F5
- Opera: Нажмите Ctrl+F5.
// Конвертер Ya2W_geo
// Описание см. этой обсуждение страницы
//Скрипт редактирования для Википедии. Конвертирует выделенную строку шаблона
// с координатами Яндекс.карты в формат шаблона с заполненными полями координат
/* Пример:
Есть выделение:
http://maps.yandex.ru/?text=Россия,%20Самарская%20область,%20поселок%20Безенчук&sll=49.435871,52.981823&sspn=0.175746,0.079547sll=50.111575,53.432535&sspn=0.175746,0.078711
Получается выделение:
|lat_deg = 52.981823
|lon_deg = 49.435871
|CoordAddon = source:yandexmaps
|CoordScale =
*/
//Часть кода позаимствована из http://ru.wikipedia.org/wiki/MediaWiki:Wikificator.js
var wmCantWork = 'Конвертер Ya2W_geo не может работать в вашем браузере\n\nConverter Ya2W_geo can not work in your browser'
// template syntax
var wLatDeg = '\n |lat_deg = '
var wLonDeg = '\n |lon_deg = '
var wAdd = '\n |CoordAddon = '
var wScale = '\n |CoordScale = '
var wAddtxt = '' //'type:city_region:RU-KHA_source:yandexmaps'; - NIY
function Ya2W_geo(){
var txt='',
wpTextbox1 = document.editform.wpTextbox1;
var winScroll = document.documentElement.scrollTop
// Check regexp support
try {
txt = 'ая'.replace(/а/g, 'б').replace(/б(?=я)/, 'в');
}
catch (e) {}
if (txt !== 'вя') {
alert(wmCantWork);
return;
}
wpTextbox1.focus();
// Modern browsers
if (typeof wpTextbox1.selectionStart !== 'undefined') {
var textScroll = wpTextbox1.scrollTop,
startPos = wpTextbox1.selectionStart,
endPos = wpTextbox1.selectionEnd;
txt = wpTextbox1.value.substring(startPos, endPos);
if (txt === '') {
return;
}
else {
processText();
wpTextbox1.value = wpTextbox1.value.substring(0, startPos) + txt + wpTextbox1.value.substring(endPos);
}
wpTextbox1.selectionStart = startPos;
wpTextbox1.selectionEnd = startPos + txt.length;
wpTextbox1.scrollTop = textScroll;
}
// IE
else if (document.selection && document.selection.createRange) {
var range = document.selection.createRange();
txt = range.text;
if (txt === '') {
return;
}
else {
processText();
range.text = txt;
if (range.moveStart) {
range.moveStart('character', -txt.length);
}
range.select();
}
}
// Other browsers
else {
alert(wmCantWork);
}
document.documentElement.scrollTop = winScroll; // scroll back, for IE/Opera
//functions
function processText(){
if(v=txt.match(/&sll=([^&]+)/)){ // Если данные из базы (sll=), то подставить источник
wAddtxt = 'source:yandexmaps'
}
else{
v=txt.match(/[&\?]?[s]?ll=([^&]+)/) // catch coordinates более универсальный?
wAddtxt = ''
}
if (v){
v=decodeURIComponent(v[1]).split(','); // split coord
txt=wLatDeg +v[1]+wLonDeg+v[0]+wAdd+wAddtxt+wScale; // make template //Параметр яндекс.карты отменили, но как АИ он нужен. ИмеюМненье... Теперь для ссылки используем source:yandexmaps
}
}
}
// End Ya2W_geo
/*
if (window.wgMWSuggestTemplate && (wgAction=='edit' || wgAction=='submit'))
addOnloadHook(Yandex_Geo_2_Wiki_Button)
function Yandex_Geo_2_Wiki_Button(){
var tlb = document.getElementById('toolbar')
if (!tlb) return
var btn = document.createElement('input'); btn.type = 'button'
btn.style.cssText = 'background:#adbede; height:22px; vertical-align:middle; padding:0'
btn.value = 'Я2W'; btn.title = 'Конвертер координат Яндекс.карты → вики-код'
btn.onclick = Ya2W_geo; btn.id = 'convYa2W_geo'
tlb.appendChild(btn)
if (window.es_accesskey){
btn.accessKey = es_accesskey
btn.title += ' ['+es_accesskey+']'
updateTooltipAccessKeys([btn])
}
}
*/
var addToolbarButtonsUrl = '//en.wikipedia.org/w/index.php?title='
+ 'User:V111P/js/addToolbarButtons.js&action=raw&ctype=text/javascript';
// Backlink: [[User:V111P/js/addToolbarButtons.js]]
var myToolbarButton = {
id: 'ConvYa2W_geo_Button',
tooltip: 'Конвертер координат Яндекс.карты → вики-код',
callback: function () {Ya2W_geo()},
iconUrl: '//upload.wikimedia.org/wikipedia/commons/c/cb/Ya2W_Button.png',
iconUrlClassic: '//upload.wikimedia.org/wikipedia/commons/6/6c/Ya2W_Button_Classic.png'
};
if (mw.libs.addToolbarButtons)
mw.libs.addToolbarButtons(myToolbarButton);
else {
var tbs = window.toolbarButtonsToAdd = window.toolbarButtonsToAdd || [];
tbs.push(myToolbarButton);
$.ajax({
url: addToolbarButtonsUrl,
dataType: 'script',
cache: true
});
}