Mercurial > hg > extraction-interface
diff develop/views/Extractapp/taggingtext.php @ 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/views/Extractapp/taggingtext.php Thu Feb 05 16:07:53 2015 +0100 @@ -0,0 +1,315 @@ +<?php +// --- initialize config file and input text --- +$stringInput = $viewmodel['stringInput']; +$wordlistArray = $viewmodel['wordlistArray']; +$taglistArray = $viewmodel['taglistArray']; +$section_id = $viewmodel['section_id']; + +?> + +<html> +<head> +<title></title> + +<style> +dynasty +{ + color:red; +} +nianhao +{ + color:blue; +} +name +{ + color:orange; +} +#editable-area { + line-height:160%; + letter-spacing:1.5px; + font-size:21px; +} + + +<?php +// color on the tags +foreach ( $taglistArray as $taglistValue ) { + echo $taglistValue[2]."\n{\ncolor:".$taglistValue[3]."\n}\n"; + + echo ".span_".$taglistValue[2]."\n{\nbackground-color:".$taglistValue[3]."\n}\n"; +} + +?> +</style> + + +</head> + +<body> + +<script type="text/javascript"> + +<?php +foreach ( $taglistArray as $taglistValue ) { + echo '$(document).on("click", "'.$taglistValue[2].'", function (e) {'."\n"; + echo "\t".'if ( $(this).prop("tagName").toLowerCase() != "'.$taglistValue[2].'" ) return 0;'."\n"; + echo "\t".'if ( $("#editTextId").html() != "Edit the text" ) return 0;'."\n"; + echo "\tremoveTagNewDiv( e, \"".$taglistValue[2]."\", $(this) );\n"; + echo "});\n"; +} +?> + +$(document).ready(function(){ + //run once + var el=$('#follow-scroll'); + var originalelpos=el.offset().top; // take it where it originally is on the page + + //run on scroll + $(window).scroll(function(){ + var el = $('#follow-scroll'); // important! (local) + var elpos = el.offset().top; // take current situation + var windowpos = $(window).scrollTop(); + var finaldestination = windowpos+originalelpos; + el.stop().animate({'top':finaldestination},500); + }); +}); +$(document).on("click", "name", function (e) { + + if ( $("#editTextId").html() != "Edit the text" ) return 0; + if ( $(this).prop("tagName").toLowerCase() != "name" ) return 0; + + removeTagNewDiv( e, "name", $(this) ); +}); + +$(document).on("mouseup", '#editable-area', function (e) { + $('.questionMarkClass').remove(); + $('.tagItemDivClass').remove(); + + if ( $("#editTextId").html() != "Edit the text" ) return 0; + + var selection = getSelected(); + range = getSelected().getRangeAt(0); + + container = document.createElement("div"); + container.appendChild(selection.getRangeAt(0).cloneContents()); + + if(selection && (selection = new String(selection).replace(/^\s+|\s+$/g,''))) { + + var newdiv = document.createElement("div"); + newdiv.id = "tagItemDivId"; + newdiv.setAttribute("class", "tagItemDivClass"); + newdiv.style.cssText = 'top:'+e.pageY+'; left:'+e.pageX+'; position:absolute; background-color: white; border:1px solid black; padding: 5px'; + + //console.log(selection.getRangeAt(0).cloneContents()); + if ( container.innerHTML.indexOf( "br" ) != -1 ) { + var newselect = document.createElement("select"); + newselect.id = "TitletagType"; + <?php + foreach ( $taglistArray as $taglistValue ) { + echo "newselect.innerHTML += \"<option value='".$taglistValue[2]."'>".$taglistValue[1]."</option>\";\n"; + } + ?> + newdiv.appendChild(newselect); + + //matchValue = .match(); + myRegexp = new RegExp("〈(.*?)〉", "g") + matchValue = myRegexp.exec(String(selection)); + + if ( matchValue != null ) { + newdiv.innerHTML += "<input id=\"TitletagName\" value=\""+ matchValue[1] +"\"></br>"; + } else { + newdiv.innerHTML += "<input id=\"TitletagName\" value=\"\"></br>"; + } + newdiv.innerHTML += "<button onclick=\"addTagTitle( range, container )\">Add Title Tag To Each Line</button></br>"; + + newdiv.innerHTML += "<button onclick=\"exportTable( range, container )\">Export As A Table</button></br></br>"; + + var newselect = document.createElement("select"); + newselect.id = "RemoveTitletagType"; + <?php + foreach ( $taglistArray as $taglistValue ) { + echo "newselect.innerHTML += \"<option value='".$taglistValue[2]."'>".$taglistValue[1]."</option>\";\n"; + } + ?> + newdiv.appendChild(newselect); + + newdiv.innerHTML += "<input id=\"RemoveTitletagName\" value=\"\"></br>"; + newdiv.innerHTML += "<button onclick=\"removeTagTitle( range, container )\">Remove</button></br>"; + } else { + newdiv.innerHTML = "Tag: "+String(selection)+"<br>"; + + newdiv.innerHTML += "<button accesskey=\"2\" onclick=\"tagwithtitle( range, '"+String(selection)+"' )\">Tag As Title</button></br>"; + + <?php + foreach ( $taglistArray as $taglistValue ) { + if ( $taglistValue[2] == "person") { + echo "newdiv.innerHTML += \"<button accesskey=\\\"1\\\" onclick=\\\"tagwithOnlytag( range, '\"+String(selection)+\"', '".$taglistValue[2]."' )\\\">Tag as:".$taglistValue[1]."(No BR)</button>\";\n"; + echo "newdiv.innerHTML += \"<button accesskey=\\\"1\\\" onclick=\\\"tagwithOnlytag( range, '\"+String(selection)+\"', '".$taglistValue[2]."2' )\\\">Tag as:".$taglistValue[1]."</button>\";\n"; + echo "newdiv.innerHTML += \"<button onclick=\\\"tagStringWithTag( '\"+String(selection)+\"', '".$taglistValue[2]."' )\\\">Tag as:".$taglistValue[1]."(ALL)</button></br>\";\n"; + } else if ($taglistValue[2] == "post_time") { + echo "newdiv.innerHTML += \"<button accesskey=\\\"3\\\" onclick=\\\"tagwithOnlytag( range, '\"+String(selection)+\"', '".$taglistValue[2]."' )\\\">Tag as:".$taglistValue[1]."</button>\";\n"; + echo "newdiv.innerHTML += \"<button onclick=\\\"tagStringWithTag( '\"+String(selection)+\"', '".$taglistValue[2]."' )\\\">Tag as:".$taglistValue[1]."(ALL)</button></br>\";\n"; + } else if ($taglistValue[2] == "office") { + echo "newdiv.innerHTML += \"<button accesskey=\\\"4\\\" onclick=\\\"tagwithOnlytag( range, '\"+String(selection)+\"', '".$taglistValue[2]."' )\\\">Tag as:".$taglistValue[1]."</button>\";\n"; + echo "newdiv.innerHTML += \"<button onclick=\\\"tagStringWithTag( '\"+String(selection)+\"', '".$taglistValue[2]."' )\\\">Tag as:".$taglistValue[1]."(ALL)</button></br>\";\n"; + } else { + echo "newdiv.innerHTML += \"<button onclick=\\\"tagwithOnlytag( range, '\"+String(selection)+\"', '".$taglistValue[2]."' )\\\">Tag as:".$taglistValue[1]."</button>\";\n"; + echo "newdiv.innerHTML += \"<button onclick=\\\"tagStringWithTag( '\"+String(selection)+\"', '".$taglistValue[2]."' )\\\">Tag as:".$taglistValue[1]."(ALL)</button></br>\";\n"; + } + } + ?> + } + $('body').append(newdiv); + + $('#TitletagType').val(lastAddTag); + } + //e.stopPropagation(); +}); + + + +function replaceSmartRegex() { + saveUndoText(); + var startPage = $('#regexPageStart2').val(); + var endPage = $('#regexPageEnd2').val(); + + var el = document.getElementById("editable-area"); + var regexText=document.getElementById("regexText").value; + + <?php + foreach ( $wordlistArray as $wordlistValue ) { + echo "\tvar regexText1=\"List ".$wordlistValue[1]."\";\n"; + echo "\tregexText1 = preg_quote(regexText1);\n"; + echo "\tvar replaceText1=\"".$wordlistValue[2]."\";\n"; + echo "\tregexText = regexText.replace(new RegExp(regexText1, \"g\"), replaceText1);\n\n"; + } + ?> + + 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(regexText2, "g"), resultString); + } + //document.styleSheets[0].addRule("tag001", "color:green;") +} + + + + +$(document).on("change", '#smartRegexPopUpSelectWord', function (e) { +<?php + foreach ( $wordlistArray as $wordlistValue ) { + echo "if ( $('#smartRegexPopUpSelectWord').val() == \"".$wordlistValue[0]."\") {"; + echo "$('#smartRegexPopUpText').val(\"".$wordlistValue[2]."\");"; + echo "}"; + } +?> +}); + + +</script> + +<table width="1250" border="1"> + <tr> + <td width="980"> + <div id="editable-area" class="area" style="max-width: 980"><?php echo $stringInput; ?></div> + </td> + <td width="270" valign="top"> + <div id="follow-scroll" style="position:absolute; width: 220" width="220"> + <div id="load_regex_div" style="position: absolute; display: none"></div> + <div id="smartRegexPopUpDiv" style="position: absolute; display: none"> + Name: <input id="smartRegexPopUpName"></input><br><br> + Word List: + <select id="smartRegexPopUpSelectWord"> + <option value="NULL" selected>無</option> + <?php + foreach ( $wordlistArray as $wordlistValue ) { + echo "<option value=\"".$wordlistValue[0]."\">".$wordlistValue[1]."</option>\n"; + } + ?> + </select> + <br> + OR (USE "|" TO SEPARATE WORDS):<br> + <TEXTAREA id="smartRegexPopUpText" COLS=30 ROWS=4></TEXTAREA><br><br> + Tag: + <select id="smartRegexPopUpSelectTag"> + <?php + foreach ( $taglistArray as $taglistValue ) { + echo "<option value=\"".$taglistValue[2]."\">".$taglistValue[1]."</option>\n"; + } + echo "<option value=\"title\">Title</option>\n"; + ?> + <option value="NOTAG">不標記</option> + </select><br> + <button id="smartRegexPopUpAdd" onclick="replaceSmartAdd()" style="height: 30px; width: 50px">Add</button> + <button id="smartRegexPopUpEdit" onclick="replaceSmartEdit()" style="height: 30px; width: 50px">Edit</button> + <button id="smartRegexPopUpDel" onclick="replaceSmartDel()" style="height: 30px; width: 50px">Delete</button> + <button id="smartRegexPopUpBack" onclick="replaceSmartBack()" style="height: 30px; width: 50px"><<</button> + <button id="smartRegexPopUpFor" onclick="replaceSmartFor()" style="height: 30px; width: 50px">>></button> + <button onclick="replaceSmartClose()" style="height: 30px; width: 50px">Close</button> + </div> + <form action="javascript:void(0);"> + <fieldset> + <legend>Replace By <i><b>Smart Regex</b></i>©:</legend> + <div id="smartRegexShowDiv"></div><br> + <button onclick="smartRegexNew()" style="height: 30px; width: 220px">Add Regex Group</button></br> + Range: <input type="text" size="5" id="regexPageStart">to<input type="text" size="5" id="regexPageEnd"><br> + <button onclick="replaceSmartRun()" style="height: 30px; width: 220px">Run</button></br> + <button onclick="replaceSmartRunSpace()" style="height: 30px; width: 220px">Run(Allow space between Group)</button></br> + <button onclick="smartRegexSave()" style="height: 30px; width: 70px">Save</button> + <button onclick="smartRegexLoad(<?php echo $section_id;?>)" style="height: 30px; width: 70px">Load</button> + <button onclick="smartRegexEmpty()" style="height: 30px; width: 70px">Clear</button></br> + </fieldset> + + <fieldset> + <legend>Tag by rule:</legend> + <button onclick="tagNameWithLastName()" style="height: 30px; width: 220px">Tag Word Begin With Surname</button></br> + <button onclick="tagNameWithLastName2()" style="height: 30px; width: 170px">Tag Word Begin With</button><input type="text" size="2" id="surname"></br> + <!--<button onclick="tagTime()" style="height: 30px; width: 220px">Tag Time</button></br>--> + <!--<button onclick="tagBiogAddr()" style="height: 30px; width: 220px">Tag BiogAddr</button></br>--> + <button onclick="Undo()" style="height: 30px; width: 220px" id="buttonUndo" disabled="true">Undo</button> + </fieldset> + + <fieldset> + <legend>Edit:</legend> + <!--<button onclick="cleanUpTextArea()" style="height: 30px; width: 220px">Reform the text</button></br>--> + <button onclick="saveText(<?php echo $section_id; ?>)" style="height: 30px; width: 220px">Save the text</button></br> + <button onclick="editText()" id="editTextId" style="height: 30px; width: 220px">Edit the text</button></br> + </br> + <button onclick="window.open('../EditWordlist/<?php echo $section_id;?>')" style="height: 30px; width: 220px">Manage Word List</button></br> + <button onclick="window.open('../EditTaglist/<?php echo $section_id;?>')" style="height: 30px; width: 220px">Manage Tag List</button></br> + </fieldset> + + <fieldset> + <legend>Export:</legend> + Page: <input type="text" size="5" id="exportPageStart">to<input type="text" size="5" id="exportPageEnd"><br> + <button onclick="exportPage()" style="height: 30px; width: 220px">Export</button></br> + <button onclick="exportAll(<?php echo $section_id;?>)" style="height: 30px; width: 220px">Export All</button></br> + </fieldset> + + <fieldset> + <legend>Replace By <i><b>Regex</b></i>:</legend> + Range: <input type="text" size="5" id="regexPageStart2">to<input type="text" size="5" id="regexPageEnd2"><br> + Regex: <input type="text" size="30" id="regexText"></br> + Replace: <input type="text" size="30" id="replaceText"><br> + <button onclick="replaceSmartRegex()">Replace!</button> + </fieldset> + </form> + </div> + </td> + </tr> +</table> +</body> +</html>