Merge branch 'master' into SIMPLICITY_link
						commit
						f2e74727b7
					
				|  | @ -146,12 +146,12 @@ if(isset($_SESSION['info_Admin_Users'])) { | ||||||
|       <!-- code contributed by Xu Xiaopeng (https://github.com/xxp1999) --> |       <!-- code contributed by Xu Xiaopeng (https://github.com/xxp1999) --> | ||||||
|        |        | ||||||
|       <div id="menu2"  class="container tab-pane fade" style="margin-top:10px" > |       <div id="menu2"  class="container tab-pane fade" style="margin-top:10px" > | ||||||
| 		<b>Please separate student numbers with spaces.</b><br> | 	<b>Separate two student numbers with a space.</b><br> | ||||||
| 	<form action="batch_insert.php" method="post"> | 	<form action="batch_insert.php" method="post"> | ||||||
| 	  <p> | 	  <p> | ||||||
| 	    <textarea cols="80" rows="16" name="users" required=""></textarea> | 	    <textarea cols="80" rows="16" name="users" required=""></textarea> | ||||||
| 	  </p> | 	  </p> | ||||||
| 			<input type="submit" class="btn btn-primary" value="Create All"><br> | 	  <input type="submit" class="btn btn-primary" value="Register Students"><br> | ||||||
| 	</form>	 | 	</form>	 | ||||||
|       </div> |       </div> | ||||||
| 	 | 	 | ||||||
|  |  | ||||||
							
								
								
									
										86
									
								
								Course.php
								
								
								
								
							
							
						
						
									
										86
									
								
								Course.php
								
								
								
								
							|  | @ -98,6 +98,92 @@ if( $_SESSION['user_type'] == "Student") | ||||||
|     </li> |     </li> | ||||||
|     <li class="nav-item"> |     <li class="nav-item"> | ||||||
|     <a class="nav-link" data-toggle="tab" href="#menu4">Marked</a> |     <a class="nav-link" data-toggle="tab" href="#menu4">Marked</a> | ||||||
|  |     </li> | ||||||
|  |      | ||||||
|  |     <!----------Delete Course Button-----------> | ||||||
|  |     <li> | ||||||
|  | <html> | ||||||
|  | <body> | ||||||
|  | 	 | ||||||
|  | <div class="modal fade" id="delcourse"> | ||||||
|  |         <div class="modal-dialog"> | ||||||
|  |             <div class="modal-content"> | ||||||
|  |                 <div class="modal-header"> | ||||||
|  |                     <h2 class="modal-title">Please confirm!</h2> | ||||||
|  |                     <button type="button" class="close red" data-dismiss="modal"> | ||||||
|  |                         <span>×</span> | ||||||
|  |                     </button> | ||||||
|  |                 </div> | ||||||
|  |                 <div class="modal-body"> | ||||||
|  |                     <p>Are you sure about deleting this course? This action can not be reversed!</p> | ||||||
|  |                 </div> | ||||||
|  |                     <div class="modal-footer">  | ||||||
|  |                     <form method="POST" action=""> | ||||||
|  |                         <button type="button" class="btn action-button blue" data-dismiss="modal">Cancel</button> | ||||||
|  |                         <input type="submit" name="submit" class="btn action-button red" value="Delete"/> | ||||||
|  |                     </form> | ||||||
|  | 
 | ||||||
|  |                     </div> | ||||||
|  |                 </div> | ||||||
|  |             </div> | ||||||
|  |         </div> | ||||||
|  |         </div> | ||||||
|  |         <div class="row"> | ||||||
|  |             <div class="col"> | ||||||
|  |                 <button type="button" class="btn action-button red" data-toggle="modal" data-target="#delcourse">Delete Course</button> | ||||||
|  |             </div> | ||||||
|  |         </div> | ||||||
|  |     </div> | ||||||
|  | </div> | ||||||
|  |    | ||||||
|  |  <?php | ||||||
|  | 
 | ||||||
|  | // Connect to MySQL database
 | ||||||
|  | $con = mysqli_connect("localhost",  $mysql_username, $mysql_password, "lrr"); | ||||||
|  | 
 | ||||||
|  | // Check connection
 | ||||||
|  | if (mysqli_connect_errno()) | ||||||
|  | { | ||||||
|  |     echo "Failed to connect to MySQL: " . mysqli_connect_error(); | ||||||
|  | } | ||||||
|  | if(isset($_POST['submit'])){ | ||||||
|  |     header("Location: Courses.php"); | ||||||
|  |     $result = mysqli_query($con, "DELETE FROM course_students_table WHERE Course_ID='$course_id'"); | ||||||
|  |      | ||||||
|  | } | ||||||
|  |  ?>
 | ||||||
|  | 
 | ||||||
|  | <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"  | ||||||
|  |     integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" | ||||||
|  |         crossorigin="anonymous"></script> | ||||||
|  |     <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"  | ||||||
|  |     integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" | ||||||
|  |         crossorigin="anonymous"></script> | ||||||
|  |     <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"  | ||||||
|  |     integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" | ||||||
|  |         crossorigin="anonymous"></script> | ||||||
|  |   <style> | ||||||
|  | 
 | ||||||
|  |     /*--------------------[ Delete Course Button ]*/ | ||||||
|  | .action-button { | ||||||
|  | 	font-family: 'Pacifico', cursive; | ||||||
|  | 	font-size: 18px; | ||||||
|  | 	color: #FFF;
 | ||||||
|  | 	text-decoration: none;	 | ||||||
|  | } | ||||||
|  | .red { | ||||||
|  | 	background-color: #E74C3C;
 | ||||||
|  | 	border-bottom: 5px solid #BD3E31;
 | ||||||
|  | 	text-shadow: 0px -2px #BD3E31;
 | ||||||
|  | } | ||||||
|  | .blue { | ||||||
|  | 	background-color: #4d4dff;
 | ||||||
|  | 	border-bottom: 5px solid #4d4dff;
 | ||||||
|  | 	text-shadow: 0px -2px #4d4dff;
 | ||||||
|  | } | ||||||
|  | </style> | ||||||
|  | </body> | ||||||
|  | </html> | ||||||
| </li> | </li> | ||||||
|     </ul> |     </ul> | ||||||
|      |      | ||||||
|  |  | ||||||
|  | @ -23,7 +23,7 @@ $time = time(); | ||||||
| if ( (isset($_SESSION["user_student_id"]) && strpos($file, $_SESSION["user_student_id"])) || $_SESSION['user_type'] == "Lecturer" || $_SESSION['user_type'] == "TA") { | if ( (isset($_SESSION["user_student_id"]) && strpos($file, $_SESSION["user_student_id"])) || $_SESSION['user_type'] == "Lecturer" || $_SESSION['user_type'] == "TA") { | ||||||
|     // 发送文件头部
 |     // 发送文件头部
 | ||||||
|     header("Content-type: $type"); |     header("Content-type: $type"); | ||||||
|     header("Content-Disposition: attachment;filename=$filename"); |     header('Content-Disposition: attachment;filename="'.urldecode($filename).'"'); | ||||||
|     header("Content-Transfer-Encoding: binary"); |     header("Content-Transfer-Encoding: binary"); | ||||||
|     header('Pragma: no-cache'); |     header('Pragma: no-cache'); | ||||||
|     header('Expires: 0'); |     header('Expires: 0'); | ||||||
|  |  | ||||||
|  | @ -18,7 +18,7 @@ if (mysqli_connect_errno()) { | ||||||
| 
 | 
 | ||||||
| <html> | <html> | ||||||
| 
 | 
 | ||||||
| <header> | <head> | ||||||
| 
 | 
 | ||||||
| <link href="./css/bootstrap.min.css" rel="stylesheet" type="text/css"/> | <link href="./css/bootstrap.min.css" rel="stylesheet" type="text/css"/> | ||||||
| <link href="./font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css"/> | <link href="./font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css"/> | ||||||
|  | @ -29,7 +29,7 @@ if (mysqli_connect_errno()) { | ||||||
| <script src="./css/jquery.datetimepicker.min.js" type="text/javascript"></script> | <script src="./css/jquery.datetimepicker.min.js" type="text/javascript"></script> | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| </header> | </head> | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| <body> | <body> | ||||||
|  |  | ||||||
							
								
								
									
										43
									
								
								README.md
								
								
								
								
							
							
						
						
									
										43
									
								
								README.md
								
								
								
								
							|  | @ -17,7 +17,41 @@ Our mission is to make the experience of submitting assignments great for tens o | ||||||
| 
 | 
 | ||||||
| # Installation Instructions | # Installation Instructions | ||||||
| 
 | 
 | ||||||
| Check file INSTALLATION.md (TBA) for details. | 
 | ||||||
|  | ## Hui's steps | ||||||
|  | 
 | ||||||
|  | I spent about two hours on installing LRR to a bare, remote Ubuntu server (Ubuntu 20.04 LTS). | ||||||
|  | 
 | ||||||
|  | LRR needs Apache and MySQL to run.  I followed [How To Install Linux, Apache, MySQL, PHP (LAMP) stack on Ubuntu 20.04](https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-ubuntu-20-04) to set up these server applications. | ||||||
|  | 
 | ||||||
|  | LRR uses a database called `lrr`.  I need to export existing `lrr` to a plain text file (including many sql commands) and import that text file to the newly created `lrr` database on the new server. | ||||||
|  | The command for exporting the database is `mysqldump -u mnc -p lrr > lrr_database_dump.txt`. | ||||||
|  | The command for importing is `mysql -u mnc -p lrr < lrr_database_dump.txt`.  Read [How to Import and Export MySQL Databases in Linux](https://phoenixnap.com/kb/import-and-export-mysql-database) for more detail. | ||||||
|  | 
 | ||||||
|  | LRR also needs to store assignment submissions.  We store them in a folder called `../../lrr_submission`.  Note that `lrr_submission` is two levels above the project folder (where many PHP files reside).  I copied this folder from the existing one.  I think it is also OK if you create an empty folder.    | ||||||
|  | We need to set a proper owner and accessibility for `lrr_submission` using the following two commands: | ||||||
|  | `sudo chown -R www-data:www-data lrr_submission` and  `sudo chmod -R g+rw lrr_submission`.  Also, remember to change the user name and password in `lrr_submission//KeepItSafe.txt` for the database connection. | ||||||
|  | 
 | ||||||
|  | The above steps are preparation work. Now we could clone the LRR's repository to `/var/www/html/`. | ||||||
|  | Rename LRR to lrr.  Change the owner of lrr: `sudo chown -R $USER:$USER /var/www/lrr`. Edit apache configure file: `sudo nano /etc/apache2/sites-available/lrr.conf`. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     <VirtualHost *:80> | ||||||
|  |         ServerName lrr | ||||||
|  |         ServerAlias www.lrr.com | ||||||
|  |         ServerAdmin webmaster@localhost | ||||||
|  |         DocumentRoot /var/www/html/lrr | ||||||
|  |         ErrorLog ${APACHE_LOG_DIR}/error.log | ||||||
|  |         CustomLog ${APACHE_LOG_DIR}/access.log combined | ||||||
|  |     </VirtualHost> | ||||||
|  | 
 | ||||||
|  | Enable the site lrr: `sudo a2ensite lrr`.  Restart the apache server: `sudo systemctl reload apache2`. | ||||||
|  | Visit the LRR application by entering this URL in a web browser: http://121.4.94.30/. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## Enock's steps | ||||||
|  | 
 | ||||||
|  | Enock has made a tutorial about how he deployed LRR to a remote server (http://lanlab.org/course/2021s/spm/PuTTY-Server.txt). | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | @ -120,7 +154,12 @@ To submit bug reports or improvement ideas, please ask Hui [lanhui at zjnu.edu.c | ||||||
| 
 | 
 | ||||||
| ## Frequently Asked Questions | ## Frequently Asked Questions | ||||||
| 
 | 
 | ||||||
| Check FAQ.md (TBA) for details. | 
 | ||||||
|  | 1. Q: The web application's front page does not show properly, i.e., elements are not well aligned. | ||||||
|  |    A: You missed two folders `css` and `font-awesome`.  These folders include third-party js or css files and therefore are not included. | ||||||
|  | 
 | ||||||
|  | 1. Q: What if I do not have any information about the `lrr` database? | ||||||
|  |    A: You could use `lrr(1).sql` or `lrr_database.sql`.  It seems `lrr(1).sql` is more complete. | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| * Student Regisreation Process is now simplyfied, Student Passport/ID checking process skipped as there is no where find that information currenly. The system now checks Student Passport / National ID from users tables insead of verifying from school databse. | * Student Registration Process is now simplified, Student Passport/ID checking process skipped as there is nowhere find that information currently. The system now checks Student Passport / National ID from users’ tables instead of verifying from school database. | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
							
								
								
									
										14
									
								
								Script.php
								
								
								
								
							
							
						
						
									
										14
									
								
								Script.php
								
								
								
								
							|  | @ -414,7 +414,7 @@ if (!empty($_POST["frm_uploadlab"])) { | ||||||
|           |           | ||||||
|           |           | ||||||
|     $deadline = $deadlinedate." ".$deadlinetime; |     $deadline = $deadlinedate." ".$deadlinetime; | ||||||
|     $date =  date("Y-m-d H:i"); |     $date =  date("Y-m-d H:i:s"); | ||||||
|              |              | ||||||
|         |         | ||||||
|         |         | ||||||
|  | @ -537,7 +537,7 @@ if (!empty($_POST["frm_submitlab"])) { | ||||||
|     $url = mysqli_real_escape_string($con, $_POST["url"]); |     $url = mysqli_real_escape_string($con, $_POST["url"]); | ||||||
|      |      | ||||||
|     $deadline = $deadlinedate." ".$deadlinetime; |     $deadline = $deadlinedate." ".$deadlinetime; | ||||||
|     $date = date("Y-m-d H:i"); |     $date = date("Y-m-d H:i:s"); | ||||||
|      |      | ||||||
|     // GET UPLOADED FILES
 |     // GET UPLOADED FILES
 | ||||||
|     $labName = mysqli_query($con,"SELECT * FROM `lab_reports_table` WHERE Lab_Report_ID=$lab_id"); |     $labName = mysqli_query($con,"SELECT * FROM `lab_reports_table` WHERE Lab_Report_ID=$lab_id"); | ||||||
|  | @ -633,17 +633,17 @@ if (!empty($_POST["frm_submitlab"])) { | ||||||
|     $targetfile4 = ""; |     $targetfile4 = ""; | ||||||
| 
 | 
 | ||||||
|     if(strlen($_FILES['attachment1']['name']) > 2 ) { // why greater than 2???
 |     if(strlen($_FILES['attachment1']['name']) > 2 ) { // why greater than 2???
 | ||||||
|         $targetfile = "/".$student_id."/".$url."/".$lab_name."/".$_FILES['attachment1']['name']; |         $targetfile = "/".$student_id."/".$url."/".$lab_name."/".rawurlencode($_FILES['attachment1']['name']); | ||||||
|     } |     } | ||||||
|     |     | ||||||
|     if(strlen($_FILES['attachment2']['name']) > 2 ) { |     if(strlen($_FILES['attachment2']['name']) > 2 ) { | ||||||
|         $targetfile2 = "/".$student_id."/".$url."/".$lab_name."/".$_FILES['attachment2']['name']; } |         $targetfile2 = "/".$student_id."/".$url."/".$lab_name."/".rawurlencode($_FILES['attachment2']['name']); } | ||||||
|   |   | ||||||
|     if(strlen($_FILES['attachment3']['name']) > 2 ) { |     if(strlen($_FILES['attachment3']['name']) > 2 ) { | ||||||
|         $targetfile3 = "/".$student_id."/".$url."/".$lab_name."/".$_FILES['attachment3']['name'];} |         $targetfile3 = "/".$student_id."/".$url."/".$lab_name."/".rawurlencode($_FILES['attachment3']['name']);} | ||||||
|     |     | ||||||
|     if(strlen($_FILES['attachment4']['name']) > 2 ) { |     if(strlen($_FILES['attachment4']['name']) > 2 ) { | ||||||
|         $targetfile4 = "/".$student_id."/".$url."/".$lab_name."/".$_FILES['attachment4']['name']; |         $targetfile4 = "/".$student_id."/".$url."/".$lab_name."/".rawurlencode($_FILES['attachment4']['name']); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     // When $group_id is not properly initialized, use integer 0 as its value.
 |     // When $group_id is not properly initialized, use integer 0 as its value.
 | ||||||
|  | @ -729,7 +729,7 @@ if (!empty($_GET["savemarks"])) { | ||||||
|         echo " Marks could not be greater than total"; |         echo " Marks could not be greater than total"; | ||||||
|         return; |         return; | ||||||
|     } |     } | ||||||
|     $date=  date("Y-m-d H:i"); |     $date=  date("Y-m-d H:i:s"); | ||||||
|     $feedback="<br>@$date : ".$feedback; |     $feedback="<br>@$date : ".$feedback; | ||||||
|          |          | ||||||
|     $sql="UPDATE `lab_report_submissions` SET `Marks`='$marks',`Status`='$status'," |     $sql="UPDATE `lab_report_submissions` SET `Marks`='$marks',`Status`='$status'," | ||||||
|  |  | ||||||
|  | @ -32,7 +32,7 @@ if (isset($_SESSION["user_fullname"])) { | ||||||
| 
 | 
 | ||||||
|     <form method="post" action="Script.php" name="frm_login"> |     <form method="post" action="Script.php" name="frm_login"> | ||||||
|     <input type="hidden" name="frm_login" value="true"/> |     <input type="hidden" name="frm_login" value="true"/> | ||||||
|     Student ID / Email |     Student ID / Instructor Email | ||||||
|     <input type="text" name="user" placeholder="Email / Student Number" class="form-control" required="required" /> |     <input type="text" name="user" placeholder="Email / Student Number" class="form-control" required="required" /> | ||||||
|     <br> |     <br> | ||||||
|     Password |     Password | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue