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 61a9f14 [OPENMEETINGS-2363] initial attempt to re-style dialogs and buttons 61a9f14 is described below commit 61a9f1428c89a38aaca017f6a6d3c1c02af468a7 Author: Maxim Solodovnik <solomax...@gmail.com> AuthorDate: Fri Sep 25 14:46:25 2020 +0700 [OPENMEETINGS-2363] initial attempt to re-style dialogs and buttons --- .../web/common/OmAjaxClientInfoBehavior.java | 4 +- .../org/apache/openmeetings/web/common/main.js | 22 +--- .../pages/install/InstallWizard$ParamsStep3.html | 12 +-- .../pages/install/InstallWizard$ParamsStep4.html | 8 +- .../web/pages/install/InstallWizard.java | 10 +- .../org/apache/openmeetings/web/room/raw-room.js | 12 +++ .../org/apache/openmeetings/web/room/raw-sharer.js | 4 +- .../apache/openmeetings/web/user/chat/Chat.java | 15 ++- .../openmeetings/web/user/rooms/RoomListPanel.html | 2 +- .../openmeetings/web/user/rooms/RoomListPanel.java | 115 +++++++++++---------- .../openmeetings/web/util/OmTooltipBehavior.java | 34 ++++++ 11 files changed, 139 insertions(+), 99 deletions(-) diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/OmAjaxClientInfoBehavior.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/OmAjaxClientInfoBehavior.java index 0c81c78..7af38e5 100644 --- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/OmAjaxClientInfoBehavior.java +++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/OmAjaxClientInfoBehavior.java @@ -44,9 +44,7 @@ public class OmAjaxClientInfoBehavior extends AjaxClientInfoBehavior { @Override public List<HeaderItem> getDependencies() { - List<HeaderItem> list = super.getDependencies(); - list.add(JavaScriptHeaderItem.forReference(BrowserInfoForm.JS)); - return list; + return List.of(JavaScriptHeaderItem.forReference(BrowserInfoForm.JS)); } }; diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/main.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/main.js index aa453a7..b8778d5 100644 --- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/main.js +++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/main.js @@ -29,25 +29,6 @@ var OmUtil = (function() { function _init(_options) { options = _options; } - function _confirmDlg(_id, okHandler) { - const confirm = $('#' + _id); - confirm.dialog({ - modal: true - , buttons: [{ - text: confirm.data('btn-ok'), - click: function() { - okHandler(); - $(this).dialog('close'); - } - }, { - text: confirm.data('btn-cancel'), - click: function() { - $(this).dialog('close'); - } - }] - }); - return confirm; - } function _tmpl(tmplId, newId) { return $(tmplId).clone().attr('id', newId || ''); } @@ -85,7 +66,6 @@ var OmUtil = (function() { } self.init = _init; - self.confirmDlg = _confirmDlg; self.tmpl = _tmpl; self.debugEnabled = _debugEnabled; self.enableDebug = function() { @@ -135,7 +115,7 @@ Wicket.BrowserInfo.collectExtraInfo = function(info) { //Fix to move the close icon on top of the .ui-dialog-titlebar cause otherwise // touch-events are broken and you won't be able to close the dialog function fixJQueryUIDialogTouch (dialog) { - dialog.parent().find('.ui-dialog-titlebar-close').appendTo(dialog.parent()); + dialog.parent().find('.ui-dialog-titlebar-close').appendTo(dialog.parent()); } function showBusyIndicator() { $('#busy-indicator').show(); diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard$ParamsStep3.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard$ParamsStep3.html index a97695c..3e65ebf 100644 --- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard$ParamsStep3.html +++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard$ParamsStep3.html @@ -25,40 +25,40 @@ <legend><wicket:message key="install.wizard.params.step3.converters"/></legend> <div class="formelement"> <label wicket:for="docDpi" class="col-3 text-right"><wicket:message key="install.wizard.params.step3.docDpi"/> - <i class="fas fa-info-circle m-1 text-info" wicket:message="title:install.wizard.params.step3.docDpi.text,alt:install.wizard.params.step3.docDpi.text"></i> + <i class="fas fa-info-circle m-1 text-info om-tooltip" wicket:message="title:install.wizard.params.step3.docDpi.text,alt:install.wizard.params.step3.docDpi.text"></i> </label> <input wicket:id="docDpi" wicket:message="title:install.wizard.params.step3.docDpi.title" type="text" class="col-3"/> </div> <div class="formelement"> <label wicket:for="docQuality" class="col-3 text-right"><wicket:message key="install.wizard.params.step3.docQuality"/> - <i class="fas fa-info-circle m-1 text-info" wicket:message="title:install.wizard.params.step3.docQuality.text,alt:install.wizard.params.step3.docQuality.text"></i> + <i class="fas fa-info-circle m-1 text-info om-tooltip" wicket:message="title:install.wizard.params.step3.docQuality.text,alt:install.wizard.params.step3.docQuality.text"></i> </label> <input wicket:id="docQuality" wicket:message="title:install.wizard.params.step3.docQuality.title" type="text" class="col-3"/> </div> <div class="formelement"> <label wicket:for="imageMagicPath" class="col-3 text-right"><wicket:message key="install.wizard.params.step3.imageMagicPath"/> - <i class="fas fa-info-circle m-1 text-info" wicket:message="title:install.wizard.params.step3.imageMagicPath.text,alt:install.wizard.params.step3.imageMagicPath.text"></i> + <i class="fas fa-info-circle m-1 text-info om-tooltip" wicket:message="title:install.wizard.params.step3.imageMagicPath.text,alt:install.wizard.params.step3.imageMagicPath.text"></i> </label> <input wicket:id="imageMagicPath" wicket:message="title:install.wizard.params.step3.imageMagicPath.title" type="text" class="col-3"/> <button class="formelement" wicket:id="validateImageMagic"></button> </div> <div class="formelement"> <label wicket:for="ffmpegPath" class="col-3 text-right"><wicket:message key="install.wizard.params.step3.ffmpegPath"/> - <i class="fas fa-info-circle m-1 text-info" wicket:message="title:install.wizard.params.step3.ffmpegPath.text,alt:install.wizard.params.step3.ffmpegPath.text"></i> + <i class="fas fa-info-circle m-1 text-info om-tooltip" wicket:message="title:install.wizard.params.step3.ffmpegPath.text,alt:install.wizard.params.step3.ffmpegPath.text"></i> </label> <input wicket:id="ffmpegPath" wicket:message="title:install.wizard.params.step3.ffmpegPath.title" type="text" class="col-3"/> <button class="formelement" wicket:id="validateFfmpeg"></button> </div> <div class="formelement"> <label wicket:for="soxPath" class="col-3 text-right"><wicket:message key="install.wizard.params.step3.soxPath"/> - <i class="fas fa-info-circle m-1 text-info" wicket:message="title:install.wizard.params.step3.soxPath.text,alt:install.wizard.params.step3.soxPath.text"></i> + <i class="fas fa-info-circle m-1 text-info om-tooltip" wicket:message="title:install.wizard.params.step3.soxPath.text,alt:install.wizard.params.step3.soxPath.text"></i> </label> <input wicket:id="soxPath" wicket:message="title:install.wizard.params.step3.soxPath.title" type="text" class="col-3"/> <button class="formelement" wicket:id="validateSox"></button> </div> <div class="formelement"> <label wicket:for="officePath" class="col-3 text-right"><wicket:message key="install.wizard.params.step3.officePath"/> - <i class="fas fa-info-circle m-1 text-info" wicket:message="title:install.wizard.params.step3.officePath.text,alt:install.wizard.params.step3.officePath.text"></i> + <i class="fas fa-info-circle m-1 text-info om-tooltip" wicket:message="title:install.wizard.params.step3.officePath.text,alt:install.wizard.params.step3.officePath.text"></i> </label> <input wicket:id="officePath" wicket:message="title:install.wizard.params.step3.officePath.title" type="text" class="col-3"/> <button class="formelement" wicket:id="validateOffice"></button> diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard$ParamsStep4.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard$ParamsStep4.html index 056c454..ee8fc33 100644 --- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard$ParamsStep4.html +++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard$ParamsStep4.html @@ -25,7 +25,7 @@ <legend><wicket:message key="install.wizard.params.step4.crypt"/></legend> <div class="formelement"> <label wicket:for="cryptClassName" class="col-3 text-right"><wicket:message key="install.wizard.params.step4.cryptClassName"/> - <i class="fas fa-info-circle m-1 text-info" wicket:message="title:install.wizard.params.step4.cryptClassName.text,alt:install.wizard.params.step4.cryptClassName.text"></i> + <i class="fas fa-info-circle m-1 text-info om-tooltip" wicket:message="title:install.wizard.params.step4.cryptClassName.text,alt:install.wizard.params.step4.cryptClassName.text"></i> </label> <input wicket:id="cryptClassName" type="text" wicket:message="title:install.wizard.params.step4.cryptClassName.title" class="col-3"/> </div> @@ -34,7 +34,7 @@ <legend><wicket:message key="install.wizard.params.step4.sip"/></legend> <div class="formelement"> <label wicket:for="sipEnable" class="col-3 text-right"><wicket:message key="install.wizard.params.step4.sipEnable"/> - <i class="fas fa-info-circle m-1 text-info" wicket:message="title:install.wizard.params.step4.sipEnable.text,alt:install.wizard.params.step4.sipEnable.text"></i> + <i class="fas fa-info-circle m-1 text-info om-tooltip" wicket:message="title:install.wizard.params.step4.sipEnable.text,alt:install.wizard.params.step4.sipEnable.text"></i> </label> <div class="onoffswitch"> <input type="checkbox" class="onoff-checkbox" wicket:id="sipEnable"/> @@ -43,13 +43,13 @@ </div> <div class="formelement"> <label wicket:for="sipRoomPrefix" class="col-3 text-right"><wicket:message key="install.wizard.params.step4.sipRoomPrefix"/> - <i class="fas fa-info-circle m-1 text-info" wicket:message="title:install.wizard.params.step4.sipRoomPrefix.text,alt:install.wizard.params.step4.sipRoomPrefix.text"></i> + <i class="fas fa-info-circle m-1 text-info om-tooltip" wicket:message="title:install.wizard.params.step4.sipRoomPrefix.text,alt:install.wizard.params.step4.sipRoomPrefix.text"></i> </label> <input wicket:id="sipRoomPrefix" type="text" class="col-3"/> </div> <div class="formelement"> <label wicket:for="sipExtenContext" class="col-3 text-right"><wicket:message key="install.wizard.params.step4.sipExtenContext"/> - <i class="fas fa-info-circle m-1 text-info" wicket:message="title:install.wizard.params.step4.sipExtenContext.text,alt:install.wizard.params.step4.sipExtenContext.text"></i> + <i class="fas fa-info-circle m-1 text-info om-tooltip" wicket:message="title:install.wizard.params.step4.sipExtenContext.text,alt:install.wizard.params.step4.sipExtenContext.text"></i> </label> <input wicket:id="sipExtenContext" type="text" class="col-3"/> </div> diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard.java index 3b0e936..36d3fb0 100644 --- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard.java +++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard.java @@ -54,6 +54,7 @@ import org.apache.openmeetings.web.app.Application; import org.apache.openmeetings.web.app.WebSession; import org.apache.openmeetings.web.common.ErrorMessagePanel; import org.apache.openmeetings.web.common.OmLabel; +import org.apache.openmeetings.web.util.OmTooltipBehavior; import org.apache.wicket.Component; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.attributes.AjaxRequestAttributes; @@ -91,9 +92,6 @@ import org.slf4j.LoggerFactory; import org.springframework.orm.jpa.LocalEntityManagerFactoryBean; import org.springframework.web.context.support.XmlWebApplicationContext; -import com.googlecode.wicket.jquery.core.Options; -import com.googlecode.wicket.jquery.ui.widget.tooltip.TooltipBehavior; - import de.agilecoders.wicket.core.markup.html.bootstrap.button.BootstrapAjaxButton; import de.agilecoders.wicket.core.markup.html.bootstrap.button.ButtonBehavior; import de.agilecoders.wicket.core.markup.html.bootstrap.button.Buttons; @@ -613,7 +611,7 @@ public class InstallWizard extends BootstrapWizard { target.add(feedback); } }); - add(new TooltipBehavior(".text-info")); + add(new OmTooltipBehavior()); } private void reportSuccess(TextField<String> path) { @@ -713,9 +711,7 @@ public class InstallWizard extends BootstrapWizard { add(new CheckBox("sipEnable")); add(new TextField<String>("sipRoomPrefix")); add(new TextField<String>("sipExtenContext")); - Options options = new Options(); - options.set("content", "function () { return $(this).prop('title'); }"); - add(new TooltipBehavior(".text-info", options)); + add(new OmTooltipBehavior()); } @Override diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-room.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-room.js index b072891..3f21532 100644 --- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-room.js +++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-room.js @@ -461,6 +461,18 @@ var Room = (function() { VideoManager.update(c) } + // Let's re-style jquery-ui dialogs and buttons + $.extend($.ui.dialog.prototype.options.classes, { + 'ui-dialog': 'modal-content' + , 'ui-dialog-titlebar': 'modal-header' + , 'ui-dialog-title': 'modal-title' + , 'ui-dialog-titlebar-close': 'close' + , 'ui-dialog-content': 'modal-body' + , 'ui-dialog-buttonpane': 'modal-footer' + }); + $.extend($.ui.button.prototype.options.classes, { + 'ui-button': 'btn btn-outline-secondary' + }); self.init = _init; self.getMenuHeight = function() { return menuHeight; }; self.getOptions = function() { return typeof(options) === 'object' ? JSON.parse(JSON.stringify(options)) : {}; }; diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-sharer.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-sharer.js index ff203e1..3561a7a 100644 --- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-sharer.js +++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-sharer.js @@ -14,7 +14,7 @@ var Sharer = (function() { shareState = SHARE_STOPPED; recState = SHARE_STOPPED; } - + function _init() { reset(); sharer = $('#sharer').dialog({ @@ -27,7 +27,7 @@ var Sharer = (function() { , resizable: false }); fixJQueryUIDialogTouch(sharer); - + if (!VideoUtil.sharingSupported()) { sharer.find('.container').remove(); sharer.find('.alert').show(); diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/Chat.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/Chat.java index de8c9ca..ef941e3 100644 --- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/Chat.java +++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/Chat.java @@ -47,6 +47,7 @@ import org.apache.openmeetings.web.app.ClientManager; import org.apache.openmeetings.web.common.MainPanel; import org.apache.wicket.ajax.AbstractDefaultAjaxBehavior; import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.markup.head.HeaderItem; import org.apache.wicket.markup.head.IHeaderResponse; import org.apache.wicket.markup.head.JavaScriptHeaderItem; import org.apache.wicket.markup.head.OnDomReadyHeaderItem; @@ -60,6 +61,8 @@ import org.slf4j.LoggerFactory; import com.github.openjson.JSONObject; +import de.agilecoders.wicket.extensions.markup.html.bootstrap.jqueryui.JQueryUIJavaScriptReference; + public class Chat extends Panel { private static final long serialVersionUID = 1L; private static final Logger log = LoggerFactory.getLogger(Chat.class); @@ -169,7 +172,17 @@ public class Chat extends Panel { @Override public void renderHead(IHeaderResponse response) { super.renderHead(response); - response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forReference(new JavaScriptResourceReference(Chat.class, "chat.js")))); + response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forReference(new JavaScriptResourceReference(Chat.class, "chat.js"))) { + private static final long serialVersionUID = 1L; + + @Override + public List<HeaderItem> getDependencies() { + return List.of(JavaScriptHeaderItem.forScript("const bstooltip = jQuery.fn.tooltip;", "preserve-bs-tooltip") + , JQueryUIJavaScriptReference.asHeaderItem() + , JavaScriptHeaderItem.forScript("jQuery.fn.tooltip = bstooltip;", "restore-bs-tooltip") + ); + } + }); response.render(new PriorityHeaderItem(getNamedFunction("chatActivity", chatActivity, explicit(PARAM_TYPE), explicit(PARAM_ROOM_ID), explicit(PARAM_MSG_ID)))); if (showDashboardChat) { diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomListPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomListPanel.html index 656639a..cce19c6 100644 --- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomListPanel.html +++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomListPanel.html @@ -25,7 +25,7 @@ <tr wicket:id="list" class="room-row"> <td class="position-relative"> <div class="col-10 container" wicket:id="roomContainer"> - <div><span wicket:id="roomName">[room name]</span> <i wicket:id="info" class="fas fa-info-circle text-info info-tooltip"></i></div> + <div><span wicket:id="roomName">[room name]</span> <i wicket:id="info" class="fas fa-info-circle text-info om-tooltip"></i></div> <div> <wicket:message key="398" /> <span wicket:id="curUsers"></span> / <span wicket:id="totalUsers"></span> <button wicket:id="refresh" class="refresh btn-sm m2"></button> diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomListPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomListPanel.java index f3c8216..cd4dfd4 100644 --- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomListPanel.java +++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomListPanel.java @@ -27,6 +27,7 @@ import java.util.List; import org.apache.openmeetings.db.entity.room.Room; import org.apache.openmeetings.web.app.ClientManager; import org.apache.openmeetings.web.pages.MainPage; +import org.apache.openmeetings.web.util.OmTooltipBehavior; import org.apache.wicket.AttributeModifier; import org.apache.wicket.Component; import org.apache.wicket.ajax.AjaxEventBehavior; @@ -42,8 +43,6 @@ import org.apache.wicket.model.Model; import org.apache.wicket.model.ResourceModel; import org.apache.wicket.spring.injection.annot.SpringBean; -import com.googlecode.wicket.jquery.ui.widget.tooltip.TooltipBehavior; - import de.agilecoders.wicket.core.markup.html.bootstrap.behavior.CssClassNameAppender; import de.agilecoders.wicket.core.markup.html.bootstrap.button.BootstrapAjaxLink; import de.agilecoders.wicket.core.markup.html.bootstrap.button.Buttons; @@ -51,64 +50,72 @@ import de.agilecoders.wicket.extensions.markup.html.bootstrap.icon.FontAwesome5I public class RoomListPanel extends Panel { private static final long serialVersionUID = 1L; - private final ListView<Room> list; + private final String label; + private final ListView<Room> list = new ListView<>("list") { + private static final long serialVersionUID = 1L; + + @Override + protected void populateItem(ListItem<Room> item) { + final Room r = item.getModelObject(); + WebMarkupContainer roomContainer; + item.add((roomContainer = new WebMarkupContainer("roomContainer")).add(new AjaxEventBehavior(EVT_CLICK){ + private static final long serialVersionUID = 1L; + + @Override + protected void onEvent(AjaxRequestTarget target) { + onContainerClick(target, r); + } + })); + roomContainer.add(new Label("roomName", r.getName())); + final WebMarkupContainer info = new WebMarkupContainer("info"); + roomContainer.add(info.setOutputMarkupId(true) + .add(AttributeModifier.append(ATTR_TITLE, getString(String.format("room.type.%s.desc", r.getType().name()))))); + final Label curUsers = new Label("curUsers", new Model<>(cm.listByRoom(r.getId()).size())); + roomContainer.add(curUsers.setOutputMarkupId(true)); + roomContainer.add(new Label("totalUsers", r.getCapacity())); + item.add(new WebMarkupContainer("btn").add(new Label("label", label)).add(new RoomEnterBehavior(r.getId()) { + private static final long serialVersionUID = 1L; + + @Override + protected void onEvent(AjaxRequestTarget target) { + onRoomEnter(target, roomId); + } + })); + roomContainer.add(new BootstrapAjaxLink<String>("refresh", null, Buttons.Type.Outline_Info, new ResourceModel("lbl.refresh")) { + private static final long serialVersionUID = 1L; + + { + setIconType(FontAwesome5IconType.sync_alt_s); + } + + @Override + protected <L extends Serializable> Component newLabel(String markupId, IModel<L> model) { + return super.newLabel(markupId, model).setRenderBodyOnly(false).add(new CssClassNameAppender("sr-only")); + } + + @Override + public void onClick(AjaxRequestTarget target) { + target.add(curUsers.setDefaultModelObject(cm.listByRoom(r.getId()).size())); + onRefreshClick(target, r); + } + }.add(AttributeModifier.append(ATTR_TITLE, new ResourceModel("lbl.refresh")))); + } + }; @SpringBean private ClientManager cm; public RoomListPanel(String id, List<Room> rooms, final String label) { super(id); setOutputMarkupId(true); - add(list = new ListView<>("list", rooms) { - private static final long serialVersionUID = 1L; - - @Override - protected void populateItem(ListItem<Room> item) { - final Room r = item.getModelObject(); - WebMarkupContainer roomContainer; - item.add((roomContainer = new WebMarkupContainer("roomContainer")).add(new AjaxEventBehavior(EVT_CLICK){ - private static final long serialVersionUID = 1L; - - @Override - protected void onEvent(AjaxRequestTarget target) { - onContainerClick(target, r); - } - })); - roomContainer.add(new Label("roomName", r.getName())); - final WebMarkupContainer info = new WebMarkupContainer("info"); - roomContainer.add(info.setOutputMarkupId(true) - .add(AttributeModifier.append(ATTR_TITLE, getString(String.format("room.type.%s.desc", r.getType().name()))))); - final Label curUsers = new Label("curUsers", new Model<>(cm.listByRoom(r.getId()).size())); - roomContainer.add(curUsers.setOutputMarkupId(true)); - roomContainer.add(new Label("totalUsers", r.getCapacity())); - item.add(new WebMarkupContainer("btn").add(new Label("label", label)).add(new RoomEnterBehavior(r.getId()) { - private static final long serialVersionUID = 1L; - - @Override - protected void onEvent(AjaxRequestTarget target) { - onRoomEnter(target, roomId); - } - })); - roomContainer.add(new BootstrapAjaxLink<String>("refresh", null, Buttons.Type.Outline_Info, new ResourceModel("lbl.refresh")) { - private static final long serialVersionUID = 1L; - - { - setIconType(FontAwesome5IconType.sync_alt_s); - } - - @Override - protected <L extends Serializable> Component newLabel(String markupId, IModel<L> model) { - return super.newLabel(markupId, model).setRenderBodyOnly(false).add(new CssClassNameAppender("sr-only")); - } - - @Override - public void onClick(AjaxRequestTarget target) { - target.add(curUsers.setDefaultModelObject(cm.listByRoom(r.getId()).size())); - onRefreshClick(target, r); - } - }.add(AttributeModifier.append(ATTR_TITLE, new ResourceModel("lbl.refresh")))); - } - }); - add(new TooltipBehavior(".info-tooltip")); + this.label = label; + list.setList(rooms); + } + + @Override + protected void onInitialize() { + super.onInitialize(); + add(list); + add(new OmTooltipBehavior()); } public void update(IPartialPageRequestHandler handler, List<Room> rooms) { diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/OmTooltipBehavior.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/OmTooltipBehavior.java new file mode 100644 index 0000000..498aef1 --- /dev/null +++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/OmTooltipBehavior.java @@ -0,0 +1,34 @@ +/* + * 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. + */ +package org.apache.openmeetings.web.util; + +import org.apache.wicket.Component; +import org.apache.wicket.behavior.Behavior; +import org.apache.wicket.markup.head.IHeaderResponse; +import org.apache.wicket.markup.head.OnDomReadyHeaderItem; + +public class OmTooltipBehavior extends Behavior { + private static final long serialVersionUID = 1L; + + @Override + public void renderHead(Component component, IHeaderResponse response) { + super.renderHead(component, response); + response.render(OnDomReadyHeaderItem.forScript("$('.om-tooltip').tooltip({html: true});")); + } +}