NobGit
public nobgit read

NobMail

Based on mailcow: dockerized

Languages

Repository composition by tracked source files.

PHP
PHP 49% JavaScript 35% HTML 9% CSS 4% Shell 2% Python 1% Lua 0% Perl 0% Ruby 0% SCSS 0%
Create file Wiki Documentation
Clone
https://nobgit.com/orgs/nobgit/nobmail.git
ssh://[email protected]:2222/orgs/nobgit/nobmail.git

Commit

[SOGo] Add mailcow Buttons to SOGo navbar

1e70a201
FreddleSpl0it <[email protected]> 1 year, 6 months ago
data/Dockerfiles/sogo/Dockerfile          |  1 +
 data/Dockerfiles/sogo/bootstrap-sogo.sh   |  4 +++
 data/Dockerfiles/sogo/navMailcowBtns.diff | 20 +++++++++++++++
 data/conf/sogo/custom-sogo.js             | 42 -------------------------------
 docker-compose.yml                        |  2 +-
 5 files changed, 26 insertions(+), 43 deletions(-)
 create mode 100644 data/Dockerfiles/sogo/navMailcowBtns.diff

Diff

diff --git a/data/Dockerfiles/sogo/Dockerfile b/data/Dockerfiles/sogo/Dockerfile
index 78da39be..4eb36638 100644
--- a/data/Dockerfiles/sogo/Dockerfile
+++ b/data/Dockerfiles/sogo/Dockerfile
@@ -48,6 +48,7 @@ COPY syslog-ng.conf /etc/syslog-ng/syslog-ng.conf
 COPY syslog-ng-redis_slave.conf /etc/syslog-ng/syslog-ng-redis_slave.conf
 COPY supervisord.conf /etc/supervisor/supervisord.conf
 COPY acl.diff /acl.diff
+COPY navMailcowBtns.diff /navMailcowBtns.diff
 COPY stop-supervisor.sh /usr/local/sbin/stop-supervisor.sh
 COPY docker-entrypoint.sh /
 
diff --git a/data/Dockerfiles/sogo/bootstrap-sogo.sh b/data/Dockerfiles/sogo/bootstrap-sogo.sh
index 11b077cf..566d812f 100755
--- a/data/Dockerfiles/sogo/bootstrap-sogo.sh
+++ b/data/Dockerfiles/sogo/bootstrap-sogo.sh
@@ -136,6 +136,10 @@ chmod 600 /var/lib/sogo/GNUstep/Defaults/sogod.plist
 #  fi
 #fi
 
+if patch -R -sfN --dry-run /usr/lib/GNUstep/SOGo/Templates/UIxTopnavToolbar.wox < /navMailcowBtns.diff > /dev/null; then
+  patch -R /usr/lib/GNUstep/SOGo/Templates/UIxTopnavToolbar.wox < /navMailcowBtns.diff;
+fi
+
 # Copy logo, if any
 [[ -f /etc/sogo/sogo-full.svg ]] && cp /etc/sogo/sogo-full.svg /usr/lib/GNUstep/SOGo/WebServerResources/img/sogo-full.svg
 
diff --git a/data/Dockerfiles/sogo/navMailcowBtns.diff b/data/Dockerfiles/sogo/navMailcowBtns.diff
new file mode 100644
index 00000000..1b469aa6
--- /dev/null
+++ b/data/Dockerfiles/sogo/navMailcowBtns.diff
@@ -0,0 +1,20 @@
+59,65d58
+<                ng-show="::!activeUser.isSuperUser"
+<                var:ng-click="navButtonClick"
+<                ng-href="/user">
+<       <md-icon>build</md-icon>
+<       <md-tooltip><var:string label:value="mailcow"/></md-tooltip>
+<     </md-button>
+<     <md-button class="md-icon-button"
+83c76
+<                onclick="document.getElementById('mc_logout').setAttribute('action', '/'); document.getElementById('mc_logout').submit();"
+---
+>                ng-show="::activeUser.path.logoff.length"
+85c78
+<                ng-href="#">
+---
+>                ng-href="{{::activeUser.path.logoff}}">
+89,91d81
+<     <form method="POST" id="mc_logout" action="user">
+<       <input type="hidden" name="logout" value="1">
+<     </form>
diff --git a/data/conf/sogo/custom-sogo.js b/data/conf/sogo/custom-sogo.js
index 1070efa4..e1f27e8f 100644
--- a/data/conf/sogo/custom-sogo.js
+++ b/data/conf/sogo/custom-sogo.js
@@ -4,48 +4,6 @@ document.addEventListener('DOMContentLoaded', function () {
     if (loginForm) {
         window.location.href = '/user';
     }
-
-    angularReady = false;
-    function observe() {
-        angularReady = toolbarExists();
-        if (angularReady && !mcElementsExists()) addMCElements();
-
-        const observer = new MutationObserver(function(mutations) {
-            if (!angularReady) {
-                mutations.forEach(function(mutation) {
-                    if (mutation.addedNodes.length > 0) angularReady = toolbarExists();
-                });
-            } else if (angularReady && !mcElementsExists()) {
-                addMCElements();
-            }
-        });
-
-        const targetNode = document.body;
-        const config = { childList: true, subtree: true };
-        observer.observe(targetNode, config);
-    }
-    function toolbarExists() {
-        const toolbarElement = document.body.querySelector('md-toolbar');
-        if (toolbarElement)
-            return true;
-        else
-            return false;
-    }
-    function mcElementsExists() {
-        if (document.getElementById("mc_backlink"))
-            return true;
-        else
-            return false;
-    }
-    function addMCElements() {
-        const toolbarElement = document.body.querySelector('.md-toolbar-tools.sg-toolbar-group-last.layout-align-end-center.layout-row');
-        var htmlCode = '<a id="mc_backlink" class="md-icon-button md-button md-ink-ripple" aria-label="mailcow" href="/user" aria-hidden="false" tabindex="-1">' +
-            '<md-icon class="material-icons" role="img" aria-label="build">build</md-icon>' +
-            '</a>';
-        toolbarElement.insertAdjacentHTML('beforeend', htmlCode);
-    }
-
-    observe();
 });
 
 // Custom SOGo JS
diff --git a/docker-compose.yml b/docker-compose.yml
index 9218b396..aaa8a3a0 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -198,7 +198,7 @@ services:
             - phpfpm
 
     sogo-mailcow:
-      image: mailcow/sogo:nightly-20241205
+      image: mailcow/sogo:nightly-20250115
       environment:
         - DBNAME=${DBNAME}
         - DBUSER=${DBUSER}