diff --git a/evennia/web/webclient/static/webclient/js/plugins/hotbuttons.js b/evennia/web/webclient/static/webclient/js/plugins/hotbuttons.js index e3d2ea8a7a..a20a620f52 100644 --- a/evennia/web/webclient/static/webclient/js/plugins/hotbuttons.js +++ b/evennia/web/webclient/static/webclient/js/plugins/hotbuttons.js @@ -30,32 +30,31 @@ plugin_handler.add('hotbuttons', (function () { // Add Buttons var addButtonsUI = function () { var buttons = $( [ - '
', - '
', - '
', - ' ', - ' ', - ' ', - ' ', - ' ', - ' ', - ' ', - ' ', - ' ', - '
', - '
', - '
', - ].join("\n") ); + '
', + '
', + '
', + ' ', + ' ', + ' ', + ' ', + ' ', + ' ', + ' ', + ' ', + ' ', + '
', + '
', + '
', + ].join("\n") ); // Add buttons in front of the existing #inputform - buttons.insertBefore('#inputform'); - $('#inputform').addClass('split split-vertical'); + $('#input').prev().replaceWith(buttons); - Split(['#buttons','#inputform'], { + Split(['#main','#buttons','#input'], { + sizes: [85,5,10], direction: 'vertical', - sizes: [50,50], gutterSize: 4, - minSize: 150, + minSize: [150,20,50], }); } diff --git a/evennia/web/webclient/static/webclient/js/plugins/options.js b/evennia/web/webclient/static/webclient/js/plugins/options.js index 114cd6cf0e..d3b6d13158 100644 --- a/evennia/web/webclient/static/webclient/js/plugins/options.js +++ b/evennia/web/webclient/static/webclient/js/plugins/options.js @@ -77,10 +77,12 @@ let options_plugin = (function () { if (code === 27) { // Escape key if ($('#helpdialog').is(':visible')) { plugins['popups'].closePopup("#helpdialog"); - } else { - plugins['popups'].closePopup("#optionsdialog"); + return true; + } + if ($('#optionsdialog').is(':visible')) { + plugins['popups'].closePopup("#optionsdialog"); + return true; } - return true; } return false; } @@ -129,6 +131,21 @@ let options_plugin = (function () { plugins['popups'].closePopup("#helpdialog"); } + // + // Make sure to close any dialogs on connection lost + var onText = function (args, kwargs) { + // is helppopup set? and if so, does this Text have type 'help'? + if ('helppopup' in options && options['helppopup'] ) { + if (kwargs && ('type' in kwargs) && (kwargs['type'] == 'help') ) { + $('#helpdialogcontent').append('
'+ args + '
'); + plugins['popups'].togglePopup("#helpdialog"); + return true; + } + } + + return false; + } + // // Register and init plugin var init = function () { @@ -155,6 +172,7 @@ let options_plugin = (function () { onGotOptions: onGotOptions, onPrompt: onPrompt, onConnectionClose: onConnectionClose, + onText: onText, } })() plugin_handler.add('options', options_plugin); diff --git a/evennia/web/webclient/static/webclient/js/plugins/splithandler.js b/evennia/web/webclient/static/webclient/js/plugins/splithandler.js index 4667065856..284d74b912 100644 --- a/evennia/web/webclient/static/webclient/js/plugins/splithandler.js +++ b/evennia/web/webclient/static/webclient/js/plugins/splithandler.js @@ -183,12 +183,12 @@ let splithandler_plugin = (function () { var dialog = $("#splitdialogcontent"); dialog.empty(); - var selection = ''; for ( var pane in split_panes ) { - selection = selection + ''; + selection = selection + ''; } - selection = "Pane to split: " + selection + " "; - dialog.append(selection); + selection = "Pane to split: " + selection + " "; + dialog.append(selection); dialog.append('top/bottom '); dialog.append('side-by-side
'); @@ -203,7 +203,7 @@ let splithandler_plugin = (function () { dialog.append('replace '); dialog.append('append
'); - dialog.append('
Split
'); + dialog.append('
Split
'); $("#splitclose").bind("click", onSplitDialogClose); @@ -251,21 +251,21 @@ let splithandler_plugin = (function () { var dialog = $("#panedialogcontent"); dialog.empty(); - var selection = ''; for ( var pane in split_panes ) { - selection = selection + ''; + selection = selection + ''; } - selection = "Assign to pane: " + selection + "
"; - dialog.append(selection); + selection = "Assign to pane: " + selection + "
"; + dialog.append(selection); - var multiple = ''; for ( var type in known_types ) { - multiple = multiple + ''; + multiple = multiple + ''; } - multiple = "Content types: " + multiple + "
"; - dialog.append(multiple); + multiple = "Content types: " + multiple + "
"; + dialog.append(multiple); - dialog.append('
Assign
'); + dialog.append('
Assign
'); $("#paneclose").bind("click", onPaneControlDialogClose); @@ -276,9 +276,9 @@ let splithandler_plugin = (function () { // Close "Pane Controls" dialog var onPaneControlDialogClose = function () { var pane = $("select[name=assign-pane]").val(); - var types = $("select[name=assign-type]").val(); + var types = $("select[name=assign-type]").val(); - // var types = new Array; + // var types = new Array; // $('#splitdialogcontent input[type=checkbox]:checked').each(function() { // types.push( $(this).attr('value') ); // }); @@ -287,24 +287,24 @@ let splithandler_plugin = (function () { plugins['popups'].closePopup("#panedialog"); } + // // helper function sending text to a pane var txtToPane = function (panekey, txt) { - var pane = split_panes[panekey]; - var text_div = $('#' + panekey + '-sub'); + var pane = split_panes[panekey]; + var text_div = $('#' + panekey + '-sub'); - if ( pane['update_method'] == 'replace' ) { - text_div.html(txt) - } else if ( pane['update_method'] == 'append' ) { - text_div.append(txt); - var scrollHeight = text_div.parent().prop("scrollHeight"); - text_div.parent().animate({ scrollTop: scrollHeight }, 0); - } else { // line feed - text_div.append("
" + txt + "
"); - var scrollHeight = text_div.parent().prop("scrollHeight"); - text_div.parent().animate({ scrollTop: scrollHeight }, 0); - } - + if ( pane['update_method'] == 'replace' ) { + text_div.html(txt) + } else if ( pane['update_method'] == 'append' ) { + text_div.append(txt); + var scrollHeight = text_div.parent().prop("scrollHeight"); + text_div.parent().animate({ scrollTop: scrollHeight }, 0); + } else { // line feed + text_div.append("
" + txt + "
"); + var scrollHeight = text_div.parent().prop("scrollHeight"); + text_div.parent().animate({ scrollTop: scrollHeight }, 0); + } } @@ -316,53 +316,76 @@ let splithandler_plugin = (function () { // // Accept plugin onText events var onText = function (args, kwargs) { - - // If the message is not itself tagged, we'll assume it - // should go into any panes with 'all' or 'rest' set + // If the message is not itself tagged, we'll assume it + // should go into any panes with 'all' or 'rest' set var msgtype = "rest"; if ( kwargs && 'type' in kwargs ) { - msgtype = kwargs['type']; + msgtype = kwargs['type']; if ( ! known_types.includes(msgtype) ) { // this is a new output type that can be mapped to panes console.log('detected new output type: ' + msgtype) known_types.push(msgtype); } - } - var target_panes = []; - var rest_panes = []; - - for (var key in split_panes) { - var pane = split_panes[key]; - // is this message type mapped to this pane (or does the pane has an 'all' type)? - if (pane['types'].length > 0) { - if (pane['types'].includes(msgtype) || pane['types'].includes('all')) { - target_panes.push(key); - } else if (pane['types'].includes('rest')) { - // store rest-panes in case we have no explicit to send to - rest_panes.push(key); - } - } else { - // unassigned panes are assumed to be rest-panes too - rest_panes.push(key); - } - } - var ntargets = target_panes.length; - var nrests = rest_panes.length; - if (ntargets > 0) { - // we have explicit target panes to send to - for (var i=0; i 0) { - // no targets, send remainder to rest-panes/unassigned - for (var i=0; i 0) { + if (pane['types'].includes(msgtype) || pane['types'].includes('all')) { + target_panes.push(key); + } else if (pane['types'].includes('rest')) { + // store rest-panes in case we have no explicit to send to + rest_panes.push(key); + } + } else { + // unassigned panes are assumed to be rest-panes too + rest_panes.push(key); + } + } + var ntargets = target_panes.length; + var nrests = rest_panes.length; + if (ntargets > 0) { + // we have explicit target panes to send to + for (var i=0; i 0) { + // no targets, send remainder to rest-panes/unassigned + for (var i=0; i + - {% endblock %}