From 288af5af9c504397916d7f680551672a5b91100f Mon Sep 17 00:00:00 2001 From: Malf Furious Date: Wed, 31 Oct 2018 20:20:10 -0400 Subject: Add gif image support Adds 'image/gif' as an allowed mimetype for images. The image module is also updated to expect this new type. For background images, animated gifs will work properly. For head images, the cropping process truncates the image to only one frame; this is probably for the best. Signed-off-by: Malf Furious --- app/class/image.php | 2 ++ app/class/obj.class.php | 1 + 2 files changed, 3 insertions(+) diff --git a/app/class/image.php b/app/class/image.php index 6b73cae..f4c639f 100644 --- a/app/class/image.php +++ b/app/class/image.php @@ -23,10 +23,12 @@ $_IMG_OPEN_FUNCS['image/jpeg'] = "imagecreatefromjpeg"; $_IMG_OPEN_FUNCS['image/jpg'] = "imagecreatefromjpeg"; $_IMG_OPEN_FUNCS['image/png'] = "imagecreatefrompng"; +$_IMG_OPEN_FUNCS['image/gif'] = "imagecreatefromgif"; $_IMG_WRITE_FUNCS['image/jpeg'] = "imagejpeg"; $_IMG_WRITE_FUNCS['image/jpg'] = "imagejpeg"; $_IMG_WRITE_FUNCS['image/png'] = "imagepng"; +$_IMG_WRITE_FUNCS['image/gif'] = "imagegif"; /* * Open the given image and crop it, such that the result is a square diff --git a/app/class/obj.class.php b/app/class/obj.class.php index 850184c..7764888 100644 --- a/app/class/obj.class.php +++ b/app/class/obj.class.php @@ -30,6 +30,7 @@ class obj extends table "image/jpeg", "image/jpg", "image/png", + "image/gif", ); /* -- cgit v1.2.3 From 175020d9acd5742d3a3cea4aa8e427ecc046b14b Mon Sep 17 00:00:00 2001 From: Malf Furious Date: Wed, 31 Oct 2018 20:29:11 -0400 Subject: Add bmp image support Adds 'image/bmp' as an allowed mimetype for images. The image module is also updated to expect this new type. Signed-off-by: Malf Furious --- app/class/image.php | 2 ++ app/class/obj.class.php | 1 + 2 files changed, 3 insertions(+) diff --git a/app/class/image.php b/app/class/image.php index f4c639f..591e026 100644 --- a/app/class/image.php +++ b/app/class/image.php @@ -24,11 +24,13 @@ $_IMG_OPEN_FUNCS['image/jpeg'] = "imagecreatefromjpeg"; $_IMG_OPEN_FUNCS['image/jpg'] = "imagecreatefromjpeg"; $_IMG_OPEN_FUNCS['image/png'] = "imagecreatefrompng"; $_IMG_OPEN_FUNCS['image/gif'] = "imagecreatefromgif"; +$_IMG_OPEN_FUNCS['image/bmp'] = "imagecreatefrombmp"; $_IMG_WRITE_FUNCS['image/jpeg'] = "imagejpeg"; $_IMG_WRITE_FUNCS['image/jpg'] = "imagejpeg"; $_IMG_WRITE_FUNCS['image/png'] = "imagepng"; $_IMG_WRITE_FUNCS['image/gif'] = "imagegif"; +$_IMG_WRITE_FUNCS['image/bmp'] = "imagebmp"; /* * Open the given image and crop it, such that the result is a square diff --git a/app/class/obj.class.php b/app/class/obj.class.php index 7764888..81a0a27 100644 --- a/app/class/obj.class.php +++ b/app/class/obj.class.php @@ -31,6 +31,7 @@ class obj extends table "image/jpg", "image/png", "image/gif", + "image/bmp", ); /* -- cgit v1.2.3 From 2cf8d6be4191512567dc7498d3163627aacd1cf0 Mon Sep 17 00:00:00 2001 From: Malf Furious Date: Wed, 31 Oct 2018 21:23:27 -0400 Subject: Fix bug in image support Adds 'image/x-ms-bmp' as an allowed mimetype for images, and is equivalent to 'image/bmp'. The image module is also updated to expect this new type. I found an image of mine that, when uploaded, PHP thought was 'image/bmp', so it was allowed. However, when cropping, PHP though it was 'image/x-ms-bmp' and failed to lookup a loading/writing function. Signed-off-by: Malf Furious --- app/class/image.php | 22 ++++++++++++---------- app/class/obj.class.php | 1 + 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/app/class/image.php b/app/class/image.php index 591e026..62999aa 100644 --- a/app/class/image.php +++ b/app/class/image.php @@ -20,17 +20,19 @@ /* * Mappings from image MIME types to PHP open/write functions */ -$_IMG_OPEN_FUNCS['image/jpeg'] = "imagecreatefromjpeg"; -$_IMG_OPEN_FUNCS['image/jpg'] = "imagecreatefromjpeg"; -$_IMG_OPEN_FUNCS['image/png'] = "imagecreatefrompng"; -$_IMG_OPEN_FUNCS['image/gif'] = "imagecreatefromgif"; -$_IMG_OPEN_FUNCS['image/bmp'] = "imagecreatefrombmp"; +$_IMG_OPEN_FUNCS['image/jpeg'] = "imagecreatefromjpeg"; +$_IMG_OPEN_FUNCS['image/jpg'] = "imagecreatefromjpeg"; +$_IMG_OPEN_FUNCS['image/png'] = "imagecreatefrompng"; +$_IMG_OPEN_FUNCS['image/gif'] = "imagecreatefromgif"; +$_IMG_OPEN_FUNCS['image/bmp'] = "imagecreatefrombmp"; +$_IMG_OPEN_FUNCS['image/x-ms-bmp'] = "imagecreatefrombmp"; -$_IMG_WRITE_FUNCS['image/jpeg'] = "imagejpeg"; -$_IMG_WRITE_FUNCS['image/jpg'] = "imagejpeg"; -$_IMG_WRITE_FUNCS['image/png'] = "imagepng"; -$_IMG_WRITE_FUNCS['image/gif'] = "imagegif"; -$_IMG_WRITE_FUNCS['image/bmp'] = "imagebmp"; +$_IMG_WRITE_FUNCS['image/jpeg'] = "imagejpeg"; +$_IMG_WRITE_FUNCS['image/jpg'] = "imagejpeg"; +$_IMG_WRITE_FUNCS['image/png'] = "imagepng"; +$_IMG_WRITE_FUNCS['image/gif'] = "imagegif"; +$_IMG_WRITE_FUNCS['image/bmp'] = "imagebmp"; +$_IMG_WRITE_FUNCS['image/x-ms-bmp'] = "imagebmp"; /* * Open the given image and crop it, such that the result is a square diff --git a/app/class/obj.class.php b/app/class/obj.class.php index 81a0a27..353d617 100644 --- a/app/class/obj.class.php +++ b/app/class/obj.class.php @@ -32,6 +32,7 @@ class obj extends table "image/png", "image/gif", "image/bmp", + "image/x-ms-bmp", ); /* -- cgit v1.2.3 From 61d5b3e37b4dc6da4f7da48751b741ad49245cb1 Mon Sep 17 00:00:00 2001 From: Malf Furious Date: Thu, 1 Nov 2018 00:03:34 -0400 Subject: Update issue message submit buttons I'm going to be adding another button down here in the btn-group (more later). So to make room, I'm removing the text on these buttons, leaving only the icons. The text will instead be a tooltip, visible when the button is hovered. In the case of the 'Close issue' button, it is changed from btn-success to btn-default. I will tweak colors once this portion of the UI matures. For now, I don't want the rainbow in my face. Signed-off-by: Malf Furious --- app/view/issue.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/view/issue.php b/app/view/issue.php index 2d781ba..a0e2535 100644 --- a/app/view/issue.php +++ b/app/view/issue.php @@ -115,12 +115,12 @@ require_once "class/issue.class.php";
- -
-- cgit v1.2.3 From a6853e8a130cfe8f65a154a613f0a7217dd2df0a Mon Sep 17 00:00:00 2001 From: Malf Furious Date: Thu, 1 Nov 2018 00:10:48 -0400 Subject: Add advance button to issue message form If this submit button is used, the message will be posted as usual, then the issue will be moved to the next stage in the pipeline. Signed-off-by: Malf Furious --- app/view/issue.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/view/issue.php b/app/view/issue.php index a0e2535..67f5627 100644 --- a/app/view/issue.php +++ b/app/view/issue.php @@ -122,6 +122,10 @@ require_once "class/issue.class.php"; + + -- cgit v1.2.3 From 75c8a6d4ee00ba9b7040697c4de65620f27b9728 Mon Sep 17 00:00:00 2001 From: Malf Furious Date: Thu, 1 Nov 2018 04:27:05 -0400 Subject: Make issue reply message optional The 'iss-mesg-add' form will now allow a mesg to be omitted, since it will also be handling other events. These events are part of the same form since the UI allows users to post a message and trigger these other actions at the same time. We now only create a mesg object if a mesg is given. Note that an attachment requires a message. IE: any attachment is ignored if no message is created. Signed-off-by: Malf Furious --- app/model/issue.php | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/app/model/issue.php b/app/model/issue.php index 4300bbb..0954ad9 100644 --- a/app/model/issue.php +++ b/app/model/issue.php @@ -23,7 +23,7 @@ if (isAction("iss-mesg-add")) { $form = new form(); $form->text("issue"); - $form->text("mesg"); + $form->text("mesg", false); if (!$form->populate(input())) return; @@ -36,16 +36,19 @@ if (isAction("iss-mesg-add")) return; } - if (!$user->canCreateSub($issue)) + if (isset($form->mesg) && $form->mesg != "") { - logError(ERROR, "You do not have permission to post to this issue"); - return; - } + if (!$user->canCreateSub($issue)) + { + logError(ERROR, "You do not have permission to post to this issue"); + return; + } - $mesg = mesg::initNew($form->mesg, $user, $issue); + $mesg = mesg::initNew($form->mesg, $user, $issue); - if ($mesg->setAttachment("attachment")) - logError(NOTICE, "Saved attachment " . $mesg->attachment); + if ($mesg->setAttachment("attachment")) + logError(NOTICE, "Saved attachment " . $mesg->attachment); + } if (isset(input()['closeIssue'])) { -- cgit v1.2.3 From d8e6fc09df73e4165fa5503b713f8958e1599175 Mon Sep 17 00:00:00 2001 From: Malf Furious Date: Thu, 1 Nov 2018 04:35:26 -0400 Subject: Fix 'closeIssue' form submission I was failing to assert user has modify permissions for the issue. Signed-off-by: Malf Furious --- app/model/issue.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/model/issue.php b/app/model/issue.php index 0954ad9..403e82e 100644 --- a/app/model/issue.php +++ b/app/model/issue.php @@ -52,6 +52,12 @@ if (isAction("iss-mesg-add")) if (isset(input()['closeIssue'])) { + if (!$user->canModify($issue)) + { + logError(ERROR, "You do not have permission to close this issue"); + return; + } + $issue->close($user); logError(NOTICE, "Issue #" . $issue->numb . " closed"); $log = mesg::initNewLog("% closed issue", $user, $issue); -- cgit v1.2.3 From dc99ab0c0a0603d5efc1e07cf690c53260528820 Mon Sep 17 00:00:00 2001 From: Malf Furious Date: Thu, 1 Nov 2018 04:43:55 -0400 Subject: Implement iss-mesg-add 'advIssue' submission Handler now includes logic for optionally advancing the issue through the pipeline. If this happens, 'closeIssue' (for example) will not be checked, as only one submission can be used. Signed-off-by: Malf Furious --- app/model/issue.php | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/app/model/issue.php b/app/model/issue.php index 403e82e..910cb14 100644 --- a/app/model/issue.php +++ b/app/model/issue.php @@ -50,7 +50,28 @@ if (isAction("iss-mesg-add")) logError(NOTICE, "Saved attachment " . $mesg->attachment); } - if (isset(input()['closeIssue'])) + if (isset(input()['advIssue'])) + { + if (!$user->canModify($issue)) + { + logError(ERROR, "You do not have permission to move this issue"); + return; + } + + $issue->advance($user); + + if ($issue->isOpen()) + { + $sgename = $issue->getParent()->name; + $log = mesg::initNewLog("%s advanced issue to '" . $sgename . "'", $user, $issue); + } + else + { + $log = mesg::initNewLog("%s closed issue", $user, $issue); + } + } + + else if (isset(input()['closeIssue'])) { if (!$user->canModify($issue)) { -- cgit v1.2.3 From 23cc51685c5479d487d6416bc7e414e3f8aa60c1 Mon Sep 17 00:00:00 2001 From: Malf Furious Date: Sun, 4 Nov 2018 16:36:12 -0500 Subject: Add user interface for issue assignment This allows users to add assignees when posting to an issue. A dropdown is revealed which contains the pad owner and all members. Signed-off-by: Malf Furious --- app/view/issue.php | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/app/view/issue.php b/app/view/issue.php index 67f5627..5f1c518 100644 --- a/app/view/issue.php +++ b/app/view/issue.php @@ -126,6 +126,32 @@ require_once "class/issue.class.php"; + + + + +
+
+ + + +
+ +
-- cgit v1.2.3 From 2fc9cff6006580e3b1d9e3f194de3ef29e5d0247 Mon Sep 17 00:00:00 2001 From: Malf Furious Date: Sun, 4 Nov 2018 16:49:17 -0500 Subject: Implement 'add assignee' form handler The 'iss-mesg-add' form now handles when the 'assIssue' submission is sent. This is the only submission of this form that looks at the (usually hidden) 'assignee' dropdown field, which has been made a required field however. Signed-off-by: Malf Furious --- app/model/issue.php | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/app/model/issue.php b/app/model/issue.php index 910cb14..923bfc2 100644 --- a/app/model/issue.php +++ b/app/model/issue.php @@ -24,6 +24,7 @@ if (isAction("iss-mesg-add")) $form = new form(); $form->text("issue"); $form->text("mesg", false); + $form->text("assignee"); if (!$form->populate(input())) return; @@ -71,6 +72,23 @@ if (isAction("iss-mesg-add")) } } + else if (isset(input()['assIssue'])) + { + if (!$user->canModify($issue)) + { + logError(ERROR, "You do not have permission to assign this issue"); + return; + } + + $assignee = new user($form->assignee); + $stat = $issue->addAssignee($assignee, $user); + + if (!$stat) + logError(ERROR, "Failed to assign issue"); + else + $log = mesg::initNewLog("%s assigned " . $assignee->getDisplayName(), $user, $issue); + } + else if (isset(input()['closeIssue'])) { if (!$user->canModify($issue)) -- cgit v1.2.3 From a0f4582d26578bfde0de941309da7ce1477e8e8e Mon Sep 17 00:00:00 2001 From: Malf Furious Date: Mon, 5 Nov 2018 02:41:42 -0500 Subject: Return code 404 when displaying the 404 page To be more compliant with the HTTP standard, we will _actually_ return '404 Not Found' status when we decide to show the 404 view. A status of '200 OK' is misleading and incorrect. Signed-off-by: Malf Furious --- app/index.php | 1 + 1 file changed, 1 insertion(+) diff --git a/app/index.php b/app/index.php index 21f3036..7395c6f 100644 --- a/app/index.php +++ b/app/index.php @@ -119,6 +119,7 @@ function main(array $argv) : void /* page not found */ else { + header("HTTP/1.1 404 Not Found"); require "view/404.php"; } } -- cgit v1.2.3 From fead9f76a6f620642e0051d0065e689580af7d90 Mon Sep 17 00:00:00 2001 From: Malf Furious Date: Mon, 5 Nov 2018 02:56:36 -0500 Subject: Fix bug in 'iss-mesg-add' form handler When closing issues, we were using a malformed format string. The 's' from the '%s' was missing. Signed-off-by: Malf Furious --- app/model/issue.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/model/issue.php b/app/model/issue.php index 923bfc2..7159015 100644 --- a/app/model/issue.php +++ b/app/model/issue.php @@ -99,7 +99,7 @@ if (isAction("iss-mesg-add")) $issue->close($user); logError(NOTICE, "Issue #" . $issue->numb . " closed"); - $log = mesg::initNewLog("% closed issue", $user, $issue); + $log = mesg::initNewLog("%s closed issue", $user, $issue); } } -- cgit v1.2.3 From 81ba021468e38de09ac292115bb2f15c9d4deec0 Mon Sep 17 00:00:00 2001 From: Malf Furious Date: Mon, 5 Nov 2018 03:10:32 -0500 Subject: Add function pad::getClosedIssues_ordByClosed() This returns an array of all issues which directly parent the pad object. These are the pad's closed issues. Most recently closed issues are first in the array. Signed-off-by: Malf Furious --- app/class/pad.class.php | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/app/class/pad.class.php b/app/class/pad.class.php index dcf2b32..0c69385 100644 --- a/app/class/pad.class.php +++ b/app/class/pad.class.php @@ -108,6 +108,24 @@ class pad extends obj $stage->saveObj(); $this->saveObj(); } + + /* + * Get an array of all closed issues under this pad. Ordered by + * datetime closed. + */ + public function getClosedIssues_ordByClosed() : array + { + $query = "SELECT o.guid FROM objects o JOIN issues i ON o.guid = i.guid " . + "WHERE o.parent = '" . database::esc($this->guid) . "' ORDER BY i.closed DESC"; + $res = database::query($query); + + $issues = array(); + + foreach ($res as $i) + $issues[] = new issue($i['guid']); + + return $issues; + } } ?> -- cgit v1.2.3 From 434ebff8466ead8f9bb4c0f00037a107cbf842c4 Mon Sep 17 00:00:00 2001 From: Malf Furious Date: Mon, 5 Nov 2018 03:32:06 -0500 Subject: Add pad closed issues view This view is routable from app//closed. It is a separate view for displaying the closed issues of a pad. index.php as well as the pad model code is also updated to support this view. This view currently *does not* support paging. This will very likely be added in the future. Signed-off-by: Malf Furious --- app/index.php | 5 +++- app/model/pad.php | 2 ++ app/view/pad_closed.php | 64 +++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 app/view/pad_closed.php diff --git a/app/index.php b/app/index.php index 21f3036..4607351 100644 --- a/app/index.php +++ b/app/index.php @@ -111,7 +111,10 @@ function main(array $argv) : void $obj = new pad($argv[0]); setPageObj($obj); setPageName($obj->name); - require "view/pad.php"; + if (isset($argv[1]) && $argv[1] == "closed") + require "view/pad_closed.php"; + else + require "view/pad.php"; break; } } diff --git a/app/model/pad.php b/app/model/pad.php index d7cfb23..0090c27 100644 --- a/app/model/pad.php +++ b/app/model/pad.php @@ -26,4 +26,6 @@ foreach ($stages as $s) $issues = array_merge($issues, $i); } +$closed_issues = $pad->getClosedIssues_ordByClosed(); + ?> diff --git a/app/view/pad_closed.php b/app/view/pad_closed.php new file mode 100644 index 0000000..19864cd --- /dev/null +++ b/app/view/pad_closed.php @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + +
+
+
+
+

