From 6237f9aa8fa456075a2249b300e087329e8051a5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michaela=20Br=C3=BCckner?= <brueckner@data-quest.de>
Date: Thu, 30 Nov 2023 12:17:42 +0000
Subject: [PATCH] fixes #912

Closes #912

Merge request studip/studip!2367
---
 app/controllers/course/overview.php |  2 +-
 app/views/news/display.php          | 54 ++++++++++++++++-------------
 lib/classes/ContentBoxHelper.php    |  1 +
 lib/modules/CoreOverview.class.php  |  6 ++--
 4 files changed, 35 insertions(+), 28 deletions(-)

diff --git a/app/controllers/course/overview.php b/app/controllers/course/overview.php
index 96e7f5abefc..e0315a8dddc 100644
--- a/app/controllers/course/overview.php
+++ b/app/controllers/course/overview.php
@@ -75,7 +75,7 @@ class Course_OverviewController extends AuthenticatedController
             $show_link         = $GLOBALS["perm"]->have_studip_perm('autor', $this->course_id) && $this->course->isToolActive('schedule');
             $this->times_rooms = $this->sem->getDatesTemplate('dates/seminar_html', ['link_to_dates' => $show_link, 'show_room' => true]);
 
-            // Fettch teachers
+            // Fetch teachers
             $dozenten      = $this->sem->getMembers('dozent');
             $this->num_dozenten  = count($dozenten);
             $show_dozenten = [];
diff --git a/app/views/news/display.php b/app/views/news/display.php
index 356ec1f1249..042b9123569 100644
--- a/app/views/news/display.php
+++ b/app/views/news/display.php
@@ -25,35 +25,41 @@
         </nav>
     </header>
     <? foreach ($news as $new): ?>
-    <? $is_new = ($new['chdate'] >= object_get_visit($new->id, 'news', false, false))
+        <? $is_new = ($new['chdate'] >= object_get_visit($new->id, 'news', false, false))
             && ($new['user_id'] != $GLOBALS['user']->id); ?>
-    <article class="studip toggle <?= ContentBoxHelper::classes($new->id, $is_new) ?>" id="<?= $new->id ?>" data-visiturl="<?=URLHelper::getScriptLink('dispatch.php/news/visit')?>">
-        <header>
-            <h1>
-                <a href="<?= ContentBoxHelper::href($new->id, ['contentbox_type' => 'news']) ?>">
-                    <?= Icon::create('news') ?>
-                    <?= htmlReady($new['topic']); ?>
-                </a>
-            </h1>
-            <nav>
-                <?= $this->render_partial('news/_actions.php', ['new' => $new, 'range' => $range]) ?>
-            </nav>
-        </header>
-        <section>
-            <article>
-                <?= formatReady($new['body']) ?>
-            </article>
-        </section>
-        <?= $this->render_partial('news/_comments.php', ['new' => $new, 'range' => $range]) ?>
-    </article>
+        <? if ($is_new && Request::get('unread_news') === 'yes') : ?>
+        <? object_add_view($new->id);
+            object_set_visit($new->id, 'news');?>
+        <? endif ?>
+        <article class="studip toggle <?= ContentBoxHelper::classes($new->id, $is_new) ?>"
+                 id="<?= $new->id ?>"
+                 data-visiturl="<?=URLHelper::getScriptLink('dispatch.php/news/visit')?>">
+            <header>
+                <h1>
+                    <a href="<?= ContentBoxHelper::href($new->id, ['contentbox_type' => 'news']) ?>">
+                        <?= Icon::create('news') ?>
+                        <?= htmlReady($new['topic']); ?>
+                    </a>
+                </h1>
+                <nav>
+                    <?= $this->render_partial('news/_actions.php', ['new' => $new, 'range' => $range]) ?>
+                </nav>
+            </header>
+            <section>
+                <article>
+                    <?= formatReady($new['body']) ?>
+                </article>
+            </section>
+            <?= $this->render_partial('news/_comments.php', ['new' => $new, 'range' => $range]) ?>
+        </article>
     <? endforeach; ?>
     <? if (!$news): ?>
-    <section>
-        <?= _('Es sind keine aktuellen Ankündigungen vorhanden. Um neue Ankündigungen zu erstellen, klicken Sie rechts auf das Plus-Zeichen.') ?>
-    </section>
+        <section>
+            <?= _('Es sind keine aktuellen Ankündigungen vorhanden. Um neue Ankündigungen zu erstellen, klicken Sie rechts auf das Plus-Zeichen.') ?>
+        </section>
         <? if ($perm && $count_all_news) : ?>
             <footer>
-            <a href="<?=URLHelper::getLink('?nshow_all=1')?>"><?=sprintf(_("Abgelaufene und unveröffentlichte Ankündigungen anzeigen (%s)"), $count_all_news)?></a>
+                <a href="<?=URLHelper::getLink('?nshow_all=1')?>"><?=sprintf(_("Abgelaufene und unveröffentlichte Ankündigungen anzeigen (%s)"), $count_all_news)?></a>
             </footer>
         <? endif; ?>
     <? elseif ($perm) : ?>
diff --git a/lib/classes/ContentBoxHelper.php b/lib/classes/ContentBoxHelper.php
index b7767143614..99c0482e30c 100644
--- a/lib/classes/ContentBoxHelper.php
+++ b/lib/classes/ContentBoxHelper.php
@@ -37,6 +37,7 @@ class ContentBoxHelper {
         // Check if new
         if ($is_new) {
             $classes[] = 'new';
+            $classes[] = 'open';
         }
 
         // Return classes
diff --git a/lib/modules/CoreOverview.class.php b/lib/modules/CoreOverview.class.php
index 9092af57d1e..aa24883525d 100644
--- a/lib/modules/CoreOverview.class.php
+++ b/lib/modules/CoreOverview.class.php
@@ -41,9 +41,8 @@ class CoreOverview extends CorePlugin implements StudipModule
         }
 
         $nav = new Navigation(_('Ankündigungen'), '');
-        $url_params = ['redirect_to' => 'dispatch.php/course/overview'];
         if ($result['neue']) {
-            $url_params['new_news'] = true;
+            $url_params = ['unread_news' => 'yes'];
             $nav->setImage(Icon::create('news', Icon::ROLE_ATTENTION), [
                 'title' => sprintf(
                     ngettext(
@@ -68,7 +67,8 @@ class CoreOverview extends CorePlugin implements StudipModule
                 )
             ]);
         }
-        $nav->setURL(URLHelper::getURL('', $url_params));
+        $nav->setURL('dispatch.php/course/overview', $url_params);
+
         return $nav;
     }
 
-- 
GitLab