Merge branch 'master' of https://github.com/magicbug/Cloudlog into configurable_modes

This commit is contained in:
Kim Huebel
2020-05-31 23:40:48 +02:00
13 changed files with 265 additions and 45 deletions

View File

@@ -140,7 +140,7 @@ class eqsl extends CI_Controller {
// Build URL for eQSL inbox file
$eqsl_url .= "?";
$eqsl_url .= "UserName=" . $data['user_eqsl_name'];
$eqsl_url .= "&Password=" . $data['user_eqsl_password'];
$eqsl_url .= "&Password=" . urlencode($data['user_eqsl_password']);
$eqsl_url .= "&RcvdSince=" . $eqsl_last_qsl_date;
$eqsl_url .= "&QTHNickname=" . urlencode($active_station_info->eqslqthnickname);
@@ -172,11 +172,15 @@ class eqsl extends CI_Controller {
// "Your ADIF log file has been built" -> We've got an ADIF file we need to grab.
if ($chi['http_code'] == "200")
{
{
if (stristr($input, "You have no log entries"))
{
$this->session->set_flashdata('success', 'There are no QSLs waiting for download at eQSL.cc.'); redirect('eqsl/import');
}
else if (stristr($input, "Error: No such Username/Password found"))
{
$this->session->set_flashdata('warning', 'No such Username/Password found This could mean the wrong callsign or the wrong password, or the user does not exist.');
redirect('eqsl/import');
}
else
{
@@ -318,7 +322,7 @@ class eqsl extends CI_Controller {
$adif .= "%3A";
$adif .= strlen($data['user_eqsl_password']);
$adif .= "%3E";
$adif .= $data['user_eqsl_password'];
$adif .= urlencode($data['user_eqsl_password']);
$adif .= "%20";
$adif .= "%3C";
@@ -579,8 +583,7 @@ class eqsl extends CI_Controller {
$username = $q->user_eqsl_name;
$password = $q->user_eqsl_password;
$image_url = $this->electronicqsl->card_image($username, $password, $callsign, $band, $mode, $year, $month, $day, $hour, $minute);
$image_url = $this->electronicqsl->card_image($username, urlencode($password), $callsign, $band, $mode, $year, $month, $day, $hour, $minute);
$file = file_get_contents($image_url, true);
$dom = new domDocument;

View File

@@ -428,9 +428,15 @@ class Logbook extends CI_Controller {
case "Y":
$html .= "green";
break;
case "Q":
$html .= "yellow";
break;
case "R":
$html .= "yellow";
break;
case "I":
echo "grey";
break;
default:
$html .= "red";
}
@@ -440,9 +446,15 @@ class Logbook extends CI_Controller {
case "Y":
$html .= "green";
break;
case "Q":
$html .= "yellow";
break;
case "R":
$html .= "yellow";
break;
case "I":
echo "grey";
break;
default:
$html .= "red";
}

View File

@@ -24,7 +24,7 @@ class adif_data extends CI_Model {
$active_station_id = $this->stations->find_active();
$this->db->where('station_id', $active_station_id);
$this->db->where('COL_QSL_SENT', 'R');
$this->db->where_in('COL_QSL_SENT', array('R', 'Q'));
$this->db->order_by("COL_TIME_ON", "ASC");
$query = $this->db->get($this->config->item('table_name'));

View File

@@ -801,7 +801,7 @@ class Logbook_model extends CI_Model {
ENTITY
FROM '.$this->config->item('table_name').', dxcc_prefixes, station_profile
WHERE
COL_QSL_SENT LIKE \'R\'
COL_QSL_SENT in (\'R\', \'Q\')
and (CASE WHEN COL_QSL_VIA != \'\' THEN COL_QSL_VIA ELSE COL_CALL END) like CONCAT(dxcc_prefixes.call,\'%\')
and (end is null or end > now())
and '.$this->config->item('table_name').'.station_id = '.$station_id.'

View File

@@ -18,7 +18,7 @@ class Qslprint_model extends CI_Model {
'COL_QSL_SENT_VIA' => "B",
);
$this->db->where("COL_QSL_SENT", "R");
$this->db->where_in("COL_QSL_SENT", array("R","Q"));
$this->db->where("station_id", $station_id);
$this->db->update($this->config->item('table_name'), $data);
}

View File

@@ -5,10 +5,10 @@
<h5 class="card-title"><?php echo $page_title; ?></h5>
<ul class="nav nav-tabs card-header-tabs">
<li class="nav-item">
<a class="nav-link" href="<?php echo site_url('eqsl/import');?>">Download QSOs</a>
<a class="nav-link active" href="<?php echo site_url('eqsl/import');?>">Download QSOs</a>
</li>
<li class="nav-item">
<a class="nav-link active" href="<?php echo site_url('eqsl/Export');?>">Upload QSOs</a>
<a class="nav-link" href="<?php echo site_url('eqsl/Export');?>">Upload QSOs</a>
</li>
</ul>
</div>

View File

@@ -20,21 +20,18 @@
<link rel="stylesheet" type="text/css" href="<?php echo base_url(); ?>assets/css/query-builder.default.min.css" />
<?php } ?>
<?php if ($this->uri->segment(1) == "notes" && ($this->uri->segment(2) == "add" || $this->uri->segment(2) == "edit") ) { ?>
<link rel="stylesheet" type="text/css" href="<?php echo base_url(); ?>assets/plugins/quill/quill.snow.css" />
<?php } ?>
<?php if ($this->uri->segment(1) == "notes" && ($this->uri->segment(2) == "add" || $this->uri->segment(2) == "edit") ) { ?>
<link rel="stylesheet" type="text/css" href="<?php echo base_url(); ?>assets/plugins/quill/quill.snow.css" />
<?php } ?>
<?php if ($this->uri->segment(1) == "qrz") { ?>
<link rel="stylesheet" type="text/css" href="<?php echo base_url(); ?>assets/css/loading.min.css" />
<link rel="stylesheet" type="text/css" href="<?php echo base_url(); ?>assets/css/ldbtn.min.css" />
<?php } ?>
<?php if ($this->uri->segment(1) == "qrz") { ?>
<link rel="stylesheet" type="text/css" href="<?php echo base_url(); ?>assets/css/loading.min.css" />
<link rel="stylesheet" type="text/css" href="<?php echo base_url(); ?>assets/css/ldbtn.min.css" />
<?php } ?>
<?php if ($this->uri->segment(1) == "qso") { ?>
<link rel="stylesheet" type="text/css" href="<?php echo base_url(); ?>assets/plugins/select2/css/select2.min.css" />
<?php } ?>
<?php if ($this->uri->segment(1) == "adif") { ?>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/tempusdominus-bootstrap-4/5.0.1/css/tempusdominus-bootstrap-4.min.css" />
<?php } ?>
<?php if ($this->uri->segment(1) == "adif") { ?>
<link rel="stylesheet" href="<?php echo base_url(); ?>assets/css/datepicker.css" />
<?php } ?>
<link rel="icon" href="<?php echo base_url(); ?>/favicon.ico">
<title><?php if(isset($page_title)) { echo $page_title; } ?> - Cloudlog</title>

View File

@@ -9,7 +9,7 @@
<link rel="stylesheet" href="<?php echo base_url(); ?>assets/css/bootstrap.min.css">
<link rel="stylesheet" href="<?php echo base_url(); ?>assets/fontawesome/css/all.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/fancyapps/fancybox@3.5.7/dist/jquery.fancybox.min.css" />
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/fancyapps/fancybox@3.5.7/dist/jquery.fancybox.min.css" />
<link rel="stylesheet" href="<?php echo base_url(); ?>assets/css/general.css">

View File

@@ -16,7 +16,7 @@
<div class="card-body">
<h5 class="card-title"></h5>
<p class="card-text">
Here you can export requested QSLs as CSV-file or ADIF and mark them as sent via buro in a mass transaction if you like. The considered QSOs for this functions would be those of the active station profile.
Here you can export requested QSLs as CSV-file or ADIF and mark them as sent via buro in a mass transaction if you like. Requested QSOs are QSOs marked as "Requested" or "Queued" in the QSL-sent-field. The considered QSOs for this functions would be those of the active station profile.
</p>

View File

@@ -33,7 +33,7 @@
<?php echo '<tr class="tr'.($i & 1).'">'; ?>
<td><?php $timestamp = strtotime($row->COL_TIME_ON); echo date('d/m/y', $timestamp); ?></td>
<td><?php $timestamp = strtotime($row->COL_TIME_ON); echo date('H:i', $timestamp); ?></td>
<td><a class="fancybox" href="<?php echo site_url('logbook/view')."/".$row->COL_PRIMARY_KEY; ?>"><?php echo str_replace("0","&Oslash;",strtoupper($row->COL_CALL)); ?></a></td>
<td><a data-fancybox data-type="iframe" data-width="750" data-height="520" data-src="<?php echo site_url('logbook/view')."/".$row->COL_PRIMARY_KEY; ?>" href="javascript:;"><?php echo str_replace("0","&Oslash;",strtoupper($row->COL_CALL)); ?></a></td>
<td><?php echo $row->COL_SUBMODE==null?$row->COL_MODE:$row->COL_SUBMODE; ?></td>
<td><?php echo $row->COL_RST_SENT; ?> <?php if ($row->COL_STX_STRING) { ?><span class="label"><?php echo $row->COL_STX_STRING;?></span><?php } ?></td>
<td><?php echo $row->COL_RST_RCVD; ?> <?php if ($row->COL_SRX_STRING) { ?><span class="label"><?php echo $row->COL_SRX_STRING;?></span><?php } ?></td>
@@ -100,4 +100,4 @@ TD.lotw{
font-size: 1.1em;
}
</style>
</style>

View File

@@ -49,6 +49,9 @@
case "Y":
echo "green";
break;
case "Q":
echo "yellow";
break;
case "R":
echo "yellow";
break;
@@ -64,6 +67,9 @@
case "Y":
echo "green";
break;
case "Q":
echo "yellow";
break;
case "R":
echo "yellow";
break;

View File

@@ -1,18 +1,15 @@
<div class="container-fluid">
<?php if ($query->num_rows() > 0) { foreach ($query->result() as $row) { ?>
<div class="container-fluid">
<div class="row">
<div class="col">
<?php if ($query->num_rows() > 0) { foreach ($query->result() as $row) { ?>
<?php if(($this->config->item('use_auth') && ($this->session->userdata('user_type') >= 2)) || $this->config->item('use_auth') === FALSE || ($this->config->item('show_time'))) { ?>
<h1 style="font-size: 28px;">QSO with <?php echo str_replace("0","&Oslash;",strtoupper($row->COL_CALL)); ?> on the <?php $timestamp = strtotime($row->COL_TIME_ON); echo date('d/m/y', $timestamp); $timestamp = strtotime($row->COL_TIME_ON); echo " at ".date('H:i', $timestamp); ?></h1>
<?php } else { ?>
<h1 style="font-size: 28px;">QSO with <?php echo str_replace("0","&Oslash;",strtoupper($row->COL_CALL)); ?> on the <?php $timestamp = strtotime($row->COL_TIME_ON); echo date('d/m/y', $timestamp);?></h1>
<?php } ?>
<h3>QSO Details</h3>
</div>
</div>
<div class="row">
<div class="col">
<table width="100%">
<tr>
<td>Date/Time:</td>
@@ -25,7 +22,7 @@
<tr>
<td>Callsign:</td>
<td><?php echo str_replace("0","&Oslash;",strtoupper($row->COL_CALL)); ?></td>
<td><b><?php echo str_replace("0","&Oslash;",strtoupper($row->COL_CALL)); ?></b></td>
</tr>
<tr>
@@ -230,18 +227,17 @@
<td><?php echo $row->COL_TX_PWR; ?>w</td>
</tr>
<?php } ?>
<?php if(($this->config->item('use_auth') && ($this->session->userdata('user_type') >= 2)) || $this->config->item('use_auth') === FALSE) { ?>
<tr>
<td><a href="<?php echo site_url('qso/edit'); ?>/<?php echo $row->COL_PRIMARY_KEY; ?>" href="javascript:;"><i class="fas fa-edit"></i> Edit QSO</a></td>
</tr>
<?php } ?>
</table>
</div>
<div class="col">
<div id="map" style="width: 340px; height: 250px"></div>
<?php if(($this->config->item('use_auth') && ($this->session->userdata('user_type') >= 2)) || $this->config->item('use_auth') === FALSE) { ?>
<br>
<p><a class="btn btn-success" href="<?php echo site_url('qso/edit'); ?>/<?php echo $row->COL_PRIMARY_KEY; ?>" href="javascript:;"><i class="fas fa-edit"></i> Edit QSO</a></p>
<?php } ?>
<div id="map" style="width: 340px; height: 250px"></div>
</div>
</div>
</div>

206
assets/css/datepicker.css Normal file
View File

@@ -0,0 +1,206 @@
/*@preserve
* Tempus Dominus Bootstrap4 v5.0.1 (https://tempusdominus.github.io/bootstrap-4/)
* Copyright 2016-2018 Jonathan Peterson
* Licensed under MIT (https://github.com/tempusdominus/bootstrap-3/blob/master/LICENSE)
*/
.sr-only, .bootstrap-datetimepicker-widget .btn[data-action="incrementHours"]::after, .bootstrap-datetimepicker-widget .btn[data-action="incrementMinutes"]::after, .bootstrap-datetimepicker-widget .btn[data-action="decrementHours"]::after, .bootstrap-datetimepicker-widget .btn[data-action="decrementMinutes"]::after, .bootstrap-datetimepicker-widget .btn[data-action="showHours"]::after, .bootstrap-datetimepicker-widget .btn[data-action="showMinutes"]::after, .bootstrap-datetimepicker-widget .btn[data-action="togglePeriod"]::after, .bootstrap-datetimepicker-widget .btn[data-action="clear"]::after, .bootstrap-datetimepicker-widget .btn[data-action="today"]::after, .bootstrap-datetimepicker-widget .picker-switch::after, .bootstrap-datetimepicker-widget table th.prev::after, .bootstrap-datetimepicker-widget table th.next::after {
position: absolute;
width: 1px;
height: 1px;
margin: -1px;
padding: 0;
overflow: hidden;
clip: rect(0, 0, 0, 0);
border: 0; }
.bootstrap-datetimepicker-widget {
list-style: none; }
.bootstrap-datetimepicker-widget.dropdown-menu {
display: block;
margin: 2px 0;
padding: 4px;
width: 14rem; }
@media (min-width: 576px) {
.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs {
width: 38em; } }
@media (min-width: 768px) {
.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs {
width: 38em; } }
@media (min-width: 992px) {
.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs {
width: 38em; } }
.bootstrap-datetimepicker-widget.dropdown-menu:before, .bootstrap-datetimepicker-widget.dropdown-menu:after {
content: '';
display: inline-block;
position: absolute; }
.bootstrap-datetimepicker-widget.dropdown-menu.bottom:before {
border-left: 7px solid transparent;
border-right: 7px solid transparent;
border-bottom: 7px solid #ccc;
border-bottom-color: rgba(0, 0, 0, 0.2);
top: -7px;
left: 7px; }
.bootstrap-datetimepicker-widget.dropdown-menu.bottom:after {
border-left: 6px solid transparent;
border-right: 6px solid transparent;
border-bottom: 6px solid white;
top: -6px;
left: 8px; }
.bootstrap-datetimepicker-widget.dropdown-menu.top:before {
border-left: 7px solid transparent;
border-right: 7px solid transparent;
border-top: 7px solid #ccc;
border-top-color: rgba(0, 0, 0, 0.2);
bottom: -7px;
left: 6px; }
.bootstrap-datetimepicker-widget.dropdown-menu.top:after {
border-left: 6px solid transparent;
border-right: 6px solid transparent;
border-top: 6px solid white;
bottom: -6px;
left: 7px; }
.bootstrap-datetimepicker-widget.dropdown-menu.float-right:before {
left: auto;
right: 6px; }
.bootstrap-datetimepicker-widget.dropdown-menu.float-right:after {
left: auto;
right: 7px; }
.bootstrap-datetimepicker-widget.dropdown-menu.wider {
width: 16rem; }
.bootstrap-datetimepicker-widget .list-unstyled {
margin: 0; }
.bootstrap-datetimepicker-widget a[data-action] {
padding: 6px 0; }
.bootstrap-datetimepicker-widget a[data-action]:active {
box-shadow: none; }
.bootstrap-datetimepicker-widget .timepicker-hour, .bootstrap-datetimepicker-widget .timepicker-minute, .bootstrap-datetimepicker-widget .timepicker-second {
width: 54px;
font-weight: bold;
font-size: 1.2em;
margin: 0; }
.bootstrap-datetimepicker-widget button[data-action] {
padding: 6px; }
.bootstrap-datetimepicker-widget .btn[data-action="incrementHours"]::after {
content: "Increment Hours"; }
.bootstrap-datetimepicker-widget .btn[data-action="incrementMinutes"]::after {
content: "Increment Minutes"; }
.bootstrap-datetimepicker-widget .btn[data-action="decrementHours"]::after {
content: "Decrement Hours"; }
.bootstrap-datetimepicker-widget .btn[data-action="decrementMinutes"]::after {
content: "Decrement Minutes"; }
.bootstrap-datetimepicker-widget .btn[data-action="showHours"]::after {
content: "Show Hours"; }
.bootstrap-datetimepicker-widget .btn[data-action="showMinutes"]::after {
content: "Show Minutes"; }
.bootstrap-datetimepicker-widget .btn[data-action="togglePeriod"]::after {
content: "Toggle AM/PM"; }
.bootstrap-datetimepicker-widget .btn[data-action="clear"]::after {
content: "Clear the picker"; }
.bootstrap-datetimepicker-widget .btn[data-action="today"]::after {
content: "Set the date to today"; }
.bootstrap-datetimepicker-widget .picker-switch {
text-align: center; }
.bootstrap-datetimepicker-widget .picker-switch::after {
content: "Toggle Date and Time Screens"; }
.bootstrap-datetimepicker-widget .picker-switch td {
padding: 0;
margin: 0;
height: auto;
width: auto;
line-height: inherit; }
.bootstrap-datetimepicker-widget .picker-switch td span {
line-height: 2.5;
height: 2.5em;
width: 100%; }
.bootstrap-datetimepicker-widget table {
width: 100%;
margin: 0; }
.bootstrap-datetimepicker-widget table td,
.bootstrap-datetimepicker-widget table th {
text-align: center;
border-radius: 0.25rem; }
.bootstrap-datetimepicker-widget table th {
height: 20px;
line-height: 20px;
width: 20px; }
.bootstrap-datetimepicker-widget table th.picker-switch {
width: 145px; }
.bootstrap-datetimepicker-widget table th.disabled, .bootstrap-datetimepicker-widget table th.disabled:hover {
background: none;
color: #6c757d;
cursor: not-allowed; }
.bootstrap-datetimepicker-widget table th.prev::after {
content: "Previous Month"; }
.bootstrap-datetimepicker-widget table th.next::after {
content: "Next Month"; }
.bootstrap-datetimepicker-widget table thead tr:first-child th {
cursor: pointer; }
.bootstrap-datetimepicker-widget table thead tr:first-child th:hover {
background: #e9ecef; }
.bootstrap-datetimepicker-widget table td {
height: 54px;
line-height: 54px;
width: 54px; }
.bootstrap-datetimepicker-widget table td.cw {
font-size: .8em;
height: 20px;
line-height: 20px;
color: #6c757d; }
.bootstrap-datetimepicker-widget table td.day {
height: 20px;
line-height: 20px;
width: 20px; }
.bootstrap-datetimepicker-widget table td.day:hover, .bootstrap-datetimepicker-widget table td.hour:hover, .bootstrap-datetimepicker-widget table td.minute:hover, .bootstrap-datetimepicker-widget table td.second:hover {
background: #e9ecef;
cursor: pointer; }
.bootstrap-datetimepicker-widget table td.old, .bootstrap-datetimepicker-widget table td.new {
color: #6c757d; }
.bootstrap-datetimepicker-widget table td.today {
position: relative; }
.bootstrap-datetimepicker-widget table td.today:before {
content: '';
display: inline-block;
border: solid transparent;
border-width: 0 0 7px 7px;
border-bottom-color: #007bff;
border-top-color: rgba(0, 0, 0, 0.2);
position: absolute;
bottom: 4px;
right: 4px; }
.bootstrap-datetimepicker-widget table td.active, .bootstrap-datetimepicker-widget table td.active:hover {
background-color: #007bff;
color: #fff;
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); }
.bootstrap-datetimepicker-widget table td.active.today:before {
border-bottom-color: #fff; }
.bootstrap-datetimepicker-widget table td.disabled, .bootstrap-datetimepicker-widget table td.disabled:hover {
background: none;
color: #6c757d;
cursor: not-allowed; }
.bootstrap-datetimepicker-widget table td span {
display: inline-block;
width: 54px;
height: 54px;
line-height: 54px;
margin: 2px 1.5px;
cursor: pointer;
border-radius: 0.25rem; }
.bootstrap-datetimepicker-widget table td span:hover {
background: #e9ecef; }
.bootstrap-datetimepicker-widget table td span.active {
background-color: #007bff;
color: #fff;
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); }
.bootstrap-datetimepicker-widget table td span.old {
color: #6c757d; }
.bootstrap-datetimepicker-widget table td span.disabled, .bootstrap-datetimepicker-widget table td span.disabled:hover {
background: none;
color: #6c757d;
cursor: not-allowed; }
.bootstrap-datetimepicker-widget.usetwentyfour td.hour {
height: 27px;
line-height: 27px; }
.input-group [data-toggle="datetimepicker"] {
cursor: pointer; }