Mercurial > hg > extraction-interface
diff views/Extractapp/TaggingText.php @ 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/views/Extractapp/TaggingText.php Tue Mar 17 10:54:13 2015 +0100 @@ -0,0 +1,1110 @@ +<?php +// --- initialize config file and input text --- +$stringInput = $viewmodel['stringInput']; +$wordlistArray = $viewmodel['wordlistArray']; +$taglistArray = $viewmodel['taglistArray']; +$section_id = $viewmodel['section_id']; +$topiclistArray = $viewmodel['topiclistArray']; +$default_topic_id = $viewmodel['default_topic_id']; +$topic_name = $viewmodel['topic_name']; +$topic_tag = $viewmodel['topic_tag']; +$info = $viewmodel['info']; +$messages = $viewmodel['messages']; + +$taglist_infile = $viewmodel['taglist_infile']; +$book_meta = $viewmodel['book_meta']; + + +?> + +<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"> + +// not use this for now +function _showTagColor(up_to_date) { + var taglistArray = ""; + if (up_to_date) { + taglistArray = JSON.parse('<?php echo json_encode($taglistArray) ?>'); + } else { + taglistArray = JSON.parse('<?php echo json_encode($taglist_infile) ?>'); + } + + + for (var i = 0; i < taglistArray.length; i++) { + var taglistValue = taglistArray[i]; + + $(taglistValue[2]).css('color', taglistValue[3]); + /*var element = document.querySelectorAll(taglistValue[2]); + for (var j = 0; j < element.length; j++) { + element[j].style.color = taglistValue[3]; + } + */ + } +} + +// TODO: Popup to proceeding the saving situations +function handleFileVersionConflict() { + var info = JSON.parse('<?php echo json_encode($info) ?>'); + console.log("currentFileId="+info['current_fileId']); + + if (info['current_fileId'] != 0 && info['current_fileId'] != info['file_id']){ + // -- there might be conflicts between different version + alert("Someone edited this file and saved before you."); + return; + + var retVal = confirm('There were something happened/someone editing in the between of time.\nDo you want to force saving? (There might be conflicts between two versions.)'); + if( retVal == true ){ + // TODO: force saving with currentFileId + alert("You do the force saving!"); + //saveTextToLGService(); + + }else{ + var loadLastest = confirm("Do you want to reload for the lastest version? (Your current editing will lost.)"); + + console.log("loadLastest="+loadLastest); + /* + var form = document.createElement("form"); + form.setAttribute("method", "post"); + form.setAttribute("action", "./TaggingText"); // hand to controller + form.setAttribute("target", "_blank"); + + var topic_id = JSON.parse('<?php echo json_encode($default_topic_id) ?>'); + + var hiddenField = document.createElement("input"); + hiddenField.setAttribute("name", "topic"); + hiddenField.setAttribute("value", topic_id); + form.appendChild(hiddenField); + + var hiddenField = document.createElement("input"); + hiddenField.setAttribute("name", "func"); + hiddenField.setAttribute("value", "Reload"); // reload + form.appendChild(hiddenField); + + _postForContineTagging(form); + + alert("You will reload the latest version."); + */ + /* + if (loadLastest == true) { + // TODO: reload page with the currentFileId + console.log('loadLastest is true'); + $.ajax({ + type : 'POST', + url : './TaggingText', + async : false, + data : 'func=Reload', + success: function (result) { + //var lastest_editing = jQuery.parseJSON(result); + console.log("lastest_editing string:"+result); + // change text to the new one + //var el = document.getElementById("editable-area"); + //el.innerHTML = lastest_editing; + //alert("Reload the page!"); + }, + error: function (result) { + alert("Reload Fails!"); + } + }).done(function(result) { + // reload page + //document.location.reload(true); + + }); + + } else { + alert("Just a reminder, there is a new version for this branch."); + } + */ + + } + + } + return; + +} + +<?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(){ + + // --- for sidebar--- + //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); + el.stop().animate({'top':finaldestination},0); + }); + + //--- for popups --- + //run once + var el=$('#popups'); + var originalelpos=el.offset().top; // take it where it originally is on the page + + //run on scroll + $(window).scroll(function(){ + var el = $('#popups'); // important! (local) + var elpos = el.offset().top; // take current situation + var windowpos = $(window).scrollTop(); + var finaldestination = windowpos+originalelpos; + //el.stop().animate({'top':finaldestination},500); + el.stop().animate({'top':finaldestination},0); + }); + + // --- handle old version taglist --- + var _GET = JSON.parse('<?php echo json_encode($_GET) ?>'); + if (_GET['id']) { + // === This case should only be possible for developing on local machine ==== + var info = JSON.parse('<?php echo json_encode($info) ?>'); + var redirectUrl = "http://localhost:1080/extraction-interface/Extractapp/TaggingText"; + var section_id = info['section_id']; + + var form = $('<form action="' + redirectUrl + '" method="post">' + + '<input type="hidden" name="sectionId" value="'+section_id+'" />' + + '</form>'); + $('body').append(form); + $(form).submit(); + } + + + // --- TODO: check if taglist in file is up-to-date --- + /* + var taglist_infile = JSON.parse('<?php echo json_encode($taglist_infile) ?>'); + if (taglist_infile != "") { + // TODO: pop up to ask if load the latest taglist + var retVal = confirm("Tag list in file is not up-to-date. \nDo you want to load file with new tag list?"); + if( retVal == true ){ + // use $taglisArray + alert("Load file with new tag list."); + }else{ + // use $taglist_infile as $taglistArray + <?php + // $taglistArray = $taglist_infile; + ?> + alert("You are viewing the file with old version of tag list. Please use the up-to-date taglist."); + } + //_showTagColor(retVal); + <?php $taglist_infile = ""; ?> + } + */ + + var info = JSON.parse('<?php echo json_encode($info) ?>'); + + // the first time to this section. without branch_id and file_id + if (info['file_id'] == 0) { // or info['branch_id'] == 0, means new file + $( "#saveTextToLGService_id").text( "Create(Save) Branch to LGService" ); + + } + + + handleFileVersionConflict(); + + + /* + // Popup choosing topic if first time to this section. without branch_id + if (info['file_id'] == 0) { // or info['branch_id'] == 0, means new file + // ask to choose topic + $.ajax({ + + }); + var popup = document.getElementById('popup-window'); + + // alert('choose topic!'); + } + */ + + + +}); +$(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'; + + newdiv.style.backgroundColor = "white"; + newdiv.style.zIndex = 2; + + //console.log(selection.getRangeAt(0).cloneContents()); + if ( container.innerHTML.indexOf( "br" ) != -1 ) { + var newselect = document.createElement("select"); + newselect.id = "TitletagType"; + + + console.log(JSON.parse('<?php echo json_encode($taglistArray) ?>')); + + <?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>"; + } + + console.log(" container innerHTML: "+ container.innerHTML ); + + 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 { + // for pop up window on edit-area for tag list + newdiv.innerHTML = "Tag: "+String(selection)+"<br>"; + + <?php + foreach ( $taglistArray as $taglistValue ) { + + if ($taglistValue[2] == $topic_tag) { + echo "newdiv.innerHTML += \"<button accesskey=\\\"1\\\" onclick=\\\"tagwithOnlytag( range, '\"+String(selection)+\"', '".$taglistValue[2]."2' )\\\">[TopicTag]Tag as:".$taglistValue[1]."(necessary for this topic!)</button>\";\n"; + 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 onclick=\\\"tagStringWithTag( '\"+String(selection)+\"', '".$taglistValue[2]."' )\\\">Tag as:".$taglistValue[1]."(ALL)</button></br>\";\n"; + + /* + 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"; + */ + break; + } + } + ?> + + 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] == $topic_tag) { + // pass + } 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"; + } + + } + ?> + } + + //$('#tagItemDivId').addClass(); // tagItemDivId is newdiv's id + $('body').append(newdiv); + + $('#TitletagType').val(lastAddTag); + + } + //e.stopPropagation(); +}); + + +// === for exporttable.php === +function exportTable( range, container ) { + //MsgBox("enter function"); + var form = document.createElement("form"); + form.setAttribute("method", "post"); + form.setAttribute("action", "./ExportTable"); + 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); + + var hiddenField2 = document.createElement("input"); + hiddenField2.setAttribute("name", "topic"); + hiddenField2.setAttribute("value", topic_id); + form.appendChild(hiddenField2); + + var info = JSON.parse( '<?php echo json_encode($info) ?>'); + + if (info) { + var hiddenField = document.createElement("input"); + hiddenField.setAttribute("name", "bookId"); + hiddenField.setAttribute("value", info['book_id']); + form.appendChild(hiddenField); + + var hiddenField = document.createElement("input"); + hiddenField.setAttribute("name", "bookName"); + hiddenField.setAttribute("value", info['book_name']); + form.appendChild(hiddenField); + + var hiddenField = document.createElement("input"); + hiddenField.setAttribute("name", "sectionName"); + hiddenField.setAttribute("value", info['section_name']); + 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(topic_id) { + 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"); + 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", "topic"); + hiddenField.setAttribute("value", topic_id); + form.appendChild(hiddenField); + + _postForContineTagging(form); + + + /* + var section_id = JSON.parse('<?php echo json_encode($section_id) ?>'); + console.log("section_id: "+section_id+", topic_id: "+topic_id); + + var hiddenField = document.createElement("input"); + hiddenField.setAttribute("name", "sectionId"); + hiddenField.setAttribute("value", section_id); + form.appendChild(hiddenField); + + var info = JSON.parse( '<?php echo json_encode($info) ?>'); + + if (info) { + var hiddenField = document.createElement("input"); + hiddenField.setAttribute("name", "bookId"); + hiddenField.setAttribute("value", info['book_id']); + form.appendChild(hiddenField); + + var hiddenField = document.createElement("input"); + hiddenField.setAttribute("name", "bookName"); + hiddenField.setAttribute("value", info['book_name']); + form.appendChild(hiddenField); + + var hiddenField = document.createElement("input"); + hiddenField.setAttribute("name", "sectionName"); + hiddenField.setAttribute("value", info['section_name']); + 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(topic_id) { + var el = document.getElementById("editable-area"); + var str= "" + el.innerHTML; + var form = document.createElement("form"); + form.setAttribute("method", "post"); + 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", "topic"); + hiddenField.setAttribute("value", topic_id); + form.appendChild(hiddenField); + + _postForContineTagging(form); +/* + var section_id = JSON.parse('<?php echo json_encode($section_id) ?>'); + console.log("section_id: "+section_id+", topic_id: "+topic_id); + + var hiddenField = document.createElement("input"); + hiddenField.setAttribute("name", "sectionId"); + hiddenField.setAttribute("value", section_id); + form.appendChild(hiddenField); + + var info = JSON.parse( '<?php echo json_encode($info) ?>'); + + if (info) { + var hiddenField = document.createElement("input"); + hiddenField.setAttribute("name", "bookId"); + hiddenField.setAttribute("value", info['book_id']); + form.appendChild(hiddenField); + + var hiddenField = document.createElement("input"); + hiddenField.setAttribute("name", "bookName"); + hiddenField.setAttribute("value", info['book_name']); + form.appendChild(hiddenField); + + var hiddenField = document.createElement("input"); + hiddenField.setAttribute("name", "sectionName"); + hiddenField.setAttribute("value", info['section_name']); + 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 tagwithOnlytag( range, stringSelection, tag ) { + saveUndoText(); + var topic_tag = JSON.parse('<?php echo json_encode($topic_tag) ?>'); + var topic_tag2 = topic_tag+"2"; + + range.deleteContents(); + + + if ( tag==topic_tag2) { + var newdiv = document.createElement(topic_tag); + 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); + } + + /* + if ( tag=="person2") { + var newdiv = document.createElement("person"); + newdiv.innerHTML = stringSelection; + range.insertNode(newdiv); + var newdiv = document.createElement("br"); + range.insertNode(newdiv); + } else if (tag=="object2") { + var newdiv = document.createElement("object"); + 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 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;") +} + + + +function saveTextToLGService() { + + var info = JSON.parse('<?php echo json_encode($info) ?>'); + var topic_id = JSON.parse('<?php echo json_encode($default_topic_id) ?>'); + + // if this is a new branch, ask for label + if (info['branch_id'] == 0) { + //var label = prompt("Please enter your label for this new branch", "section"+info['section_id']); + var today = new Date(); + var dd = today.getDate(); + var mm = today.getMonth()+1; //January is 0! + var yyyy = today.getFullYear(); + + if(dd<10) { + dd='0'+dd + } + if(mm<10) { + mm='0'+mm + } + today = dd+'/'+mm+'/'+yyyy; + var label = prompt("Please enter your label for this new branch", today); + while (label == null) { + alert("You haven't saved your editing."); + return; + // label = prompt("Please enter your label for this new branch (not empty)", "section"+info['section_id']); + } + }; + + var form = document.createElement("form"); + form.setAttribute("method", "post"); + form.setAttribute("action", "./TaggingText"); // hand to controller + form.setAttribute("target", "_self"); + + var hiddenField = document.createElement("input"); + hiddenField.setAttribute("name", "func"); + hiddenField.setAttribute("value", "SaveFullTextToLGService"); + form.appendChild(hiddenField); + + + var hiddenField = document.createElement("input"); + hiddenField.setAttribute("name", "label"); + hiddenField.setAttribute("value", label); + form.appendChild(hiddenField); + + var hiddenField = document.createElement("input"); + hiddenField.setAttribute("name", "topic_id"); + hiddenField.setAttribute("value", topic_id); + form.appendChild(hiddenField); + + _postForContineTagging(form); + + console.log("complete saving to LGService"); + + + /* + + if (info) { + var hiddenField = document.createElement("input"); + hiddenField.setAttribute("name", "fileId"); + hiddenField.setAttribute("value", info['file_id']); + form.appendChild(hiddenField); + var hiddenField = document.createElement("input"); + hiddenField.setAttribute("name", "branchId"); + hiddenField.setAttribute("value", info['branch_id']); + form.appendChild(hiddenField); + var hiddenField = document.createElement("input"); + hiddenField.setAttribute("name", "userId"); + hiddenField.setAttribute("value", info['user_id']); + form.appendChild(hiddenField); + var hiddenField = document.createElement("input"); + hiddenField.setAttribute("name", "sectionId"); + hiddenField.setAttribute("value", info['section_id']); + form.appendChild(hiddenField); + + var hiddenField = document.createElement("input"); + hiddenField.setAttribute("name", "bookId"); + hiddenField.setAttribute("value", info['book_id']); + form.appendChild(hiddenField); + var hiddenField = document.createElement("input"); + hiddenField.setAttribute("name", "sectionName"); + hiddenField.setAttribute("value", info['section_name']); + form.appendChild(hiddenField); + var hiddenField = document.createElement("input"); + hiddenField.setAttribute("name", "bookName"); + hiddenField.setAttribute("value", info['book_name']); + form.appendChild(hiddenField); + + } + + var hiddenField = document.createElement("input"); + hiddenField.setAttribute("name", "text"); + var el = document.getElementById("editable-area"); + //var text = encodeURIComponent(el.innerHTML); + var text = el.innerHTML; + hiddenField.setAttribute("value", text); + 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 chooseTopic(default_topic_id) { + var t = JSON.parse( '<?php echo json_encode($topiclistArray) ?>' ); + var info = JSON.parse('<?php echo json_encode($info) ?>'); + + $('#load_topic_div').html(""); + $('#load_topic_div').css("display", "block"); + + $('#load_topic_div').css("border", "1px solid black"); + $('#load_topic_div').css("background-color", "White"); + $('#load_topic_div').css("width", "150px"); + $('#load_topic_div').css("height", "50px"); + $('#load_topic_div').css("top", "20px"); + $('#load_topic_div').css("left", "-150px"); + + + var topic_select = document.createElement("select"); + topic_select.id = "loadTopiclist"; + var selected_topic = t[0]; + topic_select.onchange = function(){ + + selected_topic = topic_select.options[topic_select.selectedIndex]; + console.log(selected_topic.text); + + var topic_id = selected_topic.value; + + var form = document.createElement("form"); + form.setAttribute("method", "post"); + form.setAttribute("action", "./TaggingText"); // hand to controller + form.setAttribute("target", "_self"); + + var hiddenField = document.createElement("input"); + hiddenField.setAttribute("name", "topic"); + hiddenField.setAttribute("value", topic_id); + form.appendChild(hiddenField); + + var hiddenField = document.createElement("input"); + hiddenField.setAttribute("name", "func"); + hiddenField.setAttribute("value", "ContinueTagging"); + form.appendChild(hiddenField); + + _postForContineTagging(form); + + }; + + + //Create and append the options + for (var i = 0; i < t.length; i++) { + console.log(t[i]['id']+","+t[i]['name']); + var option = document.createElement("option"); + option.value = t[i]['id']; + option.text = t[i]['name']; + if (option.value == default_topic_id) { + option.selected = true; + }; + topic_select.appendChild(option); + } + + $('#load_topic_div').append(topic_select); + + var newbutton = document.createElement("button"); + $(newbutton).html("Close"); + $(newbutton).addClass("btn btn-xs btn-default"); + $(newbutton).attr("onclick", "$('#load_topic_div').css(\"display\", \"none\");"); + $('#load_topic_div').append(newbutton); + +} + +// --- for config tags in topic --- +function _postForContineTagging(form) { + var hiddenField = document.createElement("input"); + hiddenField.setAttribute("name", "text"); + var el = document.getElementById("editable-area"); + var text = el.innerHTML; + hiddenField.setAttribute("value", text); + form.appendChild(hiddenField); + + // pass taglist + var hiddenField = document.createElement("input"); + hiddenField.setAttribute("name", "taglistArray"); + var taglistObj = JSON.parse('<?php echo json_encode($taglist_infile) ?>'); + if (!taglistObj) { + taglistObj = JSON.parse('<?php echo json_encode($taglistArray) ?>'); + } + taglistArray = JSON.stringify(taglistObj); + hiddenField.setAttribute("value", taglistArray); + form.appendChild(hiddenField); + + // pass book_meta + var hiddenField = document.createElement("input"); + hiddenField.setAttribute("name", "book_meta"); + var book_metaObj = JSON.parse('<?php echo json_encode($book_meta) ?>'); + book_metaArray = JSON.stringify(book_metaObj); + hiddenField.setAttribute("value", book_metaArray); + form.appendChild(hiddenField); + + + var info = JSON.parse( '<?php echo json_encode($info) ?>'); + + if (info) { + // TODO: different field info array based on fileId(branchId) existing or not + if (info['file_id']) { + var hiddenField = document.createElement("input"); + hiddenField.setAttribute("name", "fileId"); + hiddenField.setAttribute("value", info['file_id']); + form.appendChild(hiddenField); + }; + if (info['branch_id']) { + var hiddenField = document.createElement("input"); + hiddenField.setAttribute("name", "branchId"); + hiddenField.setAttribute("value", info['branch_id']); + form.appendChild(hiddenField); + }; + if (info['user_id']) { + var hiddenField = document.createElement("input"); + hiddenField.setAttribute("name", "userId"); + hiddenField.setAttribute("value", info['user_id']); + form.appendChild(hiddenField); + }; + if (info['section_id']) { + var hiddenField = document.createElement("input"); + hiddenField.setAttribute("name", "sectionId"); + hiddenField.setAttribute("value", info['section_id']); + form.appendChild(hiddenField); + }; + if (info['book_id']) { + var hiddenField = document.createElement("input"); + hiddenField.setAttribute("name", "bookId"); + hiddenField.setAttribute("value", info['book_id']); + form.appendChild(hiddenField); + }; + if (info['section_name']) { + var hiddenField = document.createElement("input"); + hiddenField.setAttribute("name", "sectionName"); + hiddenField.setAttribute("value", info['section_name']); + form.appendChild(hiddenField); + }; + if (info['book_name']) { + var hiddenField = document.createElement("input"); + hiddenField.setAttribute("name", "bookName"); + hiddenField.setAttribute("value", info['book_name']); + form.appendChild(hiddenField); + }; + if (info['current_fileId']) { + var hiddenField = document.createElement("input"); + hiddenField.setAttribute("name", "currentFileId"); + hiddenField.setAttribute("value", info['current_fileId']); + 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 configTagsInTopic(topic_id) { + var form = document.createElement("form"); + + form.setAttribute("method", "post"); + form.setAttribute("action", "./ConfigTagsInTopic"); // hand to controller + form.setAttribute("target", "_blank"); + + var hiddenField = document.createElement("input"); + hiddenField.setAttribute("name", "topic"); + hiddenField.setAttribute("value", topic_id); + form.appendChild(hiddenField); + + _postForContineTagging(form); + + /* + if(navigator.userAgent.toLowerCase().indexOf('firefox') > -1) { + document.body.appendChild(form); + form.submit(); + } else { + form.submit(); // works under IE and Chrome, but not FF + } + */ + +} + + + +$(document).on("change", '#smartRegexPopUpSelectWord', function (e) { + +<?php + foreach ( $wordlistArray as $wordlistValue ) { + echo "if ( $('#smartRegexPopUpSelectWord').val() == \"".$wordlistValue[0]."\") {"; + echo "$('#smartRegexPopUpText').val(\"".$wordlistValue[2]."\");"; + echo "}"; + } +?> +}); + + + +</script> + +<div id="dialog-form" title="config tags for topic" style="position:fixed; top: 30px; "> +</div> + + +<p class="bg-info" style="margin:10 30 10 30; max-width:1250"> <?php echo $messages; ?> </p> + +<table width="1270" border="1" style="margin:10 30 10 30;"> + <tr> + <td width="980" style="padding:0 5 0 5; margin: 0 5 0 5;"> + <div id="editable-area" class="area" style="max-width: 980"><?php echo $stringInput; ?></div> + </td> + <td width="290" valign="top"> + <div id="popups" style="position:absolute; width:300px; "> + <div id="load_topic_div" style="position: absolute; display: none; z-index:2"></div> + <div id="load_regex_div" style="position: absolute; display: none; z-index:2;"></div> + <div id="smartRegexPopUpDiv" style="position: absolute; display: none; z-index:2"> + 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()" class="btn btn-info" style="">Add</button> + <button id="smartRegexPopUpEdit" onclick="replaceSmartEdit()" class="btn btn-success" style="">Edit/Update</button> + <button id="smartRegexPopUpDel" onclick="replaceSmartDel()" class="btn btn-danger" style="">Delete</button> + <button id="smartRegexPopUpBack" onclick="replaceSmartBack()" class="btn btn-default" style=""><<</button> + <button id="smartRegexPopUpFor" onclick="replaceSmartFor()" class="btn btn-default" style="">>></button> + <button onclick="replaceSmartClose()" class="btn btn-default" style="">Close</button> + </div> + </div> + + <div id="follow-scroll" style="position:absolute; height:680px; overflow:scroll; margin:0 5 15 5; max-width:270px"> + <form action="javascript:void(0);"> + <fieldset> + <legend><h5 class="text-success"> Config Topic: </h5></legend> + <div> current topic is <?php echo $topic_name; ?> + <button onclick="chooseTopic(<?php echo $default_topic_id; ?>)" class="btn btn-xs btn-default">Change</button> + </div> + <button onclick="configTagsInTopic(<?php echo $default_topic_id;?>)" class="btn btn-sm btn-default" style="">Manage Tags in topic</button></br> + </fieldset> + + <fieldset> + <legend><h5 class="text-success"> Replace By <i><b>Smart Regex</b></i>©: </h5></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: 100px">Run</button> + <button onclick="replaceSmartRunWithBr()" style="height: 30px; width: 100px">Run(with Br)</button></br> + <button onclick="replaceSmartRunSpace()" style="height: 30px; width: 220px">Run(Allow space between Group)</button></br> + <button onclick="smartRegexSave(<?php echo $default_topic_id; ?>)" style="height: 30px; width: 70px">Save</button> + <button onclick="smartRegexLoad(<?php echo $default_topic_id; ?>)" style="height: 30px; width: 70px">Load</button> + <button onclick="smartRegexEmpty()" style="height: 30px; width: 70px">Clear</button></br> + <!-- + <button id="example" type="button" class="btn btn-sm btn-default" data-toggle="popover">Load</button> + --> + </fieldset> + + <fieldset> + <legend><h5 class="text-success"> Tag by rule:</h5></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><h5 class="text-success"> Edit:</h5></legend> + + <button onclick="saveTextToLGService()" id="saveTextToLGService_id" style="height: 30px; width: 220px">Save to LGService</button></br> + + <!--<button onclick="cleanUpTextArea()" style="height: 30px; width: 220px">Reform the text</button></br>--> + <!-- save text in local. replaced by saveTextToLGService, which is also saving on copy in local in development stage --> + <!-- + <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')" style="height: 30px; width: 220px">Manage Word List</button></br> + <!-- + <button onclick="window.open('./EditTaglist')" style="height: 30px; width: 220px">Manage Tag List</button></br> + --> + <button onclick="editTaglist(<?php echo $default_topic_id; ?>)" style="height: 30px; width: 220px">Manage Tag List</button></br> + </fieldset> + + <fieldset> + <legend><h5 class="text-success"> Export:</h5></legend> + Page: <input type="text" size="5" id="exportPageStart">to<input type="text" size="5" id="exportPageEnd"><br> + <button onclick="exportPage(<?php echo $default_topic_id;?>)" style="height: 30px; width: 220px">Export</button></br> + <button onclick="exportAll(<?php echo $default_topic_id;?>)" style="height: 30px; width: 220px">Export All</button></br> + </fieldset> + + <fieldset> + <legend><h5 class="text-success"> Replace By <i><b>Regex</b></i>: </h5></legend> + Range: <input type="text" size="5" id="regexPageStart2">to<input type="text" size="5" id="regexPageEnd2"><br> + Regex: <input type="text" size="23" id="regexText"></br> + Replace: <input type="text" size="23" id="replaceText"><br> + <button onclick="replaceSmartRegex()">Replace!</button> + </fieldset> + </form> + </div> + </td> + </tr> + +</table> + + + + +</body> + +</html>