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] [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 fb0392156..89df8947f 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 d30f7b8a7..cc361181e 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 000000000..78aad7123 --- /dev/null +++ b/application/views/qslcard/qslcarousel.php @@ -0,0 +1,38 @@ + + + + Previous + + + + Next + + \ No newline at end of file diff --git a/assets/js/sections/common.js b/assets/js/sections/common.js index effd35b88..030a298f9 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 85e7d2b97..16c76ea3f 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 5d85a1bed..0e96988a3 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; }