diff --git a/application/controllers/Eqsl.php b/application/controllers/Eqsl.php
index f34a27ba7..7d6a43442 100644
--- a/application/controllers/Eqsl.php
+++ b/application/controllers/Eqsl.php
@@ -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;
diff --git a/application/controllers/Logbook.php b/application/controllers/Logbook.php
index acb8f8703..dffe896be 100755
--- a/application/controllers/Logbook.php
+++ b/application/controllers/Logbook.php
@@ -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";
}
diff --git a/application/models/Adif_data.php b/application/models/Adif_data.php
index 7d0427304..008af8a09 100644
--- a/application/models/Adif_data.php
+++ b/application/models/Adif_data.php
@@ -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'));
diff --git a/application/models/Logbook_model.php b/application/models/Logbook_model.php
index 5deeedfcd..c132b7ff9 100755
--- a/application/models/Logbook_model.php
+++ b/application/models/Logbook_model.php
@@ -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.'
diff --git a/application/models/Qslprint_model.php b/application/models/Qslprint_model.php
index 736c0c616..1eb6f7a2b 100644
--- a/application/models/Qslprint_model.php
+++ b/application/models/Qslprint_model.php
@@ -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);
}
diff --git a/application/views/eqsl/analysis.php b/application/views/eqsl/analysis.php
index 91956b775..83ac05036 100644
--- a/application/views/eqsl/analysis.php
+++ b/application/views/eqsl/analysis.php
@@ -5,10 +5,10 @@
- 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.
diff --git a/application/views/search/result_search.php b/application/views/search/result_search.php
index 3c5ddff2b..722f43391 100644
--- a/application/views/search/result_search.php
+++ b/application/views/search/result_search.php
@@ -33,7 +33,7 @@
'; ?>
COL_TIME_ON); echo date('d/m/y', $timestamp); ?> |
COL_TIME_ON); echo date('H:i', $timestamp); ?> |
-
COL_PRIMARY_KEY; ?>">COL_CALL)); ?> |
+
COL_PRIMARY_KEY; ?>" href="javascript:;">COL_CALL)); ?> |
COL_SUBMODE==null?$row->COL_MODE:$row->COL_SUBMODE; ?> |
COL_RST_SENT; ?> COL_STX_STRING) { ?>COL_STX_STRING;?> |
COL_RST_RCVD; ?> COL_SRX_STRING) { ?>COL_SRX_STRING;?> |
@@ -100,4 +100,4 @@ TD.lotw{
font-size: 1.1em;
}
-
\ No newline at end of file
+
diff --git a/application/views/view_log/partial/log.php b/application/views/view_log/partial/log.php
index 5b1ef2c88..498b12fc8 100644
--- a/application/views/view_log/partial/log.php
+++ b/application/views/view_log/partial/log.php
@@ -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;
diff --git a/application/views/view_log/qso.php b/application/views/view_log/qso.php
index 9c64468ef..3c625dbd8 100644
--- a/application/views/view_log/qso.php
+++ b/application/views/view_log/qso.php
@@ -1,18 +1,15 @@
-
+num_rows() > 0) { foreach ($query->result() as $row) { ?>
+
+
- num_rows() > 0) { foreach ($query->result() as $row) { ?>
- config->item('use_auth') && ($this->session->userdata('user_type') >= 2)) || $this->config->item('use_auth') === FALSE || ($this->config->item('show_time'))) { ?>
-
QSO with COL_CALL)); ?> on the COL_TIME_ON); echo date('d/m/y', $timestamp); $timestamp = strtotime($row->COL_TIME_ON); echo " at ".date('H:i', $timestamp); ?>
-
- QSO with COL_CALL)); ?> on the COL_TIME_ON); echo date('d/m/y', $timestamp);?>
-
+ QSO Details
-
+
-
+
| Date/Time: |
@@ -25,7 +22,7 @@
| Callsign: |
- COL_CALL)); ?> |
+ COL_CALL)); ?> |
@@ -230,18 +227,17 @@
| COL_TX_PWR; ?>w |
-
- config->item('use_auth') && ($this->session->userdata('user_type') >= 2)) || $this->config->item('use_auth') === FALSE) { ?>
-
- | Edit QSO |
-
-
+
+
+ config->item('use_auth') && ($this->session->userdata('user_type') >= 2)) || $this->config->item('use_auth') === FALSE) { ?>
+
+
Edit QSO
+
-
diff --git a/assets/css/datepicker.css b/assets/css/datepicker.css
new file mode 100644
index 000000000..a4239d8c7
--- /dev/null
+++ b/assets/css/datepicker.css
@@ -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; }
\ No newline at end of file