Файл: assets/markitup/jquery.markitup.js
Строк: 686
<?php
(function($){$.fn.markItUp=function(settings,extraSettings){var method,params,options,ctrlKey,shiftKey,altKey;ctrlKey=shiftKey=altKey=false;if(typeof settings=='string'){method=settings;params=extraSettings;}
options={id:'',nameSpace:'',root:'',previewHandler:false,previewInWindow:'',previewInElement:'',previewAutoRefresh:true,previewPosition:'after',previewTemplatePath:'~/templates/preview.html',previewParser:false,previewParserPath:'',previewParserVar:'data',resizeHandle:true,beforeInsert:'',afterInsert:'',onEnter:{},onShiftEnter:{},onCtrlEnter:{},onTab:{},markupSet:[{}]};$.extend(options,settings,extraSettings);if(!options.root){$('script').each(function(a,tag){miuScript=$(tag).get(0).src.match(/(.*)jquery.markitup(.pack)?.js$/);if(miuScript!==null){options.root=miuScript[1];}});}
var uaMatch=function(ua){ua=ua.toLowerCase();var match=/(chrome)[ /]([w.]+)/.exec(ua)||/(webkit)[ /]([w.]+)/.exec(ua)||/(opera)(?:.*version|)[ /]([w.]+)/.exec(ua)||/(msie) ([w.]+)/.exec(ua)||ua.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([w.]+)|)/.exec(ua)||[];return{browser:match[1]||"",version:match[2]||"0"};};var matched=uaMatch(navigator.userAgent);var browser={};if(matched.browser){browser[matched.browser]=true;browser.version=matched.version;}
if(browser.chrome){browser.webkit=true;}else if(browser.webkit){browser.safari=true;}
return this.each(function(){var $$,textarea,levels,scrollPosition,caretPosition,caretOffset,clicked,hash,header,footer,previewWindow,template,iFrame,abort;$$=$(this);textarea=this;levels=[];abort=false;scrollPosition=caretPosition=0;caretOffset=-1;options.previewParserPath=localize(options.previewParserPath);options.previewTemplatePath=localize(options.previewTemplatePath);if(method){switch(method){case'remove':remove();break;case'insert':markup(params);break;default:$.error('Method '+ method+' does not exist on jQuery.markItUp');}
return;}
function localize(data,inText){if(inText){return data.replace(/("|')~//g,"$1"+options.root);}
return data.replace(/^~//,options.root);}
function init(){id='';nameSpace='';if(options.id){id='id="'+options.id+'"';}else if($$.attr("id")){id='id="markItUp'+($$.attr("id").substr(0,1).toUpperCase())+($$.attr("id").substr(1))+'"';}
if(options.nameSpace){nameSpace='class="'+options.nameSpace+'"';}
$$.wrap('<div '+nameSpace+'></div>');$$.wrap('<div '+id+' class="markItUp"></div>');$$.wrap('<div class="markItUpContainer"></div>');$$.addClass("markItUpEditor");header=$('<div class="markItUpHeader"></div>').insertBefore($$);$(dropMenus(options.markupSet)).appendTo(header);footer=$('<div class="markItUpFooter"></div>').insertAfter($$);if(options.resizeHandle===true&&browser.safari!==true){resizeHandle=$('<div class="markItUpResizeHandle"></div>').insertAfter($$).bind("mousedown.markItUp",function(e){var h=$$.height(),y=e.clientY,mouseMove,mouseUp;mouseMove=function(e){$$.css("height",Math.max(20,e.clientY+h-y)+"px");return false;};mouseUp=function(e){$("html").unbind("mousemove.markItUp",mouseMove).unbind("mouseup.markItUp",mouseUp);return false;};$("html").bind("mousemove.markItUp",mouseMove).bind("mouseup.markItUp",mouseUp);});footer.append(resizeHandle);}
$$.bind('keydown.markItUp',keyPressed).bind('keyup',keyPressed);$$.bind("insertion.markItUp",function(e,settings){if(settings.target!==false){get();}
if(textarea===$.markItUp.focused){markup(settings);}});$$.bind('focus.markItUp',function(){$.markItUp.focused=this;});if(options.previewInElement){refreshPreview();}}
function dropMenus(markupSet){var ul=$('<ul></ul>'),i=0;$('li:hover > ul',ul).css('display','block');$.each(markupSet,function(){var button=this,t='',title,li,j;title=(button.key)?(button.name||'')+' [Ctrl+'+button.key+']':(button.name||'');key=(button.key)?'accesskey="'+button.key+'"':'';if(button.separator){li=$('<li class="markItUpSeparator">'+(button.separator||'')+'</li>').appendTo(ul);}else{i++;for(j=levels.length-1;j>=0;j--){t+=levels[j]+"-";}
li=$('<li class="markItUpButton markItUpButton'+t+(i)+' '+(button.className||'')+'"><a href="" '+key+' title="'+title+'">'+(button.name||'')+'</a></li>').bind("contextmenu.markItUp",function(){return false;}).bind('click.markItUp',function(e){e.preventDefault();}).bind("focusin.markItUp",function(){$$.focus();}).bind('mouseup',function(){if(button.call){eval(button.call)();}
setTimeout(function(){markup(button)},1);return false;}).bind('mouseenter.markItUp',function(){$('> ul',this).show();$(document).one('click',function(){$('ul ul',header).hide();});}).bind('mouseleave.markItUp',function(){$('> ul',this).hide();}).appendTo(ul);if(button.dropMenu){levels.push(i);$(li).addClass('markItUpDropMenu').append(dropMenus(button.dropMenu));}}});levels.pop();return ul;}
function magicMarkups(string){if(string){string=string.toString();string=string.replace(/(!(([sS]*?))!)/g,function(x,a){var b=a.split('|!|');if(altKey===true){return(b[1]!==undefined)?b[1]:b[0];}else{return(b[1]===undefined)?"":b[0];}});string=string.replace(/[![([sS]*?)]!]/g,function(x,a){var b=a.split(':!:');if(abort===true){return false;}
value=prompt(b[0],(b[1])?b[1]:'');if(value===null){abort=true;}
return value;});return string;}
return"";}
function prepare(action){if($.isFunction(action)){action=action(hash);}
return magicMarkups(action);}
function build(string){var openWith=prepare(clicked.openWith);var placeHolder=prepare(clicked.placeHolder);var replaceWith=prepare(clicked.replaceWith);var closeWith=prepare(clicked.closeWith);var openBlockWith=prepare(clicked.openBlockWith);var closeBlockWith=prepare(clicked.closeBlockWith);var multiline=clicked.multiline;if(replaceWith!==""){block=openWith+ replaceWith+ closeWith;}else if(selection===''&&placeHolder!==''){block=openWith+ placeHolder+ closeWith;}else{string=string||selection;var lines=[string],blocks=[];if(multiline===true){lines=string.split(/r?n/);}
for(var l=0;l<lines.length;l++){line=lines[l];var trailingSpaces;if(trailingSpaces=line.match(/ *$/)){blocks.push(openWith+ line.replace(/ *$/g,'')+ closeWith+ trailingSpaces);}else{blocks.push(openWith+ line+ closeWith);}}
block=blocks.join("n");}
block=openBlockWith+ block+ closeBlockWith;return{block:block,openBlockWith:openBlockWith,openWith:openWith,replaceWith:replaceWith,placeHolder:placeHolder,closeWith:closeWith,closeBlockWith:closeBlockWith};}
function markup(button){var len,j,n,i;hash=clicked=button;get();$.extend(hash,{line:"",root:options.root,textarea:textarea,selection:(selection||''),caretPosition:caretPosition,ctrlKey:ctrlKey,shiftKey:shiftKey,altKey:altKey});prepare(options.beforeInsert);prepare(clicked.beforeInsert);if((ctrlKey===true&&shiftKey===true)||button.multiline===true){prepare(clicked.beforeMultiInsert);}
$.extend(hash,{line:1});if((ctrlKey===true&&shiftKey===true)){lines=selection.split(/r?n/);for(j=0,n=lines.length,i=0;i<n;i++){if($.trim(lines[i])!==''){$.extend(hash,{line:++j,selection:lines[i]});lines[i]=build(lines[i]).block;}else{lines[i]="";}}
string={block:lines.join('n')};start=caretPosition;len=string.block.length+((browser.opera)?n-1:0);}else if(ctrlKey===true){string=build(selection);start=caretPosition+ string.openWith.length;len=string.block.length- string.openWith.length- string.closeWith.length;len=len-(string.block.match(/ $/)?1:0);len-=fixIeBug(string.block);}else if(shiftKey===true){string=build(selection);start=caretPosition;len=string.block.length;len-=fixIeBug(string.block);}else{string=build(selection);start=caretPosition+ string.block.length;len=0;start-=fixIeBug(string.block);}
if((selection===''&&string.replaceWith==='')){caretOffset+=fixOperaBug(string.block);start=caretPosition+ string.openBlockWith.length+ string.openWith.length;len=string.block.length- string.openBlockWith.length- string.openWith.length- string.closeWith.length- string.closeBlockWith.length;caretOffset=$$.val().substring(caretPosition,$$.val().length).length;caretOffset-=fixOperaBug($$.val().substring(0,caretPosition));}
$.extend(hash,{caretPosition:caretPosition,scrollPosition:scrollPosition});if(string.block!==selection&&abort===false){insert(string.block);set(start,len);}else{caretOffset=-1;}
get();$.extend(hash,{line:'',selection:selection});if((ctrlKey===true&&shiftKey===true)||button.multiline===true){prepare(clicked.afterMultiInsert);}
prepare(clicked.afterInsert);prepare(options.afterInsert);if(previewWindow&&options.previewAutoRefresh){refreshPreview();}
shiftKey=altKey=ctrlKey=abort=false;}
function fixOperaBug(string){if(browser.opera){return string.length- string.replace(/n*/g,'').length;}
return 0;}
function fixIeBug(string){if(browser.msie){return string.length- string.replace(/r*/g,'').length;}
return 0;}
function insert(block){if(document.selection){var newSelection=document.selection.createRange();newSelection.text=block;}else{textarea.value=textarea.value.substring(0,caretPosition)+ block+ textarea.value.substring(caretPosition+ selection.length,textarea.value.length);}}
function set(start,len){if(textarea.createTextRange){if(browser.opera&&browser.version>=9.5&&len==0){return false;}
range=textarea.createTextRange();range.collapse(true);range.moveStart('character',start);range.moveEnd('character',len);range.select();}else if(textarea.setSelectionRange){textarea.setSelectionRange(start,start+ len);}
textarea.scrollTop=scrollPosition;textarea.focus();}
function get(){textarea.focus();scrollPosition=textarea.scrollTop;if(document.selection){selection=document.selection.createRange().text;if(browser.msie){var range=document.selection.createRange(),rangeCopy=range.duplicate();rangeCopy.moveToElementText(textarea);caretPosition=-1;while(rangeCopy.inRange(range)){rangeCopy.moveStart('character');caretPosition++;}}else{caretPosition=textarea.selectionStart;}}else{caretPosition=textarea.selectionStart;selection=textarea.value.substring(caretPosition,textarea.selectionEnd);}
return selection;}
function preview(){if(typeof options.previewHandler==='function'){previewWindow=true;}else if(options.previewInElement){previewWindow=$(options.previewInElement);}else if(!previewWindow||previewWindow.closed){if(options.previewInWindow){previewWindow=window.open('','preview',options.previewInWindow);$(window).unload(function(){previewWindow.close();});}else{iFrame=$('<iframe class="markItUpPreviewFrame"></iframe>');if(options.previewPosition=='after'){iFrame.insertAfter(footer);}else{iFrame.insertBefore(header);}
previewWindow=iFrame[iFrame.length- 1].contentWindow||frame[iFrame.length- 1];}}else if(altKey===true){if(iFrame){iFrame.remove();}else{previewWindow.close();}
previewWindow=iFrame=false;}
if(!options.previewAutoRefresh){refreshPreview();}
if(options.previewInWindow){previewWindow.focus();}}
function refreshPreview(){renderPreview();}
function renderPreview(){var phtml;if(options.previewHandler&&typeof options.previewHandler==='function'){options.previewHandler($$.val());}else if(options.previewParser&&typeof options.previewParser==='function'){var data=options.previewParser($$.val());writeInPreview(localize(data,1));}else if(options.previewParserPath!==''){$.ajax({type:'POST',dataType:'text',global:false,url:options.previewParserPath,data:options.previewParserVar+'='+encodeURIComponent($$.val()),success:function(data){writeInPreview(localize(data,1));}});}else{if(!template){$.ajax({url:options.previewTemplatePath,dataType:'text',global:false,success:function(data){writeInPreview(localize(data,1).replace(/<!-- content -->/g,$$.val()));}});}}
return false;}
function writeInPreview(data){if(options.previewInElement){$(options.previewInElement).html(data);}else if(previewWindow&&previewWindow.document){try{sp=previewWindow.document.documentElement.scrollTop}catch(e){sp=0;}
previewWindow.document.open();previewWindow.document.write(data);previewWindow.document.close();previewWindow.document.documentElement.scrollTop=sp;}}
function keyPressed(e){shiftKey=e.shiftKey;altKey=e.altKey;ctrlKey=(!(e.altKey&&e.ctrlKey))?(e.ctrlKey||e.metaKey):false;if(e.type==='keydown'){if(ctrlKey===true){li=$('a[accesskey="'+((e.keyCode==13)?'\n':String.fromCharCode(e.keyCode))+'"]',header).parent('li');if(li.length!==0){ctrlKey=false;setTimeout(function(){li.triggerHandler('mouseup');},1);return false;}}
if(e.keyCode===13||e.keyCode===10){if(ctrlKey===true){ctrlKey=false;markup(options.onCtrlEnter);return options.onCtrlEnter.keepDefault;}else if(shiftKey===true){shiftKey=false;markup(options.onShiftEnter);return options.onShiftEnter.keepDefault;}else{markup(options.onEnter);return options.onEnter.keepDefault;}}
if(e.keyCode===9){if(shiftKey==true||ctrlKey==true||altKey==true){return false;}
if(caretOffset!==-1){get();caretOffset=$$.val().length- caretOffset;set(caretOffset,0);caretOffset=-1;return false;}else{markup(options.onTab);return options.onTab.keepDefault;}}}}
function remove(){$$.unbind(".markItUp").removeClass('markItUpEditor');$$.parent('div').parent('div.markItUp').parent('div').replaceWith($$);$$.data('markItUp',null);}
init();});};$.fn.markItUpRemove=function(){return this.each(function(){$(this).markItUp('remove');});};$.markItUp=function(settings){var options={target:false};$.extend(options,settings);if(options.target){return $(options.target).each(function(){$(this).focus();$(this).trigger('insertion',[options]);});}else{$('textarea').trigger('insertion',[options]);}};})(jQuery);
?>