From 06215061d8bbfbc98dcef1548646f2757ad8cb49 Mon Sep 17 00:00:00 2001
From: Joerg
Date: Fri, 23 Jun 2023 23:08:01 +0200
Subject: [PATCH 01/34] Update Eqsl.php
Fixed issue https://github.com/magicbug/Cloudlog/issues/2189
---
application/controllers/Eqsl.php | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/application/controllers/Eqsl.php b/application/controllers/Eqsl.php
index d329d2dc..642e6fa5 100644
--- a/application/controllers/Eqsl.php
+++ b/application/controllers/Eqsl.php
@@ -501,7 +501,7 @@ class eqsl extends CI_Controller {
$query = $this->user_model->get_by_id($this->session->userdata('user_id'));
$q = $query->row();
- $username = $q->user_eqsl_name;
+ $username = $qso->COL_STATION_CALLSIGN;
$password = $q->user_eqsl_password;
$image_url = $this->electronicqsl->card_image($username, urlencode($password), $callsign, $band, $mode, $year, $month, $day, $hour, $minute);
@@ -559,7 +559,7 @@ class eqsl extends CI_Controller {
$query = $this->user_model->get_by_id($this->session->userdata('user_id'));
$q = $query->row();
- $username = $q->user_eqsl_name;
+ $username = $qso->COL_STATION_CALLSIGN;
$password = $q->user_eqsl_password;
$error = '';
From 5cb333fdbb6a53f9891b614498e6564f80a364eb Mon Sep 17 00:00:00 2001
From: Peter Goodhall
Date: Mon, 26 Jun 2023 11:29:18 +0100
Subject: [PATCH 02/34] Update menu_lang.php
---
application/language/english/menu_lang.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/application/language/english/menu_lang.php b/application/language/english/menu_lang.php
index eb3911e7..30972966 100644
--- a/application/language/english/menu_lang.php
+++ b/application/language/english/menu_lang.php
@@ -21,7 +21,7 @@ $lang['menu_notes'] = 'Notes';
$lang['menu_analytics'] = 'Analytics';
$lang['menu_statistics'] = 'Statistics';
$lang['menu_gridsquares'] = 'Gridsquares';
-$lang['menu_gridmap'] = 'Gridmap';
+$lang['menu_gridmap'] = 'Gridsquare Map';
$lang['menu_activated_gridsquares'] = 'Activated Gridsquares';
$lang['menu_gridsquare_activators'] = 'Gridsquare Activators';
$lang['menu_distances_worked'] = 'Distances Worked';
From cba1ba4190871377c51ea8402f6582edf75a7f26 Mon Sep 17 00:00:00 2001
From: Andreas <6977712+AndreasK79@users.noreply.github.com>
Date: Mon, 26 Jun 2023 16:56:08 +0200
Subject: [PATCH 03/34] [Advanced Logbook] Fixed display of refs
---
src/QSLManager/QSO.php | 20 ++++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/src/QSLManager/QSO.php b/src/QSLManager/QSO.php
index 22033afe..e9082085 100644
--- a/src/QSLManager/QSO.php
+++ b/src/QSLManager/QSO.php
@@ -37,7 +37,7 @@ class QSO
private string $dxcc;
private string $iota;
/** @var string[] */
- private array $deVUCCGridsquares;
+ private string $deVUCCGridsquares;
private string $dxGridsquare;
private string $dxIOTA;
private string $dxSig;
@@ -45,7 +45,7 @@ class QSO
private string $dxDARCDOK;
private string $dxSOTAReference;
/** @var string[] */
- private array $dxVUCCGridsquares;
+ private string $dxVUCCGridsquares;
private string $QSLMsg;
private ?DateTime $QSLReceivedDate;
private string $QSLReceived;
@@ -159,7 +159,7 @@ class QSO
$this->deIOTAIslandID = $data['COL_MY_IOTA_ISLAND_ID'] ?? '';
$this->deSOTAReference = $data['COL_MY_SOTA_REF'] ?? '';
- $this->deVUCCGridsquares = ($data['COL_MY_VUCC_GRIDS'] === null) ? [] : explode(",", $data['COL_MY_VUCC_GRIDS'] ?? '');
+ $this->deVUCCGridsquares = $data['COL_MY_VUCC_GRIDS'] ?? '';
$this->dxGridsquare = $data['COL_GRIDSQUARE'] ?? '';
$this->dxIOTA = $data['COL_IOTA'] ?? '';
@@ -169,7 +169,7 @@ class QSO
$this->dxSOTAReference = $data['COL_SOTA_REF'] ?? '';
- $this->dxVUCCGridsquares = ($data['COL_VUCC_GRIDS'] === null) ? [] : explode(",", $data['COL_VUCC_GRIDS'] ?? '');
+ $this->dxVUCCGridsquares = $data['COL_VUCC_GRIDS'] ?? '';
$this->QSLMsg = $data['COL_QSLMSG'] ?? '';
@@ -595,7 +595,7 @@ class QSO
/**
* @return string[]
*/
- public function getDeVUCCGridsquares(): array
+ public function getDeVUCCGridsquares(): string
{
return $this->deVUCCGridsquares;
}
@@ -651,7 +651,7 @@ class QSO
/**
* @return string[]
*/
- public function getDxVUCCGridsquares(): array
+ public function getDxVUCCGridsquares(): string
{
return $this->dxVUCCGridsquares;
}
@@ -825,8 +825,8 @@ class QSO
private function getFormattedDeRefs(): string
{
$refs = [];
- if ($this->deVUCCGridsquares !== []) {
- $refs[] = implode(",", $this->deVUCCGridsquares);
+ if ($this->deVUCCGridsquares !== '') {
+ $refs[] = $this->deVUCCGridsquares;
} else {
if ($this->deGridsquare !== '') {
$refs[] = $this->deGridsquare;
@@ -851,8 +851,8 @@ class QSO
private function getFormattedDxRefs(): string
{
$refs = [];
- if ($this->dxVUCCGridsquares !== []) {
- $refs[] = implode(",", $this->dxVUCCGridsquares);
+ if ($this->dxVUCCGridsquares !== '') {
+ $refs[] = $this->dxVUCCGridsquares;
} else if ($this->dxGridsquare !== '') {
$refs[] = $this->dxGridsquare;
}
From 3ef655f4b7190c016e09b5a814475f3b544fe826 Mon Sep 17 00:00:00 2001
From: Andreas <6977712+AndreasK79@users.noreply.github.com>
Date: Mon, 26 Jun 2023 20:54:36 +0200
Subject: [PATCH 04/34] [Advanced Logbook] Added qrblink to grid
---
assets/js/sections/logbookadvanced.js | 2 +-
src/QSLManager/QSO.php | 42 ++++++++++-----------------
2 files changed, 16 insertions(+), 28 deletions(-)
diff --git a/assets/js/sections/logbookadvanced.js b/assets/js/sections/logbookadvanced.js
index 984d5620..9e2a8057 100644
--- a/assets/js/sections/logbookadvanced.js
+++ b/assets/js/sections/logbookadvanced.js
@@ -32,7 +32,7 @@ function updateRow(qso) {
cells.eq(c++).text(qso.rstR);
cells.eq(c++).text(qso.band);
cells.eq(c++).text(qso.deRefs);
- cells.eq(c++).text(qso.dxRefs);
+ cells.eq(c++).html(qso.dxRefs);
cells.eq(c++).text(qso.name);
cells.eq(c++).text(qso.qslVia);
cells.eq(c++).html(qso.qsl);
diff --git a/src/QSLManager/QSO.php b/src/QSLManager/QSO.php
index e9082085..66b1e760 100644
--- a/src/QSLManager/QSO.php
+++ b/src/QSLManager/QSO.php
@@ -38,6 +38,7 @@ class QSO
private string $iota;
/** @var string[] */
private string $deVUCCGridsquares;
+ private string $stationGridsquare;
private string $dxGridsquare;
private string $dxIOTA;
private string $dxSig;
@@ -161,6 +162,8 @@ class QSO
$this->deVUCCGridsquares = $data['COL_MY_VUCC_GRIDS'] ?? '';
+ $this->stationGridsquare = $data['station_gridsquare'] ?? '';
+
$this->dxGridsquare = $data['COL_GRIDSQUARE'] ?? '';
$this->dxIOTA = $data['COL_IOTA'] ?? '';
$this->dxSig = $data['COL_SIG'] ?? '';
@@ -209,7 +212,6 @@ class QSO
}
}
$this->lotw_hint = $lotw_hint;
-
}
/**
@@ -218,14 +220,6 @@ class QSO
function getQSLString($data, $custom_date_format): string
{
$CI =& get_instance();
- // Load language files
- $CI->lang->load(array(
- 'contesting',
- 'qslcard',
- 'lotw',
- 'eqsl',
- 'qso'
- ));
$qslstring = 'lang->load(array(
- 'contesting',
- 'qslcard',
- 'lotw',
- 'eqsl',
- 'qso'
- ));
$lotwstring = 'lang->load(array(
- 'contesting',
- 'qslcard',
- 'lotw',
- 'eqsl',
- 'qso'
- ));
$eqslstring = 'dxVUCCGridsquares !== '') {
- $refs[] = $this->dxVUCCGridsquares;
+ $refs[] = $this->dxVUCCGridsquares . ' ' .$this->getQrbLink($this->stationGridsquare, $this->dxVUCCGridsquares, $this->dxGridsquare);
} else if ($this->dxGridsquare !== '') {
- $refs[] = $this->dxGridsquare;
+ $refs[] = $this->dxGridsquare . ' ' .$this->getQrbLink($this->stationGridsquare, $this->dxVUCCGridsquares, $this->dxGridsquare);
}
if ($this->dxSOTAReference !== '') {
$refs[] = "SOTA:" . $this->dxSOTAReference;
@@ -961,4 +939,14 @@ class QSO
return trim(implode(" ", $label));
}
+
+ private function getQrbLink($mygrid, $grid, $vucc)
+ {
+ if (!empty($grid)) {
+ return '';
+ } else if (!empty($vucc)) {
+ return '';
+ }
+ return '';
+ }
}
From f13aa832543219ac8ec20c21982d4d6d6c54f7c5 Mon Sep 17 00:00:00 2001
From: Andreas <6977712+AndreasK79@users.noreply.github.com>
Date: Tue, 27 Jun 2023 08:36:50 +0200
Subject: [PATCH 05/34] [Advanced Logbook] Added link to IOTA
---
assets/js/sections/logbookadvanced.js | 2 +-
src/QSLManager/QSO.php | 28 +++++++++++++++++++++------
2 files changed, 23 insertions(+), 7 deletions(-)
diff --git a/assets/js/sections/logbookadvanced.js b/assets/js/sections/logbookadvanced.js
index 9e2a8057..70f026da 100644
--- a/assets/js/sections/logbookadvanced.js
+++ b/assets/js/sections/logbookadvanced.js
@@ -46,7 +46,7 @@ function updateRow(qso) {
cells.eq(c++).text(qso.dxcc);
cells.eq(c++).text(qso.state);
cells.eq(c++).text(qso.cqzone);
- cells.eq(c++).text(qso.iota);
+ cells.eq(c++).html(qso.iota);
$('[data-toggle="tooltip"]').tooltip();
return row;
diff --git a/src/QSLManager/QSO.php b/src/QSLManager/QSO.php
index 66b1e760..98a4a614 100644
--- a/src/QSLManager/QSO.php
+++ b/src/QSLManager/QSO.php
@@ -191,7 +191,7 @@ class QSO
$this->cqzone = ($data['COL_CQZ'] === null) ? '' : $data['COL_CQZ'];
$this->state = ($data['COL_STATE'] === null) ? '' :$data['COL_STATE'];
$this->dxcc = ($data['name'] === null) ? '- NONE -' : ucwords(strtolower($data['name']), "- (/");
- $this->iota = ($data['COL_IOTA'] === null) ? '' :$data['COL_IOTA'];
+ $this->iota = ($data['COL_IOTA'] === null) ? '' : $this->getIotaLink($data['COL_IOTA']);
if (array_key_exists('end', $data)) {
$this->end = ($data['end'] === null) ? null : DateTime::createFromFormat("Y-m-d", $data['end'], new DateTimeZone('UTC'));
} else {
@@ -199,10 +199,18 @@ class QSO
}
$this->callsign = ($data['callsign'] === null) ? '' :$data['callsign'];
$this->lastupload = ($data['lastupload'] === null) ? '' : date($custom_date_format . " H:i", strtotime($data['lastupload']));
+ $this->lotw_hint = $this->getLotwHint($data['lastupload']);
+ }
+
+ /**
+ * @return string
+ */
+ function getLotwHint($lastupload): string
+ {
$lotw_hint = '';
- if ($data['lastupload'] !== null) {
+ if ($lastupload !== null) {
$diff = time();
- $diff = (time() - strtotime($data['lastupload'])) / 86400;
+ $diff = (time() - strtotime($lastupload)) / 86400;
if ($diff > 365) {
$lotw_hint = ' lotw_info_red';
} elseif ($diff > 30) {
@@ -211,9 +219,9 @@ class QSO
$lotw_hint = ' lotw_info_yellow';
}
}
- $this->lotw_hint = $lotw_hint;
+ return $lotw_hint;
}
-
+
/**
* @return string
*/
@@ -940,7 +948,7 @@ class QSO
return trim(implode(" ", $label));
}
- private function getQrbLink($mygrid, $grid, $vucc)
+ private function getQrbLink($mygrid, $grid, $vucc) : string
{
if (!empty($grid)) {
return '';
@@ -949,4 +957,12 @@ class QSO
}
return '';
}
+
+ private function getIotaLink($iota) : string
+ {
+ if ($iota !== '') {
+ return '' . $iota . '';
+ }
+ return '';
+ }
}
From d666cb3c4ce2548ea1dc02439af17dac3ada068a Mon Sep 17 00:00:00 2001
From: Andreas <6977712+AndreasK79@users.noreply.github.com>
Date: Tue, 27 Jun 2023 11:21:20 +0200
Subject: [PATCH 06/34] [Advanced Logbook] Added links for QRZ and HamQTH after
callsign
---
application/models/Logbookadvanced_model.php | 1 +
assets/js/sections/logbookadvanced.js | 4 ++--
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/application/models/Logbookadvanced_model.php b/application/models/Logbookadvanced_model.php
index f0571352..d94e1565 100644
--- a/application/models/Logbookadvanced_model.php
+++ b/application/models/Logbookadvanced_model.php
@@ -136,6 +136,7 @@ class Logbookadvanced_model extends CI_Model {
FROM " . $this->config->item('table_name') . " qsos
INNER JOIN station_profile ON qsos.station_id = station_profile.station_id
LEFT OUTER JOIN dxcc_entities ON qsos.COL_MY_DXCC = dxcc_entities.adif
+ LEFT OUTER JOIN lotw_users ON qsos.col_call=lotw_users.callsign
WHERE station_profile.user_id = ?
$where
$order
diff --git a/assets/js/sections/logbookadvanced.js b/assets/js/sections/logbookadvanced.js
index 70f026da..2cf65790 100644
--- a/assets/js/sections/logbookadvanced.js
+++ b/assets/js/sections/logbookadvanced.js
@@ -26,7 +26,7 @@ function updateRow(qso) {
let c = 1;
cells.eq(c++).text(qso.qsoDateTime);
cells.eq(c++).text(qso.de);
- cells.eq(c++).html(''+qso.dx+'' + (qso.callsign == '' ? '' : ' L'));
+ cells.eq(c++).html(''+qso.dx+'' + (qso.callsign == '' ? '' : ' L') + '
');
cells.eq(c++).text(qso.mode);
cells.eq(c++).text(qso.rstS);
cells.eq(c++).text(qso.rstR);
@@ -81,7 +81,7 @@ function loadQSOTable(rows) {
data.push('');
data.push(qso.qsoDateTime);
data.push(qso.de);
- data.push(''+qso.dx+'' + (qso.callsign == '' ? '' : ' L'));
+ data.push(''+qso.dx+'' + (qso.callsign == '' ? '' : ' L') + '
');
data.push(qso.mode);
data.push(qso.rstS);
data.push(qso.rstR);
From 8dd3f290a76fb4b11037fe5e8902cac0f6b4f761 Mon Sep 17 00:00:00 2001
From: Andreas <6977712+AndreasK79@users.noreply.github.com>
Date: Tue, 27 Jun 2023 15:03:12 +0200
Subject: [PATCH 07/34] [Advanced Logbook] Now can print label from advanced
logbook
---
application/controllers/Labels.php | 36 ++++++++++---------
application/models/Labels_model.php | 12 +++++++
application/views/logbookadvanced/index.php | 3 ++
assets/js/sections/logbookadvanced.js | 39 +++++++++++++++++++++
4 files changed, 74 insertions(+), 16 deletions(-)
diff --git a/application/controllers/Labels.php b/application/controllers/Labels.php
index 628b4dcd..908a23bd 100644
--- a/application/controllers/Labels.php
+++ b/application/controllers/Labels.php
@@ -87,22 +87,27 @@ class Labels extends CI_Controller {
}
+ public function printids() {
+ $ids = xss_clean(json_decode($this->input->post('id')));
+ $this->load->model('labels_model');
+ $result = $this->labels_model->export_printrequestedids($ids);
+
+ $this->prepareLabel($result);
+ }
+
public function print($station_id) {
$clean_id = xss_clean($station_id);
$this->load->model('labels_model');
$result = $this->labels_model->export_printrequested($clean_id);
+ $this->prepareLabel($result);
+ }
+
+ function prepareLabel($qsos) {
+ $this->load->model('labels_model');
$label = $this->labels_model->getDefaultLabel();
-
- // require_once('fpdf.php');
- // require('PDF_Label.php');
- // require_once APPPATH."/src/Label/PDF_Label.php";
- // require_once APPPATH."/src/Label/fpdf.php";
-
- // Example of custom format
- // $pdf = new PDF_Label(array('paper-size'=>'A4', 'metric'=>'mm', 'marginLeft'=>1, 'marginTop'=>1, 'NX'=>2, 'NY'=>7, 'SpaceX'=>0, 'SpaceY'=>0, 'width'=>99, 'height'=>38, 'font-size'=>14));
-
+
try {
if ($label) {
$pdf = new PDF_Label(array(
@@ -127,9 +132,9 @@ class Labels extends CI_Controller {
redirect('labels');
}
define('FPDF_FONTPATH', './src/Label/font/');
-
+
$pdf->AddPage();
-
+
if ($label->font == 'DejaVuSans') {
$pdf->AddFont($label->font,'','DejaVuSansMono.ttf',true);
$pdf->SetFont($label->font);
@@ -137,13 +142,12 @@ class Labels extends CI_Controller {
$pdf->AddFont($label->font);
$pdf->SetFont($label->font);
}
-
-
- if ($result->num_rows() > 0) {
+
+ if ($qsos->num_rows() > 0) {
if ($label->qsos == 1) {
- $this->makeOneQsoLabel($result->result(), $pdf);
+ $this->makeOneQsoLabel($qsos->result(), $pdf);
} else {
- $this->makeMultiQsoLabel($result->result(), $pdf, $label->qsos);
+ $this->makeMultiQsoLabel($qsos->result(), $pdf, $label->qsos);
}
} else {
$this->session->set_flashdata('message', '0 QSOs found for print!');
diff --git a/application/models/Labels_model.php b/application/models/Labels_model.php
index 91c62027..c0c50494 100644
--- a/application/models/Labels_model.php
+++ b/application/models/Labels_model.php
@@ -127,4 +127,16 @@ class Labels_model extends CI_Model {
return $query;
}
+
+ function export_printrequestedids($ids) {
+ $this->db->select($this->config->item('table_name').'.*, station_profile.*, dxcc_entities.name as station_country');
+ $this->db->join('station_profile', 'station_profile.station_id = '.$this->config->item('table_name').'.station_id');
+ $this->db->join('dxcc_entities', 'station_profile.station_dxcc = dxcc_entities.adif');
+ $this->db->where('station_profile.user_id', $this->session->userdata('user_id'));
+ $this->db->where_in('COL_PRIMARY_KEY', $ids);
+ $this->db->order_by("COL_DXCC", "ASC");
+ $query = $this->db->get($this->config->item('table_name'));
+
+ return $query;
+ }
}
\ No newline at end of file
diff --git a/application/views/logbookadvanced/index.php b/application/views/logbookadvanced/index.php
index ed417d8b..230df578 100644
--- a/application/views/logbookadvanced/index.php
+++ b/application/views/logbookadvanced/index.php
@@ -191,7 +191,10 @@
+
+
+
diff --git a/assets/js/sections/logbookadvanced.js b/assets/js/sections/logbookadvanced.js
index 70f026da..05156ac4 100644
--- a/assets/js/sections/logbookadvanced.js
+++ b/assets/js/sections/logbookadvanced.js
@@ -348,6 +348,45 @@ $(document).ready(function () {
$('#notRequired').click(function (event) {
handleQsl('I','', 'notRequired');
});
+ $('#receivedBureau').click(function (event) {
+ });
+ $('#receivedDirect').click(function (event) {
+ });
+
+ $('#printLabel').click(function (event) {
+ var elements = $('#qsoList tbody input:checked');
+ var nElements = elements.length;
+ if (nElements == 0) {
+ return;
+ }
+ $('#printLabel').prop("disabled", true);
+
+ var id_list=[];
+
+ elements.each(function() {
+ let id = $(this).first().closest('tr').data('qsoID')
+ id_list.push(id);
+ });
+
+ $.ajax({
+ url: base_url + 'index.php/labels/printids',
+ type: 'post',
+ data: {'id': JSON.stringify(id_list, null, 2) },
+ xhr:function(){
+ var xhr = new XMLHttpRequest();
+ xhr.responseType= 'blob'
+ return xhr;
+ },
+ success: function(data) {
+ if(data){
+ var file = new Blob([data], {type: 'application/pdf'});
+ var fileURL = URL.createObjectURL(file);
+ window.open(fileURL);
+ }
+ $('#printLabel').prop("disabled", false);
+ }
+ });
+ });
$('#searchForm').on('reset', function(e) {
setTimeout(function() {
From cf05c9017dd7552ad20d24cac4eea82345cab3af Mon Sep 17 00:00:00 2001
From: Andreas <6977712+AndreasK79@users.noreply.github.com>
Date: Tue, 27 Jun 2023 22:22:24 +0200
Subject: [PATCH 08/34] [Advanced Logbook] Unselects QSOs after printing label
---
assets/js/sections/logbookadvanced.js | 3 +++
1 file changed, 3 insertions(+)
diff --git a/assets/js/sections/logbookadvanced.js b/assets/js/sections/logbookadvanced.js
index 05156ac4..ecfad2ad 100644
--- a/assets/js/sections/logbookadvanced.js
+++ b/assets/js/sections/logbookadvanced.js
@@ -383,6 +383,9 @@ $(document).ready(function () {
var fileURL = URL.createObjectURL(file);
window.open(fileURL);
}
+ $.each(id_list, function(k, v) {
+ unselectQsoID(this);
+ });
$('#printLabel').prop("disabled", false);
}
});
From aa139017d9a38f75335ec34d2a60219feb2a9ab4 Mon Sep 17 00:00:00 2001
From: Andreas <6977712+AndreasK79@users.noreply.github.com>
Date: Wed, 28 Jun 2023 08:27:44 +0200
Subject: [PATCH 09/34] [Advanced Logbook] Received QSL (direct/bureau) can be
set
---
application/controllers/Logbookadvanced.php | 28 +++++++++++++++++
application/models/Logbookadvanced_model.php | 19 +++++++++++
assets/js/sections/logbookadvanced.js | 33 ++++++++++++++++++++
3 files changed, 80 insertions(+)
diff --git a/application/controllers/Logbookadvanced.php b/application/controllers/Logbookadvanced.php
index 19daff37..b2ed5e60 100644
--- a/application/controllers/Logbookadvanced.php
+++ b/application/controllers/Logbookadvanced.php
@@ -184,4 +184,32 @@ class Logbookadvanced extends CI_Controller {
header("Content-Type: application/json");
print json_encode($q);
}
+
+ function update_qsl_received() {
+ $this->load->model('logbookadvanced_model');
+
+ $ids = xss_clean($this->input->post('id'));
+ $user_id = (int)$this->session->userdata('user_id');
+ $method = xss_clean($this->input->post('method'));
+ $sent = xss_clean($this->input->post('sent'));
+
+ $status = $this->logbookadvanced_model->updateQslReceived($ids, $user_id, $method, $sent);
+
+ $data = $this->logbookadvanced_model->getQsosForAdif($ids, $user_id);
+
+ $results = $data->result('array');
+
+ $qsos = [];
+ foreach ($results as $data) {
+ $qsos[] = new QSO($data);
+ }
+
+ $q = [];
+ foreach ($qsos as $qso) {
+ $q[] = $qso->toArray();
+ }
+
+ header("Content-Type: application/json");
+ print json_encode($q);
+ }
}
\ No newline at end of file
diff --git a/application/models/Logbookadvanced_model.php b/application/models/Logbookadvanced_model.php
index f0571352..4fcdab99 100644
--- a/application/models/Logbookadvanced_model.php
+++ b/application/models/Logbookadvanced_model.php
@@ -136,6 +136,7 @@ class Logbookadvanced_model extends CI_Model {
FROM " . $this->config->item('table_name') . " qsos
INNER JOIN station_profile ON qsos.station_id = station_profile.station_id
LEFT OUTER JOIN dxcc_entities ON qsos.COL_MY_DXCC = dxcc_entities.adif
+ LEFT OUTER JOIN lotw_users ON qsos.col_call=lotw_users.callsign
WHERE station_profile.user_id = ?
$where
$order
@@ -215,6 +216,24 @@ class Logbookadvanced_model extends CI_Model {
}
}
+ public function updateQslReceived($ids, $user_id, $method, $sent) {
+ $this->load->model('user_model');
+
+ if(!$this->user_model->authorize(2)) {
+ return array('message' => 'Error');
+ } else {
+ $data = array(
+ 'COL_QSLRDATE' => date('Y-m-d H:i:s'),
+ 'COL_QSL_RCVD' => $sent,
+ 'COL_QSL_RCVD_VIA' => $method
+ );
+ $this->db->where_in('COL_PRIMARY_KEY', json_decode($ids, true));
+ $this->db->update($this->config->item('table_name'), $data);
+
+ return array('message' => 'OK');
+ }
+ }
+
public function updateQsoWithCallbookInfo($qsoID, $qso, $callbook) {
$updatedData = array();
if (!empty($callbook['name']) && empty($qso['COL_NAME'])) {
diff --git a/assets/js/sections/logbookadvanced.js b/assets/js/sections/logbookadvanced.js
index ecfad2ad..8d688be0 100644
--- a/assets/js/sections/logbookadvanced.js
+++ b/assets/js/sections/logbookadvanced.js
@@ -349,8 +349,10 @@ $(document).ready(function () {
handleQsl('I','', 'notRequired');
});
$('#receivedBureau').click(function (event) {
+ handleQslReceived('Y','B', 'receivedBureau');
});
$('#receivedDirect').click(function (event) {
+ handleQslReceived('Y','D', 'receivedDirect');
});
$('#printLabel').click(function (event) {
@@ -428,6 +430,37 @@ $(document).ready(function () {
});
}
+ function handleQslReceived(sent, method, tag) {
+ var elements = $('#qsoList tbody input:checked');
+ var nElements = elements.length;
+ if (nElements == 0) {
+ return;
+ }
+ $('#'+tag).prop("disabled", true);
+ var id_list=[];
+ elements.each(function() {
+ let id = $(this).first().closest('tr').data('qsoID')
+ id_list.push(id);
+ });
+ $.ajax({
+ url: base_url + 'index.php/logbookadvanced/update_qsl_received',
+ type: 'post',
+ data: {'id': JSON.stringify(id_list, null, 2),
+ 'sent' : sent,
+ 'method' : method
+ },
+ success: function(data) {
+ if (data !== []) {
+ $.each(data, function(k, v) {
+ updateRow(this);
+ unselectQsoID(this.qsoID);
+ });
+ }
+ $('#'+tag).prop("disabled", false);
+ }
+ });
+ }
+
$('#checkBoxAll').change(function (event) {
if (this.checked) {
$('#qsoList tbody tr').each(function (i) {
From e2b442d39ce0b51aaca51b1d6ea1b2bc31dfc401 Mon Sep 17 00:00:00 2001
From: Andreas <6977712+AndreasK79@users.noreply.github.com>
Date: Wed, 28 Jun 2023 09:17:48 +0200
Subject: [PATCH 10/34] [Advanced Logbook] Fixed update query
---
application/models/Logbookadvanced_model.php | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/application/models/Logbookadvanced_model.php b/application/models/Logbookadvanced_model.php
index 4fcdab99..490450cf 100644
--- a/application/models/Logbookadvanced_model.php
+++ b/application/models/Logbookadvanced_model.php
@@ -132,10 +132,11 @@ class Logbookadvanced_model extends CI_Model {
$order = $this->getSortorder($sortorder);
$sql = "
- SELECT *, dxcc_entities.name AS station_country
+ SELECT qsos.*, d2.*, lotw_users.*, station_profile.*, dxcc_entities.name AS station_country
FROM " . $this->config->item('table_name') . " qsos
INNER JOIN station_profile ON qsos.station_id = station_profile.station_id
LEFT OUTER JOIN dxcc_entities ON qsos.COL_MY_DXCC = dxcc_entities.adif
+ LEFT OUTER JOIN dxcc_entities d2 ON qsos.COL_DXCC = d2.adif
LEFT OUTER JOIN lotw_users ON qsos.col_call=lotw_users.callsign
WHERE station_profile.user_id = ?
$where
From 4254a37642b47ca22c8926157dbc8232c9151bb3 Mon Sep 17 00:00:00 2001
From: Andreas <6977712+AndreasK79@users.noreply.github.com>
Date: Wed, 28 Jun 2023 12:24:38 +0200
Subject: [PATCH 11/34] [Advanced Logbook] Added some error handling when
printing labels
---
application/controllers/Labels.php | 24 ++++++++++++++++++------
assets/js/sections/logbookadvanced.js | 17 ++++++++++++++++-
2 files changed, 34 insertions(+), 7 deletions(-)
diff --git a/application/controllers/Labels.php b/application/controllers/Labels.php
index 908a23bd..9b813de0 100644
--- a/application/controllers/Labels.php
+++ b/application/controllers/Labels.php
@@ -92,7 +92,7 @@ class Labels extends CI_Controller {
$this->load->model('labels_model');
$result = $this->labels_model->export_printrequestedids($ids);
- $this->prepareLabel($result);
+ $this->prepareLabel($result, true);
}
public function print($station_id) {
@@ -104,7 +104,7 @@ class Labels extends CI_Controller {
$this->prepareLabel($result);
}
- function prepareLabel($qsos) {
+ function prepareLabel($qsos, $jscall = false) {
$this->load->model('labels_model');
$label = $this->labels_model->getDefaultLabel();
@@ -124,12 +124,24 @@ class Labels extends CI_Controller {
'font-size' => $label->font_size
));
} else {
- $this->session->set_flashdata('error', 'You need to create a label and set it to be used for print.');
- redirect('labels');
+ if ($jscall) {
+ header('Content-Type: application/json');
+ echo json_encode(array('message' => 'You need to create a label and set it to be used for print.'));
+ return;
+ } else {
+ $this->session->set_flashdata('error', 'You need to create a label and set it to be used for print.');
+ redirect('labels');
+ }
}
} catch (\Throwable $th) {
- $this->session->set_flashdata('error', 'Something went wrong! The label could not be generated. Check label size and font size.');
- redirect('labels');
+ if ($jscall) {
+ header('Content-Type: application/json');
+ echo json_encode(array('message' => 'Something went wrong! The label could not be generated. Check label size and font size.'));
+ return;
+ } else {
+ $this->session->set_flashdata('error', 'Something went wrong! The label could not be generated. Check label size and font size.');
+ redirect('labels');
+ }
}
define('FPDF_FONTPATH', './src/Label/font/');
diff --git a/assets/js/sections/logbookadvanced.js b/assets/js/sections/logbookadvanced.js
index 8813af4e..f447c8d2 100644
--- a/assets/js/sections/logbookadvanced.js
+++ b/assets/js/sections/logbookadvanced.js
@@ -389,7 +389,22 @@ $(document).ready(function () {
unselectQsoID(this);
});
$('#printLabel').prop("disabled", false);
- }
+ },
+ error: function (data) {
+ BootstrapDialog.alert({
+ title: 'ERROR',
+ message: 'Something went wrong with label print. Go to labels and check if you have defined a label, and that it is set for print!',
+ type: BootstrapDialog.TYPE_DANGER,
+ closable: false,
+ draggable: false,
+ callback: function (result) {
+ }
+ });
+ $.each(id_list, function(k, v) {
+ unselectQsoID(this);
+ });
+ $('#printLabel').prop("disabled", false);
+ },
});
});
From dec43405936d9ac9d6d46d4c712001aada6f4133 Mon Sep 17 00:00:00 2001
From: Andreas <6977712+AndreasK79@users.noreply.github.com>
Date: Wed, 28 Jun 2023 12:26:46 +0200
Subject: [PATCH 12/34] [Advanced Logbook] Added collapsable filters and
actions
---
application/views/logbookadvanced/index.php | 70 +++++++++++----------
1 file changed, 38 insertions(+), 32 deletions(-)
diff --git a/application/views/logbookadvanced/index.php b/application/views/logbookadvanced/index.php
index 230df578..45539220 100644
--- a/application/views/logbookadvanced/index.php
+++ b/application/views/logbookadvanced/index.php
@@ -15,7 +15,9 @@
+
+
-
-
-
+
\ No newline at end of file
From ca611dee737ad10d1b63ed60ec56cf6d2b71b6f5 Mon Sep 17 00:00:00 2001
From: phl0
Date: Thu, 29 Jun 2023 09:46:01 +0200
Subject: [PATCH 13/34] Add option to mark QSL RX from pic upload window
---
.../language/english/general_words_lang.php | 3 +-
.../language/german/general_words_lang.php | 1 +
application/views/view_log/qso.php | 42 ++++++++++++-------
3 files changed, 31 insertions(+), 15 deletions(-)
diff --git a/application/language/english/general_words_lang.php b/application/language/english/general_words_lang.php
index 6dc3b456..2b15e688 100644
--- a/application/language/english/general_words_lang.php
+++ b/application/language/english/general_words_lang.php
@@ -55,6 +55,7 @@ $lang['general_word_lotw'] = 'Logbook of the World';
$lang['general_edit_qso'] = 'Edit QSO';
$lang['general_mark_qsl_rx_bureau'] = 'Mark QSL Received (Bureau)';
$lang['general_mark_qsl_rx_direct'] = 'Mark QSL Received (Direct)';
+$lang['general_mark_qsl_rx_electronic'] = 'Mark QSL Received (Electronic)';
$lang['general_mark_qsl_tx_bureau'] = 'Mark QSL Sent (Bureau)';
$lang['general_mark_qsl_tx_direct'] = 'Mark QSL Sent (Direct)';
@@ -138,4 +139,4 @@ $lang['northamerica'] = 'North America';
$lang['oceania'] = 'Oceania';
$lang['southamerica'] = 'South America';
-$lang['gen_band_selection'] = 'Band selection';
\ No newline at end of file
+$lang['gen_band_selection'] = 'Band selection';
diff --git a/application/language/german/general_words_lang.php b/application/language/german/general_words_lang.php
index 61865b04..8930dddf 100644
--- a/application/language/german/general_words_lang.php
+++ b/application/language/german/general_words_lang.php
@@ -55,6 +55,7 @@ $lang['general_word_lotw'] = 'Logbook of the World';
$lang['general_edit_qso'] = 'QSO bearbeiten';
$lang['general_mark_qsl_rx_bureau'] = 'Markiere QSL erhalten (Büro)';
$lang['general_mark_qsl_rx_direct'] = 'Markiere QSL erhalten (Direkt)';
+$lang['general_mark_qsl_rx_electronic'] = 'Markiere QSL erhalten (Elektronisch)';
$lang['general_mark_qsl_tx_bureau'] = 'Markiere QSL gesendet (Büro)';
$lang['general_mark_qsl_tx_direct'] = 'Markiere QSL gesendet (Direkt)';
diff --git a/application/views/view_log/qso.php b/application/views/view_log/qso.php
index 0071fc06..8c61953d 100644
--- a/application/views/view_log/qso.php
+++ b/application/views/view_log/qso.php
@@ -507,25 +507,39 @@
Warning Maximum file upload size is B.
-
diff --git a/assets/js/sections/common.js b/assets/js/sections/common.js
index ceb493e5..e2be8bc2 100644
--- a/assets/js/sections/common.js
+++ b/assets/js/sections/common.js
@@ -1,4 +1,6 @@
function qsl_rcvd(id, method) {
+ $(".ld-ext-right-"+method).addClass('running');
+ $(".ld-ext-right-"+method).prop('disabled', true);
$.ajax({
url: base_url + 'index.php/qso/qsl_rcvd_ajax',
type: 'post',
@@ -6,6 +8,8 @@ function qsl_rcvd(id, method) {
'method': method
},
success: function(data) {
+ $(".ld-ext-right-"+method).removeClass('running');
+ $(".ld-ext-right-"+method).prop('disabled', false);
if (data.message == 'OK') {
$("#qsl_" + id).find("span:eq(1)").attr('class', 'qsl-green'); // Paints arrow green
$(".qsl_rcvd_" + id).remove(); // removes choice from menu
From c368dca5365705e8709074a6e5ce2b44837416d2 Mon Sep 17 00:00:00 2001
From: Andreas <6977712+AndreasK79@users.noreply.github.com>
Date: Thu, 29 Jun 2023 13:50:55 +0200
Subject: [PATCH 17/34] [Awards] Fix error when no bands are selected for POTA,
SOTA and WWFF
---
application/models/Pota.php | 2 ++
application/models/Sota.php | 2 ++
application/models/Wwff.php | 2 ++
3 files changed, 6 insertions(+)
diff --git a/application/models/Pota.php b/application/models/Pota.php
index 117a8c42..1c5c8a40 100644
--- a/application/models/Pota.php
+++ b/application/models/Pota.php
@@ -15,6 +15,8 @@ class Pota extends CI_Model {
$bandslots = $this->bands->get_worked_bands('pota');
+ if(!$bandslots) return null;
+
$this->db->where_in("station_id", $logbooks_locations_array);
$this->db->where_in("col_band", $bandslots);
$this->db->order_by("COL_POTA_REF", "ASC");
diff --git a/application/models/Sota.php b/application/models/Sota.php
index 6d47334e..46d7e5f5 100644
--- a/application/models/Sota.php
+++ b/application/models/Sota.php
@@ -15,6 +15,8 @@ class Sota extends CI_Model {
$bandslots = $this->bands->get_worked_bands('sota');
+ if(!$bandslots) return null;
+
$this->db->where_in("station_id", $logbooks_locations_array);
$this->db->where_in("col_band", $bandslots);
$this->db->order_by("COL_SOTA_REF", "ASC");
diff --git a/application/models/Wwff.php b/application/models/Wwff.php
index 93908d7e..e15584c3 100644
--- a/application/models/Wwff.php
+++ b/application/models/Wwff.php
@@ -15,6 +15,8 @@ class Wwff extends CI_Model {
$bandslots = $this->bands->get_worked_bands('wwff');
+ if(!$bandslots) return null;
+
$this->db->where_in("station_id", $logbooks_locations_array);
$this->db->where_in("col_band", $bandslots);
$this->db->order_by("COL_WWFF_REF", "ASC");
From 10d7739ea2c20d6d50a535a8b9fd997efa248837 Mon Sep 17 00:00:00 2001
From: Andreas <6977712+AndreasK79@users.noreply.github.com>
Date: Thu, 29 Jun 2023 14:08:57 +0200
Subject: [PATCH 18/34] [Search] Fixes search when no dxcc is set on qso
---
application/controllers/Logbook.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/application/controllers/Logbook.php b/application/controllers/Logbook.php
index d1d797e2..6c5d7675 100644
--- a/application/controllers/Logbook.php
+++ b/application/controllers/Logbook.php
@@ -772,7 +772,7 @@ class Logbook extends CI_Controller {
function querydb($id) {
$this->db->from($this->config->item('table_name'));
$this->db->join('station_profile', 'station_profile.station_id = '.$this->config->item('table_name').'.station_id');
- $this->db->join('dxcc_entities', 'dxcc_entities.adif = '.$this->config->item('table_name').'.COL_DXCC');
+ $this->db->join('dxcc_entities', 'dxcc_entities.adif = '.$this->config->item('table_name').'.COL_DXCC', 'left outer');
$this->db->join('lotw_users', 'lotw_users.callsign = '.$this->config->item('table_name').'.col_call', 'left outer');
$this->db->group_start();
$this->db->like(''.$this->config->item('table_name').'.COL_CALL', $id);
From e82a866611db85b4f274a4066645e69089c22022 Mon Sep 17 00:00:00 2001
From: phl0
Date: Thu, 29 Jun 2023 14:57:19 +0200
Subject: [PATCH 19/34] Brush up layout
---
application/views/view_log/qso.php | 20 ++++++++++++--------
1 file changed, 12 insertions(+), 8 deletions(-)
diff --git a/application/views/view_log/qso.php b/application/views/view_log/qso.php
index 458a95c4..a918a3ef 100644
--- a/application/views/view_log/qso.php
+++ b/application/views/view_log/qso.php
@@ -517,26 +517,30 @@
+
+
+
+
+
+
+
+
From 7e836149ff55fe6d0db8c6526688c37cc9e1671d Mon Sep 17 00:00:00 2001
From: phl0
Date: Thu, 29 Jun 2023 17:53:18 +0200
Subject: [PATCH 20/34] Add buttons for outgoing QSL
---
application/views/view_log/qso.php | 16 +++++++++++++---
assets/js/sections/common.js | 16 ++++++++++++----
2 files changed, 25 insertions(+), 7 deletions(-)
diff --git a/application/views/view_log/qso.php b/application/views/view_log/qso.php
index a918a3ef..3807efe8 100644
--- a/application/views/view_log/qso.php
+++ b/application/views/view_log/qso.php
@@ -534,13 +534,23 @@
+
+
+
+
+
+
+
+
+
diff --git a/assets/js/sections/common.js b/assets/js/sections/common.js
index e2be8bc2..2464589c 100644
--- a/assets/js/sections/common.js
+++ b/assets/js/sections/common.js
@@ -1,6 +1,6 @@
function qsl_rcvd(id, method) {
- $(".ld-ext-right-"+method).addClass('running');
- $(".ld-ext-right-"+method).prop('disabled', true);
+ $(".ld-ext-right-r-"+method).addClass('running');
+ $(".ld-ext-right-r-"+method).prop('disabled', true);
$.ajax({
url: base_url + 'index.php/qso/qsl_rcvd_ajax',
type: 'post',
@@ -8,8 +8,8 @@ function qsl_rcvd(id, method) {
'method': method
},
success: function(data) {
- $(".ld-ext-right-"+method).removeClass('running');
- $(".ld-ext-right-"+method).prop('disabled', false);
+ $(".ld-ext-right-r-"+method).removeClass('running');
+ $(".ld-ext-right-r-"+method).prop('disabled', false);
if (data.message == 'OK') {
$("#qsl_" + id).find("span:eq(1)").attr('class', 'qsl-green'); // Paints arrow green
$(".qsl_rcvd_" + id).remove(); // removes choice from menu
@@ -43,6 +43,8 @@ function qsl_sent(id, method) {
// Function: qsl_requested
// Marks QSL card requested against the QSO.
function qsl_requested(id, method) {
+ $(".ld-ext-right-t-"+method).addClass('running');
+ $(".ld-ext-right-t-"+method).prop('disabled', true);
$.ajax({
url: base_url + 'index.php/qso/qsl_requested_ajax',
type: 'post',
@@ -50,6 +52,8 @@ function qsl_requested(id, method) {
'method': method
},
success: function(data) {
+ $(".ld-ext-right-t-"+method).removeClass('running');
+ $(".ld-ext-right-t-"+method).prop('disabled', false);
if (data.message == 'OK') {
$("#qsl_" + id).find("span:eq(0)").attr('class', 'qsl-yellow'); // Paints arrow yellow
}
@@ -63,6 +67,8 @@ function qsl_requested(id, method) {
// Function: qsl_ignore
// Marks QSL card ignore against the QSO.
function qsl_ignore(id, method) {
+ $(".ld-ext-right-ignore").addClass('running');
+ $(".ld-ext-right-ignore").prop('disabled', true);
$.ajax({
url: base_url + 'index.php/qso/qsl_ignore_ajax',
type: 'post',
@@ -70,6 +76,8 @@ function qsl_ignore(id, method) {
'method': method
},
success: function(data) {
+ $(".ld-ext-right-ignore").removeClass('running');
+ $(".ld-ext-right-ignore").prop('disabled', false);
if (data.message == 'OK') {
$("#qsl_" + id).find("span:eq(0)").attr('class', 'qsl-grey'); // Paints arrow grey
}
From 34c0a925f2746e37a702f11ab2bb1dca74e1cb04 Mon Sep 17 00:00:00 2001
From: Andreas <6977712+AndreasK79@users.noreply.github.com>
Date: Thu, 29 Jun 2023 18:59:12 +0200
Subject: [PATCH 21/34] [Advanced Logbook] Added eQSL/LoTW filter and
DXCC/CQ/IOTA lookup
---
application/controllers/Logbookadvanced.php | 4 +
application/models/Logbookadvanced_model.php | 18 +++++
application/views/logbookadvanced/index.php | 49 +++++++++++-
assets/js/sections/common.js | 82 ++++++++++++--------
assets/js/sections/logbookadvanced.js | 6 +-
5 files changed, 124 insertions(+), 35 deletions(-)
diff --git a/application/controllers/Logbookadvanced.php b/application/controllers/Logbookadvanced.php
index b2ed5e60..736fc077 100644
--- a/application/controllers/Logbookadvanced.php
+++ b/application/controllers/Logbookadvanced.php
@@ -106,6 +106,10 @@ class Logbookadvanced extends CI_Controller {
'state' => xss_clean($this->input->post('state')),
'qsoresults' => xss_clean($this->input->post('qsoresults')),
'sats' => xss_clean($this->input->post('sats')),
+ 'lotwSent' => xss_clean($this->input->post('lotwSent')),
+ 'lotwReceived' => xss_clean($this->input->post('lotwReceived')),
+ 'eqslSent' => xss_clean($this->input->post('eqslSent')),
+ 'eqslReceived' => xss_clean($this->input->post('eqslReceived')),
);
$qsos = [];
diff --git a/application/models/Logbookadvanced_model.php b/application/models/Logbookadvanced_model.php
index 490450cf..d30f7b8a 100644
--- a/application/models/Logbookadvanced_model.php
+++ b/application/models/Logbookadvanced_model.php
@@ -56,6 +56,24 @@ class Logbookadvanced_model extends CI_Model {
$binding[] = $searchCriteria['qslReceived'];
}
+ if ($searchCriteria['lotwSent'] !== '') {
+ $conditions[] = "COL_LOTW_QSL_SENT = ?";
+ $binding[] = $searchCriteria['lotwSent'];
+ }
+ if ($searchCriteria['lotwReceived'] !== '') {
+ $conditions[] = "COL_LOTW_QSL_RCVD = ?";
+ $binding[] = $searchCriteria['lotwReceived'];
+ }
+
+ if ($searchCriteria['eqslSent'] !== '') {
+ $conditions[] = "COL_EQSL_QSL_SENT = ?";
+ $binding[] = $searchCriteria['eqslSent'];
+ }
+ if ($searchCriteria['eqslReceived'] !== '') {
+ $conditions[] = "COL_EQSL_QSL_RCVD = ?";
+ $binding[] = $searchCriteria['eqslReceived'];
+ }
+
if ($searchCriteria['iota'] !== '') {
$conditions[] = "COL_IOTA = ?";
$binding[] = $searchCriteria['iota'];
diff --git a/application/views/logbookadvanced/index.php b/application/views/logbookadvanced/index.php
index 45539220..671ba95c 100644
--- a/application/views/logbookadvanced/index.php
+++ b/application/views/logbookadvanced/index.php
@@ -144,7 +144,9 @@
-
+
+
diff --git a/assets/js/sections/common.js b/assets/js/sections/common.js
index ceb493e5..94d04727 100644
--- a/assets/js/sections/common.js
+++ b/assets/js/sections/common.js
@@ -358,7 +358,7 @@ function validateLocator(locator) {
}
// This displays the dialog with the form and it's where the resulttable is displayed
-function spawnLookupModal() {
+function spawnLookupModal(searchphrase, searchtype) {
$.ajax({
url: base_url + 'index.php/lookup',
type: 'post',
@@ -372,38 +372,22 @@ function spawnLookupModal() {
onshown: function(dialog) {
$('#quicklookuptype').change(function(){
var type = $('#quicklookuptype').val();
- if (type == "dxcc") {
- $('#quicklookupdxcc').show();
- $('#quicklookupiota').hide();
- $('#quicklookupcqz').hide();
- $('#quicklookupwas').hide();
- $('#quicklookuptext').hide();
- } else if (type == "iota") {
- $('#quicklookupiota').show();
- $('#quicklookupdxcc').hide();
- $('#quicklookupcqz').hide();
- $('#quicklookupwas').hide();
- $('#quicklookuptext').hide();
- } else if (type == "vucc" || type == "sota" || type == "wwff") {
- $('#quicklookuptext').show();
- $('#quicklookupiota').hide();
- $('#quicklookupdxcc').hide();
- $('#quicklookupcqz').hide();
- $('#quicklookupwas').hide();
- } else if (type == "cq") {
- $('#quicklookupcqz').show();
- $('#quicklookupiota').hide();
- $('#quicklookupdxcc').hide();
- $('#quicklookupwas').hide();
- $('#quicklookuptext').hide();
- } else if (type == "was") {
- $('#quicklookupwas').show();
- $('#quicklookupcqz').hide();
- $('#quicklookupiota').hide();
- $('#quicklookupdxcc').hide();
- $('#quicklookuptext').hide();
- }
+ changeLookupType(type);
});
+ if (searchtype !== undefined) {
+ $('#quicklookuptype').val(searchtype);
+ if (searchtype == 'dxcc') {
+ $("#quicklookupdxcc").val(searchphrase);
+ } else if (searchtype == 'iota') {
+ $("#quicklookupiota").val(searchphrase);
+ } else if (searchtype == 'cq') {
+ $("#quicklookupcqz").val(searchphrase);
+ } else {
+ $("#quicklookuptext").val(searchphrase);
+ }
+ changeLookupType(searchtype);
+ getLookupResult(this.form);
+ }
},
buttons: [{
label: 'Close',
@@ -416,6 +400,40 @@ function spawnLookupModal() {
});
}
+function changeLookupType(type) {
+ if (type == "dxcc") {
+ $('#quicklookupdxcc').show();
+ $('#quicklookupiota').hide();
+ $('#quicklookupcqz').hide();
+ $('#quicklookupwas').hide();
+ $('#quicklookuptext').hide();
+ } else if (type == "iota") {
+ $('#quicklookupiota').show();
+ $('#quicklookupdxcc').hide();
+ $('#quicklookupcqz').hide();
+ $('#quicklookupwas').hide();
+ $('#quicklookuptext').hide();
+ } else if (type == "vucc" || type == "sota" || type == "wwff") {
+ $('#quicklookuptext').show();
+ $('#quicklookupiota').hide();
+ $('#quicklookupdxcc').hide();
+ $('#quicklookupcqz').hide();
+ $('#quicklookupwas').hide();
+ } else if (type == "cq") {
+ $('#quicklookupcqz').show();
+ $('#quicklookupiota').hide();
+ $('#quicklookupdxcc').hide();
+ $('#quicklookupwas').hide();
+ $('#quicklookuptext').hide();
+ } else if (type == "was") {
+ $('#quicklookupwas').show();
+ $('#quicklookupcqz').hide();
+ $('#quicklookupiota').hide();
+ $('#quicklookupdxcc').hide();
+ $('#quicklookuptext').hide();
+ }
+}
+
// This function executes the call to the backend for fetching queryresult and displays the table in the dialog
function getLookupResult() {
$(".ld-ext-right").addClass('running');
diff --git a/assets/js/sections/logbookadvanced.js b/assets/js/sections/logbookadvanced.js
index f447c8d2..85e7d2b9 100644
--- a/assets/js/sections/logbookadvanced.js
+++ b/assets/js/sections/logbookadvanced.js
@@ -187,7 +187,11 @@ $(document).ready(function () {
gridsquare: this.gridsquare.value,
state: this.state.value,
qsoresults: this.qsoResults.value,
- sats: this.sats.value
+ sats: this.sats.value,
+ lotwSent: this.lotwSent.value,
+ lotwReceived: this.lotwReceived.value,
+ eqslSent: this.eqslSent.value,
+ eqslReceived: this.eqslReceived.value,
},
dataType: 'json',
success: function (data) {
From f4296b2c24b9e03fb99015c6d613a0cea527feeb Mon Sep 17 00:00:00 2001
From: phl0
Date: Thu, 29 Jun 2023 22:05:04 +0200
Subject: [PATCH 22/34] Add error message for no outstanding QO-100 QSOs
---
application/models/Stations.php | 4 ++--
application/views/webadif/export.php | 29 +++++++++++++++++++++-------
2 files changed, 24 insertions(+), 9 deletions(-)
diff --git a/application/models/Stations.php b/application/models/Stations.php
index 7d9e8823..dca8cd88 100644
--- a/application/models/Stations.php
+++ b/application/models/Stations.php
@@ -372,14 +372,14 @@ class Stations extends CI_Model {
$sql="
SELECT station_profile.station_id, station_profile.station_profile_name, station_profile.station_callsign, notc.c notcount, totc.c totcount
FROM station_profile
- INNER JOIN (
+ LEFT OUTER JOIN (
SELECT qsos.station_id, COUNT(qsos.COL_PRIMARY_KEY) c
FROM %s qsos
LEFT JOIN webadif ON qsos.COL_PRIMARY_KEY = webadif.qso_id
WHERE webadif.qso_id IS NULL AND qsos.COL_SAT_NAME = 'QO-100'
GROUP BY qsos.station_id
) notc ON station_profile.station_id = notc.station_id
- INNER JOIN (
+ LEFT JOIN (
SELECT qsos.station_id, COUNT(qsos.COL_PRIMARY_KEY) c
FROM %s qsos
WHERE qsos.COL_SAT_NAME = 'QO-100'
diff --git a/application/views/webadif/export.php b/application/views/webadif/export.php
index 11756f21..f968d582 100644
--- a/application/views/webadif/export.php
+++ b/application/views/webadif/export.php
@@ -24,6 +24,11 @@
result()) {
+ $queuedqsos = 0;
+ foreach ($station_profile->result() as $count) { // Fills the table with the data
+ $queuedqsos += $count->notcount;
+ }
+ if ($queuedqsos > 0) {
?>
You need to set a QO-100 Dx Club API key in your station profile. Only station profiles with an API Key are displayed.
Warning This might take a while as QSO uploads are processed sequentially.
@@ -41,15 +46,25 @@
';
foreach ($station_profile->result() as $station) { // Fills the table with the data
- echo '';
- echo '| ' . $station->station_profile_name . ' | ';
- echo '' . $station->station_callsign . ' | ';
- echo '' . $station->notcount . ' | ';
- echo '' . $station->totcount . ' | ';
- echo ' | ';
- echo '
';
+ if ($station->notcount != null) {
+ echo '';
+ echo '| ' . $station->station_profile_name . ' | ';
+ echo '' . $station->station_callsign . ' | ';
+ echo '' . $station->notcount . ' | ';
+ echo '' . $station->totcount . ' | ';
+ echo ' | ';
+ echo '
';
+ }
}
echo '';
+ } else {
+ ?>
+
+ There are currently no outstanding QSOs that need to be uploaded to the QO-100 Dx Club's API.
+ Go ahead and turn on your QO-100 station!
+
+
Date: Fri, 30 Jun 2023 07:01:03 +0200
Subject: [PATCH 23/34] Prevent .git being served by Webserver
Securitything:
Prevent .git-directory being served/exposed
---
.htaccess.sample | 2 ++
1 file changed, 2 insertions(+)
diff --git a/.htaccess.sample b/.htaccess.sample
index 435eea60..f766ea9f 100644
--- a/.htaccess.sample
+++ b/.htaccess.sample
@@ -10,3 +10,5 @@ RewriteRule ^(.*)$ /index.php?/$1 "[L,QSA,B= ?,BNP]"
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/$1 "[L,QSA,B= ?,BNP]"
+
+RedirectMatch 404 ^/\.git
From 5d4681696a8c5c1a203995ece12cdd9346deee62 Mon Sep 17 00:00:00 2001
From: Andreas <6977712+AndreasK79@users.noreply.github.com>
Date: Fri, 30 Jun 2023 07:59:12 +0200
Subject: [PATCH 24/34] [Advanced Logbook] Added missing changes
---
src/QSLManager/QSO.php | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/QSLManager/QSO.php b/src/QSLManager/QSO.php
index 98a4a614..5d85a1be 100644
--- a/src/QSLManager/QSO.php
+++ b/src/QSLManager/QSO.php
@@ -188,9 +188,9 @@ class QSO
$this->lotw = $this->getLotwString($data, $custom_date_format);
$this->eqsl = $this->getEqslString($data, $custom_date_format);
- $this->cqzone = ($data['COL_CQZ'] === null) ? '' : $data['COL_CQZ'];
+ $this->cqzone = ($data['COL_CQZ'] === null) ? '' : ''.$data['COL_CQZ'].'';
$this->state = ($data['COL_STATE'] === null) ? '' :$data['COL_STATE'];
- $this->dxcc = ($data['name'] === null) ? '- NONE -' : ucwords(strtolower($data['name']), "- (/");
+ $this->dxcc = ($data['name'] === null) ? '- NONE -' : ''.ucwords(strtolower($data['name']), "- (/").'';
$this->iota = ($data['COL_IOTA'] === null) ? '' : $this->getIotaLink($data['COL_IOTA']);
if (array_key_exists('end', $data)) {
$this->end = ($data['end'] === null) ? null : DateTime::createFromFormat("Y-m-d", $data['end'], new DateTimeZone('UTC'));
@@ -961,7 +961,7 @@ class QSO
private function getIotaLink($iota) : string
{
if ($iota !== '') {
- return '' . $iota . '';
+ return ''.$iota.' ';
}
return '';
}
From cb95b3a5e1c677f5537f56451beb1933014fb703 Mon Sep 17 00:00:00 2001
From: Andreas <6977712+AndreasK79@users.noreply.github.com>
Date: Fri, 30 Jun 2023 11:54:39 +0200
Subject: [PATCH 25/34] [QSL Image Upload] Fixed some errors in the upload
---
application/controllers/Qsl.php | 4 ++++
application/views/interface_assets/footer.php | 4 ++--
application/views/view_log/qso.php | 6 +++---
3 files changed, 9 insertions(+), 5 deletions(-)
diff --git a/application/controllers/Qsl.php b/application/controllers/Qsl.php
index 2602fa78..fb039215 100644
--- a/application/controllers/Qsl.php
+++ b/application/controllers/Qsl.php
@@ -66,11 +66,15 @@ class Qsl extends CI_Controller {
if (isset($_FILES['qslcardfront']) && $_FILES['qslcardfront']['name'] != "" && $_FILES['qslcardfront']['error'] == 0)
{
$result['front'] = $this->uploadQslCardFront($qsoid);
+ } else {
+ $result['front']['status'] = '';
}
if (isset($_FILES['qslcardback']) && $_FILES['qslcardback']['name'] != "" && $_FILES['qslcardback']['error'] == 0)
{
$result['back'] = $this->uploadQslCardBack($qsoid);
+ } else {
+ $result['back']['status'] = '';
}
header("Content-type: application/json");
diff --git a/application/views/interface_assets/footer.php b/application/views/interface_assets/footer.php
index cb3e3c63..df7aef74 100644
--- a/application/views/interface_assets/footer.php
+++ b/application/views/interface_assets/footer.php
@@ -2398,7 +2398,7 @@ function viewEqsl(picture, callsign) {
$("#qslcardfront").val(null);
}
- } else {
+ } else if (data.status.front.status != '') {
$("#qslupload").append('×Front QSL Card:' +
data.status.front.error +
'
');
@@ -2436,7 +2436,7 @@ function viewEqsl(picture, callsign) {
$(".carouselExampleIndicators").carousel();
$("#qslcardback").val(null);
}
- } else {
+ } else if (data.status.back.status != '') {
$("#qslupload").append('×\nBack QSL Card: ' +
data.status.back.error +
'
');
diff --git a/application/views/view_log/qso.php b/application/views/view_log/qso.php
index 3807efe8..6595ded1 100644
--- a/application/views/view_log/qso.php
+++ b/application/views/view_log/qso.php
@@ -507,9 +507,9 @@
Warning Maximum file upload size is B.
+
From cfbe4971d061fd8a86fda5175425faa5aee08870 Mon Sep 17 00:00:00 2001
From: Andreas <6977712+AndreasK79@users.noreply.github.com>
Date: Fri, 30 Jun 2023 12:50:58 +0200
Subject: [PATCH 26/34] [QSL Image Carousel] Fixed carousel in QSO popup
---
application/views/view_log/qso.php | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/application/views/view_log/qso.php b/application/views/view_log/qso.php
index 6595ded1..29fbe52f 100644
--- a/application/views/view_log/qso.php
+++ b/application/views/view_log/qso.php
@@ -574,13 +574,13 @@
id;
if ($i == 1) {
echo ' active';
}
echo '">';
echo '
 . '/assets/qslcard/' . $image->filename .')
';
- echo '
';
+ echo '
';
}
?>
From 38dee35937ae2ca3c6ef4302b46d7d6b529ead5e Mon Sep 17 00:00:00 2001
From: Andreas <6977712+AndreasK79@users.noreply.github.com>
Date: Fri, 30 Jun 2023 23:36:35 +0200
Subject: [PATCH 27/34] [Advanced Logbook] Added QSL image popup and indicator
---
application/controllers/Qsl.php | 7 ++++
application/models/Logbookadvanced_model.php | 12 ++++++-
application/views/qslcard/qslcarousel.php | 38 ++++++++++++++++++++
assets/js/sections/common.js | 28 +++++++++++++++
assets/js/sections/logbookadvanced.js | 4 +--
src/QSLManager/QSO.php | 3 ++
6 files changed, 89 insertions(+), 3 deletions(-)
create mode 100644 application/views/qslcard/qslcarousel.php
diff --git a/application/controllers/Qsl.php b/application/controllers/Qsl.php
index fb039215..89df8947 100644
--- a/application/controllers/Qsl.php
+++ b/application/controllers/Qsl.php
@@ -174,6 +174,13 @@ class Qsl extends CI_Controller {
echo json_encode($result);
}
+ function viewQsl() {
+ $cleanid = $this->security->xss_clean($this->input->post('id'));
+ $this->load->model('Qsl_model');
+ $data['qslimages'] = $this->Qsl_model->getQslForQsoId($cleanid);
+ $this->load->view('qslcard/qslcarousel', $data);
+ }
+
}
// Functions for storage, these need shifted to a libary to use across Cloudlog
diff --git a/application/models/Logbookadvanced_model.php b/application/models/Logbookadvanced_model.php
index d30f7b8a..cc361181 100644
--- a/application/models/Logbookadvanced_model.php
+++ b/application/models/Logbookadvanced_model.php
@@ -119,6 +119,11 @@ class Logbookadvanced_model extends CI_Model {
INNER JOIN station_profile ON qsos.station_id=station_profile.station_id
LEFT OUTER JOIN dxcc_entities ON qsos.col_dxcc=dxcc_entities.adif
LEFT OUTER JOIN lotw_users ON qsos.col_call=lotw_users.callsign
+ LEFT OUTER JOIN (
+ select count(*) as qslcount, qsoid
+ from qsl_images
+ group by qsoid
+ ) x on qsos.COL_PRIMARY_KEY = x.qsoid
WHERE station_profile.user_id = ?
$where
ORDER BY qsos.COL_TIME_ON desc, qsos.COL_PRIMARY_KEY desc
@@ -150,12 +155,17 @@ class Logbookadvanced_model extends CI_Model {
$order = $this->getSortorder($sortorder);
$sql = "
- SELECT qsos.*, d2.*, lotw_users.*, station_profile.*, dxcc_entities.name AS station_country
+ SELECT qsos.*, d2.*, lotw_users.*, station_profile.*, x.qslcount, dxcc_entities.name AS station_country
FROM " . $this->config->item('table_name') . " qsos
INNER JOIN station_profile ON qsos.station_id = station_profile.station_id
LEFT OUTER JOIN dxcc_entities ON qsos.COL_MY_DXCC = dxcc_entities.adif
LEFT OUTER JOIN dxcc_entities d2 ON qsos.COL_DXCC = d2.adif
LEFT OUTER JOIN lotw_users ON qsos.col_call=lotw_users.callsign
+ LEFT OUTER JOIN (
+ select count(*) as qslcount, qsoid
+ from qsl_images
+ group by qsoid
+ ) x on qsos.COL_PRIMARY_KEY = x.qsoid
WHERE station_profile.user_id = ?
$where
$order
diff --git a/application/views/qslcard/qslcarousel.php b/application/views/qslcard/qslcarousel.php
new file mode 100644
index 00000000..78aad712
--- /dev/null
+++ b/application/views/qslcard/qslcarousel.php
@@ -0,0 +1,38 @@
+
+
+ ';
+ }
+ ?>
+
+
+
+ id;
+ if ($i == 1) {
+ echo ' active';
+ }
+ echo '">';
+ echo '
 . '/assets/qslcard/' . $image->filename .')
';
+ echo '
';
+ }
+ ?>
+
+
+
+ Previous
+
+
+
+ Next
+
+
\ No newline at end of file
diff --git a/assets/js/sections/common.js b/assets/js/sections/common.js
index effd35b8..030a298f 100644
--- a/assets/js/sections/common.js
+++ b/assets/js/sections/common.js
@@ -487,3 +487,31 @@ function getDxccResult(dxcc, name) {
}
});
}
+
+function displayQsl(id) {
+ $.ajax({
+ url: base_url + 'index.php/qsl/viewQsl',
+ type: 'post',
+ data: {
+ id: id,
+ },
+ success: function (html) {
+ BootstrapDialog.show({
+ title: 'QSL Card',
+ size: BootstrapDialog.SIZE_WIDE,
+ cssClass: 'lookup-dialog',
+ nl2br: false,
+ message: html,
+ onshown: function(dialog) {
+
+ },
+ buttons: [{
+ label: 'Close',
+ action: function (dialogItself) {
+ dialogItself.close();
+ }
+ }]
+ });
+ }
+ });
+}
diff --git a/assets/js/sections/logbookadvanced.js b/assets/js/sections/logbookadvanced.js
index 85e7d2b9..16c76ea3 100644
--- a/assets/js/sections/logbookadvanced.js
+++ b/assets/js/sections/logbookadvanced.js
@@ -43,9 +43,9 @@ function updateRow(qso) {
cells.eq(c++).html(qso.lotw);
}
cells.eq(c++).text(qso.qslMessage);
- cells.eq(c++).text(qso.dxcc);
+ cells.eq(c++).html(qso.dxcc);
cells.eq(c++).text(qso.state);
- cells.eq(c++).text(qso.cqzone);
+ cells.eq(c++).html(qso.cqzone);
cells.eq(c++).html(qso.iota);
$('[data-toggle="tooltip"]').tooltip();
diff --git a/src/QSLManager/QSO.php b/src/QSLManager/QSO.php
index 5d85a1be..0e96988a 100644
--- a/src/QSLManager/QSO.php
+++ b/src/QSLManager/QSO.php
@@ -317,6 +317,9 @@ class QSO
}
}
$qslstring .= '">▼';
+ if ($data['qslcount'] != null) {
+ $qslstring .= ' ';
+ }
return $qslstring;
}
From 0c0e9219a3fecc0ffa0e34c36bab51d3fc235ed5 Mon Sep 17 00:00:00 2001
From: Hugo Silva
Date: Sat, 1 Jul 2023 17:25:21 +0100
Subject: [PATCH 28/34] When importing LOTW certs, consider full day for end
date
---
application/models/LotwCert.php | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/application/models/LotwCert.php b/application/models/LotwCert.php
index 1d1fd03d..1dab4515 100644
--- a/application/models/LotwCert.php
+++ b/application/models/LotwCert.php
@@ -6,7 +6,7 @@ class LotwCert extends CI_Model {
|--------------------------------------------------------------------------
| Function: lotw_certs
|--------------------------------------------------------------------------
- |
+ |
| Returns all lotw_certs for a selected user via the $user_id parameter
|
*/
@@ -17,7 +17,7 @@ class LotwCert extends CI_Model {
$this->db->join('dxcc_entities','lotw_certs.cert_dxcc_id = dxcc_entities.adif','left');
$this->db->order_by('cert_dxcc', 'ASC');
$query = $this->db->get('lotw_certs');
-
+
return $query;
}
@@ -46,7 +46,7 @@ class LotwCert extends CI_Model {
'date_created' => $date_created,
'date_expires' => $date_expires,
'qso_start_date' => $qso_start_date,
- 'qso_end_date' => $qso_end_date,
+ 'qso_end_date' => $qso_end_date . ' 23:59:59',
'cert_key' => $cert_key,
'cert' => $general_cert,
);
@@ -60,7 +60,7 @@ class LotwCert extends CI_Model {
'date_created' => $date_created,
'date_expires' => $date_expires,
'qso_start_date' => $qso_start_date,
- 'qso_end_date' => $qso_end_date,
+ 'qso_end_date' => $qso_end_date . ' 23:59:59',
'cert_key' => $cert_key,
'cert' => $general_cert
);
@@ -90,9 +90,9 @@ class LotwCert extends CI_Model {
return "Updated";
}
-
+
function empty_table($table) {
- $this->db->empty_table($table);
+ $this->db->empty_table($table);
}
function lotw_cert_expired($user_id, $date) {
From 08765a8bd81d278a35c11b4b1c43c734b021dab4 Mon Sep 17 00:00:00 2001
From: phl0
Date: Sat, 1 Jul 2023 23:06:31 +0200
Subject: [PATCH 29/34] Update qso_end_date of existing certs where time is
00:00:00
---
application/config/migration.php | 2 +-
application/migrations/125_lotw_enddates.php | 21 ++++++++++++++++++++
2 files changed, 22 insertions(+), 1 deletion(-)
create mode 100644 application/migrations/125_lotw_enddates.php
diff --git a/application/config/migration.php b/application/config/migration.php
index 55613c99..ceb663f7 100644
--- a/application/config/migration.php
+++ b/application/config/migration.php
@@ -21,7 +21,7 @@ $config['migration_enabled'] = TRUE;
| be upgraded / downgraded to.
|
*/
-$config['migration_version'] = 124;
+$config['migration_version'] = 125;
/*
|--------------------------------------------------------------------------
diff --git a/application/migrations/125_lotw_enddates.php b/application/migrations/125_lotw_enddates.php
new file mode 100644
index 00000000..e09e26d3
--- /dev/null
+++ b/application/migrations/125_lotw_enddates.php
@@ -0,0 +1,21 @@
+db->table_exists('lotw_certs')) {
+ $sql = 'UPDATE lotw_certs SET qso_end_date = DATE_ADD(qso_end_date, INTERVAL 24*60*60 -1 SECOND) WHERE TIME(qso_end_date) = "00:00:00";';
+ $this->db->query($sql);
+ }
+ }
+
+ public function down()
+ {
+ if ($this->db->table_exists('lotw_certs')) {
+ $sql = 'UPDATE lotw_certs SET qso_end_date = DATE_SUB(qso_end_date, INTERVAL 24*60*60 -1 SECOND) WHERE TIME(qso_end_date) = "23:59:59";';
+ $this->db->query($sql);
+ }
+ }
+}
From a6da3c1277562c96152a8916b5e76c6fc2767341 Mon Sep 17 00:00:00 2001
From: Andreas <6977712+AndreasK79@users.noreply.github.com>
Date: Sun, 2 Jul 2023 11:37:48 +0200
Subject: [PATCH 30/34] [QSO Popup] Load QSL carousel from separate view file
---
application/views/view_log/qso.php | 39 +-----------------------------
1 file changed, 1 insertion(+), 38 deletions(-)
diff --git a/application/views/view_log/qso.php b/application/views/view_log/qso.php
index 29fbe52f..18bb3a31 100644
--- a/application/views/view_log/qso.php
+++ b/application/views/view_log/qso.php
@@ -555,44 +555,7 @@
-
-
- ';
- }
- ?>
-
-
-
- id;
- if ($i == 1) {
- echo ' active';
- }
- echo '">';
- echo '
 . '/assets/qslcard/' . $image->filename .')
';
- echo '
';
- }
- ?>
-
-
-
- Previous
-
-
-
- Next
-
-
+ load->view('qslcard/qslcarousel', $qslimages); ?>
From 36fdce5ecab9a845b75d827d705cf4deab9c170f Mon Sep 17 00:00:00 2001
From: Andreas <6977712+AndreasK79@users.noreply.github.com>
Date: Sun, 2 Jul 2023 16:50:06 +0200
Subject: [PATCH 31/34] [Gridsquare Map] Added display of coordinates,
gridsquare, distance and bearing when mouseover
---
application/controllers/Gridmap.php | 4 +
application/views/gridmap/index.php | 23 +++++-
assets/js/leaflet/geocoding.js | 121 ++++++++++++++++++++++++++++
assets/js/sections/gridmap.js | 2 +
4 files changed, 148 insertions(+), 2 deletions(-)
create mode 100644 assets/js/leaflet/geocoding.js
diff --git a/application/controllers/Gridmap.php b/application/controllers/Gridmap.php
index d4e32e6a..7594b98d 100644
--- a/application/controllers/Gridmap.php
+++ b/application/controllers/Gridmap.php
@@ -11,6 +11,9 @@ class Gridmap extends CI_Controller {
$this->load->model('bands');
$this->load->model('gridmap_model');
+ $this->load->model('stations');
+
+ $data['homegrid'] = explode(',', $this->stations->find_gridsquare());
$data['modes'] = $this->gridmap_model->get_worked_modes();
$data['bands'] = $this->bands->get_worked_bands();
@@ -27,6 +30,7 @@ class Gridmap extends CI_Controller {
$footerData = [];
$footerData['scripts'] = [
+ 'assets/js/leaflet/geocoding.js',
'assets/js/leaflet/L.MaidenheadColouredGridMap.js',
'assets/js/sections/gridmap.js?'
];
diff --git a/application/views/gridmap/index.php b/application/views/gridmap/index.php
index 93a2cdeb..74ebaefc 100644
--- a/application/views/gridmap/index.php
+++ b/application/views/gridmap/index.php
@@ -6,9 +6,9 @@
padding: 6px 8px;
font: 14px Arial, Helvetica, sans-serif;
background: white;
- background: rgba(255, 255, 255, 0.8);
line-height: 24px;
color: #555;
+ border-radius: 10px;
}
.legend h4 {
text-align: center;
@@ -25,7 +25,13 @@
height: 18px;
float: left;
margin: 0 8px 0 0;
- opacity: 0.7;
+}
+.coordinates {
+ justify-content: center;
+ align-items: stretch;
+}
+.cohidden {
+ display:none;
}
@@ -94,10 +100,23 @@
+
+
Latitude:
+
+
Longitude:
+
+
Gridsquare:
+
+
Distance:
+
+
Bearing:
+
+