Участник: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
	});
}