भारत की संस्कृति के लिए... भाषा की उन्नति के लिए... साहित्य के प्रसार के लिए
"मीडियाविकि:Common.js" के अवतरणों में अंतर
Kavita Kosh से
Lalit Kumar (चर्चा | योगदान) |
Lalit Kumar (चर्चा | योगदान) |
||
| पंक्ति 205: | पंक्ति 205: | ||
////////////////////////////////////////////////////////////////////// | ////////////////////////////////////////////////////////////////////// | ||
| + | |||
| + | //Cite Popups | ||
| + | |||
| + | function findPosition(indx) { | ||
| + | /* This function is based on code obtained from: | ||
| + | http://www.softcomplex.com/docs/ | ||
| + | get_window_size_and_scrollbar_position.html */ | ||
| + | |||
| + | var dir = { | ||
| + | 'clientWidth' : 'innerWidth', | ||
| + | 'clientHeight' : 'innerHeight', | ||
| + | 'scrollLeft' : 'pageXOffset', | ||
| + | 'scrollTop' : 'pageYOffset' | ||
| + | }; | ||
| + | |||
| + | var qarr = [ | ||
| + | window[dir[indx]] ? window[dir[indx]] : 0, | ||
| + | document.documentElement ? document.documentElement[indx] : 0, | ||
| + | document.body ? document.body[indx] : 0 | ||
| + | ]; | ||
| + | |||
| + | qarr.sort(function(a, b) {return a - b}); | ||
| + | while(qarr[0] == 0) { qarr.shift() } | ||
| + | return qarr.length ? qarr[0] : 0; | ||
| + | } | ||
| + | |||
| + | function showFootnote(evnt) { | ||
| + | var e = window.event ? window.event : evnt; | ||
| + | var obj = window.event ? window.event.srcElement : evnt.target; | ||
| + | |||
| + | // Is this link a ref tag | ||
| + | if(obj.tagName != "A") return; | ||
| + | if(!obj.hash) return; | ||
| + | if(obj.hash.substr(0,11) != "#cite_note-") return; | ||
| + | if(obj.parentNode.className != "reference") return; | ||
| + | |||
| + | // Is there a footnote to display? | ||
| + | // Someone may have forgotten the <references/> tag | ||
| + | var footnote_id = obj.hash.substr(1); | ||
| + | if(!document.getElementById(footnote_id)) return; | ||
| + | |||
| + | // Good, hide the popup, if it isn't already hidden | ||
| + | if(footnote.style.visibility != "hidden") { resetFootnote() } | ||
| + | |||
| + | // Fetch the footnote text and remove the unnecessary back link(s) | ||
| + | // This is a little messy as there's no containing tags | ||
| + | var fn_text = document.getElementById(footnote_id).innerHTML; | ||
| + | fn_text = fn_text.replace(/^.*<a[^>]*href="#cite_ref-.*?<\/a> */i, ""); // " | ||
| + | |||
| + | // Insert the footnote text | ||
| + | footnote.innerHTML = fn_text; | ||
| + | |||
| + | // Decide where to put the popup | ||
| + | var window_width = findPosition('clientWidth'); | ||
| + | var window_height = findPosition('clientHeight'); | ||
| + | |||
| + | var horizontal_position = e.clientX; | ||
| + | var vertical_position = e.clientY; | ||
| + | |||
| + | var horizontal = findPosition('scrollLeft') + horizontal_position; | ||
| + | var vertical = findPosition('scrollTop') + vertical_position; | ||
| + | |||
| + | var footnote_width = footnote.offsetWidth; | ||
| + | var footnote_height = footnote.offsetHeight; | ||
| + | |||
| + | if(window_height - vertical_position < footnote_height) { | ||
| + | footnote.style.top = ""; | ||
| + | footnote.style.bottom = (window_height - vertical - 13) + "px"; | ||
| + | } else { | ||
| + | footnote.style.top = (vertical - 13) + "px"; | ||
| + | footnote.style.bottom = ""; | ||
| + | } | ||
| + | |||
| + | if(window_width - horizontal_position > footnote_width) { | ||
| + | footnote.style.left = (horizontal - 13) + "px"; | ||
| + | footnote.style.right = ""; | ||
| + | } else { | ||
| + | footnote.style.left = ""; | ||
| + | footnote.style.right = (window_width - horizontal - 13) + "px"; | ||
| + | } | ||
| + | |||
| + | //Make the popup visible | ||
| + | footnote.style.visibility = "visible"; | ||
| + | } | ||
| + | |||
| + | function hideFootnote(evnt) { | ||
| + | var obj = window.event ? window.event.srcElement : evnt.target; | ||
| + | |||
| + | // No point in going on if popup is already hidden | ||
| + | if(footnote.style.visibility == "hidden") return; | ||
| + | |||
| + | // Search the tree to see where the curser is | ||
| + | var depth = 0; // no need to search too much | ||
| + | while(obj && obj.parentNode && depth < 5) { | ||
| + | if(obj.id == "footnote" || obj.id.substr(0, 9) == "cite_ref-") { return; } | ||
| + | obj = obj.parentNode; | ||
| + | depth++; | ||
| + | } | ||
| + | |||
| + | resetFootnote(); | ||
| + | } | ||
| + | |||
| + | function resetFootnote() { | ||
| + | footnote.style.visibility = "hidden"; | ||
| + | footnote.style.left = 0; | ||
| + | footnote.style.top = 0; | ||
| + | footnote.style.right = "auto"; | ||
| + | footnote.style.bottom = "auto"; | ||
| + | } | ||
| + | |||
| + | // Set up the float element | ||
| + | var footnote = document.createElement("DIV"); | ||
| + | footnote.id = "footnote"; | ||
| + | footnote.style.position = "absolute"; | ||
| + | footnote.style.zIndex = 500; | ||
| + | footnote.style.border = "1px solid black"; | ||
| + | footnote.style.backgroundColor = "lightyellow"; | ||
| + | footnote.style.maxWidth = "450px"; | ||
| + | footnote.style.textAlign = "justify"; | ||
| + | footnote.style.padding = "5px"; | ||
| + | footnote.style.fontSize = "10pt"; | ||
| + | resetFootnote(); | ||
| + | |||
| + | document.body.appendChild(footnote); | ||
| + | |||
| + | // Add events | ||
| + | addHandler(document, "mouseover", showFootnote); | ||
| + | addHandler(document, "mousemove", hideFootnote); | ||
| + | |||
| + | |||
| + | |||
| + | //////////////////////////////////////////////////////////// | ||
23:38, 6 सितम्बर 2016 का अवतरण
if ( mw.toolbar ) {
mw.toolbar.addButton( {
"imageFile": "http://www.kavitakosh.org/kk/images/c/cd/Button_poem.png",
"speedTip": "Poem tag",
"tagOpen": "<poem>",
"tagClose": "</poem>",
"sampleText": "रचना यहाँ टाइप करें"
} );
mw.toolbar.addButton( {
"imageFile": "http://upload.wikimedia.org/wikipedia/en/c/c8/Button_redirect.png",
"speedTip": "Redirect",
"tagOpen": "#REDIRECT [[",
"tagClose": "]]",
"sampleText": "Insert text"
} );
}
/* ***************************************************************************
Function to insert text in a textarea (may be on click of a link or button
*************************************************************************** */
function insertAtCaret(areaId,text) {
var txtarea = document.getElementById(areaId);
var scrollPos = txtarea.scrollTop;
var strPos = 0;
var br = ((txtarea.selectionStart || txtarea.selectionStart == '0') ?
"ff" : (document.selection ? "ie" : false ) );
if (br == "ie") {
txtarea.focus();
var range = document.selection.createRange();
range.moveStart ('character', -txtarea.value.length);
strPos = range.text.length;
}
else if (br == "ff") strPos = txtarea.selectionStart;
var front = (txtarea.value).substring(0,strPos);
var back = (txtarea.value).substring(strPos,txtarea.value.length);
txtarea.value=front+text+back;
strPos = strPos + text.length;
if (br == "ie") {
txtarea.focus();
var range = document.selection.createRange();
range.moveStart ('character', -txtarea.value.length);
range.moveStart ('character', strPos);
range.moveEnd ('character', 0);
range.select();
}
else if (br == "ff") {
txtarea.selectionStart = strPos;
txtarea.selectionEnd = strPos;
txtarea.focus();
}
txtarea.scrollTop = scrollPos;
}
/* *************************************************************************** */
/* ***************************************************************************
Functions for transliteration
*************************************************************************** */
function decideLipi(rootEl){
var curkklipi=getCookie("kklipi");
var defaultkklipi="hi";
if (curkklipi=="en"){walkTheDomAndTranslit(rootEl);}
else{setCookie("kklipi",defaultkklipi,365);}
}
function walkTheDomAndTranslit(rootEl){
var rootnode=document.getElementById(rootEl);
var walker=document.createTreeWalker(rootnode, NodeFilter.SHOW_TEXT, null, false);
while (walker.nextNode()){
var tstr=unicode2itrans(walker.currentNode.textContent);
walker.currentNode.textContent=tstr;
}
var tButton=document.getElementById('translitButton');
tButton.innerHTML="देवनागरी में बदलें";
tButton.onclick = function() {setCookie('kklipi', 'hi'); window.location.reload();};
setCookie('kklipi', 'en');
}
function unicode2itrans(strText){
var array_one = new Array( "आ", "ऑ", "अ", "ई", "इ", "ऊ", "उ", "ऋ", "ए", "ऐ", "ओ", "औ","ा", "ि", "ी", "ु", "ू", "ृ", "े", "ै", "ो", "ौ", "ं", "ँ", ":", "्", "ऽ", "ॉ","क़", "ख़", "ग़", "ज़", "ड़", "ढ़", "फ़","क", "ख", "ग", "घ", "ङ", "च", "छ", "ज", "झ", "ञ", "ट", "ठ", "ड", "ढ", "ण","त", "थ", "द", "ध", "न", "प", "फ", "ब", "भ", "म","य", "र", "ल", "व", "श", "ष", "स", "ह","Z.hY", "ZY", "ZV", "aV", "V", "W", "Y", "Z","०", "१", "२", "३", "४", "५", "६", "७", "८", "९", "।", "ॐ" );
var array_two= new Array( "VaaW", "Vaa.uW", "VaW", "VeeW", "ViW", "VooW", "VuW", "VRRiW", "VeW", "VaiW", "VoW", "VauW","aa", "i", "ee", "u", "oo", "Ri", "e", "ai", "o", "au", ".n", ".N", "aH", ".h", ".a", " aa.u","YqZ", "YKhZ", "YGZ", "YzZ", " Y.DZ", "Y.DhZ", "YfZ", "YkZ", "YkhZ", "YgZ", "YghZ", "Y~NZ", "YchZ", "YchhZ", "YjZ", "YjhZ", "Y~nZ", "YTZ", "YThZ", "YDZ", "YDhZ", "YNZ","YtZ", "YthZ", "YdZ", "YdhZ", "YnZ", "YpZ", "YphZ", "YbZ", "YbhZ", "YmZ","YyZ", "YrZ", "YlZ", "YvZ", "YshZ", "YShZ", "YsZ", "YhZ","", "a", "a_", "a_", "", "", "", "","0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ".", "OM" );
text2BProcessed = strText;
for (ctr=0; ctr < 95; ctr++){
var idx = 0;
while ( idx != -1 ){
text2BProcessed = text2BProcessed.replace(array_one[ctr] , array_two[ctr]);
idx = text2BProcessed.indexOf(array_one[ctr]);}
}
return text2BProcessed;
}
function setCookie(cname,cvalue,exdays){
var d = new Date();
d.setTime(d.getTime()+(exdays*24*60*60*1000));
var expires = "expires="+d.toGMTString();
document.cookie = cname+"="+cvalue+"; "+expires;
}
function getCookie(cname){
var name = cname + "=";
var ca = document.cookie.split(';');
for(var i=0; i<ca.length; i++){
var c = ca[i].trim();
if (c.indexOf(name)==0) return c.substring(name.length,c.length);
}
return "";
}
/* *************************************************************************** */
//Call function to decide which lipi is to be used for displaying the page.
$(function() {
decideLipi('globalWrapper');
});
// This function opens a page based on the value of option selected by user from a SELECT html dropdown box
function gotoPageOnSelect(wrapperElement, selectElement){
var wrapperElement=document.getElementById(wrapperElement);
var selectedOption=document.getElementById(selectElement).value;
if (selectedOption!="") {
var baseloc = "http://kavitakosh.org/kk/";
wrapperElement.innerHTML=""
wrapperElement.innerHTML="लोडिंग... ";
self.location.href=baseloc+selectedOption;
}
}
////////////////////////////
// To float anchor list in Rachnakaaro Ki Soochi
var $poetAnchorsExistRef = $('#poet-list-anchors-container');
$(document).ready( function() {
if($poetAnchorsExistRef.length){
$('#poet-list-anchors').addClass('visible');
}
} );
// To togle the anchor list visibility
$(document).ready(function(){
$("#poet-list-letter-set-toggle").click(function(){
$("#poet-list-letter-set").toggle(400);
});
$('#poet-list-letter-set a').click(function(){
$('html, body').animate({
scrollTop: $( $(this).attr('href') ).offset().top
}, 500);
return false;
});
});
////////////////////////////
//for multi-lingual transliteration
var srcText = ""; //keep it global
var targetEl = '.poem p';
var trgScript = "";
if ( $(targetEl).length) { $( "#mtransbtnDiv" ).css("display", "inline-block");}
else{$( "#mtransbtnDiv").css("display", "none");}
function convert(t) {
trgScript = t;
if(t ==="x"){if(srcText != ""){$(targetEl).css("font-size", "16px"); $(targetEl).html(srcText);} return;}
if(srcText === ""){srcText = $(targetEl).html();}
$(targetEl).html("<i class='fa fa-refresh fa-spin fa-3x fa-fw'></i><span class='sr-only'>लोडिंग...</span>");
var pData = {"TextToConvert" : srcText, "srcScript": 1, "trgScript": trgScript};
jQuery.ajax({
url: "http://kavitakosh.org/kk/otherapps/transliteration/convertAjax.php",
data: pData,
type: "POST",
success:function(data){$(targetEl).html(data);}
});
}
jQuery(document).ajaxStop(function() {
trgFontSize = "16px;"
switch(trgScript) {
case 0: trgFontSize = "16px"; break; //roman
case 2: trgFontSize = "16px"; break; //diacritic
case 3: trgFontSize = "16px"; break; //ipa
case 4: trgFontSize = "16px"; break; //gujarati
case 5: trgFontSize = "16px"; break; //gurumukhi
case 6: trgFontSize = "16px"; break; //bangla
}
$(targetEl).css("font-size", trgFontSize);
});
//////////////////////////////////////////////////////////////////////
//Cite Popups
function findPosition(indx) {
/* This function is based on code obtained from:
http://www.softcomplex.com/docs/
get_window_size_and_scrollbar_position.html */
var dir = {
'clientWidth' : 'innerWidth',
'clientHeight' : 'innerHeight',
'scrollLeft' : 'pageXOffset',
'scrollTop' : 'pageYOffset'
};
var qarr = [
window[dir[indx]] ? window[dir[indx]] : 0,
document.documentElement ? document.documentElement[indx] : 0,
document.body ? document.body[indx] : 0
];
qarr.sort(function(a, b) {return a - b});
while(qarr[0] == 0) { qarr.shift() }
return qarr.length ? qarr[0] : 0;
}
function showFootnote(evnt) {
var e = window.event ? window.event : evnt;
var obj = window.event ? window.event.srcElement : evnt.target;
// Is this link a ref tag
if(obj.tagName != "A") return;
if(!obj.hash) return;
if(obj.hash.substr(0,11) != "#cite_note-") return;
if(obj.parentNode.className != "reference") return;
// Is there a footnote to display?
// Someone may have forgotten the <references/> tag
var footnote_id = obj.hash.substr(1);
if(!document.getElementById(footnote_id)) return;
// Good, hide the popup, if it isn't already hidden
if(footnote.style.visibility != "hidden") { resetFootnote() }
// Fetch the footnote text and remove the unnecessary back link(s)
// This is a little messy as there's no containing tags
var fn_text = document.getElementById(footnote_id).innerHTML;
fn_text = fn_text.replace(/^.*<a[^>]*href="#cite_ref-.*?<\/a> */i, ""); // "
// Insert the footnote text
footnote.innerHTML = fn_text;
// Decide where to put the popup
var window_width = findPosition('clientWidth');
var window_height = findPosition('clientHeight');
var horizontal_position = e.clientX;
var vertical_position = e.clientY;
var horizontal = findPosition('scrollLeft') + horizontal_position;
var vertical = findPosition('scrollTop') + vertical_position;
var footnote_width = footnote.offsetWidth;
var footnote_height = footnote.offsetHeight;
if(window_height - vertical_position < footnote_height) {
footnote.style.top = "";
footnote.style.bottom = (window_height - vertical - 13) + "px";
} else {
footnote.style.top = (vertical - 13) + "px";
footnote.style.bottom = "";
}
if(window_width - horizontal_position > footnote_width) {
footnote.style.left = (horizontal - 13) + "px";
footnote.style.right = "";
} else {
footnote.style.left = "";
footnote.style.right = (window_width - horizontal - 13) + "px";
}
//Make the popup visible
footnote.style.visibility = "visible";
}
function hideFootnote(evnt) {
var obj = window.event ? window.event.srcElement : evnt.target;
// No point in going on if popup is already hidden
if(footnote.style.visibility == "hidden") return;
// Search the tree to see where the curser is
var depth = 0; // no need to search too much
while(obj && obj.parentNode && depth < 5) {
if(obj.id == "footnote" || obj.id.substr(0, 9) == "cite_ref-") { return; }
obj = obj.parentNode;
depth++;
}
resetFootnote();
}
function resetFootnote() {
footnote.style.visibility = "hidden";
footnote.style.left = 0;
footnote.style.top = 0;
footnote.style.right = "auto";
footnote.style.bottom = "auto";
}
// Set up the float element
var footnote = document.createElement("DIV");
footnote.id = "footnote";
footnote.style.position = "absolute";
footnote.style.zIndex = 500;
footnote.style.border = "1px solid black";
footnote.style.backgroundColor = "lightyellow";
footnote.style.maxWidth = "450px";
footnote.style.textAlign = "justify";
footnote.style.padding = "5px";
footnote.style.fontSize = "10pt";
resetFootnote();
document.body.appendChild(footnote);
// Add events
addHandler(document, "mouseover", showFootnote);
addHandler(document, "mousemove", hideFootnote);
////////////////////////////////////////////////////////////
