Merge branch 'dev' into dxcc_award_optimized

This commit is contained in:
Andreas Kristiansen
2026-02-26 19:14:15 +01:00
86 changed files with 7016 additions and 4619 deletions

View File

@@ -55,7 +55,7 @@
<?php if($adif_errors): ?>
<div class="mt-2 ms-2 me-2">
<h3 class="text-danger"><?= __("Import details / possible problems") ?></h3>
<br> <?= sprintf(__("Check %s for hints about errors in ADIF files."), "<a target=\"_blank\" href=\"https://github.com/wavelog/Wavelog/wiki/ADIF-file-can't-be-imported\">Wavelog Wiki</a>") ?>
<br> <?= sprintf(__("Check %s for hints about errors in ADIF files."), "<a target=\"_blank\" href=\"https://docs.wavelog.org/troubleshooting/adif-cant-import/\">Wavelog Wiki</a>") ?>
<p><?= __("You might have ADIF errors. Please check the following information:") ?></p>
<div class="border rounded bg-light p-3" style="max-height: 250px; overflow-y: auto;">

View File

@@ -13,7 +13,7 @@
<p class="card-text"><?= __("Links to 3rd-Party-Software which works with Wavelog:")?><ul>
<li><a href="https://github.com/wavelog/WaveLogGate/releases" target="_thirdparty">WaveLogGate</a></li>
<li><a href="https://sourceforge.net/projects/wsjt-x-improved/files/" target="_thirdparty">WSJT-X Improved Plus</a></li>
<li><a href="https://github.com/wavelog/Wavelog/wiki/Third-Party-Tools" target="_thirdparty"><?=__("More Tools")?></a></li>
<li><a href="https://docs.wavelog.org/user-guide/integrations/third-party-tools/" target="_thirdparty"><?=__("More Tools")?></a></li>
</ul>
</p>
<p class="card-text"><span class="badge text-bg-warning"><?= __("API URL"); ?></span> <?= __("The API URL for this Wavelog instance is"); ?>: <span class="api-url" id="apiUrl"><code class="ms-3 me-3"><?php echo site_url(); ?></code></span><span data-bs-toggle="tooltip" title="<?= __("Copy to clipboard"); ?>" onClick='copyApiUrl(apiSiteUrl)'><i class="copy-icon fas fa-copy"></i></span></p>

View File

