mirror of
https://github.com/unraid/webgui.git
synced 2026-01-07 18:19:54 -06:00
213 lines
11 KiB
PHP
Executable File
213 lines
11 KiB
PHP
Executable File
#!/usr/bin/php -q
|
|
<?PHP
|
|
/* Copyright 2005-2023, Lime Technology
|
|
* Copyright 2012-2023, Bergware International.
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License version 2,
|
|
* as published by the Free Software Foundation.
|
|
*
|
|
* The above copyright notice and this permission notice shall be included in
|
|
* all copies or substantial portions of the Software.
|
|
*/
|
|
|
|
$docroot ??= ($_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp');
|
|
require_once "$docroot/webGui/include/Helpers.php";
|
|
extract(parse_plugin_cfg('dynamix', true));
|
|
|
|
// add translations
|
|
$_SERVER['REQUEST_URI'] = '';
|
|
$login_locale = _var($display, 'locale');
|
|
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%';
|
|
?>
|
|
<!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>
|
|
</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;
|
|
|
|
function featurerequest_reset() {
|
|
$('#featureDescription').val('');
|
|
$('#featureEmail').val('');
|
|
}
|
|
|
|
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('');
|
|
}
|
|
|
|
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('');
|
|
}
|
|
|
|
function comment_reset() {
|
|
$('#commentDescription').val('');
|
|
$('#commentEmail').val('');
|
|
}
|
|
|
|
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);
|
|
}
|
|
|
|
$(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');
|
|
}
|
|
});
|
|
|
|
$('button.confirm').text("<?=_('Cancel')?>");
|
|
if ($('#submit-button').length == 0) $('button.confirm').before('<input type="button" id="submit-button" value="<?=_('Submit')?>">');
|
|
|
|
$('input[name=mode]').click(function(){$('#submit-button').prop('disabled',false);});
|
|
|
|
$('#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;
|
|
}
|
|
});
|
|
|
|
featurerequest_reset();
|
|
bugreport_reset();
|
|
troubleshoot_reset();
|
|
comment_reset();
|
|
$('#optFeatureRequest').click();
|
|
});
|
|
</script>
|
|
</body>
|
|
</html>
|