view check_sections_details.php @ 20:ae69cfe4f9d2 default tip

new version, remove session mechanism, after all server side save data without session in previous version, check_sections_detail.php
author Calvin Yeh <cyeh@mpiwg-berlin.mpg.de>
date Mon, 25 Sep 2017 14:32:47 +0200
parents a15320882b30
children
line wrap: on
line source

<?php
include_once('config/Lib_mb_utf8.php');
include_once('config/config.php');
include_once('edit_section_db.php');
set_time_limit(0);
ini_set('memory_limit', '-1');

$link_mysql = mysql_connect($mysql_server, $mysql_user, $mysql_password);
mysql_query("SET NAMES utf8");

if (!$link_mysql) {
    die('Could not connect: ' . mysql_error());
}

$db_selected = mysql_select_db($mysql_database, $link_mysql);

if (!$db_selected) {
    die ('Can\'t use foo : ' . mysql_error());
}

function getBookInfo($bookId){
        $query="SELECT * FROM books WHERE id=".$bookId;
	$result=mysql_query($query);
	$bookInfo=mysql_fetch_assoc($result);
	return $bookInfo;
}

function printBookInfo($bookInfo){

	$str="<table class='bookInfo'><tr>
    <th class='bookId'>book id</th>
		<th class='bookName'>book name</th>
		<th class='level1'>level1</th>
		<th class='level2'>level2</th>
		<th class='period'>period</th>
		<th class='bookId'>pages</th>
		<th class='bookId'>version</th>
		<th class='bookName'>editor</th>
		<th class='bookName'>date</th></tr>";

	$str.="<tr>";
	$str.="<td>".$bookInfo['id'];
	$str.="</td><td>".$bookInfo['name'];
	$str.="</td><td>".$bookInfo['level1'];
	$str.="</td><td>".$bookInfo['level2'];
	$str.="</td><td>".$bookInfo['period'];
	$str.="</td><td>".$bookInfo['line'];
	$str.="</td><td>".$bookInfo['version'];
	$str.="</td><td>".$bookInfo['editor'];
	$str.="</td><td>".$bookInfo['date'];
	$str.="</td></tr></table>";

	echo $str;
}

function printSectionArray($sectionArray,$missingPageArray){
	$str="<div id='bookContainer'>";
	echo $str;
	$i=0;
	foreach($sectionArray as $idx=>$row){
		/*
		$flag="";
		if($i!=sizeof($pageArray) && $pageArray[$i]['start_page']==$row['start_page'] && $pageArray[$i]['end_page']==$row['end_page']){
			$flag="overlapper";
			$i++;
		}
		if($i!=0 && $pageArray[$i-1]['start_page']==$row['start_page'] && $pageArray[$i-1]['end_page']==$row['end_page']){
			$flag="overlapper";
		}*/
		if(!($idx!=0 && $sectionArray[$idx-1]['start_page']==$row['start_page'] && $sectionArray[$idx-1]['end_page']==$row['end_page'])
			&& $i<sizeof($missingPageArray) && $missingPageArray[$i]['end_page']==$row['start_page']){
			$str="<div class='missingPageContainer'><div class='missingPage'>Missing pages: ".$missingPageArray[$i]['start_page']." - ".$missingPageArray[$i]['end_page']."</div></div>";
			//$str.="<br>";
			$i++;
			echo $str;
		}

		$str="<div class='entry level".$row['level']." ".$row['flag']." ".$row['deleted']."'>";
			$str.="<div class='hiddenInfo'>";
				$str.="<div class='id'>".$row['id']."</div>";
				$str.="<div class='booksId'>".sprintf("%05d",$row['books_id'])."</div>";
				$str.="<div class='splitFrom'>".$row['split_from']."</div>";
				$str.="<div class='sectionAfter'>".$row['section_after']."</div>";
			$str.="</div>";//end of hiddenInfo
			$str.="<div class='sequence'>".($idx+1)."</div>";
			$str.="<div class='name'>".$row['name']."</div>";
			$str.="<div class='page'>";
				$str.="<div class='startPage'>".$row['start_page']."</div>";
				$str.=" - ";
				$str.="<div class='endPage'>".$row['end_page']."</div>";
			$str.="</div>";//end of page
		$str.="</div>";	//end of class entry
		echo $str;

	}
	if($i<sizeof($missingPageArray)){
		$str="<div class='missingPage'>Missing pages: ".$missingPageArray[$i]['start_page']." - ".$missingPageArray[$i]['end_page']."</div>";
                echo $str;
	}
	$str="</div>";
	echo $str;
}

