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 2022/01/17 04:03:02 UTC

[openmeetings] branch master updated: [OPENMEETINGS-2719] RTL re-worked, initial commit

This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openmeetings.git


The following commit(s) were added to refs/heads/master by this push:
     new 025f944  [OPENMEETINGS-2719] RTL re-worked, initial commit
025f944 is described below

commit 025f9445680b12c2ac216e194ac9459eab60d4d9
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Mon Jan 17 10:43:11 2022 +0700

    [OPENMEETINGS-2719] RTL re-worked, initial commit
---
 .../openmeetings/db/entity/label/OmLanguage.java   |  4 +--
 .../apache/openmeetings/db/util/FormatHelper.java  | 40 ----------------------
 .../service/calendar/caldav/IcalUtils.java         | 10 +++---
 .../mail/template/AbstractTemplatePanel.java       |  4 +--
 .../apache/openmeetings/util/mail/IcalHandler.java |  6 ++--
 .../apache/openmeetings/web/common/BasePanel.java  |  3 +-
 .../openmeetings/web/pages/BaseInitedPage.java     |  3 +-
 .../openmeetings/web/pages/BaseNotInitedPage.java  |  7 +---
 .../web/user/dashboard/OmDashboardPanel.java       |  4 +--
 pom.xml                                            | 16 ++++-----
 10 files changed, 23 insertions(+), 74 deletions(-)

diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/label/OmLanguage.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/label/OmLanguage.java
index b51db93..64cdc0b 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/label/OmLanguage.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/label/OmLanguage.java
@@ -21,7 +21,7 @@ package org.apache.openmeetings.db.entity.label;
 import java.io.Serializable;
 import java.util.Locale;
 
