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

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


The following commit(s) were added to refs/heads/4.0.x by this push:
     new ca1018e  [OPENMEETINGS-1985] It is now possible to change WB dimensions
ca1018e is described below

commit ca1018edbea163d6e83d79170401d5a06f2c8a08
Author: Maxim Solodovnik <solomax...@gmail.com>
AuthorDate: Fri Feb 15 12:53:41 2019 +0700

    [OPENMEETINGS-1985] It is now possible to change WB dimensions
---
 .../apache/openmeetings/web/room/RoomPanel.java    |  1 +
 .../apache/openmeetings/web/room/wb/WbPanel.html   | 27 ++++++-
 .../apache/openmeetings/web/room/wb/WbPanel.java   |  2 +
 .../apache/openmeetings/web/room/wb/raw-wb-area.js |  1 +
 .../openmeetings/web/room/wb/raw-wb-board.js       | 84 ++++++++++++++++------
 .../src/main/webapp/css/raw-general.css            | 10 +++
 openmeetings-web/src/main/webapp/css/raw-wb.css    | 42 +++++------
 7 files changed, 120 insertions(+), 47 deletions(-)

diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
index 736fe68..70f4101 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
@@ -136,6 +136,7 @@ public class RoomPanel extends BasePanel {
                                        .put("uid", _c.getUid())
                                        .put("rights", 
_c.toJson(true).getJSONArray("rights"))
                                        .put("interview", interview)
+                                       .put("questions", 
r.isAllowUserQuestions())
                                        .put("showMicStatus", 
!r.getHiddenElements().contains(RoomElement.MicrophoneStatus))
                                        .put("exclusiveTitle", 
getString("1386"));
                        if (!Strings.isEmpty(r.getRedirectURL()) && 
(ws.getSoapLogin() != null || ws.getInvitation() != null)) {
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.html
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.html
index a8c6ea3..93ea2ed 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.html
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.html
@@ -98,8 +98,12 @@
                        </div>
                        &nbsp;&nbsp;&nbsp;&nbsp;
                        <div class="btn-group btn-group-xs block" role="group" 
aria-label="...">
-                               <button type="button" class="btn btn-default 
zoom-out" wicket:message="title:259"><span class="ui-icon 
ui-icon-minusthick"></span></button>
-                               <button type="button" class="btn btn-default 
zoom-in" wicket:message="title:260"><span class="ui-icon 
ui-icon-plusthick"></span></button>
+                               <button type="button" class="btn btn-default 
zoom-out" wicket:message="title:259">
+                                       <span class="ui-icon 
ui-icon-minusthick"></span>
+                               </button>
+                               <button type="button" class="btn btn-default 
zoom-in" wicket:message="title:260">
+                                       <span class="ui-icon 
ui-icon-plusthick"></span>
+                               </button>
                        </div>
                        <select class="zoom" data-custom-val="1.20">
                                <option value="fullFit"><wicket:message 
key="zoom.fullFit"/></option>
@@ -114,6 +118,11 @@
                                <option value="3.00">300%</option>
                                <option value="4.00">400%</option>
                        </select>
+                       <div class="btn-group btn-group-xs block 
settings-group" role="group" aria-label="..." style="display: none;">
+                               <button type="button" class="btn btn-default 
settings" wicket:message="title:4">
+                                       <span class="ui-icon 
ui-icon-gear"></span>
+                               </button>
+                       </div>
                </div>
                <div id="wb-tools" class="tools ui-state-active vertical clear">
                        <div class="bumper"></div>
@@ -131,7 +140,7 @@
                        <div class="bumper"></div>
                        <div wicket:message="title:557" class="ui-widget-header 
clickable om-icon big apointer"></div>
                </div>
-               <div id="wb-settings" class="wb-settings ui-corner-all 
ui-widget-content">
+               <div id="wb-tool-settings" class="wb-tool-settings 
ui-corner-all ui-widget-content">
                        <div wicket:message="title:843" class="header 
ui-dialog-titlebar ui-corner-all ui-widget-header ui-helper-clearfix 
ui-draggable-handle">
                                <span class="ui-dialog-title"><wicket:message 
key="843"/></span>
                                <button type="button" class="ui-button 
ui-corner-all ui-widget ui-button-icon-only ui-dialog-titlebar-close" 
wicket:message="title:85">
@@ -188,6 +197,18 @@
                <div id="wb-confirm-remove" wicket:message="title:832, 
data-btn-ok:54, data-btn-cancel:lbl.cancel">
                        <wicket:message key="1313"/>
                </div>
+               <div id="wb-settings" class="wb-settings" 
wicket:message="title:4, data-btn-ok:54, data-btn-cancel:lbl.cancel">
+                       <div class="om-tbl">
+                               <div class="om-tbl-row">
+                                       <div 
class="om-tbl-cell"><wicket:message key="740"/></div>
+                                       <div class="om-tbl-cell"><input 
class="wbs-width" type="number" min="100" style="width: 100px;"/></div>
+                               </div>
+                               <div class="om-tbl-row">
+                                       <div 
class="om-tbl-cell"><wicket:message key="741"/></div>
+                                       <div class="om-tbl-cell"><input 
class="wbs-height" type="number" min="100" style="width: 100px;"/></div>
+                               </div>
+                       </div>
+               </div>
        </div>
        <ul id="wb-rename-menu" style="position: absolute; display: none;">
                <li class="wb-rename"><div><span class="ui-icon 
ui-icon-pencil"></span><wicket:message key="711"/></div></li>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.java
index 5227ff4..e60bf1f 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.java
@@ -334,6 +334,8 @@ public class WbPanel extends AbstractWbPanel {
                                case setSize:
                                {
                                        Whiteboard wb = 
wbm.get(roomId).get(obj.getLong("wbId"));
+                                       wb.setWidth(obj.getInt("width"));
+                                       wb.setHeight(obj.getInt("height"));
                                        wb.setZoom(obj.getDouble("zoom"));
                                        
wb.setZoomMode(ZoomMode.valueOf(obj.getString("zoomMode")));
                                        wbm.update(roomId, wb);
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-wb-area.js
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-wb-area.js
index 9d0a686..f89a255 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-wb-area.js
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-wb-area.js
@@ -289,6 +289,7 @@ var DrawWbArea = function() {
 
                const wbo = Wb();
                wbo.init(obj, tid, role);
+               wb.on('remove', wbo.destroy);
                wb.data(wbo);
                _resizeWbs();
        }
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-wb-board.js
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-wb-board.js
index b5d861b..ea9be22 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-wb-board.js
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-wb-board.js
@@ -26,6 +26,9 @@ var Wb = function() {
        }
        function _initToolBtn(m, def, obj) {
                const btn = _getBtn(m);
+               if (!btn || btn.length === 0) {
+                       return;
+               }
                btn.data({
                        obj: obj
                        , toolType: m
@@ -270,6 +273,36 @@ var Wb = function() {
                                        _setSlide(1 * slide + 1);
                                        showCurrentSlide();
                                });
+                               
z.find('.settings-group').show().find('.settings').click(function () {
+                                       const wbs = $('#wb-settings')
+                                               , wbsw = 
wbs.find('.wbs-width').val(width)
+                                               , wbsh = 
wbs.find('.wbs-height').val(height);
+                                       function isNumeric(n) {
+                                               return !isNaN(parseInt(n)) && 
isFinite(n);
+                                       }
+                                       wbs.dialog({
+                                               buttons: [
+                                                       {
+                                                               text: 
wbs.data('btn-ok')
+                                                               , click: 
function() {
+                                                                       const 
__w = wbsw.val(), __h = wbsh.val();
+                                                                       if 
(isNumeric(__w) && isNumeric(__h)) {
+                                                                               
width = parseInt(__w);
+                                                                               
height = parseInt(__h);
+                                                                               
_sendSetSize();
+                                                                       }
+                                                                       
$(this).dialog("close");
+                                                               }
+                                                       }
+                                                       , {
+                                                               text: 
wbs.data('btn-cancel')
+                                                               , click: 
function() {
+                                                                       
$(this).dialog("close");
+                                                               }
+                                                       }
+                                               ]
+                                       });
+                               });
                        case WHITEBOARD:
                                if (role === WHITEBOARD) {
                                        clearAll.addClass('disabled');
@@ -342,22 +375,12 @@ var Wb = function() {
                                                zoom = .1;
                                        }
                                        zoomMode = 'zoom';
-                                       _setSize();
-                                       wbAction('setSize', JSON.stringify({
-                                               wbId: wb.id
-                                               , zoom: zoom
-                                               , zoomMode: zoomMode
-                                       }));
+                                       _sendSetSize();
                                });
                                z.find('.zoom-in').click(function() {
                                        zoom += .2;
                                        zoomMode = 'zoom';
-                                       _setSize();
-                                       wbAction('setSize', JSON.stringify({
-                                               wbId: wb.id
-                                               , zoom: zoom
-                                               , zoomMode: zoomMode
-                                       }));
+                                       _sendSetSize();
                                });
                                z.find('.zoom').change(function() {
                                        const zzz = $(this).val();
@@ -375,17 +398,22 @@ var Wb = function() {
                                        } else {
                                                zoom = 1. * zzz;
                                        }
-                                       _setSize();
-                                       wbAction('setSize', JSON.stringify({
-                                               wbId: wb.id
-                                               , zoom: zoom
-                                               , zoomMode: zoomMode
-                                       }));
+                                       _sendSetSize();
                                });
                                _setSize();
                                _initToolBtn('apointer', _firstToolItem, 
APointer(wb, s));
                }
        }
+       function _sendSetSize() {
+               _setSize();
+               wbAction('setSize', JSON.stringify({
+                       wbId: wb.id
+                       , zoom: zoom
+                       , zoomMode: zoomMode
+                       , width: width
+                       , height: height
+               }));
+       }
        function _findObject(o) {
                let _o = null;
                const cnvs = canvases[o.slide];
@@ -704,6 +732,12 @@ var Wb = function() {
                        e.remove();
                }
        }
+       function __destroySettings() {
+               const wbs = $('#wb-settings');
+               if (wbs.dialog('instance')) {
+                       wbs.dialog('destroy');
+               }
+       }
 
        wb.setRole = function(_role) {
                if (role !== _role) {
@@ -712,7 +746,7 @@ var Wb = function() {
                                btn.data().deactivate();
                        }
                        a.find('.tools').remove();
-                       a.find('.wb-settings').remove();
+                       a.find('.wb-tool-settings').remove();
                        a.find('.wb-zoom').remove();
                        role = _role;
                        const sc = a.find('.scroll-container');
@@ -722,11 +756,12 @@ var Wb = function() {
                        __safeRemove(s);
                        __safeRemove(f);
                        if (role === NONE) {
-                               t = OmUtil.tmpl('#wb-tools-readonly');
+                               __destroySettings();
+                               t = !!Room.getOptions().questions ? 
OmUtil.tmpl('#wb-tools-readonly') : a.find('invalid-wb-element');
                                sc.off('scroll', scrollHandler);
                        } else {
                                t = OmUtil.tmpl('#wb-tools');
-                               s = OmUtil.tmpl('#wb-settings')
+                               s = OmUtil.tmpl('#wb-tool-settings')
                                        .attr('style', 'display: none; bottom: 
100px; ' + (Settings.isRtl ? 'left' : 'right') + ': 100px;');
                                f = OmUtil.tmpl('#wb-formula')
                                        .attr('style', 'display: none; bottom: 
100px; ' + (Settings.isRtl ? 'left' : 'right') + ': 100px;');
@@ -736,7 +771,7 @@ var Wb = function() {
                        t.attr('style', 'position: absolute; top: 20px; ' + 
(Settings.isRtl ? 'left' : 'right') + ': 20px;');
                        a.append(t).append(z);
                        showCurrentSlide();
-                       t = a.find('.tools'), s = a.find('.wb-settings');
+                       t = a.find('.tools'), s = a.find('.wb-tool-settings');
                        wb.eachCanvas(function(canvas) {
                                setHandlers(canvas);
                                canvas.forEachObject(function(__o) { //TODO 
reduce iterations
@@ -767,7 +802,7 @@ var Wb = function() {
                _setSize();
        }
        wb.resize = function() {
-               if (t.position().left + t.width() > a.width()) {
+               if (t.length === 1 && t.position().left + t.width() > 
a.width()) {
                        t.position({
                                my: (Settings.isRtl ? 'left' : 'right')
                                , at: (Settings.isRtl ? 'left' : 'right') + 
'-20'
@@ -907,5 +942,8 @@ var Wb = function() {
        wb.getZoom = function() {
                return zoom;
        }
+       wb.destroy = function() {
+               __destroySettings();
+       }
        return wb;
 };
diff --git a/openmeetings-web/src/main/webapp/css/raw-general.css 
b/openmeetings-web/src/main/webapp/css/raw-general.css
index be1acf5..e0e2980 100644
--- a/openmeetings-web/src/main/webapp/css/raw-general.css
+++ b/openmeetings-web/src/main/webapp/css/raw-general.css
@@ -595,3 +595,13 @@ div.formSaveBar {
        width: 100%;
        height: 100%;
 }
+.om-tbl {
+       display: table;
+       width: 100%;
+}
+.om-tbl .om-tbl-row {
+       display: table-row;
+}
+.om-tbl .om-tbl-row .om-tbl-cell {
+       display: table-cell;
+}
diff --git a/openmeetings-web/src/main/webapp/css/raw-wb.css 
b/openmeetings-web/src/main/webapp/css/raw-wb.css
index bcf7b17..1a0b7e7 100644
--- a/openmeetings-web/src/main/webapp/css/raw-wb.css
+++ b/openmeetings-web/src/main/webapp/css/raw-wb.css
@@ -149,11 +149,11 @@
 .room.wb.area .om-icon.big.prev {
        background-image: url(images/prev.png);
 }
-.wb-settings, .wb-formula {
+.wb-tool-settings, .wb-formula {
        position: absolute;
        z-index: 95;
 }
-.wb-settings, .wb-formula .latex-guide {
+.wb-formula .latex-guide {
        padding: 0 10px;
 }
 .room.wb.area .tools.vertical .dropdown-toggle {
@@ -182,11 +182,11 @@
        border-left: 8px solid blue;
        border-right: 8px solid transparent;
 }
-.wb-settings, .wb-settings .tab.props, .wb-formula {
+.wb-tool-settings, .wb-tool-settings .tab.props, .wb-formula {
        display: inline-block;
        width: 310px;
 }
-.wb-settings .ui-dialog-titlebar-close, .wb-formula .ui-dialog-titlebar-close {
+.wb-tool-settings .ui-dialog-titlebar-close, .wb-formula 
.ui-dialog-titlebar-close {
        position: absolute;
        right: .3em;
        top: 5px;
@@ -194,56 +194,56 @@
        padding: 1px;
        height: 20px;
 }
-.wb-settings .header, .wb-formula .header {
+.wb-tool-settings .header, .wb-formula .header {
        padding: 5px;
 }
-.wb-settings .header .ui-dialog-title, .wb-formula .header .ui-dialog-title {
+.wb-tool-settings .header .ui-dialog-title, .wb-formula .header 
.ui-dialog-title {
        padding-left: 10px;
 }
-.wb-settings .tab.props {
+.wb-tool-settings .tab.props {
        padding: 5px 10px;
 }
-.wb-settings .tab.props .prop-row {
+.wb-tool-settings .tab.props .prop-row {
        padding-top: 5px;
        margin: 0;
        font-size: small;
 }
-.wb-settings .tab.props .block {
+.wb-tool-settings .tab.props .block {
        display: inline;
        padding-left: 5px;
 }
-.wb-settings .tab.props .block.lbl {
+.wb-tool-settings .tab.props .block.lbl {
        width: 1em;
 }
-.wb-settings .tab.props .block.but {
+.wb-tool-settings .tab.props .block.but {
        width: 2.5em;
 }
-.wb-settings .tab.props .block.input {
+.wb-tool-settings .tab.props .block.input {
        width: 40px;
 }
-.wb-settings .tab.props .block.input input {
+.wb-tool-settings .tab.props .block.input input {
        width: 30px;
 }
-.wb-settings .tab.props .block.input input[type=number] {
+.wb-tool-settings .tab.props .block.input input[type=number] {
        width: 40px;
 }
-.wb-settings .tab.props .block.input input[type=color] {
+.wb-tool-settings .tab.props .block.input input[type=color] {
        padding: 0;
 }
-.wb-settings .tab.props .block.input input[type=color]:disabled {
+.wb-tool-settings .tab.props .block.input input[type=color]:disabled {
        opacity:.3;
 }
-.wb-settings .tab.props .block.but button {
+.wb-tool-settings .tab.props .block.but button {
        width: 2.5em;
 }
-.wb-settings .tab.props  .wb-prop-i.selected {
+.wb-tool-settings .tab.props  .wb-prop-i.selected {
        font-style: italic;
 }
-.wb-settings .tab.props .wb-prop-b.selected {
+.wb-tool-settings .tab.props .wb-prop-b.selected {
        font-weight: bold;
 }
-.wb-settings .tab.props .block.but .wb-prop-i
-       , .wb-settings .tab.props .block.but .wb-prop-b
+.wb-tool-settings .tab.props .block.but .wb-prop-i
+       , .wb-tool-settings .tab.props .block.but .wb-prop-b
 {
        width: 5px;
 }

Reply via email to