From d55e5e962ba8c481c2532abfae339998f2b0d764 Mon Sep 17 00:00:00 2001
From: Jan-Hendrik Willms <tleilax+studip@gmail.com>
Date: Thu, 29 Sep 2022 11:17:09 +0000
Subject: [PATCH] fix links after creating a course, fixes #1595

Closes #1595

Merge request studip/studip!1037
---
 app/controllers/course/wizard.php | 45 ++++++++++++++++---------------
 1 file changed, 24 insertions(+), 21 deletions(-)

diff --git a/app/controllers/course/wizard.php b/app/controllers/course/wizard.php
index aaf06e9aea9..840761ccec0 100644
--- a/app/controllers/course/wizard.php
+++ b/app/controllers/course/wizard.php
@@ -177,34 +177,37 @@ class Course_WizardController extends AuthenticatedController
                     $this->redirect(URLHelper::getURL('dispatch.php/course/grouping/children',
                         ['cid' => $batch['parent']]));
                 } else {
-                    if ($this->course = $this->createCourse()) {
+                    $this->course = $this->createCourse();
+                    if ($this->course) {
                         // A studygroup has been created.
-                        if (in_array($this->course->status, studygroup_sem_types() ?: [])) {
-                            $message = MessageBox::success(
-                                sprintf(_('Die Studien-/Arbeitsgruppe "%s" wurde angelegt. ' .
-                                    'Sie können sie direkt hier weiter verwalten.'),
-                                    htmlReady($this->course->name)));
-                            $target = $this->url_for('course/studygroup/edit/?cid=' . $this->course->id);
+                        if (in_array($this->course->status, studygroup_sem_types())) {
+                            $message = MessageBox::success(sprintf(
+                                _('Die Studien-/Arbeitsgruppe "%s" wurde angelegt. '
+                                . 'Sie können sie direkt hier weiter verwalten.'),
+                                htmlReady($this->course->name)
+                            ));
+                            $target = $this->url_for('course/studygroup/edit', ['cid' => $this->course->id]);
+
                             // "Normal" course.
+                        } elseif (Request::int('dialog') && $GLOBALS['perm']->have_perm('admin')) {
+                            $message = MessageBox::success(sprintf(
+                                _('Die Veranstaltung <a class="link-intern" href="%s">"%s"</a> wurde angelegt.'),
+                                $this->link_for('course/management?cid=' . $this->course->id),
+                                htmlReady($this->course->getFullname())
+                            ));
+                            $target = $this->url_for('admin/courses');
                         } else {
-                            if (Request::int('dialog')) {
-                                $message = MessageBox::success(
-                                    sprintf(_('Die Veranstaltung <a class="link-intern" href="%s">"%s"</a> wurde angelegt.'),
-                                        $this->link_for('course/management?cid=' . $this->course->id),
-                                        htmlReady($this->course->getFullname())));
-                                $target = $this->url_for('admin/courses');
-                            } else {
-                                $message = MessageBox::success(
-                                    sprintf(_('Die Veranstaltung "%s" wurde angelegt. Sie können sie direkt hier weiter verwalten.'),
-                                        htmlReady($this->course->getFullname())));
-                                $target = $this->url_for('course/management?cid=' . $this->course->id);
-                            }
+                            $message = MessageBox::success(sprintf(
+                                _('Die Veranstaltung "%s" wurde angelegt. Sie können sie direkt hier weiter verwalten.'),
+                                htmlReady($this->course->getFullname())
+                            ));
+                            $target = $this->url_for('course/management', ['cid' => $this->course->id]);
                         }
+
                         PageLayout::postMessage($message);
                         $this->redirect($target);
                     } else {
-                        PageLayout::postMessage(MessageBox::error(
-                            _('Die Veranstaltung konnte nicht angelegt werden.')));
+                        PageLayout::postError(_('Die Veranstaltung konnte nicht angelegt werden.'));
                         $this->redirect('course/wizard');
                     }
                 }
-- 
GitLab