Initial commit
This commit is contained in:
		
							parent
							
								
									c67747073d
								
							
						
					
					
						commit
						506f2710f4
					
				
							
								
								
									
										31
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Executable file
									
								
							
							
						
						
									
										31
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,31 @@
 | 
				
			||||||
 | 
					# OS generated files
 | 
				
			||||||
 | 
					.DS_Store
 | 
				
			||||||
 | 
					.DS_Store?
 | 
				
			||||||
 | 
					._*
 | 
				
			||||||
 | 
					.Trashes
 | 
				
			||||||
 | 
					Thumbs.db
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# The active config file copied from config-dist.php
 | 
				
			||||||
 | 
					config.php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Vim
 | 
				
			||||||
 | 
					*.swp
 | 
				
			||||||
 | 
					*.swo
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# SQLite
 | 
				
			||||||
 | 
					*.sqlite
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Ignore the images/ folder
 | 
				
			||||||
 | 
					images/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# sass generated files
 | 
				
			||||||
 | 
					.sass-cache/
 | 
				
			||||||
 | 
					install/.sass-cache/
 | 
				
			||||||
 | 
					compressed
 | 
				
			||||||
 | 
					*.map
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# IDE generated
 | 
				
			||||||
 | 
					.idea/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Authorize.net SDK
 | 
				
			||||||
 | 
					vendor/
 | 
				
			||||||
							
								
								
									
										29
									
								
								ajax/deletelink.php
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										29
									
								
								ajax/deletelink.php
									
									
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,29 @@
 | 
				
			||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require '../header.php';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$data = array();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if ( !isset($_REQUEST['id']) || !is_numeric($_REQUEST['id']) ) {
 | 
				
			||||||
 | 
					   exit();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$id = intval($_REQUEST['id']);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$link = new WebLink($id);
 | 
				
			||||||
 | 
					if ( $link->delete() === false ) {
 | 
				
			||||||
 | 
					   $data['success'] = false;
 | 
				
			||||||
 | 
					   $data['message'] = "Invalid link! Cannot delete!";
 | 
				
			||||||
 | 
					   pushData();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$data['success'] = true;
 | 
				
			||||||
 | 
					$data['message'] = "Link deleted!";
 | 
				
			||||||
 | 
					pushData();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function pushData() {
 | 
				
			||||||
 | 
					   global $data;
 | 
				
			||||||
 | 
					   header('Content-Type: application/json');
 | 
				
			||||||
 | 
					   echo json_encode($data);
 | 
				
			||||||
 | 
					   exit();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										25
									
								
								ajax/getlinkdata.php
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										25
									
								
								ajax/getlinkdata.php
									
									
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,25 @@
 | 
				
			||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require '../header.php';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if ( isset($_REQUEST['id']) && is_numeric($_REQUEST['id']) && (intval($_REQUEST['id']) != 0) ) {
 | 
				
			||||||
 | 
					   $id = intval($_REQUEST['id']);
 | 
				
			||||||
 | 
					} else {
 | 
				
			||||||
 | 
					   $id = null;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$data = array();
 | 
				
			||||||
 | 
					$link = new WebLink($id);
 | 
				
			||||||
 | 
					$data['id'] = $link->getID();
 | 
				
			||||||
 | 
					$data['url'] = $link->getURL();
 | 
				
			||||||
 | 
					$data['title'] = $link->getTitle();
 | 
				
			||||||
 | 
					$data['description'] = $link->getDescription();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pushData($data);
 | 
				
			||||||
 | 
					exit();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function pushData($data) {
 | 
				
			||||||
 | 
					   header('Content-Type: application/json');
 | 
				
			||||||
 | 
					   echo json_encode($data);
 | 
				
			||||||
 | 
					   exit();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										27
									
								
								ajax/getlinks.php
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										27
									
								
								ajax/getlinks.php
									
									
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,27 @@
 | 
				
			||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require '../header.php';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$data = array();
 | 
				
			||||||
 | 
					$data['links'] = array();
 | 
				
			||||||
 | 
					$links = WebLink::getList();
 | 
				
			||||||
 | 
					foreach ( $links as $link ) {
 | 
				
			||||||
 | 
					   $row = array();
 | 
				
			||||||
 | 
					   $row['id'] = $link->getID();
 | 
				
			||||||
 | 
					   $row['url'] = $link->getURL();
 | 
				
			||||||
 | 
					   $row['url_safe'] = $link->getURL(HTMLSAFE);
 | 
				
			||||||
 | 
					   $row['title'] = $link->getTitle();
 | 
				
			||||||
 | 
					   $row['title_safe'] = $link->getTitle(HTMLSAFE);
 | 
				
			||||||
 | 
					   $row['description'] = $link->getDescription();
 | 
				
			||||||
 | 
					   $row['description_safe'] = $link->getDescription(HTMLSAFE);
 | 
				
			||||||
 | 
					   $data['links'][] = $row;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pushData($data);
 | 
				
			||||||
 | 
					exit();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function pushData($data) {
 | 
				
			||||||
 | 
					   header('Content-Type: application/json');
 | 
				
			||||||
 | 
					   echo json_encode($data);
 | 
				
			||||||
 | 
					   exit();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										50
									
								
								ajax/savelink.php
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										50
									
								
								ajax/savelink.php
									
									
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,50 @@
 | 
				
			||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require '../header.php';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$data = array();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if ( !isset($_REQUEST['id'])
 | 
				
			||||||
 | 
					     || !isset($_REQUEST['url'])
 | 
				
			||||||
 | 
					     || !isset($_REQUEST['title'])
 | 
				
			||||||
 | 
					     || !isset($_REQUEST['description']) ) {
 | 
				
			||||||
 | 
					   exit();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$id = intval($_REQUEST['id']);
 | 
				
			||||||
 | 
					$url = $_REQUEST['url'];
 | 
				
			||||||
 | 
					$title = $_REQUEST['title'];
 | 
				
			||||||
 | 
					$description = $_REQUEST['description'];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$link = new WebLink($id);
 | 
				
			||||||
 | 
					if ( $link->setURL($url) === false ) {
 | 
				
			||||||
 | 
					   $data['success'] = false;
 | 
				
			||||||
 | 
					   $data['message'] = "Invalid URL! URL cannot be left blank.";
 | 
				
			||||||
 | 
					   pushData();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					if ( $link->setTitle($title) === false ) {
 | 
				
			||||||
 | 
					   $data['success'] = false;
 | 
				
			||||||
 | 
					   $data['message'] = "Invalid title! Title cannot be left blank.";
 | 
				
			||||||
 | 
					   pushData();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					if ( $link->setDescription($description) === false ) {
 | 
				
			||||||
 | 
					   $data['success'] = false;
 | 
				
			||||||
 | 
					   $data['message'] = "Invalid description! Description cannot be left blank.";
 | 
				
			||||||
 | 
					   pushData();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if ( $link->save() === false ) {
 | 
				
			||||||
 | 
					   $data['success'] = false;
 | 
				
			||||||
 | 
					   $data['message'] = "Error saving link!.";
 | 
				
			||||||
 | 
					   pushData();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					$data['success'] = true;
 | 
				
			||||||
 | 
					$data['message'] = (is_null($link->getID())) ? "New link created! Thank you :)" : "Link edited! Thank you :)";
 | 
				
			||||||
 | 
					pushData();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function pushData() {
 | 
				
			||||||
 | 
					   global $data;
 | 
				
			||||||
 | 
					   header('Content-Type: application/json');
 | 
				
			||||||
 | 
					   echo json_encode($data);
 | 
				
			||||||
 | 
					   exit();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										134
									
								
								class_link.php
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										134
									
								
								class_link.php
									
									
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,134 @@
 | 
				
			||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class WebLink {
 | 
				
			||||||
 | 
					   private $id = null;
 | 
				
			||||||
 | 
					   private $url = null;
 | 
				
			||||||
 | 
					   private $title = null;
 | 
				
			||||||
 | 
					   private $description = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   const TABLE = "links";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   public function getID() {
 | 
				
			||||||
 | 
					      return $this->id;
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   public function getURL($flag = 0) {
 | 
				
			||||||
 | 
					      switch ($flag) {
 | 
				
			||||||
 | 
					         case HTMLSAFE:
 | 
				
			||||||
 | 
					            return htmlspecialchars($this->url);
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					         case HTMLFORMSAFE:
 | 
				
			||||||
 | 
					            return htmlspecialchars($this->url, ENT_QUOTES);
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					         default:
 | 
				
			||||||
 | 
					            return $this->url;
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   public function getTitle($flag = 0) {
 | 
				
			||||||
 | 
					      switch ($flag) {
 | 
				
			||||||
 | 
					         case HTMLSAFE:
 | 
				
			||||||
 | 
					            return htmlspecialchars($this->title);
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					         case HTMLFORMSAFE:
 | 
				
			||||||
 | 
					            return htmlspecialchars($this->title, ENT_QUOTES);
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					         default:
 | 
				
			||||||
 | 
					            return $this->title;
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   public function getDescription($flag = 0) {
 | 
				
			||||||
 | 
					      switch ($flag) {
 | 
				
			||||||
 | 
					         case HTMLSAFE:
 | 
				
			||||||
 | 
					            return htmlspecialchars($this->description);
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					         case HTMLFORMSAFE:
 | 
				
			||||||
 | 
					            return htmlspecialchars($this->description, ENT_QUOTES);
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					         default:
 | 
				
			||||||
 | 
					            return $this->description;
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   public function setURL($value) {
 | 
				
			||||||
 | 
					      if ( is_null($value) || ($value == "") ) return false;
 | 
				
			||||||
 | 
					      $this->url = $value;
 | 
				
			||||||
 | 
					      return true;
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   public function setTitle($value) {
 | 
				
			||||||
 | 
					      if ( is_null($value) || ($value == "") ) return false;
 | 
				
			||||||
 | 
					      $this->title = $value;
 | 
				
			||||||
 | 
					      return true;
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   public function setDescription($value) {
 | 
				
			||||||
 | 
					      if ( is_null($value) || ($value == "") ) return false;
 | 
				
			||||||
 | 
					      $this->description = $value;
 | 
				
			||||||
 | 
					      return true;
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   public static function getList() {
 | 
				
			||||||
 | 
					      global $globaldbh;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      $query = "SELECT id FROM " . WebLink::TABLE . " ORDER BY title";
 | 
				
			||||||
 | 
					      $sth = $globaldbh->prepare($query);
 | 
				
			||||||
 | 
					      $sth->execute();
 | 
				
			||||||
 | 
					      $thelist = array();
 | 
				
			||||||
 | 
					      while ( $row = $sth->fetch(PDO::FETCH_ASSOC) ) {
 | 
				
			||||||
 | 
					         $thelist[] = new WebLink($row['id']);
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      return $thelist;
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   public function delete() {
 | 
				
			||||||
 | 
					      global $globaldbh;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if ( is_null($this->id) ) return false;
 | 
				
			||||||
 | 
					      $query = "DELETE from " . WebLink::TABLE . " WHERE id=:id";
 | 
				
			||||||
 | 
					      $fields = array();
 | 
				
			||||||
 | 
					      $fields[':id'] = $this->id;
 | 
				
			||||||
 | 
					      $sth = $globaldbh->prepare($query);
 | 
				
			||||||
 | 
					      $saved = $sth->execute($fields);
 | 
				
			||||||
 | 
					      return $saved;
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   public function save() {
 | 
				
			||||||
 | 
					      global $globaldbh;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      $query = "INSERT INTO " . WebLink::TABLE . " " .
 | 
				
			||||||
 | 
					               "(id, url, title, description) " .
 | 
				
			||||||
 | 
					               "VALUES(:id, :url, :title, :description) " .
 | 
				
			||||||
 | 
					               "ON DUPLICATE KEY UPDATE " .
 | 
				
			||||||
 | 
					               "url=:url, title=:title, description=:description";
 | 
				
			||||||
 | 
					      $fields = array();
 | 
				
			||||||
 | 
					      $fields[':id'] = $this->getID();
 | 
				
			||||||
 | 
					      $fields[':url'] = $this->getURL();
 | 
				
			||||||
 | 
					      $fields[':title'] = $this->getTitle();
 | 
				
			||||||
 | 
					      $fields[':description'] = $this->getDescription();
 | 
				
			||||||
 | 
					      $sth = $globaldbh->prepare($query);
 | 
				
			||||||
 | 
					      $saved = $sth->execute($fields);
 | 
				
			||||||
 | 
					      return $saved;
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   public function __construct($id = null) {
 | 
				
			||||||
 | 
					      global $globaldbh;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      $query = "SELECT id, url, title, description FROM " . WebLink::TABLE . " WHERE id=:id";
 | 
				
			||||||
 | 
					      $fields = array();
 | 
				
			||||||
 | 
					      $fields[':id'] = $id;
 | 
				
			||||||
 | 
					      $sth = $globaldbh->prepare($query);
 | 
				
			||||||
 | 
					      $sth->execute($fields);
 | 
				
			||||||
 | 
					      if ( $row = $sth->fetch(PDO::FETCH_ASSOC) ) {
 | 
				
			||||||
 | 
					         $this->id = $row['id'];
 | 
				
			||||||
 | 
					         $this->setURL($row['url']);
 | 
				
			||||||
 | 
					         $this->setTitle($row['title']);
 | 
				
			||||||
 | 
					         $this->setDescription($row['description']);
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      return;
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										24
									
								
								config-dist.php
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										24
									
								
								config-dist.php
									
									
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,24 @@
 | 
				
			||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Session Information
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					define('SESSNAME', 'dynamiclinks'); // Must be only letters and numbers!
 | 
				
			||||||
 | 
					define('PAGETITLE', 'Link Registration'); // This is the large label in the header of each page
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Database Type: Valid values are 'mysql' and 'sqlite'
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					define('DBTYPE', 'mysql');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// SQLite Database Configuration. Ignore if not using SQLite
 | 
				
			||||||
 | 
					// This must be set to the full path of the SQLite database file.
 | 
				
			||||||
 | 
					// The folder containing this file MUST also be writable!
 | 
				
			||||||
 | 
					// SUPER IMPORTANT!!! This file MUST be included in a regular backup schedule!!!
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					define('SQLITEDB', '/tmp/mcplaces.sqlite');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// MySQL Database Configuration. Ignore if not using MySQL
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					define('DBHOST', 'localhost');
 | 
				
			||||||
 | 
					define('DBUSER', 'root');
 | 
				
			||||||
 | 
					define('DBPASS', '');
 | 
				
			||||||
 | 
					define('DBNAME', 'test');
 | 
				
			||||||
							
								
								
									
										14
									
								
								constants.php
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										14
									
								
								constants.php
									
									
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,14 @@
 | 
				
			||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					define("HTMLSAFE",     1000001);
 | 
				
			||||||
 | 
					define("HTMLFORMSAFE", 1000002);
 | 
				
			||||||
 | 
					define("CSVSAFE",      1000003);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					define("TIMESTAMP",    1000101);
 | 
				
			||||||
 | 
					define("PRETTY",       1000102);
 | 
				
			||||||
 | 
					define("SHORTDATE",    1000103);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					define("BOOLEANDB",    1000201);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					define("NOLIMIT", 0);
 | 
				
			||||||
 | 
					define("NOFLAG", 0);
 | 
				
			||||||
							
								
								
									
										133
									
								
								css/main.css
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										133
									
								
								css/main.css
									
									
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,133 @@
 | 
				
			||||||
 | 
					:root {
 | 
				
			||||||
 | 
					   --main-fg-color: #0d47a1;
 | 
				
			||||||
 | 
					   --main-highlight-color: #2196f3;
 | 
				
			||||||
 | 
					   --toast-fail-color: #c62828;
 | 
				
			||||||
 | 
					   --toast-warn-color: #ffa000;
 | 
				
			||||||
 | 
					   --table-highlight-color: #bbdefb;
 | 
				
			||||||
 | 
					   --logo-bg-color: white;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.input-field label {
 | 
				
			||||||
 | 
					  color: var(--main-fg-color);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.failtoast {
 | 
				
			||||||
 | 
					  color: white;
 | 
				
			||||||
 | 
					  background-color: var(--toast-fail-color);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.clickable {
 | 
				
			||||||
 | 
					  cursor: pointer;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.warningtoast {
 | 
				
			||||||
 | 
					  color: white;
 | 
				
			||||||
 | 
					  background-color: var(--toast-warn-color);;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					nav, footer {
 | 
				
			||||||
 | 
					  background-color: var(--main-fg-color) !important;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					body {
 | 
				
			||||||
 | 
					  display: flex;
 | 
				
			||||||
 | 
					  min-height: 100vh;
 | 
				
			||||||
 | 
					  flex-direction: column;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.navbar-logo {
 | 
				
			||||||
 | 
					  height: 46px;
 | 
				
			||||||
 | 
					  margin: 8px;
 | 
				
			||||||
 | 
					  padding: 4px;
 | 
				
			||||||
 | 
					  border-radius: 3px;
 | 
				
			||||||
 | 
					  background-color: var(--logo-bg-color);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.invisible {
 | 
				
			||||||
 | 
					  visibility: hidden !important;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.bold {
 | 
				
			||||||
 | 
					  font-weight: bold !important;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.narrow {
 | 
				
			||||||
 | 
					  margin-bottom: 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					main {
 | 
				
			||||||
 | 
					  flex: 1 0 auto;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					table.highlight tbody tr:hover {
 | 
				
			||||||
 | 
					  background-color: var(--table-highlight-color) !important;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#toast-container {
 | 
				
			||||||
 | 
					  z-index: 1000000;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.modal-footer {
 | 
				
			||||||
 | 
					  height: 5em !important;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.wide {
 | 
				
			||||||
 | 
					  width: 100%;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[type="radio"]:checked + span:after,
 | 
				
			||||||
 | 
					[type="radio"].with-gap:checked + span:before,
 | 
				
			||||||
 | 
					[type="radio"].with-gap:checked + span:after {
 | 
				
			||||||
 | 
					  border: 2px solid var(--main-fg-color);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[type="radio"]:checked + span:after,
 | 
				
			||||||
 | 
					[type="radio"].with-gap:checked + span:after {
 | 
				
			||||||
 | 
					  background-color: var(--main-fg-color);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.btn, .btn-small {
 | 
				
			||||||
 | 
					  background-color: var(--main-fg-color);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.btn:hover, .btn-small:hover {
 | 
				
			||||||
 | 
					  background-color: var(--main-highlight-color);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.btn:focus, .btn-large:focus, .btn-small:focus,
 | 
				
			||||||
 | 
					.btn-floating:focus {
 | 
				
			||||||
 | 
					  background-color: var(--main-fg-color);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.dropdown-content li > a, .dropdown-content li > span {
 | 
				
			||||||
 | 
					  color: var(--main-fg-color);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.tabs {
 | 
				
			||||||
 | 
					  height: 100px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.tabs .tab {
 | 
				
			||||||
 | 
					  line-height: 100px;
 | 
				
			||||||
 | 
					  height: 100px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.tabs .tab a {
 | 
				
			||||||
 | 
					  color: var(--main-highlight-color);
 | 
				
			||||||
 | 
					  font-size: 24px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.tabs .tab a:focus, .tabs .tab a:focus.active {
 | 
				
			||||||
 | 
					  background-color: transparent;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.tabs .tab a:hover, .tabs .tab a.active {
 | 
				
			||||||
 | 
					  color: black;
 | 
				
			||||||
 | 
					  cursor: pointer;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.tabs .tab.disabled a,
 | 
				
			||||||
 | 
					.tabs .tab.disabled a:hover {
 | 
				
			||||||
 | 
					  color: var(--main-highlight-color);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.tabs .indicator {
 | 
				
			||||||
 | 
					  background-color: var(--main-highlight-color);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										7
									
								
								db.sql
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										7
									
								
								db.sql
									
									
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,7 @@
 | 
				
			||||||
 | 
					CREATE TABLE `links` (
 | 
				
			||||||
 | 
					  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
 | 
				
			||||||
 | 
					  `url` text NOT NULL,
 | 
				
			||||||
 | 
					  `title` varchar(255) NOT NULL,
 | 
				
			||||||
 | 
					  `description` text NOT NULL,
 | 
				
			||||||
 | 
					  PRIMARY KEY (`id`)
 | 
				
			||||||
 | 
					) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
 | 
				
			||||||
							
								
								
									
										1
									
								
								error.html
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										1
									
								
								error.html
									
									
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1 @@
 | 
				
			||||||
 | 
					Could not connect to the database.
 | 
				
			||||||
							
								
								
									
										75
									
								
								functions.php
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										75
									
								
								functions.php
									
									
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,75 @@
 | 
				
			||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// A simple function to redirect a page while still in the header
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					function redirectPage($page = null) {
 | 
				
			||||||
 | 
					   if ( is_null($page) ) $page = "index.php";
 | 
				
			||||||
 | 
					   header("Location: {$page}");
 | 
				
			||||||
 | 
					   exit();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// This function outputs the HTML header along with adding a string
 | 
				
			||||||
 | 
					// of text to the page title.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					function includeHTMLHeader($headertext = "", ...$sheets) {
 | 
				
			||||||
 | 
					   global $currentuser;
 | 
				
			||||||
 | 
					   if ($headertext != "") $fullpagetitle = htmlspecialchars($headertext);
 | 
				
			||||||
 | 
					   $extrasheets = "      <!-- Extra CSS included by the current page -->\n";
 | 
				
			||||||
 | 
					   foreach ( $sheets as $sheet ) {
 | 
				
			||||||
 | 
					      $extrasheets .= "      <link type='text/css' rel='stylesheet' href='css/{$sheet}'/>\n";
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					   require 'htmlheader.php';
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// This function outputs the HTML header along with adding a string
 | 
				
			||||||
 | 
					// of text to the page title. This is for pages without side navigation.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					function includeHTMLHeaderBasic($headertext = "", ...$sheets) {
 | 
				
			||||||
 | 
					   global $currentuser;
 | 
				
			||||||
 | 
					   if ($headertext != "") $fullpagetitle = htmlspecialchars($headertext);
 | 
				
			||||||
 | 
					   $extrasheets = "      <!-- Extra CSS included by the current page -->\n";
 | 
				
			||||||
 | 
					   foreach ( $sheets as $sheet ) {
 | 
				
			||||||
 | 
					      $extrasheets .= "      <link type='text/css' rel='stylesheet' href='css/{$sheet}'/>\n";
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					   require 'htmlheader-basic.php';
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// This function outputs the HTML footer along with adding script tags
 | 
				
			||||||
 | 
					// for any script files passed to the function. These files are assumed
 | 
				
			||||||
 | 
					// to be in the js/ folder.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					function includeHTMLFooter(...$scripts) {
 | 
				
			||||||
 | 
					   require 'htmlfooter.php';
 | 
				
			||||||
 | 
					   foreach ( $scripts as $script ) {
 | 
				
			||||||
 | 
					      echo "<script type='text/javascript' src='js/", trim($script), "'></script>\n";
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					   echo "    </body>\n";
 | 
				
			||||||
 | 
					   echo "  </html>\n";
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// This function outputs the HTML footer along with adding script tags
 | 
				
			||||||
 | 
					// for any script files passed to the function. These files are assumed
 | 
				
			||||||
 | 
					// to be in the js/ folder. This is for pages without side navigation.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					function includeHTMLFooterBasic(...$scripts) {
 | 
				
			||||||
 | 
					   require 'htmlfooter-basic.php';
 | 
				
			||||||
 | 
					   foreach ( $scripts as $script ) {
 | 
				
			||||||
 | 
					      echo "<script type='text/javascript' src='js/", trim($script), "'></script>\n";
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					   echo "    </body>\n";
 | 
				
			||||||
 | 
					   echo "  </html>\n";
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function isValidIPAddress($address) {
 | 
				
			||||||
 | 
					   $octets = explode(".", $address);
 | 
				
			||||||
 | 
					   if ( count($octets) != 4 ) return false;
 | 
				
			||||||
 | 
					   foreach ( $octets as $octet ) {
 | 
				
			||||||
 | 
					      if ( !is_numeric($octet) || ($octet < 0) || ($octet > 255) ) return false;
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					   return true;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										7
									
								
								header-includes.php
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										7
									
								
								header-includes.php
									
									
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,7 @@
 | 
				
			||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require 'constants.php';
 | 
				
			||||||
 | 
					require 'config.php';
 | 
				
			||||||
 | 
					require 'functions.php';
 | 
				
			||||||
 | 
					require 'class_link.php';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										15
									
								
								header.php
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										15
									
								
								header.php
									
									
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,15 @@
 | 
				
			||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require 'header-includes.php';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Make our PDO database connection which will be used in all scripts
 | 
				
			||||||
 | 
					try {
 | 
				
			||||||
 | 
					   $globaldbh = new PDO("mysql:host=" . DBHOST . ";dbname=" . DBNAME, DBUSER, DBPASS);
 | 
				
			||||||
 | 
					} catch (PDOException $e) {
 | 
				
			||||||
 | 
					   header('Location: error.html');
 | 
				
			||||||
 | 
					   exit(); 
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if ( php_sapi_name() != "cli" ) {
 | 
				
			||||||
 | 
					   require 'startsession.php';
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										15
									
								
								htmlfooter-basic.php
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										15
									
								
								htmlfooter-basic.php
									
									
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,15 @@
 | 
				
			||||||
 | 
					  </main>
 | 
				
			||||||
 | 
					  <footer class="page-footer">
 | 
				
			||||||
 | 
					    <div class="footer-copyright grey lighten-2">
 | 
				
			||||||
 | 
					      <div class="container grey-text text-darken-2">
 | 
				
			||||||
 | 
					        © Link Registration
 | 
				
			||||||
 | 
					      </div>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					  </footer>
 | 
				
			||||||
 | 
					  <!-- Import jQuery before materialize.js -->
 | 
				
			||||||
 | 
					  <script type="text/javascript" src="js/jquery-3.3.1.min.js"></script>
 | 
				
			||||||
 | 
					  <!-- Compiled and minified JavaScript -->
 | 
				
			||||||
 | 
					  <script type="text/javascript" src="materialize/js/materialize.min.js"></script>
 | 
				
			||||||
 | 
					  <!-- Main JS file for housekeeping and functions -->
 | 
				
			||||||
 | 
					  <script type="text/javascript" src="js/main.js"></script>
 | 
				
			||||||
 | 
					  <!--Page Specific JavaScript-->
 | 
				
			||||||
							
								
								
									
										19
									
								
								htmlfooter.php
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										19
									
								
								htmlfooter.php
									
									
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,19 @@
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
 | 
					  </main>
 | 
				
			||||||
 | 
					  <footer class="page-footer">
 | 
				
			||||||
 | 
					    <div class="footer-copyright grey lighten-3">
 | 
				
			||||||
 | 
					      <div class="container grey-text light-text">
 | 
				
			||||||
 | 
					        © Link Registration
 | 
				
			||||||
 | 
					      </div>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					  </footer>
 | 
				
			||||||
 | 
					  <!--Import jQuery before materialize.js-->
 | 
				
			||||||
 | 
					  <script type="text/javascript" src="js/jquery-3.3.1.min.js"></script>
 | 
				
			||||||
 | 
					  <!-- Compiled and minified JavaScript -->
 | 
				
			||||||
 | 
					  <script type="text/javascript" src="materialize/js/materialize.min.js"></script>
 | 
				
			||||||
 | 
					  <!-- https://momentjs.com MomentJS for time and date functions on the client -->
 | 
				
			||||||
 | 
					  <script type="text/javascript" src="js/moment.min.js"></script>
 | 
				
			||||||
 | 
					  <!-- Main JS file for housekeeping and functions -->
 | 
				
			||||||
 | 
					  <script type="text/javascript" src="js/main.js"></script>
 | 
				
			||||||
 | 
					  <!--Page Specific JavaScript-->
 | 
				
			||||||
							
								
								
									
										39
									
								
								htmlheader-basic.php
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										39
									
								
								htmlheader-basic.php
									
									
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,39 @@
 | 
				
			||||||
 | 
					<!DOCTYPE html>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<html>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<head>
 | 
				
			||||||
 | 
					  <meta charset="utf-8" />
 | 
				
			||||||
 | 
					  <title><?php echo $fullpagetitle; ?></title>
 | 
				
			||||||
 | 
					  <!--Import Google Icon Font-->
 | 
				
			||||||
 | 
					  <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
 | 
				
			||||||
 | 
					  <!--Let browser know website is optimized for mobile-->
 | 
				
			||||||
 | 
					  <meta content='width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0' name='viewport' />
 | 
				
			||||||
 | 
					  <!-- Favicon -->
 | 
				
			||||||
 | 
					  <link rel="apple-touch-icon" sizes="180x180" href="favicons/apple-touch-icon.png">
 | 
				
			||||||
 | 
					  <link rel="icon" type="image/png" sizes="32x32" href="favicons/favicon-32x32.png">
 | 
				
			||||||
 | 
					  <link rel="icon" type="image/png" sizes="16x16" href="favicons/favicon-16x16.png">
 | 
				
			||||||
 | 
					  <link rel="manifest" href="favicons/site.webmanifest">
 | 
				
			||||||
 | 
					  <link rel="mask-icon" href="favicons/safari-pinned-tab.svg" color="#5bbad5">
 | 
				
			||||||
 | 
					  <link rel="shortcut icon" href="favicons/favicon.ico">
 | 
				
			||||||
 | 
					  <meta name="msapplication-TileColor" content="#da532c">
 | 
				
			||||||
 | 
					  <meta name="msapplication-config" content="favicons/browserconfig.xml">
 | 
				
			||||||
 | 
					  <meta name="theme-color" content="#ffffff">
 | 
				
			||||||
 | 
					  <!-- Compiled and minified CSS -->
 | 
				
			||||||
 | 
					  <link rel="stylesheet" href="materialize/css/materialize.min.css">
 | 
				
			||||||
 | 
					  <!--Main CSS-->
 | 
				
			||||||
 | 
					  <link rel="stylesheet" href="css/main.css">
 | 
				
			||||||
 | 
					  <!-- Page Specific CSS -->
 | 
				
			||||||
 | 
					<?php
 | 
				
			||||||
 | 
					// This is where dynamically added stylesheets will show up
 | 
				
			||||||
 | 
					echo $extrasheets;
 | 
				
			||||||
 | 
					?>
 | 
				
			||||||
 | 
					</head>
 | 
				
			||||||
 | 
					<body>
 | 
				
			||||||
 | 
					<nav>
 | 
				
			||||||
 | 
					  <div class='nav-wrapper'>
 | 
				
			||||||
 | 
					    <img class='navbar-logo' src='images/logo.png' onerror="this.style.display='none'" /><a href='#!' class='brand-logo'><?php echo PAGETITLE; ?></a>
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
 | 
					</nav>
 | 
				
			||||||
 | 
					<main>
 | 
				
			||||||
							
								
								
									
										48
									
								
								htmlheader.php
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										48
									
								
								htmlheader.php
									
									
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,48 @@
 | 
				
			||||||
 | 
					<!DOCTYPE html>
 | 
				
			||||||
 | 
					<html>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<head>
 | 
				
			||||||
 | 
					  <meta charset="utf-8" />
 | 
				
			||||||
 | 
					  <title id="profile-title"><?php echo $fullpagetitle; ?></title>
 | 
				
			||||||
 | 
					  <!--Import Google Icon Font-->
 | 
				
			||||||
 | 
					  <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
 | 
				
			||||||
 | 
					  <!--Let browser know website is optimized for mobile-->
 | 
				
			||||||
 | 
					  <meta content='width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0' name='viewport' />
 | 
				
			||||||
 | 
					  <!-- Favicon -->
 | 
				
			||||||
 | 
					  <link rel="apple-touch-icon" sizes="180x180" href="favicons/apple-touch-icon.png">
 | 
				
			||||||
 | 
					  <link rel="icon" type="image/png" sizes="32x32" href="favicons/favicon-32x32.png">
 | 
				
			||||||
 | 
					  <link rel="icon" type="image/png" sizes="16x16" href="favicons/favicon-16x16.png">
 | 
				
			||||||
 | 
					  <link rel="manifest" href="favicons/site.webmanifest">
 | 
				
			||||||
 | 
					  <link rel="mask-icon" href="favicons/safari-pinned-tab.svg" color="#5bbad5">
 | 
				
			||||||
 | 
					  <link rel="shortcut icon" href="favicons/favicon.ico">
 | 
				
			||||||
 | 
					  <meta name="msapplication-TileColor" content="#da532c">
 | 
				
			||||||
 | 
					  <meta name="msapplication-config" content="favicons/browserconfig.xml">
 | 
				
			||||||
 | 
					  <meta name="theme-color" content="#ffffff">
 | 
				
			||||||
 | 
					  <!-- Compiled and minified CSS -->
 | 
				
			||||||
 | 
					  <link rel="stylesheet" href="materialize/css/materialize.min.css">
 | 
				
			||||||
 | 
					  <!--Main CSS-->
 | 
				
			||||||
 | 
					  <link rel="stylesheet" href="css/main.css">
 | 
				
			||||||
 | 
					  <!--Page Specific CSS-->
 | 
				
			||||||
 | 
					<?php
 | 
				
			||||||
 | 
					// This is where dynamically added stylesheets will show up
 | 
				
			||||||
 | 
					echo $extrasheets;
 | 
				
			||||||
 | 
					?>
 | 
				
			||||||
 | 
					</head>
 | 
				
			||||||
 | 
					<body>
 | 
				
			||||||
 | 
					<div class='navbar-fixed'>
 | 
				
			||||||
 | 
					<nav>
 | 
				
			||||||
 | 
					  <div class='nav-wrapper'>
 | 
				
			||||||
 | 
					    <img class='navbar-logo' src='images/logo.png' onerror="this.style.display='none'" /><a href='#!' class='brand-logo'><?php echo PAGETITLE; ?></a>
 | 
				
			||||||
 | 
					    <a href='#' data-target='mobile-menu' class='sidenav-trigger'><i class='material-icons'>menu</i></a>
 | 
				
			||||||
 | 
					    <ul class='right hide-on-med-and-down'>
 | 
				
			||||||
 | 
					      <li><a href='#!' onClick='openNewLinkModal()'>Add A Link</a></li>
 | 
				
			||||||
 | 
					    </ul>
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
 | 
					</nav>
 | 
				
			||||||
 | 
					</div>
 | 
				
			||||||
 | 
					<ul class='sidenav' id='mobile-menu'>
 | 
				
			||||||
 | 
					  <li><a href='addplace.php'>Add A Link</a></li>
 | 
				
			||||||
 | 
					</ul>
 | 
				
			||||||
 | 
					<main>
 | 
				
			||||||
 | 
					<div class='row'>
 | 
				
			||||||
 | 
					  <div class='col s8 offset-s2'>
 | 
				
			||||||
							
								
								
									
										64
									
								
								index.php
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										64
									
								
								index.php
									
									
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,64 @@
 | 
				
			||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require 'header.php';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					includeHTMLHeader("Link Manager");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					?>
 | 
				
			||||||
 | 
					<h3 class='center-align'>Links</h3>
 | 
				
			||||||
 | 
					<div class='row center-align'><a href='#!' class='tooltipped' data-position='bottom' data-tooltip='Register a new link' onClick='openEditLinkModal()'>Add A New Link</a></div>
 | 
				
			||||||
 | 
					<table class='bordered striped highlight'>
 | 
				
			||||||
 | 
					  <thead>
 | 
				
			||||||
 | 
					    <tr>
 | 
				
			||||||
 | 
					      <th>URL</th>
 | 
				
			||||||
 | 
					      <th>Title</th>
 | 
				
			||||||
 | 
					      <th>Description</th>
 | 
				
			||||||
 | 
					    </tr>
 | 
				
			||||||
 | 
					  </thead>
 | 
				
			||||||
 | 
					  <tbody id='linklist'></tbody>
 | 
				
			||||||
 | 
					</table>
 | 
				
			||||||
 | 
					<div id='editlink_modal' class='modal'>
 | 
				
			||||||
 | 
					  <div class='modal-content'>
 | 
				
			||||||
 | 
					    <input type='hidden' id='editlink_id' value='0' />
 | 
				
			||||||
 | 
					    <div class='row center-align'>
 | 
				
			||||||
 | 
					      <h3 id='editlink_modaltitle'>Link Data</h3>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					    <div class='row center-align'>
 | 
				
			||||||
 | 
					      <form class='col s6 offset-s3'>
 | 
				
			||||||
 | 
					        <div class='row'>
 | 
				
			||||||
 | 
					          <div class='input-field col s10 offset-s1'>
 | 
				
			||||||
 | 
					            <input id='editlink_url' type='text' value='' />
 | 
				
			||||||
 | 
					            <label for='editlink_url'>URL</label>
 | 
				
			||||||
 | 
					          </div>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					        <div class='row'>
 | 
				
			||||||
 | 
					          <div class='input-field col s10 offset-s1'>
 | 
				
			||||||
 | 
					            <input id='editlink_title' type='text' value='' />
 | 
				
			||||||
 | 
					            <label for='editlink_title'>Title</label>
 | 
				
			||||||
 | 
					          </div>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					        <div class='row'>
 | 
				
			||||||
 | 
					          <div class='input-field col s10 offset-s1'>
 | 
				
			||||||
 | 
					            <input id='editlink_description' type='text' value='' />
 | 
				
			||||||
 | 
					            <label for='editlink_description'>Description</label>
 | 
				
			||||||
 | 
					          </div>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					      </form>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
 | 
					  <div class='modal-footer'>
 | 
				
			||||||
 | 
					    <div class='col s1 offset-s2'>
 | 
				
			||||||
 | 
					      <a href='#!' id='editlink_modal_delete' class='btn-small red'>Delete</a>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					    <div class='col s2 offset-s2'>
 | 
				
			||||||
 | 
					      <a href='#!' id='editlink_modal_save' class='btn-small'>Save</a>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					    <div class='col s1 offset-s2'>
 | 
				
			||||||
 | 
					      <a href='#!' id='editlink_modal_cancel' class='btn-small'>Cancel</a>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
 | 
					</div>
 | 
				
			||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					includeHTMLFooter();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										2
									
								
								js/jquery-3.3.1.min.js
									
									
									
									
										vendored
									
									
										Executable file
									
								
							
							
						
						
									
										2
									
								
								js/jquery-3.3.1.min.js
									
									
									
									
										vendored
									
									
										Executable file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										143
									
								
								js/main.js
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										143
									
								
								js/main.js
									
									
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,143 @@
 | 
				
			||||||
 | 
					$(document).ready(function() {
 | 
				
			||||||
 | 
					    $(".dropdown-trigger").dropdown({hover: true, coverTrigger: false});
 | 
				
			||||||
 | 
					    $(".sidenav").sidenav();
 | 
				
			||||||
 | 
					    $(".tooltipped").tooltip();
 | 
				
			||||||
 | 
					    $('.modal').modal({dismissible: false});
 | 
				
			||||||
 | 
					    $('#editlink_modal_delete').click(function() { deleteLink(); });
 | 
				
			||||||
 | 
					    $('#editlink_modal_save').click(function() { saveEditLink(); });
 | 
				
			||||||
 | 
					    $('#editlink_modal_cancel').click(function() { cancelEditLink(); });
 | 
				
			||||||
 | 
					    updateLinkList();
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function goHome() {
 | 
				
			||||||
 | 
					    $.ajax({
 | 
				
			||||||
 | 
					        url: 'ajax/setlocation.php',
 | 
				
			||||||
 | 
					        dataType: 'json',
 | 
				
			||||||
 | 
					        data: {gohome: 1},
 | 
				
			||||||
 | 
					        success: function(data, stat, jqo) {
 | 
				
			||||||
 | 
					           if ( data.success ) window.location.href = "index.php";
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function escapeHTML(text) {
 | 
				
			||||||
 | 
					  var map = {
 | 
				
			||||||
 | 
					    '&': '&',
 | 
				
			||||||
 | 
					    '<': '<',
 | 
				
			||||||
 | 
					    '>': '>',
 | 
				
			||||||
 | 
					    '"': '"',
 | 
				
			||||||
 | 
					    "'": '''
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return text.relink(/[&<>"']/g, function(m) { return map[m]; });
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function encodeHTML(text) {
 | 
				
			||||||
 | 
					    return jQuery('<div />').text(text).html();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function decodeHTML(text) {
 | 
				
			||||||
 | 
					    return jQuery('<div />').html(text).text();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function toast(message, delay, classname) {
 | 
				
			||||||
 | 
					  if ( delay === undefined ) delay = 4000;
 | 
				
			||||||
 | 
					  if ( classname === undefined ) classname = "";
 | 
				
			||||||
 | 
					  M.toast({html: message, displayLength: delay, classes: classname});
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function openEditLinkModal(id = 0) {
 | 
				
			||||||
 | 
					    var instance = M.Modal.getInstance($('#editlink_modal'));
 | 
				
			||||||
 | 
					    $.ajax({
 | 
				
			||||||
 | 
					        url: 'ajax/getlinkdata.php',
 | 
				
			||||||
 | 
					        dataType: 'json',
 | 
				
			||||||
 | 
					        data: {id: id},
 | 
				
			||||||
 | 
					        success: function(data, stat, jqo) {
 | 
				
			||||||
 | 
					            if (data.id !== null) {
 | 
				
			||||||
 | 
					                $("#editlink_id").val(data.id);
 | 
				
			||||||
 | 
					                $("#editlink_url").val(data.url);
 | 
				
			||||||
 | 
					                $("#editlink_title").val(data.title);
 | 
				
			||||||
 | 
					                $("#editlink_description").val(data.description);
 | 
				
			||||||
 | 
					                $("#editlink_modal_delete").show();
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					                $("#editlink_id").val("0");
 | 
				
			||||||
 | 
					                $("#editlink_url").val("");
 | 
				
			||||||
 | 
					                $("#editlink_title").val("");
 | 
				
			||||||
 | 
					                $("#editlink_description").val("");
 | 
				
			||||||
 | 
					                $("#editlink_modal_delete").hide();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            M.updateTextFields();
 | 
				
			||||||
 | 
					            instance.open();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function updateLinkList() {
 | 
				
			||||||
 | 
					    $.ajax({
 | 
				
			||||||
 | 
					        type: 'GET',
 | 
				
			||||||
 | 
					        url: 'ajax/getlinks.php',
 | 
				
			||||||
 | 
					        dateType: 'json',
 | 
				
			||||||
 | 
					        success: function(data, stat, jqo) {
 | 
				
			||||||
 | 
					            var tabledata = "";
 | 
				
			||||||
 | 
					            for (var i=0; i<data.links.length; i++) {
 | 
				
			||||||
 | 
					                var link = data.links[i];
 | 
				
			||||||
 | 
					                tabledata += "<tr class='clickable' onClick='openEditLinkModal(" + link.id + ")'>";
 | 
				
			||||||
 | 
					                tabledata += "<td>" + link.url_safe + "</td>";
 | 
				
			||||||
 | 
					                tabledata += "<td>" + link.title_safe + "</td>";
 | 
				
			||||||
 | 
					                tabledata += "<td>" + link.description_safe + "</td>";
 | 
				
			||||||
 | 
					                tabledata += "</td>";
 | 
				
			||||||
 | 
					                tabledata += "</tr>";
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            $("#linklist").html(tabledata);
 | 
				
			||||||
 | 
					            $('.tooltipped').tooltip();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function deleteLink() {
 | 
				
			||||||
 | 
					    $.ajax({
 | 
				
			||||||
 | 
					        type: 'POST',
 | 
				
			||||||
 | 
					        url: 'ajax/deletelink.php',
 | 
				
			||||||
 | 
					        dataType: 'json',
 | 
				
			||||||
 | 
					        data: {id: $("#editlink_id").val()},
 | 
				
			||||||
 | 
					        success: function(data, stat, jqo) {
 | 
				
			||||||
 | 
					            if ( data.success ) {
 | 
				
			||||||
 | 
					                cancelEditLink();
 | 
				
			||||||
 | 
					                toast(data.message, 4000);
 | 
				
			||||||
 | 
					                updateLinkList();
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					                toast(data.message, 4000, "failtoast");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function saveEditLink() {
 | 
				
			||||||
 | 
					    $.ajax({
 | 
				
			||||||
 | 
					        type: 'POST',
 | 
				
			||||||
 | 
					        url: 'ajax/savelink.php',
 | 
				
			||||||
 | 
					        dataType: 'json',
 | 
				
			||||||
 | 
					        data: {id: $("#editlink_id").val(),
 | 
				
			||||||
 | 
					               url: $("#editlink_url").val(),
 | 
				
			||||||
 | 
					               title: $("#editlink_title").val(),
 | 
				
			||||||
 | 
					               description: $("#editlink_description").val()},
 | 
				
			||||||
 | 
					        success: function(data, stat, jqo) {
 | 
				
			||||||
 | 
					            if ( data.success ) {
 | 
				
			||||||
 | 
					                cancelEditLink();
 | 
				
			||||||
 | 
					                toast(data.message, 4000);
 | 
				
			||||||
 | 
					                updateLinkList();
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					                toast(data.message, 4000, "failtoast");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function cancelEditLink() {
 | 
				
			||||||
 | 
					    var instance = M.Modal.getInstance($('#editlink_modal'));
 | 
				
			||||||
 | 
					    instance.close();
 | 
				
			||||||
 | 
					    $("#editlink_url").val("");
 | 
				
			||||||
 | 
					    $("#editlink_title").val("");
 | 
				
			||||||
 | 
					    $("#editlink_description").val("");
 | 
				
			||||||
 | 
					    M.updateTextFields();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										1
									
								
								js/moment.min.js
									
									
									
									
										vendored
									
									
										Executable file
									
								
							
							
						
						
									
										1
									
								
								js/moment.min.js
									
									
									
									
										vendored
									
									
										Executable file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										21
									
								
								materialize/LICENSE
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										21
									
								
								materialize/LICENSE
									
									
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,21 @@
 | 
				
			||||||
 | 
					The MIT License (MIT)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Copyright (c) 2014-2018 Materialize
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 | 
					of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
 | 
					in the Software without restriction, including without limitation the rights
 | 
				
			||||||
 | 
					to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 | 
				
			||||||
 | 
					copies of the Software, and to permit persons to whom the Software is
 | 
				
			||||||
 | 
					furnished to do so, subject to the following conditions:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The above copyright notice and this permission notice shall be included in all
 | 
				
			||||||
 | 
					copies or substantial portions of the Software.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
				
			||||||
 | 
					IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
				
			||||||
 | 
					FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 | 
				
			||||||
 | 
					AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
				
			||||||
 | 
					LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 | 
				
			||||||
 | 
					OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 | 
				
			||||||
 | 
					SOFTWARE.
 | 
				
			||||||
							
								
								
									
										91
									
								
								materialize/README.md
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										91
									
								
								materialize/README.md
									
									
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,91 @@
 | 
				
			||||||
 | 
					<p align="center">
 | 
				
			||||||
 | 
					  <a href="http://materializecss.com/">
 | 
				
			||||||
 | 
					    <img src="http://materializecss.com/res/materialize.svg" width="150">
 | 
				
			||||||
 | 
					  </a>
 | 
				
			||||||
 | 
					</p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<h3 align="center">MaterializeCSS</h3>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<p align="center">
 | 
				
			||||||
 | 
					  Materialize, a CSS Framework based on material design.
 | 
				
			||||||
 | 
					  <br>
 | 
				
			||||||
 | 
					  <a href="http://materializecss.com/"><strong>-- Browse the docs --</strong></a>
 | 
				
			||||||
 | 
					  <br>
 | 
				
			||||||
 | 
					  <br>
 | 
				
			||||||
 | 
					  <a href="https://travis-ci.org/Dogfalo/materialize">
 | 
				
			||||||
 | 
					    <img src="https://travis-ci.org/Dogfalo/materialize.svg?branch=master" alt="Travis CI badge">
 | 
				
			||||||
 | 
					  </a>
 | 
				
			||||||
 | 
					  <a href="https://badge.fury.io/js/materialize-css">
 | 
				
			||||||
 | 
					    <img src="https://badge.fury.io/js/materialize-css.svg" alt="npm version badge">
 | 
				
			||||||
 | 
					  </a>
 | 
				
			||||||
 | 
					  <a href="https://cdnjs.com/libraries/materialize">
 | 
				
			||||||
 | 
					    <img src="https://img.shields.io/cdnjs/v/materialize.svg" alt="CDNJS version badge">
 | 
				
			||||||
 | 
					  </a>
 | 
				
			||||||
 | 
					  <a href="https://david-dm.org/Dogfalo/materialize">
 | 
				
			||||||
 | 
					    <img src="https://david-dm.org/Dogfalo/materialize/status.svg" alt="dependencies Status badge">
 | 
				
			||||||
 | 
					    </a>
 | 
				
			||||||
 | 
					  <a href="https://david-dm.org/Dogfalo/materialize#info=devDependencies">
 | 
				
			||||||
 | 
					    <img src="https://david-dm.org/Dogfalo/materialize/dev-status.svg" alt="devDependency Status badge">
 | 
				
			||||||
 | 
					  </a>
 | 
				
			||||||
 | 
					  <a href="https://gitter.im/Dogfalo/materialize">
 | 
				
			||||||
 | 
					    <img src="https://badges.gitter.im/Join%20Chat.svg" alt="Gitter badge">
 | 
				
			||||||
 | 
					  </a>
 | 
				
			||||||
 | 
					</p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Table of Contents
 | 
				
			||||||
 | 
					- [Quickstart](#quickstart)
 | 
				
			||||||
 | 
					- [Documentation](#documentation)
 | 
				
			||||||
 | 
					- [Supported Browsers](#supported-browsers)
 | 
				
			||||||
 | 
					- [Changelog](#changelog)
 | 
				
			||||||
 | 
					- [Testing](#testing)
 | 
				
			||||||
 | 
					- [Contributing](#contributing)
 | 
				
			||||||
 | 
					- [Copyright and license](#copyright-and-license)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Quickstart:
 | 
				
			||||||
 | 
					Read the [getting started guide](http://materializecss.com/getting-started.html) for more information on how to use materialize.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- [Download the latest release](https://github.com/Dogfalo/materialize/releases/latest) of materialize directly from GitHub. ([Beta](https://github.com/Dogfalo/materialize/releases/))
 | 
				
			||||||
 | 
					- Clone the repo: `git clone https://github.com/Dogfalo/materialize.git` (Beta: `git clone -b v1-dev https://github.com/Dogfalo/materialize.git`)
 | 
				
			||||||
 | 
					- Include the files via [cdnjs](https://cdnjs.com/libraries/materialize). More [here](http://materializecss.com/getting-started.html). ([Beta](https://cdnjs.com/libraries/materialize/1.0.0-beta))
 | 
				
			||||||
 | 
					- Install with [npm](https://www.npmjs.com): `npm install materialize-css` (Beta: `npm install materialize-css@next`)
 | 
				
			||||||
 | 
					- Install with [Bower](https://bower.io): `bower install materialize` ([DEPRECATED](https://bower.io/blog/2017/how-to-migrate-away-from-bower/))
 | 
				
			||||||
 | 
					- Install with [Atmosphere](https://atmospherejs.com): `meteor add materialize:materialize` (Beta: `meteor add materialize:materialize@=1.0.0-beta`)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Documentation
 | 
				
			||||||
 | 
					The documentation can be found at <http://materializecss.com>. To run the documentation locally on your machine, you need [Node.js](https://nodejs.org/en/) installed on your computer.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Running documentation locally
 | 
				
			||||||
 | 
					Run these commands to set up the documentation:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```bash
 | 
				
			||||||
 | 
					git clone https://github.com/Dogfalo/materialize
 | 
				
			||||||
 | 
					cd materialize
 | 
				
			||||||
 | 
					npm install
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Then run `grunt monitor` to compile the documentation. When it finishes, open a new browser window and navigate to `localhost:8000`. We use [BrowserSync](https://www.browsersync.io/) to display the documentation.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Documentation for previous releases
 | 
				
			||||||
 | 
					Previous releases and their documentation are available for [download](https://github.com/Dogfalo/materialize/releases).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Supported Browsers:
 | 
				
			||||||
 | 
					Materialize is compatible with:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- Chrome 35+
 | 
				
			||||||
 | 
					- Firefox 31+
 | 
				
			||||||
 | 
					- Safari 9+
 | 
				
			||||||
 | 
					- Opera
 | 
				
			||||||
 | 
					- Edge
 | 
				
			||||||
 | 
					- IE 11+
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Changelog
 | 
				
			||||||
 | 
					For changelogs, check out [the Releases section of materialize](https://github.com/Dogfalo/materialize/releases) or the [CHANGELOG.md](CHANGELOG.md).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Testing
 | 
				
			||||||
 | 
					We use Jasmine as our testing framework and we're trying to write a robust test suite for our components. If you want to help, [here's a starting guide on how to write tests in Jasmine](CONTRIBUTING.md#jasmine-testing-guide).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Contributing
 | 
				
			||||||
 | 
					Check out the [CONTRIBUTING document](CONTRIBUTING.md) in the root of the repository to learn how you can contribute. You can also browse the [help-wanted](https://github.com/Dogfalo/materialize/labels/help-wanted) tag in our issue tracker to find things to do.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Copyright and license
 | 
				
			||||||
 | 
					Code Copyright 2018 Materialize. Code released under the MIT license.
 | 
				
			||||||
							
								
								
									
										9067
									
								
								materialize/css/materialize.css
									
									
									
									
										vendored
									
									
										Executable file
									
								
							
							
						
						
									
										9067
									
								
								materialize/css/materialize.css
									
									
									
									
										vendored
									
									
										Executable file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										13
									
								
								materialize/css/materialize.min.css
									
									
									
									
										vendored
									
									
										Executable file
									
								
							
							
						
						
									
										13
									
								
								materialize/css/materialize.min.css
									
									
									
									
										vendored
									
									
										Executable file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										12360
									
								
								materialize/js/materialize.js
									
									
									
									
										vendored
									
									
										Executable file
									
								
							
							
						
						
									
										12360
									
								
								materialize/js/materialize.js
									
									
									
									
										vendored
									
									
										Executable file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										6
									
								
								materialize/js/materialize.min.js
									
									
									
									
										vendored
									
									
										Executable file
									
								
							
							
						
						
									
										6
									
								
								materialize/js/materialize.min.js
									
									
									
									
										vendored
									
									
										Executable file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										8
									
								
								startsession.php
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										8
									
								
								startsession.php
									
									
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,8 @@
 | 
				
			||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if ( php_sapi_name() == "cli" ) exit();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Start the session
 | 
				
			||||||
 | 
					session_name(SESSNAME);
 | 
				
			||||||
 | 
					session_start();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user