diff --git a/action.php b/action.php index a8767ec..016e4bc 100644 --- a/action.php +++ b/action.php @@ -252,7 +252,7 @@ switch ($VARS['action']) { foreach ($groups as $g) { $gids[] = $g['id']; } - $job = $database->has('jobs', ['[>]job_groups' => ['jobid']], ["AND" => ['groupid' => $gids, 'jobs.jobid' => $VARS['job']]]); + $job = $database->has('jobs', ['[>]job_groups' => ['jobid']], ["AND" => ["OR" => ['groupid' => $gids, 'groupid #-1' => -1], 'deleted' => 0]]); } else { $job = $database->has('jobs', 'jobid', ['jobid' => $VARS['job']]); } @@ -273,15 +273,25 @@ switch ($VARS['action']) { $name = htmlentities($VARS['jobname']); $code = $VARS['jobcode']; $color = $VARS['color']; + $groups = $VARS['groups']; if (is_empty($VARS['jobid'])) { if ($database->has('jobs', ['jobname' => $name])) { returnToSender("job_name_used"); } $database->insert('jobs', ["jobname" => $name, "jobcode" => $code, "color" => $color]); + $jobid = $database->id(); + $database->delete('job_groups', ['jobid' => $jobid]); + foreach ($groups as $g) { + $database->insert('job_groups', ['jobid' => $jobid, 'groupid' => $g]); + } returnToSender("job_added"); } else if ($database->has('jobs', ['jobid' => $VARS['jobid']])) { $database->update('jobs', ["jobname" => $name, "jobcode" => $code, "color" => $color], ["jobid" => $VARS['jobid']]); + $database->delete('job_groups', ['jobid' => $VARS['jobid']]); + foreach ($groups as $g) { + $database->insert('job_groups', ['jobid' => $VARS['jobid'], 'groupid' => $g]); + } returnToSender("job_saved"); } else { returnToSender("invalid_jobid"); diff --git a/database.mwb b/database.mwb index e114da2..09757ab 100644 Binary files a/database.mwb and b/database.mwb differ diff --git a/database_upgrade/1.0.1_1.1.sql b/database_upgrade/1.0.1_1.1.sql index 5777f8f..43a8ffa 100644 --- a/database_upgrade/1.0.1_1.1.sql +++ b/database_upgrade/1.0.1_1.1.sql @@ -16,7 +16,7 @@ DEFAULT CHARACTER SET = utf8; CREATE TABLE IF NOT EXISTS `job_groups` ( `id` INT(11) NOT NULL AUTO_INCREMENT, - `groupid` VARCHAR(45) NOT NULL, + `groupid` INT(11) NOT NULL, `jobid` INT(11) NOT NULL, PRIMARY KEY (`id`, `groupid`, `jobid`), UNIQUE INDEX `id_UNIQUE` (`id` ASC), diff --git a/pages.php b/pages.php index 2f720a3..9d211b5 100644 --- a/pages.php +++ b/pages.php @@ -59,7 +59,10 @@ define("PAGES", [ ], "editjob" => [ "title" => "edit job", - "navbar" => false + "navbar" => false, + "scripts" => [ + "static/js/editjob.js" + ] ], "editjobhistory" => [ "title" => "edit job", diff --git a/pages/editjob.php b/pages/editjob.php index 7ae42ff..d29637c 100644 --- a/pages/editjob.php +++ b/pages/editjob.php @@ -83,6 +83,63 @@ if (isset($VARS['job']) && $database->has('jobs', ['jobid' => $VARS['job']])) { +
+
+
+
+ +
+
+ +
+
+
+
+ select('job_groups', ['groupid (id)'], ['jobid' => $data['jobid']]); + foreach ($groups as $g) { + if ($g['id'] == -1) { + $g['name'] = lang("all groups", false); + } else { + $g['name'] = $all_groups[$g['id']]; + } + ?> +
+
+
+ +
+
+
diff --git a/pages/editjobhistory.php b/pages/editjobhistory.php index ab81faf..4f32b56 100644 --- a/pages/editjobhistory.php +++ b/pages/editjobhistory.php @@ -56,7 +56,7 @@ if (isset($VARS['job']) && $database->has('job_tracking', ['id' => $VARS['job']] foreach ($groups as $g) { $gids[] = $g['id']; } - $jobs = $database->select('jobs', ['[>]job_groups' => ['jobid']], ['jobs.jobid', 'jobname'], ["AND" => ['groupid' => $gids, 'deleted' => 0]]); + $jobs = $database->select('jobs', ['[>]job_groups' => ['jobid']], ['jobs.jobid', 'jobname'], ["AND" => ["OR" => ['groupid' => $gids, 'groupid #-1' => -1], 'deleted' => 0]]); } else { $jobs = $database->select('jobs', ['jobid', 'jobname'], ['deleted' => 0]); } diff --git a/pages/jobs.php b/pages/jobs.php index 8a3f90a..27cd9a5 100644 --- a/pages/jobs.php +++ b/pages/jobs.php @@ -28,7 +28,7 @@ redirectifnotloggedin(); foreach ($groups as $g) { $gids[] = $g['id']; } - $jobs = $database->select('jobs', ['[>]job_groups' => ['jobid']], ['jobs.jobid', 'jobname', 'jobcode', 'color'], ["AND" => ['groupid' => $gids, 'deleted' => 0]]); + $jobs = $database->select('jobs', ['[>]job_groups' => ['jobid']], ['jobs.jobid', 'jobname', 'jobcode', 'color'], ["AND" => ["OR" => ['groupid' => $gids, 'groupid #-1' => -1], 'deleted' => 0]]); } else { $jobs = $database->select('jobs', ['jobid', 'jobname', 'jobcode', 'color'], ['deleted' => 0]); } diff --git a/static/js/editjob.js b/static/js/editjob.js new file mode 100644 index 0000000..1bc6eba --- /dev/null +++ b/static/js/editjob.js @@ -0,0 +1,44 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + + +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +function addGroup(id, name) { + id = id.trim(); + if (id == "") { + return false; + } + if ($("#groupslist div[data-groupid=" + id + "]").length) { + $("#groupslist .list-group-item[data-groupid=" + id + "]").animate({ + backgroundColor: "#ff0000", + }, 500, "linear", function () { + $("#groupslist .list-group-item[data-groupid=" + id + "]").animate({ + backgroundColor: "#ffffff", + }, 500); + }); + return false; + } + $('#groupslist').append("
" + name + "
"); +} + +function removeGroup(gid) { + $("#groupslist div[data-groupid=" + gid + "]").remove(); +} + +$("#addgroupbtn").click(function () { + addGroup($("#groups-box").val(), $("#groups-box option:selected").text()); +}); + +$('#groupslist').on("click", ".rm", function () { + removeGroup($(this).parent().data("groupid")); +}); + +$('#groups-box').change(function () { + addGroup($("#groups-box").val(), $("#groups-box option:selected").text()); +}); \ No newline at end of file diff --git a/static/js/editjobs.js b/static/js/editjobs.js index ef72adb..1f48555 100644 --- a/static/js/editjobs.js +++ b/static/js/editjobs.js @@ -29,6 +29,6 @@ var jobtable = $('#jobtable').DataTable({ } ], order: [ - [2, 'desc'] + [2, 'asc'] ] }); \ No newline at end of file