1CKEDITOR.dialog.add("tagsDialog",function(editor){var existingTags={};var lang=editor.lang.tags;var generateTags=function(){var content=editor.document.$.children[0].children[1].innerHTML.replace(/<[^<>]*>/g,"").replace(/&gt;/g,">");var tagregexp=(/\{\{tag>.*?\}\}/g);var matches=tagregexp.exec(content);var ele=[];var tagexists=function(name){if(matches!=null){eval("var wordmatch = /( |>)"+name.toUpperCase()+"( |})/g");for(var i=0;i<matches.length;i++){if(wordmatch.test(matches[i].toUpperCase())){return true}}return false}else{return false}};jQuery.ajax(DOKU_BASE+"lib/exe/ajax.php",{data:{call:"tagapi_list"},type:"POST",async:false,dataType:"json",success:function(data,textStatus,jqXHR){existingTags=data.tags},error:function(jqXHR,textStatus,errorThrown){alert(textStatus);alert(errorThrown)}});var curHBox={type:"hbox",children:[]};ele[ele.length]=curHBox;for(var i=0;i<existingTags.length;i++){curHBox.children[curHBox.children.length]={type:"checkbox",id:existingTags[i].id,label:existingTags[i].name,"default":existingTags[i].name==""?"":(tagexists(existingTags[i].id)?"checked":""),userdef:false};if(((i%5)==4)&&((i+1)<existingTags.length-1)){curHBox={type:"hbox",children:[]};ele[ele.length]=curHBox}}ele[ele.length]={type:"checkbox",id:"",label:"","default":"",userdef:false};var tmp=ele[ele.length-1];tmp.userdef=true;tmp.id="user_def_box";tmp.label=lang.customTags;ele[ele.length-1]={type:"vbox",children:[tmp,{type:"text",id:"user_def_text"}]};return ele};var d={title:lang.dlgTitle,minWidth:500,minHeight:200,contents:[{id:"tab-basic",label:"Settings",elements:generateTags()}],onOk:function(){var dialog=this;var codeB="{{tag>";var codeE="}}";var selected="";var dialog=this;for(var i=0;i<existingTags.length;i++){selected+=dialog.getValueOf("tab-basic",existingTags[i].id)?existingTags[i].id+" ":""}selected+=dialog.getValueOf("tab-basic","user_def_box")?dialog.getValueOf("tab-basic","user_def_text")+" ":"";selected=selected.replace(/\s+$/,"");editor.setData(editor.getData().replace(/\{\{tag&gt;.*?\}\}/g,"")+(selected==""?"":codeB+selected+codeE))}};return d});