+ + name?> + + + View open issues + +

+
+
+
+ +
+ + + + +
+
+
+ + + + -- cgit v1.2.3 From a78cfba0975eaa45540edca95835f302cbb86cef Mon Sep 17 00:00:00 2001 From: Malf Furious Date: Mon, 5 Nov 2018 03:45:48 -0500 Subject: Add link to closed issues view Signed-off-by: Malf Furious --- app/view/pad.php | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/app/view/pad.php b/app/view/pad.php index a9c8508..bf626bf 100644 --- a/app/view/pad.php +++ b/app/view/pad.php @@ -42,9 +42,15 @@ require_once "view/issue.php"; name?> - +
+ + + + View closed issues + +
-- cgit v1.2.3 From daa4f7a34e23d18e23d34d4becca752635b2ea38 Mon Sep 17 00:00:00 2001 From: Malf Furious Date: Mon, 5 Nov 2018 04:21:49 -0500 Subject: Only display 'iss-mesg-add' form for open issues Disallow posting to closed issues. This is a temporary soultion and will likely be reverted in the future. The main reason this is being done now is because this form, as written, depends on an open issue state. To aid diff comprehension, note that most lines are only indented one level, the code area affected is wrapped in a PHP if. Note that form submissions are still allowed for closed issues. This commit only disable the _displaying_ of the form. Signed-off-by: Malf Furious --- app/view/issue.php | 86 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 44 insertions(+), 42 deletions(-) diff --git a/app/view/issue.php b/app/view/issue.php index 5f1c518..6edf7cf 100644 --- a/app/view/issue.php +++ b/app/view/issue.php @@ -109,53 +109,55 @@ require_once "class/issue.class.php"; -
- - guid )?> - - -
- - - - - - - -
- -
-
- + isOpen()) { ?> + + + guid )?> + + +
+ + + + + + + +
- + - - -
- -
+ getParent()->getParent()->getMembers() as $memb) { ?> + + + + + + + - -
+ + +
-- cgit v1.2.3 From 762208664a9173bc9507a66fbd0c8020e382db88 Mon Sep 17 00:00:00 2001 From: Malf Furious Date: Sat, 10 Nov 2018 09:12:01 -0500 Subject: Add function agent::getContainedUsers() This function helps further abstract agents. We want to get all users belonging to a pad that is owned by a group, or more specifically - an agent. If this agent is a user, that user is our only user to collect. If this agent is a group, we want to capture _it's_ owner along with all of it's members. Signed-off-by: Malf Furious --- app/class/agent.class.php | 7 +++++++ app/class/group.class.php | 11 +++++++++++ app/class/user.class.php | 9 +++++++++ 3 files changed, 27 insertions(+) diff --git a/app/class/agent.class.php b/app/class/agent.class.php index 4c75f0b..4651a10 100644 --- a/app/class/agent.class.php +++ b/app/class/agent.class.php @@ -89,6 +89,13 @@ abstract class agent extends obj return false; } + /* + * Get all contained users. For users, this is an array containing + * only $this. For groups, this is an array containing the owner + * and all members. + */ + public abstract function getContainedUsers() : array; + /* * Send an email message to this agent using stored configuration * parameters. If config is not established, delivery is not diff --git a/app/class/group.class.php b/app/class/group.class.php index 1191d71..600fb6d 100644 --- a/app/class/group.class.php +++ b/app/class/group.class.php @@ -63,6 +63,17 @@ class group extends agent return $group; } + /* + * Get all contained users. This is an array of all members and + * the group owner. + */ + public function getContainedUsers() : array + { + $cus = $this->getMembers(); + $cus[] = $this->getOwner(); + return $cus; + } + /* * Send an email message to this group using stored configuration * parameters. If config is not established, delivery is not diff --git a/app/class/user.class.php b/app/class/user.class.php index 90aac44..231111d 100644 --- a/app/class/user.class.php +++ b/app/class/user.class.php @@ -293,6 +293,15 @@ class user extends agent return $groups; } + /* + * Get all contained users. This is just an array containing + * the user object. + */ + public function getContainedUsers() : array + { + return array($this); + } + /* * Send an email message to this user using stored configuration * parameters. If config is not established, delivery is not -- cgit v1.2.3 From be18c21941eb1309047e5cede3467cc538e71559 Mon Sep 17 00:00:00 2001 From: Malf Furious Date: Sat, 10 Nov 2018 09:21:54 -0500 Subject: Fix bug in assignee selection Previously, issues on pads owned by a group (rather than by a user) would incorrectly present options for user assignment. It would show the group as a member of the list, misleadingly with the user icon to the left of it. This patch uses the new agent::getContainedUsers() function to resolve the pad's owner to an array of users accessible via the owner 'agent'. Signed-off-by: Malf Furious --- app/view/issue.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/app/view/issue.php b/app/view/issue.php index 6edf7cf..01a9f5f 100644 --- a/app/view/issue.php +++ b/app/view/issue.php @@ -138,9 +138,11 @@ require_once "class/issue.class.php";