diff --git a/js/main.js b/js/main.js index b56a24f93af5c469f26bb3ae4781244d61dfea19..491ae82c952184ae96717c3d37f563a2482268ca 100644 --- a/js/main.js +++ b/js/main.js @@ -126,6 +126,11 @@ $(document).ready(function() } }); + $('#button-mark-all-as-done').click(function() + { + markAllTasksAsDone(this.dataset.milestoneid); + }); + createTrainMap(); }); @@ -522,7 +527,7 @@ function login() $.post('../admin/helper/checkLogin.php', { - "password": password, + "password": password }, function(data, error) { @@ -537,4 +542,25 @@ function login() alert('Wrong password!'); } }); -} \ No newline at end of file +} + +function markAllTasksAsDone(milestone_ID) +{ + $.post('../admin/helper/mark-all-tasks-as-done.php', + { + "milestoneID": milestone_ID + + }, function(data, error) + { + data = data.toString().trim(); + + if(data != "error" && data != "bad_login") + { + window.location.href = "../admin/admin-tasks.php?id=" + milestone_ID; + } + else + { + alert('An error occurred while marking all tasks as done'); + } + }); +} diff --git a/php/admin/admin-tasks.php b/php/admin/admin-tasks.php index 578999d90dfeac9cf116af06e6e28663f7279668..f069042da609f789d0d9469cab77ee6a17f99e13 100644 --- a/php/admin/admin-tasks.php +++ b/php/admin/admin-tasks.php @@ -70,6 +70,8 @@ if($milestone == false) <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-task.php?milestoneID=<?php echo $ID;?>"><i class="material-icons left">add</i>New</a> + <a class="waves-effect waves-light btn blue darken-3" id="button-mark-all-as-done" data-milestoneid="<?php echo $ID;?>"><i + class="material-icons left">check</i>Mark all as done</a> </div> </div> <div class="row"> diff --git a/php/admin/helper/mark-all-tasks-as-done.php b/php/admin/helper/mark-all-tasks-as-done.php new file mode 100644 index 0000000000000000000000000000000000000000..35309a0ff9b9152f5f125f6eb72b2f87748cf193 --- /dev/null +++ b/php/admin/helper/mark-all-tasks-as-done.php @@ -0,0 +1,30 @@ +<?php +include_once('../../mysql.php'); + +if($_SERVER['REQUEST_METHOD'] == 'POST') +{ + if(!isset($_POST['milestoneID'])) + { + echo "error"; + exit; + } + + $db = new DB(); + $db->createTables(); + + if($db->markAllTasksAsDone($_POST['milestoneID']) == false) + { + echo "error"; + 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 5e2cd5a9fe70386cba806ee0a7988cbb03373bd2..3c653f51db28d069f3311c3b8c56430e37395c1b 100644 --- a/php/mysql.php +++ b/php/mysql.php @@ -226,6 +226,29 @@ class DB } } + function markAllTasksAsDone($milestoneID) + { + $tasks = $this->getTasks($milestoneID); + for($m = 0; $m < sizeof($tasks); $m++) + { + $subTasks = $this->getSubtasks($tasks[$m]['ID']); + for($i = 0; $i < sizeof($subTasks); $i++) + { + if($this->finishSubTask($subTasks[$i]["ID"]) == false) + { + return false; + } + } + + if($this->finishTask($tasks[$m]['ID']) == false) + { + return false; + } + } + + return true; + } + //======================================== //----------------- get ------------------ //========================================