switch theme on every page

This commit is contained in:
Jörg Henke
2023-09-29 17:29:08 +02:00
parent 3535dbf237
commit 0cc5cdb945
14 changed files with 45 additions and 14 deletions

View File

@ -7,7 +7,7 @@ plugins {
apply plugin: 'io.spring.dependency-management' apply plugin: 'io.spring.dependency-management'
group = 'de.jottyfan' group = 'de.jottyfan'
version = '1.3.3' version = '1.3.4'
description = """timetrack""" description = """timetrack"""

View File

@ -0,0 +1,19 @@
package de.jottyfan.timetrack.modules;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.ModelAttribute;
/**
*
* @author jotty
*
*/
public abstract class CommonController {
@Value("${server.servlet.context-path}")
private String contextPath;
@ModelAttribute("baseUrl")
public String getBaseUrl() {
return contextPath;
}
}

View File

@ -30,7 +30,7 @@ import jakarta.servlet.http.HttpServletRequest;
* *
*/ */
@Controller @Controller
public class IndexController { public class IndexController extends CommonController {
private static final Logger LOGGER = LogManager.getLogger(IndexController.class); private static final Logger LOGGER = LogManager.getLogger(IndexController.class);
@Autowired @Autowired

View File

@ -6,6 +6,7 @@ import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import de.jottyfan.timetrack.component.OAuth2Provider; import de.jottyfan.timetrack.component.OAuth2Provider;
import de.jottyfan.timetrack.modules.CommonController;
import de.jottyfan.timetrack.modules.profile.ProfileService; import de.jottyfan.timetrack.modules.profile.ProfileService;
/** /**
@ -14,7 +15,7 @@ import de.jottyfan.timetrack.modules.profile.ProfileService;
* *
*/ */
@Controller @Controller
public class CalendarController { public class CalendarController extends CommonController {
@Autowired @Autowired
private OAuth2Provider provider; private OAuth2Provider provider;

View File

@ -16,6 +16,7 @@ import org.springframework.web.bind.annotation.ResponseBody;
import de.jottyfan.timetrack.component.OAuth2Provider; import de.jottyfan.timetrack.component.OAuth2Provider;
import de.jottyfan.timetrack.db.contact.enums.EnumContacttype; import de.jottyfan.timetrack.db.contact.enums.EnumContacttype;
import de.jottyfan.timetrack.modules.CommonController;
import de.jottyfan.timetrack.modules.profile.ProfileService; import de.jottyfan.timetrack.modules.profile.ProfileService;
import jakarta.annotation.security.RolesAllowed; import jakarta.annotation.security.RolesAllowed;
@ -25,7 +26,7 @@ import jakarta.annotation.security.RolesAllowed;
* *
*/ */
@Controller @Controller
public class ContactController { public class ContactController extends CommonController {
@Autowired @Autowired
private OAuth2Provider provider; private OAuth2Provider provider;

View File

@ -15,6 +15,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestMethod;
import de.jottyfan.timetrack.component.OAuth2Provider; import de.jottyfan.timetrack.component.OAuth2Provider;
import de.jottyfan.timetrack.modules.CommonController;
import de.jottyfan.timetrack.modules.profile.ProfileService; import de.jottyfan.timetrack.modules.profile.ProfileService;
import jakarta.annotation.security.RolesAllowed; import jakarta.annotation.security.RolesAllowed;
@ -24,7 +25,7 @@ import jakarta.annotation.security.RolesAllowed;
* *
*/ */
@Controller @Controller
public class DoneController { public class DoneController extends CommonController {
@Autowired @Autowired
private OAuth2Provider provider; private OAuth2Provider provider;

View File

@ -11,6 +11,7 @@ import org.springframework.web.bind.annotation.RequestMethod;
import de.jottyfan.timetrack.component.OAuth2Provider; import de.jottyfan.timetrack.component.OAuth2Provider;
import de.jottyfan.timetrack.db.done.tables.records.TJobRecord; import de.jottyfan.timetrack.db.done.tables.records.TJobRecord;
import de.jottyfan.timetrack.modules.CommonController;
import de.jottyfan.timetrack.modules.done.DoneController; import de.jottyfan.timetrack.modules.done.DoneController;
import de.jottyfan.timetrack.modules.done.DoneModel; import de.jottyfan.timetrack.modules.done.DoneModel;
import de.jottyfan.timetrack.modules.profile.ProfileService; import de.jottyfan.timetrack.modules.profile.ProfileService;
@ -22,7 +23,7 @@ import jakarta.annotation.security.RolesAllowed;
* *
*/ */
@Controller @Controller
public class JobController { public class JobController extends CommonController {
@Autowired @Autowired
private JobService jobService; private JobService jobService;

View File

@ -11,6 +11,7 @@ import org.springframework.web.bind.annotation.RequestMethod;
import de.jottyfan.timetrack.component.OAuth2Provider; import de.jottyfan.timetrack.component.OAuth2Provider;
import de.jottyfan.timetrack.db.done.tables.records.TModuleRecord; import de.jottyfan.timetrack.db.done.tables.records.TModuleRecord;
import de.jottyfan.timetrack.modules.CommonController;
import de.jottyfan.timetrack.modules.done.DoneController; import de.jottyfan.timetrack.modules.done.DoneController;
import de.jottyfan.timetrack.modules.done.DoneModel; import de.jottyfan.timetrack.modules.done.DoneModel;
import de.jottyfan.timetrack.modules.profile.ProfileService; import de.jottyfan.timetrack.modules.profile.ProfileService;
@ -22,7 +23,7 @@ import jakarta.annotation.security.RolesAllowed;
* *
*/ */
@Controller @Controller
public class ModuleController { public class ModuleController extends CommonController {
@Autowired @Autowired
private ModuleService moduleService; private ModuleService moduleService;

View File

@ -11,6 +11,7 @@ import org.springframework.web.bind.annotation.RequestMethod;
import de.jottyfan.timetrack.component.OAuth2Provider; import de.jottyfan.timetrack.component.OAuth2Provider;
import de.jottyfan.timetrack.db.done.tables.records.TProjectRecord; import de.jottyfan.timetrack.db.done.tables.records.TProjectRecord;
import de.jottyfan.timetrack.modules.CommonController;
import de.jottyfan.timetrack.modules.done.DoneController; import de.jottyfan.timetrack.modules.done.DoneController;
import de.jottyfan.timetrack.modules.done.DoneModel; import de.jottyfan.timetrack.modules.done.DoneModel;
import de.jottyfan.timetrack.modules.profile.ProfileService; import de.jottyfan.timetrack.modules.profile.ProfileService;
@ -22,7 +23,7 @@ import jakarta.annotation.security.RolesAllowed;
* *
*/ */
@Controller @Controller
public class ProjectController { public class ProjectController extends CommonController {
@Autowired @Autowired
private ProjectService projectService; private ProjectService projectService;

View File

@ -16,6 +16,7 @@ import org.springframework.web.bind.annotation.RequestMethod;
import de.jottyfan.timetrack.component.OAuth2Provider; import de.jottyfan.timetrack.component.OAuth2Provider;
import de.jottyfan.timetrack.db.note.enums.EnumCategory; import de.jottyfan.timetrack.db.note.enums.EnumCategory;
import de.jottyfan.timetrack.db.note.enums.EnumNotetype; import de.jottyfan.timetrack.db.note.enums.EnumNotetype;
import de.jottyfan.timetrack.modules.CommonController;
import de.jottyfan.timetrack.modules.profile.ProfileService; import de.jottyfan.timetrack.modules.profile.ProfileService;
import jakarta.annotation.security.RolesAllowed; import jakarta.annotation.security.RolesAllowed;
@ -25,7 +26,7 @@ import jakarta.annotation.security.RolesAllowed;
* *
*/ */
@Controller @Controller
public class NoteController { public class NoteController extends CommonController {
@Autowired @Autowired
private OAuth2Provider provider; private OAuth2Provider provider;

View File

@ -7,6 +7,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestMethod;
import de.jottyfan.timetrack.component.OAuth2Provider; import de.jottyfan.timetrack.component.OAuth2Provider;
import de.jottyfan.timetrack.modules.CommonController;
/** /**
* *
@ -14,7 +15,7 @@ import de.jottyfan.timetrack.component.OAuth2Provider;
* *
*/ */
@Controller @Controller
public class ProfileController { public class ProfileController extends CommonController {
@Autowired @Autowired
private OAuth2Provider provider; private OAuth2Provider provider;

View File

@ -226,13 +226,17 @@ body {
.version { .version {
font-size: small; font-size: small;
color: silver; color: black;
position: absolute; position: absolute;
padding-top: 36px; padding-top: 36px;
padding-left: 22px; padding-left: 22px;
z-index: 0; z-index: 0;
} }
[data-bs-theme="dark"] .version {
color: white;
}
.fc-content { .fc-content {
cursor: pointer; cursor: pointer;
} }

View File

@ -1,8 +1,8 @@
toggleTheme = function() { toggleTheme = function(urlprefix) {
var oldValue = $("html").attr("data-bs-theme"); var oldValue = $("html").attr("data-bs-theme");
var newValue = oldValue == "dark" ? "light" : "dark"; var newValue = oldValue == "dark" ? "light" : "dark";
$("html").attr("data-bs-theme", newValue); $("html").attr("data-bs-theme", newValue);
var url = "profile/" + newValue; var url = urlprefix + "/profile/" + newValue;
$.ajax({ $.ajax({
url: url, url: url,
dataType: 'json', dataType: 'json',

View File

@ -47,7 +47,7 @@
<li class="nav-item"><a class="nav-link titlemod"><font layout:fragment="title"></font></a></li> <li class="nav-item"><a class="nav-link titlemod"><font layout:fragment="title"></font></a></li>
<li layout:fragment="menuitem" style="list-style-type: none"></li> <li layout:fragment="menuitem" style="list-style-type: none"></li>
<li layout:fragment="menu" style="list-style-type: none"></li> <li layout:fragment="menu" style="list-style-type: none"></li>
<li class="nav-item ms-auto"><div id="clock" class="clock" onclick="toggleTheme();resetClock()"></div></li> <li class="nav-item ms-auto"><div id="clock" class="clock" th:attr="onclick=|toggleTheme('${baseUrl}');resetClock()|"></div></li>
</ul> </ul>
</div> </div>
</div> </div>