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 <solomax...@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)); }