if (isset($_GET['sessionId'])) {
	// check if get session info from LGService, to get username as editor
	$session_id = $_GET['sessionId'];

	global $lgserver_url;
	$lg_url = $lgserver_url."rest/utils/getUser?sessionId=".$session_id; // url to get username from LGService
	//$lg_url = "http://localgazetteers-dev/LGServices/rest/utils/getUser?sessionId=".$session_id; // url to get username from LGService
  $output = file_get_contents($lg_url);
  $user_info = json_decode($output, true);

  if(strcmp($user_info['status'], "ok") === 0 && isset($user_info['userName'])){

      $current_editor = (string)$user_info['userName'];

      if($current_editor == "" || strcmp($current_editor, "") === 0){

         // redirect to LGServices homepage
         header("Location: ".$lgserver_url);

         exit;

      }
  } else {

		   // redirect to LGServices homepage
		   header("Location: ".$lgserver_url);

       exit;
  }

} else {
	// test locally
	// redirect to LGServices homepage
	header("Location: ".$lgserver_url);
  exit;
}


?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

            <link href="css/jquery-ui/jquery-ui.css" type="text/css" rel="stylesheet"/>
           	<script src="js/jquery/1.6.2/jquery.min.js" type="text/javascript"></script>
            <script src="js/jquery/jquery-ui.js" type="text/javascript"></script>

            <link href="css/check_sections.css?v=18" type="text/css" rel="stylesheet"/>
            <script src="js/check_sections_details.js?v=18" type="text/javascript"></script>

    </head>
    <body>
		<div id="loading">...</div>
		<div id="container">
        	<?php
			$version=0;
			$editor="";
			$date="";
            if(isset($_GET['book_id']) && isset($_GET['count']) && is_numeric($_GET['count'])){
				$bookId=$_GET['book_id'];
				$count=$_GET['count'];
				$bookInfo=getBookInfo($bookId);
				$info=checkSectionInfo($bookId);
				$version=$info['version'];
				$editor=$info['editor'];
				$date=$info['date'];
				$bookInfo=array_merge($bookInfo,["version"=>$version,"editor"=>$editor,"date"=>$date]);
                                printBookInfo($bookInfo);
				//echo "version: ".$version."<br>last editor: ".$editor;
				$missingPageArray=checkMissingPage($bookInfo,$info);
			?>

			<table id="history_table">
				<thead>
					<button id="show_all" style="display:block;">Show history</button>
					<button id="close" style="display:none;margin-bottom:10px;">Close</button>
				</thead>
				<tbody id="history_body">

				</tbody>
			</table>
        	<div id="searchResults">
			<?php
				$sectionArray=getSectionArray($bookId,$count,$info);
				printSectionArray($sectionArray,$missingPageArray);
            }else{
				echo "Cannot process the data due to incomplete input.";
			}
            ?>
        	</div>
		</div>
		<div id="panel"></div>
		<script>
			var version=<?php echo $version;?>;
			var session_id = "<?php echo $_GET['sessionId'];?>";

		function setCurrentEditor() {
			// current_editor is gotten from LGService
		    var current_editor = <?php echo json_encode($current_editor) ?>;
		   if (current_editor != "") {
				$("#saveBook .editor").val(current_editor);
		    } else {
		    	alert("Error!! You have to login from LGService!");
			$("#loading").show();
		    }
		}

		function showAll() {

			<?php

				$query_editor = "(SELECT editor, date, version from sections_versions WHERE books_id='".$bookId."' ORDER BY version DESC)";
				$result = mysql_query($query_editor);

        while ($row = mysql_fetch_assoc($result)) {
            $history[] = $row;
        }

        $struct = array("data" => $history);
        print "var histories=".json_encode($struct) .";";

			?>

      var tableData = '<tr><td>Editor</td><td>Version</td><td>Saved Time</td></tr>';

      $.each(histories.data, function(index, data) {
             tableData += '<tr><td>'+data.editor+'</td><td>'+data.version+'</td><td>'+data.date+'</td><</tr>';
      });

      $('#history_body').html(tableData);

      document.getElementById("show_all").style.display = "none";
      document.getElementById("close").style.display = "block";

		}

    document.getElementById("show_all").onclick = showAll;

		function closeAll() {

      $('#history_body').html("");

      document.getElementById("show_all").style.display = "block";
      document.getElementById("close").style.display = "none";
		}

    document.getElementById("close").onclick = closeAll;


		// --- timeout reminder ---
		var timeoutID;
		delayedAlert();
		function delayedAlert() {
		 	timeoutID = window.setTimeout(slowAlert, 1200*1000);
		}
		function slowAlert() {
		 	if (confirm("Reminder: It's been 20 mins. Remember saving your work to prevent data lost.  \n\nKeep working? \n(Press Cancel will turn off this reminder.)")) {

				var lg_url = "<?php echo $lgserver_url?>" + "rest/utils/getUser?sessionId=" + session_id;

		 		$.post(lg_url, function(data) {
		 			console.log("renew session.");

		 		}).done(function(data){
		 			console.log(data);
		 			console.log("login as: " + data['userName']);

		 			if (data['userName'] == "") {
		 				alert("Error!! You have to re-login from LGService!");
						$("#loading").show();
		 			} else {
				 		timeoutID = window.setTimeout(slowAlert, 1200*1000);
		 			}

		 		}).fail(function(){
		 			console.log("fail to renew session.");
		 		});
		 	}

		}



		</script>


    </body>

</html>