diff --git a/css/style.css b/css/style.css index 7795a0b0b4e3c5419bdb85c739056dae4ac21182..1b29635251cd00ebc2410a7df65ed9e5495091a8 100644 --- a/css/style.css +++ b/css/style.css @@ -119,4 +119,8 @@ .milestone-content { display: none; +} + +.tiny-button:hover{ + cursor: pointer; } \ No newline at end of file diff --git a/js/main.js b/js/main.js index 3c9a29c13e12a43238f47a2d1677f115b90a6386..b606f903268fac4089e2fa85ce631f5682370958 100644 --- a/js/main.js +++ b/js/main.js @@ -33,6 +33,20 @@ $(document).ready(function() }); } + $('.button-save-roadmap').click(function() + { + editRoadmap(this.dataset.id, $('#project-name').val()); + }); + + $('.button-delete-roadmap').click(function() + { + var r = confirm("Do you really want to delete this roadmap?"); + if(r == true) + { + deleteRoadmap(this.dataset.id); + } + }); + createTrainMap(); }); @@ -72,7 +86,97 @@ function createTrainMap() for(var i = 0; i < entries.length - 1; i++) { var height = entries[i].offsetHeight; - lines[i].style.height = (height-15) + "px"; - smallLines[i].style.height = (height-2) + "px"; + lines[i].style.height = (height - 15) + "px"; + smallLines[i].style.height = (height - 2) + "px"; } +} + +function editRoadmap(roadmap_ID, projectname) +{ + if(isNull(projectname)) + { + alert("Project Name shouldn't be empty!"); + return; + } + + if(roadmap_ID == "0") + { + //insert new roadmap + + $.post('../admin/helper/edit-roadmap.php', + { + "project-name": projectname, + "edit": "false" + + }, function(data, error) + { + data = data.toString().trim(); + switch(data) + { + case "error": + alert('An error occurred'); + break; + case "error-edit": + alert('An error occurred while editing the roadmap with the ID ' + roadmap_ID); + break; + case "error-insert": + alert('An error occurred while inserting the new roadmap'); + break; + default: + window.location.href = "../admin/admin-roadmaps.php"; + break; + } + }); + } + else + { + //edit existing roadmap + + $.post('../admin/helper/edit-roadmap.php', + { + "ID": roadmap_ID, + "project-name": projectname, + "edit": "true" + + }, function(data, error) + { + data = data.toString().trim(); + switch(data) + { + case "error": + alert('An error occurred'); + break; + case "error-edit": + alert('An error occurred while editing the roadmap with the ID ' + roadmap_ID); + break; + case "error-insert": + alert('An error occurred while inserting the new roadmap'); + break; + default: + window.location.href = "../admin/admin-roadmaps.php"; + break; + } + }); + } +} + +function deleteRoadmap(roadmap_ID) +{ + $.post('../admin/helper/delete-roadmap.php', + { + "roadmap_ID": roadmap_ID, + + }, function(data, error) + { + data = data.toString().trim(); + + if(data != "error") + { + window.location.href = "../admin/admin-roadmaps.php"; + } + else + { + alert('An error occurred while deleting the roadmap with the ID ' + roadmap_ID); + } + }); } \ No newline at end of file diff --git a/php/admin/admin-edit-roadmap.php b/php/admin/admin-edit-roadmap.php new file mode 100644 index 0000000000000000000000000000000000000000..472c7835230721f8dda4cace1a0ce448b5283e3f --- /dev/null +++ b/php/admin/admin-edit-roadmap.php @@ -0,0 +1,109 @@ +<!DOCTYPE html> + +<?php +include_once('../getLanguageJSON.php'); +include_once('../mysql.php'); + +if(!isset($_GET['edit'])) +{ + $_GET['edit'] = "false"; + + $_GET['id'] = 0; + + $db = new DB(); + $db->createTables(); + + $projectName = ''; +} +else +{ + if(!isset($_GET['id'])) + { + header('Location: error.php?message=error_param_missing'); + exit; + } + + $ID = $_GET['id']; + if(!is_numeric($ID) || $ID < 1) + { + header('Location: error.php?message=error_param_invalid'); + exit; + } + + $db = new DB(); + $db->createTables(); + + $projectName = $db->getRoadmap($ID); + if($projectName == false) + { + header('Location: error.php?message=error_roadmap_not_existing'); + exit; + } + $projectName = $projectName["Projectname"]; +} + + + +?> +<html xmlns="http://www.w3.org/1999/html"> + <head> + <meta charset="UTF-8"/> + <?php + if($_GET['edit'] == "false") + { + echo '<title>New Roadmap</title>'; + } + else + { + echo '<title>Edit Roadmap</title>'; + } + ?> + <!--Import Google Icon Font--> + <link href="http://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> + <!--Import materialize.css--> + <link type="text/css" rel="stylesheet" href="../../materialize/css/materialize.min.css" media="screen,projection"/> + <link type="text/css" rel="stylesheet" href="../../css/style.css"/> + + <!--Import jQuery before materialize.js--> + <script type="text/javascript" src="../../js/jquery-2.2.4.min.js"></script> + <script type="text/javascript" src="../../materialize/js/materialize.min.js"></script> + <script type="text/javascript" src="../../js/main.js"></script> + <script type="text/javascript" src="../../js/ResizeSensor.js"></script> + <script type="text/javascript" src="../../js/ElementQueries.js"></script> + + <!--Let browser know website is optimized for mobile--> + <meta name="viewport" content="width=device-width, initial-scale=1.0"/> + </head> + + <body class="grey lighten-3"> + <div id="main"> + <div class="container"> + <?php + if($_GET['edit'] == "false") + { + echo '<h2 class="center-align" id="headline">New Roadmap</h2>'; + } + else + { + echo '<h2 class="center-align" id="headline">Edit Roadmap</h2>'; + } + ?> + + <div class="row center-align"> + <div class="col s12 m8 offset-m2 l6 offset-l3"> + <div class="input-field col s12"> + <input id="project-name" name="project-name" type="text" value="<?php echo $projectName;?>"> + <label for="project-name">Project Name</label> + </div> + </div> + </div> + <div class="row center-align margin-top"> + <div class="col s12 m8 offset-m2 l6 offset-l3"> + <a class="waves-effect waves-light btn blue darken-3" href="admin-roadmaps.php"><i class="material-icons left">arrow_back</i>Back</a> + <a class="waves-effect waves-light btn blue darken-3 margin-left button-save-roadmap" data-id="<?php echo $_GET['id'];?>"><i class="material-icons left">save</i>Save</a> + </div> + </div> + </div> + </div> + </body> +</html> \ No newline at end of file diff --git a/php/admin/admin-roadmaps.php b/php/admin/admin-roadmaps.php new file mode 100644 index 0000000000000000000000000000000000000000..f3e37d6deb8105a923b2966a6c70fa55c7adedc0 --- /dev/null +++ b/php/admin/admin-roadmaps.php @@ -0,0 +1,82 @@ +<!DOCTYPE html> + +<?php +include_once('../getLanguageJSON.php'); +include_once('../mysql.php'); + +$db = new DB(); +$db->createTables(); +?> +<html xmlns="http://www.w3.org/1999/html"> + <head> + <meta charset="UTF-8"/> + <title>Roadmaps - Adminarea</title> + <!--Import Google Icon Font--> + <link href="http://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> + <!--Import materialize.css--> + <link type="text/css" rel="stylesheet" href="../../materialize/css/materialize.min.css" media="screen,projection"/> + <link type="text/css" rel="stylesheet" href="../../css/style.css"/> + + <!--Import jQuery before materialize.js--> + <script type="text/javascript" src="../../js/jquery-2.2.4.min.js"></script> + <script type="text/javascript" src="../../materialize/js/materialize.min.js"></script> + <script type="text/javascript" src="../../js/main.js"></script> + <script type="text/javascript" src="../../js/ResizeSensor.js"></script> + <script type="text/javascript" src="../../js/ElementQueries.js"></script> + + <!--Let browser know website is optimized for mobile--> + <meta name="viewport" content="width=device-width, initial-scale=1.0"/> + </head> + + <body class="grey lighten-3"> + <div id="main"> + <div class="container"> + <h2 class="center-align" id="headline">Roadmaps</h2> + + <div class="row"> + <div class="col s12 m8 offset-m2 l6 offset-l3 center-align"> + <a class="waves-effect waves-light btn blue darken-3" href="admin-edit-roadmap.php"><i class="material-icons left">add</i>New</a> + </div> + </div> + <div class="row"> + <div class="col s12 m8 offset-m2 l6 offset-l3"> + <table class="bordered"> + <thead> + <tr> + <th data-field="id">ID</th> + <th data-field="project-name">Project Name</th> + </tr> + </thead> + + <tbody> + <?php + $roadmaps = $db->getRoadmaps(); + + if($roadmaps == false) + { + header('Location: error.php?message=error_database_connection'); + exit; + } + else + { + for($i = 0; $i < sizeof($roadmaps); $i++) + { + echo '<tr>'. + '<td>'.$roadmaps[$i]['ID'].'</td>'. + '<td>'.$roadmaps[$i]['Projectname'].'</td>'. + '<td class="right-align">'. + '<a class="btn-flat" href="admin-edit-roadmap.php?id='.$roadmaps[$i]['ID'].'&edit=true"><i class="material-icons left">edit</i></a>'. + '<a class="btn-flat button-delete-roadmap" data-id="'.$roadmaps[$i]['ID'].'"><i class="material-icons left">delete</i></a>'. + '</td>'. + '</tr>'; + } + } + ?> + </tbody> + </table> + </div> + </div> + </div> + </div> + </body> +</html> \ No newline at end of file diff --git a/php/admin/helper/delete-roadmap.php b/php/admin/helper/delete-roadmap.php new file mode 100644 index 0000000000000000000000000000000000000000..810d5ff58adcd5ddd5cfde9a743c530db6da6c39 --- /dev/null +++ b/php/admin/helper/delete-roadmap.php @@ -0,0 +1,30 @@ +<?php +include_once('../../mysql.php'); + +if($_SERVER['REQUEST_METHOD'] == 'POST') +{ + if(!isset($_POST['roadmap_ID'])) + { + echo "error"; + exit; + } + + $db = new DB(); + $db->createTables(); + + if($db->deleteRoadmap($_POST['roadmap_ID']) == false) + { + echo "error2"; + exit; + } + else + { + echo "success"; + exit; + } +} +else +{ + echo "error"; + exit; +} \ No newline at end of file diff --git a/php/admin/helper/edit-roadmap.php b/php/admin/helper/edit-roadmap.php new file mode 100644 index 0000000000000000000000000000000000000000..32b2a14e53ae285252eb034f65d0fc81f67ed5da --- /dev/null +++ b/php/admin/helper/edit-roadmap.php @@ -0,0 +1,67 @@ +<?php +include_once('../../mysql.php'); + +if($_SERVER['REQUEST_METHOD'] == 'POST') +{ + if(!isset($_POST['edit'])) + { + echo "error"; + exit; + } + + if($_POST['edit'] == "true") + { + if(!isset($_POST['ID'])) + { + echo "error-edit"; + exit; + } + + if(!isset($_POST['project-name'])) + { + echo "error-edit"; + exit; + } + + $db = new DB(); + $db->createTables(); + + if($db->updateRoadmap($_POST['ID'], $_POST['project-name']) == false) + { + echo "error-edit"; + exit; + } + else + { + echo "success"; + exit; + } + } + else + { + if(!isset($_POST['project-name'])) + { + echo "error-insert"; + exit; + } + + $db = new DB(); + $db->createTables(); + + if($db->insertRoadmap($_POST['project-name']) == false) + { + echo "error-insert"; + exit; + } + else + { + echo "success"; + exit; + } + } +} +else +{ + echo "error"; + exit; +} \ No newline at end of file diff --git a/php/mysql.php b/php/mysql.php index 68550e395a8d209e0e5e3076deaed1c55fe01dd9..00ae4bc26ad5b92781a778e6701fb0b5a807519a 100644 --- a/php/mysql.php +++ b/php/mysql.php @@ -207,6 +207,15 @@ class DB return $statement->fetch(); } + function getRoadmaps() + { + $statement = self::$db->prepare("SELECT * FROM roadmaps ORDER BY ID;"); + $statement->bindParam("roadmapID", $roadmapID); + $statement->execute(); + + return $statement->fetchAll(); + } + function getMilestones($roadmapID) { $statement = self::$db->prepare("SELECT * FROM milestones WHERE milestones.roadmapID=:roadmapID ORDER BY VersionCode DESC;"); @@ -260,4 +269,44 @@ class DB return $statement->fetch(); } + + //======================================== + //--------------- delete ----------------- + //======================================== + + function deleteRoadmap($roadmapID) + { + $statement = self::$db->prepare("DELETE FROM roadmaps WHERE roadmaps.ID=:roadmapID;"); + $statement->bindParam("roadmapID", $roadmapID); + $statement->execute(); + + return $statement->execute(); + } + + function deleteMilestone($milestoneID) + { + $statement = self::$db->prepare("DELETE FROM milestones WHERE milestones.ID=:milestoneID;"); + $statement->bindParam("milestoneID", $milestoneID); + $statement->execute(); + + return $statement->execute(); + } + + function deleteTask($taskID) + { + $statement = self::$db->prepare("DELETE FROM tasks WHERE tasks.ID=:taskID;"); + $statement->bindParam("taskID", $taskID); + $statement->execute(); + + return $statement->execute(); + } + + function deleteSubtask($subtaskID) + { + $statement = self::$db->prepare("DELETE FROM subtasks WHERE subtasks.ID=:subtaskID;"); + $statement->bindParam("subtaskID", $subtaskID); + $statement->execute(); + + return $statement->execute(); + } } \ No newline at end of file