Mercurial > hg > extraction-interface
diff develop/js/taggingtext.js @ 6:63e08b98032f
rewrite extraction interface into PHP MVC architecture.
(Although js hasn't been rewritten into MVC, it's fitted into the current PHP MVC architecture.)
- The root of the new PHP MVC is at 'develop/'.
- extraction interface is called "Extractapp" with several action, eg TaggingText, EditWordlist, EditTaglist, ExportTable.
author | Zoe Hong <zhong@mpiwg-berlin.mpg.de> |
---|---|
date | Thu, 05 Feb 2015 16:07:53 +0100 |
parents | |
children | da10158c6d0a |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/develop/js/taggingtext.js Thu Feb 05 16:07:53 2015 +0100 @@ -0,0 +1,835 @@ +// === 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(); + 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 + }).done(function(result) { + alert("Saved!"); + }); + +} + +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 tagwithOnlytag( range, stringSelection, tag ) { + saveUndoText(); + + range.deleteContents(); + if ( tag=="person2") { + var newdiv = document.createElement("person"); + newdiv.innerHTML = stringSelection; + range.insertNode(newdiv); + var newdiv = document.createElement("br"); + range.insertNode(newdiv); + } else { + var newdiv = document.createElement(tag); + newdiv.innerHTML = stringSelection; + 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", "100px"); + $('#smartRegexPopUpDiv').css("left", "-200px"); + $('#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()); +} + +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", "-200px"); + $('#smartRegexPopUpDiv').css("border", "1px solid black"); + $('#smartRegexPopUpDiv').css("padding", "5px"); + + $('#smartRegexPopUpDiv').attr("editID", $(this).attr("id")); + + $('#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(""); +} + +function replaceSmartRun() { + + var replaceSmartRegexString = ""; + var replaceSmartReplaceString = ""; + var count=1; + + saveUndoText(); + + $('#smartRegexShowDiv').children('span').each(function () { + replaceSmartRegexString += "(" + $(this).attr("regexText") + ")"; + if ( $(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" ) { + 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() { + var x; + var name=prompt("Please enter this Regex name",RegexLoadedName); + if (name!=null){ + $.ajax({ + type : 'POST', + url : '../../models/_extractapp_func.php', + async : false, + data : 'func=SmartRegexSave'+'&text='+encodeURIComponent($('#smartRegexShowDiv').html())+'&filename='+name + }).done(function(result) { + alert("Saved!"); + }); + } +} + +function smartRegexLoad(section_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", "200px"); + $('#load_regex_div').css("height", "150px"); + $('#load_regex_div').css("top", "100px"); + $('#load_regex_div').css("left", "-200px"); + + var newselect = document.createElement("select"); + newselect.id = "loadRegexSelect"; + + + $.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).attr("onclick", "loadRegexAdd()"); + $('#load_regex_div').append(newbutton); + var newbutton = document.createElement("button"); + $(newbutton).html("Close"); + $(newbutton).attr("onclick", "$('#load_regex_div').css(\"display\", \"none\");"); + $('#load_regex_div').append(newbutton); +} + +var RegexLoadedName = ""; +function loadRegexAdd() { + RegexLoadedName = $('#loadRegexSelect').val(); + var divName = "div_"+$('#loadRegexSelect').val(); + $('#smartRegexShowDiv').html( $('#'+divName).html() ); + $('#load_regex_div').css("display", "none"); +} +// === + +// === for exporttable.php === +function exportTable( range, container ) { + //MsgBox("enter function"); + var form = document.createElement("form"); + form.setAttribute("method", "post"); + form.setAttribute("action", "exportTable.php"); + form.setAttribute("target", "_blank"); + + var hiddenField = document.createElement("input"); + hiddenField.setAttribute("name", "content"); + hiddenField.setAttribute("value", container.innerHTML); + form.appendChild(hiddenField); + + var hiddenField = document.createElement("input"); + hiddenField.setAttribute("name", "sectionid"); + hiddenField.setAttribute("value", "<?php echo $section_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 + } +} + +function exportPage() { + var startPage = $('#exportPageStart').val(); + var endPage = $('#exportPageEnd').val(); + + var el = document.getElementById("editable-area"); + var str="" + el.innerHTML; + + var regexText="【<a([^<>]*?)>"+startPage+"</a>】(.*?)【<a([^<>]*?)>"+endPage+"</a>】"; + + var form = document.createElement("form"); + form.setAttribute("method", "post"); + form.setAttribute("action", "exportTable.php"); + form.setAttribute("target", "_blank"); + + var hiddenField = document.createElement("input"); + hiddenField.setAttribute("name", "content"); + hiddenField.setAttribute("value", str.match(new RegExp(regexText, "g"))); + form.appendChild(hiddenField); + + var hiddenField = document.createElement("input"); + hiddenField.setAttribute("name", "sectionid"); + hiddenField.setAttribute("value", "<?php echo $section_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 + } +} + +function exportAll(section_id) { + var el = document.getElementById("editable-area"); + var str="" + el.innerHTML; + var form = document.createElement("form"); + form.setAttribute("method", "post"); + //form.setAttribute("action", "exportTable.php"); + form.setAttribute("action", "../ExportTable/"+section_id); // hand to controller + form.setAttribute("target", "_blank"); + + var hiddenField = document.createElement("input"); + hiddenField.setAttribute("name", "content"); + hiddenField.setAttribute("value", str); + form.appendChild(hiddenField); + + var hiddenField = document.createElement("input"); + hiddenField.setAttribute("name", "sectionid"); + hiddenField.setAttribute("value", section_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 + } + + +} +// =========== + +// === for editwordlist.php === +function addNewList() { + var el = document.getElementById("listNameText"); + $.ajax({ + //url : '../../models/_extractapp_func.php', + url : './', + async : false, + type : 'POST', + data : 'func=AddNewList'+'&text='+el.value + }).done(function(result) { + alert("Added!"); + document.location.reload(true); + }); +} + +function saveWordlist(id ) { + var el = document.getElementById("editable-area"); + $.ajax({ + url : './', + async : false, + type : 'POST', + data : 'func=SaveWordlist'+'&text='+el.innerHTML+'&filename='+id + }).done(function(result) { + alert("Saved!"); + }); + +} + +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 === + + + +// ============