view develop/views/Extractapp/taggingtext.php @ 13:cc36a20a68ab

automatically decide which rows (what data) should be shown in the exporting table based on the topic.
author Zoe Hong <zhong@mpiwg-berlin.mpg.de>
date Tue, 17 Feb 2015 15:25:11 +0100
parents e82ca7375e93
children ac77748bb813
line wrap: on
line source

<?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_tag = $viewmodel['topic_tag'];
$info = $viewmodel['info'];
var_dump($info);

?>

<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">

// === This is only for developing on local machine ====
var _GET = JSON.parse('<?php echo json_encode($_GET) ?>');
if (_GET['id']) {
    
    var info = JSON.parse('<?php echo json_encode($info) ?>');
    var redirectUrl = "http://141.14.239.50:1080/localmonographs/develop/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();
}
// ====


<?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 {
 			// 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";
            		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";
                    } 

                }
            ?>
        }
        $('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;")
}


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 _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);

    var info = JSON.parse( '<?php echo json_encode($info) ?>');

    if (info) {
        // TODO: different field info array based on fileId(branchId) existing or not
        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);
        
        
    }

    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 config tags in topic ===
function configTagsInTopic(topic_id) {
    var form = document.createElement("form");
    
    form.setAttribute("method", "post");
    //form.setAttribute("action", "exportTable.php");
    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);

}


function saveTextToLGService(section_id) {
    var info = JSON.parse('<?php echo json_encode($info) ?>');
    
    var el = document.getElementById("editable-area");
    
    /*
    $.ajax({
        url : './TaggingText/'+section_id,
        async : false,
        type : 'POST',
        data : 'func=SaveFullTextToLGService'+'&text='+el.innerHTML+'&fileId='+info['file_id']+'&branchId='+info['branch_id']+'&userId='+info['user_id']+'&sectionId='+info['section_id'],
        success: function (result) {
            console.log(result);
        },
        error: function (data) {
            console.log("error when saving to LGService!");
        }
    }).done(function(result) {
        alert("Saved!");
        console.log("result: "+result);
    });
    
    */



    var form = document.createElement("form");
    form.setAttribute("method", "post");
    // form.setAttribute("action", "./");  // hand to controller
    
    form.setAttribute("action", "./"+info['section_id']);  // hand to controller
    form.setAttribute("target", "_self");
    
    var hiddenField = document.createElement("input");      
    hiddenField.setAttribute("name", "func");
    hiddenField.setAttribute("value", "SaveFullTextToLGService");
    form.appendChild(hiddenField); 
    
    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", "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", "200px");
    $('#load_topic_div').css("height", "50px");
    $('#load_topic_div').css("top", "20px");
    $('#load_topic_div').css("left", "-200px");

    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 topic_name = selected_topic.text;


		var form = document.createElement("form");
        form.setAttribute("method", "post");
        form.setAttribute("action", "./TaggingText");  // hand to controller
        //form.setAttribute("action", "./"+section_id);  // 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).attr("onclick", "$('#load_topic_div').css(\"display\", \"none\");");
    $('#load_topic_div').append(newbutton);
  
}


$(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="load_topic_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);">
					<button onclick="chooseTopic(<?php echo $default_topic_id; ?>)">Choose Topic</button>
					<button onclick="configTagsInTopic(<?php echo $default_topic_id;?>)" style="height: 30px; width: 220px">Config Tag List for Topic</button></br>
					<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="saveTextToLGService(<?php echo $section_id;?>)" style="height: 30px; width: 220px">Save to LGService</button></br>
                    
                        <!--<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 $default_topic_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>