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

solomax pushed a commit to branch tempus-calendar-6
in repository https://gitbox.apache.org/repos/asf/openmeetings.git


The following commit(s) were added to refs/heads/tempus-calendar-6 by this push:
     new 5f108e724 calendar6
5f108e724 is described below

commit 5f108e72415460f88b6fe1e59cb8d81ed4db7b2d
Author: Maxim Solodovnik <solo...@apache.org>
AuthorDate: Wed Sep 13 22:51:57 2023 +0700

    calendar6
---
 .../src/main/front/src/css/_calendar.scss          |   6 -
 .../web/user/calendar/AppointmentModel.java        |   6 +-
 .../web/user/calendar/CalendarPanel.java           |  41 +++----
 .../web/user/calendar/OmCalendarEvent.java         |   2 +-
 .../web/user/calendar/calendar-functions.js        | 134 ++++++++++++++++-----
 .../org/apache/openmeetings/util/TestDateTime.java |  26 ----
 .../org/apache/openmeetings/web/TestCalendar.java  |   4 +-
 pom.xml                                            |   2 +-
 8 files changed, 129 insertions(+), 92 deletions(-)

diff --git a/openmeetings-web/src/main/front/src/css/_calendar.scss 
b/openmeetings-web/src/main/front/src/css/_calendar.scss
index 77b5aa29c..636644e0b 100644
--- a/openmeetings-web/src/main/front/src/css/_calendar.scss
+++ b/openmeetings-web/src/main/front/src/css/_calendar.scss
@@ -1,10 +1,4 @@
 /* Licensed under the Apache License, Version 2.0 (the "License") 
http://www.apache.org/licenses/LICENSE-2.0 */
-#contents #calendar .fc-gotoBtn-button::before {
-       font-family: 'Font Awesome 6 Free';
-       font-weight: 900;
-       content: "\f133";
-       font-size: 1em;
-}
 .calendarlist {
        padding: 0;
 
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentModel.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentModel.java
index 15233f33b..137b07b01 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentModel.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentModel.java
@@ -28,9 +28,9 @@ import java.util.List;
 import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
 import org.apache.openmeetings.db.entity.calendar.Appointment;
 
-import com.googlecode.wicket.jquery.ui.calendar.CalendarEvent;
-import com.googlecode.wicket.jquery.ui.calendar.CalendarModel;
-import com.googlecode.wicket.jquery.ui.calendar.ICalendarVisitor;
+import com.googlecode.wicket.jquery.ui.calendar6.CalendarEvent;
+import com.googlecode.wicket.jquery.ui.calendar6.CalendarModel;
+import com.googlecode.wicket.jquery.ui.calendar6.ICalendarVisitor;
 
 public class AppointmentModel extends CalendarModel implements 
ICalendarVisitor {
        private static final long serialVersionUID = 1L;
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.java
index aa44efedd..05ff0c0b6 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.java
@@ -65,9 +65,9 @@ import org.slf4j.LoggerFactory;
 
 import com.github.openjson.JSONObject;
 import com.googlecode.wicket.jquery.core.Options;
-import com.googlecode.wicket.jquery.ui.calendar.Calendar;
-import com.googlecode.wicket.jquery.ui.calendar.CalendarView;
-import com.googlecode.wicket.jquery.ui.calendar.EventSource.GoogleCalendar;
+import com.googlecode.wicket.jquery.ui.calendar6.Calendar;
+import com.googlecode.wicket.jquery.ui.calendar6.CalendarView;
+import com.googlecode.wicket.jquery.ui.calendar6.EventSource.GoogleCalendar;
 
 import 
de.agilecoders.wicket.core.markup.html.bootstrap.button.BootstrapAjaxLink;
 import de.agilecoders.wicket.core.markup.html.bootstrap.button.Buttons;
@@ -123,26 +123,23 @@ public class CalendarPanel extends UserBasePanel {
                dialog = new AppointmentDialog("calendarAppointment", this, new 
CompoundPropertyModel<>(getDefault()));
                add(dialog);
 
-               boolean isRtl = isRtl();
-               Options options = new Options();
-               options.set("isRTL", isRtl);
-               options.set("height", Options.asString("parent"));
-               options.set("customButtons", "{gotoBtn: {text: ' ', click: 
onOmGotoClick}}");
-               options.set("header", isRtl ? "{left: 
'agendaDay,agendaWeek,month', center: 'title', right: 'gotoBtn,today 
nextYear,next,prev,prevYear'}"
-                               : "{left: 'prevYear,prev,next,nextYear 
today,gotoBtn', center: 'title', right: 'month,agendaWeek,agendaDay'}");
-               options.set("allDaySlot", false);
-               options.set("axisFormat", Options.asString("H(:mm)"));
-               options.set("defaultEventMinutes", 60);
-               options.set("timeFormat", Options.asString("H(:mm)"));
-               options.set("themeSystem", Options.asString("bootstrap4"));
-
-               options.set("buttonText", new JSONObject()
+               Options options = new Options()
+                       .set("timeZone", Options.asString("UTC"))
+                       .set("customButtons", "{gotoBtn: {text: ' ', click: 
onOmGotoClick}}")
+                       .set("headerToolbar", "{left: 
'prevYear,prev,next,nextYear today,gotoBtn', center: 'title', right: 
'dayGridMonth,timeGridWeek,timeGridDay'}")
+                       .set("allDaySlot", false)
+                       .set("nowIndicator", true)
+                       .set("locale", 
Options.asString(WebSession.get().getLocale().toLanguageTag()))
+                       .set("buttonText", new JSONObject()
                                .put("month", getString("801"))
                                .put("week", getString("800"))
                                .put("day", getString("799"))
-                               .put("today", getString("1555")).toString());
-
-               options.set("locale", 
Options.asString(WebSession.get().getLocale().toLanguageTag()));
+                               .put("today", getString("1555")).toString())
+                       .set("themeSystem", Options.asString("bootstrap"))
+                       .set("bootstrapFontAwesome", "{close: 'fa-times'," +
+                                       "prev: 'fa-chevron-left', next: 
'fa-chevron-right'," +
+                                       "prevYear: 'fa-angles-left', nextYear: 
'fa-angles-right'," +
+                                       "gotoBtn: 'fa-calendar'}");
 
                calendar = new Calendar("calendar", new AppointmentModel(), 
options) {
                        private static final long serialVersionUID = 1L;
@@ -153,7 +150,7 @@ public class CalendarPanel extends UserBasePanel {
                        }
 
                        @Override
-                       public boolean isDayClickEnabled() {
+                       public boolean isDateClickEnabled() {
                                return true;
                        }
 
@@ -177,7 +174,7 @@ public class CalendarPanel extends UserBasePanel {
                        public void onSelect(AjaxRequestTarget target, 
CalendarView view, LocalDateTime start, LocalDateTime end, boolean allDay) {
                                Appointment a = getDefault();
                                LocalDateTime s = start, e = end;
-                               if (CalendarView.month == view) {
+                               if (CalendarView.dayGridMonth == view) {
                                        LocalDateTime now = 
ZonedDateTime.now(getZoneId()).toLocalDateTime();
                                        s = 
start.withHour(now.getHour()).withMinute(now.getMinute());
                                        e = s.plus(1, ChronoUnit.HOURS);
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/OmCalendarEvent.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/OmCalendarEvent.java
index 1e8e98e1f..3fcced075 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/OmCalendarEvent.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/OmCalendarEvent.java
@@ -22,7 +22,7 @@ import static 
org.apache.openmeetings.web.util.CalendarWebHelper.getDateTime;
 
 import org.apache.openmeetings.db.entity.calendar.Appointment;
 
-import com.googlecode.wicket.jquery.ui.calendar.CalendarEvent;
+import com.googlecode.wicket.jquery.ui.calendar6.CalendarEvent;
 
 public class OmCalendarEvent extends CalendarEvent {
        private static final long serialVersionUID = 1L;
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/calendar-functions.js
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/calendar-functions.js
index 7949f5286..b935993df 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/calendar-functions.js
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/calendar-functions.js
@@ -1,35 +1,107 @@
 /* Licensed under the Apache License, Version 2.0 (the "License") 
http://www.apache.org/licenses/LICENSE-2.0 */
 function onOmGotoClick() {
-       const gotoBtn = $('#calendar .fc-gotoBtn-button');
-       let gotoSpan = gotoBtn.parent().find('.goto-span');
-       if (gotoSpan.length < 1) {
-               gotoBtn.parent().append($('<span 
class="goto-span"><span/></span>'));
+       const calEl = document.querySelector('#calendar');
+       const gotoBtn = calEl.querySelector('.fc-gotoBtn-button');
+
+       if (!gotoBtn.datetimepicker) {
+               gotoBtn.datetimepicker = new 
tempusDominus.TempusDominus(gotoBtn, {
+                       display: {
+                               buttons: {
+                                       today: true
+                                       , clear: true
+                                       , close: true
+                               }
+                               , components: {
+                                       clock: false
+                               }
+                               , icons: {
+                                       clear: 'fa-solid fa-eraser'
+                                       , close: 'fa-solid fa-xmark'
+                                       , date: 'fa-solid fa-calendar'
+                                       , down: 'fa-solid fa-arrow-down'
+                                       , next: 'fa-solid fa-arrow-right'
+                                       , previous: 'fa-solid fa-arrow-left'
+                                       , time: 'fa-solid fa-clock'
+                                       , today: 'fa-solid fa-calendar-check'
+                                       , up: 'fa-solid fa-arrow-up'
+                               }
+                       }
+                       , localization: {
+                               locale: 
calEl.calendar.currentData.calendarOptions.locale
+                               , format: 'L'
+                       }
+               });
+               gotoBtn.tdsubscriptions = {
+                       change: gotoBtn.datetimepicker.subscribe(
+                               tempusDominus.Namespace.events.hide
+                               , (e) => calEl.calendar.gotoDate(e.date)
+                       )
+               };
        }
-       gotoSpan = gotoBtn.parent().find('.goto-span');
-       gotoSpan.datetimepicker({
-               locale: $('#calendar').fullCalendar('option', 'locale')
-               , format: 'L'
-               , icons: {
-                       time: 'fas fa-clock'
-                       , date: 'fas fa-calendar'
-                       , up: 'fas fa-arrow-up'
-                       , down: 'fas fa-arrow-down'
-                       , previous: 'fas fa-chevron-left'
-                       , next: 'fas fa-chevron-right'
-                       , today: 'fas fa-calendar-check'
-                       , clear: 'fas fa-trash'
-                       , close: 'fas fa-times'
-               }
-               , buttons: {
-                       showToday: true
-                       , showClear: true
-                       , showClose: true
-               }
-       });
-       gotoSpan
-               .off()
-               .on('hide.datetimepicker', function(e){
-                       $('#calendar').fullCalendar('gotoDate', 
e.date.startOf('day'));
-               })
-               .datetimepicker('show');
+       gotoBtn.datetimepicker.show();
 }
+
+/*!
+FullCalendar Bootstrap 4 Plugin v6.1.8
+Docs & License: https://fullcalendar.io/docs/bootstrap4
+(c) 2023 Adam Shaw
+*/
+FullCalendar.Bootstrap = (function (exports, core, internal$1) {
+    'use strict';
+
+    class BootstrapTheme extends internal$1.Theme {
+    }
+    BootstrapTheme.prototype.classes = {
+        root: 'fc-theme-bootstrap',
+        table: 'table-bordered',
+        tableCellShaded: 'table-active',
+        buttonGroup: 'btn-group',
+        button: 'btn btn-primary',
+        buttonActive: 'active',
+        popover: 'popover',
+        popoverHeader: 'popover-header',
+        popoverContent: 'popover-body',
+    };
+    BootstrapTheme.prototype.baseIconClass = 'fa';
+    BootstrapTheme.prototype.iconClasses = {
+        close: 'fa-times',
+        prev: 'fa-chevron-left',
+        next: 'fa-chevron-right',
+        prevYear: 'fa-angle-double-left',
+        nextYear: 'fa-angle-double-right',
+    };
+    BootstrapTheme.prototype.rtlIconClasses = {
+        prev: 'fa-chevron-right',
+        next: 'fa-chevron-left',
+        prevYear: 'fa-angle-double-right',
+        nextYear: 'fa-angle-double-left',
+    };
+    BootstrapTheme.prototype.iconOverrideOption = 'bootstrapFontAwesome'; // 
TODO: make TS-friendly. move the option-processing into this plugin
+    BootstrapTheme.prototype.iconOverrideCustomButtonOption = 
'bootstrapFontAwesome';
+    BootstrapTheme.prototype.iconOverridePrefix = 'fa-';
+
+    var css_248z = ".fc-theme-bootstrap 
a:not([href]){color:inherit}.fc-theme-bootstrap 
.fc-more-link:hover{text-decoration:none}";
+    internal$1.injectStyles(css_248z);
+
+    var plugin = core.createPlugin({
+        name: '@fullcalendar/bootstrap',
+        themeClasses: {
+            bootstrap: BootstrapTheme,
+        },
+    });
+
+    var internal = {
+        __proto__: null,
+        BootstrapTheme: BootstrapTheme
+    };
+
+    core.globalPlugins.push(plugin);
+
+    exports.Internal = internal;
+    exports["default"] = plugin;
+
+    Object.defineProperty(exports, '__esModule', { value: true });
+
+    return exports;
+
+})({}, FullCalendar, FullCalendar.Internal);
diff --git 
a/openmeetings-web/src/test/java/org/apache/openmeetings/util/TestDateTime.java 
b/openmeetings-web/src/test/java/org/apache/openmeetings/util/TestDateTime.java
index 397d06cd5..29202eb72 100644
--- 
a/openmeetings-web/src/test/java/org/apache/openmeetings/util/TestDateTime.java
+++ 
b/openmeetings-web/src/test/java/org/apache/openmeetings/util/TestDateTime.java
@@ -30,7 +30,6 @@ import java.util.Date;
 import java.util.Locale;
 
 import org.apache.openmeetings.RegularTest;
-import org.apache.openmeetings.web.common.datetime.AbstractOmDateTimePicker;
 import org.junit.jupiter.api.Test;
 
 @RegularTest
@@ -76,29 +75,4 @@ class TestDateTime {
                                .toFormatter(Locale.ENGLISH);
                assertNotNull(formatter1.parse(jsDateStr));
        }
-
-       @Test
-       void test3() throws Exception {
-               final Locale loc = new Locale.Builder()
-                               .setLanguage("fr")
-                               .setRegion("CA")
-                               .build();
-               final String result = Runtime.version().feature() < 17
-                               ? "yy-MM-dd HH [h] mm" // java 11
-                               : "y-MM-dd HH [h] mm"; // java 17
-               String format = AbstractOmDateTimePicker.getDateTimeFormat(loc);
-               assertEquals(result, AbstractOmDateTimePicker.patch(format));
-               format = 
AbstractOmDateTimePicker.getDateTimeFormat(Locale.ENGLISH);
-               assertEquals(format, AbstractOmDateTimePicker.patch(format));
-       }
-
-       @Test
-       void test4() throws Exception {
-               final Locale loc = new Locale.Builder()
-                               .setLanguage("bg")
-                               .setRegion("BG")
-                               .build();
-               String format = AbstractOmDateTimePicker.getDateTimeFormat(loc);
-               assertEquals("d.MM.yy [г]., H:mm [ч].", 
AbstractOmDateTimePicker.patch(format));
-       }
 }
diff --git 
a/openmeetings-web/src/test/java/org/apache/openmeetings/web/TestCalendar.java 
b/openmeetings-web/src/test/java/org/apache/openmeetings/web/TestCalendar.java
index 31d8026d3..140b8c835 100644
--- 
a/openmeetings-web/src/test/java/org/apache/openmeetings/web/TestCalendar.java
+++ 
b/openmeetings-web/src/test/java/org/apache/openmeetings/web/TestCalendar.java
@@ -34,7 +34,7 @@ import org.apache.wicket.behavior.AbstractAjaxBehavior;
 import org.apache.wicket.util.tester.FormTester;
 import org.junit.jupiter.api.Test;
 
-import com.googlecode.wicket.jquery.ui.calendar.CalendarView;
+import com.googlecode.wicket.jquery.ui.calendar6.CalendarView;
 
 import de.agilecoders.wicket.core.markup.html.bootstrap.navbar.Navbar;
 
@@ -58,7 +58,7 @@ class TestCalendar extends AbstractWicketTesterTest {
                        tester.getRequest().setParameter("allDay", 
String.valueOf(false));
                        tester.getRequest().setParameter("startDate", 
LocalDateTime.of(2017, 11, 13, 13, 13).toString());
                        tester.getRequest().setParameter("endDate", 
LocalDateTime.of(2017, 11, 13, 13, 13).toString());
-                       tester.getRequest().setParameter("viewName", 
CalendarView.month.name());
+                       tester.getRequest().setParameter("viewName", 
CalendarView.dayGridMonth.name());
                        
tester.executeBehavior((AbstractAjaxBehavior)cal.get("form:calendar").getBehaviorById(0));
 //select-event
                        FormTester appTester = 
tester.newFormTester(PATH_APPOINTMENT_DLG_FRM);
                        //check inviteeType:groupContainer:groups is invisible 
for regular user
diff --git a/pom.xml b/pom.xml
index 78dc8a1d1..4037a4669 100644
--- a/pom.xml
+++ b/pom.xml
@@ -85,7 +85,7 @@
                <!-- dependency versions -->
                <junit.version>5.10.0</junit.version>
                <wicket.version>9.15.0-SNAPSHOT</wicket.version>
-               <wicket-jquery-ui.version>9.12.0</wicket-jquery-ui.version>
+               
<wicket-jquery-ui.version>9.12.1-SNAPSHOT</wicket-jquery-ui.version>
                <wicketstuff.version>9.14.0</wicketstuff.version>
                
<wicket-bootstrap.version>6.0.5-SNAPSHOT</wicket-bootstrap.version>
                <spring.version>5.3.29</spring.version>

Reply via email to