From 26ca0f07225f48dc1b63fc3b4b3c607a47df9553 Mon Sep 17 00:00:00 2001 From: bergware Date: Sat, 3 Feb 2024 18:27:08 +0100 Subject: [PATCH 01/40] Feedback form: enable/disable SUBMIT button automatically - User can only submit when valid input is entered --- emhttp/plugins/dynamix/scripts/feedback | 398 ++++++++++++++---------- 1 file changed, 228 insertions(+), 170 deletions(-) diff --git a/emhttp/plugins/dynamix/scripts/feedback b/emhttp/plugins/dynamix/scripts/feedback index 4b7c775b5..e6cd0349e 100755 --- a/emhttp/plugins/dynamix/scripts/feedback +++ b/emhttp/plugins/dynamix/scripts/feedback @@ -13,7 +13,7 @@ $docroot ??= ($_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp'); require_once "$docroot/webGui/include/Helpers.php"; -extract(parse_plugin_cfg('dynamix', true)); +extract(parse_plugin_cfg('dynamix',true)); // add translations $_SERVER['REQUEST_URI'] = ''; @@ -22,191 +22,249 @@ require_once "$docroot/webGui/include/Translations.php"; $var = parse_ini_file('state/var.ini'); $unraid = parse_ini_file('/etc/unraid-version'); -$keyfile = !empty(_var($var, 'regFILE')) ? trim(base64_encode(@file_get_contents($var['regFILE']))) : ''; -$width = in_array($display['theme'], ['azure', 'gray']) ? '98.4%' : '100%'; +$keyfile = !empty(_var($var,'regFILE')) ? trim(base64_encode(@file_get_contents($var['regFILE']))) : ''; +$width = in_array($display['theme'], ['azure','gray']) ? '98.8%' : '100%'; ?> - - Feedback Form - + +Feedback Form + -
-
- - - - -
-
-
-
- -
- -
-
- - - -

: .

-
-
- - - - -

: .

-
-
- -
- -
- -
- + return; + } + params.timestamp = unraid_timestamp; + params.osversion = unraid_osversion; + params.keyfile = inkeyfile; + params.pageurl = inpageurl; + $.post(url, params, function(data) { + $('div.spinner.fixed').hide(); + if (data.error) { + var failure_message = "

. .

"; + $('#thanks_panel').html(failure_message).fadeIn('fast'); + } else { + data.message = data.message || ''; + var url_parts = url.split('/'); + var success_message = '

!

' + data.message + '

'; + $('#thanks_panel').html(success_message).fadeIn('fast', function() { + var resetfunction = window[url_parts[4] + '_reset']; + if (typeof resetfunction !== 'undefined' && $.isFunction(resetfunction)) { + resetfunction(); + } + }); + } + }).fail(function(jqXHR, textStatus, errorThrown) { + if (jqXHR.responseJSON && jqXHR.responseJSON.error) { + errorThrown = jqXHR.responseJSON.error; + } + var failure_message = "

. .

"; + $('#thanks_panel').html(failure_message).fadeIn('fast'); + }).always(function() { + $('#spinner_image').fadeOut('fast'); + panel.fadeOut('fast').find('textarea,input').prop('disabled', false); + }); + $('#submit-button').prop('disabled',true); +} + +$(function() { + $('#control_panel input[name=mode]').click(function() { + var showPanel = '#'+$('#control_panel input[name=mode]:checked').val()+'_panel'; + $('.allpanels').not(showPanel).fadeOut('fast'); + var loadfunction = window[$('#control_panel input[name=mode]:checked').val()+'_load']; + if (typeof loadfunction !== 'undefined' && $.isFunction(loadfunction)) { + loadfunction(); + } else { + $(showPanel).fadeIn('fast'); + } + }); + + $('button.confirm').text(""); + if ($('#submit-button').length == 0) $('button.confirm').before(''); + + $('input[name=mode]').click(function(){ + var label = $('input[name=mode]:checked').val(); + var required = (label == 'troubleshoot'); + var email = ""; + var option = " ()"; + $('#submit-button').prop('disabled',$('#'+label)!=''); + $('input#email').prop('placeholder',email+(required?'':option)).prop('required',required); + }); + + $('textarea').on('input change',function(){ + var panel = $(this).parent().prop('id').replace('_panel',''); + $('#submit-button').prop('disabled',validInput($(this).val(),panel) || !validEmail($('input#email'))); + }); + + $('input#email').on('input change',function(){ + var panel = $('input[name=mode]:checked').val(); + $('#submit-button').prop('disabled',validInput($('#'+panel+'_panel textarea').val(),panel) || !validEmail($(this))); + }); + + $('#submit-button').click(function() { + switch ($('input[name=mode]:checked').val()) { + case 'featureRequest': + form_submit('https://keys.lime-technology.com/feedback/featurerequest',{description:$('#featureRequest').val(), email:$('input#email').val()}, $('#featureRequest_panel')); + break; + case 'bugReport': + form_submit('https://keys.lime-technology.com/feedback/bugreport',{description:$('#bugReport').val(), email:$('input#email').val()}, $('#bugReport_panel'), 1); + break; + case 'troubleshoot': + // @todo - update this to use a new troubleshoot endpoint + form_submit('https://keys.lime-technology.com/feedback/bugreport',{description:$('#troubleshoot').val()+'\n\n'+$('#troubleshoot_details').val(), email:$('input#email').val()}, $('#troubleshoot_panel'), 1); + break; + case 'otherComment': + form_submit('https://keys.lime-technology.com/feedback/comment',{description:$('#otherComment').val(), email:$('input#email').val()}, $('#otherComment_panel')); + break; + } + }); + + feedback_reset(); + $('#optFeatureRequest').click(); +}); + From 1cf264bdd6fb5434e8a72c2e2e05bbe4e648d35e Mon Sep 17 00:00:00 2001 From: bergware Date: Sat, 3 Feb 2024 18:39:38 +0100 Subject: [PATCH 02/40] Feedback form: enable/disable SUBMIT button automatically --- emhttp/plugins/dynamix/scripts/feedback | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/emhttp/plugins/dynamix/scripts/feedback b/emhttp/plugins/dynamix/scripts/feedback index e6cd0349e..da023a8da 100755 --- a/emhttp/plugins/dynamix/scripts/feedback +++ b/emhttp/plugins/dynamix/scripts/feedback @@ -226,12 +226,12 @@ $(function() { if ($('#submit-button').length == 0) $('button.confirm').before(''); $('input[name=mode]').click(function(){ - var label = $('input[name=mode]:checked').val(); - var required = (label == 'troubleshoot'); + var panel = $('input[name=mode]:checked').val(); + var required = (panel == 'troubleshoot'); var email = ""; var option = " ()"; - $('#submit-button').prop('disabled',$('#'+label)!=''); $('input#email').prop('placeholder',email+(required?'':option)).prop('required',required); + $('#submit-button').prop('disabled',validInput($('#'+panel+'_panel textarea').val(),panel) || !validEmail($('input#email'))); }); $('textarea').on('input change',function(){ From 92f325614c38085f0f65545bc200cd36b00ca8a7 Mon Sep 17 00:00:00 2001 From: bergware Date: Sat, 3 Feb 2024 18:44:14 +0100 Subject: [PATCH 03/40] Feedback form: enable/disable SUBMIT button automatically --- emhttp/plugins/dynamix/scripts/feedback | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/emhttp/plugins/dynamix/scripts/feedback b/emhttp/plugins/dynamix/scripts/feedback index da023a8da..d1a484303 100755 --- a/emhttp/plugins/dynamix/scripts/feedback +++ b/emhttp/plugins/dynamix/scripts/feedback @@ -139,7 +139,7 @@ var inpageurl = window.top.location.href; var md5 = {}; function validInput(input,panel) { - return input.md5() == md5[panel]; + return input.val().md5() == md5[panel]; } function validEmail(input) { @@ -231,17 +231,17 @@ $(function() { var email = ""; var option = " ()"; $('input#email').prop('placeholder',email+(required?'':option)).prop('required',required); - $('#submit-button').prop('disabled',validInput($('#'+panel+'_panel textarea').val(),panel) || !validEmail($('input#email'))); + $('#submit-button').prop('disabled',validInput($('#'+panel+'_panel textarea'),panel) || !validEmail($('input#email'))); }); $('textarea').on('input change',function(){ var panel = $(this).parent().prop('id').replace('_panel',''); - $('#submit-button').prop('disabled',validInput($(this).val(),panel) || !validEmail($('input#email'))); + $('#submit-button').prop('disabled',validInput($(this),panel) || !validEmail($('input#email'))); }); $('input#email').on('input change',function(){ var panel = $('input[name=mode]:checked').val(); - $('#submit-button').prop('disabled',validInput($('#'+panel+'_panel textarea').val(),panel) || !validEmail($(this))); + $('#submit-button').prop('disabled',validInput($('#'+panel+'_panel textarea'),panel) || !validEmail($(this))); }); $('#submit-button').click(function() { From 4cb1c76c5a2d4bfa2aa0017c902419d6e9ddd6a9 Mon Sep 17 00:00:00 2001 From: bergware Date: Sat, 3 Feb 2024 18:48:36 +0100 Subject: [PATCH 04/40] Feedback form: enable/disable SUBMIT button automatically --- emhttp/plugins/dynamix/scripts/feedback | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/emhttp/plugins/dynamix/scripts/feedback b/emhttp/plugins/dynamix/scripts/feedback index d1a484303..b4d031dcb 100755 --- a/emhttp/plugins/dynamix/scripts/feedback +++ b/emhttp/plugins/dynamix/scripts/feedback @@ -37,7 +37,6 @@ div.divide{text-align:center;box-sizing:border-box;-moz-box-sizing:border-box;-w div.allpanels{display:none;position:absolute;left:0;right:0;top:40px;bottom:0;overflow:auto} div#footer_panel{position:absolute;left:0;right:0;bottom:0;text-align:right} textarea.feedback{width:;height:530px;margin:0;resize:none} -textarea#troubleshoot_details{display:none} @media(max-width:960px){textarea.feedback{height:330px}} @media(max-height:768px){textarea.feedback{height:330px}} input#email{float:left;padding-left:8px} @@ -70,7 +69,6 @@ span.spacer{margin:0 4px}
-

: .

@@ -254,7 +252,7 @@ $(function() { break; case 'troubleshoot': // @todo - update this to use a new troubleshoot endpoint - form_submit('https://keys.lime-technology.com/feedback/bugreport',{description:$('#troubleshoot').val()+'\n\n'+$('#troubleshoot_details').val(), email:$('input#email').val()}, $('#troubleshoot_panel'), 1); + form_submit('https://keys.lime-technology.com/feedback/bugreport',{description:$('#troubleshoot').val(), email:$('input#email').val()}, $('#troubleshoot_panel'), 1); break; case 'otherComment': form_submit('https://keys.lime-technology.com/feedback/comment',{description:$('#otherComment').val(), email:$('input#email').val()}, $('#otherComment_panel')); From e6b6af68ed896b925a73c24c9a6b6204dd0f9f5e Mon Sep 17 00:00:00 2001 From: bergware Date: Sat, 3 Feb 2024 20:45:34 +0100 Subject: [PATCH 05/40] Feedback form: enable/disable SUBMIT button automatically --- emhttp/plugins/dynamix/scripts/feedback | 35 +++++++++++-------------- 1 file changed, 16 insertions(+), 19 deletions(-) diff --git a/emhttp/plugins/dynamix/scripts/feedback b/emhttp/plugins/dynamix/scripts/feedback index b4d031dcb..2b4c9ef26 100755 --- a/emhttp/plugins/dynamix/scripts/feedback +++ b/emhttp/plugins/dynamix/scripts/feedback @@ -39,7 +39,7 @@ div#footer_panel{position:absolute;left:0;right:0;bottom:0;text-align:right} textarea.feedback{width:;height:530px;margin:0;resize:none} @media(max-width:960px){textarea.feedback{height:330px}} @media(max-height:768px){textarea.feedback{height:330px}} -input#email{float:left;padding-left:8px} +input#email{float:left;padding-left:4px} p.note,label.note{font-size:1.1rem!important} p.success{text-align:center!important;margin-top:20px} span.spacer{margin:0 4px} @@ -58,7 +58,7 @@ span.spacer{margin:0 4px}
- +
@@ -74,14 +74,14 @@ span.spacer{margin:0 4px}
- +
@@ -136,17 +136,15 @@ var unraid_timestamp = ; var inpageurl = window.top.location.href; var md5 = {}; -function validInput(input,panel) { - return input.val().md5() == md5[panel]; -} - -function validEmail(input) { +function validInput(input) { var validRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; - return input.prop('required')===false || input.val().match(validRegex); + var panel = input.prop('id'); + var email = $('input#email'); + return input.val().md5() == md5[panel] || !(email.prop('required')===false || email.val().match(validRegex)); } function feedback_reset() { - $('#featureRequest').val(""); + $('#featureRequest').val("").prop('placeholder',"."); md5.featureRequest = $('#featureRequest').val().md5(); $('#bugReport').val(":\n\n\n\n:\n\n\n\n:\n\n\n\n:\n\n\n\n:\n"); @@ -155,7 +153,7 @@ function feedback_reset() { $('#troubleshoot').val(":\n\n\n\n:\n\n\n\n:\n\n\n\n:\n\n\n\n:\n"); md5.troubleshoot = $('#troubleshoot').val().md5(); - $('#otherComment').val(""); + $('#otherComment').val("").prop('placeholder',"."); md5.otherComment = $('#otherComment').val().md5(); } @@ -229,17 +227,16 @@ $(function() { var email = ""; var option = " ()"; $('input#email').prop('placeholder',email+(required?'':option)).prop('required',required); - $('#submit-button').prop('disabled',validInput($('#'+panel+'_panel textarea'),panel) || !validEmail($('input#email'))); + $('#submit-button').prop('disabled',validInput($('#'+panel+'_panel textarea'))); }); $('textarea').on('input change',function(){ - var panel = $(this).parent().prop('id').replace('_panel',''); - $('#submit-button').prop('disabled',validInput($(this),panel) || !validEmail($('input#email'))); + $('#submit-button').prop('disabled',validInput($(this))); }); $('input#email').on('input change',function(){ var panel = $('input[name=mode]:checked').val(); - $('#submit-button').prop('disabled',validInput($('#'+panel+'_panel textarea'),panel) || !validEmail($(this))); + $('#submit-button').prop('disabled',validInput($('#'+panel+'_panel textarea'))); }); $('#submit-button').click(function() { From a992d17c3d6e344d82df961a860b8bb4820fcadb Mon Sep 17 00:00:00 2001 From: bergware Date: Sat, 3 Feb 2024 20:50:30 +0100 Subject: [PATCH 06/40] Feedback form: enable/disable SUBMIT button automatically --- emhttp/plugins/dynamix/scripts/feedback | 1 + 1 file changed, 1 insertion(+) diff --git a/emhttp/plugins/dynamix/scripts/feedback b/emhttp/plugins/dynamix/scripts/feedback index 2b4c9ef26..63750c07f 100755 --- a/emhttp/plugins/dynamix/scripts/feedback +++ b/emhttp/plugins/dynamix/scripts/feedback @@ -34,6 +34,7 @@ $width = in_array($display['theme'], ['azure','gray']) ? '98.8%' : '100%'; div.spinner.fixed{z-index:100000} div#control_panel{position:absolute;left:0;right:0;top:0;padding-top:8px;line-height:24px;white-space:nowrap} div.divide{text-align:center;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box} +div.divide label{margin-right:30px} div.allpanels{display:none;position:absolute;left:0;right:0;top:40px;bottom:0;overflow:auto} div#footer_panel{position:absolute;left:0;right:0;bottom:0;text-align:right} textarea.feedback{width:;height:530px;margin:0;resize:none} From df3d1cb5fc5ae0520df305c74f8d5887e4feee05 Mon Sep 17 00:00:00 2001 From: bergware Date: Sat, 3 Feb 2024 21:05:23 +0100 Subject: [PATCH 07/40] Feedback form: enable/disable SUBMIT button automatically --- emhttp/plugins/dynamix/scripts/feedback | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/emhttp/plugins/dynamix/scripts/feedback b/emhttp/plugins/dynamix/scripts/feedback index 63750c07f..0525caa51 100755 --- a/emhttp/plugins/dynamix/scripts/feedback +++ b/emhttp/plugins/dynamix/scripts/feedback @@ -174,6 +174,7 @@ function form_submit(url, params, panel, diagnostics) { }); return; } + params.email = $('input#email').val(); params.timestamp = unraid_timestamp; params.osversion = unraid_osversion; params.keyfile = inkeyfile; @@ -243,17 +244,17 @@ $(function() { $('#submit-button').click(function() { switch ($('input[name=mode]:checked').val()) { case 'featureRequest': - form_submit('https://keys.lime-technology.com/feedback/featurerequest',{description:$('#featureRequest').val(), email:$('input#email').val()}, $('#featureRequest_panel')); + form_submit('https://keys.lime-technology.com/feedback/featurerequest',{description:$('#featureRequest').val()}, $('#featureRequest_panel')); break; case 'bugReport': - form_submit('https://keys.lime-technology.com/feedback/bugreport',{description:$('#bugReport').val(), email:$('input#email').val()}, $('#bugReport_panel'), 1); + form_submit('https://keys.lime-technology.com/feedback/bugreport',{description:$('#bugReport').val()}, $('#bugReport_panel'), 1); break; case 'troubleshoot': // @todo - update this to use a new troubleshoot endpoint - form_submit('https://keys.lime-technology.com/feedback/bugreport',{description:$('#troubleshoot').val(), email:$('input#email').val()}, $('#troubleshoot_panel'), 1); + form_submit('https://keys.lime-technology.com/feedback/bugreport',{description:$('#troubleshoot').val()}, $('#troubleshoot_panel'), 1); break; case 'otherComment': - form_submit('https://keys.lime-technology.com/feedback/comment',{description:$('#otherComment').val(), email:$('input#email').val()}, $('#otherComment_panel')); + form_submit('https://keys.lime-technology.com/feedback/comment',{description:$('#otherComment').val()}, $('#otherComment_panel')); break; } }); From 432c9a43f0c1333cb10b1284e9131fbca326047d Mon Sep 17 00:00:00 2001 From: bergware Date: Sat, 3 Feb 2024 21:58:34 +0100 Subject: [PATCH 08/40] Feedback form: updated images --- .../dynamix/images/feedback_bugreport.png | Bin 9768 -> 19527 bytes .../dynamix/images/feedback_comment.png | Bin 14734 -> 0 bytes .../images/feedback_featurerequest.png | Bin 7411 -> 17434 bytes .../dynamix/images/feedback_othercomment.png | Bin 0 -> 12799 bytes .../dynamix/images/feedback_troubleshoot.png | Bin 0 -> 12415 bytes emhttp/plugins/dynamix/scripts/feedback | 11 +++-------- 6 files changed, 3 insertions(+), 8 deletions(-) delete mode 100644 emhttp/plugins/dynamix/images/feedback_comment.png create mode 100644 emhttp/plugins/dynamix/images/feedback_othercomment.png create mode 100644 emhttp/plugins/dynamix/images/feedback_troubleshoot.png diff --git a/emhttp/plugins/dynamix/images/feedback_bugreport.png b/emhttp/plugins/dynamix/images/feedback_bugreport.png index f2e1aad0e7d8a300ce75923291117d36cbbcbc17..db645c4152076b782c9f70f9a2d3d013fc6ece26 100644 GIT binary patch literal 19527 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%0DKj)tV+6 zBcEUqzyO0&p^o~uywB_-^Nc`XAAjPq@p$!Bb0kxaRkJ>JjuTl27C`2Yl$!j(i09&a z9cF(IwEkO&4?YK%aCemdob-YOpufL=8rpv=BoKBu;5b?YAOBauw+OVUZ%LRSoGQ8auWfR>G!BBReP+eT!x=plkAr_=@D*s} zbD!GJOSB77eY~18n+Ae|QY)PJ@{#fj`NfbLF!}#Ub=|qrRR+SNQVy}4o;pt zSr{7|W2Nlt^H7+5eShYnj)Zd|f+C190;*Fk19S10jZ-$j2hC%dSR$1Vr^N;|smd_y z(@tm}He{CO@g)8mvy41tII@^Wz>#OxBw(iC6{ZUYtW_PMehZN22t4CP1q&y+uh;Tk z9P(I(ZNvhrZpmaV3ie_iGGnvPew?oP+-Dmwk~&@$Mz+bikQq8zDf@0~tm^;thvOyA zvQGJdsb`|m(b4IVk&)8z5(HxeGujRfnm*tp;hKxoVzpdH}U{&p??K~#1ynt;G;7IeS z?cCS6BG&u}{P-c4MT^4&{MY^>F9x5)ycm3zVLtPCOde<+>%%Umw7iye@N(Vf92W`N zKT~J~{7f8QFI;hImjDzG6&k~H^?HwHB{S(@_9ZM2=fss=AnLMuqn(}z%Tu(G9N!58!FWKIjcEV zx6;%u0VsU)Wa-FMt#!N}V)(WvKJRj{HS$v#u>>@MB2&nS7(iui#B7%3dH#v7)pD#( z8HYS1K5axs@>&%f1u?1*#{`uhY9z3Fvk0efM$51)%{_%t%h4h%UK_Q6UG|v*tpAZ> zP)$uJ%64&#Dzr_lFS>TQ<{RsUL(E?d_@*fp99_&x@M+<2s_GBlda`sJwYBA&!R-2iu4lWQsBp`3eB`V}|SX$Wz7v zd>-@iIL}xJlcyk{48i3|S_o4XHM4$A5zr{J+{AOEmT6fVTBr8U^hL9AEyuyOP5iMW zu-a!FQ}AN&dHa_!j-%3SwMzgn z8{kR@m5NEFo=iYm1Ya}A&M1#NND4Ia4Kw-Lky#a_1~ciBvPOH$>Wdgoit{K0al6_S z^SIAukfHT!JCT+%A4$Pl20od_iai4;CvYUMU(oGn{B(pz1dugP=ejW>q~s!7mA zElh^1G?G_5!Z~wjcEBT$0e=Dhd${V!v5F_-b7-)cHhbM?*M(W)cGmbvkh;DE3f3)#}O z+Kokl&^!td+r+Vc8W!hyuY&jfLnkej(5v4+QF`!iPLvt_QwR{DtUR?-0N7zSZ-wi( zb*4Au5>BUOArwRurXObjaqyh#ErQQH9)Ujw1Os9WKKJ<=)x&d1xos*Xw@xKw?}96( zhJ%4vdcS~o99bXBvK}&B1tQ90z0}Am)NPK-D(D2i>z@P|=1S8pw+fi4$xI)yN3b6) zCgjekqgL!19BL5AW9CCxna%tDteOvf&^j@XH?ag$ zKi^ITW7Xi~-J=V8j#pb;&>2T+3$;@KNMVO<^=1>!+I9KldYDQmFj&KIoF~Bnn$^X1 z{0IQj;+L|Jn9t(|e8;^2|F@2%05$IG^S zui(lBiBJZT=Ciml_;DPd!bI?Ktilb>vmbh|fMbRBQ}Y8SBel@2KQvX@dtk15_hcjB zvU}S;7vFXPm}~~laH+ZB+BLb&Y1ihjhkz%1UY@sFsU4=Ef=@nxIq{+q|1zJqk-0xo zcjfnn(^3YrsO?!)z}u|+wtpRrynW7*>pOhuf+o^OD+stU)?R8ew``{lr#lY|Kwvtv z7F<9iByrgYd}2cZrJFfe^5kC~HXoDjK$}?z4cq5u?Hg$C$+9EYbhISP7d==H(jxdO z5ZEE1EUJrc6d{kN==Y)hO)C-3HLa=7@1Okfp{oBQl;#Sc(U>+6F=!|8F}Nes4gc^{ z^Yte&t*M0YaREQZ53Z6YWP}E7D5&fKw=^n_n5Gtj6+zohR9%?>r_(4&$&J_vjpHlH zyg+2nOj2gx67(eMVl=J*pdkiovy^}PaGMjIYY z0#35Zn6yvGo`MjtJkPO>Scq8{&+}8}sXK3NatNt}AN zyMHT2Z5M!T2@CPI96VfW9Y0j4KV9;zg6(j?@OS#;4hpG{Holj(&M*i&NGcFWoF+B2 zuwk6~QT&M+N#bt~AFWz4PY_rchydsmlgB6<*Jp0xC?>I7Ec)nJAhaL&S4aMQ19jId z#2377sm++!7m_~7%es&jfo6R;9j}Hif{#3(UqXlWbK!@)Ib5h8I#g{PgH=1YDa9YG zX)m>101h|8V6|gUV)xK@j?FzjRc(zn_~4rhL+)bALuakb0W(lY{dB}66Ez#~85iXE zTp3Au9f1`Qv-pT0Im=%fqlsmG6ev^52$%uKw4s`bJR=lK^|2hUo?c@UB9)6?}}JmBgegurqT{6MS7UoyqelBUuh(=>CAz1jmT=rJGV zSPs4tP~Zb$v?d&sUQYm641ePKVgXwYKFz!W6JMtZonc;7hcXITr$=M#GVK?CB$|c# z5`oTGRMSzJx)l^+yLzV&`38I(Q}Y47g)Q9U1bB0Jf3f*g#&I4WDc9Pr{iHJ@0Hjh7 z^5@Tn{`~3L{fFl3Lsj4QZAibk83cu%{&o&|PIfK_fv|9CmiH6+7R}XZ^Bep%oY&%@ z*cFtK#|JC<1To8#`HRcDQGLi(@Yx2FKCVtwbl;SVgEpE1*1@`1Cx1??j6yi0q-Gzf zhO&G->eVUJN8ZL^pIHS3n_yEIw0;UO1U`W2rvljU{nfzspDxtEn;AY^IaKj=`S*;_ z8500f#<6MM4*YDYICQjFKj>RPOI<+*T7WPLy&=Q&<{jWwR^vZi0D<5e#kX|UWetug z0J?}o5Moep;X8A_K8(r8T(vK{o|Z&GKw=(F;hN}L94I&_!^8r5jKsKuOzL%gd3O%_ z&(4ALF>}VGn6$>Z3bF*+rnZa2Y9@{X2wxZKS3d3K^dlkCcRZqBtMcIr}bpkQ)V7fUCB(#0U` zt@1F>hXx&}yZR0RnO_5U>i}kBDv*D+HQTO-9sQS3on#|J&n7@bi8AgxJyrIH^6!wU_>ImxYq z*#v~ZvG{3sGLAxE>8&~gf|(zf1M-uvQu9&q3zMO20ONZx*W2oaazoyif7aWOZJDNm zpa5t(6?`T$wF@Btrj1nC#!xpY-;Z{h+QFogq5o z0s!zE8&Lc)7fS(mN33rFUuk1Uu$7X7W|75J5u61@F z-`z!LU`;OUKJ@J#Hll!jd$>tyd`IP6_Twx>csKc=a zA;&Ni8#0&R5@`DRRS*KEF6^`1qJIbHd8|+{Pp@CH2Ar=izyi=3bRw|iFMjg^t)E4- zSadCtnLW@AiMGXG3TL~W(0axjeD+j@E;9QBUK4{`*A)k5-vjs#z^??3KQ!MM{^-v} zACN>cwY|4zu&bwM{{h_#BJ|k!_*1y}jM5nwfY-h5bz2+F=D!Pk|0aKa?)#NmZDF+7 zsBY`bWIL0Id=lv_%I+9dSSf|z-)rSn8rts)G1GYvuSjGs6UW85jrjPLF>Lbl}6MV_T z3yu_;qhCHS`S?V=Ii3vs;~kwHZ%(DtnM*FY- z^J5|5G4m-PF`!HYjjMZQol1!0xiU>n!`)S)sVkS z>?PITd&#sU2)^&hp+aNm?}w)M-al6zM^VbqFyf!}*=+W8*oHUWc;h{L_wMDa@{G_K z6@ZzUnGaX1)qhi~)zXzp<%v>Br#?ivdZgSexItLLtRT^yO7^B%;Y|f%#e=kN6)+ z1tJ0;8!czFA9;vN*i}B_&B|;q4Xw|@!l%Vc!0fj?d2+UP=tn2!_uesH;#0n5OkpvL z49n?sIu!)LIvigJ#c+p*hhNZ39VZ-0(D)sN@=jY#FE|)hqn@zq*`Z)Ia zsM91m@f4WZJXEaP$uO*DT*vB6CHr6rbaucWdeWa`1&|@!0wIcnyI3m~X#Hz|VIqJk zDm(zi+RO|tvX&8V6TEB^mYU!Ze3VtQuLyHT|1Sa^SH{1(z=LEV0OYeAHljq!OJH_K zt@k3FJ5fpd|1GXA`BdI_{U@?!}QxK6yfr#@M#FaSX#z8h^e!_kc zd~A6_uhlwnEwXUouC856!36d(irpcrsm+`Nt=#hyT;VV?R4m zsS*4qGXTF5hD5bR^N+j|6k(vVvvVEa^Y?u}3xNn>6~2~CCMS*@IbyogCThC?U;x3Y zRsH1cb%{h`5>o#&xPbkP0g%Vv!CQQP9pKL9g_ivHxiCyG!0;p3zG5X6q5njv_I zyX&DG)kcc++St4!xjdhM zP0u%QMfd2pn_-$za z&v0rI;6HPK!@Dc6&e%H&GtaN7=HU{WBXi}cVk0Od9asY|k6V7r)uW9z{r zyEtzn;R*$lLP85LHw)v8hI&`IlFKClc0$WIFzqnOW(tR-{vDcb=JPBEVSu0K&%>9R zwhR|qlMjuQp4f9@ZvWpOD~yabTb$(_f(+8dJ%Xm5Q;Ydk6K?ni@lpy(atZqQO6NB{#x7XqPyBKDC3pc2r00tLmI&3a#G<#y;2*c^dNdVjt?nOgP*G0k{yef{Wn>F2#QNvdb7MF2K!+LQqBy^!Qi3?PA^hBrC>8Uvyad`2_)97JWEg{hx~=dZyU@Ecv>zPU>I z&XK~r+p-qmGpd-@wVI(72BE_k0bU>y1`0uB3DiaK8FE;OI-;@J5hx}q@88%d*?dkH zY-lYAwhQ11w#DZc;Wt{Liz$lLn5l-vVFEu>J9f|U!lBPSF@AX8Y-OY_!4x9TqX3^8 zkHAkqq`~0##ZrhsFpD_gwGf0fhH?PG^G`47|#hh7i1i(;E!p zkM{1}`<$OFdjZ7oY^!Zq7a^)%*9yWO9P{^dvoP*G@7vkC=7QdI|Jn|(yDQ~n(w>!Y z;Vbx&3Xfllqp`q+2ufvUrWE|_o)bk_U;B#P>$82mdB}}z9vT4%O?ZbUKL&;bOVgOI z`IWI^WA5Nob@EG3&5k#uL7&c8rR-Yv3}y_&eh_e4dl>1(3i&BCFfgzto6UX*eDjh1 z^1y)uoHDnC+A07s?cTkc5q;&ZyYBjh7!wmFOo?W_wE@=P0t{diD(yx#e^L$V&F41l zjyJ98=)Pc8wr5>OqH9&g%XcL0bjq`nNzZX%C+z7$dG2%HKlT`(PyY2cY`SE1SFRJ` zcu;Tp%}Ud66zV}0!A5app)vpDRC)Hcu>t_s2U;k^H0xDJR1pHj`TY~VAMimADE==_ zS6y|Lh1jWk|Ni~ar}x@NXG8$nNFFqVzoxkz!mtURVGZ^vY^juGC9<}-DaY~>wv~kH zC)Z{Yss0RR>#i-uMx*kbks=vv-#nP_$sxNAlQLClHbyFqW)S){{HfIuhm?J3RrxxT zSO8vyfUj$FmU6`N+^Kp!`tgAkq>C@U*n$A8h{8MEGHFNWCxTr=?Qe06|v1VOID zgqL^+0Oe>k(ny$a=wqLJz?i1K3@x8U9dkht7EzGXIp)8V;O?xX|JMZI6asJ_QVzji z8a|rfdq}|D3IS{rd2v*of;Q7i(3<#2^zjXpt9zbPZZ!CX!1HvT&eM51Pv_}8ou~73 qp3c*GI#1{6Je{ZWbe_&x68XP&rCfB_pP?)O0000Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>DCA~>RK~#8N?R^Wd z9A|mu>6z}H_w&wuNV?LMWXlG>gasHIW4yQu9IzoaBw!#LNEX;)Q^cFy)Yj%F#;-p7W2ikStq)3cebF zepS~z?o4;jfBtj6^L_u{Eu3v<+u3#oHS6T#FMWIX;oCybUxsBxk%&*=)vx~7XLR5E zQUm+IU*8ixec(QL-U1@d8pg*HNTo7pH4+#bxdd;&{*z~H|NPPcd)F6l4H4-hUr57s zU3~AkzeGF^*wHqU2^*PA4&APccH2QLR>1FE`^7V|kA9(nz4sgcIjo0=2vQTZS`9&` zg<7+Q&08iBT74`pFQRJAVPbp~3CBjS6CjaDz>OzRX*97`uHx#gzkwUC`uAsCKmEc1 z`@rAc5uR8)gr;ACm}w`gh(sa?BNlqS9vY1rMn+3Ge*8F&9zBe07o3kwDh}7--@88g z{VpPQ)NG+;!CNk)lsg9(Y`X?;*!geHnEv{O0rvi{|EI9xEy7NBVZ}YvycJX%D<~Ew zP%f9zLx^l9k02l`Q%TIu&cU{AMBN?`^1WD(;P%n&dEBVhZVZl_1fq+muk;WNMzLe! zO1$$mA3G!Z?2HHY(_gV>S5U2X5ViYgcTOPelXYPllbbHV!s-I%%RfLW z@58p@h#-b^(k1vEbUHp9$04&VbjVt@Xw))H&v6itzGQNrY;PcGWigfCi5o8e=ur3F z84c_gzIJQq=5qwJhjMj}=BI#4wN4P9q#J5seB?sZDjlSX7AnmJc)dDfs6$C^BVzTC zN#_`QTV`LKPRBgDuFb&^8X#k_7z*h;nyog0k0BQ4--0eWbqk691h$M_gx6j1yF=NB zXC$x>?!Gsy)EAH|C1ATzN@j>>_8-9LM1cUGK+E%x$rTXv*5FtZXmt0X5zG>pQOa!w z&GsVmRUZjAgBWA0Knz36NV6Sv`5NeUdUVH>bw0YW44hb!=8FRYK2l^lIyQnvADc=S z+5@EVO4R#(eN#EVF$vouX>nB06mHcwuH=@Taq zOSTCRO;N~E93k7n1|?P_IzqSX^Ra`#Zy{=hjI%DCG0hX-&7`t?jG|adQqlu-ydL6q zh65?XeMJ#XMvxkh3x zaZ4yLM@thZW{T+hU2H6k;i;#8$Q*PO*=!Cc=Juf#RN;3!I6m_{!K$LsEHj=Gpjg33 zYqPb6daI6Fy-Bv$33Qh(IWtIYXre3v>UZ0ywdka+E{@I5A`*)ro^~k3b;ja0QmGW< zc^+O%GGN0Y_^X`*xbJU%Z)m_hBY^$%S8fdx={Q|1!693mFo|p|YvSKH<#5OLSD+JE z*mv+@bb2*Y7PM?1D`ali$x}K5GIIsK&(sE#Sh-x#5HUXcosc`4T8G}FIYs>@!++)900`E?V=T3zysg;)1d%&=z+cKYkv|Z z(=KH(iII_UOiiAHxSK||-NEYoJYM~(*W>u~Aw2xZ*AS1VnA*G;)AM@?>OSNPo3LSY zC(;=@VXUG@>2@L`jG#9BphkDh)F$GPp^UvUP)c|DbjMLpf*m^RJ|&+6gXxjjD$pl#zc#!7&pC>2#V5CBuWdiMLjS#w+klEjpwebap3jscH=04sTgCn(dnkF!Sg0N`o!cebjvYTl_q$@gyR^89M!k)Z;)G$lK(TF? zAaqf$R}C1^Xp}iCCARMwX&=pRWsaLO)h3ttI!=`7Po4uHj!Y(tY=&{0DUoW)He+(s zW+;vLjJX23jgV=R<63m+ltC)MgWvn$X^pi*3vAD7quf|Vy=D9pXB!vz?>oE3?j*XZZp*V9W z+Ap35opx^xYyMF@^miXSZQu?iu=juSj<7|kYxf$At#KoN<@zcPAA1%f<5^5@AIH%d z0@|L(rI)@OW1|~Q++AH=B@;tjaN)URs)Z+h_$Vd1VOXYOgsMwoqU$=0wM8W28QNg7 zup6SX#{9MBnV6~Asn3apwJKGB#z_OjrhIQ0KL;&X!F*I2v)$s{3d) z>*)79WU?t_(|P!wW_bcSaT1Q8Y4Y7xiqs?6fhG|0m>4||Q=4DRSZl)#!;7Lly==tONCKXw?;KewN;a~{t;vlqvX95#i7#l=M&Jp44) zYKx3(JrqiLlNK$nma$f;Bby&J3|0*|pCdyhnUrIf>}$1J1ebBtr7I@KQke)@mp~?6 zAeb@6;u*33f{NZVl5c-oi#=FV`QDT~g`Cu>&cmatl0q$HCCmcZ_yG*&<^Pq*yX zP#no4m5!6Sb4+iV7#m|s6eSazJvh+>Wwp+~m5o$uS}w($SOceCZxV1ajILYmJ4z?q z_I(~FPqyL~gp*GEUy2w}+qPn(*ja# zzfod3bplEIJoLN`Xf&5`-Z__X{AeDwhRKPY?4>%!3Og~H_;vHST73;acw#pKYrmP( zZ8qCjSXeas_R0GB`9(^8lE?1Tyfw`^uXh_NU@MI^GO1zGjdFDj6&fecBkRb-93AKQ z_&Bmz=9Wy1EyvtL3lBc|XX_qkhenFO^vzF)73QtW!N#yW1+ zq%1Xp-fFi@M>lDFnsmFK$2duIHCAE{N=GcFDjtrMMi8|kh|>+PQqDWwfctUyH^-zg zdachF3Pm$NJDR%%PJ!|r zH+5&t{M71YI(WuYDvspd?`U~Vk8V1JuGK^WBlyx?kFTp74-sSguw-C7&j93*ff=SS zT8pIDs_sbEw2DD_>7c}yrDQj-XYU@&&CMB5yFrIJX&F_rv_}9XyDBFt7gkKx_f>@G z1ROrxqHYz1>^V4e~^Y<_S?kHOr#-r#NcX0}}`( z{_%vIt=y(2zC-g_#Wgj7DubjVy-m5b*`bYU&AcyAdwt)eFp_J24c%@ZOG}dHE*9d>JGYOOe}Ah80mM=AzS^nrp*+W`(&F% zvl2x#m4?Ik9AOOBbXt+AO~i7{QkFQ`=rDb?cl6jXkMUJ~O)x^b#Txm-n;s`1Q`-AI>wnx?*4m>wf*B?>ApDnz($2%8Ggu6aoM zA#(A;$zQsDZ76_!)9c=8Y2<4vO>0xcHcf`B?6+yt7LItA?==k5WKsr;yVdKF|I1Q+ zU(D42>2^Dm;Hudg&5DVuDotjx%q?lCwALx?1%|yorCIZ-GS*9K+s24`Z?ZDAi%s95b1UQ;wNKbHM4G29pR19|6xt zpiM2sJFP%rX8}D4j`yn#abClYCx4 z)jNuM=LnwI_rFnY97ij zPynluttRKG;)9A1Ic{Q5wIY^A*?}p7kuYos`;^=cztvH$%7I`|l88;#HJu1$n9@hU#T0d{O|Z>AD6{5r4H}v#!5?&T zpYOMf+$&dASy0n_Z8BDKwyH=~YZb=&KB}!_1ap}&mJT|xjndo1+G>@b_pn^uXTpPW zX>*KNg6FGsQ6_QYF;&&lf^vcmU`KbD_jF%j@6hRKw%<@oE z6$T{PrP3HxAi&DXaU40e7xfzRUB6-GYsc~zm`zQCO7UI;Q=uYa5!@bAwpPHwl%#?r z&F9v$4F#~8)EuTZ5~xg5?i&Y1J$u&y1pNeCyXQtPz{!5v&p|(222?+ zudTucnO_^MtdLxaSsFlb8X+;(xa7(*>J6%cH4EFRBSl$HxD!Y^n~;f5qL`nA&Etxp z+PCss4VDPs>kwcqvC+ANeV0n4rI72}h630gbInA8BcA!{(%fN;71GGlcm!lzqq>Ib zD&yT6%}h6od}0zwJ4;6P*|7lvemBrS;G>EZ0pqY%S7?E^n{<%LCuz+B_}x15*B;VY z##)&xGB-jAZdQB_1jcfL6LwQ(UojdrpLy|O<7vKMLZjBlk?FliWO}GGb2&JD5FM9p zn)2OetnGH%h}m(t5i-=yA?=jV@uKis7P2nSJIJ2=rR&#*0$4TQ`;i=**vSsoOi98W zrV_Juuso5G10zJy~ zy6n&xzhgsdhY4aV#nfeR-K#M=bkCAYfuQFW!KPRnAT$Vc4!VR=X3XaxfVT zMiw>^u!DGM8`fx(p;7G9 z0yJIrC?k`I6;aHcgOS`0WKt!jDGpNEK@mWk=}ZE1%ApFN7y<3HRj!OM778c=7mYEc zqI;z~RxFlFj#!#NXq)^wpUImQ5rgk1FgrhECMe{ZZKh=r%_?zo2(-h2=kUCBzB+%K z@mUNu=g)y<23MFn`777A4F|C7SOKD(RVj~|DUkflQ z0L_{lcq%T}PT+W!2|kzUlM2W%iQxiO145=szey79Mt_Nc9RT{H(Jp5ypfz<@$W9@h z8XHRiIGEif8+TY;$>1aa%tX2#rlQcN&AUR5bs^WlTvgOYq z5@qUQXUGdO*B(bUGiolJYWee~^R)D3Vq(HLT*W#K2$k`gjGF><5WiCY?Q7U4nbxtCiogCUOO;g%2m4#4OmPuo9}xq z8nqga&Dcw)tO204R8}&oI_vrTEk2g z5!m5kkvdjQK&vUeDzS4I`9JXzj3!mF$3-+obGi6I*owvw0+_rWinW%k|3f$}9R!o(O^l6rKrCut|_c>7b z(!|~#_p2(EnOX8&yzb)De;dA`0(Q&9Ryt7j3FDOFn64^U$0_xYJZj~lSTk4+sJQ2w z6hyICu`$MYtfea2w34D@27zy4aVn#jU7#$->4eGBx<_UuDBXOIxvq{Q?)RtwN_#X| zPQ_YH;~8|tRHie=Rr7PI1KZ4x&CN)_G%8A;&^tW^iGSFJ3fMRP%5Pe_DqI~Ij}KB1 zExJAxTeTuWF?WzwoUF&jbsbM1x`BxA)7&r@mdP0~SuU7yn#?x~(iszF!nBxN;7CSQ zp;FPp_f(#gc^Z@*O~FLR>MM3?B0&q(6b=R$a~PQwlT2}$ilz8DnldYo>n^+bw6j%h zsDM>dJ{n_uD;A49yFtxYjFdzwwu+eoM~`x*YBEv@rXFcZc!KGP(jS2!XT5pLCZy5{ zRH|!OSXeOoQ0Y;}P%%VKSPboGGJ%q+{SHi$XJ&)6Zxtn^AX+G=S)susea>u><7}ot zv^DLgOFM?6y&%Bee*5j=)YMdX{q@&}ci(;Y&s2VS^RIlsa;#n=P?|=XMceSXd`Y18H+JD#yGY#_y$8FW`nO5-=vSYE1-m34GE zFqUTeSX^F1p=9CwOU4k-QbOa5(MdXF-MA#nRLaON(=0n~)InFGQyXZ^s17zk?+kKW z*GVCp%A0DKDo~Ps<*_L{!`Pa~wU_?h(15D8ZYT5M4}Um(>Zzwp2~ScgnbhXe2&vT9 zWNeI(HQRP<#^$Z#IPlyavNHj%Kf}C{(h_Fz-AA6r^M_8DE9kNIa5UsO^lx^g6N_zNpRF< zW=e*N{i-@?#z|KMWYUgVkL;7O%{p$n=^f@gK6m#$ zq0$Onou-PJ`4-By?Clt%~6I`iB_+r-52u{1%mFf-G@+-wuk zL=&Tv9`a)))T(VVO{T1cSfbC^$e6q4Gd~?6ivu%RuZf3K?phaA>6UsLD1jd{@m_15 z+KmPsv`vs>@LCOHsNQnfZ9@mD+EAXmP*2XAhv~RIqU>i!GZ+OtHScMsPb8 z>irng&IK~b#oVy~$B)&JqVyIgUF1g+sJB7M)0Ew0Tm=rMJ(@J=GE6Y`7BhJR zXs?yR8(uj)M(HQDp**=;{^*axKl{js|K7R%w=drwKDl>4_C56+mS(HiKE4C(iia@X zLVd|byWWD|n??{>#knupj?1ro5z-TM$_=eNtiz32d}PkrrSqj((tEl=SJ=%kHDFGx zb<31iP3t9S#GFWyontfJwi&l+*6cjqblLwqX@39x_lF+SA~$N2(GI%I!F&8i!%cJ7 zqY`Kh6+8N5IaH6Qo~xZIm1OBC+urwjbDp2N z`$ORu?!6m@*eH_y5}YuN*+!eDW&zFG8a9qyfH}J2rw%@fi(fl|>u$OVwY5W(>2da8 z0-@ETY`08`qyJOK_n7~>8B=kHL_@fmbl|^8=pycDvOdf2I`A4%l;bqQN{OksouOcgM5^Ab%V+RU*n8ZwnLwG@Z#6nNKN_r{;8&*ei-J{^P#wi|A^ z;UC?{&;tA8?Gu0T$#BQ$M$8^RhR;0oMI@XA&fheJXO~W(JwIM9larp3IY}&MGumFJWUek&fU;GlLT9j;prfQd(VzyqZrv0loy!i#~ z;|CvnF#JhC|J)9G=bd+k?|=Ubx6JarzxD3$^I!ck-uvG7VzMv-YAF`y=JA~$Jcd$X z)Krfu)kXZ5JN^{gwr{{a_uPxGKJX2kf8BWmB1IPU*x_1`8pY~D4a;+7G}hXf+BJ&p zQ(Mqw;LT@qC@@}+jchToRM*GGnu9rEIb+q01)iP@T*c%@V{p-zp39V-ny}YGH|5+X zX6CT8v}9IgsBPJ@1@C#!`(AKD{oD?4+ikZob!p;dFMAo@_{N`2ZXWo;y`k0$x0!a# zuoLE27RbOn4NHh!S6_kf@Dl#~zkVErbGPC@{{AiapI?6nnQar;zF`s{{G&g_hKVV2 z>Er7134HAKTk)1(zX6~8_$Tn^AH5x~{u6!K}~YE`qGF|fF<7DhIV`&rD{Ie@@=7v)Vv?4DCg#jFgt5V0YqXiNBY%e`CUi5gYp=bQ@tv-l(krk9 zpuiPt1>|r1^WR<<5PwoTZ3q5o+q;VAhWD;Lj~n0jR&0r+aqnM#9_g_$T>tuC<$#Hy z6(v|z57ly=9cr=D=S{vkxoIoSO&yOv`Yoz<4<5rGF)>YZ2bp-1z>XrF7qbSp^z)cT zO-^pcm9M|0i9bW731QvoJWwFyWK&bR#9O+(v%r~Sn4`0S^`=bn0&M#iEP2l(6X zJdC6J4?t@Wc4o%#OskBsSM0#m6PvNqPhz%K#zm)gcc1t^&fEDSy!Of~ zQ6vjNDLv;;-j8eT0+#Rk@2DR+jOSw=JkqY?NlI!xk;T>x2`tD6>4wscI(m$WHi1kf z^LPVUec^dqF*Y$yS%2G4^;^%~F~xXa#Yg|cM@$TTX3s%PPwRF+eO!I@)wt>H?>r*_ zUYC>n%2&P;?%lhW4zhunnHh5f>B}#_93T0}M}Df~|J_YDhpS)t8ur8%aBwn->XvO- z3v)=a0Q=*|MV&g;+?|aYB-<^N?fiH%SJo1Q<Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>DIU`9#K~#8N?R^KF zU1gp2b9=9I@AOP&CT%9kBqTs+p(O%>EM*lHSXmdu^>bBJL@daL1w|HI6&0n3AP}S% zAqhmJ1TY~Xy-rD{mpgOk_Fm5S{NI}>`qS_GRwk7Fc=J2C_nv$1DevnTcW-A)JpBgH(a9y zofgdq{C^Ls?%?ZtzCC#RE!x(t>o7L9A8l<-c%A+V{~rhLd+LII^t~@? zYga#up6>lH>H(|GfQDKPM;~(n>T72pSldERn-8PWjhVALV6eFXvkfTo$J|~5a5Nl+ z)9HlK!hkGSXPD%AJ(BS(oE{%S1B3YH*T0OHURZ@wPC6cM?%Ix7GuvqhvvJE$?)x7D z@Vj~;k3ROG7VCW#U3>Ro?eo7wmCpu`+kuYxb1}1}8Nq-b4T~>Fd&gXrG|N2OoK}Wj zr$?!>3z!bR77JyVO@i*9E~->6!Js$rmH6_jLaq#}S&u#2UdLxIzX%58aPGP1qD zR21Xmub3G{$Jzu*VpsVHhgILnfUkXe(=5o_#Hp#$L{%#cGu7U z6GknEGfrEMNTz@}?TazL;{^BvGf>ko8($w-{3Po%+K8Up5?Q{=CuKFITxFfXLbn$yko86UX5~G&{f?iJjCGKl z&Br&czUF-i@L_Ma-Lyix^xTEo>5HJ9c_g%}KD|hL;*M`?J)Il0Olpi66}V_x`QW>Z zR?>1@N@f1frL5&E?@I-(TrP5pl3HY)YVt$Xa^k}sxFqvzM z1p!_5$IwkfDHe-7h7oqV8+NklbSe+K!=?6<%VyO!R+|y|LY(gz=4oYSrUo7vsYDt- z{_(B&!7V>VO-&vC?ce?lU%29H?@53U>q$NG%m2_;{^WWbanu~tOs_@R;K8ypK7%=n zPA9w7qs$JsARH%*VhEKKM1kk({cL%@&IUklvZhZ6lx=5~C!y z;ditG@z^qRxLS}vK1YAe8n~E{%b1u(J*Wvbp}uY!OvYNI(+Tdk0I$o10u4gPI8iLn zpvp$rtRz~=B)!)JtHr@H(IJz`;@WFh;MQAzO7A@v4?XnMdk);gc0y0xeXaKN;}5`s zF$Aa0z=GpW$2k{%9y((kK`^3_Ex_euuPLu&2xW-WQ<_wocp(?@RCz~0$!WRdkT1uO z$we8`lPDB&@H?x?c@kVwBv~56sabhwnQXaKPD3kHsr^c*E|rQ%XCp{w!YGuY+;I-E zm=!KZ4Seny1h$#LQyQBYrp+Z~M7fNC-fidE=#ejG32Fu&mxsSEptG|R%T79p`^e$8 z+it;Sm%n$s_pqJFIZM1+wa1L3mQF)U+cGRZ_=eQFe3U7 z;Y(k<3f^D~a%l|~=C(qSp&YF*1CYs&QcWCm0Anp-PNKJ%PxXVKVq&F?r#lS4AQbgfoxBtj$A}Z#D)(FQB1j zAw2e@F`3-T^N7P|Ujmn{g?ZG6qOk`DhPshUHeyEW@$fhsc^ru*29hl&&x?7S5yNEW zx}qM1v>zTHyHJzar=+)$qT>qt^z#e2Y=$;YqaN|xDywB`~t+X z2jFb_Bu+YUIdo<(B_r9W*{X082CK*k%=FN_(xKv^;%!F7kg|xU`VlE?K)`tvLwY+h zg-#?=Tj@DNFjLjz%{&L~vzF3xH6AxaqoUE6oy_2q zj5`*dt&_$vigLjTkKc>I!ELzo(o6CCwR>>gitpf>71zIO;2uh9Q`V-}rB@iWEEXI& z6V1&hV&3AjVX%4VfkuW~i!!B3y`e;4Nrp5dUv*rU;s5jml~=>a6noj3WAHd;GHfrz zXzV%c9{d(U(bt({N9jE#)O*h)OAaEPi*ff8uvjf{SZBj!Z-dR@Kq525{afI3&4bNZ zAZSf+JDZV6kHO)nLtR}nqN(4b-oKQRCXeCh6NneyK%MVs%xXLrv2Y4I_PtE-VsKez z&}dA^YrTAxvZhZlbR7ww!Bk?Jh@v_;4IjJULK;vQ-@o}*ELbpW#n{;7b*f|D;Wnkf zu6yZb?S*F_$C9Itfxp&+1xH;5gQJ=jEqIzGZK^OUyj6$};p7Su8(oo}nq#hW@O>G{ z!Y-t;!>}8g6tIcRc1&b`L(RJjZc8g1rgqwemH9J8Fl!jjO$@%`pcXWE-6eqv0MNx5SWL4P7yVL|kJe3B&D}PWh8SG`$&ia{$%;2700& zy@M|^XOF{Sx4~?vN2y>(p*+I$QRH!*1USe2rzw|oB!nKEamLALnqGrDZ~qNWKW+Jn zp8W^jad4%pr>s5o@WW`IIfpK1#YDtJ_UTjksVKVU;E}Y0!AZ%NgV1V7GyGa9GW3e^ zrcwhi=`HZM+vzn2&=tL|tV6|4k>9WJf?X4C&lfW>+$iwZPhLUMFj3p8#8e4sB3xbZ5u&MJ~_}zvt zGZoy6WygG;IW~jMyB{Po9z#)^ARq8RGbZ_Y66vI#fcs%}`6B z6W|LN(AE7MHtx9ri`xGcHGwLu+xAUN#(JT*Mv#d+kuQ{a{#kl(1{2`~qlFE2%D4ih z*1Y+PuzAaC*tL5fmMmHDj)FU7z&`!Rby_~1LVMdRoPG9LXqkB&J%L{^v>qZ#QlOU% zDoy#STq+m6QMX;HPv1oxh$7nvzR$dvUpDryw-49O(a28L^k$;Z4njw0od+uOqZ zwK2r{kj*hI6wQnR_3RuMrUg#HMC@g3=spi^Gf&2%xgW>2?q5(IMJbskV9>eY_L!8G zb~%DHI1h8|7>!1UWW0nU7PRBJ)sJAuw(U6O#G~FZaHkB|J^R+N(^8ZiDV(}&DcpfZ zs#R)3<}d-Z%$z2z%)BIJJ=G2ZYoLUQ#V0T{x()^1et4ZT7;Y^Xn0N;JhaZB;D0N&t zH1h%YoHOCE9IIHd&D2DhW9D!7V=}&t-ZKFcs$tW&aJ`9Ma{xNMM$jAS)g)H7Y9)ni zHVd_EBfU9ExpNW?a6k0sDEh{qr{o!;;RMk&xEf}Xv3z+Leorlp59l7d6AkrEXlwo` zh9+0TW_8m@(li(=jmOVCJi&d&cx*2cQIU29B$6?lcE)n7TzNOvy}Airmr=X_-a8IE zz*9z^nw^#v{wf_D0eX{dHm1#}hpFgiXfmrXE0r5Hj3)04ysm?uT+qj83_yX>Xv@A| zkx8FS@Qx&T+JwZ!5X0#VdTUX6hu7W2_&SPgVHghMd>T!XfJ<1X*_2ZZxp^9ag(S(0 zd`<@59VBFSf?0)PAqxX@v(3uw>0QQr6G>PNHK`8aP?#PUWb7*0J7w{0nEe67r}2AG^9j3{mxwP`fyK9V}QW;@skDCYd= z=s1exZVO(f6gtqi2}2{v!%C>8F2_=fR#*E`TTAOUk^xIH{R^{E)O)=u(cMQD5kqhkXKNR9HSP>M6`gs5uQWYUm+2JfkqVhUtNmN_JVL>`Nob7h*hy4^~qE{&AQJ~f4>RFJSw7H%o?JV*>Qat2LGoJO_e zvtfMw%J1X+3l?MR<`EpZXqNW#+ipE` zB*@Iql0O;V%jFV1SBn4iPGgawRG6`w>* z?A*3Yf)znBnNX$1Ol|_1!Z>op5Scb`AhZ(u`tLz))m$3O82UzDX9y0fa->9xVkyDv zGLqEE`5KVT(r}aGG~7X$?M?XjMIWKz16#Ltp|f+J>WRbArUckG-&n_sC{X8FY5jiK z+ySK7(FTU2KW~Qs7CPpEGJIDLyRDuf71WkldIa;L!>5MY zvY8USJfgI(&0NdQOCu6LpgLF#Kt^%0xg-G@guXb3xtQA5a0-m+GhxHgWa>O-fnlDx zSE@!rsKmoeMyrx%`FxQEl3{p`GIHdhm0Sc_Mw=Y8DI0o2k7F|V5@t7i6iKF#$!I@W zxYUw!N@_{+yfWPJFn?zcmM z6ifCgJu1bMLNQH1b2KzN0rwEtJQ??X=J7a; z-6~axw~MZpxmJ>PQmHtNf``(@kxnxb6e7HyI(+Ptr_(^q*x%EsuJv%VDFHTLEFm0? zV8)DDSTJuf*O)~qvcp8?Na^rUDv@`80#!O9ou0(_#4tt&a)?L3JUhf+jKN|S^3kMZ zgx;7@pj7g+kRm&5cDEUM z+eys))V2E=1>_theK5EeWXzbx#PikhI>q1xXuYvamaNC@xie7TScS<62^CCbkNr~n z>X*;bzVfw`wO_Bia!T^`Way#0ENysv@a@nnT{HK(4$Oa1N~(56h)< zh>ROCISveuzlm7+O*P&w-Wg5wVsv5;J((Su8CQf!!lW2Lz8GOHW#E=-B}2O2Af-fR zXtP;)kj#`whKq=#o?||J5mg6uQ-a^p#D_K$?C&*H+C6h_A zXd`7(0|`_M++^b(+g$jai=Z#p!D;M(*Ls8+X|kGX$tA`x656X$gX}}DtBeZJ0&p%v zsb)xFVlsj8@Fb;|2ge>aTlL+Hni?hnGydyGt8@$J9*11Yh*hiZe%s(q39#%@vO$}g z+ndScNhEkNOkA4GKT<&cc{>EEEE19m`7$L(0Yd}8{{C(fn{C{RQbxSim}DrMB+Jbz z!XzwK7_a2hWNL!o*-5Tq%yk3o%mlsJ#k}c8JeI=PL^qF-!ZhEhsBs;SRBkW5c0GLL z0X6BtqCxRTWSnTr{;o=YY>On+6u)K1ym9hQl(Qz?zlZlHoZaSJl3m zG_E}Q2luL6FJw>#=5;#$CNB&>OJY`G>vo5qU8Sj!r}+z~^BRp98ymx!AN`bKl%Kxz z`?||7ze#u2S(hGSn16Sh5?~{JyAkQ7XAO)XB$jW_kwr2XQ~Me87UelI-9#3>j_WBm z%#oc~pbT z?`5v7=kHSlHwu$h2VK!k%ds%bJ7KVq8M|j8r>{cJl!3+VL1V*da9TPL^v__2SJB&R z5hokZGuq?|B}5V-%Cscx?i9nQ6HeV+f>{JCR@OWG%gSF*Ms=q)I!vJwt77IwO^t>4R6re6Q0yj9@hS$fO!$HkkD6j-rxLNs=nb z#a^GAUR}mdfAoVX$*XT|ZyVT?KYWEQSksDGbLLZWMA3g>H^byOLm6|;p~+=j{&q8< zx&CCFaP+D4a0ANu079cNyt46E2xXpUehbhO=fPtq>n`mgI0LX6rmMVF<*g(0%qn7% z%NTjwNfM$#jE<3+>vGKTjqK38B3>qgo981VO%mECn4|m14H$-#;CBHv?@8FK!h>WYPw*22PeUr1Q;|uCg2Q1` zVOyr{$Wke(X1Puy+YhpDz}zpxh*R69Bo53!;zWcZX@)fl@rPynP;4dj=A&Dy*G}o-DP&J0UNe< z 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 QX#=39q@`FZZ~g860iq{d9{>OV literal 0 HcmV?d00001 diff --git a/emhttp/plugins/dynamix/images/feedback_troubleshoot.png b/emhttp/plugins/dynamix/images/feedback_troubleshoot.png new file mode 100644 index 0000000000000000000000000000000000000000..2ccf1516913b108ac31ae1a25b4d10ca5ded8317 GIT binary patch literal 12415 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 literal 0 HcmV?d00001 diff --git a/emhttp/plugins/dynamix/scripts/feedback b/emhttp/plugins/dynamix/scripts/feedback index 0525caa51..99519550a 100755 --- a/emhttp/plugins/dynamix/scripts/feedback +++ b/emhttp/plugins/dynamix/scripts/feedback @@ -186,14 +186,9 @@ function form_submit(url, params, panel, diagnostics) { $('#thanks_panel').html(failure_message).fadeIn('fast'); } else { data.message = data.message || ''; - var url_parts = url.split('/'); - var success_message = '

!

' + data.message + '

'; - $('#thanks_panel').html(success_message).fadeIn('fast', function() { - var resetfunction = window[url_parts[4] + '_reset']; - if (typeof resetfunction !== 'undefined' && $.isFunction(resetfunction)) { - resetfunction(); - } - }); + var name = panel.prop('id').replace('_panel','').toLowerCase(); + var success_message = '

!

'+data.message+'

'; + $('#thanks_panel').html(success_message).fadeIn('fast'); } }).fail(function(jqXHR, textStatus, errorThrown) { if (jqXHR.responseJSON && jqXHR.responseJSON.error) { From c5abd80e42f42f6448c4641d1c7639d7de6a0322 Mon Sep 17 00:00:00 2001 From: bergware Date: Sat, 3 Feb 2024 22:09:31 +0100 Subject: [PATCH 09/40] Feedback form: enable/disable SUBMIT button automatically --- emhttp/plugins/dynamix/scripts/feedback | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/emhttp/plugins/dynamix/scripts/feedback b/emhttp/plugins/dynamix/scripts/feedback index 99519550a..765e098d4 100755 --- a/emhttp/plugins/dynamix/scripts/feedback +++ b/emhttp/plugins/dynamix/scripts/feedback @@ -159,7 +159,8 @@ function feedback_reset() { } function form_submit(url, params, panel, diagnostics) { - panel.find('textarea,input').prop('disabled', true); + $('#submit-button').prop('disabled',true); + panel.find('textarea').prop('disabled',true); $('div.spinner.fixed').show(); if (diagnostics) { var anonymize = $('#anonymize').is(':checked') ? '1' : ''; @@ -168,7 +169,7 @@ function form_submit(url, params, panel, diagnostics) { form_submit(url, params, panel); }).fail(function() { $('div.spinner.fixed').hide(); - panel.fadeOut('fast').find('textarea,input').prop('disabled', false); + panel.fadeOut('fast').find('textarea').prop('disabled',false); var failure_message = "

( ).

"; $('#thanks_panel').html(failure_message).fadeIn('fast'); }); @@ -198,9 +199,8 @@ function form_submit(url, params, panel, diagnostics) { $('#thanks_panel').html(failure_message).fadeIn('fast'); }).always(function() { $('#spinner_image').fadeOut('fast'); - panel.fadeOut('fast').find('textarea,input').prop('disabled', false); + panel.fadeOut('fast').find('textarea').prop('disabled',false); }); - $('#submit-button').prop('disabled',true); } $(function() { From c318c949b1de8cc22f02178e726dc6560ff4844c Mon Sep 17 00:00:00 2001 From: bergware Date: Sat, 3 Feb 2024 22:33:02 +0100 Subject: [PATCH 10/40] Feedback form: code optimization --- emhttp/plugins/dynamix/scripts/feedback | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/emhttp/plugins/dynamix/scripts/feedback b/emhttp/plugins/dynamix/scripts/feedback index 765e098d4..20f98d091 100755 --- a/emhttp/plugins/dynamix/scripts/feedback +++ b/emhttp/plugins/dynamix/scripts/feedback @@ -205,21 +205,15 @@ function form_submit(url, params, panel, diagnostics) { $(function() { $('#control_panel input[name=mode]').click(function() { - var showPanel = '#'+$('#control_panel input[name=mode]:checked').val()+'_panel'; + var panel = $('#control_panel input[name=mode]:checked').val(); + var showPanel = '#'+panel+'_panel'; $('.allpanels').not(showPanel).fadeOut('fast'); - var loadfunction = window[$('#control_panel input[name=mode]:checked').val()+'_load']; + var loadfunction = window[panel+'_load']; if (typeof loadfunction !== 'undefined' && $.isFunction(loadfunction)) { loadfunction(); } else { $(showPanel).fadeIn('fast'); } - }); - - $('button.confirm').text(""); - if ($('#submit-button').length == 0) $('button.confirm').before(''); - - $('input[name=mode]').click(function(){ - var panel = $('input[name=mode]:checked').val(); var required = (panel == 'troubleshoot'); var email = ""; var option = " ()"; @@ -227,6 +221,9 @@ $(function() { $('#submit-button').prop('disabled',validInput($('#'+panel+'_panel textarea'))); }); + $('button.confirm').text(""); + if ($('#submit-button').length == 0) $('button.confirm').before(''); + $('textarea').on('input change',function(){ $('#submit-button').prop('disabled',validInput($(this))); }); From d67ea2e925e02b623f905baf223def9ebdf2b7b9 Mon Sep 17 00:00:00 2001 From: bergware Date: Sat, 3 Feb 2024 22:35:40 +0100 Subject: [PATCH 11/40] Feedback form: code optimization --- emhttp/plugins/dynamix/scripts/feedback | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/emhttp/plugins/dynamix/scripts/feedback b/emhttp/plugins/dynamix/scripts/feedback index 20f98d091..5de783e9f 100755 --- a/emhttp/plugins/dynamix/scripts/feedback +++ b/emhttp/plugins/dynamix/scripts/feedback @@ -204,8 +204,8 @@ function form_submit(url, params, panel, diagnostics) { } $(function() { - $('#control_panel input[name=mode]').click(function() { - var panel = $('#control_panel input[name=mode]:checked').val(); + $('input[name=mode]').click(function() { + var panel = $('input[name=mode]:checked').val(); var showPanel = '#'+panel+'_panel'; $('.allpanels').not(showPanel).fadeOut('fast'); var loadfunction = window[panel+'_load']; From 2fe31d63d8bb1ab3ccadfad8c6c6f8c0884a73fa Mon Sep 17 00:00:00 2001 From: bergware Date: Sat, 3 Feb 2024 22:38:17 +0100 Subject: [PATCH 12/40] Feedback form: code optimization --- emhttp/plugins/dynamix/scripts/feedback | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/emhttp/plugins/dynamix/scripts/feedback b/emhttp/plugins/dynamix/scripts/feedback index 5de783e9f..5c4274795 100755 --- a/emhttp/plugins/dynamix/scripts/feedback +++ b/emhttp/plugins/dynamix/scripts/feedback @@ -159,7 +159,7 @@ function feedback_reset() { } function form_submit(url, params, panel, diagnostics) { - $('#submit-button').prop('disabled',true); + $('#submit_button').prop('disabled',true); panel.find('textarea').prop('disabled',true); $('div.spinner.fixed').show(); if (diagnostics) { @@ -218,22 +218,22 @@ $(function() { var email = ""; var option = " ()"; $('input#email').prop('placeholder',email+(required?'':option)).prop('required',required); - $('#submit-button').prop('disabled',validInput($('#'+panel+'_panel textarea'))); + $('#submit_button').prop('disabled',validInput($('#'+panel+'_panel textarea'))); }); $('button.confirm').text(""); - if ($('#submit-button').length == 0) $('button.confirm').before(''); + if ($('#submit_button').length == 0) $('button.confirm').before(''); $('textarea').on('input change',function(){ - $('#submit-button').prop('disabled',validInput($(this))); + $('#submit_button').prop('disabled',validInput($(this))); }); $('input#email').on('input change',function(){ var panel = $('input[name=mode]:checked').val(); - $('#submit-button').prop('disabled',validInput($('#'+panel+'_panel textarea'))); + $('#submit_button').prop('disabled',validInput($('#'+panel+'_panel textarea'))); }); - $('#submit-button').click(function() { + $('#submit_button').click(function() { switch ($('input[name=mode]:checked').val()) { case 'featureRequest': form_submit('https://keys.lime-technology.com/feedback/featurerequest',{description:$('#featureRequest').val()}, $('#featureRequest_panel')); From c72a87723fe134aa368f730b62bbfcbcd64571b2 Mon Sep 17 00:00:00 2001 From: bergware Date: Sat, 3 Feb 2024 23:52:43 +0100 Subject: [PATCH 13/40] Fix styling: sweat-alert buttons --- emhttp/plugins/dynamix/styles/default-azure.css | 10 +++++----- emhttp/plugins/dynamix/styles/default-black.css | 8 ++++---- emhttp/plugins/dynamix/styles/default-gray.css | 10 +++++----- emhttp/plugins/dynamix/styles/default-white.css | 8 ++++---- emhttp/plugins/dynamix/styles/jquery.sweetalert.css | 4 ---- 5 files changed, 18 insertions(+), 22 deletions(-) diff --git a/emhttp/plugins/dynamix/styles/default-azure.css b/emhttp/plugins/dynamix/styles/default-azure.css index afec55fc7..a2f3c810f 100644 --- a/emhttp/plugins/dynamix/styles/default-azure.css +++ b/emhttp/plugins/dynamix/styles/default-azure.css @@ -25,14 +25,14 @@ pre li{margin:0;padding-top:0;padding-bottom:0;padding-left:18px} big{font-size:1.4rem;font-weight:bold;text-transform:uppercase} hr{border:none;height:1px!important;color:#606e7f;background-color:#606e7f} input[type=text],input[type=password],input[type=number],input[type=url],input[type=email],input[type=date],input[type=file],textarea,.textarea{font-family:clear-sans;font-size:1.3rem;background-color:transparent;border:1px solid #606e7f;padding:5px 6px;min-height:2rem;line-height:2rem;outline:none;width:300px;margin:0 20px 0 0;box-shadow:none;border-radius:0;color:#606e7f} -input[type=button],input[type=reset],input[type=submit],button,button[type=button],a.button{font-family:clear-sans;font-size:1.2rem;border:1px solid #9f9180;border-radius:5px;min-width:76px;margin:10px 12px 10px 0;padding:8px;text-align:center;cursor:pointer;outline:none;color:#9f9180;background-color:#edeaef} +input[type=button],input[type=reset],input[type=submit],button,button[type=button],a.button,.sweet-alert button{font-family:clear-sans;font-size:1.2rem;border:1px solid #9f9180;border-radius:5px;min-width:76px;margin:10px 12px 10px 0;padding:8px;text-align:center;cursor:pointer;outline:none;color:#9f9180;background-color:#edeaef} input[type=checkbox]{vertical-align:middle;margin-right:6px} input[type=number]::-webkit-outer-spin-button,input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none} input[type=number]{-moz-appearance:textfield} -input:focus[type=text],input:focus[type=password],input:focus[type=number],input:focus[type=url],input:focus[type=email],input:focus[type=file],textarea:focus{background-color:#edeaef;border-color:#0072c6} -input:hover[type=button],input:hover[type=reset],input:hover[type=submit],button:hover,button:hover[type=button],a.button:hover{border-color:#0072c6;color:#4f4f4f} -input:active[type=button],input:active[type=reset],input:active[type=submit],button:active,button:active[type=button],a.button:active{border-color:#0072c6;box-shadow:none} -input[disabled],button[disabled],input:hover[type=button][disabled],input:hover[type=reset][disabled],input:hover[type=submit][disabled],button:hover[disabled],button:hover[type=button][disabled],input:active[type=button][disabled],input:active[type=reset][disabled],input:active[type=submit][disabled],button:active[disabled],button:active[type=button][disabled],textarea[disabled]{color:#808080;border-color:#808080;background-color:#c7c5cb;opacity:0.5;cursor:default} +input:focus[type=text],input:focus[type=password],input:focus[type=number],input:focus[type=url],input:focus[type=email],input:focus[type=file],textarea:focus,.sweet-alert button:focus{background-color:#edeaef;border-color:#0072c6} +input:hover[type=button],input:hover[type=reset],input:hover[type=submit],button:hover,button:hover[type=button],a.button:hover,.sweet-alert button:hover{border-color:#0072c6;color:#4f4f4f;background-color:#edeaef!important} +input:active[type=button],input:active[type=reset],input:active[type=submit],button:active,button:active[type=button],a.button:active,.sweet-alert button:active{border-color:#0072c6;box-shadow:none} +input[disabled],button[disabled],input:hover[type=button][disabled],input:hover[type=reset][disabled],input:hover[type=submit][disabled],button:hover[disabled],button:hover[type=button][disabled],input:active[type=button][disabled],input:active[type=reset][disabled],input:active[type=submit][disabled],button:active[disabled],button:active[type=button][disabled],textarea[disabled],.sweet-alert button[disabled]{color:#808080;border-color:#808080;background-color:#c7c5cb;opacity:0.5;cursor:default} input::-webkit-input-placeholder{color:#00529b} select{-webkit-appearance:none;font-family:clear-sans;font-size:1.3rem;min-width:188px;max-width:314px;padding:6px 14px 6px 6px;margin:0 10px 0 0;border:1px solid #606e7f;box-shadow:none;border-radius:0;color:#606e7f;background-color:transparent;background-image:linear-gradient(66.6deg, transparent 60%, #606e7f 40%),linear-gradient(113.4deg, #606e7f 40%, transparent 60%);background-position:calc(100% - 8px),calc(100% - 4px);background-size:4px 6px,4px 6px;background-repeat:no-repeat;outline:none;display:inline-block;cursor:pointer} select option{color:#606e7f;background-color:#edeaef} diff --git a/emhttp/plugins/dynamix/styles/default-black.css b/emhttp/plugins/dynamix/styles/default-black.css index 885a818eb..75ddddfa5 100644 --- a/emhttp/plugins/dynamix/styles/default-black.css +++ b/emhttp/plugins/dynamix/styles/default-black.css @@ -22,16 +22,16 @@ i.control{cursor:pointer;color:#606060;font-size:1.8rem} i.favo{display:none;font-size:1.8rem;position:absolute;margin-left:12px} hr{border:none;height:1px!important;color:#2b2b2b;background-color:#2b2b2b} input[type=text],input[type=password],input[type=number],input[type=url],input[type=email],input[type=date],input[type=file],textarea,.textarea{font-family:clear-sans;font-size:1.3rem;background-color:transparent;border:none;border-bottom:1px solid #e5e5e5;padding:4px 0;text-indent:0;min-height:2rem;line-height:2rem;outline:none;width:300px;margin:0 20px 0 0;box-shadow:none;border-radius:0;color:#f2f2f2} -input[type=button],input[type=reset],input[type=submit],button,button[type=button],a.button{font-family:clear-sans;font-size:1.1rem;font-weight:bold;letter-spacing:1.8px;text-transform:uppercase;min-width:86px;margin:10px 12px 10px 0;padding:8px;text-align:center;text-decoration:none;white-space:nowrap;cursor:pointer;outline:none;border-radius:4px;border:none;color:#ff8c2f;background:-webkit-gradient(linear,left top,right top,from(#e22828),to(#ff8c2f)) 0 0 no-repeat,-webkit-gradient(linear,left top,right top,from(#e22828),to(#ff8c2f)) 0 100% no-repeat,-webkit-gradient(linear,left bottom,left top,from(#e22828),to(#e22828)) 0 100% no-repeat,-webkit-gradient(linear,left bottom,left top,from(#ff8c2f),to(#ff8c2f)) 100% 100% no-repeat;background:linear-gradient(90deg,#e22828 0,#ff8c2f) 0 0 no-repeat,linear-gradient(90deg,#e22828 0,#ff8c2f) 0 100% no-repeat,linear-gradient(0deg,#e22828 0,#e22828) 0 100% no-repeat,linear-gradient(0deg,#ff8c2f 0,#ff8c2f) 100% 100% no-repeat;background-size:100% 2px,100% 2px,2px 100%,2px 100%} +input[type=button],input[type=reset],input[type=submit],button,button[type=button],a.button,.sweet-alert button{font-family:clear-sans;font-size:1.1rem;font-weight:bold;letter-spacing:1.8px;text-transform:uppercase;min-width:86px;margin:10px 12px 10px 0;padding:8px;text-align:center;text-decoration:none;white-space:nowrap;cursor:pointer;outline:none;border-radius:4px;border:none;color:#ff8c2f;background:-webkit-gradient(linear,left top,right top,from(#e22828),to(#ff8c2f)) 0 0 no-repeat,-webkit-gradient(linear,left top,right top,from(#e22828),to(#ff8c2f)) 0 100% no-repeat,-webkit-gradient(linear,left bottom,left top,from(#e22828),to(#e22828)) 0 100% no-repeat,-webkit-gradient(linear,left bottom,left top,from(#ff8c2f),to(#ff8c2f)) 100% 100% no-repeat;background:linear-gradient(90deg,#e22828 0,#ff8c2f) 0 0 no-repeat,linear-gradient(90deg,#e22828 0,#ff8c2f) 0 100% no-repeat,linear-gradient(0deg,#e22828 0,#e22828) 0 100% no-repeat,linear-gradient(0deg,#ff8c2f 0,#ff8c2f) 100% 100% no-repeat;background-size:100% 2px,100% 2px,2px 100%,2px 100%} input[type=checkbox]{vertical-align:middle;margin-right:6px} input[type=number]::-webkit-outer-spin-button,input[type=number]::-webkit-inner-spin-button{-webkit-appearance: none} input[type=number]{-moz-appearance:textfield} -input:focus[type=text],input:focus[type=password],input:focus[type=number],input:focus[type=url],input:focus[type=email],input:focus[type=file],textarea:focus{background-color:#262626;outline:0} -input:hover[type=button],input:hover[type=reset],input:hover[type=submit],button:hover,button:hover[type=button],a.button:hover{color:#f2f2f2;background:-webkit-gradient(linear,left top,right top,from(#e22828),to(#ff8c2f));background:linear-gradient(90deg,#e22828 0,#ff8c2f)} +input:focus[type=text],input:focus[type=password],input:focus[type=number],input:focus[type=url],input:focus[type=email],input:focus[type=file],textarea:focus,.sweet-alert button:focus{background-color:#262626;outline:0} +input:hover[type=button],input:hover[type=reset],input:hover[type=submit],button:hover,button:hover[type=button],a.button:hover,.sweet-alert button:hover{color:#f2f2f2;background:-webkit-gradient(linear,left top,right top,from(#e22828),to(#ff8c2f));background:linear-gradient(90deg,#e22828 0,#ff8c2f)} input[disabled],textarea[disabled]{color:#f2f2f2;border-bottom-color:#6c6c6c;opacity:0.5;cursor:default} input[type=button][disabled],input[type=reset][disabled],input[type=submit][disabled],button[disabled],button[type=button][disabled],a.button[disabled] input:hover[type=button][disabled],input:hover[type=reset][disabled],input:hover[type=submit][disabled],button:hover[disabled],button:hover[type=button][disabled],a.button:hover[disabled] -input:active[type=button][disabled],input:active[type=reset][disabled],input:active[type=submit][disabled],button:active[disabled],button:active[type=button][disabled],a.button:active[disabled]{opacity:0.5;cursor:default;color:#808080;background:-webkit-gradient(linear,left top,right top,from(#404040),to(#808080)) 0 0 no-repeat,-webkit-gradient(linear,left top,right top,from(#404040),to(#808080)) 0 100% no-repeat,-webkit-gradient(linear,left bottom,left top,from(#404040),to(#404040)) 0 100% no-repeat,-webkit-gradient(linear,left bottom,left top,from(#808080),to(#808080)) 100% 100% no-repeat;background:linear-gradient(90deg,#404040 0,#808080) 0 0 no-repeat,linear-gradient(90deg,#404040 0,#808080) 0 100% no-repeat,linear-gradient(0deg,#404040 0,#404040) 0 100% no-repeat,linear-gradient(0deg,#808080 0,#808080) 100% 100% no-repeat;background-size:100% 2px,100% 2px,2px 100%,2px 100%} +input:active[type=button][disabled],input:active[type=reset][disabled],input:active[type=submit][disabled],button:active[disabled],button:active[type=button][disabled],a.button:active[disabled],.sweet-alert button[disabled]{opacity:0.5;cursor:default;color:#808080;background:-webkit-gradient(linear,left top,right top,from(#404040),to(#808080)) 0 0 no-repeat,-webkit-gradient(linear,left top,right top,from(#404040),to(#808080)) 0 100% no-repeat,-webkit-gradient(linear,left bottom,left top,from(#404040),to(#404040)) 0 100% no-repeat,-webkit-gradient(linear,left bottom,left top,from(#808080),to(#808080)) 100% 100% no-repeat;background:linear-gradient(90deg,#404040 0,#808080) 0 0 no-repeat,linear-gradient(90deg,#404040 0,#808080) 0 100% no-repeat,linear-gradient(0deg,#404040 0,#404040) 0 100% no-repeat,linear-gradient(0deg,#808080 0,#808080) 100% 100% no-repeat;background-size:100% 2px,100% 2px,2px 100%,2px 100%} input::-webkit-input-placeholder{color:#486dba} select{-webkit-appearance:none;font-family:clear-sans;font-size:1.3rem;min-width:166px;max-width:300px;padding:5px 8px 5px 0;text-indent:0;margin:0 10px 0 0;border:none;border-bottom:1px solid #e5e5e5;box-shadow:none;border-radius:0;color:#f2f2f2;background-color:transparent;background-image:linear-gradient(66.6deg, transparent 60%, #f2f2f2 40%),linear-gradient(113.4deg, #f2f2f2 40%, transparent 60%);background-position:calc(100% - 4px),100%;background-size:4px 6px,4px 6px;background-repeat:no-repeat;outline:none;display:inline-block;cursor:pointer} select option{color:#f2f2f2;background-color:#262626} diff --git a/emhttp/plugins/dynamix/styles/default-gray.css b/emhttp/plugins/dynamix/styles/default-gray.css index 513a64ee4..fcf7c8bec 100644 --- a/emhttp/plugins/dynamix/styles/default-gray.css +++ b/emhttp/plugins/dynamix/styles/default-gray.css @@ -25,14 +25,14 @@ pre li{margin:0;padding-top:0;padding-bottom:0;padding-left:18px} big{font-size:1.4rem;font-weight:bold;text-transform:uppercase} hr{border:none;height:1px!important;color:#606e7f;background-color:#606e7f} input[type=text],input[type=password],input[type=number],input[type=url],input[type=email],input[type=date],input[type=file],textarea,.textarea{font-family:clear-sans;font-size:1.3rem;background-color:transparent;border:1px solid #606e7f;padding:5px 6px;min-height:2rem;line-height:2rem;outline:none;width:300px;margin:0 20px 0 0;box-shadow:none;border-radius:0;color:#606e7f} -input[type=button],input[type=reset],input[type=submit],button,button[type=button],a.button{font-family:clear-sans;font-size:1.2rem;border:1px solid #606e7f;border-radius:5px;min-width:76px;margin:10px 12px 10px 0;padding:8px;text-align:center;cursor:pointer;outline:none;color:#606e7f;background-color:#121510} +input[type=button],input[type=reset],input[type=submit],button,button[type=button],a.button,.sweet-alert button{font-family:clear-sans;font-size:1.2rem;border:1px solid #606e7f;border-radius:5px;min-width:76px;margin:10px 12px 10px 0;padding:8px;text-align:center;cursor:pointer;outline:none;color:#606e7f;background-color:#121510} input[type=checkbox]{vertical-align:middle;margin-right:6px} input[type=number]::-webkit-outer-spin-button,input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none} input[type=number]{-moz-appearance:textfield} -input:focus[type=text],input:focus[type=password],input:focus[type=number],input:focus[type=url],input:focus[type=email],input:focus[type=file],textarea:focus{background-color:#121510;border-color:#0072c6} -input:hover[type=button],input:hover[type=reset],input:hover[type=submit],button:hover,button:hover[type=button],a.button:hover{border-color:#0072c6;color:#b0b0b0} -input:active[type=button],input:active[type=reset],input:active[type=submit],button:active,button:active[type=button],a.button:active{border-color:#0072c6;box-shadow:none} -input[disabled],button[disabled],input:hover[type=button][disabled],input:hover[type=reset][disabled],input:hover[type=submit][disabled],button:hover[disabled],button:hover[type=button][disabled],input:active[type=button][disabled],input:active[type=reset][disabled],input:active[type=submit][disabled],button:active[disabled],button:active[type=button][disabled],textarea[disabled]{color:#808080;border-color:#808080;background-color:#383a34;opacity:0.5;cursor:default} +input:focus[type=text],input:focus[type=password],input:focus[type=number],input:focus[type=url],input:focus[type=email],input:focus[type=file],textarea:focus,.sweet-alert button:focus{background-color:#121510;border-color:#0072c6} +input:hover[type=button],input:hover[type=reset],input:hover[type=submit],button:hover,button:hover[type=button],a.button:hover,.sweet-alert button:hover{border-color:#0072c6;color:#b0b0b0;background-color:#121510!important} +input:active[type=button],input:active[type=reset],input:active[type=submit],button:active,button:active[type=button],a.button:active,.sweet-alert button:active{border-color:#0072c6;box-shadow:none} +input[disabled],button[disabled],input:hover[type=button][disabled],input:hover[type=reset][disabled],input:hover[type=submit][disabled],button:hover[disabled],button:hover[type=button][disabled],input:active[type=button][disabled],input:active[type=reset][disabled],input:active[type=submit][disabled],button:active[disabled],button:active[type=button][disabled],textarea[disabled],.sweet-alert button[disabled]{color:#808080;border-color:#808080;background-color:#383a34;opacity:0.5;cursor:default} input::-webkit-input-placeholder{color:#00529b} select{-webkit-appearance:none;font-family:clear-sans;font-size:1.3rem;min-width:188px;max-width:314px;padding:6px 14px 6px 6px;margin:0 10px 0 0;border:1px solid #606e7f;box-shadow:none;border-radius:0;color:#606e7f;background-color:transparent;background-image:linear-gradient(66.6deg, transparent 60%, #606e7f 40%),linear-gradient(113.4deg, #606e7f 40%, transparent 60%);background-position:calc(100% - 8px),calc(100% - 4px);background-size:4px 6px,4px 6px;background-repeat:no-repeat;outline:none;display:inline-block;cursor:pointer} select option{color:#606e7f;background-color:#121510} diff --git a/emhttp/plugins/dynamix/styles/default-white.css b/emhttp/plugins/dynamix/styles/default-white.css index c1a30c6ca..6cb79bb1c 100644 --- a/emhttp/plugins/dynamix/styles/default-white.css +++ b/emhttp/plugins/dynamix/styles/default-white.css @@ -22,16 +22,16 @@ i.control{cursor:pointer;color:#909090;font-size:1.8rem} i.favo{display:none;font-size:1.8rem;position:absolute;margin-left:12px} hr{border:none;height:1px!important;color:#e3e3e3;background-color:#e3e3e3} input[type=text],input[type=password],input[type=number],input[type=url],input[type=email],input[type=date],input[type=file],textarea,.textarea{font-family:clear-sans;font-size:1.3rem;background-color:transparent;border:none;border-bottom:1px solid #1c1b1b;padding:4px 0;text-indent:0;min-height:2rem;line-height:2rem;outline:none;width:300px;margin:0 20px 0 0;box-shadow:none;border-radius:0;color:#1c1b1b} -input[type=button],input[type=reset],input[type=submit],button,button[type=button],a.button{font-family:clear-sans;font-size:1.1rem;font-weight:bold;letter-spacing:1.8px;text-transform:uppercase;min-width:86px;margin:10px 12px 10px 0;padding:8px;text-align:center;text-decoration:none;white-space:nowrap;cursor:pointer;outline:none;border-radius:4px;border:none;color:#ff8c2f;background:-webkit-gradient(linear,left top,right top,from(#e22828),to(#ff8c2f)) 0 0 no-repeat,-webkit-gradient(linear,left top,right top,from(#e22828),to(#ff8c2f)) 0 100% no-repeat,-webkit-gradient(linear,left bottom,left top,from(#e22828),to(#e22828)) 0 100% no-repeat,-webkit-gradient(linear,left bottom,left top,from(#ff8c2f),to(#ff8c2f)) 100% 100% no-repeat;background:linear-gradient(90deg,#e22828 0,#ff8c2f) 0 0 no-repeat,linear-gradient(90deg,#e22828 0,#ff8c2f) 0 100% no-repeat,linear-gradient(0deg,#e22828 0,#e22828) 0 100% no-repeat,linear-gradient(0deg,#ff8c2f 0,#ff8c2f) 100% 100% no-repeat;background-size:100% 2px,100% 2px,2px 100%,2px 100%} +input[type=button],input[type=reset],input[type=submit],button,button[type=button],a.button,.sweet-alert button{font-family:clear-sans;font-size:1.1rem;font-weight:bold;letter-spacing:1.8px;text-transform:uppercase;min-width:86px;margin:10px 12px 10px 0;padding:8px;text-align:center;text-decoration:none;white-space:nowrap;cursor:pointer;outline:none;border-radius:4px;border:none;color:#ff8c2f;background:-webkit-gradient(linear,left top,right top,from(#e22828),to(#ff8c2f)) 0 0 no-repeat,-webkit-gradient(linear,left top,right top,from(#e22828),to(#ff8c2f)) 0 100% no-repeat,-webkit-gradient(linear,left bottom,left top,from(#e22828),to(#e22828)) 0 100% no-repeat,-webkit-gradient(linear,left bottom,left top,from(#ff8c2f),to(#ff8c2f)) 100% 100% no-repeat;background:linear-gradient(90deg,#e22828 0,#ff8c2f) 0 0 no-repeat,linear-gradient(90deg,#e22828 0,#ff8c2f) 0 100% no-repeat,linear-gradient(0deg,#e22828 0,#e22828) 0 100% no-repeat,linear-gradient(0deg,#ff8c2f 0,#ff8c2f) 100% 100% no-repeat;background-size:100% 2px,100% 2px,2px 100%,2px 100%} input[type=checkbox]{vertical-align:middle;margin-right:6px} input[type=number]::-webkit-outer-spin-button,input[type=number]::-webkit-inner-spin-button{-webkit-appearance: none} input[type=number]{-moz-appearance:textfield} -input:focus[type=text],input:focus[type=password],input:focus[type=number],input:focus[type=url],input:focus[type=email],input:focus[type=file],textarea:focus{background-color:#e8e8e8;outline:0} -input:hover[type=button],input:hover[type=reset],input:hover[type=submit],button:hover,button:hover[type=button],a.button:hover{color:#f2f2f2;background:-webkit-gradient(linear,left top,right top,from(#e22828),to(#ff8c2f));background:linear-gradient(90deg,#e22828 0,#ff8c2f)} +input:focus[type=text],input:focus[type=password],input:focus[type=number],input:focus[type=url],input:focus[type=email],input:focus[type=file],textarea:focus,.sweet-alert button:focus{background-color:#e8e8e8;outline:0} +input:hover[type=button],input:hover[type=reset],input:hover[type=submit],button:hover,button:hover[type=button],a.button:hover,.sweet-alert button:hover{color:#f2f2f2;background:-webkit-gradient(linear,left top,right top,from(#e22828),to(#ff8c2f));background:linear-gradient(90deg,#e22828 0,#ff8c2f)} input[disabled],textarea[disabled]{color:#1c1b1b;border-bottom-color:#a2a2a2;opacity:0.5;cursor:default} input[type=button][disabled],input[type=reset][disabled],input[type=submit][disabled],button[disabled],button[type=button][disabled],a.button[disabled] input:hover[type=button][disabled],input:hover[type=reset][disabled],input:hover[type=submit][disabled],button:hover[disabled],button:hover[type=button][disabled],a.button:hover[disabled] -input:active[type=button][disabled],input:active[type=reset][disabled],input:active[type=submit][disabled],button:active[disabled],button:active[type=button][disabled],a.button:active[disabled]{opacity:0.5;cursor:default;color:#808080;background:-webkit-gradient(linear,left top,right top,from(#404040),to(#808080)) 0 0 no-repeat,-webkit-gradient(linear,left top,right top,from(#404040),to(#808080)) 0 100% no-repeat,-webkit-gradient(linear,left bottom,left top,from(#404040),to(#404040)) 0 100% no-repeat,-webkit-gradient(linear,left bottom,left top,from(#808080),to(#808080)) 100% 100% no-repeat;background:linear-gradient(90deg,#404040 0,#808080) 0 0 no-repeat,linear-gradient(90deg,#404040 0,#808080) 0 100% no-repeat,linear-gradient(0deg,#404040 0,#404040) 0 100% no-repeat,linear-gradient(0deg,#808080 0,#808080) 100% 100% no-repeat;background-size:100% 2px,100% 2px,2px 100%,2px 100%} +input:active[type=button][disabled],input:active[type=reset][disabled],input:active[type=submit][disabled],button:active[disabled],button:active[type=button][disabled],a.button:active[disabled],.sweet-alert button[disabled]{opacity:0.5;cursor:default;color:#808080;background:-webkit-gradient(linear,left top,right top,from(#404040),to(#808080)) 0 0 no-repeat,-webkit-gradient(linear,left top,right top,from(#404040),to(#808080)) 0 100% no-repeat,-webkit-gradient(linear,left bottom,left top,from(#404040),to(#404040)) 0 100% no-repeat,-webkit-gradient(linear,left bottom,left top,from(#808080),to(#808080)) 100% 100% no-repeat;background:linear-gradient(90deg,#404040 0,#808080) 0 0 no-repeat,linear-gradient(90deg,#404040 0,#808080) 0 100% no-repeat,linear-gradient(0deg,#404040 0,#404040) 0 100% no-repeat,linear-gradient(0deg,#808080 0,#808080) 100% 100% no-repeat;background-size:100% 2px,100% 2px,2px 100%,2px 100%} input::-webkit-input-placeholder{color:#486dba} select{-webkit-appearance:none;font-family:clear-sans;font-size:1.3rem;min-width:166px;max-width:300px;padding:5px 8px 5px 0;text-indent:0;margin:0 10px 0 0;border:none;border-bottom:1px solid #1c1b1b;box-shadow:none;border-radius:0;color:#1c1b1b;background-color:transparent;background-image:linear-gradient(66.6deg, transparent 60%, #1c1b1b 40%),linear-gradient(113.4deg, #1c1b1b 40%, transparent 60%);background-position:calc(100% - 4px),100%;background-size:4px 6px,4px 6px;background-repeat:no-repeat;outline:none;display:inline-block;cursor:pointer} select option{color:#1c1b1b;background-color:#e8e8e8} diff --git a/emhttp/plugins/dynamix/styles/jquery.sweetalert.css b/emhttp/plugins/dynamix/styles/jquery.sweetalert.css index 9c7c9b56d..9e071d79e 100644 --- a/emhttp/plugins/dynamix/styles/jquery.sweetalert.css +++ b/emhttp/plugins/dynamix/styles/jquery.sweetalert.css @@ -37,15 +37,11 @@ pre#swaltext{text-align:left;margin:0;padding:0;height:650px;white-space:normal; .sweet-alert.show-input input{display:block} .sweet-alert .sa-confirm-button-container{display:inline-block;position:relative} .sweet-alert .la-ball-fall{position:absolute;left:50%;top:50%;margin-left:-27px;margin-top:4px;opacity:0;visibility:hidden} -.sweet-alert button{font-family:clear-sans;font-size:1.2rem;font-weight:bold;letter-spacing:2px;text-transform:uppercase;min-width:86px;margin:20px 12px 10px 0;padding:8px;text-align:center;text-decoration:none;white-space:nowrap;cursor:pointer;outline:none;border-radius:4px;border:0;color:#ff8c2f;background:-webkit-gradient(linear,left top,right top,from(#e22828),to(#ff8c2f)) 0 0 no-repeat,-webkit-gradient(linear,left top,right top,from(#e22828),to(#ff8c2f)) 0 100% no-repeat,-webkit-gradient(linear,left bottom,left top,from(#e22828),to(#e22828)) 0 100% no-repeat,-webkit-gradient(linear,left bottom,left top,from(#ff8c2f),to(#ff8c2f)) 100% 100% no-repeat;background:linear-gradient(90deg,#e22828 0,#ff8c2f) 0 0 no-repeat,linear-gradient(90deg,#e22828 0,#ff8c2f) 0 100% no-repeat,linear-gradient(0deg,#e22828 0,#e22828) 0 100% no-repeat,linear-gradient(0deg,#ff8c2f 0,#ff8c2f) 100% 100% no-repeat;background-size:100% 2px,100% 2px,2px 100%,2px 100%} .sweet-alert button:focus{} -.sweet-alert button:hover{color:#f2f2f2;background:-webkit-gradient(linear,left top,right top,from(#e22828),to(#ff8c2f));background:linear-gradient(90deg,#e22828 0,#ff8c2f)} .sweet-alert button:active{} .sweet-alert button.cancel{} .sweet-alert button.cancel:hover{} .sweet-alert button.cancel:active{} -.sweet-alert button.cancel:focus{box-shadow:rgba(197, 205, 211, 0.8) 0px 0px 2px, rgba(0, 0, 0, 0.0470588) 0px 0px 0px 1px inset !important} -.sweet-alert button[disabled]{cursor:default;color:#808080;background:-webkit-gradient(linear,left top,right top,from(#404040),to(#808080)) 0 0 no-repeat,-webkit-gradient(linear,left top,right top,from(#404040),to(#808080)) 0 100% no-repeat,-webkit-gradient(linear,left bottom,left top,from(#404040),to(#404040)) 0 100% no-repeat,-webkit-gradient(linear,left bottom,left top,from(#808080),to(#808080)) 100% 100% no-repeat;background:linear-gradient(90deg,#404040 0,#808080) 0 0 no-repeat,linear-gradient(90deg,#404040 0,#808080) 0 100% no-repeat,linear-gradient(0deg,#404040 0,#404040) 0 100% no-repeat,linear-gradient(0deg,#808080 0,#808080) 100% 100% no-repeat;background-size:100% 2px,100% 2px,2px 100%,2px 100%} .sweet-alert button.confirm[disabled]{} .sweet-alert button.confirm[disabled] ~ .la-ball-fall{opacity:1;visibility:visible;transition-delay:0s} .sweet-alert button::-moz-focus-inner{border:0} From 080a3e28d333bed0c1577a32590f334302bc7341 Mon Sep 17 00:00:00 2001 From: bergware Date: Sat, 3 Feb 2024 23:53:10 +0100 Subject: [PATCH 14/40] Feedback form: code optimization --- .../dynamix/include/DefaultPageLayout.php | 2 +- emhttp/plugins/dynamix/scripts/feedback | 49 ++++++++++--------- 2 files changed, 26 insertions(+), 25 deletions(-) diff --git a/emhttp/plugins/dynamix/include/DefaultPageLayout.php b/emhttp/plugins/dynamix/include/DefaultPageLayout.php index 3f11c03d2..2a019e8c6 100644 --- a/emhttp/plugins/dynamix/include/DefaultPageLayout.php +++ b/emhttp/plugins/dynamix/include/DefaultPageLayout.php @@ -388,7 +388,7 @@ function openChanges(cmd,title,nchan,button=0) { $('div.spinner.fixed').hide(); swal({title:title,text:"

",html:true,animation:'none',showConfirmButton:button!=0,confirmButtonText:""},function(close){ $('.sweet-alert').hide('fast').removeClass('nchan'); - if ($('#submit-button').length > 0) $('#submit-button').remove(); + if ($('#submit_button').length > 0) $('#submit_button').remove(); }); $('.sweet-alert').addClass('nchan'); $('pre#swalbody').html(data); diff --git a/emhttp/plugins/dynamix/scripts/feedback b/emhttp/plugins/dynamix/scripts/feedback index 5c4274795..ae534c116 100755 --- a/emhttp/plugins/dynamix/scripts/feedback +++ b/emhttp/plugins/dynamix/scripts/feedback @@ -204,49 +204,50 @@ function form_submit(url, params, panel, diagnostics) { } $(function() { + $('button.confirm').text(""); + if ($('#submit_button').length == 0) $('button.confirm').before(''); + $('input[name=mode]').click(function() { - var panel = $('input[name=mode]:checked').val(); - var showPanel = '#'+panel+'_panel'; - $('.allpanels').not(showPanel).fadeOut('fast'); - var loadfunction = window[panel+'_load']; + var tab = $('input[name=mode]:checked').val(); + var panel = '#'+tab+'_panel'; + var email = ""; + $('.allpanels').not(panel).fadeOut('fast'); + var loadfunction = window[tab+'_load']; if (typeof loadfunction !== 'undefined' && $.isFunction(loadfunction)) { loadfunction(); } else { - $(showPanel).fadeIn('fast'); + $(panel).fadeIn('fast'); } - var required = (panel == 'troubleshoot'); - var email = ""; - var option = " ()"; - $('input#email').prop('placeholder',email+(required?'':option)).prop('required',required); - $('#submit_button').prop('disabled',validInput($('#'+panel+'_panel textarea'))); + var required = ['troubleshoot'].includes(tab); + var optional = required ? "" : " ()"; + $('input#email').prop('placeholder',email+optional).prop('required',required); + $('#submit_button').prop('disabled',validInput($('#'+tab+'_panel textarea'))); }); - $('button.confirm').text(""); - if ($('#submit_button').length == 0) $('button.confirm').before(''); - $('textarea').on('input change',function(){ $('#submit_button').prop('disabled',validInput($(this))); }); $('input#email').on('input change',function(){ - var panel = $('input[name=mode]:checked').val(); - $('#submit_button').prop('disabled',validInput($('#'+panel+'_panel textarea'))); + var tab = $('input[name=mode]:checked').val(); + $('#submit_button').prop('disabled',validInput($('#'+tab+'_panel textarea'))); }); $('#submit_button').click(function() { - switch ($('input[name=mode]:checked').val()) { - case 'featureRequest': - form_submit('https://keys.lime-technology.com/feedback/featurerequest',{description:$('#featureRequest').val()}, $('#featureRequest_panel')); + var tab = '#'+$('input[name=mode]:checked').val(); + switch (tab) { + case '#featureRequest': + form_submit('https://keys.lime-technology.com/feedback/featurerequest',{description:$(tab).val()}, $(tab+'_panel')); break; - case 'bugReport': - form_submit('https://keys.lime-technology.com/feedback/bugreport',{description:$('#bugReport').val()}, $('#bugReport_panel'), 1); + case '#bugReport': + form_submit('https://keys.lime-technology.com/feedback/bugreport',{description:$(tab).val()}, $(tab+'_panel'), 1); break; - case 'troubleshoot': + case '#troubleshoot': // @todo - update this to use a new troubleshoot endpoint - form_submit('https://keys.lime-technology.com/feedback/bugreport',{description:$('#troubleshoot').val()}, $('#troubleshoot_panel'), 1); + form_submit('https://keys.lime-technology.com/feedback/bugreport',{description:$(tab).val()}, $(tab+'_panel'), 1); break; - case 'otherComment': - form_submit('https://keys.lime-technology.com/feedback/comment',{description:$('#otherComment').val()}, $('#otherComment_panel')); + case '#otherComment': + form_submit('https://keys.lime-technology.com/feedback/comment',{description:$(tab).val()}, $(tab+'_panel')); break; } }); From f2c87c4485c3c48995f97032a20112a95f054429 Mon Sep 17 00:00:00 2001 From: bergware Date: Sun, 4 Feb 2024 00:05:24 +0100 Subject: [PATCH 15/40] Fix notification icon --- emhttp/plugins/dynamix/include/DefaultPageLayout.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/emhttp/plugins/dynamix/include/DefaultPageLayout.php b/emhttp/plugins/dynamix/include/DefaultPageLayout.php index 2a019e8c6..31e5a0a7c 100644 --- a/emhttp/plugins/dynamix/include/DefaultPageLayout.php +++ b/emhttp/plugins/dynamix/include/DefaultPageLayout.php @@ -679,7 +679,7 @@ foreach ($buttons as $button) { if (isset($button['Nchan'])) nchan_merge($button['root'], $button['Nchan']); } -echo ""; +echo ""; if ($themes2) echo ""; echo ""; From 7fdfc3ebc29c190d6930f9970b9d6e0a04015719 Mon Sep 17 00:00:00 2001 From: bergware Date: Sun, 4 Feb 2024 00:31:05 +0100 Subject: [PATCH 16/40] Feedback form: code optimization --- emhttp/plugins/dynamix/scripts/feedback | 30 +++++++++++++------------ 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/emhttp/plugins/dynamix/scripts/feedback b/emhttp/plugins/dynamix/scripts/feedback index ae534c116..58e7b9aa2 100755 --- a/emhttp/plugins/dynamix/scripts/feedback +++ b/emhttp/plugins/dynamix/scripts/feedback @@ -56,7 +56,7 @@ span.spacer{margin:0 4px}
-
+
@@ -158,23 +158,25 @@ function feedback_reset() { md5.otherComment = $('#otherComment').val().md5(); } -function form_submit(url, params, panel, diagnostics) { +function form_submit(url, params, tab, diagnostics) { + var panel = $(tab+'_panel'); $('#submit_button').prop('disabled',true); panel.find('textarea').prop('disabled',true); $('div.spinner.fixed').show(); if (diagnostics) { var anonymize = $('#anonymize').is(':checked') ? '1' : ''; - $.get('/webGui/include/Feedback.php',{getdiagnostics:1, anonymize:anonymize}, function(data) { + $.get('/webGui/include/Feedback.php',{getdiagnostics:1, anonymize:anonymize}, function(data){ params.diagnostics = data; - form_submit(url, params, panel); - }).fail(function() { + form_submit(url, params, tab); + }).fail(function(){ $('div.spinner.fixed').hide(); panel.fadeOut('fast').find('textarea').prop('disabled',false); var failure_message = "

( ).

"; - $('#thanks_panel').html(failure_message).fadeIn('fast'); + $('#reply_panel').html(failure_message).fadeIn('fast'); }); return; } + params.description = $(tab).val(); params.email = $('input#email').val(); params.timestamp = unraid_timestamp; params.osversion = unraid_osversion; @@ -184,19 +186,19 @@ function form_submit(url, params, panel, diagnostics) { $('div.spinner.fixed').hide(); if (data.error) { var failure_message = "

. .

"; - $('#thanks_panel').html(failure_message).fadeIn('fast'); + $('#reply_panel').html(failure_message).fadeIn('fast'); } else { data.message = data.message || ''; - var name = panel.prop('id').replace('_panel','').toLowerCase(); + var name = tab.substr(1).toLowerCase(); var success_message = '

!

'+data.message+'

'; - $('#thanks_panel').html(success_message).fadeIn('fast'); + $('#reply_panel').html(success_message).fadeIn('fast'); } }).fail(function(jqXHR, textStatus, errorThrown) { if (jqXHR.responseJSON && jqXHR.responseJSON.error) { errorThrown = jqXHR.responseJSON.error; } var failure_message = "

. .

"; - $('#thanks_panel').html(failure_message).fadeIn('fast'); + $('#reply_panel').html(failure_message).fadeIn('fast'); }).always(function() { $('#spinner_image').fadeOut('fast'); panel.fadeOut('fast').find('textarea').prop('disabled',false); @@ -237,17 +239,17 @@ $(function() { var tab = '#'+$('input[name=mode]:checked').val(); switch (tab) { case '#featureRequest': - form_submit('https://keys.lime-technology.com/feedback/featurerequest',{description:$(tab).val()}, $(tab+'_panel')); + form_submit('https://keys.lime-technology.com/feedback/featurerequest',{},tab); break; case '#bugReport': - form_submit('https://keys.lime-technology.com/feedback/bugreport',{description:$(tab).val()}, $(tab+'_panel'), 1); + form_submit('https://keys.lime-technology.com/feedback/bugreport',{},tab,1); break; case '#troubleshoot': // @todo - update this to use a new troubleshoot endpoint - form_submit('https://keys.lime-technology.com/feedback/bugreport',{description:$(tab).val()}, $(tab+'_panel'), 1); + form_submit('https://keys.lime-technology.com/feedback/bugreport',{},tab,1); break; case '#otherComment': - form_submit('https://keys.lime-technology.com/feedback/comment',{description:$(tab).val()}, $(tab+'_panel')); + form_submit('https://keys.lime-technology.com/feedback/comment',{},tab); break; } }); From a571cbdc20c05e480c4b25ec5c73af6ae80e32a5 Mon Sep 17 00:00:00 2001 From: bergware Date: Sun, 4 Feb 2024 00:37:39 +0100 Subject: [PATCH 17/40] Feedback form: code optimization --- emhttp/plugins/dynamix/scripts/feedback | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/emhttp/plugins/dynamix/scripts/feedback b/emhttp/plugins/dynamix/scripts/feedback index 58e7b9aa2..7a9c123af 100755 --- a/emhttp/plugins/dynamix/scripts/feedback +++ b/emhttp/plugins/dynamix/scripts/feedback @@ -236,20 +236,21 @@ $(function() { }); $('#submit_button').click(function() { + var url = 'https://keys.lime-technology.com/feedback/'; var tab = '#'+$('input[name=mode]:checked').val(); switch (tab) { case '#featureRequest': - form_submit('https://keys.lime-technology.com/feedback/featurerequest',{},tab); + form_submit(url+'featurerequest',{},tab); break; case '#bugReport': - form_submit('https://keys.lime-technology.com/feedback/bugreport',{},tab,1); + form_submit(url+'bugreport',{},tab,1); break; case '#troubleshoot': // @todo - update this to use a new troubleshoot endpoint - form_submit('https://keys.lime-technology.com/feedback/bugreport',{},tab,1); + form_submit(url+'bugreport',{},tab,1); break; case '#otherComment': - form_submit('https://keys.lime-technology.com/feedback/comment',{},tab); + form_submit(url+'comment',{},tab); break; } }); From 076413fcaef20e0c733af8aeac7f1f34e6eda994 Mon Sep 17 00:00:00 2001 From: bergware Date: Sun, 4 Feb 2024 01:11:33 +0100 Subject: [PATCH 18/40] Feedback form: code optimization --- emhttp/plugins/dynamix/scripts/feedback | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/emhttp/plugins/dynamix/scripts/feedback b/emhttp/plugins/dynamix/scripts/feedback index 7a9c123af..ceb8ba4ca 100755 --- a/emhttp/plugins/dynamix/scripts/feedback +++ b/emhttp/plugins/dynamix/scripts/feedback @@ -210,20 +210,14 @@ $(function() { if ($('#submit_button').length == 0) $('button.confirm').before(''); $('input[name=mode]').click(function() { - var tab = $('input[name=mode]:checked').val(); - var panel = '#'+tab+'_panel'; - var email = ""; + var tab = '#'+$('input[name=mode]:checked').val(); + var panel = tab+'_panel'; + var enter = ['#troubleshoot'].includes(tab); + var email = " ("+(enter ? "" : "")+")"; + $('input#email').prop('placeholder',email).prop('required',enter); + $('#submit_button').prop('disabled',validInput($(tab))); $('.allpanels').not(panel).fadeOut('fast'); - var loadfunction = window[tab+'_load']; - if (typeof loadfunction !== 'undefined' && $.isFunction(loadfunction)) { - loadfunction(); - } else { - $(panel).fadeIn('fast'); - } - var required = ['troubleshoot'].includes(tab); - var optional = required ? "" : " ()"; - $('input#email').prop('placeholder',email+optional).prop('required',required); - $('#submit_button').prop('disabled',validInput($('#'+tab+'_panel textarea'))); + $(panel).fadeIn('fast'); }); $('textarea').on('input change',function(){ @@ -231,8 +225,8 @@ $(function() { }); $('input#email').on('input change',function(){ - var tab = $('input[name=mode]:checked').val(); - $('#submit_button').prop('disabled',validInput($('#'+tab+'_panel textarea'))); + var tab = '#'+$('input[name=mode]:checked').val(); + $('#submit_button').prop('disabled',validInput($(tab))); }); $('#submit_button').click(function() { From f80c212a268c41ffdb8853fdb4f2a667d344a541 Mon Sep 17 00:00:00 2001 From: bergware Date: Sun, 4 Feb 2024 01:16:29 +0100 Subject: [PATCH 19/40] Feedback form: code optimization --- emhttp/plugins/dynamix/scripts/feedback | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/emhttp/plugins/dynamix/scripts/feedback b/emhttp/plugins/dynamix/scripts/feedback index ceb8ba4ca..804ff3044 100755 --- a/emhttp/plugins/dynamix/scripts/feedback +++ b/emhttp/plugins/dynamix/scripts/feedback @@ -139,9 +139,8 @@ var md5 = {}; function validInput(input) { var validRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; - var panel = input.prop('id'); var email = $('input#email'); - return input.val().md5() == md5[panel] || !(email.prop('required')===false || email.val().match(validRegex)); + return input.val().md5() == md5[input.prop('id')] || !(email.prop('required')===false || email.val().match(validRegex)); } function feedback_reset() { From abdf3d7485f4cf4f1359f82184a07a94c8284137 Mon Sep 17 00:00:00 2001 From: bergware Date: Sun, 4 Feb 2024 01:23:05 +0100 Subject: [PATCH 20/40] Feedback form: code optimization --- emhttp/plugins/dynamix/scripts/feedback | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/emhttp/plugins/dynamix/scripts/feedback b/emhttp/plugins/dynamix/scripts/feedback index 804ff3044..a3bfc8626 100755 --- a/emhttp/plugins/dynamix/scripts/feedback +++ b/emhttp/plugins/dynamix/scripts/feedback @@ -131,9 +131,9 @@ String.prototype.md5 = function(){ return rh(a)+rh(b)+rh(c)+rh(d); } -var inkeyfile = ''; -var unraid_osversion = ''; -var unraid_timestamp = ; +var inkeyfile = ""; +var unraid_osversion = ""; +var unraid_timestamp = ""; var inpageurl = window.top.location.href; var md5 = {}; @@ -181,7 +181,7 @@ function form_submit(url, params, tab, diagnostics) { params.osversion = unraid_osversion; params.keyfile = inkeyfile; params.pageurl = inpageurl; - $.post(url, params, function(data) { + $.post(url, params, function(data){ $('div.spinner.fixed').hide(); if (data.error) { var failure_message = "

. .

"; @@ -204,11 +204,11 @@ function form_submit(url, params, tab, diagnostics) { }); } -$(function() { +$(function(){ $('button.confirm').text(""); if ($('#submit_button').length == 0) $('button.confirm').before(''); - $('input[name=mode]').click(function() { + $('input[name=mode]').click(function(){ var tab = '#'+$('input[name=mode]:checked').val(); var panel = tab+'_panel'; var enter = ['#troubleshoot'].includes(tab); @@ -228,7 +228,7 @@ $(function() { $('#submit_button').prop('disabled',validInput($(tab))); }); - $('#submit_button').click(function() { + $('#submit_button').click(function(){ var url = 'https://keys.lime-technology.com/feedback/'; var tab = '#'+$('input[name=mode]:checked').val(); switch (tab) { From 111deef9231399b54854ec8762d13a6e120b252c Mon Sep 17 00:00:00 2001 From: bergware Date: Sun, 4 Feb 2024 01:27:44 +0100 Subject: [PATCH 21/40] Feedback form: code optimization --- emhttp/plugins/dynamix/scripts/feedback | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/emhttp/plugins/dynamix/scripts/feedback b/emhttp/plugins/dynamix/scripts/feedback index a3bfc8626..7717d7cb2 100755 --- a/emhttp/plugins/dynamix/scripts/feedback +++ b/emhttp/plugins/dynamix/scripts/feedback @@ -192,13 +192,13 @@ function form_submit(url, params, tab, diagnostics) { var success_message = '

!

'+data.message+'

'; $('#reply_panel').html(success_message).fadeIn('fast'); } - }).fail(function(jqXHR, textStatus, errorThrown) { + }).fail(function(jqXHR, textStatus, errorThrown){ if (jqXHR.responseJSON && jqXHR.responseJSON.error) { errorThrown = jqXHR.responseJSON.error; } var failure_message = "

. .

"; $('#reply_panel').html(failure_message).fadeIn('fast'); - }).always(function() { + }).always(function(){ $('#spinner_image').fadeOut('fast'); panel.fadeOut('fast').find('textarea').prop('disabled',false); }); From 87e07534b16efc54f6451b8e16a5f7aa15d66230 Mon Sep 17 00:00:00 2001 From: bergware Date: Sun, 4 Feb 2024 01:29:58 +0100 Subject: [PATCH 22/40] Feedback form: code optimization --- emhttp/plugins/dynamix/scripts/feedback | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/emhttp/plugins/dynamix/scripts/feedback b/emhttp/plugins/dynamix/scripts/feedback index 7717d7cb2..b90558cb0 100755 --- a/emhttp/plugins/dynamix/scripts/feedback +++ b/emhttp/plugins/dynamix/scripts/feedback @@ -196,7 +196,7 @@ function form_submit(url, params, tab, diagnostics) { if (jqXHR.responseJSON && jqXHR.responseJSON.error) { errorThrown = jqXHR.responseJSON.error; } - var failure_message = "

. .

"; + var failure_message = "

. .

"; $('#reply_panel').html(failure_message).fadeIn('fast'); }).always(function(){ $('#spinner_image').fadeOut('fast'); From b833a134854f594196569fe1cb1f71ed25d97739 Mon Sep 17 00:00:00 2001 From: bergware Date: Sun, 4 Feb 2024 02:26:39 +0100 Subject: [PATCH 23/40] Feedback form: add ERROR image --- .../plugins/dynamix/images/feedback_error.png | Bin 0 -> 22999 bytes emhttp/plugins/dynamix/scripts/feedback | 21 ++++++++++-------- 2 files changed, 12 insertions(+), 9 deletions(-) create mode 100644 emhttp/plugins/dynamix/images/feedback_error.png diff --git a/emhttp/plugins/dynamix/images/feedback_error.png b/emhttp/plugins/dynamix/images/feedback_error.png new file mode 100644 index 0000000000000000000000000000000000000000..67058f43fca9ed3a42a96f894b88a1284b9000d4 GIT binary patch literal 22999 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:530px;margin:0;resize:none} @media(max-height:768px){textarea.feedback{height:330px}} input#email{float:left;padding-left:4px} p.note,label.note{font-size:1.1rem!important} -p.success{text-align:center!important;margin-top:20px} span.spacer{margin:0 4px} +img{display:inline-block;margin-bottom:30px} +.center{text-align:center!important} +.green-text{color:#4f8a10!important} +.red-text{color:#f0000c!important} @@ -170,8 +173,8 @@ function form_submit(url, params, tab, diagnostics) { }).fail(function(){ $('div.spinner.fixed').hide(); panel.fadeOut('fast').find('textarea').prop('disabled',false); - var failure_message = "

( ).

"; - $('#reply_panel').html(failure_message).fadeIn('fast'); + var reply = "


. ).

"; + $('#reply_panel').html(reply).fadeIn('fast'); }); return; } @@ -184,20 +187,20 @@ function form_submit(url, params, tab, diagnostics) { $.post(url, params, function(data){ $('div.spinner.fixed').hide(); if (data.error) { - var failure_message = "

. .

"; - $('#reply_panel').html(failure_message).fadeIn('fast'); + var reply = "


. .

"; + $('#reply_panel').html(reply).fadeIn('fast'); } else { data.message = data.message || ''; var name = tab.substr(1).toLowerCase(); - var success_message = '

!

'+data.message+'

'; - $('#reply_panel').html(success_message).fadeIn('fast'); + var reply = "


"+data.message+"

"; + $('#reply_panel').html(reply).fadeIn('fast'); } }).fail(function(jqXHR, textStatus, errorThrown){ if (jqXHR.responseJSON && jqXHR.responseJSON.error) { errorThrown = jqXHR.responseJSON.error; } - var failure_message = "

. .

"; - $('#reply_panel').html(failure_message).fadeIn('fast'); + var reply = "


. .

"; + $('#reply_panel').html(reply).fadeIn('fast'); }).always(function(){ $('#spinner_image').fadeOut('fast'); panel.fadeOut('fast').find('textarea').prop('disabled',false); From 4aaf3bb109c8ea3994a7ab6199c69388f3c3b058 Mon Sep 17 00:00:00 2001 From: bergware Date: Sun, 4 Feb 2024 02:41:23 +0100 Subject: [PATCH 24/40] Feedback form: code optimization --- emhttp/plugins/dynamix/scripts/feedback | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/emhttp/plugins/dynamix/scripts/feedback b/emhttp/plugins/dynamix/scripts/feedback index 1fc23c113..a286d4d6d 100755 --- a/emhttp/plugins/dynamix/scripts/feedback +++ b/emhttp/plugins/dynamix/scripts/feedback @@ -24,6 +24,10 @@ $var = parse_ini_file('state/var.ini'); $unraid = parse_ini_file('/etc/unraid-version'); $keyfile = !empty(_var($var,'regFILE')) ? trim(base64_encode(@file_get_contents($var['regFILE']))) : ''; $width = in_array($display['theme'], ['azure','gray']) ? '98.8%' : '100%'; + +$unable = _('Unable to generate system diagnostics'); +$sorry = _('Sorry, an error occurred'); +$again = _('Please try again later'); ?> @@ -173,7 +177,7 @@ function form_submit(url, params, tab, diagnostics) { }).fail(function(){ $('div.spinner.fixed').hide(); panel.fadeOut('fast').find('textarea').prop('disabled',false); - var reply = "


. ).

"; + var reply = "


.

"; $('#reply_panel').html(reply).fadeIn('fast'); }); return; @@ -187,7 +191,7 @@ function form_submit(url, params, tab, diagnostics) { $.post(url, params, function(data){ $('div.spinner.fixed').hide(); if (data.error) { - var reply = "


. .

"; + var reply = "


.

"; $('#reply_panel').html(reply).fadeIn('fast'); } else { data.message = data.message || ''; @@ -199,7 +203,7 @@ function form_submit(url, params, tab, diagnostics) { if (jqXHR.responseJSON && jqXHR.responseJSON.error) { errorThrown = jqXHR.responseJSON.error; } - var reply = "


. .

"; + var reply = "


.

"; $('#reply_panel').html(reply).fadeIn('fast'); }).always(function(){ $('#spinner_image').fadeOut('fast'); From 70b0a5c3f328a0e7b933e8435ef5a2e33c33ca35 Mon Sep 17 00:00:00 2001 From: bergware Date: Sun, 4 Feb 2024 02:46:50 +0100 Subject: [PATCH 25/40] Feedback form: code optimization --- emhttp/plugins/dynamix/scripts/feedback | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/emhttp/plugins/dynamix/scripts/feedback b/emhttp/plugins/dynamix/scripts/feedback index a286d4d6d..ce75ca9d8 100755 --- a/emhttp/plugins/dynamix/scripts/feedback +++ b/emhttp/plugins/dynamix/scripts/feedback @@ -24,6 +24,7 @@ $var = parse_ini_file('state/var.ini'); $unraid = parse_ini_file('/etc/unraid-version'); $keyfile = !empty(_var($var,'regFILE')) ? trim(base64_encode(@file_get_contents($var['regFILE']))) : ''; $width = in_array($display['theme'], ['azure','gray']) ? '98.8%' : '100%'; +$feedback = '/webGui/images/feedback_'; $unable = _('Unable to generate system diagnostics'); $sorry = _('Sorry, an error occurred'); @@ -177,7 +178,7 @@ function form_submit(url, params, tab, diagnostics) { }).fail(function(){ $('div.spinner.fixed').hide(); panel.fadeOut('fast').find('textarea').prop('disabled',false); - var reply = "


.

"; + var reply = "


.

"; $('#reply_panel').html(reply).fadeIn('fast'); }); return; @@ -191,19 +192,19 @@ function form_submit(url, params, tab, diagnostics) { $.post(url, params, function(data){ $('div.spinner.fixed').hide(); if (data.error) { - var reply = "


.

"; + var reply = "


.

"; $('#reply_panel').html(reply).fadeIn('fast'); } else { data.message = data.message || ''; var name = tab.substr(1).toLowerCase(); - var reply = "


"+data.message+"

"; + var reply = "


"+data.message+"

"; $('#reply_panel').html(reply).fadeIn('fast'); } }).fail(function(jqXHR, textStatus, errorThrown){ if (jqXHR.responseJSON && jqXHR.responseJSON.error) { errorThrown = jqXHR.responseJSON.error; } - var reply = "


.

"; + var reply = "


.

"; $('#reply_panel').html(reply).fadeIn('fast'); }).always(function(){ $('#spinner_image').fadeOut('fast'); From cfdfb49fa254ef778bf113d794c5946d9ae65fa7 Mon Sep 17 00:00:00 2001 From: bergware Date: Sun, 4 Feb 2024 02:59:07 +0100 Subject: [PATCH 26/40] Feedback form: code optimization --- emhttp/plugins/dynamix/scripts/feedback | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/emhttp/plugins/dynamix/scripts/feedback b/emhttp/plugins/dynamix/scripts/feedback index ce75ca9d8..526118150 100755 --- a/emhttp/plugins/dynamix/scripts/feedback +++ b/emhttp/plugins/dynamix/scripts/feedback @@ -195,9 +195,8 @@ function form_submit(url, params, tab, diagnostics) { var reply = "


.

"; $('#reply_panel').html(reply).fadeIn('fast'); } else { - data.message = data.message || ''; var name = tab.substr(1).toLowerCase(); - var reply = "


"+data.message+"

"; + var reply = "


"+(data.message||'')+"

"; $('#reply_panel').html(reply).fadeIn('fast'); } }).fail(function(jqXHR, textStatus, errorThrown){ From 7772e3db387e30b1a0acebbb500935d97813c86d Mon Sep 17 00:00:00 2001 From: bergware Date: Sun, 4 Feb 2024 10:29:25 +0100 Subject: [PATCH 27/40] Feedback form: code optimization --- emhttp/plugins/dynamix/scripts/feedback | 56 ++++++++++++------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/emhttp/plugins/dynamix/scripts/feedback b/emhttp/plugins/dynamix/scripts/feedback index 526118150..2c077f3a4 100755 --- a/emhttp/plugins/dynamix/scripts/feedback +++ b/emhttp/plugins/dynamix/scripts/feedback @@ -26,7 +26,7 @@ $keyfile = !empty(_var($var,'regFILE')) ? trim(base64_encode(@file_get_contents( $width = in_array($display['theme'], ['azure','gray']) ? '98.8%' : '100%'; $feedback = '/webGui/images/feedback_'; -$unable = _('Unable to generate system diagnostics'); +$diagn = _('Unable to generate system diagnostics'); $sorry = _('Sorry, an error occurred'); $again = _('Please try again later'); ?> @@ -57,22 +57,22 @@ img{display:inline-block;margin-bottom:30px}
- - - - + + + +
-
+
-
- +
+
-
- - +
+ +

: .

@@ -82,8 +82,8 @@ img{display:inline-block;margin-bottom:30px}

: .

-
- +
+
"; -$html[] = ""; -$html[] = "
"; - -echo implode($style),implode($script),implode($html); ?> +
+
+ +
diff --git a/emhttp/plugins/dynamix/scripts/system_information b/emhttp/plugins/dynamix/scripts/system_information index 36ee74fc8..f3fc8e5cc 100755 --- a/emhttp/plugins/dynamix/scripts/system_information +++ b/emhttp/plugins/dynamix/scripts/system_information @@ -136,23 +136,28 @@ if ($memory_installed >= 1024) { // If maximum < installed then roundup maximum to the next power of 2 size of installed. E.g. 6 -> 8 or 12 -> 16 $low = $memory_maximum < $memory_installed; if ($low) $memory_maximum = pow(2,ceil(log($memory_installed)/log(2))); +?> + -$style = ""; - -$list = []; -$list[] = ""; -$list[] = ""; -$list[] = ""; -$list[] = ""; -$list[] = ""; -$list[] = ""; -$list[] = ""; -$list[] = ""; - +
"._('Model').":$model
".('M/B').":{$board['Manufacturer']} {$board['Product Name']} {$board['Version']} {$board['Serial Number']}
"._('BIOS').":{$bios['Vendor']} {$bios['Version']} {$bios['Release Date']}
"._('CPU').":$cpumodel {$cpu['Current Speed']}
"._('HVM').":$hvm
"._('IOMMU').":$iommu
"._('Cache').":".implode(', ',$cache_installed)."
$memory$memory_installed $unit $memory_type $ecc("._('max. installable capacity')." $memory_maximum $unit".($low?'*':'').")
+ + + + + + + + +"; + echo ""; } exec("ls --indicator-style=none /sys/class/net|grep -Po '^(bond|eth)\d+$'",$sPorts); @@ -167,24 +172,22 @@ foreach ($sPorts as $port) { if (substr($port,0,4)=='bond') { if ($link) { $bond_mode = str_replace('Bonding Mode: ','',file("/proc/net/bonding/$port",FILE_IGNORE_NEW_LINES|FILE_SKIP_EMPTY_LINES)[1]); - $list[] = ""; + echo ""; } else { - $list[] = ""; + echo ""; } } else { if ($link) { $speed = file_get_contents("$int/speed"); $duplex = file_get_contents("$int/duplex"); - $list[] = ""; + echo ""; } else { - $list[] = ""; + echo ""; } } } - -$list[] = ""; -$list[] = ""; -$list[] = "
:
:
:
:
:
:
:
)
".$device['Locator'].": "._var($device,'Manufacturer')." "._var($device,'Part Number').", $size "._var($device,'Type')." @ "._var($device,'Configured Memory Speed')."
",$device['Locator'],": ",_var($device,'Manufacturer')," ",_var($device,'Part Number'),", $size ",_var($device,'Type')," @ ",_var($device,'Configured Memory Speed'),"
$name$port: $bond_mode, mtu $mtu
$name$port: $bond_mode, mtu $mtu
$name$port: "._("bond down")."
$name$port: ",_('bond down'),"
$name$port: $speed Mbps, $duplex duplex, mtu $mtu
$name$port: $speed Mbps, $duplex duplex, mtu $mtu
$name$port: "._("interface down")."
$name$port: ",_('interface down'),"
"._('Kernel').":$kernel
"._('OpenSSL').":$openssl
"._('Uptime').":
"; - -echo $style,implode($list); ?> +: +: +: + diff --git a/emhttp/plugins/dynamix/scripts/wg_config b/emhttp/plugins/dynamix/scripts/wg_config index 10c0490c5..f0249e059 100755 --- a/emhttp/plugins/dynamix/scripts/wg_config +++ b/emhttp/plugins/dynamix/scripts/wg_config @@ -24,47 +24,42 @@ require_once "$docroot/webGui/include/Translations.php"; $file = $argv[1]; $path = realpath('/etc/wireguard'.($argv[2]??'')); $root = '/boot/config/wireguard'; +?> + -$style = [""; + -$script = [""; - -$html = []; -$html[] = "

".($argv[2] ? _('Remote peer configuration') : _('Local server configuration'))."

"; -$html[] = "
"; -$html[] = "
";
-$html[] = @file_get_contents("$path/$file.conf");
-$html[] = "\n";
-$html[] = "
"; +

+
','.zip')">
+
+"; + echo ""; } - -echo implode($style),implode($script),implode($html); ?> From 232f45286f0dd95349532d16d2075655de155f16 Mon Sep 17 00:00:00 2001 From: bergware Date: Sun, 4 Feb 2024 12:04:13 +0100 Subject: [PATCH 29/40] Feedback form: updated images --- ...edback_othercomment.png => feedback_comment.png} | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename emhttp/plugins/dynamix/images/{feedback_othercomment.png => feedback_comment.png} (100%) diff --git a/emhttp/plugins/dynamix/images/feedback_othercomment.png b/emhttp/plugins/dynamix/images/feedback_comment.png similarity index 100% rename from emhttp/plugins/dynamix/images/feedback_othercomment.png rename to emhttp/plugins/dynamix/images/feedback_comment.png From bf75867eae9c234726879da51f1dcb5b33d4c6c1 Mon Sep 17 00:00:00 2001 From: bergware Date: Sun, 4 Feb 2024 12:13:11 +0100 Subject: [PATCH 30/40] Feedback form: updated images --- .../plugins/dynamix/images/feedback_error.png | Bin 22999 -> 16099 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/emhttp/plugins/dynamix/images/feedback_error.png b/emhttp/plugins/dynamix/images/feedback_error.png index 67058f43fca9ed3a42a96f894b88a1284b9000d4..94d857fa611ce21c9828c8052596837c4ff24d4f 100644 GIT binary patch literal 16099 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 literal 22999 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 Date: Sun, 4 Feb 2024 13:26:27 +0100 Subject: [PATCH 31/40] Feedback form: html optimization --- emhttp/plugins/dynamix/scripts/feedback | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/emhttp/plugins/dynamix/scripts/feedback b/emhttp/plugins/dynamix/scripts/feedback index 2c077f3a4..1716a28e4 100755 --- a/emhttp/plugins/dynamix/scripts/feedback +++ b/emhttp/plugins/dynamix/scripts/feedback @@ -30,11 +30,6 @@ $diagn = _('Unable to generate system diagnostics'); $sorry = _('Sorry, an error occurred'); $again = _('Please try again later'); ?> - - - - -Feedback Form - - +
@@ -259,5 +253,3 @@ $(function(){ $('#opt_featurerequest').click(); }); - - From 36a16931e5ece7b4cb6a5eb5386c4ade5cb6e625 Mon Sep 17 00:00:00 2001 From: bergware Date: Sun, 4 Feb 2024 16:18:46 +0100 Subject: [PATCH 32/40] Update copyright year --- emhttp/plugins/dynamix/scripts/feedback | 4 ++-- emhttp/plugins/dynamix/scripts/parity_history | 4 ++-- emhttp/plugins/dynamix/scripts/select_case | 4 ++-- emhttp/plugins/dynamix/scripts/system_information | 4 ++-- emhttp/plugins/dynamix/scripts/wg_config | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/emhttp/plugins/dynamix/scripts/feedback b/emhttp/plugins/dynamix/scripts/feedback index 1716a28e4..8aeb0740d 100755 --- a/emhttp/plugins/dynamix/scripts/feedback +++ b/emhttp/plugins/dynamix/scripts/feedback @@ -1,7 +1,7 @@ #!/usr/bin/php -q Date: Sun, 4 Feb 2024 19:43:01 +0100 Subject: [PATCH 33/40] linc_station_n1 images --- .../dynamix/images/linc_station_n1_black.png | Bin 0 -> 818 bytes .../dynamix/images/linc_station_n1_white.png | Bin 0 -> 930 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 emhttp/plugins/dynamix/images/linc_station_n1_black.png create mode 100644 emhttp/plugins/dynamix/images/linc_station_n1_white.png diff --git a/emhttp/plugins/dynamix/images/linc_station_n1_black.png b/emhttp/plugins/dynamix/images/linc_station_n1_black.png new file mode 100644 index 0000000000000000000000000000000000000000..7eaac04c29c22f227f2bf106981d58b43b271e82 GIT binary patch literal 818 zcmV-21I_%2P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0>?>2K~#8N?b=O< zO>rE?@#~#NVKoR-c0w$e@=_L7N+{XcSlF>vq*z!;HqvNnkg^pLR+dC;$ZOe9-gZRt zl9%T>FLgWj-t#}sHK%i?@29@qbFX}96f zp?*it&@_|P74oK=Zs&kJa6_${ZOYp=*Fa^*-K2O?Yqr6>mm7!>RFRSM$|}c(YUJ2#{SM zrB@pM8_#T7TiM}fXOz2>Pe~qo@h@AX?x~+@u|mCh;65$fP*2rW^(yH2J%6|Qs7mo6|CKtdF8GCv z%gH0EcUld_n;kqW&&;#SJ#81c2=u#v2P*ruK02(5H(RrlM^xj8+N*A>d43_ov+~S5 zyWFFEXaShN##fuE^anmyE7Vry(*&o2>YP(P%x_np{X!R>S#Z8Z7C@HI{ln_I^3ac| z6Y8w8&~*j+w@ZzxQ>w2Wugn6lYsxnld>C4)_Nk3(wekYN`0);QQms)N)F)M1*#)p) z`M!Yn{)6hF8d01E#$Tm7*b?Qpf7{e~zmVZoi2CuYJTuSEGwdmJzV##&^;&gRWC7e%%hep^;d73!H_z0Iz}E&()E3oq0fcw~ z_=ljGJiFXeK8w1v+!=>H4fLVJpC|jC^9#iyXbzwIzbK!={rNy? z{_`WB_kG6?&GASD-=!7VqkWV(stzfC8rXhY81>{s{~0x=a`*nChjgDue8-P>0nOk! wy;Qzg2LJ#700000000000001hiLKT83nHt~h@1U=PXGV_07*qoM6N<$g4kJxqW}N^ literal 0 HcmV?d00001 diff --git a/emhttp/plugins/dynamix/images/linc_station_n1_white.png b/emhttp/plugins/dynamix/images/linc_station_n1_white.png new file mode 100644 index 0000000000000000000000000000000000000000..afbf34bd9c1312b3cb0e0099c72a09e5151ebdb6 GIT binary patch literal 930 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!3HERU8}DLQjEnx?oJHr&dIz4a#+$GeH|GX zHuiJ>Nn{1`ISV`@iy0XB4ude`@%$Aj3=GWXo-U3d6>)E8d#~t8lxcsyqdO){@2Hbm zQLMuDO&fw*QkJ{CiO?2{5ID&;vB)!0bGlPlna4)Oq{QYsVyBkgv7C3m#(1W2`nf&D z#|)o+{%`x${mjNGi2{IT@f8^0`;3)90dm0a?fzi<}snhm>tTs2*_E>S#4`2dGa&-?iGY_;YI)4Ef$mL1K=y4UaD6&`EZ+h3@x zcPKq#vYS}rE!H~+U){g@!oWCNtZjOnZ}yGO*&o>Yu1SZk2wOEXE4*BA23Lc|daKh@ z_J0ucJDj>A^H8wk>kCmnhyQT>Szw;EV3z9Z+a3(7F3vF&U%#MhpR}pST!%pO!e#yu z&Bs3|{0lsut;X<3=+(2PwuPQ6*0w#H6?x;swnHYZRyP>u^m2ccHS^ufc%$ilz}|Z4 zdq{+V|Ile!VyRzuWpK7h_(CJsq3Y6v@UR%K{pHz8& zCI2f&=DWE@Z=26?E_)z!r+xKD&1*|0GQ=ERX(1F^bN=Jo-fJ9Ojn~-t3pBrZGWh)S zU{l!2cH#VK=RMoYe=dyCzPc{2H<+=adDq?DGNvIGEI%E#Ub<5+7kXIE)0feyU;brA zpyG}-=017>XG^qJL?5!fyuiej1dA7`o~EO9}EYd^!4Cv&8fzA+>N^A&@qtDnm{r-UW| DXAYKy literal 0 HcmV?d00001 From 7c033ddc156103d8be99ac588b1ca160c9647815 Mon Sep 17 00:00:00 2001 From: bergware Date: Mon, 5 Feb 2024 10:26:37 +0100 Subject: [PATCH 34/40] parity_history: code optimization --- emhttp/plugins/dynamix/scripts/parity_history | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/emhttp/plugins/dynamix/scripts/parity_history b/emhttp/plugins/dynamix/scripts/parity_history index d211515b2..a793711b8 100755 --- a/emhttp/plugins/dynamix/scripts/parity_history +++ b/emhttp/plugins/dynamix/scripts/parity_history @@ -59,15 +59,11 @@ if (file_exists($log)) { // handle both old and new speed notation $speed = $speed ? (is_numeric($speed) ? my_scale($speed,$unit,1)." $unit/s" : $speed) : _('Unavailable'); $status = $status==0 ? _('OK') : ($status==-4 ? _('Canceled') : $status); - $list[] = "$action$date$size$duration$speed$status$error"; + array_unshift($list, "$action$date$size$duration$speed$status$error"); } fclose($handle); } -if ($list) { - $list = array_reverse($list); -} else { - $list[] = ""._('No parity check history present')."!"; -} +if (!$list) $list[] = ""._('No parity check history present')."!"; echo implode($list); ?> From 6428747c77997536fb1ebaf603cf6d8638b08fa5 Mon Sep 17 00:00:00 2001 From: bergware Date: Mon, 5 Feb 2024 10:30:14 +0100 Subject: [PATCH 35/40] parity_history: code optimization --- emhttp/plugins/dynamix/scripts/parity_history | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/emhttp/plugins/dynamix/scripts/parity_history b/emhttp/plugins/dynamix/scripts/parity_history index a793711b8..b299009b0 100755 --- a/emhttp/plugins/dynamix/scripts/parity_history +++ b/emhttp/plugins/dynamix/scripts/parity_history @@ -63,7 +63,6 @@ if (file_exists($log)) { } fclose($handle); } -if (!$list) $list[] = ""._('No parity check history present')."!"; -echo implode($list); +echo $list ? implode($list) : ""._('No parity check history present')."!"; ?> From 7833fdefebad3bf87f6abe068567e3d6d2d53890 Mon Sep 17 00:00:00 2001 From: bergware Date: Mon, 5 Feb 2024 10:50:30 +0100 Subject: [PATCH 36/40] Use my_logger --- .../dynamix.plugin.manager/scripts/language | 7 +-- .../dynamix.plugin.manager/scripts/plugin | 48 +++++++++---------- 2 files changed, 27 insertions(+), 28 deletions(-) diff --git a/emhttp/plugins/dynamix.plugin.manager/scripts/language b/emhttp/plugins/dynamix.plugin.manager/scripts/language index 12a942750..91f1f8400 100755 --- a/emhttp/plugins/dynamix.plugin.manager/scripts/language +++ b/emhttp/plugins/dynamix.plugin.manager/scripts/language @@ -8,6 +8,7 @@ $docroot ??= ($_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp'); require_once "$docroot/webGui/include/Wrappers.php"; +$logger = 'language-manager'; $usage = <<SHA256) { - logger("checking: $name - SHA256"); + my_logger("checking: $name - SHA256", $logger); if (hash_file('sha256', $name) != $file->SHA256) { unlink($name); } } elseif ($file->MD5) { - logger("checking: $name - MD5"); + my_logger("checking: $name - MD5", $logger); if (md5_file($name) != $file->MD5) { unlink($name); } @@ -396,12 +394,12 @@ function plugin($method, $plugin_file, &$error) { // If file already exists, do not overwrite // if (file_exists($name)) { - logger("skipping: $name already exists"); + my_logger("skipping: $name already exists", $logger); } elseif ($file->LOCAL) { // Create the file // // for local file, just copy it - logger("creating: $name - copying LOCAL file $file->LOCAL"); + my_logger("creating: $name - copying LOCAL file $file->LOCAL", $logger); if (!copy($file->LOCAL, $name)) { $error = "unable to copy LOCAL file: $name"; @unlink($name); @@ -409,10 +407,10 @@ function plugin($method, $plugin_file, &$error) { } } elseif ($file->INLINE) { // for inline file, create with inline contents - logger("creating: $name - from INLINE content"); + my_logger("creating: $name - from INLINE content", $logger); $contents = trim($file->INLINE).PHP_EOL; if ($file->attributes()->Type == 'base64') { - logger("decoding: $name as base64"); + my_logger("decoding: $name as base64", $logger); $contents = base64_decode($contents); if ($contents === false) { $error = "unable to decode inline base64: $name"; @@ -426,20 +424,20 @@ function plugin($method, $plugin_file, &$error) { } } elseif ($file->URL) { // for download file, download and maybe verify the file MD5 - logger("creating: $name - downloading from URL $file->URL"); + my_logger("creating: $name - downloading from URL $file->URL", $logger); if ( (download($file->URL, $name, $error) === false) && (download(filter_url($file->URL), $name, $error) === false) ) { @unlink($name); return false; } if ($file->SHA256) { - logger("checking: $name - SHA256"); + my_logger("checking: $name - SHA256", $logger); if (hash_file('sha256', $name) != $file->SHA256) { $error = "bad file SHA256: $name"; unlink($name); return false; } } elseif ($file->MD5) { - logger("checking: $name - MD5"); + my_logger("checking: $name - MD5", $logger); if (md5_file($name) != $file->MD5) { $error = "bad file MD5: $name"; unlink($name); @@ -452,7 +450,7 @@ function plugin($method, $plugin_file, &$error) { if ($file->attributes()->Mode) { // if file has 'Mode' attribute, apply it $mode = $file->attributes()->Mode; - logger("setting: $name - mode to $mode"); + my_logger("setting: $name - mode to $mode", $logger); if (!chmod($name, octdec($mode))) { $error = "chmod failure: $name"; return false; @@ -464,13 +462,13 @@ function plugin($method, $plugin_file, &$error) { if ($file->attributes()->Run) { $command = $file->attributes()->Run; if ($name) { - logger("running: $command $name"); + my_logger("running: $command $name", $logger); $retval = run("$command $name"); } elseif ($file->LOCAL) { - logger("running: $command $file->LOCAL"); + my_logger("running: $command $file->LOCAL", $logger); $retval = run("$command $file->LOCAL"); } elseif ($file->INLINE) { - logger("running: 'anonymous'"); + my_logger("running: 'anonymous'", $logger); $name = '/tmp/inline.sh'; file_put_contents($name, $file->INLINE); $retval = run("$command $name"); @@ -718,10 +716,10 @@ if ($method == 'install') { if ($target != $plugin_file) copy($plugin_file, $target); symlink($target, $symlink); write("plugin: $plugin installed\n"); - logger("$plugin installed"); + my_logger("$plugin installed", $logger); } else { write("script: $plugin executed\n"); - logger("script: $plugin executed"); + my_logger("script: $plugin executed", $logger); } // run hook scripts for post processing post_hooks(); @@ -835,7 +833,7 @@ if ($method == 'update') { copy($plugin_file, $target); symlink($target, $symlink); write("plugin: $plugin updated\n"); - logger("$plugin updated"); + my_logger("$plugin updated", $logger); // run hook scripts for post processing post_hooks(); done(0); @@ -867,7 +865,7 @@ if ($method == 'remove') { // remove the plugin file move($installed_plugin_file, "$boot-removed"); write("plugin: $plugin removed\n"); - logger("$plugin removed"); + my_logger("$plugin removed", $logger); exec("/usr/local/sbin/update_cron"); // run hook scripts for post processing post_hooks(); From 9dc7547a6aef658e5e4c73c8cea75bee117c1dc1 Mon Sep 17 00:00:00 2001 From: bergware Date: Mon, 5 Feb 2024 11:02:28 +0100 Subject: [PATCH 37/40] Use my_logger --- emhttp/plugins/dynamix/include/Wrappers.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/emhttp/plugins/dynamix/include/Wrappers.php b/emhttp/plugins/dynamix/include/Wrappers.php index f97b1ab8d..7e3f293c8 100644 --- a/emhttp/plugins/dynamix/include/Wrappers.php +++ b/emhttp/plugins/dynamix/include/Wrappers.php @@ -146,7 +146,7 @@ function my_date($fmt, $time) { return date(strtr($fmt,$legacy), $time); } // ensure params passed to logger are properly escaped -function my_logger($message, $tag="webgui") { - exec('logger -t '.escapeshellarg($tag).' -- '.escapeshellarg($message)); +function my_logger($message, $logger='webgui') { + exec('logger -t '.escapeshellarg($logger).' -- '.escapeshellarg($message)); } ?> From 94972a6dc7945863cd6dec3de0f89bc92d84a556 Mon Sep 17 00:00:00 2001 From: bergware Date: Mon, 5 Feb 2024 11:18:57 +0100 Subject: [PATCH 38/40] Update select_case --- emhttp/plugins/dynamix/scripts/select_case | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/emhttp/plugins/dynamix/scripts/select_case b/emhttp/plugins/dynamix/scripts/select_case index f037d8061..0c05052af 100755 --- a/emhttp/plugins/dynamix/scripts/select_case +++ b/emhttp/plugins/dynamix/scripts/select_case @@ -32,6 +32,7 @@ div.case-list span.fa{top:24px;max-width:80px;font-size:80px} div.case-list:hover{color:#f0000c} div.case-name{position:relative;top:74px;font-family:clear-sans!important} div.custom-name{position:relative;top:10px;font-family:clear-sans!important} +input#file{display:none}