You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2023/05/16 02:09:20 UTC
[openmeetings] 01/01: [OPENMEETINGS-2774] initial commit to fix styles in the emails
This is an automated email from the ASF dual-hosted git repository.
solomax pushed a commit to branch OPENMEETINGS-2774-emails
in repository https://gitbox.apache.org/repos/asf/openmeetings.git
commit 15d6e294762fa282d9245815f6feb6ebf9dc159e
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Tue May 16 09:09:03 2023 +0700
[OPENMEETINGS-2774] initial commit to fix styles in the emails
---
.../mail/template/AbstractTemplatePage.html | 109 +++++++++++++++++++++
...emplatePanel.java => AbstractTemplatePage.java} | 31 ++++--
.../mail/template/AbstractTemplatePanel.html | 27 -----
.../service/mail/template/FeedbackTemplate.java | 5 +-
.../service/mail/template/InvitationTemplate.java | 5 +-
.../mail/template/RegisterUserTemplate.java | 5 +-
.../template/RequestContactConfirmTemplate.java | 5 +-
.../mail/template/RequestContactTemplate.java | 5 +-
.../mail/template/ResetPasswordTemplate.java | 5 +-
.../template/subject/SubjectEmailTemplate.java | 6 +-
.../apache/openmeetings/web/app/Application.java | 2 +-
.../apache/openmeetings/web/pages/BasePage.html | 54 +++++-----
.../apache/openmeetings/web/pages/BasePage.java | 3 +
13 files changed, 180 insertions(+), 82 deletions(-)
diff --git a/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/AbstractTemplatePage.html b/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/AbstractTemplatePage.html
new file mode 100644
index 000000000..6cac8cf76
--- /dev/null
+++ b/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/AbstractTemplatePage.html
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+<!DOCTYPE html>
+<html xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-9.xsd">
+ <head>
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style>
+ .main {
+ background-color: #f5f5f5;
+ font-family: 'Segoe UI', sans-serif;
+ -webkit-font-smoothing: antialiased;
+ font-size: 14px;
+ line-height: 1.4;
+ margin: 0;
+ padding: 0;
+ -ms-text-size-adjust: 100%;
+ -webkit-text-size-adjust: 100%;
+ font-size: 14px;
+ }
+ h2 {
+ font-size: 25px;
+ font-weight: normal;
+ margin: 0;
+ margin-bottom: 15px;
+ }
+ p, span {
+ margin-bottom: 1em;
+ }
+ a {
+ color: #007bff;
+ text-decoration: none;
+ }
+ .container {
+ max-width: 580px;
+ margin: 0 auto;
+ padding: 20px;
+ width: 100%;
+ }
+ .wrapper {
+ max-width: 540px;
+ margin: 0 auto;
+ padding: 15px;
+ width: 100%;
+ border-radius: 5px;
+ background-color: #fff;
+ }
+ .action a {
+ box-sizing: border-box;
+ cursor: pointer;
+ display: inline-block;
+ font-weight: bold;
+ margin: 0;
+ border-radius: 5px;
+ padding: 12px 25px;
+ background-color: #3498db;
+ border-color: #3498db;
+ color: #ffffff;
+ }
+ @media only screen and (max-width: 620px) {
+ .container {
+ padding: 0;
+ width: 100%;
+ text-align: center;
+ }
+ .wrapper {
+ max-width: 560px;
+ margin: 0 auto;
+ padding: 10px;
+ border-left-width: 0;
+ border-radius: 0;
+ border-right-width: 0;
+ }
+ .wrapper .action {
+ text-align: center;
+ margin-top: 25px;
+ }
+
+ .wrapper .action a {
+ display: block;
+ margin: 0;
+ padding: 12px 25px;
+ }
+ }
+ </style>
+ </head>
+ <body>
+ <div wicket:id="container">
+ <wicket:child/>
+ </div>
+ </body>
+</html>
diff --git a/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/AbstractTemplatePanel.java b/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/AbstractTemplatePage.java
similarity index 58%
rename from openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/AbstractTemplatePanel.java
rename to openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/AbstractTemplatePage.java
index 4d352cdff..50d75ef17 100644
--- a/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/AbstractTemplatePanel.java
+++ b/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/AbstractTemplatePage.java
@@ -22,25 +22,40 @@ import java.util.Locale;
import org.apache.openmeetings.IApplication;
import org.apache.openmeetings.IWebSession;
+import org.apache.wicket.Application;
import org.apache.wicket.AttributeModifier;
import org.apache.wicket.Session;
+import org.apache.wicket.core.util.string.ComponentRenderer;
import org.apache.wicket.markup.html.TransparentWebMarkupContainer;
-import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.protocol.http.WebSession;
+import org.apache.wicket.protocol.http.mock.MockHttpServletRequest;
+import org.apache.wicket.protocol.http.mock.MockHttpSession;
+import org.apache.wicket.protocol.http.servlet.ServletWebRequest;
+import org.apache.wicket.request.Request;
import org.apache.wicket.spring.injection.annot.SpringBean;
-public abstract class AbstractTemplatePanel extends Panel {
+public abstract class AbstractTemplatePage extends WebPage {
private static final long serialVersionUID = 1L;
- public static final String COMP_ID = "template";
+ public static final String COMP_ID = "container";
protected final Locale locale;
+ protected final ComponentRenderer renderer;
@SpringBean
protected IApplication app;
- protected AbstractTemplatePanel(Locale locale) {
- super(COMP_ID);
+ protected AbstractTemplatePage(Locale locale) {
this.locale = locale;
- add(new TransparentWebMarkupContainer("container").add(AttributeModifier.append("dir", Session.isRtlLanguage(this.locale) ? "rtl" : "ltr")));
+ add(new TransparentWebMarkupContainer(COMP_ID).add(AttributeModifier.append("dir", Session.isRtlLanguage(this.locale) ? "rtl" : "ltr")));
+ final Application a = Application.get();
+ renderer = new ComponentRenderer(a) {
+ @Override
+ protected Request newRequest() {
+ return new ServletWebRequest(
+ new MockHttpServletRequest(a, new MockHttpSession(app.getServletContext()), app.getServletContext())
+ , "");
+ }
+ };
}
public static IWebSession getOmSession() {
@@ -50,4 +65,8 @@ public abstract class AbstractTemplatePanel extends Panel {
public String getString(String id, Locale locale, String... params) {
return app.getOmString(id, locale, params);
}
+
+ protected String renderEmail() {
+ return renderer.renderPage(() -> this).toString();
+ }
}
diff --git a/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/AbstractTemplatePanel.html b/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/AbstractTemplatePanel.html
deleted file mode 100644
index 3d7d28310..000000000
--- a/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/AbstractTemplatePanel.html
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
--->
-<!DOCTYPE html>
-<html xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-9.xsd">
-<wicket:panel>
- <div wicket:id="container">
- <wicket:child/>
- </div>
-</wicket:panel>
-</html>
diff --git a/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/FeedbackTemplate.java b/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/FeedbackTemplate.java
index a16970db9..ca5eca9e9 100644
--- a/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/FeedbackTemplate.java
+++ b/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/FeedbackTemplate.java
@@ -20,11 +20,10 @@ package org.apache.openmeetings.service.mail.template;
import static org.apache.openmeetings.util.OpenmeetingsVariables.getApplicationName;
-import org.apache.wicket.core.util.string.ComponentRenderer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.link.ExternalLink;
-public class FeedbackTemplate extends AbstractTemplatePanel {
+public class FeedbackTemplate extends AbstractTemplatePage {
private static final long serialVersionUID = 1L;
private FeedbackTemplate(String username, String email, String message) {
@@ -37,6 +36,6 @@ public class FeedbackTemplate extends AbstractTemplatePanel {
}
public static String getEmail(String username, String email, String message) {
- return ComponentRenderer.renderComponent(new FeedbackTemplate(username, email, message)).toString();
+ return new FeedbackTemplate(username, email, message).renderEmail();
}
}
diff --git a/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/InvitationTemplate.java b/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/InvitationTemplate.java
index d65e4e336..b0c584184 100644
--- a/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/InvitationTemplate.java
+++ b/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/InvitationTemplate.java
@@ -24,12 +24,11 @@ import java.util.Locale;
import org.apache.openmeetings.db.entity.user.User;
import org.apache.openmeetings.db.util.LocaleHelper;
-import org.apache.wicket.core.util.string.ComponentRenderer;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.link.ExternalLink;
-public class InvitationTemplate extends AbstractTemplatePanel {
+public class InvitationTemplate extends AbstractTemplatePage {
private static final long serialVersionUID = 1L;
private InvitationTemplate(Locale locale, String invitorName, String message, String link, boolean room) {
@@ -54,6 +53,6 @@ public class InvitationTemplate extends AbstractTemplatePanel {
public static String getEmail(User invitee, String invitorName, String message, String link, boolean room) {
ensureApplication(invitee.getLanguageId());
- return ComponentRenderer.renderComponent(new InvitationTemplate(LocaleHelper.getLocale(invitee), invitorName, message, link, room)).toString();
+ return new InvitationTemplate(LocaleHelper.getLocale(invitee), invitorName, message, link, room).renderEmail();
}
}
diff --git a/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/RegisterUserTemplate.java b/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/RegisterUserTemplate.java
index aaf500210..ef99df49a 100644
--- a/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/RegisterUserTemplate.java
+++ b/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/RegisterUserTemplate.java
@@ -21,12 +21,11 @@ package org.apache.openmeetings.service.mail.template;
import static org.apache.openmeetings.util.OpenmeetingsVariables.getApplicationName;
import static org.apache.openmeetings.util.OpenmeetingsVariables.getBaseUrl;
-import org.apache.wicket.core.util.string.ComponentRenderer;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.link.ExternalLink;
-public class RegisterUserTemplate extends AbstractTemplatePanel {
+public class RegisterUserTemplate extends AbstractTemplatePage {
private static final long serialVersionUID = 1L;
private RegisterUserTemplate(String username, String email, String verificationUrl) {
@@ -43,6 +42,6 @@ public class RegisterUserTemplate extends AbstractTemplatePanel {
}
public static String getEmail(String username, String email, String verificationUrl) {
- return ComponentRenderer.renderComponent(new RegisterUserTemplate(username, email, verificationUrl)).toString();
+ return new RegisterUserTemplate(username, email, verificationUrl).renderEmail();
}
}
diff --git a/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/RequestContactConfirmTemplate.java b/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/RequestContactConfirmTemplate.java
index d81b5eaf9..dafe952b0 100644
--- a/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/RequestContactConfirmTemplate.java
+++ b/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/RequestContactConfirmTemplate.java
@@ -20,10 +20,9 @@ package org.apache.openmeetings.service.mail.template;
import org.apache.openmeetings.db.entity.user.UserContact;
import org.apache.openmeetings.db.util.LocaleHelper;
-import org.apache.wicket.core.util.string.ComponentRenderer;
import org.apache.wicket.markup.html.basic.Label;
-public class RequestContactConfirmTemplate extends AbstractTemplatePanel {
+public class RequestContactConfirmTemplate extends AbstractTemplatePage {
private static final long serialVersionUID = 1L;
private RequestContactConfirmTemplate(UserContact contact) {
@@ -35,6 +34,6 @@ public class RequestContactConfirmTemplate extends AbstractTemplatePanel {
}
public static String getEmail(UserContact contact) {
- return ComponentRenderer.renderComponent(new RequestContactConfirmTemplate(contact)).toString();
+ return new RequestContactConfirmTemplate(contact).renderEmail();
}
}
diff --git a/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/RequestContactTemplate.java b/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/RequestContactTemplate.java
index 207e0139f..0098c3892 100644
--- a/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/RequestContactTemplate.java
+++ b/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/RequestContactTemplate.java
@@ -20,11 +20,10 @@ package org.apache.openmeetings.service.mail.template;
import org.apache.openmeetings.db.entity.user.User;
import org.apache.openmeetings.db.util.LocaleHelper;
-import org.apache.wicket.core.util.string.ComponentRenderer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.link.ExternalLink;
-public class RequestContactTemplate extends AbstractTemplatePanel {
+public class RequestContactTemplate extends AbstractTemplatePage {
private static final long serialVersionUID = 1L;
private RequestContactTemplate(User userToAdd, User user) {
@@ -38,6 +37,6 @@ public class RequestContactTemplate extends AbstractTemplatePanel {
}
public static String getEmail(User userToAdd, User user) {
- return ComponentRenderer.renderComponent(new RequestContactTemplate(userToAdd, user)).toString();
+ return new RequestContactTemplate(userToAdd, user).renderEmail();
}
}
diff --git a/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/ResetPasswordTemplate.java b/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/ResetPasswordTemplate.java
index 42b8c38c3..508617401 100644
--- a/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/ResetPasswordTemplate.java
+++ b/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/ResetPasswordTemplate.java
@@ -18,11 +18,10 @@
*/
package org.apache.openmeetings.service.mail.template;
-import org.apache.wicket.core.util.string.ComponentRenderer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.link.ExternalLink;
-public class ResetPasswordTemplate extends AbstractTemplatePanel {
+public class ResetPasswordTemplate extends AbstractTemplatePage {
private static final long serialVersionUID = 1L;
private ResetPasswordTemplate(String link) {
@@ -33,6 +32,6 @@ public class ResetPasswordTemplate extends AbstractTemplatePanel {
}
public static String getEmail(String link) {
- return ComponentRenderer.renderComponent(new ResetPasswordTemplate(link)).toString();
+ return new ResetPasswordTemplate(link).renderEmail();
}
}
diff --git a/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/subject/SubjectEmailTemplate.java b/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/subject/SubjectEmailTemplate.java
index be298c55b..ab24ee40e 100644
--- a/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/subject/SubjectEmailTemplate.java
+++ b/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/subject/SubjectEmailTemplate.java
@@ -20,11 +20,11 @@ package org.apache.openmeetings.service.mail.template.subject;
import java.util.Locale;
-import org.apache.openmeetings.service.mail.template.AbstractTemplatePanel;
+import org.apache.openmeetings.service.mail.template.AbstractTemplatePage;
import org.apache.wicket.core.util.string.ComponentRenderer;
import org.apache.wicket.markup.html.panel.Fragment;
-public abstract class SubjectEmailTemplate extends AbstractTemplatePanel {
+public abstract class SubjectEmailTemplate extends AbstractTemplatePage {
private static final long serialVersionUID = 1L;
private String email = null;
private String subject = null;
@@ -35,7 +35,7 @@ public abstract class SubjectEmailTemplate extends AbstractTemplatePanel {
}
SubjectEmailTemplate create() {
- email = ComponentRenderer.renderComponent(this).toString();
+ email = renderEmail();
subject = ComponentRenderer.renderComponent(getSubjectFragment()).toString();
created = true;
return this;
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
index a7905396b..de6884a63 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
@@ -303,7 +303,7 @@ public class Application extends AuthenticatedWebApplication implements IApplica
}
getHeaderResponseDecorators().add(FilteringHeaderResponse::new);
super.init();
- final IBootstrapSettings settings = new BootstrapSettings();
+ final IBootstrapSettings settings = new BootstrapSettings().setAutoAppendResources(false);
Bootstrap.builder().withBootstrapSettings(settings).install(this);
WysiwygLibrarySettings.get().setBootstrapCssReference(null);
WysiwygLibrarySettings.get().setBootstrapDropDownJavaScriptReference(null);
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BasePage.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BasePage.html
index 222059244..17b42b1a4 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BasePage.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BasePage.html
@@ -24,33 +24,33 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
<meta name="viewport" content="height=device-height, initial-scale=1, width=device-width, initial-scale=1" />
<link rel="apple-touch-icon" href="images/icons/apple-icon-180.png">
- <meta name="apple-mobile-web-app-capable" content="yes">
- <link rel="apple-touch-startup-image" href="images/icons/apple-splash-2048-2732.jpg" media="(device-width: 1024px) and (device-height: 1366px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
- <link rel="apple-touch-startup-image" href="images/icons/apple-splash-2732-2048.jpg" media="(device-width: 1024px) and (device-height: 1366px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
- <link rel="apple-touch-startup-image" href="images/icons/apple-splash-1668-2388.jpg" media="(device-width: 834px) and (device-height: 1194px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
- <link rel="apple-touch-startup-image" href="images/icons/apple-splash-2388-1668.jpg" media="(device-width: 834px) and (device-height: 1194px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
- <link rel="apple-touch-startup-image" href="images/icons/apple-splash-1536-2048.jpg" media="(device-width: 768px) and (device-height: 1024px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
- <link rel="apple-touch-startup-image" href="images/icons/apple-splash-2048-1536.jpg" media="(device-width: 768px) and (device-height: 1024px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
- <link rel="apple-touch-startup-image" href="images/icons/apple-splash-1668-2224.jpg" media="(device-width: 834px) and (device-height: 1112px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
- <link rel="apple-touch-startup-image" href="images/icons/apple-splash-2224-1668.jpg" media="(device-width: 834px) and (device-height: 1112px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
- <link rel="apple-touch-startup-image" href="images/icons/apple-splash-1620-2160.jpg" media="(device-width: 810px) and (device-height: 1080px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
- <link rel="apple-touch-startup-image" href="images/icons/apple-splash-2160-1620.jpg" media="(device-width: 810px) and (device-height: 1080px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
- <link rel="apple-touch-startup-image" href="images/icons/apple-splash-1284-2778.jpg" media="(device-width: 428px) and (device-height: 926px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)">
- <link rel="apple-touch-startup-image" href="images/icons/apple-splash-2778-1284.jpg" media="(device-width: 428px) and (device-height: 926px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)">
- <link rel="apple-touch-startup-image" href="images/icons/apple-splash-1170-2532.jpg" media="(device-width: 390px) and (device-height: 844px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)">
- <link rel="apple-touch-startup-image" href="images/icons/apple-splash-2532-1170.jpg" media="(device-width: 390px) and (device-height: 844px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)">
- <link rel="apple-touch-startup-image" href="images/icons/apple-splash-1125-2436.jpg" media="(device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)">
- <link rel="apple-touch-startup-image" href="images/icons/apple-splash-2436-1125.jpg" media="(device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)">
- <link rel="apple-touch-startup-image" href="images/icons/apple-splash-1242-2688.jpg" media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)">
- <link rel="apple-touch-startup-image" href="images/icons/apple-splash-2688-1242.jpg" media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)">
- <link rel="apple-touch-startup-image" href="images/icons/apple-splash-828-1792.jpg" media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
- <link rel="apple-touch-startup-image" href="images/icons/apple-splash-1792-828.jpg" media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
- <link rel="apple-touch-startup-image" href="images/icons/apple-splash-1242-2208.jpg" media="(device-width: 414px) and (device-height: 736px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)">
- <link rel="apple-touch-startup-image" href="images/icons/apple-splash-2208-1242.jpg" media="(device-width: 414px) and (device-height: 736px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)">
- <link rel="apple-touch-startup-image" href="images/icons/apple-splash-750-1334.jpg" media="(device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
- <link rel="apple-touch-startup-image" href="images/icons/apple-splash-1334-750.jpg" media="(device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
- <link rel="apple-touch-startup-image" href="images/icons/apple-splash-640-1136.jpg" media="(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
- <link rel="apple-touch-startup-image" href="images/icons/apple-splash-1136-640.jpg" media="(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
+ <meta name="apple-mobile-web-app-capable" content="yes">
+ <link rel="apple-touch-startup-image" href="images/icons/apple-splash-2048-2732.jpg" media="(device-width: 1024px) and (device-height: 1366px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
+ <link rel="apple-touch-startup-image" href="images/icons/apple-splash-2732-2048.jpg" media="(device-width: 1024px) and (device-height: 1366px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
+ <link rel="apple-touch-startup-image" href="images/icons/apple-splash-1668-2388.jpg" media="(device-width: 834px) and (device-height: 1194px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
+ <link rel="apple-touch-startup-image" href="images/icons/apple-splash-2388-1668.jpg" media="(device-width: 834px) and (device-height: 1194px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
+ <link rel="apple-touch-startup-image" href="images/icons/apple-splash-1536-2048.jpg" media="(device-width: 768px) and (device-height: 1024px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
+ <link rel="apple-touch-startup-image" href="images/icons/apple-splash-2048-1536.jpg" media="(device-width: 768px) and (device-height: 1024px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
+ <link rel="apple-touch-startup-image" href="images/icons/apple-splash-1668-2224.jpg" media="(device-width: 834px) and (device-height: 1112px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
+ <link rel="apple-touch-startup-image" href="images/icons/apple-splash-2224-1668.jpg" media="(device-width: 834px) and (device-height: 1112px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
+ <link rel="apple-touch-startup-image" href="images/icons/apple-splash-1620-2160.jpg" media="(device-width: 810px) and (device-height: 1080px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
+ <link rel="apple-touch-startup-image" href="images/icons/apple-splash-2160-1620.jpg" media="(device-width: 810px) and (device-height: 1080px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
+ <link rel="apple-touch-startup-image" href="images/icons/apple-splash-1284-2778.jpg" media="(device-width: 428px) and (device-height: 926px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)">
+ <link rel="apple-touch-startup-image" href="images/icons/apple-splash-2778-1284.jpg" media="(device-width: 428px) and (device-height: 926px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)">
+ <link rel="apple-touch-startup-image" href="images/icons/apple-splash-1170-2532.jpg" media="(device-width: 390px) and (device-height: 844px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)">
+ <link rel="apple-touch-startup-image" href="images/icons/apple-splash-2532-1170.jpg" media="(device-width: 390px) and (device-height: 844px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)">
+ <link rel="apple-touch-startup-image" href="images/icons/apple-splash-1125-2436.jpg" media="(device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)">
+ <link rel="apple-touch-startup-image" href="images/icons/apple-splash-2436-1125.jpg" media="(device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)">
+ <link rel="apple-touch-startup-image" href="images/icons/apple-splash-1242-2688.jpg" media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)">
+ <link rel="apple-touch-startup-image" href="images/icons/apple-splash-2688-1242.jpg" media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)">
+ <link rel="apple-touch-startup-image" href="images/icons/apple-splash-828-1792.jpg" media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
+ <link rel="apple-touch-startup-image" href="images/icons/apple-splash-1792-828.jpg" media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
+ <link rel="apple-touch-startup-image" href="images/icons/apple-splash-1242-2208.jpg" media="(device-width: 414px) and (device-height: 736px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)">
+ <link rel="apple-touch-startup-image" href="images/icons/apple-splash-2208-1242.jpg" media="(device-width: 414px) and (device-height: 736px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)">
+ <link rel="apple-touch-startup-image" href="images/icons/apple-splash-750-1334.jpg" media="(device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
+ <link rel="apple-touch-startup-image" href="images/icons/apple-splash-1334-750.jpg" media="(device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
+ <link rel="apple-touch-startup-image" href="images/icons/apple-splash-640-1136.jpg" media="(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
+ <link rel="apple-touch-startup-image" href="images/icons/apple-splash-1136-640.jpg" media="(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
<link rel="manifest" href="services/info/manifest.webmanifest">
<link rel="shortcut icon" href="public/favicon.png" type="image/png"/>
<wicket:header-items/>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BasePage.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BasePage.java
index b60cf46c7..7ca824dea 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BasePage.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BasePage.java
@@ -53,6 +53,8 @@ import org.apache.wicket.util.string.StringValue;
import org.apache.wicket.util.string.Strings;
import org.wicketstuff.urlfragment.AsyncUrlFragmentAwarePage;
+import de.agilecoders.wicket.core.Bootstrap;
+import de.agilecoders.wicket.core.markup.html.bootstrap.behavior.BootstrapResourcesBehavior;
import de.agilecoders.wicket.extensions.markup.html.bootstrap.icon.FontAwesome6CssReference;
public abstract class BasePage extends AsyncUrlFragmentAwarePage {
@@ -145,6 +147,7 @@ public abstract class BasePage extends AsyncUrlFragmentAwarePage {
response.render(OnDomReadyHeaderItem.forScript(script));
}
response.render(CssHeaderItem.forReference(FontAwesome6CssReference.instance()));
+ BootstrapResourcesBehavior.instance().renderHead(Bootstrap.getSettings(getApplication()), response);
response.render(new FilteredHeaderItem(CssHeaderItem.forUrl("css/custom.css"), CUSTOM_CSS_FILTER));
}