mirror of
https://github.com/unraid/webgui.git
synced 2026-03-10 21:10:01 -05:00
Feedback form: enable/disable SUBMIT button automatically
- User can only submit when valid input is entered
This commit is contained in:
@@ -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%';
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Feedback Form</title>
|
||||
<style>
|
||||
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:first-child{margin-left:0}
|
||||
div.divide label{margin-left:2%;cursor:pointer}
|
||||
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;height:30px;line-height:30px;text-align:center}
|
||||
textarea.feedback{width:<?=$width?>;height:530px;margin:0;resize:none}
|
||||
@media (max-width:960px){textarea.feedback{height:330px}}
|
||||
@media (max-height:768px){textarea.feedback{height:330px}}
|
||||
input.submit[type=email]{margin-top:10px;float:left;position:relative;z-index:1}
|
||||
p.note, label.note{font-size:1.1rem !important;display:block;position:relative;z-index:0}
|
||||
p.success{text-align:center!important;margin-top:20px}
|
||||
span.spacer{margin:0 4px}
|
||||
</style>
|
||||
<meta charset="UTF-8">
|
||||
<title>Feedback Form</title>
|
||||
<style>
|
||||
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.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:<?=$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}
|
||||
p.note,label.note{font-size:1.1rem!important}
|
||||
p.success{text-align:center!important;margin-top:20px}
|
||||
span.spacer{margin:0 4px}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div>
|
||||
<div id="control_panel" class="divide">
|
||||
<label for="optFeatureRequest"><input type="radio" name="mode" id="optFeatureRequest" value="featurerequest" checked="checked"/><?=_('Product Suggestion')?></label>
|
||||
<label for="optBugReport"><input type="radio" name="mode" id="optBugReport" value="bugreport"/><?=_('Bug Report')?></label>
|
||||
<label for="optTroubleshoot"><input type="radio" name="mode" id="optTroubleshoot" value="troubleshoot"/><?=_('Troubleshoot')?></label>
|
||||
<label for="optComment"><input type="radio" name="mode" id="optComment" value="comment"/><?=_('Other Comment')?></label>
|
||||
<hr>
|
||||
</div>
|
||||
<div id="thanks_panel" class="allpanels"></div>
|
||||
<div id="featurerequest_panel" class="allpanels">
|
||||
<textarea id="featureDescription" class="feedback" placeholder="<?=_('Please summarize your suggestion here')?>."></textarea>
|
||||
<br>
|
||||
<input type="email" id="featureEmail" class="submit" autocomplete="off" spellcheck="false" placeholder="<?=_('Contact Email Address')?> (<?=_('optional')?>)">
|
||||
</div>
|
||||
<div id="bugreport_panel" class="allpanels">
|
||||
<textarea id="bugDescription" class="feedback"></textarea>
|
||||
<input type="email" id="bugEmail" class="submit" autocomplete="off" spellcheck="false" placeholder="<?=_('Contact Email Address')?>. (<?=_('optional')?>)">
|
||||
<label class="note" for="anonymize_bugReport"><input type="checkbox" id="anonymize_bugReport" class="anonymize" value="1" /> <?=_('Anonymize diagnostics (may make troubleshooting more difficult)')?></label>
|
||||
<p class="note"><b><?=_('NOTE')?>:</b> <i><?=_('Submission of this bug report will automatically send your system diagnostics to Lime Technology')?>.</i></p>
|
||||
</div>
|
||||
<div id="troubleshoot_panel" class="allpanels">
|
||||
<textarea id="troubleshootDescription" class="feedback"></textarea>
|
||||
<textarea id="troubleshootDetails" style="display: none;"></textarea>
|
||||
<input type="email" id="troubleshootEmail" class="submit" autocomplete="off" spellcheck="false" placeholder="<?=_('Contact Email Address')?>">
|
||||
<label class="note" for="anonymize_troubleshoot"><input type="checkbox" id="anonymize_troubleshoot" class="anonymize" value="1" /> <?=_('Anonymize diagnostics (may make troubleshooting more difficult)')?></label>
|
||||
<p class="note"><b><?=_('NOTE')?>:</b> <i><?=_('Submission of this troubleshooting request will automatically send your system diagnostics to Lime Technology')?>.</i></p>
|
||||
</div>
|
||||
<div id="comment_panel" class="allpanels">
|
||||
<textarea id="commentDescription" class="feedback" placeholder="<?=_('Type your question or comment to Lime Technology here')?>."></textarea>
|
||||
<br>
|
||||
<input type="email" id="commentEmail" class="submit" autocomplete="off" spellcheck="false" placeholder="<?=_('Contact Email Address')?> (<?=_('optional')?>)">
|
||||
</div>
|
||||
<div id="footer_panel">
|
||||
<a href="https://unraid.net" target="_blank"><?=_('Website')?></a><span class="spacer blue-text">|</span>
|
||||
<a href="https://forums.unraid.net" target="_blank"><?=_('Forum')?></a><span class="spacer blue-text">|</span>
|
||||
<a href="https://docs.unraid.net/" target="_blank"><?=_('Docs')?></a>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
var inkeyfile = '<?=$keyfile?>' ?? '';
|
||||
var unraid_osversion = '<?=$unraid['version']?>';
|
||||
var unraid_timestamp = <?=time()?>;
|
||||
var inpageurl = window.top.location.href;
|
||||
<div>
|
||||
<div id="control_panel" class="divide">
|
||||
<label for="optFeatureRequest"><input type="radio" name="mode" id="optFeatureRequest" value="featureRequest" checked="checked"><?=_('Product Suggestion')?></label>
|
||||
<label for="optBugReport"><input type="radio" name="mode" id="optBugReport" value="bugReport"><?=_('Bug Report')?></label>
|
||||
<label for="optTroubleshoot"><input type="radio" name="mode" id="optTroubleshoot" value="troubleshoot"><?=_('Troubleshoot')?></label>
|
||||
<label for="optComment"><input type="radio" name="mode" id="optComment" value="otherComment"><?=_('Other Comment')?></label>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
function featurerequest_reset() {
|
||||
$('#featureDescription').val('');
|
||||
$('#featureEmail').val('');
|
||||
}
|
||||
<div id="thanks_panel" class="allpanels"></div>
|
||||
|
||||
function bugreport_reset() {
|
||||
$('#bugDescription').val("<?=_('Bug Description')?>: \n\n\n\n<?=_('How to reproduce')?>: \n\n\n\n<?=_('Expected results')?>: \n\n\n\n<?=_('Actual results')?>: \n\n\n\n<?=_('Other information')?>: \n");
|
||||
$('#bugEmail').val('');
|
||||
}
|
||||
<div id="featureRequest_panel" class="allpanels">
|
||||
<textarea id="featureRequest" class="feedback" placeholder="<?=_('Please summarize your suggestion here')?>."></textarea>
|
||||
</div>
|
||||
|
||||
function troubleshoot_reset() {
|
||||
$('#troubleshootDescription').val("<?=_('Description')?>: \n\n\n\n<?=_('How to reproduce')?>: \n\n\n\n<?=_('Expected results')?>: \n\n\n\n<?=_('Actual results')?>: \n\n\n\n<?=_('Other information')?>: \n");
|
||||
$('#troubleshootEmail').val('');
|
||||
}
|
||||
<div id="bugReport_panel" class="allpanels">
|
||||
<textarea id="bugReport" class="feedback"></textarea>
|
||||
<label class="note" for="anonymize_bugReport"><input type="checkbox" id="anonymize_bugReport" class="anonymize" value="1"> <?=_('Anonymize diagnostics (may make troubleshooting more difficult)')?></label>
|
||||
<p class="note"><b><?=_('NOTE')?>:</b> <i><?=_('Submission of this bug report will automatically send your system diagnostics to Lime Technology')?>.</i></p>
|
||||
</div>
|
||||
|
||||
function comment_reset() {
|
||||
$('#commentDescription').val('');
|
||||
$('#commentEmail').val('');
|
||||
}
|
||||
<div id="troubleshoot_panel" class="allpanels">
|
||||
<textarea id="troubleshoot" class="feedback"></textarea>
|
||||
<textarea id="troubleshoot_details"></textarea>
|
||||
<label class="note" for="anonymize_troubleshoot"><input type="checkbox" id="anonymize_troubleshoot" class="anonymize" value="1"><?=_('Anonymize diagnostics (may make troubleshooting more difficult)')?></label>
|
||||
<p class="note"><b><?=_('NOTE')?>:</b> <i><?=_('Submission of this troubleshooting request will automatically send your system diagnostics to Lime Technology')?>.</i></p>
|
||||
</div>
|
||||
|
||||
function form_submit(url, params, panel, diagnostics) {
|
||||
panel.find('textarea,input').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) {
|
||||
params.diagnostics = data;
|
||||
form_submit(url, params, panel);
|
||||
}).fail(function() {
|
||||
$('div.spinner.fixed').hide();
|
||||
panel.fadeOut('fast').find('textarea,input').prop('disabled', false);
|
||||
var failure_message = "<p class='red-text' style='text-align:center;'><?=_('Sorry, an error occurred')?> (<?=_('Unable to generate system diagnostics')?> <?=_('Please try again later')?>).</p>";
|
||||
$('#thanks_panel').html(failure_message).fadeIn('fast');
|
||||
});
|
||||
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 = "<p class='red-text' style='text-align:center;'><?=_('Sorry, an error occurred')?>. <?=_('Please try again later')?>.</p>";
|
||||
$('#thanks_panel').html(failure_message).fadeIn('fast');
|
||||
} else {
|
||||
data.message = data.message || '';
|
||||
var url_parts = url.split('/');
|
||||
var success_message = '<div style="text-align:center"><h2 style="color:#4f8a10!important"><?=_("Thank You")?>!</h2><img src="/webGui/images/feedback_' + url_parts[4] + '.png"/><p class="success">' + data.message + '</p></div>';
|
||||
$('#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 = "<p class='red-text' style='text-align:center;'><?=_('Sorry, an error occurred')?>. <?=_('Please try again later')?>.</p>";
|
||||
$('#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);
|
||||
}
|
||||
<div id="otherComment_panel" class="allpanels">
|
||||
<textarea id="otherComment" class="feedback" placeholder="<?=_('Type your question or comment to Lime Technology here')?>."></textarea>
|
||||
</div>
|
||||
|
||||
$(function() {
|
||||
$('#control_panel input[type=radio]').click(function() {
|
||||
var showPanel = '#' + $('#control_panel input[type=radio]:checked').val() + '_panel';
|
||||
$('.allpanels').not(showPanel).fadeOut('fast');
|
||||
var loadfunction = window[$('#control_panel input[type=radio]:checked').val() + '_load'];
|
||||
if (typeof loadfunction !== 'undefined' && $.isFunction(loadfunction)) {
|
||||
loadfunction();
|
||||
} else {
|
||||
$(showPanel).fadeIn('fast');
|
||||
}
|
||||
});
|
||||
<div id="footer_panel">
|
||||
<input type="email" id="email" autocomplete="off" spellcheck="false">
|
||||
<a href="https://unraid.net" target="_blank"><?=_('Website')?></a><span class="spacer blue-text">|</span>
|
||||
<a href="https://forums.unraid.net" target="_blank"><?=_('Forum')?></a><span class="spacer blue-text">|</span>
|
||||
<a href="https://docs.unraid.net/" target="_blank"><?=_('Docs')?></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
$('button.confirm').text("<?=_('Cancel')?>");
|
||||
if ($('#submit-button').length == 0) $('button.confirm').before('<input type="button" id="submit-button" value="<?=_('Submit')?>">');
|
||||
<script>
|
||||
String.prototype.md5 = function(){
|
||||
// Original copyright (c) Paul Johnston & Greg Holt.
|
||||
var hc = '0123456789abcdef';
|
||||
function rh(n){var j,s='';for (j=0;j<=3;j++) s+=hc.charAt((n>>(j*8+4))&0x0F)+hc.charAt((n>>(j*8))&0x0F);return s;}
|
||||
function ad(x,y){var l=(x&0xFFFF)+(y&0xFFFF);var m=(x>>16)+(y>>16)+(l>>16);return (m<<16)|(l&0xFFFF);}
|
||||
function rl(n,c){return (n<<c)|(n>>>(32-c));}
|
||||
function cm(q,a,b,x,s,t){return ad(rl(ad(ad(a,q),ad(x,t)),s),b);}
|
||||
function ff(a,b,c,d,x,s,t){return cm((b&c)|((~b)&d),a,b,x,s,t);}
|
||||
function gg(a,b,c,d,x,s,t){return cm((b&d)|(c&(~d)),a,b,x,s,t);}
|
||||
function hh(a,b,c,d,x,s,t){return cm(b^c^d,a,b,x,s,t);}
|
||||
function ii(a,b,c,d,x,s,t){return cm(c^(b|(~d)),a,b,x,s,t);}
|
||||
function sb(x) {
|
||||
var i;var nblk=((x.length+8)>>6)+1;var blks=new Array(nblk*16);for (i=0;i<nblk*16;i++) blks[i]=0;
|
||||
for (i=0;i<x.length;i++) blks[i>>2]|=x.charCodeAt(i)<<((i%4)*8);
|
||||
blks[i>>2]|=0x80<<((i%4)*8);blks[nblk*16-2]=x.length*8;return blks;
|
||||
}
|
||||
var i,x=sb(''+this),a=1732584193,b=-271733879,c=-1732584194,d=271733878,olda,oldb,oldc,oldd;
|
||||
for (i=0;i<x.length;i+=16) {olda=a;oldb=b;oldc=c;oldd=d;
|
||||
a=ff(a,b,c,d,x[i+ 0], 7, -680876936);d=ff(d,a,b,c,x[i+ 1],12, -389564586);c=ff(c,d,a,b,x[i+ 2],17, 606105819);
|
||||
b=ff(b,c,d,a,x[i+ 3],22,-1044525330);a=ff(a,b,c,d,x[i+ 4], 7, -176418897);d=ff(d,a,b,c,x[i+ 5],12, 1200080426);
|
||||
c=ff(c,d,a,b,x[i+ 6],17,-1473231341);b=ff(b,c,d,a,x[i+ 7],22, -45705983);a=ff(a,b,c,d,x[i+ 8], 7, 1770035416);
|
||||
d=ff(d,a,b,c,x[i+ 9],12,-1958414417);c=ff(c,d,a,b,x[i+10],17, -42063);b=ff(b,c,d,a,x[i+11],22,-1990404162);
|
||||
a=ff(a,b,c,d,x[i+12], 7, 1804603682);d=ff(d,a,b,c,x[i+13],12, -40341101);c=ff(c,d,a,b,x[i+14],17,-1502002290);
|
||||
b=ff(b,c,d,a,x[i+15],22, 1236535329);a=gg(a,b,c,d,x[i+ 1], 5, -165796510);d=gg(d,a,b,c,x[i+ 6], 9,-1069501632);
|
||||
c=gg(c,d,a,b,x[i+11],14, 643717713);b=gg(b,c,d,a,x[i+ 0],20, -373897302);a=gg(a,b,c,d,x[i+ 5], 5, -701558691);
|
||||
d=gg(d,a,b,c,x[i+10], 9, 38016083);c=gg(c,d,a,b,x[i+15],14, -660478335);b=gg(b,c,d,a,x[i+ 4],20, -405537848);
|
||||
a=gg(a,b,c,d,x[i+ 9], 5, 568446438);d=gg(d,a,b,c,x[i+14], 9,-1019803690);c=gg(c,d,a,b,x[i+ 3],14, -187363961);
|
||||
b=gg(b,c,d,a,x[i+ 8],20, 1163531501);a=gg(a,b,c,d,x[i+13], 5,-1444681467);d=gg(d,a,b,c,x[i+ 2], 9, -51403784);
|
||||
c=gg(c,d,a,b,x[i+ 7],14, 1735328473);b=gg(b,c,d,a,x[i+12],20,-1926607734);a=hh(a,b,c,d,x[i+ 5], 4, -378558);
|
||||
d=hh(d,a,b,c,x[i+ 8],11,-2022574463);c=hh(c,d,a,b,x[i+11],16, 1839030562);b=hh(b,c,d,a,x[i+14],23, -35309556);
|
||||
a=hh(a,b,c,d,x[i+ 1], 4,-1530992060);d=hh(d,a,b,c,x[i+ 4],11, 1272893353);c=hh(c,d,a,b,x[i+ 7],16, -155497632);
|
||||
b=hh(b,c,d,a,x[i+10],23,-1094730640);a=hh(a,b,c,d,x[i+13], 4, 681279174);d=hh(d,a,b,c,x[i+ 0],11, -358537222);
|
||||
c=hh(c,d,a,b,x[i+ 3],16, -722521979);b=hh(b,c,d,a,x[i+ 6],23, 76029189);a=hh(a,b,c,d,x[i+ 9], 4, -640364487);
|
||||
d=hh(d,a,b,c,x[i+12],11, -421815835);c=hh(c,d,a,b,x[i+15],16, 530742520);b=hh(b,c,d,a,x[i+ 2],23, -995338651);
|
||||
a=ii(a,b,c,d,x[i+ 0], 6, -198630844);d=ii(d,a,b,c,x[i+ 7],10, 1126891415);c=ii(c,d,a,b,x[i+14],15,-1416354905);
|
||||
b=ii(b,c,d,a,x[i+ 5],21, -57434055);a=ii(a,b,c,d,x[i+12], 6, 1700485571);d=ii(d,a,b,c,x[i+ 3],10,-1894986606);
|
||||
c=ii(c,d,a,b,x[i+10],15, -1051523);b=ii(b,c,d,a,x[i+ 1],21,-2054922799);a=ii(a,b,c,d,x[i+ 8], 6, 1873313359);
|
||||
d=ii(d,a,b,c,x[i+15],10, -30611744);c=ii(c,d,a,b,x[i+ 6],15,-1560198380);b=ii(b,c,d,a,x[i+13],21, 1309151649);
|
||||
a=ii(a,b,c,d,x[i+ 4], 6, -145523070);d=ii(d,a,b,c,x[i+11],10,-1120210379);c=ii(c,d,a,b,x[i+ 2],15, 718787259);
|
||||
b=ii(b,c,d,a,x[i+ 9],21, -343485551);a=ad(a,olda);b=ad(b,oldb);c=ad(c,oldc);d=ad(d,oldd);
|
||||
}
|
||||
return rh(a)+rh(b)+rh(c)+rh(d);
|
||||
}
|
||||
|
||||
$('input[name=mode]').click(function(){$('#submit-button').prop('disabled',false);});
|
||||
var inkeyfile = '<?=$keyfile?>';
|
||||
var unraid_osversion = '<?=$unraid['version']?>';
|
||||
var unraid_timestamp = <?=time()?>;
|
||||
var inpageurl = window.top.location.href;
|
||||
var md5 = {};
|
||||
|
||||
$('#submit-button').click(function() {
|
||||
switch ($('input[name=mode]:checked').val()) {
|
||||
case 'featurerequest':
|
||||
if ($('#featureDescription').val() === '') return;
|
||||
form_submit('https://keys.lime-technology.com/feedback/featurerequest',{description: $('#featureDescription').val(), email: $('#featureEmail').val()}, $('#featurerequest_panel'));
|
||||
break;
|
||||
case 'bugreport':
|
||||
if ($('#bugDescription').val() === '') return;
|
||||
form_submit('https://keys.lime-technology.com/feedback/bugreport',{description: $('#bugDescription').val(), email: $('#bugEmail').val()}, $('#bugreport_panel'), true);
|
||||
break;
|
||||
case 'troubleshoot':
|
||||
if ($('#troubleshootDescription').val() === '') return;
|
||||
if ($('#troubleshootEmail').val() === '') return alert('Email is required for troubleshooting requests');
|
||||
// @todo - update this to use a new troubleshoot endpoint
|
||||
form_submit('https://keys.lime-technology.com/feedback/bugreport',{description: $('#troubleshootDescription').val()+'\n\n'+$('#troubleshootDetails').val(), email: $('#troubleshootEmail').val()}, $('#troubleshoot_panel'), true);
|
||||
break;
|
||||
case 'comment':
|
||||
if ($('#commentDescription').val() === '') return;
|
||||
form_submit('https://keys.lime-technology.com/feedback/comment',{description: $('#commentDescription').val(), email: $('#commentEmail').val()}, $('#comment_panel'));
|
||||
break;
|
||||
}
|
||||
});
|
||||
function validInput(input,panel) {
|
||||
return input.md5() == md5[panel];
|
||||
}
|
||||
|
||||
featurerequest_reset();
|
||||
bugreport_reset();
|
||||
troubleshoot_reset();
|
||||
comment_reset();
|
||||
$('#optFeatureRequest').click();
|
||||
function validEmail(input) {
|
||||
var validRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
||||
return input.prop('required')===false || input.val().match(validRegex);
|
||||
}
|
||||
|
||||
function feedback_reset() {
|
||||
$('#featureRequest').val("");
|
||||
md5.featureRequest = $('#featureRequest').val().md5();
|
||||
|
||||
$('#bugReport').val("<?=_('Bug Description')?>:\n\n\n\n<?=_('How to reproduce')?>:\n\n\n\n<?=_('Expected results')?>:\n\n\n\n<?=_('Actual results')?>:\n\n\n\n<?=_('Other information')?>:\n");
|
||||
md5.bugReport = $('#bugReport').val().md5();
|
||||
|
||||
$('#troubleshoot').val("<?=_('Description')?>:\n\n\n\n<?=_('How to reproduce')?>:\n\n\n\n<?=_('Expected results')?>:\n\n\n\n<?=_('Actual results')?>:\n\n\n\n<?=_('Other information')?>:\n");
|
||||
md5.troubleshoot = $('#troubleshoot').val().md5();
|
||||
|
||||
$('#otherComment').val("");
|
||||
md5.otherComment = $('#otherComment').val().md5();
|
||||
}
|
||||
|
||||
function form_submit(url, params, panel, diagnostics) {
|
||||
panel.find('textarea,input').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) {
|
||||
params.diagnostics = data;
|
||||
form_submit(url, params, panel);
|
||||
}).fail(function() {
|
||||
$('div.spinner.fixed').hide();
|
||||
panel.fadeOut('fast').find('textarea,input').prop('disabled', false);
|
||||
var failure_message = "<p class='red-text' style='text-align:center;'><?=_('Sorry, an error occurred')?> (<?=_('Unable to generate system diagnostics')?> <?=_('Please try again later')?>).</p>";
|
||||
$('#thanks_panel').html(failure_message).fadeIn('fast');
|
||||
});
|
||||
</script>
|
||||
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 = "<p class='red-text' style='text-align:center;'><?=_('Sorry, an error occurred')?>. <?=_('Please try again later')?>.</p>";
|
||||
$('#thanks_panel').html(failure_message).fadeIn('fast');
|
||||
} else {
|
||||
data.message = data.message || '';
|
||||
var url_parts = url.split('/');
|
||||
var success_message = '<div style="text-align:center"><h2 style="color:#4f8a10!important"><?=_("Thank You")?>!</h2><img src="/webGui/images/feedback_' + url_parts[4] + '.png"/><p class="success">' + data.message + '</p></div>';
|
||||
$('#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 = "<p class='red-text' style='text-align:center;'><?=_('Sorry, an error occurred')?>. <?=_('Please try again later')?>.</p>";
|
||||
$('#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("<?=_('Cancel')?>");
|
||||
if ($('#submit-button').length == 0) $('button.confirm').before('<input type="button" id="submit-button" value="<?=_('Submit')?>" disabled>');
|
||||
|
||||
$('input[name=mode]').click(function(){
|
||||
var label = $('input[name=mode]:checked').val();
|
||||
var required = (label == 'troubleshoot');
|
||||
var email = "<?=_('Contact Email Address')?>";
|
||||
var option = " (<?=_('optional')?>)";
|
||||
$('#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();
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user