-import org.apache.openmeetings.db.util.FormatHelper;
+import org.apache.wicket.protocol.http.WebSession;
 
 public class OmLanguage implements Serializable {
 	private static final long serialVersionUID = 1L;
@@ -35,7 +35,7 @@ public class OmLanguage implements Serializable {
 	public OmLanguage(Long id, Locale locale) {
 		this.id = id;
 		this.locale = locale;
-		this.rtl = FormatHelper.isRtlLanguage(locale.toLanguageTag());
+		this.rtl = WebSession.isRtlLanguage(locale);
 	}
 
 	public long getId() {
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/FormatHelper.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/FormatHelper.java
index 2a84177..e2900cc 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/FormatHelper.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/FormatHelper.java
@@ -22,52 +22,12 @@ import static java.text.DateFormat.SHORT;
 import static org.apache.commons.text.StringEscapeUtils.escapeHtml4;
 import static org.apache.openmeetings.db.util.TimezoneUtil.getTimeZone;
 
-import java.util.regex.Pattern;
-
 import org.apache.commons.lang3.time.FastDateFormat;
 import org.apache.openmeetings.db.entity.user.User;
 
 public class FormatHelper {
-	/**
-	 * taken from BidiUtils
-	 *
-	 * A regular expression for matching right-to-left language codes. See
-	 * {@link #isRtlLanguage} for the design.
-	 */
-	private static final Pattern RtlLocalesRe = Pattern.compile("^(ar|dv|he|iw|fa|nqo|ps|sd|ug|ur|yi|.*[-_](Arab|Hebr|Thaa|Nkoo|Tfng))"
-					+ "(?!.*[-_](Latn|Cyrl)($|-|_))($|-|_)");
-
 	private FormatHelper() {}
 
-	/**
-	 * Check if a BCP 47 / III language code indicates an RTL language, i.e.
-	 * either: - a language code explicitly specifying one of the right-to-left
-	 * scripts, e.g. "az-Arab", or
-	 * <p>
-	 * - a language code specifying one of the languages normally written in a
-	 * right-to-left script, e.g. "fa" (Farsi), except ones explicitly
-	 * specifying Latin or Cyrillic script (which are the usual LTR
-	 * alternatives).
-	 * <p>
-	 * The list of right-to-left scripts appears in the 100-199 range in
-	 * http://www.unicode.org/iso15924/iso15924-num.html, of which Arabic and
-	 * Hebrew are by far the most widely used. We also recognize Thaana, N'Ko,
-	 * and Tifinagh, which also have significant modern usage. The rest (Syriac,
-	 * Samaritan, Mandaic, etc.) seem to have extremely limited or no modern
-	 * usage and are not recognized. The languages usually written in a
-	 * right-to-left script are taken as those with Suppress-Script:
-	 * Hebr|Arab|Thaa|Nkoo|Tfng in
-	 * http://www.iana.org/assignments/language-subtag-registry, as well as
-	 * Sindhi (sd) and Uyghur (ug). The presence of other subtags of the
-	 * language code, e.g. regions like EG (Egypt), is ignored.
-	 *
-	 * @param languageString - locale string
-	 * @return <code>true</code> in case passed locale is right-to-left
-	 */
-	public static boolean isRtlLanguage(String languageString) {
-		return languageString != null && RtlLocalesRe.matcher(languageString).find();
-	}
-
 	public static String formatUser(User u) {
 		return formatUser(u, false);
 	}
diff --git a/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/caldav/IcalUtils.java b/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/caldav/IcalUtils.java
index 5c57007..4d7333e 100644
--- a/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/caldav/IcalUtils.java
+++ b/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/caldav/IcalUtils.java
@@ -192,7 +192,7 @@ public class IcalUtils {
 		event.getProperty(Property.LOCATION).ifPresent(location -> a.setLocation(location.getValue()));
 
 		event.getProperty(Property.RRULE).ifPresent(recur -> {
-			recur.getParameters().getFirst("FREQ").ifPresent(freq -> {
+			recur.getParameter("FREQ").ifPresent(freq -> {
 				if (freq.getValue().equals(Frequency.DAILY.name())) {
 					a.setIsDaily(true);
 				} else if (freq.getValue().equals(Frequency.WEEKLY.name())) {
@@ -236,7 +236,7 @@ public class IcalUtils {
 			if (SCHEME_MAILTO.equals(uri.getScheme())) {
 				String email = uri.getSchemeSpecificPart();
 
-				Optional<Role> role = attendee.getParameters().getFirst(Role.CHAIR.getName());
+				Optional<Role> role = attendee.getParameter(Role.CHAIR.getName());
 				if (role.isPresent() && role.get().getValue().equals(Role.CHAIR.getValue()) && email.equals(organizerEmail.get())) {
 					return;
 				}
@@ -307,7 +307,7 @@ public class IcalUtils {
 			return null;
 		}
 
-		return dt.getParameters().getFirst(Parameter.TZID)
+		return dt.getParameter(Parameter.TZID)
 				.map(tzid -> parseDate(dt.getValue(), getTimeZone(tzid.getValue())))
 				.orElse(parseDate(dt.getValue(), timeZone));
 	}
@@ -377,7 +377,7 @@ public class IcalUtils {
 		ZonedDateTime end = getZoneDateTime(appointment.getEnd(), timeZone.getID());
 
 		VEvent meeting = new VEvent(start, end, appointment.getTitle());
-		List<Property> mProperties = new ArrayList<>(meeting.getProperties().getAll());
+		List<Property> mProperties = new ArrayList<>(meeting.getProperties());
 		if (appointment.getLocation() != null) {
 			mProperties.add(new Location(appointment.getLocation()));
 		}
@@ -411,7 +411,7 @@ public class IcalUtils {
 
 		mProperties.add(new Organizer(new ParameterList(List.of(orgCn)), orgUri));
 
-		meeting.setProperties(new PropertyList(mProperties));
+		meeting.setPropertyList(new PropertyList(mProperties));
 		return meeting;
 	}
 
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/AbstractTemplatePanel.java
index 39c0d5f..ee4c982 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/AbstractTemplatePanel.java
@@ -18,8 +18,6 @@
  */
 package org.apache.openmeetings.service.mail.template;
 
-import static org.apache.openmeetings.db.util.FormatHelper.isRtlLanguage;
-
 import java.util.Locale;
 
 import org.apache.openmeetings.IApplication;
@@ -41,7 +39,7 @@ public abstract class AbstractTemplatePanel extends Panel {
 	protected AbstractTemplatePanel(Locale locale) {
 		super(COMP_ID);
 		this.locale = locale;
-		add(new TransparentWebMarkupContainer("container").add(AttributeModifier.append("dir", isRtlLanguage(this.locale.toLanguageTag()) ? "rtl" : "ltr")));
+		add(new TransparentWebMarkupContainer("container").add(AttributeModifier.append("dir", WebSession.isRtlLanguage(this.locale) ? "rtl" : "ltr")));
 	}
 
 	public static IWebSession getOmSession() {
diff --git a/openmeetings-util/src/main/java/org/apache/openmeetings/util/mail/IcalHandler.java b/openmeetings-util/src/main/java/org/apache/openmeetings/util/mail/IcalHandler.java
index f324a1b..7a7b85e 100644
--- a/openmeetings-util/src/main/java/org/apache/openmeetings/util/mail/IcalHandler.java
+++ b/openmeetings-util/src/main/java/org/apache/openmeetings/util/mail/IcalHandler.java
@@ -112,7 +112,7 @@ public class IcalHandler {
 		}
 
 		meeting = new VEvent(start, end, name);
-		meetingProperties.addAll(meeting.getProperties().getAll());
+		meetingProperties.addAll(meeting.getProperties());
 		meetingProperties.addAll(List.of(Transp.OPAQUE, Status.VEVENT_CONFIRMED));
 		return this;
 	}
@@ -173,8 +173,8 @@ public class IcalHandler {
 	}
 
 	public IcalHandler build() {
-		meeting.setProperties(new PropertyList(meetingProperties));
-		icsCalendar.setComponents(new ComponentList<>(List.of(timeZone.getVTimeZone(), meeting)));
+		meeting.setPropertyList(new PropertyList(meetingProperties));
+		icsCalendar.setComponentList(new ComponentList<>(List.of(timeZone.getVTimeZone(), meeting)));
 		return this;
 	}
 
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/BasePanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/BasePanel.java
index f9cd354..67a855e 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/BasePanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/BasePanel.java
@@ -20,7 +20,6 @@ package org.apache.openmeetings.web.common;
 
 import java.io.IOException;
 
-import org.apache.openmeetings.db.util.FormatHelper;
 import org.apache.openmeetings.web.app.WebSession;
 import org.apache.openmeetings.web.common.menu.MenuPanel;
 import org.apache.openmeetings.web.pages.BasePage;
@@ -55,7 +54,7 @@ public abstract class BasePanel extends Panel {
 	}
 
 	protected boolean isRtl() {
-		return FormatHelper.isRtlLanguage(WebSession.get().getLocale().toLanguageTag());
+		return WebSession.get().isRtlLocale();
 	}
 
 	/**
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BaseInitedPage.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BaseInitedPage.java
index 1886f25..3ac0b65 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BaseInitedPage.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BaseInitedPage.java
@@ -18,7 +18,6 @@
  */
 package org.apache.openmeetings.web.pages;
 
-import org.apache.openmeetings.db.util.FormatHelper;
 import org.apache.openmeetings.web.app.WebSession;
 
 public abstract class BaseInitedPage extends BasePage {
@@ -31,6 +30,6 @@ public abstract class BaseInitedPage extends BasePage {
 
 	@Override
 	public boolean isRtl() {
-		return FormatHelper.isRtlLanguage(getLanguageCode());
+		return WebSession.get().isRtlLocale();
 	}
 }
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BaseNotInitedPage.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BaseNotInitedPage.java
index a3b3398..cc62fba 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BaseNotInitedPage.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BaseNotInitedPage.java
@@ -18,7 +18,6 @@
  */
 package org.apache.openmeetings.web.pages;
 
-import org.apache.openmeetings.db.util.FormatHelper;
 import org.apache.openmeetings.web.app.Application;
 import org.apache.openmeetings.web.app.WebSession;
 import org.apache.wicket.ajax.AjaxRequestTarget;
@@ -34,11 +33,7 @@ public abstract class BaseNotInitedPage extends BasePage {
 
 	@Override
 	public boolean isRtl() {
-		boolean rtl = false;
-		if (Application.isInstalled()) {
-			rtl = FormatHelper.isRtlLanguage(WebSession.get().getLocale().toString());
-		}
-		return rtl;
+		return Application.isInstalled() ? WebSession.get().isRtlLocale() : false;
 	}
 
 	@Override
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/OmDashboardPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/OmDashboardPanel.java
index 2274add..23c9c3d 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/OmDashboardPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/OmDashboardPanel.java
@@ -18,7 +18,6 @@
  */
 package org.apache.openmeetings.web.user.dashboard;
 
-import org.apache.openmeetings.db.util.FormatHelper;
 import org.apache.openmeetings.web.app.WebSession;
 import org.apache.openmeetings.web.common.UserBasePanel;
 import org.apache.wicket.model.Model;
@@ -30,7 +29,6 @@ public class OmDashboardPanel extends UserBasePanel {
 	public OmDashboardPanel(String id) {
 		super(id);
 
-		boolean isRtl = FormatHelper.isRtlLanguage(WebSession.get().getLocale().toLanguageTag());
-		add(new DashboardPanel("dashboard", Model.of(WebSession.getDashboard())).setRtlModel(Model.of(isRtl)));
+		add(new DashboardPanel("dashboard", Model.of(WebSession.getDashboard())));
 	}
 }
diff --git a/pom.xml b/pom.xml
index ca387b8..c0cb06e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -54,12 +54,12 @@
 		<license-maven-plugin.version>2.0.0</license-maven-plugin.version>
 		<reflow-maven-skin.version>2.3.0</reflow-maven-skin.version>
 		<reflow-theme>cerulean</reflow-theme>
-		<maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version>
+		<maven-compiler-plugin.version>3.9.0</maven-compiler-plugin.version>
 		<maven-project-info-reports-plugin.version>3.1.2</maven-project-info-reports-plugin.version>
-		<maven-jar-plugin.version>3.2.1</maven-jar-plugin.version>
+		<maven-jar-plugin.version>3.2.2</maven-jar-plugin.version>
 		<maven-assembly-plugin.version>3.3.0</maven-assembly-plugin.version>
 		<maven-dependency-plugin.version>3.2.0</maven-dependency-plugin.version>
-		<maven-bundle-plugin.version>5.1.1</maven-bundle-plugin.version>
+		<maven-bundle-plugin.version>5.1.4</maven-bundle-plugin.version>
 		<maven-war-plugin.version>3.3.2</maven-war-plugin.version>
 		<maven-clean-plugin.version>3.1.0</maven-clean-plugin.version>
 		<wagon-maven-plugin.version>2.0.2</wagon-maven-plugin.version>
@@ -80,14 +80,14 @@
 		<swagger-plugin.version>2.1.6</swagger-plugin.version>
 		<!-- dependency versions -->
 		<junit.version>5.8.2</junit.version>
-		<wicket.version>9.7.0</wicket.version>
+		<wicket.version>9.8.0-SNAPSHOT</wicket.version>
 		<wicket-jquery-ui.version>9.7.0</wicket-jquery-ui.version>
-		<wicketstuff.version>9.7.0</wicketstuff.version>
+		<wicketstuff.version>9.8.0-SNAPSHOT</wicketstuff.version>
 		<wicket-bootstrap.version>6.0.0-M6-SNAPSHOT</wicket-bootstrap.version>
 		<font-awesome.version>5.15.4</font-awesome.version>
-		<spring.version>5.3.14</spring.version>
+		<spring.version>5.3.15</spring.version>
 		<tomcat.version>9.0.56</tomcat.version>
-		<ical4j.version>4.0.0-alpha10</ical4j.version>
+		<ical4j.version>4.0.0-alpha11</ical4j.version>
 		<cxf.version>3.5.0</cxf.version>
 		<io.prometheus.version>0.14.1</io.prometheus.version>
 		<aspectjtools.version>1.9.7</aspectjtools.version>
@@ -113,7 +113,7 @@
 		<commons-collections4.version>4.4</commons-collections4.version>
 		<xstream.version>1.4.18</xstream.version>
 		<api-all.version>2.1.0</api-all.version>
-		<caldav4j.version>1.0.3</caldav4j.version>
+		<caldav4j.version>1.0.5</caldav4j.version>
 		<tika-parsers.version>2.2.1</tika-parsers.version>
 		<commons-text.version>1.9</commons-text.version>
 		<slf4j.version>1.7.32</slf4j.version>