Mercurial > hg > extraction-interface
view js/taggingtext.js @ 57:5cf9720a2e25 extractapp
New: add reloadText to load the latest version
author | Zoe Hong <zhong@mpiwg-berlin.mpg.de> |
---|---|
date | Mon, 30 Mar 2015 17:23:47 +0200 |
parents | f9e7119339b2 |
children | 3395385476d1 |
line wrap: on
line source
// === for taggingtext.php === var stringBeforeChange=""; var stringBeforeChangeStack = []; var lastAddTag=""; var regex_element_index = 0; window.onbeforeunload = function() { return "Are you sure?"; }; /* $(document).on("mouseup", function (e) { e.stopPropagation(); $('.questionMarkClass').remove(); $('.tagItemDivClass').remove(); alert("Remove"); }); $(document).on("click", '.questionMarkClass', function (e) { e.stopPropagation(); }); */ function tagTime() { saveUndoText(); var el = document.getElementById("editable-area"); var str="" + el.innerHTML; var regexText=/(<?php echo $wordlistArray[0][2]; ?>)(○?)(一|二|三|四|五|六|七|八|九)?(○?)(十)?(○?)(一|二|三|四|五|六|七|八|九|元|十)(○?)(年)/g; var replaceText="<time>$1$2$3$4$5$6$7$8$9</time>"; var matchedCount = str.match(regexText).length; str = str.replace(regexText, replaceText); var regexText=/(?!(>))(<?php echo $wordlistArray[0][2]; ?>)/g; var replaceText="<time>$1$2</time>"; matchedCount += str.match(regexText).length; el.innerHTML = str.replace(regexText, replaceText); var regexText=/(一|二|三|四|五|六|七|八|九)?(○?)(十)?(○?)(一|二|三|四|五|六|七|八|九|元|十)(○?)(年)(?!(<))/g; var replaceText="<time>$1$2$3$4$5$6$7</time>"; matchedCount += str.match(regexText).length; el.innerHTML = str.replace(regexText, replaceText); alert( "Tagged "+matchedCount+" entities!" ); } function removeTagNewDiv( eventObject, tagName, tagObject ) { saveUndoText(); var newdiv = document.createElement("div"); newdiv.id = "questionMarkId"; newdiv.setAttribute("class", "questionMarkClass"); newdiv.style.cssText = 'top:'+eventObject.pageY+'; left:'+eventObject.pageX+'; position:absolute; background-color: white; border:1px solid black; padding: 5px'; newdiv.innerHTML = "Tag: "+tagName+"<br>Value: "+tagObject.text()+"<br>"; var newbutton = $('<button>Remove this</button>').mouseup(function (e2) { var textKeep = $(this).parent().parent().html(); var regexText=/<div(.*?)<\/div>/g; var replaceText=""; textKeep = textKeep.replace(regexText, replaceText); $(this).parent().parent().replaceWith( textKeep ); }); newbutton.appendTo(newdiv); var newbutton = $('<button>Remove this(with newline)</button>').mouseup(function (e2) { var textKeep = $(this).parent().parent().html(); var regexText=/<div(.*?)<\/div>/g; var replaceText=""; textKeep = textKeep.replace(regexText, replaceText); var newLineBefore = $(this).parent().parent().prev(); if ( newLineBefore.prop("tagName") == "BR" ) { $(this).parent().parent().prev().replaceWith( ); } $(this).parent().parent().replaceWith( textKeep ); }); newbutton.appendTo(newdiv); var newbutton = $('<button>Remove all</button>').mouseup(function (e2) { var textKeep = $(this).parent().parent().html(); var regexText=/<div(.*?)<\/div>/g; var replaceText=""; textKeep = textKeep.replace(regexText, replaceText); $(this).parent().parent().replaceWith( textKeep ); var el = document.getElementById("editable-area"); var regexText=new RegExp("<"+tagName+">("+textKeep+")</"+tagName+">", "g"); var replaceText="$1"; var str="" + el.innerHTML; if ( str.match(regexText)==null ) { alert( "Removed 1 entity!" ); } else { alert( "Removed "+(parseInt(str.match(regexText).length)+1)+" entities!" ); } el.innerHTML = str.replace(regexText, replaceText); }); newbutton.appendTo(newdiv); var newbutton = $('<button>Remove all(with newline)</button>').mouseup(function (e2) { var textKeep = $(this).parent().parent().html(); var regexText=/<div(.*?)<\/div>/g; var replaceText=""; textKeep = textKeep.replace(regexText, replaceText); $(this).parent().remove(); var el = document.getElementById("editable-area"); var regexText=new RegExp("<br><"+tagName+">("+textKeep+")</"+tagName+">", "g"); var replaceText="$1"; var str="" + el.innerHTML; alert( "Removed "+str.match(regexText).length+" entities!" ); el.innerHTML = str.replace(regexText, replaceText); }); newbutton.appendTo(newdiv); tagObject.append(newdiv); } function removeEmptyNodes( node ) { if (node.hasChildNodes()) { var children = node.childNodes; for (var i = 0; i < children.length; i++) { if (children[i].textContent == "" && children[i].innerHTML == "" && children[i].nodeName != "BR") { //console.log("removing child: "+children[i].nodeName+", its parent: "+node.nodeName); node.removeChild(children[i]); } else { //console.log("recursive to "+children[i].nodeName+"("+children[i].textContent+")") removeEmptyNodes(children[i]); // recursive } }; } else { //console.log(node.nodeName+" ("+node.textContent+") has no childNodes."); } } function removeTagTitle( range, container ) { saveUndoText(); range.deleteContents(); lastAddTag = $('#RemoveTitletagType').val(); var stringtemp = container.innerHTML; if ( $('#RemoveTitletagName').val() == "" ) { var regexText="<"+lastAddTag+">〈(.*?)〉</"+lastAddTag+">"; var replaceText=""; stringtemp = stringtemp.replace(new RegExp(regexText, "g"), replaceText); var regexText="<"+lastAddTag+">(.*?)</"+lastAddTag+">"; var replaceText="$1"; stringtemp = stringtemp.replace(new RegExp(regexText, "g"), replaceText); } else { var regexText="<"+lastAddTag+">〈"+$('#RemoveTitletagName').val()+"〉</"+lastAddTag+">"; var replaceText=""; stringtemp = stringtemp.replace(new RegExp(regexText, "g"), replaceText); var regexText="<"+lastAddTag+">("+$('#RemoveTitletagName').val()+")</"+lastAddTag+">"; var replaceText="$1"; stringtemp = stringtemp.replace(new RegExp(regexText, "g"), replaceText); } var newdiv = document.createElement("aaaa"); newdiv.innerHTML = stringtemp; range.insertNode(newdiv); var el = document.getElementById("editable-area"); var regexText=/<aaaa>/gi; var replaceText=''; el.innerHTML = el.innerHTML.replace(regexText, replaceText); var regexText=/<\/aaaa>/gi; var replaceText=''; el.innerHTML = el.innerHTML.replace(regexText, replaceText); $('.tagItemDivClass').remove(); } function addTagTitle( range, container ) { // TODO: bug: here generate self-closing tag when the end of text with tag on it saveUndoText(); var el = document.getElementById("editable-area"); lastAddTag = $('#TitletagType').val(); var tag = "<"+$('#TitletagType').val()+">〈"+$('#TitletagName').val()+"〉</"+$('#TitletagType').val()+">"; range.deleteContents(); // may causes self-closing tag var stringtemp = container.innerHTML; var regexText=/<br>/g; var replaceText="<br>"+tag; stringtemp = stringtemp.replace(regexText, replaceText); var newdiv = document.createElement("aaaa"); newdiv.innerHTML = tag+stringtemp; range.insertNode(newdiv); var regexText=/<aaaa>/gi; var replaceText=''; el.innerHTML = el.innerHTML.replace(regexText, replaceText); var regexText=/<\/aaaa>/gi; var replaceText=''; el.innerHTML = el.innerHTML.replace(regexText, replaceText); $('.tagItemDivClass').remove(); removeEmptyNodes(el); // removing self-closing tags } function cleanUpTextArea() { var el = document.getElementById("editable-area"); var regexText=/<div>/gi; var replaceText='<br>'; el.innerHTML = el.innerHTML.replace(regexText, replaceText); var regexText=/<\/div>/gi; var replaceText=''; el.innerHTML = el.innerHTML.replace(regexText, replaceText); var regexText=/<span style="(.*?)">/gi; var replaceText=''; el.innerHTML = el.innerHTML.replace(regexText, replaceText); var regexText=/<\/span>/gi; var replaceText=''; el.innerHTML = el.innerHTML.replace(regexText, replaceText); } function Undo() { if ( stringBeforeChangeStack.length > 0 ) { var el = document.getElementById("editable-area"); el.innerHTML = stringBeforeChangeStack.pop(); } else { var el = document.getElementById("buttonUndo"); el.disabled = true; } } function saveUndoText() { var el = document.getElementById("editable-area"); //stringBeforeChange = el.innerHTML; stringBeforeChangeStack.push(el.innerHTML); var el = document.getElementById("buttonUndo"); el.disabled = false; } function editText() { var el = document.getElementById("editable-area"); if ( $("#editTextId").html() == "Edit the text" ) { saveUndoText(); el.contentEditable = true; $("button").attr("disabled", true); $("#editTextId").attr("disabled", false); $("#editTextId").html("Edit completed!"); } else { el.contentEditable = false; cleanUpTextArea(); $("button").attr("disabled", false); $("#editTextId").html("Edit the text"); } } function saveText(section_id) { var el = document.getElementById("editable-area"); $.ajax({ url : './'+section_id, async : false, type : 'POST', data : 'func=SaveFullText'+'&text='+encodeURIComponent(el.innerHTML)+'&filename='+section_id, // data : 'func=SaveFullText'+'&text='+el.innerHTML+'&filename='+section_id success: function (e) { alert("Saved!"); }, error: function (e) { alert("Haven't saved!"); } }).done(function(result) { }); } function preg_quote (str, delimiter) { // http://kevin.vanzonneveld.net // + original by: booeyOH // + improved by: Ates Goral (http://magnetiq.com) // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) // + bugfixed by: Onno Marsman // + improved by: Brett Zamir (http://brett-zamir.me) // * example 1: preg_quote("$40"); // * returns 1: '\$40' // * example 2: preg_quote("*RRRING* Hello?"); // * returns 2: '\*RRRING\* Hello\?' // * example 3: preg_quote("\\.+*?[^]$(){}=!<>|:"); // * returns 3: '\\\.\+\*\?\[\^\]\$\(\)\{\}\=\!\<\>\|\:' return (str + '').replace(new RegExp('[.\\\\+*?\\[\\^\\]$(){}=!<>|:\\' + (delimiter || '') + '-]', 'g'), '\\$&'); } function replaceRegex() { saveUndoText(); var startPage = $('#regexPageStart2').val(); var endPage = $('#regexPageEnd2').val(); var el = document.getElementById("editable-area"); var str="" + el.innerHTML; var regexText=document.getElementById("regexText").value; var replaceText=document.getElementById("replaceText").value; var str="" + el.innerHTML; if ( startPage == "" ) { alert( "Tagged "+str.match(new RegExp(regexText, "g")).length+" entities!" ); el.innerHTML = str.replace(new RegExp(regexText, "g"), replaceText); } else { var regexText2="【<a([^<>]*?)>"+startPage+"</a>】(.*?)【<a([^<>]*?)>"+endPage+"</a>】"; var partString = ""+str.match(new RegExp(regexText2, "g")); alert(partString); alert( "Tagged "+partString.match(new RegExp(regexText, "g")).length+" entities!" ); var resultString = partString.replace(new RegExp(regexText, "g"), replaceText); str="" + el.innerHTML; el.innerHTML = str.replace(new RegExp(regexText, "g"), resultString); } //document.styleSheets[0].addRule("tag001", "color:green;") } //Tagging Items function getSelected() { if(window.getSelection) { // all browsers, except IE before version 9 return window.getSelection(); } else if (document.getSelection) { return document.getSelection(); } else { // IE var selection = document.selection && document.selection.createRange(); if(selection.text) { return selection.text; } return false; } return false; } function tagStringWithTag( stringValue, tag ) { saveUndoText(); var el = document.getElementById("editable-area"); var regexText="("+String(stringValue)+")"; if ( tag=="person") { var replaceText="<br><"+tag+">$1</"+tag+">"; } else { var replaceText="<"+tag+">$1</"+tag+">"; } var str="" + el.innerHTML; $('.tagItemDivClass').remove(); alert( "Tagged "+str.match(new RegExp(regexText, "g")).length+" entities!" ); el.innerHTML = str.replace(new RegExp(regexText, "g"), replaceText); } function tagwithtitle( range, stringSelection ) { saveUndoText(); range.deleteContents(); //var newdiv = document.createElement("br"); //range.insertNode(newdiv); range.insertNode(document.createTextNode("〈"+stringSelection+"〉")); var newdiv = document.createElement("br"); range.insertNode(newdiv); $('.tagItemDivClass').remove(); } function tagNameWithLastName() { saveUndoText(); var el = document.getElementById("editable-area"); var regexText=/(○|】|^)(王|李|張|趙|劉|陳|楊|吳|黃|黄|朱|孫|郭|胡|呂|高|宋|徐|程|林|鄭|范|何|韓|曹|馬|許|田|馮|杜|周|曾|汪|蘇|董|方|蔡|梁|石|謝|賈|薛|彭|崔|唐|潘|鄧|史|錢|侯|魏|羅|葉|沈|孟|姚|傅|丁|章|蕭|蔣|盧|陸|袁|晁|譚|邵|歐陽|孔|詹|俞|尹|廖|閻|洪|夏|雷|葛|文|柳|陶|毛|丘|龔|蒲|邢|郝|龐|安|裴|折|施|游|金|鄒|湯|虞|嚴|鍾)([^○(舉人|縣人|歲貢|間任)]{1,3}|○[^○])(?=(○|$))/g; var replaceText="$1<br><person>$2$3</person>$4"; var str="" + el.innerHTML; alert( "Tagged "+str.match(regexText).length+" entities!" ); el.innerHTML = str.replace(regexText, replaceText); } function tagNameWithLastName2() { saveUndoText(); var el = document.getElementById("editable-area"); var regexText="(○|】|^)("+$('#surname').val()+")([^○(舉人|縣人|歲貢|間任)]{1,3}|○[^○])(?=(○|$))"; var replaceText="$1<br><person>$2$3</person>$4"; var str="" + el.innerHTML; alert( "Tagged "+str.match(new RegExp(regexText, "g")).length+" entities!" ); el.innerHTML = str.replace(new RegExp(regexText, "g"), replaceText); } function tagBiogAddr() { saveUndoText(); var el = document.getElementById("editable-area"); var str="" + el.innerHTML; var regexText=/(○)([^○]{1,6})(○?)(人)/g; var replaceText="$1<biog_addr>$2</biog_addr>$3$4"; el.innerHTML = str.replace(regexText, replaceText); alert( "Tagged "+str.match(regexText).length+" entities!" ); } function smartRegexNew() { $('#smartRegexPopUpDiv').css("display", "block"); $('#smartRegexPopUpDiv').css("background-color", "White"); $('#smartRegexPopUpDiv').css("width", "400px"); $('#smartRegexPopUpDiv').css("height", "300px"); $('#smartRegexPopUpDiv').css("top", "170px"); $('#smartRegexPopUpDiv').css("left", "-400px"); $('#smartRegexPopUpDiv').css("border", "1px solid black"); $('#smartRegexPopUpDiv').css("padding", "5px"); $('#smartRegexPopUpAdd').attr("disabled", false); $('#smartRegexPopUpEdit').attr("disabled", "disabled"); $('#smartRegexPopUpDel').attr("disabled", "disabled"); $('#smartRegexPopUpBack').attr("disabled", "disabled"); $('#smartRegexPopUpFor').attr("disabled", "disabled"); } function replaceSmartClose() { $('#smartRegexPopUpDiv').css("display", "none"); $("#smartRegexPopUpSelectWord").val("NULL"); $("#smartRegexPopUpText").val(""); $("#smartRegexPopUpName").val(""); } function replaceSmartEdit(){ thisObject = $('#smartRegexPopUpDiv').attr("editID"); $('#smartRegexShowDiv > #'+thisObject).attr("class", "span_"+$("#smartRegexPopUpSelectTag").val()); $('#smartRegexShowDiv > #'+thisObject).attr("regexText", $("#smartRegexPopUpText").val()); $('#smartRegexShowDiv > #'+thisObject).attr("regexReplace", $("#smartRegexPopUpSelectTag").val()); $('#smartRegexShowDiv > #'+thisObject).text($("#smartRegexPopUpName").val()); // smartRgextPopUpName.val() is the name of this regex // id should be the same as it was } function replaceSmartDel() { thisObject = $('#smartRegexPopUpDiv').attr("editID"); $('#smartRegexShowDiv > #'+thisObject).remove(); } function replaceSmartFor() { thisObject = $('#smartRegexPopUpDiv').attr("editID"); //var wahaha = $('#'+thisObject).clone(); //var hahawa = $('#'+thisObject).next(); //$('#'+thisObject).remove(); //wahaha.insertAfter(hahawa); $('#smartRegexShowDiv > #'+thisObject).insertAfter( $('#'+thisObject).next() ); } function replaceSmartBack() { thisObject = $('#smartRegexPopUpDiv').attr("editID"); //var wahaha = $('#'+thisObject).clone(); //var hahawa = $('#'+thisObject).prev(); //$('#'+thisObject).remove(); //wahaha.insertBefore(hahawa); $('#smartRegexShowDiv > #'+thisObject).insertBefore( $('#'+thisObject).prev() ); } function replaceSmartAdd() { var newdiv = document.createElement("span"); //newdiv.innerHTML = " "+$("#smartRegexPopUpName").val()+" "; //newdiv.innerHTML = $("#smartRegexPopUpName").val(); $(newdiv).text($("#smartRegexPopUpName").val()); $(newdiv).css("border", "1px solid black"); $(newdiv).css("width", "100px"); $(newdiv).attr("class", "span_"+$("#smartRegexPopUpSelectTag").val()); // id is the name from user's input, which dose not guarantee to be unique // id should be unique regex_element_index += 1; $(newdiv).attr("id", "regex_elem_"+regex_element_index); // $(newdiv).attr("id", "span_"+$("#smartRegexPopUpName").val()); $(newdiv).attr("regexText", $("#smartRegexPopUpText").val()); $(newdiv).attr("regexReplace", $("#smartRegexPopUpSelectTag").val()); $('#smartRegexShowDiv').append(newdiv); replaceSmartClose(); } $(document).on("click", '#smartRegexShowDiv > span', function (e) { $('#smartRegexPopUpDiv').css("display", "block"); $('#smartRegexPopUpDiv').css("background-color", "White"); $('#smartRegexPopUpDiv').css("width", "400px"); $('#smartRegexPopUpDiv').css("height", "300px"); $('#smartRegexPopUpDiv').css("top", "100px"); $('#smartRegexPopUpDiv').css("left", "-400px"); $('#smartRegexPopUpDiv').css("border", "1px solid black"); //$('#smartRegexPopUpDiv').css("padding", "5px"); $('#smartRegexPopUpDiv').attr("editID", $(this).attr("id")); $('#smartRegexPopUpName').val($(this).text()); // $('#smartRegexPopUpName').val($(this).html()); $('#smartRegexPopUpText').val($(this).attr("regexText")); $('#smartRegexPopUpSelectTag').val($(this).attr("regexReplace")); $('#smartRegexPopUpAdd').attr("disabled", "disabled"); $('#smartRegexPopUpEdit').attr("disabled", false); $('#smartRegexPopUpDel').attr("disabled", false); $('#smartRegexPopUpBack').attr("disabled", false); $('#smartRegexPopUpFor').attr("disabled", false); }); function smartRegexEmpty() { $('#smartRegexShowDiv').html(""); regex_element_index = 0; } function replaceSmartRunWithBr() { var replaceSmartRegexString = ""; var replaceSmartReplaceString = ""; var count=1; saveUndoText(); $('#smartRegexShowDiv').children('span').each(function () { replaceSmartRegexString += "(" + $(this).attr("regexText") + ")"; if ( $(this).attr("regexReplace") == "notag" || $(this).attr("regexReplace") == "NOTAG") { replaceSmartReplaceString += "$" + count; } else if ( $(this).attr("regexReplace") == "title" ) { replaceSmartReplaceString += "<br>〈" + "$" + count + "〉<br>"; } else { // with <br> before replaceSmartReplaceString += "<br><" + $(this).attr("regexReplace") + ">" + "$" + count + "</"+ $(this).attr("regexReplace") +">"; } count++; }); var startPage = $('#regexPageStart').val(); var endPage = $('#regexPageEnd').val(); var el = document.getElementById("editable-area"); var str="" + el.innerHTML; if ( startPage == "" ) { alert( "Tagged "+str.match(new RegExp(replaceSmartRegexString, "g")).length+" entities!" ); el.innerHTML = str.replace(new RegExp(replaceSmartRegexString, "g"), replaceSmartReplaceString); } else { var regexText="【<a([^<>]*?)>"+startPage+"</a>】(.*?)【<a([^<>]*?)>"+endPage+"</a>】"; var partString = ""+str.match(new RegExp(regexText, "g")); alert(partString); alert( "Tagged "+partString.match(new RegExp(replaceSmartRegexString, "g")).length+" entities!" ); var resultString = partString.replace(new RegExp(replaceSmartRegexString, "g"), replaceSmartReplaceString); str="" + el.innerHTML; el.innerHTML = str.replace(new RegExp(regexText, "g"), resultString); } } function replaceSmartRun() { var replaceSmartRegexString = ""; var replaceSmartReplaceString = ""; var count=1; saveUndoText(); $('#smartRegexShowDiv').children('span').each(function () { replaceSmartRegexString += "(" + $(this).attr("regexText") + ")"; if ( $(this).attr("regexReplace") == "notag" || $(this).attr("regexReplace") == "NOTAG" ) { replaceSmartReplaceString += "$" + count; } else if ( $(this).attr("regexReplace") == "title" ) { replaceSmartReplaceString += "<br>〈" + "$" + count + "〉<br>"; } else { replaceSmartReplaceString += "<" + $(this).attr("regexReplace") + ">" + "$" + count + "</"+ $(this).attr("regexReplace") +">"; } count++; }); var startPage = $('#regexPageStart').val(); var endPage = $('#regexPageEnd').val(); var el = document.getElementById("editable-area"); var str="" + el.innerHTML; if ( startPage == "" ) { alert( "Tagged "+str.match(new RegExp(replaceSmartRegexString, "g")).length+" entities!" ); el.innerHTML = str.replace(new RegExp(replaceSmartRegexString, "g"), replaceSmartReplaceString); } else { var regexText="【<a([^<>]*?)>"+startPage+"</a>】(.*?)【<a([^<>]*?)>"+endPage+"</a>】"; var partString = ""+str.match(new RegExp(regexText, "g")); alert(partString); alert( "Tagged "+partString.match(new RegExp(replaceSmartRegexString, "g")).length+" entities!" ); var resultString = partString.replace(new RegExp(replaceSmartRegexString, "g"), replaceSmartReplaceString); str="" + el.innerHTML; el.innerHTML = str.replace(new RegExp(regexText, "g"), resultString); } } function replaceSmartRunSpace() { var replaceSmartRegexString = ""; var replaceSmartReplaceString = ""; var count=1; saveUndoText(); $('#smartRegexShowDiv').children('span').each(function () { //alert($(this).attr("regexText")); replaceSmartRegexString += "(" + $(this).attr("regexText") + ")(○*)"; if ( $(this).attr("regexReplace") == "notag" || $(this).attr("regexReplace") == "NOTAG") { replaceSmartReplaceString += "$" + count; } else if ( $(this).attr("regexReplace") == "title" ) { replaceSmartReplaceString += "<br>〈" + "$" + count + "〉<br>"; } else { replaceSmartReplaceString += "<" + $(this).attr("regexReplace") + ">" + "$" + count + "</"+ $(this).attr("regexReplace") +">"; } count++; replaceSmartReplaceString += "$" + count; count++; }); var startPage = $('#regexPageStart').val(); var endPage = $('#regexPageEnd').val(); var el = document.getElementById("editable-area"); var str="" + el.innerHTML; if ( startPage == "" ) { alert( "Tagged "+str.match(new RegExp(replaceSmartRegexString, "g")).length+" entities!" ); el.innerHTML = str.replace(new RegExp(replaceSmartRegexString, "g"), replaceSmartReplaceString); } else { var regexText="【<a([^<>]*?)>"+startPage+"</a>】(.*?)【<a([^<>]*?)>"+endPage+"</a>】"; var partString = ""+str.match(new RegExp(regexText, "g")); alert(partString); alert( "Tagged "+partString.match(new RegExp(replaceSmartRegexString, "g")).length+" entities!" ); var resultString = partString.replace(new RegExp(replaceSmartRegexString, "g"), replaceSmartReplaceString); str="" + el.innerHTML; el.innerHTML = str.replace(new RegExp(regexText, "g"), resultString); } //alert( "Tagged "+str.match(new RegExp(replaceSmartRegexString, "g")).length+" entities!" ); //el.innerHTML = str.replace(new RegExp(replaceSmartRegexString, "g"), replaceSmartReplaceString); } function smartRegexSave(topic_id) { console.log("topic_id"+topic_id); var name=prompt("Please enter this Regex name",RegexLoadedName); if (name!=null){ $.ajax({ type : 'POST', url : './TaggingText', async : false, data : 'func=SmartRegexSave'+'&text='+encodeURIComponent($('#smartRegexShowDiv').html())+'&filename='+name+'&topic_id='+topic_id, error: function (result) { alert("Error"); }, success: function (result) { var obj = jQuery.parseJSON(result); if (obj == "ErrorDB") { alert("Error when saving to database!!"); } else if (obj == "ForceSave") { var retVal = confirm("You will over write the previous regex file. Do you want to proceed?"); if( retVal == true ){ // update regex file $.ajax({ type : 'POST', url : './TaggingText', async : false, data : 'func=SmartRegexSave'+'&text='+encodeURIComponent($('#smartRegexShowDiv').html())+'&filename='+name+'&topic_id='+topic_id+'&forcesave=1', error: function (result) { alert("Error"); }, success: function (result) { alert("Update regex file."); } }); }else{ alert("You have not saved the regex file."); } } else { alert("Saved!"); } } }).done(function(result) { }); } } function smartRegexLoad(topic_id) { $('#load_regex_div').html(""); $('#load_regex_div').css("display", "block"); $('#load_regex_div').css("border", "1px solid black"); $('#load_regex_div').css("background-color", "White"); $('#load_regex_div').css("width", "300px"); $('#load_regex_div').css("height", "70px"); $('#load_regex_div').css("top", "100px"); $('#load_regex_div').css("left", "-300px"); var newselect = document.createElement("select"); newselect.id = "loadRegexSelect"; $.ajax({ type: 'POST', url: './TaggingText', dataType: 'json', data: "func=SmartRegexLoad&topic_id="+topic_id, //cache: false, success: function (data) { $.each(data, function(index, element) { // index is the filename (without '.txt') // element is the content in the file newselect.innerHTML += "<option value=\""+index+"\">"+index+"</option>\n"; //alert(index); //alert(element); var newdiv = document.createElement("div"); $(newdiv).css("display", "none"); $(newdiv).html(element); $(newdiv).attr("id", "div_"+index); $('#load_regex_div').append(newdiv); }); }, error: function (data) { console.log("SmartRegexLoad fails"); } }); /* $.ajax({ type: 'POST', url: '../models/_extractapp_func.php', dataType: 'json', data: "func=SmartRegexLoad", //cache: false, success: function (data) { $.each(data, function(index, element) { newselect.innerHTML += "<option value=\""+index+"\">"+index+"</option>\n"; //alert(index); //alert(element); var newdiv = document.createElement("div"); $(newdiv).css("display", "none"); $(newdiv).html(element); $(newdiv).attr("id", "div_"+index); $('#load_regex_div').append(newdiv); }); }, error: function (data) { console.log("SmartRegexLoad fails"); } }); */ $('#load_regex_div').append(newselect); var newbutton = document.createElement("button"); $(newbutton).html("Load"); $(newbutton).addClass("btn btn-info"); $(newbutton).attr("onclick", "loadRegexAdd()"); $('#load_regex_div').append(newbutton); var newbutton = document.createElement("button"); $(newbutton).html("Close"); $(newbutton).addClass("btn btn-default"); $(newbutton).attr("onclick", "$('#load_regex_div').css(\"display\", \"none\");"); $('#load_regex_div').append(newbutton); } var RegexLoadedName = ""; function loadRegexAdd() { RegexLoadedName = $('#loadRegexSelect').val(); var divName = "#div_"+RegexLoadedName; var name = $(divName).html(); $('#smartRegexShowDiv').html(name); $('#load_regex_div').css("display", "none"); // get the largest regex element index in the regex file // for all children (span) in #smartRegexShowDiv, find MAX(id) var regex_elem = $('#smartRegexShowDiv').children(); var max_id = 0; for (var i = 0; i < regex_elem.length; i++) { var r_id = parseInt(regex_elem[i].id.slice(11)); // cut the first 11 char out: "regex_elem_" if (r_id > max_id) { max_id = r_id; } } regex_element_index = max_id; } // === // === for editwordlist.php === function addNewList() { var el = document.getElementById("listNameText"); $.ajax({ //url : '../../models/_extractapp_func.php', url : './EditWordlist', async : false, type : 'POST', data : 'func=AddNewList'+'&text='+el.value, success: function (e) { alert("Added!"); document.location.reload(true); }, error: function (e) { console.log("error when add new list"); alert("Haven't added new list!!"); } }).done(function(result) { }); } function saveWordlist(id ) { var el = document.getElementById("editable-area"); $.ajax({ url : './EditWordlist', async : false, type : 'POST', data : 'func=SaveWordlist'+'&text='+el.innerHTML+'&filename='+id, success: function (e) { alert("Saved!"); }, error: function (e) { alert("Haven't saved!"); } }).done(function(result) { }); } function editWordlistText( id ) { var el = document.getElementById("editable-area"); el.contentEditable = true; } function replaceRegex() { var el = document.getElementById("editable-area"); var regexText=document.getElementById("regexText").value; var replaceText=document.getElementById("replaceText").value; var str="" + el.innerHTML; el.innerHTML = str.replace(new RegExp(regexText, "g"), replaceText); } function showListContent( id ) { var xhr = new XMLHttpRequest(); xhr.onreadystatechange = process; xhr.open("POST", "../data/wordlist/"+id+".txt?t=" + Math.random(), true); // TODO: should show the latest wordlist file. eg. id_timestamp.txt, rather than open the original id.txt file xhr.send(); function process() { if (xhr.readyState == 4) { var el = document.getElementById("editable-area"); var str = xhr.responseText var regexText=/\n/g; var replaceText="<br>\n"; el.innerHTML = str.replace(regexText, replaceText); document.getElementById("button-area").innerHTML= "<form action=\"javascript:void(0);\"> \ <fieldset><legend>Edit:</legend> \ <button id=\"buttonEditText\" onclick=\"editWordlistText("+id+")\" style=\"height: 30px; width: 220px\">Edit the text</button></br> \ <button id=\"buttonSaveText\" onclick=\"saveWordlist("+id+")\" style=\"height: 30px; width: 220px\">Save the text</button> \ </fieldset> \ <fieldset><legend>Replace By Regex:</legend> \ Regex: <input type=\"text\" size=\"30\" id=\"regexText\"></br> \ Replace: <input type=\"text\" size=\"30\" id=\"replaceText\"><br> \ <button onclick=\"replaceRegex()\">Replace!</button> \ </fieldset> \ </form>"; } } } // ============ // === for edittaglist.php === function editTaglist(topic_id) { var form = document.createElement("form"); form.setAttribute("method", "post"); form.setAttribute("action", "./EditTaglist"); form.setAttribute("target", "_blank"); var hiddenField = document.createElement("input"); hiddenField.setAttribute("name", "topic_id"); hiddenField.setAttribute("value", topic_id); form.appendChild(hiddenField); if(navigator.userAgent.toLowerCase().indexOf('firefox') > -1) { document.body.appendChild(form); form.submit(); } else { form.submit(); // works under IE and Chrome, but not FF } } // ============ //