Mercurial > hg > extraction-interface
diff js/taggingtext.js @ 47:886f43b26ee2 extractapp
move/remove develop folder
author | Zoe Hong <zhong@mpiwg-berlin.mpg.de> |
---|---|
date | Tue, 17 Mar 2015 10:54:13 +0100 |
parents | |
children | b2c1fae5cf6a |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/js/taggingtext.js Tue Mar 17 10:54:13 2015 +0100 @@ -0,0 +1,898 @@ +// === for taggingtext.php === +var stringBeforeChange=""; +var stringBeforeChangeStack = []; +var lastAddTag=""; + +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 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 ) { + saveUndoText(); + lastAddTag = $('#TitletagType').val(); + var tag = "<"+$('#TitletagType').val()+">〈"+$('#TitletagName').val()+"〉</"+$('#TitletagType').val()+">"; + range.deleteContents(); + 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 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 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) { + return window.getSelection(); + } else if (document.getSelection) { + return document.getSelection(); + } else { + 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 + +} + +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).css("border", "1px solid black"); + $(newdiv).css("width", "100px"); + + $(newdiv).attr("class", "span_"+$("#smartRegexPopUpSelectTag").val()); + $(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")); + + + var _id = $(this).attr("id"); + var aa = document.getElementById(_id); + var name = aa.textContent; + + $('#smartRegexPopUpName').val(name); + // $('#smartRegexPopUpName').val($(this).html()); + // why there is a <span i="transmark"></span> inbetween? + + + $('#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(""); +} + +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"); +} +// === + + +// === 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 + } +} + + +// ============ +// + +