Участник:Infovarius/qpreview.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.
if (wgAction == 'edit' || wgAction == 'submit') 
 addOnloadHook(addQPreviewButton);


function addQPreviewButton(){ 
 if (!window.qPreviewName) qPreviewName = 'QPreview';
 var accesskey = window.qPreviewKey || '';
 if (window.qPreviewAtBottom) 
   addSystemButton(qPreviewName, qPreview, 'btnQPreview', 'Quick Preview', accesskey);
 else
   addToolbarButton(qPreviewName, qPreview, 'btnQPreview', 'Quick Preview', accesskey);
}

function qPreview(){
 var divPreview = document.getElementById('wikiPreview');
 if (!divPreview) return;
 var btnQPreview = document.getElementById('btnQPreview');
 var btnWidth = Math.max(btnQPreview.scrollWidth, btnQPreview.offsetWidth);
 if (btnQPreview) btnQPreview.value = window.qPreviewWait || 'Wait...';
 btnQPreview.style.width = btnWidth + 'px';
 a = sajax_init_object();
 a.open('POST', document.editform.action+'&live', true);
 var Boundary = '--------p1415';
 a.setRequestHeader('Content-Type', 'multipart/form-data; boundary='+Boundary);
 var PostData = '--' + Boundary 
  + '\nContent-Disposition: form-data; name="wpTextbox1"\n\n'
  + document.getElementById('wpTextbox1').value + '\n--'+Boundary;
 if (a.overrideMimeType) a.overrideMimeType('text/html');
 a.send(PostData);
 a.onreadystatechange = function(){
  if (a.readyState != 4) return;
	var html = a.responseText;
	html = html.replace(/&gt;/g,'>').replace(/&lt;/g,'<').replace(/&quot;/g,'"').replace(/&amp;/g,'&').replace(/&apos;/g,"'");
	divPreview.innerHTML = html;
	if (btnQPreview)  btnQPreview.value =  qPreviewName;
 };
}

function addSystemButton(name, onclick, id, tooltip, accesskey){ 
	var wpPreview = document.getElementById('wpPreview');
	if (!wpPreview) return;
	var newBtn = document.createElement('input');
	newBtn.type = 'button'; 
	if (name) newBtn.value = name; 
	if (onclick) newBtn.onclick = onclick;
	if (id) newBtn.id = id;
	if (tooltip) newBtn.title = tooltip; 
	if (accesskey) { 
		newBtn.accessKey = accesskey; 
		newBtn.title += ' [' + tooltipAccessKeyPrefix + accesskey + ']';
	}	
	wpPreview.parentNode.insertBefore(newBtn, wpPreview);
	return newBtn;
}

//Adds a text button to edit toolbar
function addToolbarButton(name, onclick, id, tooltip, accesskey){
	var toolbar = document.getElementById('toolbar');
	if (!toolbar) return;
	var newBtn = document.createElement('input');
	newBtn.type = 'button'; 
	newBtn.style.background = '#adbede';
	newBtn.style.height = '22px'; 
	newBtn.style.verticalAlign = 'middle';
	if (name) newBtn.value = name; 
	if (onclick) newBtn.onclick = onclick;
	if (id) newBtn.id = id;
	if (tooltip) newBtn.title = tooltip; 
	if (accesskey) newBtn.accessKey = accesskey; 
	toolbar.appendChild(newBtn);
	return newBtn;
}