@@ -113,14 +113,18 @@
<input class="form-check-input" type="checkbox" name="lotw" value="1" id="lotw" <?php if ($this->input->post('lotw', TRUE) || $this->input->method() !== 'post') echo ' checked="checked"'; ?> >
<label class="form-check-label" for="lotw"><?= __("LoTW"); ?></label>
</div>
<div class="form-check-inline">
<div class="form-check-inline">
<input class="form-check-input" type="checkbox" name="eqsl" value="1" id="eqsl" <?php if ($this->input->post('eqsl', TRUE)) echo ' checked="checked"'; ?> >
<label class="form-check-label" for="eqsl"><?= __("eQSL"); ?></label>
</div>
<div class="form-check-inline">
<div class="form-check-inline">
<input class="form-check-input" type="checkbox" name="qrz" value="1" id="qrz" <?php if ($this->input->post('qrz', TRUE)) echo ' checked="checked"'; ?> >
<label class="form-check-label" for="qrz"><?= __("QRZ.com"); ?></label>
</div>
<div class="form-check-inline">
<input class="form-check-input" type="checkbox" name="clublog" value="1" id="clublog" <?php if ($this->input->post('clublog', TRUE)) echo ' checked="checked"'; ?> >
<label class="form-check-label" for="clublog"><?= __("Clublog"); ?></label>
</div>
</div>
</div>
@@ -185,6 +189,13 @@
<?php
$i = 1;
if ($cq_array) {
echo __('Legend:');
echo '<pre>'.__("(Q)SL-Paper-Card").", ";
echo __("(L)oTW").", ";
echo __("(e)QSL").", ";
echo __('QR(Z)-"confirmation"').", ";
echo __("(C)lublog").", ";
echo __("(W)orked").'</pre>';
echo "
<table style='width:100%' class='table tablecq table-sm table-bordered table-hover table-striped table-condensed text-center'>
<thead>
@@ -213,24 +224,58 @@
<thead>
<tr><td></td>";
foreach($bands as $band) {
echo '<td>' . $band . '</td>';
}
echo "<td>" . __("Total") . "</td></tr>
</thead>
$addsat='';
foreach($bands as $band) {
if ($band != 'SAT') {
echo '<td>' . $band . '</td>';
} else {
$addsat='<td>' . $band . '</td>';
}
}
if ($posted_band != 'SAT') {
echo '<td><b>' . __("Total (ex SAT)") . '</b></td>';
}
if (count($bands) > 1) {
echo '<td class="spacingcell"></td>';
}
echo $addsat;
echo "</thead>
<tbody>
<tr><td>" . __("Total worked") . "</td>";
foreach ($cq_summary['worked'] as $dxcc) { // Fills the table with the data
echo '<td style="text-align: center">' . $dxcc . '</td>';
$sat_value = '';
foreach ($cq_summary['worked'] as $cqz => $value) {
if ($posted_band == 'SAT' && $cqz == 'Total') {
continue;
}
if ($cqz == 'SAT') {
$sat_value = '<td style="text-align: center"' . ($cqz === 'Total' ? " class='fw-bold'" : '') . '>' . $value . '</td>';
} else {
echo '<td style="text-align: center"' . ($cqz === 'Total' ? " class='fw-bold'" : '') . '>' . $value . '</td>';
}
}
if (count($bands) > 1) {
echo '<td class="spacingcell"></td>';
}
echo $sat_value;
echo "</tr><tr>
<td>" . __("Total confirmed") . "</td>";
foreach ($cq_summary['confirmed'] as $dxcc) { // Fills the table with the data
echo '<td style="text-align: center">' . $dxcc . '</td>';
$sat_value = '';
foreach ($cq_summary['confirmed'] as $cqz => $value) {
if ($posted_band == 'SAT' && $cqz == 'Total') {
continue;
}
if ($cqz == 'SAT') {
$sat_value = '<td style="text-align: center"' . ($cqz === 'Total' ? " class='fw-bold'" : '') . '>' . $value . '</td>';
} else {
echo '<td style="text-align: center"' . ($cqz === 'Total' ? " class='fw-bold'" : '') . '>' . $value . '</td>';
}
}
if (count($bands) > 1) {
echo '<td class="spacingcell"></td>';
}
echo $sat_value;
echo '</tr>
</table>

View File

@@ -31,96 +31,130 @@
</div>
<!-- End of Award Info Box -->
<form class="form" action="<?php echo site_url('awards/itu'); ?>" method="post" enctype="multipart/form-data">
<fieldset>
<div class="mb-4 text-center">
<div class="dropdown" data-bs-auto-close="outside">
<button class="btn btn-sm btn-primary dropdown-toggle" type="button" id="filterDropdown" data-bs-toggle="dropdown" aria-expanded="false"><?= __("Filters") ?></button>
<button id="button1id" type="submit" name="button1id" class="btn btn-sm btn-primary"><?= __("Show"); ?></button>
<?php if ($itu_array) {
?><button type="button" onclick="load_itu_map();" class="btn btn-info btn-sm"><i class="fas fa-globe-americas"></i> <?= __("Show ITU Zone Map"); ?></button>
<?php }?>
<!-- Multiple Checkboxes (inline) -->
<div class="mb-3 row">
<div class="col-md-2" for="checkboxes"><?= __("Worked") . ' / ' . __("Confirmed")?></div>
<div class="col-md-10">
<div class="form-check-inline">
<input class="form-check-input" type="checkbox" name="worked" id="worked" value="1" <?php if ($this->input->post('worked') || $this->input->method() !== 'post') echo ' checked="checked"'; ?> >
<label class="form-check-label" for="worked"><?= __("Show worked"); ?></label>
</div>
<div class="form-check-inline">
<input class="form-check-input" type="checkbox" name="confirmed" id="confirmed" value="1" <?php if ($this->input->post('confirmed') || $this->input->method() !== 'post') echo ' checked="checked"'; ?> >
<label class="form-check-label" for="confirmed"><?= __("Show confirmed"); ?></label>
</div>
<div class="form-check-inline">
<input class="form-check-input" type="checkbox" name="notworked" id="notworked" value="1" <?php if ($this->input->post('notworked') || $this->input->method() !== 'post') echo ' checked="checked"'; ?> >
<label class="form-check-label" for="notworked"><?= __("Show not worked"); ?></label>
</div>
</div>
</div>
<!-- Dropdown Menu with Filter Content -->
<div class="dropdown-menu start-50 translate-middle-x p-3 mt-5 dropdown-filters-responsive" aria-labelledby="filterDropdown" style="max-width: 800px;">
<div class="card-body filterbody">
<div class="row mb-3">
<label class="form-label" for="checkboxes"><?= __("Date Presets") . ": " ?></label>
<div class="d-flex gap-1 d-flex flex-wrap">
<button type="button" class="btn btn-primary btn-sm flex-shrink-0" onclick="applyPreset('today')"><?= __("Today") ?></button>
<button type="button" class="btn btn-primary btn-sm flex-shrink-0" onclick="applyPreset('yesterday')"><?= __("Yesterday") ?></button>
<button type="button" class="btn btn-primary btn-sm flex-shrink-0" onclick="applyPreset('last7days')"><?= __("Last 7 Days") ?></button>
<button type="button" class="btn btn-primary btn-sm flex-shrink-0" onclick="applyPreset('last30days')"><?= __("Last 30 Days") ?></button>
<button type="button" class="btn btn-primary btn-sm flex-shrink-0" onclick="applyPreset('thismonth')"><?= __("This Month") ?></button>
<button type="button" class="btn btn-primary btn-sm flex-shrink-0" onclick="applyPreset('lastmonth')"><?= __("Last Month") ?></button>
<button type="button" class="btn btn-primary btn-sm flex-shrink-0" onclick="applyPreset('thisyear')"><?= __("This Year") ?></button>
<button type="button" class="btn btn-primary btn-sm flex-shrink-0" onclick="applyPreset('lastyear')"><?= __("Last Year") ?></button>
<button type="button" class="btn btn-danger btn-sm flex-shrink-0" onclick="resetDates()"><i class="fas fa-times"></i> <?= __("Clear") ?></button>
</div>
</div>
<div class="mb-3 row">
<div class="col-md-2"><?= __("Show QSO with QSL Type"); ?></div>
<div class="col-md-10">
<div class="form-check-inline">
<input class="form-check-input" type="checkbox" name="qsl" value="1" id="qsl" <?php if ($this->input->post('qsl') || $this->input->method() !== 'post') echo ' checked="checked"'; ?> >
<label class="form-check-label" for="qsl"><?= __("QSL Card"); ?></label>
</div>
<div class="form-check-inline">
<input class="form-check-input" type="checkbox" name="lotw" value="1" id="lotw" <?php if ($this->input->post('lotw') || $this->input->method() !== 'post') echo ' checked="checked"'; ?> >
<label class="form-check-label" for="lotw"><?= __("LoTW"); ?></label>
</div>
<div class="form-check-inline">
<input class="form-check-input" type="checkbox" name="eqsl" value="1" id="eqsl" <?php if ($this->input->post('eqsl')) echo ' checked="checked"'; ?> >
<label class="form-check-label" for="eqsl"><?= __("eQSL"); ?></label>
</div>
<div class="form-check-inline">
<input class="form-check-input" type="checkbox" name="qrz" value="1" id="qrz" <?php if ($this->input->post('qrz')) echo ' checked="checked"'; ?> >
<label class="form-check-label" for="qrz"><?= __("QRZ.com"); ?></label>
</div>
</div>
</div>
<div class="mb-3 row">
<div class="col-md-2 control-label" for="checkboxes"><?= __("Date from"); ?></div>
<div class="col-md-10">
<div class="form-check-inline">
<input name="dateFrom" id="dateFrom" type="date" class="form-control form-control-sm w-auto border border-secondary" <?php if ($this->input->post('dateFrom', TRUE)) echo 'value="' . $this->input->post('dateFrom', TRUE) . '"'; ?>>
</div>
</div>
</div>
<div class="mb-3 row">
<div class="col-md-2 control-label" for="checkboxes"><?= __("Date to"); ?></div>
<div class="col-md-10">
<div class="form-check-inline">
<input name="dateTo" id="dateTo" type="date" class="form-control form-control-sm w-auto border border-secondary" <?php if ($this->input->post('dateTo', TRUE)) echo 'value="' . $this->input->post('dateTo', TRUE) . '"'; ?>>
</div>
</div>
</div>
<div class="mb-3 row">
<label class="col-md-2 control-label" for="band2"><?= __("Band"); ?></label>
<div class="col-md-2">
<select id="band2" name="band" class="form-select form-select-sm">
<option value="All" <?php if ($this->input->post('band') == "All" || $this->input->method() !== 'post') echo ' selected'; ?> ><?= __("All"); ?></option>
<?php foreach($worked_bands as $band) {
echo '<option value="' . $band . '"';
if ($this->input->post('band') == $band) echo ' selected';
echo '>' . $band . '</option>'."\n";
} ?>
</select>
</div>
</div>
<!-- Multiple Checkboxes (inline) -->
<div class="mb-3 row">
<div class="col-md-2" for="checkboxes"><?= __("Worked") . ' / ' . __("Confirmed")?></div>
<div class="col-md-10">
<div class="form-check-inline">
<input class="form-check-input" type="checkbox" name="worked" id="worked" value="1" <?php if ($this->input->post('worked', TRUE) || $this->input->method() !== 'post') echo ' checked="checked"'; ?> >
<label class="form-check-label" for="worked"><?= __("Show worked"); ?></label>
</div>
<div class="form-check-inline">
<input class="form-check-input" type="checkbox" name="confirmed" id="confirmed" value="1" <?php if ($this->input->post('confirmed', TRUE) || $this->input->method() !== 'post') echo ' checked="checked"'; ?> >
<label class="form-check-label" for="confirmed"><?= __("Show confirmed"); ?></label>
</div>
<div class="form-check-inline">
<input class="form-check-input" type="checkbox" name="notworked" id="notworked" value="1" <?php if ($this->input->post('notworked', TRUE) || $this->input->method() !== 'post') echo ' checked="checked"'; ?> >
<label class="form-check-label" for="notworked"><?= __("Show not worked"); ?></label>
</div>
</div>
</div>
<div class="mb-3 row">
<label class="col-md-2 control-label" for="mode"><?= __("Mode"); ?></label>
<div class="col-md-2">
<select id="mode" name="mode" class="form-select form-select-sm">
<option value="All" <?php if ($this->input->post('mode') == "All" || $this->input->method() !== 'mode') echo ' selected'; ?>><?= __("All"); ?></option>
<?php
foreach($modes->result() as $mode){
if ($mode->submode == null) {
echo '<option value="' . $mode->mode . '"';
if ($this->input->post('mode') == $mode->mode) echo ' selected';
echo '>'. $mode->mode . '</option>'."\n";
} else {
echo '<option value="' . $mode->submode . '"';
if ($this->input->post('mode') == $mode->submode) echo ' selected';
echo '>' . $mode->submode . '</option>'."\n";
<div class="mb-3 row">
<div class="col-md-2"><?= __("Show QSO with QSL Type"); ?></div>
<div class="col-md-10">
<div class="form-check-inline">
<input class="form-check-input" type="checkbox" name="qsl" value="1" id="qsl" <?php if ($this->input->post('qsl', TRUE) || $this->input->method() !== 'post') echo ' checked="checked"'; ?> >
<label class="form-check-label" for="qsl"><?= __("QSL Card"); ?></label>
</div>
<div class="form-check-inline">
<input class="form-check-input" type="checkbox" name="lotw" value="1" id="lotw" <?php if ($this->input->post('lotw', TRUE) || $this->input->method() !== 'post') echo ' checked="checked"'; ?> >
<label class="form-check-label" for="lotw"><?= __("LoTW"); ?></label>
</div>
<div class="form-check-inline">
<input class="form-check-input" type="checkbox" name="eqsl" value="1" id="eqsl" <?php if ($this->input->post('eqsl', TRUE)) echo ' checked="checked"'; ?> >
<label class="form-check-label" for="eqsl"><?= __("eQSL"); ?></label>
</div>
<div class="form-check-inline">
<input class="form-check-input" type="checkbox" name="qrz" value="1" id="qrz" <?php if ($this->input->post('qrz', TRUE)) echo ' checked="checked"'; ?> >
<label class="form-check-label" for="qrz"><?= __("QRZ.com"); ?></label>
</div>
<div class="form-check-inline">
<input class="form-check-input" type="checkbox" name="clublog" value="1" id="clublog" <?php if ($this->input->post('clublog', TRUE)) echo ' checked="checked"'; ?> >
<label class="form-check-label" for="clublog"><?= __("Clublog"); ?></label>
</div>
</div>
</div>
<div class="mb-3 row">
<label class="col-md-2 control-label" for="band2"><?= __("Band"); ?></label>
<div class="col-md-3">
<select id="band2" name="band" class="form-select form-select-sm">
<option value="All" <?php if ($this->input->post('band', TRUE) == "All" || $this->input->method() !== 'post') echo ' selected'; ?> ><?= __("All"); ?></option>
<?php foreach($worked_bands as $band) {
echo '<option value="' . $band . '"';
if ($this->input->post('band', TRUE) == $band) echo ' selected';
echo '>' . $band . '</option>'."\n";
} ?>
</select>
</div>
</div>
<div class="mb-3 row">
<label class="col-md-2 control-label" for="mode"><?= __("Mode"); ?></label>
<div class="col-md-3">
<select id="mode" name="mode" class="form-select form-select-sm">
<option value="All" <?php if ($this->input->post('mode', TRUE) == "All" || $this->input->method() !== 'mode') echo ' selected'; ?>><?= __("All"); ?></option>
<?php
foreach($modes->result() as $mode){
if ($mode->submode == null) {
echo '<option value="' . $mode->mode . '"';
if ($this->input->post('mode', TRUE) == $mode->mode) echo ' selected';
echo '>'. $mode->mode . '</option>'."\n";
} else {
echo '<option value="' . $mode->submode . '"';
if ($this->input->post('mode', TRUE) == $mode->submode) echo ' selected';
echo '>' . $mode->submode . '</option>'."\n";
}
}
}
?>
</select>
?>
</select>
</div>
</div>
</div>
<div class="mb-3 row">
<label class="col-md-2 control-label" for="button1id"></label>
<div class="col-md-10">
<button id="button2id" type="reset" name="button2id" class="btn btn-sm btn-warning"><?= __("Reset"); ?></button>
<button id="button1id" type="submit" name="button1id" class="btn btn-sm btn-primary"><?= __("Show"); ?></button>
<?php if ($itu_array) {
?><button type="button" onclick="load_itu_map();" class="btn btn-info btn-sm"><i class="fas fa-globe-americas"></i> <?= __("Show ITU Zone Map"); ?></button>
<?php }?>
</div>
</div>
</fieldset>
</div>
</form>
<ul class="nav nav-tabs" id="myTab" role="tablist">
@@ -146,12 +180,19 @@
<?php
$i = 1;
if ($itu_array) {
echo __('Legend:');
echo '<pre>'.__("(Q)SL-Paper-Card").", ";
echo __("(L)oTW").", ";
echo __("(e)QSL").", ";
echo __('QR(Z)-"confirmation"').", ";
echo __("(C)lublog").", ";
echo __("(W)orked").'</pre>';
echo "
<table style='width:100%' class='table tableitu table-sm table-bordered table-hover table-striped table-condensed text-center'>
<thead>
<tr>
<td>#</td>
<td>".__("ITU Zone")."</td>";
<td>" . __("ITU Zone") . "</td>";
foreach($bands as $band) {
echo '<td>' . $band . '</td>';
}
@@ -174,24 +215,58 @@
<thead>
<tr><td></td>";
foreach($bands as $band) {
echo '<td>' . $band . '</td>';
}
echo "<td>" . __("Total") . "</td></tr>
</thead>
$addsat='';
foreach($bands as $band) {
if ($band != 'SAT') {
echo '<td>' . $band . '</td>';
} else {
$addsat='<td>' . $band . '</td>';
}
}
if ($posted_band != 'SAT') {
echo '<td><b>' . __("Total (ex SAT)") . '</b></td>';
}
if (count($bands) > 1) {
echo '<td class="spacingcell"></td>';
}
echo $addsat;
echo "</thead>
<tbody>
<tr><td>" . __("Total worked") . "</td>";
foreach ($itu_summary['worked'] as $dxcc) { // Fills the table with the data
echo '<td style="text-align: center">' . $dxcc . '</td>';
$sat_value = '';
foreach ($itu_summary['worked'] as $ituz => $value) {
if ($posted_band == 'SAT' && $ituz == 'Total') {
continue;
}
if ($ituz == 'SAT') {
$sat_value = '<td style="text-align: center"' . ($ituz === 'Total' ? " class='fw-bold'" : '') . '>' . $value . '</td>';
} else {
echo '<td style="text-align: center"' . ($ituz === 'Total' ? " class='fw-bold'" : '') . '>' . $value . '</td>';
}
}
if (count($bands) > 1) {
echo '<td class="spacingcell"></td>';
}
echo $sat_value;
echo "</tr><tr>
<td>" . __("Total confirmed") . "</td>";
foreach ($itu_summary['confirmed'] as $dxcc) { // Fills the table with the data
echo '<td style="text-align: center">' . $dxcc . '</td>';
$sat_value = '';
foreach ($itu_summary['confirmed'] as $ituz => $value) {
if ($posted_band == 'SAT' && $ituz == 'Total') {
continue;
}
if ($ituz == 'SAT') {
$sat_value = '<td style="text-align: center"' . ($ituz === 'Total' ? " class='fw-bold'" : '') . '>' . $value . '</td>';
} else {
echo '<td style="text-align: center"' . ($ituz === 'Total' ? " class='fw-bold'" : '') . '>' . $value . '</td>';
}
}
if (count($bands) > 1) {
echo '<td class="spacingcell"></td>';
}
echo $sat_value;
echo '</tr>
</table>
@@ -199,7 +274,7 @@
}
else {
echo '<div class="alert alert-danger" role="alert">'.__("Nothing found!").'</div>';
echo '<div class="alert alert-danger" role="alert">' . __("Nothing found!") . '</div>';
}
?>

View File

@@ -205,7 +205,7 @@
</div>
<div class="d-flex align-items-center gap-3">
<a href="https://www.wavelog.org" target="_blank" class="fullscreen-wavelog-text" style="display: none; font-weight: 500; color: var(--bs-body-color); text-decoration: none;">www.wavelog.org</a>
<a href="https://github.com/wavelog/wavelog/wiki/DXCluster" target="_blank" title="<?= __("DX Cluster Help"); ?>" style="cursor: pointer; padding: 0.5rem; margin: -0.5rem; color: var(--bs-body-color); text-decoration: none; display: inline-flex; align-items: center;">
<a href="https://docs.wavelog.org/user-guide/features/dx-cluster/" target="_blank" title="<?= __("DX Cluster Help"); ?>" style="cursor: pointer; padding: 0.5rem; margin: -0.5rem; color: var(--bs-body-color); text-decoration: none; display: inline-flex; align-items: center;">
<i class="fas fa-question-circle" style="font-size: 1.2rem;"></i>
</a>
<button type="button" class="btn btn-sm" id="compactModeToggle" title="<?= __("Compact Mode - Hide/Show Menu"); ?>" style="background: none; border: none; padding: 0.5rem; margin: -0.5rem; color: var(--bs-body-color);">

View File

@@ -78,13 +78,13 @@
<div id="dxWaterfallSpotLeft">
<span id="dxWaterfallMessage"></span>
</div>
<a id="dxWaterfallHelpIcon" href="https://github.com/wavelog/wavelog/wiki/DXWaterfall" target="_blank" rel="noopener noreferrer" title="<?= __("DX Waterfall Help"); ?>">
<a id="dxWaterfallHelpIcon" href="https://docs.wavelog.org/user-guide/features/dx-waterfall/" target="_blank" rel="noopener noreferrer" title="<?= __("DX Waterfall Help"); ?>">
<i class="fas fa-question-circle"></i>
</a>
<i id="dxWaterfallPowerOnIcon" class="fas fa-power-off"></i>
</div>
<div id="dxWaterfallSpotContent"></div>
<a id="dxWaterfallHelpIconOff" href="https://github.com/wavelog/wavelog/wiki/DXWaterfall" target="_blank" rel="noopener noreferrer" title="<?= __("DX Waterfall Help"); ?>">
<a id="dxWaterfallHelpIconOff" href="https://docs.wavelog.org/user-guide/features/dx-waterfall/" target="_blank" rel="noopener noreferrer" title="<?= __("DX Waterfall Help"); ?>">
<i class="fas fa-question-circle"></i>
</a>
<i id="dxWaterfallPowerOffIcon" class="fas fa-power-off"></i>

View File

@@ -18,7 +18,7 @@
<strong class="d-block"><i class="fas fa-info-circle me-2"></i> Important</strong>
<div>
<?= sprintf(__("For more information or help, take a look in the %s."), '<a target="_blank" class="text-primary fw-bold text-decoration-underline" href="https://github.com/wavelog/wavelog/wiki/Recommended-Cron-Jobs-and-Cronmanager">'.'Wiki'.'</a>'); ?>
<?= sprintf(__("For more information or help, take a look in the %s."), '<a target="_blank" class="text-primary fw-bold text-decoration-underline" href="https://docs.wavelog.org/admin-guide/administration/cron-jobs/">'.'Wiki'.'</a>'); ?>
</div>
</div>
</div>

View File

@@ -488,6 +488,13 @@ function getDistance($distance) {
</td>
<tr>
<td colspan="10">
<?php
function bandcondition_dot($condition) {
$colors = ['Good' => 'text-success', 'Fair' => 'text-warning', 'Poor' => 'text-danger', 'n/a' => 'text-secondary'];
$color = $colors[$condition] ?? '';
return $condition ? '<span class="' . $color . '">&#9679;</span> ' . $condition : ($condition ?? '');
}
?>
<table class="table table-sm small text-center table-striped">
<tr>
<th width="20%">&nbsp;</th>
@@ -498,17 +505,17 @@ function getDistance($distance) {
</tr>
<tr>
<td>Day</td>
<td><?= $solar_bandconditions['80m-40m']['day'] ?></td>
<td><?= $solar_bandconditions['30m-20m']['day'] ?></td>
<td><?= $solar_bandconditions['17m-15m']['day'] ?></td>
<td><?= $solar_bandconditions['12m-10m']['day'] ?></td>
<td><?= bandcondition_dot($solar_bandconditions['80m-40m']['day'] ?: 'n/a') ?></td>
<td><?= bandcondition_dot($solar_bandconditions['30m-20m']['day'] ?: 'n/a') ?></td>
<td><?= bandcondition_dot($solar_bandconditions['17m-15m']['day'] ?: 'n/a') ?></td>
<td><?= bandcondition_dot($solar_bandconditions['12m-10m']['day'] ?: 'n/a') ?></td>
</tr>
<tr>
<td>Night</td>
<td><?= $solar_bandconditions['80m-40m']['night'] ?></td>
<td><?= $solar_bandconditions['30m-20m']['night'] ?></td>
<td><?= $solar_bandconditions['17m-15m']['night'] ?></td>
<td><?= $solar_bandconditions['12m-10m']['night'] ?></td>
<td><?= bandcondition_dot($solar_bandconditions['80m-40m']['night'] ?: 'n/a') ?></td>
<td><?= bandcondition_dot($solar_bandconditions['30m-20m']['night'] ?: 'n/a') ?></td>
<td><?= bandcondition_dot($solar_bandconditions['17m-15m']['night'] ?: 'n/a') ?></td>
<td><?= bandcondition_dot($solar_bandconditions['12m-10m']['night'] ?: 'n/a') ?></td>
</tr>
</table>
</td>
@@ -517,14 +524,14 @@ function getDistance($distance) {
<td colspan="10">
<table class="table table-sm small text-center table-striped">
<tr>
<th width="5%">Kp</th>
<th width="5%">A</th>
<th width="15%">SFI</th>
<th width="15%">SW</th>
<th width="15%">SS</th>
<th width="15%">X</th>
<th width="20%">Noise</th>
<th width="20%">Aurora</th>
<th width="5%" data-bs-toggle="tooltip" title="<?= __("K-index: Planetary geomagnetic activity (0-9)") ?>">Kp</th>
<th width="5%" data-bs-toggle="tooltip" title="<?= __("A-index: Daily geomagnetic activity index") ?>">A</th>
<th width="15%" data-bs-toggle="tooltip" title="<?= __("Solar Flux Index") ?>">SFI</th>
<th width="15%" data-bs-toggle="tooltip" title="<?= __("Solar Wind speed (km/s)") ?>">SW</th>
<th width="15%" data-bs-toggle="tooltip" title="<?= __("Signal Noise ratio") ?>">SS</th>
<th width="15%" data-bs-toggle="tooltip" title="<?= __("X-Ray solar flux level") ?>">X</th>
<th width="20%" data-bs-toggle="tooltip" title="<?= __("Sunspot Number") ?>">SSN</th>
<th width="20%" data-bs-toggle="tooltip" title="<?= __("Aurora activity level (Kp borealis)") ?>">Aurora</th>
</tr>
<tr>
<td><?= $solar_solardata['kindex'] ?></td>

View File

@@ -63,7 +63,7 @@
<div class="alert alert-danger mt-3 mb-3">
<h5><?= __("Migration is outdated and locked!"); ?></h5>
<p><?= sprintf(__("The current migration is not the version it is supposed to be. Reload this page after %s seconds. If this warning persists, your migration is likely locked due to a previously failed process. Delete the file %s to force the migration to run again."), $miglock_lifetime, $migration_lockfile); ?></p>
<p><?= sprintf(__("Check this wiki article %shere%s for more information."), '<u><a href="https://github.com/wavelog/wavelog/wiki/Migration-is-locked" target="_blank">', '</a></u>'); ?></p>
<p><?= sprintf(__("Check this wiki article %shere%s for more information."), '<u><a href="https://docs.wavelog.org/troubleshooting/migration-locked/" target="_blank">', '</a></u>'); ?></p>
<p><?= sprintf(__("Current migration is %s"), $migration_version); ?><br>
<?= sprintf(__("Migration should be %s"), $migration_config); ?></p>
</div>

View File

@@ -545,7 +545,7 @@
<div class="dropdown-divider"></div>
<li><a class="dropdown-item" href="javascript:displayVersionDialog();" title="Version Information"><i class="fas fa-star"></i> <?= __("Version Info"); ?></a></li>
<li><a class="dropdown-item" target="_blank" href="https://github.com/wavelog/wavelog/wiki" title="Help"><i class="fas fa-question"></i> <?= __("Help"); ?></a></li>
<li><a class="dropdown-item" target="_blank" href="https://docs.wavelog.org/" title="Help"><i class="fas fa-question"></i> <?= __("Help"); ?></a></li>
<li><a class="dropdown-item" target="_blank" href="https://github.com/wavelog/wavelog/discussions" title="Forum"><i class="far fa-comment-dots"></i> <?= __("Forum"); ?></a></li>
<div class="dropdown-divider"></div>
<?php if ($this->session->userdata('impersonate') == 1) { ?>

View File

@@ -2,7 +2,7 @@
<div class="row">
<div class="col-md-5">
<h5><?= __("Data Repair Tools") ?>
<a href="https://github.com/wavelog/wavelog/wiki/Advanced-Logbook#database-tools-dbtools" target="_blank" rel="noopener noreferrer" class="btn btn-sm btn-info me-1 ld-ext-right">
<a href="https://docs.wavelog.org/user-guide/logbook/advanced-logbook/#database-tools-dbtools" target="_blank" rel="noopener noreferrer" class="btn btn-sm btn-info me-1 ld-ext-right">
<?= __("Wiki Help") ?></a>
</h5>
<p class="mb-3 alert-danger"><?= __("Warning. This tool can be dangerous to your data, and should only be used if you know what you are doing.") ?></p>

View File

@@ -25,7 +25,7 @@
<li><?= __("Click 'Save Callsign Certificate File'"); ?></li>
<li><b><?= __("Do not add a password"); ?></b></li>
<li><?= __("Upload File below"); ?></li>
<li><?= sprintf(__("For further information please visit the %sLoTW FAQ page%s in the Wavelog Wiki"), '<a target="_blank" href="https://github.com/wavelog/wavelog/wiki/Logbook-of-The-World-(LoTW)">', '</a>'); ?></li>
<li><?= sprintf(__("For further information please visit the %sLoTW FAQ page%s in the Wavelog Wiki"), '<a target="_blank" href="https://docs.wavelog.org/user-guide/qsl/lotw/">', '</a>'); ?></li>
</ul>
</div>

View File

@@ -36,7 +36,7 @@
<div class="mb-3">
<label for="globalSearch"><?= __("Provider for Hams Of Note"); ?></label>
<p><?= sprintf(__("The URL which provides the Hams Of Note List. See example and how it works here %s"),'<a href="https://github.com/wavelog/wavelog/wiki/Hams-Of-Note">'.__("Wiki")."<a/>"); ?></p>
<p><?= sprintf(__("The URL which provides the Hams Of Note List. See example and how it works here %s"),'<a href="https://docs.wavelog.org/user-guide/features/hams-of-note/">'.__("Wiki")."<a/>"); ?></p>
<input type="text" name="hon_url" class="form-control" id="dxcache_url" aria-describedby="hon_urlHelp" value="<?php echo $this->optionslib->get_option('hon_url'); ?>">
<small id="hon_urlHelp" class="form-text text-muted"><?= sprintf(__("URL of the Hams Of Note List. e.g. %s"), "https://api.ham2k.net/data/ham2k/hams-of-note.txt" ); ?></small>
</div>

View File

@@ -47,7 +47,7 @@
<p class="alert alert-danger">
<b><u><?= __("Important"); ?></u></b><br>
<?= sprintf(__("This modifies the map source in various locations within Wavelog. Do not change any values here unless you are confident in what you are doing. Test each change on your %sDashboard%s!"), '<a href="' . site_url('/') . '" target="_blank"><u>', '</u></a>'); ?><br>
<?= sprintf(__("You can find a list of tested settings and all default values in the %sWavelog Wiki%s."), '<a href="https://github.com/wavelog/wavelog/wiki/Maptile-Server" target="_blank"><u>', '</u></a>'); ?>
<?= sprintf(__("You can find a list of tested settings and all default values in the %sWavelog Wiki%s."), '<a href="https://docs.wavelog.org/admin-guide/configuration/maptile-server/" target="_blank"><u>', '</u></a>'); ?>
</p>
<?php } ?>
<div class="mb-3">

View File

@@ -27,7 +27,7 @@
<p class="card-text"><?= __("As a normal user, you can set a default radio for yourself. This allows you to have a default radio that is automatically selected when you log in, while still being able to use other radios if you want."); ?></p>
<?php } ?>
<p class="card-text">
<span class="badge text-bg-info"><?= __("Info"); ?></span> <?= sprintf(__("You can find out how to use the %sradio functions%s in the wiki."), '<a href="https://github.com/wavelog/wavelog/wiki/Radio-Interface" target="_blank">', '</a>'); ?>
<span class="badge text-bg-info"><?= __("Info"); ?></span> <?= sprintf(__("You can find out how to use the %sradio functions%s in the wiki."), '<a href="https://docs.wavelog.org/user-guide/integrations/radio-interface/" target="_blank">', '</a>'); ?>
</p>
<div class="table-responsive">
<!-- Display Radio Statuses -->

View File

@@ -63,7 +63,7 @@
}
?>
<div style="display:none;"><span class="badge text-bg-info"><?= __("Info"); ?></span> <?= sprintf(__("You can find out how to use the %s in the wiki."), '<a href="https://github.com/wavelog/wavelog/wiki/Search----Filter" target="_blank">' . __("search filter functions") . '</a>'); ?></div>
<div style="display:none;"><span class="badge text-bg-info"><?= __("Info"); ?></span> <?= sprintf(__("You can find out how to use the %s in the wiki."), '<a href="https://docs.wavelog.org/user-guide/features/search/" target="_blank">' . __("search filter functions") . '</a>'); ?></div>
</div>
</div>

View File

@@ -61,5 +61,5 @@
<pre>
2119 dj3ce &lt;tx_pwr:50&gt; &lt;rx_pwr:750&gt; &lt;darc_dok:F39&gt; &lt;sfi:210&gt; &lt;rig:QCX&gt; &lt;...&gt;
</pre>
<p><?= sprintf(__("A full summary of all commands and the necessary syntax can be found in %sthis article%s of our Wiki."), '<a href="https://github.com/wavelog/wavelog/wiki/SimpleFLE" target="_blank">', '</a>'); ?></p>
<p><?= sprintf(__("A full summary of all commands and the necessary syntax can be found in %sthis article%s of our Wiki."), '<a href="https://docs.wavelog.org/user-guide/logbook/simple-fle/" target="_blank">', '</a>'); ?></p>

View File

@@ -272,7 +272,7 @@ if ($dxcc_list->result() > 0) {
<!-- eQSL -->
<div class="col-md">
<div class="card">
<h5 class="card-header"><?= __("eQSL"); ?> <span class="badge text-bg-warning"><?= sprintf(__("Trouble? Check the %swiki%s."), '<a href="https://github.com/wavelog/wavelog/wiki/eQSL#read-common-pitfalls-with-eqsl" target="_blank">', '</a>'); ?></span></h5>
<h5 class="card-header"><?= __("eQSL"); ?> <span class="badge text-bg-warning"><?= sprintf(__("Trouble? Check the %swiki%s."), '<a href="https://docs.wavelog.org/user-guide/qsl/eqsl/" target="_blank">', '</a>'); ?></span></h5>
<div class="card-body">
<div class="mb-3">
<label for="eqslNickname"><?php echo _pgettext("Probably no translation needed","eQSL QTH Nickname"); ?></label>

View File

@@ -297,7 +297,7 @@ if ($dxcc_list->result() > 0) {
<!-- eQSL -->
<div class="col-md">
<div class="card">
<h5 class="card-header"><?= __("eQSL"); ?> <span class="badge text-bg-warning"><?= sprintf(__("Trouble? Check the %swiki%s."), '<a href="https://github.com/wavelog/wavelog/wiki/eQSL#read-common-pitfalls-with-eqsl" target="_blank">', '</a>'); ?></span></h5>
<h5 class="card-header"><?= __("eQSL"); ?> <span class="badge text-bg-warning"><?= sprintf(__("Trouble? Check the %swiki%s."), '<a href="https://docs.wavelog.org/user-guide/qsl/eqsl/" target="_blank">', '</a>'); ?></span></h5>
<div class="card-body">
<div class="mb-3">
<label for="eqslNickname"><?php echo _pgettext("Probably no translation needed","eQSL QTH Nickname"); ?></label> <!-- This does not need Multilanguage Support -->

View File

@@ -919,7 +919,7 @@
<!-- eQSL -->
<div class="col-md">
<div class="card">
<div class="card-header"><?= __("eQSL"); ?> <span class="badge text-bg-warning"><?= sprintf(__("Trouble? Check the %swiki%s."), '<a href="https://github.com/wavelog/wavelog/wiki/eQSL#read-common-pitfalls-with-eqsl" target="_blank">', '</a>'); ?></span></div>
<div class="card-header"><?= __("eQSL"); ?> <span class="badge text-bg-warning"><?= sprintf(__("Trouble? Check the %swiki%s."), '<a href="https://docs.wavelog.org/user-guide/qsl/eqsl/" target="_blank">', '</a>'); ?></span></div>
<div class="card-body">
<div class="mb-3">
<label><?= __("eQSL.cc Username"); ?></label>
@@ -1098,7 +1098,7 @@
<option value="0" <?php if ($user_winkey == 0) { echo 'selected="selected"'; } ?>><?= __("No"); ?></option>
<option value="1" <?php if ($user_winkey == 1) { echo 'selected="selected"'; } ?>><?= __("Yes"); ?></option>
</select>
<small class="form-text text-muted"><?= sprintf(__("Winkeyer support in Wavelog is very experimental. Read the wiki first at %s before enabling."), "<a href='https://github.com/wavelog/wavelog/wiki/Winkey' target='_blank'>https://github.com/wavelog/wavelog/wiki/Winkey</a>"); ?></small>
<small class="form-text text-muted"><?= sprintf(__("Winkeyer support in Wavelog is very experimental. Read the wiki first at %s before enabling."), "<a href='https://docs.wavelog.org/user-guide/integrations/winkey/' target='_blank'>https://docs.wavelog.org/user-guide/integrations/winkey/</a>"); ?></small>
</div>
</div>
</div>

View File

@@ -18,7 +18,7 @@
</div>
<?php } ?>
<h4 style="margin-top: 10px;"><?= __("Hello and Welcome to Wavelog!"); ?></h4>
<p style="margin-top: 20px;"><?= sprintf(__("Before you can start logging QSOs, we need to set up your first Station Location. You can find more information about how Station Locations and Logbooks work in our %sWiki here%s!"), '<a href="https://github.com/wavelog/wavelog/wiki/Stationsetup" target="_blank">', '</a>'); ?></p>
<p style="margin-top: 20px;"><?= sprintf(__("Before you can start logging QSOs, we need to set up your first Station Location. You can find more information about how Station Locations and Logbooks work in our %sWiki here%s!"), '<a href="https://docs.wavelog.org/admin-guide/administration/station-setup/" target="_blank">', '</a>'); ?></p>
<p><?= __("Please provide some additional information so that Wavelog can create your first Station:"); ?></p>
<div class="container">
<div class="row mb-3 align-items-center">