From 843d61f143a37b9ad49ea8f5b252032a8162dcfe Mon Sep 17 00:00:00 2001
From: Elmar Ludwig <elmar.ludwig@uni-osnabrueck.de>
Date: Tue, 22 Mar 2022 14:14:13 +0000
Subject: [PATCH] use ABSOLUTE_URI_STUDIP as URL for core plugins and move
 assets, re #796

---
 lib/classes/ModulesNotification.class.php        |   3 ++-
 .../Forum/img => assets/images}/anfasser_48.png  | Bin
 .../core/Blubber/Blubber.class.php               |   8 ++++++++
 .../core/Forum/CoreForum.class.php               |  12 +++---------
 .../core/Forum/controllers/forum_controller.php  |   7 -------
 .../plugins_packages/core/Forum/img/accept.png   | Bin 170 -> 0 bytes
 .../core/Forum/img/anfasser_24.png               | Bin 1856 -> 0 bytes
 .../core/Forum/img/community.png                 | Bin 364 -> 0 bytes
 .../core/Forum/img/corners_left.png              | Bin 195 -> 0 bytes
 .../core/Forum/img/corners_left_red.png          | Bin 177 -> 0 bytes
 .../core/Forum/img/corners_right.png             | Bin 201 -> 0 bytes
 .../core/Forum/img/corners_right_red.png         | Bin 181 -> 0 bytes
 .../plugins_packages/core/Forum/img/decline.png  | Bin 165 -> 0 bytes
 public/plugins_packages/core/Forum/img/move.png  | Bin 2882 -> 0 bytes
 .../core/Forum/views/area/add.php                |   2 +-
 .../core/Forum/views/index/_post.php             |  12 ++++++------
 resources/assets/javascripts/init.js             |   2 ++
 .../assets/javascripts/lib}/forum.js             |  10 +++-------
 .../assets/stylesheets/scss}/forum.scss          |   0
 resources/assets/stylesheets/studip.scss         |   1 +
 20 files changed, 26 insertions(+), 31 deletions(-)
 rename public/{plugins_packages/core/Forum/img => assets/images}/anfasser_48.png (100%)
 delete mode 100644 public/plugins_packages/core/Forum/img/accept.png
 delete mode 100644 public/plugins_packages/core/Forum/img/anfasser_24.png
 delete mode 100644 public/plugins_packages/core/Forum/img/community.png
 delete mode 100644 public/plugins_packages/core/Forum/img/corners_left.png
 delete mode 100644 public/plugins_packages/core/Forum/img/corners_left_red.png
 delete mode 100644 public/plugins_packages/core/Forum/img/corners_right.png
 delete mode 100644 public/plugins_packages/core/Forum/img/corners_right_red.png
 delete mode 100644 public/plugins_packages/core/Forum/img/decline.png
 delete mode 100644 public/plugins_packages/core/Forum/img/move.png
 rename {public/plugins_packages/core/Forum/javascript => resources/assets/javascripts/lib}/forum.js (99%)
 rename {public/plugins_packages/core/Forum/stylesheets => resources/assets/stylesheets/scss}/forum.scss (100%)

diff --git a/lib/classes/ModulesNotification.class.php b/lib/classes/ModulesNotification.class.php
index a4d81aaa878..f2f4ddccd70 100644
--- a/lib/classes/ModulesNotification.class.php
+++ b/lib/classes/ModulesNotification.class.php
@@ -55,7 +55,8 @@ class ModulesNotification
                 $this->registered_notification_modules[$id]['icon'] = Icon::create('news');
             }
             if (!is_object($this->registered_notification_modules[$id]['icon'])) {
-                $this->registered_notification_modules[$id]['icon'] = Icon::create($this->registered_notification_modules[$id]['icon']);
+                $icon = $module->getPluginURL() . '/' . $this->registered_notification_modules[$id]['icon'];
+                $this->registered_notification_modules[$id]['icon'] = Icon::create($icon);
             }
         }
         $this->registered_notification_modules[-1] =
diff --git a/public/plugins_packages/core/Forum/img/anfasser_48.png b/public/assets/images/anfasser_48.png
similarity index 100%
rename from public/plugins_packages/core/Forum/img/anfasser_48.png
rename to public/assets/images/anfasser_48.png
diff --git a/public/plugins_packages/core/Blubber/Blubber.class.php b/public/plugins_packages/core/Blubber/Blubber.class.php
index a6f0443de35..ce317ad24ba 100644
--- a/public/plugins_packages/core/Blubber/Blubber.class.php
+++ b/public/plugins_packages/core/Blubber/Blubber.class.php
@@ -14,6 +14,14 @@
  */
 class Blubber extends StudIPPlugin implements StandardPlugin
 {
+    /**
+     * Plugin URL for CorePlugins is ABSOLUTE_URI_STUDIP.
+     */
+    public function getPluginURL()
+    {
+        return $GLOBALS['ABSOLUTE_URI_STUDIP'];
+    }
+
     /**
      * Returns a navigation for the tab displayed in the course.
      * @param string $course_id of the course
diff --git a/public/plugins_packages/core/Forum/CoreForum.class.php b/public/plugins_packages/core/Forum/CoreForum.class.php
index 520da03d9df..9ab7b4f05d1 100644
--- a/public/plugins_packages/core/Forum/CoreForum.class.php
+++ b/public/plugins_packages/core/Forum/CoreForum.class.php
@@ -31,17 +31,11 @@ NotificationCenter::addObserver('ForumActivity', 'deleteEntry', 'ForumBeforeDele
 class CoreForum extends StudipPlugin implements ForumModule
 {
     /**
-     * This method dispatches all actions.
-     *
-     * @param string $unconsumed_path  part of the dispatch path that was not consumed
+     * Plugin URL for CorePlugins is ABSOLUTE_URI_STUDIP.
      */
-    public function perform($unconsumed_path)
+    public function getPluginURL()
     {
-        // Add JS and StyleSheet to header
-        $this->addScript('javascript/forum.js');
-        $this->addStylesheet('stylesheets/forum.scss');
-
-        parent::perform($unconsumed_path);
+        return $GLOBALS['ABSOLUTE_URI_STUDIP'];
     }
 
     /* interface method */
diff --git a/public/plugins_packages/core/Forum/controllers/forum_controller.php b/public/plugins_packages/core/Forum/controllers/forum_controller.php
index ee482ccefd6..d25aa554c60 100644
--- a/public/plugins_packages/core/Forum/controllers/forum_controller.php
+++ b/public/plugins_packages/core/Forum/controllers/forum_controller.php
@@ -46,13 +46,6 @@ class ForumController extends StudipController {
         PageLayout::setHelpKeyword('Basis.Forum');
         PageLayout::setTitle(Context::getHeaderLine() .' - '. _('Forum'));
 
-        $this->AVAILABLE_DESIGNS = ['web20', 'studip'];
-        if ($GLOBALS['CANONICAL_RELATIVE_PATH_STUDIP'] && $GLOBALS['CANONICAL_RELATIVE_PATH_STUDIP'] != '/') {
-            $this->picturepath = $GLOBALS['CANONICAL_RELATIVE_PATH_STUDIP'] .'/'. $this->dispatcher->trails_root . '/img';
-        } else {
-            $this->picturepath = '/'. $this->dispatcher->trails_root . '/img';
-        }
-
         // the default for displaying timestamps
         $this->time_format_string = "%a %d. %B %Y, %H:%M";
         $this->time_format_string_short = "%d.%m.%Y, %H:%M";
diff --git a/public/plugins_packages/core/Forum/img/accept.png b/public/plugins_packages/core/Forum/img/accept.png
deleted file mode 100644
index 78b7d42665b5c29e839faad9bdbfc814f5fb84e7..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 170
zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s73O!vMLn>|^oqUq>fB_Fn
zaFchT=c^N{OQuYj5ERn%sNsyAQ=1IG{+ZKfZgEt0cEtN=Mp#!bcVIj*Q)lJ<l%vNJ
zPr5n(l$yNeMsVdBhfS9@RVe>#$t##5T&H$g%R{O|Z>IRkyeGfXgnLu;1deT*@n4$%
Z<W%qXho+Y1GB7YOc)I$ztaD0e0sy1*LXZFe

diff --git a/public/plugins_packages/core/Forum/img/anfasser_24.png b/public/plugins_packages/core/Forum/img/anfasser_24.png
deleted file mode 100644
index 2332e02ba430f11fbdd811b332da84f7619ce10b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1856
zcmeAS@N?(olHy`uVBq!ia0y~yU|?rpV36QoV_;w~yYzf60|SF(iEBhjaDG}zd16s2
zgJVj5QmTSyZen_BP-<dIW#P$G8wLh8wak!+k_cZPtK|G#y+n{2y^7od1`x2ZuP8`N
z&Q2{+NJ>r5%(GQ`zk9!uLS~AsQn;zFfp39xYDT6<RZ(him0w75Rd%vvijuvZf=z{0
zMQ%ZEYDuC(MQ%=Bu~mhw64+d;ykaYmu)dN4SV>8?trEmh5xxNm&iO^D3Z{Any2%D+
zh6-jTdWI$jmL`@u3PuKo2Kt6Z`Ud8@h6Yxq=2ixV3Q(YAr(jc*l4cd;;s&*=C?(BS
zDWjyMz)D}gyu4hm+*mKaC|%#s($Z4jz)0W7NVg~@O}Dr*uOzWTH?LS3W`av<adJ^+
zK}lwQo&w0k#H9Sv5?duDsIe8f1#n~YilM=joS&;-kyxN_sAmB364<XP$#8WArA0Yl
z%Tto|Q*%;tQ}arS^$qn5;c6>#3w(Xy%CQ=on+sQ6T;f_*f?suUNM%8)eo$(0erZv1
zs%u$lUWqcy2gM~psfeJ#Y8k5bpwu+5<^n6{qSVBa{GyQj{2W+>1!Uxx<QHe;7brLf
zo9Y=V_$DT2=7B^&)<Jcox+IpQ+A0|t7#issSm+v=h8P)GnHpP}7;76CSs55Wl=|kU
zWTsVOC^fXSGBC6<HbhaHT9TNOSdvIkaZ0jPT7FS(Vu`I%CMdb<7v!abZS(cD^2{qP
zNz6-5^>ndSs>m(S%gju%vUGDZH8nJFb~QI}GBk8Gbh0!xwKOv`bTlz@GP5)_gz0t3
zPc8*TBTR1!Laz%Uz5Yd+>6v+nIoQlFFtIQ&G&DCcFgG$VvoJKYa5QsqG<0z?bg?vc
zG&D8?B~ox=vGT|)F3B&dgeLpo)IumLCsP5OKCBXxK}pzFDH#-JsVPcO;Y=*PCTJ^E
zZ+S*)9^Pn#*jx-PXB^X0^GXP(6MbARFHS5Y;BHd_p@q}khE@g!Rz~pTN0z&xh9_qv
z=B1~m*edBOfqbG5Dl;I_p^qL@5WY)lQD#|cid#{Bt^znOT49Y7BK#JVnr4-PB_$G!
zPq;&o3OhRm8?f7hT--oRaJdXBqwN$Bg@0;Zimg(SlD%Ds($+)<28IouE{-7;w^}Ae
zavd^|V7uMaq_pEo`A4R_?Qa)eQUA)PSE|Y3%Kh!|&xL;&c~uUld=hYaq;vXMpvc_U
zk_IcM`+bp(^*_pL)NZ`^k<dnG?ZuB+W;%WDOzP@cQ2EQ8Pw?@96*s=mK6}HN$xL2x
zL6Y>x9L-}L>5C#1^E2W!r=8%QHNDGUWkFJ-&4S8>74CWSx-5&nhU`(;nSQALqJ`Bw
rk@6Fa?|QqUQ+Umf#fzV^XX0VF7Hk;*)7?%RRHu2m`njxgN@xNA(P&S;

diff --git a/public/plugins_packages/core/Forum/img/community.png b/public/plugins_packages/core/Forum/img/community.png
deleted file mode 100644
index e7e1ae0263416df144ed0d6761116500243586a6..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 364
zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s77>k44ofy`glX=O&z`&N|
z?e4<x9|RZdT|SwCfq}EYBeIx*fm;}a85w5Hkzin8U@!6Xb!ET9B+kyp;A{MQBLf4&
z8&4O<5R21SCmZ%1G7xZ$Z(v^Huqai#Jgm>*xS^A`cuk|Pm(*d=Z*1P|vgQg!&$%u;
zHoACD&z%#R(iEY&=!Sl;$>;xPGSYP1LqjjJ+FC6tZeAhDp_}f&WwBtxDU0*{js6Kd
zIctnwx3f8&zN3D12c!Hwd!|BX?KMV~JDj9^#F;y{TU@xbUFM_q1(|@V;>K^YZ?B*G
z`rRgZKX-NcyvCiO&uZ?*zB~Lf<MB`94K)^vE*LSYosC^<wDW?|x0*{vf47G&>uH&$
zt-$S?z$g>NcjL&e>p?N^Evf@~CfHWD-v0lSn|VRTL)i`gy_@BiJ+x<7+w)`v0|Ntt
Mr>mdKI;Vst0D$U>DgXcg

diff --git a/public/plugins_packages/core/Forum/img/corners_left.png b/public/plugins_packages/core/Forum/img/corners_left.png
deleted file mode 100644
index 256bde3daa62be78f5ba32f324fda6090183a2ce..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 195
zcmeAS@N?(olHy`uVBq!ia0y~yU|?flVBp~Zk&fYK^cWZzSkfJR9T^y|-MHc(VZ^||
zAX(xXQ4*Y=R#Ki=l*-_klAn~S;F+74o*I;zm{M7IGS!BGfg#k>#WAGfR??4t2K&Ye
zBZ1q@hSJO-A2<c184Q_uj2%K>DRCcCQCrM?NF`^3r$Li$Qo@g;4Qw+c3K%A|80vKv
vtcm(yDgMkcHb-cK!b}EUA+`nvW`^vdMVItXEnLaKz`)??>gTe~DWM4fwDURu

diff --git a/public/plugins_packages/core/Forum/img/corners_left_red.png b/public/plugins_packages/core/Forum/img/corners_left_red.png
deleted file mode 100644
index d3714b538f52b7de6eb6e2dd3c1fdeeeaa29c7c4..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 177
zcmeAS@N?(olHy`uVBq!ia0y~yU|?flVBp~Zk&fYK^cWZz7>k44ofy`glX(e}P4aek
zVfYV%3-&Ib%)r3FS>O>_%)r1c48n{Iv*t)JFfg!}c>21s-(X_lHWhw*a83*Z1B0Qb
zi(`ny<>Wu-4}6%<$erN$@bCZg9LYwB!Y&>QI2XN=FyM4M_J2p|0#BnP-bw%eOEONs
V$tNtlY%$1D44$rjF6*2UngBXMG*SQn

diff --git a/public/plugins_packages/core/Forum/img/corners_right.png b/public/plugins_packages/core/Forum/img/corners_right.png
deleted file mode 100644
index df41823b4cb013ebcefd2ee446efa9a6f3a48a10..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 201
zcmeAS@N?(olHy`uVBq!ia0y~yU|?flVBp~Zk&fYK^cWZzSkfJR9T^y|-MHc(VZ^||
zAX(xXQ4*Y=R#Ki=l*-_klAn~S;F+74o*I;zm{M7IGS!BGfg#${#WAGfR?@Hk|Lvs(
zZZm&OQTX>$o=f7w21WsUMo$C71x?%zZ#a+azo6>yz)0ZyAvH!O?LyBvhg1)?c{_<u
zcd;<zj8!<7a!6^1>`gvtg?S7|(i<YAR2T#j82rSITAzK@pTfYvz~JfX=d#Wzp$Pzv
C7e93X

diff --git a/public/plugins_packages/core/Forum/img/corners_right_red.png b/public/plugins_packages/core/Forum/img/corners_right_red.png
deleted file mode 100644
index a479ee2dffe4d5a4c08b15b872a2b39029e616c3..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 181
zcmeAS@N?(olHy`uVBq!ia0y~yU|?flVBp~Zk&fYK^cWZz7>k44ofy`glX(e}P4aek
zVfYV%3-&Ib%)r3FS>O>_%)r1c48n{Iv*t)JFfg!}c>21s-(X_lHWes2arPMl1B0oj
zi(`ny<)i(Ed<+U4N2-qeum2fyWWm9kd0VzCG-pnT-Ls|NB5m8RfTRx({3G_es52hZ
boy1w7&MWpuV9Ol_1_lOCS3j3^P6<r_SVlM9

diff --git a/public/plugins_packages/core/Forum/img/decline.png b/public/plugins_packages/core/Forum/img/decline.png
deleted file mode 100644
index 768cc36be6c049fab09428dda28468b1118f4e04..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 165
zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7ay(reLn>}9oqUj!!H|Px
zy^6Od=ePemg}%uN@*JAbEc$21JAod%No(e`P7%2h6D6du^)ai*lx4z3XPG=^TW?}i
zWm1XIKd`j(A?pr@8+RC5Hb^p<2K3GO`;YsN<d6Li-Z$>={HI&8PX79ibGO)Af0oO1
U|EsTMU|?YIboFyt=akR{09{-^6#xJL

diff --git a/public/plugins_packages/core/Forum/img/move.png b/public/plugins_packages/core/Forum/img/move.png
deleted file mode 100644
index 7f74aa5555ede5e445e776a0c13fc8832195919a..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2882
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
Pz`)??>gTe~DWM4fIptS>

diff --git a/public/plugins_packages/core/Forum/views/area/add.php b/public/plugins_packages/core/Forum/views/area/add.php
index d00db13f646..ba777fb0534 100644
--- a/public/plugins_packages/core/Forum/views/area/add.php
+++ b/public/plugins_packages/core/Forum/views/area/add.php
@@ -1,7 +1,7 @@
 <tr data-area-id="<?= $entry['topic_id'] ?>" <?= (ForumPerm::has('sort_area', $seminar_id)) ? 'class="movable"' : '' ?>>
     <td class="icon">
     <? if (ForumPerm::has('sort_area', $seminar_id)) : ?>
-        <img src="<?= $picturepath ?>/anfasser_48.png" class="handle js">
+        <?= Assets::img('anfasser_48.png', ['class' => 'handle js']) ?>
     <? endif ?>
 
         <a href="<?= $controller->link_for("index/index/{$entry['topic_id']}#{$entry['topic_id']}") ?>">
diff --git a/public/plugins_packages/core/Forum/views/index/_post.php b/public/plugins_packages/core/Forum/views/index/_post.php
index 26b971031f8..21a2dc3e854 100644
--- a/public/plugins_packages/core/Forum/views/index/_post.php
+++ b/public/plugins_packages/core/Forum/views/index/_post.php
@@ -195,12 +195,12 @@
 
                     <!-- Online-Status -->
                     <? $status = ForumHelpers::getOnlineStatus($post['user_id']) ?>
-                    <? if ($status == 'available') : ?>
-                        <img src="<?= $picturepath ?>/community.png" title="<?= _('Online') ?>">
-                    <? elseif ($status == 'away') : ?>
-                        <?= Icon::create('community', 'inactive', ['title' => _('Abwesend')])->asImg() ?>
-                    <? elseif ($status == 'offline') : ?>
-                        <?= Icon::create('community', 'info', ['title' => _('Offline')])->asImg() ?>
+                    <? if ($status === 'available') : ?>
+                        <?= Icon::create('community', Icon::ROLE_STATUS_GREEN, ['title' => _('Online')]) ?>
+                    <? elseif ($status === 'away') : ?>
+                        <?= Icon::create('community', Icon::ROLE_INACTIVE, ['title' => _('Abwesend')]) ?>
+                    <? elseif ($status === 'offline') : ?>
+                        <?= Icon::create('community', Icon::ROLE_INFO, ['title' => _('Offline')]) ?>
                     <? endif ?>
 
                     <a href="<?= URLHelper::getLink('dispatch.php/profile', ['username' => get_username($post['user_id'])])?>">
diff --git a/resources/assets/javascripts/init.js b/resources/assets/javascripts/init.js
index caf944e4bd7..07512c8c8bc 100644
--- a/resources/assets/javascripts/init.js
+++ b/resources/assets/javascripts/init.js
@@ -29,6 +29,7 @@ import Files from './lib/files.js';
 import FilesDashboard from './lib/files_dashboard.js';
 import Folders from './lib/folders.js';
 import Forms from './lib/forms.js';
+import Forum from './lib/forum.js';
 import Fullscreen from './lib/fullscreen.js';
 import GlobalSearch from './lib/global_search.js';
 import HeaderMagic from './lib/header_magic.js';
@@ -114,6 +115,7 @@ window.STUDIP = _.assign(window.STUDIP || {}, {
     FilesDashboard,
     Folders,
     Forms,
+    Forum,
     Fullscreen,
     Gettext,
     GlobalSearch,
diff --git a/public/plugins_packages/core/Forum/javascript/forum.js b/resources/assets/javascripts/lib/forum.js
similarity index 99%
rename from public/plugins_packages/core/Forum/javascript/forum.js
rename to resources/assets/javascripts/lib/forum.js
index 636ca474cd0..7626d2405a6 100644
--- a/public/plugins_packages/core/Forum/javascript/forum.js
+++ b/resources/assets/javascripts/lib/forum.js
@@ -1,10 +1,4 @@
-/*global window, $, jQuery, document, _ */
-/* ------------------------------------------------------------------------
- * the global STUDIP namespace
- * ------------------------------------------------------------------------ */
-var STUDIP = STUDIP || {};
-
-STUDIP.Forum = {
+const Forum = {
     confirmDialog: null,
     current_area_id: null,
     current_category_id: null,
@@ -890,3 +884,5 @@ jQuery.fn.serializeObject = function() {
     });
     return o;
 };
+
+export default Forum;
diff --git a/public/plugins_packages/core/Forum/stylesheets/forum.scss b/resources/assets/stylesheets/scss/forum.scss
similarity index 100%
rename from public/plugins_packages/core/Forum/stylesheets/forum.scss
rename to resources/assets/stylesheets/scss/forum.scss
diff --git a/resources/assets/stylesheets/studip.scss b/resources/assets/stylesheets/studip.scss
index 1c92ea605a7..83bd85372ea 100644
--- a/resources/assets/stylesheets/studip.scss
+++ b/resources/assets/stylesheets/studip.scss
@@ -18,6 +18,7 @@
 @import "scss/courseware";
 @import "scss/dates";
 @import "scss/files";
+@import "scss/forum";
 @import "scss/fullscreen";
 @import "scss/progress_indicator.scss";
 @import "scss/my_courses";
-- 
GitLab