diff --git a/.github/workflows/push-docker-hub.yml b/.github/workflows/push-docker-hub.yml
new file mode 100644
index 00000000..1c7bb2ff
--- /dev/null
+++ b/.github/workflows/push-docker-hub.yml
@@ -0,0 +1,37 @@
+name: Push Docker image to the Hub
+
+on:
+ push:
+ # Pattern matched against refs/tags
+ tags:
+ - '*' # Push events to every tag not containing
+
+ workflow_dispatch:
+
+jobs:
+ docker:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v3
+ - uses: actions-ecosystem/action-get-latest-tag@v1
+ id: get-latest-tag
+ - name: Print latest tag
+ run: echo ${{ steps.get-latest-tag.outputs.tag }}
+ - name: Set up QEMU
+ uses: docker/setup-qemu-action@v2
+ - name: Set up Docker Buildx
+ uses: docker/setup-buildx-action@v2
+ - name: Login to Docker Hub
+ uses: docker/login-action@v2
+ with:
+ username: ${{ secrets.DOCKERHUB_USERNAME }}
+ password: ${{ secrets.DOCKERHUB_TOKEN }}
+ - name: Build and push
+ uses: docker/build-push-action@v4
+ with:
+ context: ./
+ file: ./docker/Dockerfile
+ platforms: linux/amd64,linux/arm64
+ push: true
+ tags: ${{ secrets.DOCKERHUB_IMAGENAME }}:${{ steps.get-latest-tag.outputs.tag }},${{ secrets.DOCKERHUB_IMAGENAME }}:latest
diff --git a/application/config/config.sample.php b/application/config/config.sample.php
index 07ec0576..adc2d85a 100644
--- a/application/config/config.sample.php
+++ b/application/config/config.sample.php
@@ -8,17 +8,15 @@ defined('BASEPATH') OR exit('No direct script access allowed');
|--------------------------------------------------------------------------
|
| 'app_name' Name of the App 'Cloudlog'
-| 'app_version' Set by the dev team.
+| 'app_version' Set by the dev team.
| 'directory' directory where cloudlog is installed eg "logger"
| 'callbook' Selects which Callbook lookup to use defaults "hamqth" but supports "qrz"
*/
$config['app_name'] = "Cloudlog";
-$config['app_version'] = "2.4.2";
+$config['app_version'] = "2.4.3";
$config['directory'] = "logbook";
-
$config['callbook'] = "hamqth"; // Options are hamqth or qrz
-
$config['datadir'] = null; // default to install directory
/*
@@ -27,8 +25,8 @@ $config['datadir'] = null; // default to install directory
|--------------------------------------------------------------------------
|
| 'table_name' SQL table where log can be found
-| 'locator' Default locator used to calculate bearings/distance
-| 'display_freq' Show or Hide frequnecy info
+| 'locator' Default locator used to calculate bearings/distance
+| 'display_freq' Show or Hide frequnecy info
*/
$config['table_name'] = "TABLE_HRD_CONTACTS_V01";
@@ -42,11 +40,12 @@ $config['display_freq'] = true;
|
| 'qrz_username' QRZ.com user login
| 'qrz_password' QRZ.com user password
+| 'use_fullname' Get full names from QRZ, may not be GDPR compliant
*/
$config['qrz_username'] = "";
$config['qrz_password'] = "";
-
+$config['use_fullname'] = false;
/*
|--------------------------------------------------------------------------
@@ -59,7 +58,6 @@ $config['qrz_password'] = "";
$config['hamqth_username'] = "";
$config['hamqth_password'] = "";
-
/*
|--------------------------------------------------------------------------
| Authentication
@@ -67,7 +65,7 @@ $config['hamqth_password'] = "";
|
| 'use_auth' False turns all authentication off, best used when setting up
| 'auth_table' MySQL Database Table defaults "users"
-| 'auth_mode' Minimum user level required 0 = anonymous, 1 = viewer,
+| 'auth_mode' Minimum user level required 0 = anonymous, 1 = viewer,
| 2 = editor, 3 = api user, 99 = owner
| 'auth_level[]' Defines level titles
*/
@@ -568,6 +566,7 @@ $config['compress_output'] = FALSE;
*/
$config['time_reference'] = 'UTC';
date_default_timezone_set($config['time_reference']);
+
/*
|--------------------------------------------------------------------------
| Rewrite PHP Short Tags
diff --git a/application/config/migration.php b/application/config/migration.php
index 372fbaf2..c4ac8962 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'] = 122;
+$config['migration_version'] = 123;
/*
|--------------------------------------------------------------------------
diff --git a/application/controllers/Dashboard.php b/application/controllers/Dashboard.php
index 8a497343..afc0132d 100644
--- a/application/controllers/Dashboard.php
+++ b/application/controllers/Dashboard.php
@@ -114,6 +114,13 @@ class Dashboard extends CI_Controller {
}
+ function radio_display_component() {
+ $this->load->model('cat');
+
+ $data['radio_status'] = $this->cat->recent_status();
+ $this->load->view('components/radio_display_table', $data);
+ }
+
function map() {
$this->load->model('logbook_model');
diff --git a/application/controllers/Eqsl.php b/application/controllers/Eqsl.php
index 05d70fbf..d329d2dc 100644
--- a/application/controllers/Eqsl.php
+++ b/application/controllers/Eqsl.php
@@ -12,7 +12,7 @@ class eqsl extends CI_Controller {
public function index() {
$this->lang->load('qslcard');
- $folder_name = "assets/qslcard";
+ $folder_name = "images/eqsl_card_images";
$data['storage_used'] = $this->sizeFormat($this->folderSize($folder_name));
// Render Page
diff --git a/application/controllers/Logbook.php b/application/controllers/Logbook.php
index 548ecafd..66ae7b81 100644
--- a/application/controllers/Logbook.php
+++ b/application/controllers/Logbook.php
@@ -814,6 +814,42 @@ class Logbook extends CI_Controller {
}
+ function search_lotw_unconfirmed($station_id) {
+ $station_id = $this->security->xss_clean($station_id);
+
+ $this->load->model('user_model');
+
+ if(!$this->user_model->authorize($this->config->item('auth_mode'))) { return; }
+
+ $CI =& get_instance();
+ $CI->load->model('logbooks_model');
+ $logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
+
+ if (!$logbooks_locations_array) {
+ return null;
+ }
+
+ $location_list = "'".implode("','",$logbooks_locations_array)."'";
+
+ $sql = 'select COL_CALL, COL_MODE, COL_SUBMODE, station_callsign, COL_SAT_NAME, COL_BAND, COL_TIME_ON, lotw_users.lastupload from ' . $this->config->item('table_name') .
+ ' join station_profile on ' . $this->config->item('table_name') . '.station_id = station_profile.station_id
+ join lotw_users on ' . $this->config->item('table_name') . '.col_call = lotw_users.callsign
+ where ' . $this->config->item('table_name') .'.station_id in ('. $location_list . ')';
+
+ if ($station_id != 'All') {
+ $sql .= ' and station_profile.station_id = ' . $station_id;
+ }
+
+ $sql .= " and COL_LOTW_QSL_RCVD <> 'Y' and " . $this->config->item('table_name') . ".COL_TIME_ON < lotw_users.lastupload";
+
+ $query = $this->db->query($sql);
+
+ $data['qsos'] = $query;
+
+ $this->load->view('search/lotw_unconfirmed_result.php', $data);
+
+ }
+
function search_incorrect_cq_zones($station_id) {
$station_id = $this->security->xss_clean($station_id);
diff --git a/application/controllers/Logbookadvanced.php b/application/controllers/Logbookadvanced.php
index 6f054479..19daff37 100644
--- a/application/controllers/Logbookadvanced.php
+++ b/application/controllers/Logbookadvanced.php
@@ -49,11 +49,35 @@ class Logbookadvanced extends CI_Controller {
$pageData['sats'] = $this->bands->get_worked_sats();
$pageData['bands'] = $this->bands->get_worked_bands();
-
+
+ $CI =& get_instance();
+ // Get Date format
+ if($CI->session->userdata('user_date_format')) {
+ // If Logged in and session exists
+ $pageData['custom_date_format'] = $CI->session->userdata('user_date_format');
+ } else {
+ // Get Default date format from /config/cloudlog.php
+ $pageData['custom_date_format'] = $CI->config->item('qso_date_format');
+ }
+
+ switch ($pageData['custom_date_format']) {
+ case "d/m/y": $pageData['custom_date_format'] = 'DD/MM/YY'; break;
+ case "d/m/Y": $pageData['custom_date_format'] = 'DD/MM/YYYY'; break;
+ case "m/d/y": $pageData['custom_date_format'] = 'MM/DD/YY'; break;
+ case "m/d/Y": $pageData['custom_date_format'] = 'MM/DD/YYYY'; break;
+ case "d.m.Y": $pageData['custom_date_format'] = 'DD.MM.YYYY'; break;
+ case "y/m/d": $pageData['custom_date_format'] = 'YY/MM/DD'; break;
+ case "Y-m-d": $pageData['custom_date_format'] = 'YYYY-MM-DD'; break;
+ case "M d, Y": $pageData['custom_date_format'] = 'MMM DD, YYYY'; break;
+ case "M d, y": $pageData['custom_date_format'] = 'MMM DD, YY'; break;
+ default: $pageData['custom_date_format'] = 'DD/MM/YYYY';
+ }
+
$footerData = [];
$footerData['scripts'] = [
'assets/js/moment.min.js',
'assets/js/tempusdominus-bootstrap-4.min.js',
+ 'assets/js/datetime-moment.js',
'assets/js/sections/logbookadvanced.js?' . filemtime(realpath(__DIR__ . "/../../assets/js/sections/logbookadvanced.js"))
];
diff --git a/application/controllers/Lotw.php b/application/controllers/Lotw.php
index 01cb8f7d..a8726557 100644
--- a/application/controllers/Lotw.php
+++ b/application/controllers/Lotw.php
@@ -538,7 +538,19 @@ class Lotw extends CI_Controller {
$cnty = "";
}
- $lotw_status = $this->logbook_model->lotw_update($time_on, $record['call'], $record['band'], $qsl_date, $record['qsl_rcvd'], $state, $qsl_gridsquare, $iota, $cnty);
+ if (isset($record['cqz'])) {
+ $cqz = $record['cqz'];
+ } else {
+ $cqz = "";
+ }
+
+ if (isset($record['ituz'])) {
+ $ituz = $record['ituz'];
+ } else {
+ $ituz = "";
+ }
+
+ $lotw_status = $this->logbook_model->lotw_update($time_on, $record['call'], $record['band'], $qsl_date, $record['qsl_rcvd'], $state, $qsl_gridsquare, $iota, $cnty, $cqz, $ituz);
}
diff --git a/application/controllers/Search.php b/application/controllers/Search.php
index af43c511..f503d059 100644
--- a/application/controllers/Search.php
+++ b/application/controllers/Search.php
@@ -80,6 +80,18 @@ class Search extends CI_Controller {
$this->load->view('interface_assets/footer');
}
+ // Searches for unconfirmed Lotw QSOs where QSO partner has uploaded to LoTW after the QSO date
+ public function lotw_unconfirmed() {
+ $this->load->model('stations');
+
+ $data['station_profile'] = $this->stations->all_of_user();
+ $data['page_title'] = "QSOs unconfirmed on LoTW, but the callsign has uploaded to LoTW after QSO date";
+
+ $this->load->view('interface_assets/header', $data);
+ $this->load->view('search/lotw_unconfirmed');
+ $this->load->view('interface_assets/footer');
+ }
+
function json_result() {
if(isset($_POST['search'])) {
$result = $this->fetchQueryResult($_POST['search'], false);
diff --git a/application/controllers/Update.php b/application/controllers/Update.php
index 81c3f509..d6cd88c3 100644
--- a/application/controllers/Update.php
+++ b/application/controllers/Update.php
@@ -287,9 +287,6 @@ class Update extends CI_Controller {
}
public function download_lotw_users() {
-
-
-
$contents = file_get_contents('https://lotw.arrl.org/lotw-user-activity.csv', true);
if($contents === FALSE) {
@@ -306,6 +303,47 @@ class Update extends CI_Controller {
}
+ public function lotw_users() {
+ $mtime = microtime();
+ $mtime = explode(" ",$mtime);
+ $mtime = $mtime[1] + $mtime[0];
+ $starttime = $mtime;
+
+ $file = 'https://lotw.arrl.org/lotw-user-activity.csv';
+
+ $handle = fopen($file, "r");
+ if ($handle === FALSE) {
+ echo "Something went wrong with fetching the LoTW uses file";
+ return;
+ }
+ $this->db->empty_table("lotw_users");
+ $i = 0;
+ $data = fgetcsv($handle,1000,",");
+ do {
+ if ($data[0]) {
+ $lotwdata[$i]['callsign'] = $data[0];
+ $lotwdata[$i]['lastupload'] = $data[1] . ' ' . $data[2];
+ if (($i % 2000) == 0) {
+ $this->db->insert_batch('lotw_users', $lotwdata);
+ unset($lotwdata);
+ // echo 'Record ' . $i . '
';
+ }
+ $i++;
+ }
+ } while ($data = fgetcsv($handle,1000,","));
+ fclose($handle);
+
+ $this->db->insert_batch('lotw_users', $lotwdata);
+
+ $mtime = microtime();
+ $mtime = explode(" ",$mtime);
+ $mtime = $mtime[1] + $mtime[0];
+ $endtime = $mtime;
+ $totaltime = ($endtime - $starttime);
+ echo "This page was created in ".$totaltime." seconds
";
+ echo "Records inserted: " . $i . "
";
+ }
+
public function lotw_check() {
$f = fopen('./updates/lotw_users.csv', "r");
$result = false;
diff --git a/application/controllers/User_Logbooks.php b/application/controllers/User_Logbooks.php
deleted file mode 100644
index 08d5c6a8..00000000
--- a/application/controllers/User_Logbooks.php
+++ /dev/null
@@ -1,21 +0,0 @@
-load->helper(array('form', 'url'));
-
- $this->load->model('user_model');
- if(!$this->user_model->authorize(2)) { $this->session->set_flashdata('notice', 'You\'re not allowed to do that!'); redirect('dashboard'); }
- }
-
- public function index()
- {
- echo 'Functions to come';
- }
-
-}
diff --git a/application/controllers/Visitor.php b/application/controllers/Visitor.php
index 567f7f0d..c7dd7f1d 100644
--- a/application/controllers/Visitor.php
+++ b/application/controllers/Visitor.php
@@ -11,9 +11,12 @@ class Visitor extends CI_Controller {
if($method == "config") {
$this->$method();
}
- elseif($method == "map") {
+ elseif($method == "map") {
$this->map($method);
}
+ elseif($method == "radio_display_component") {
+ $this->radio_display_component($method);
+ }
elseif($method == "satellites") {
$this->satellites($method);
}
@@ -126,6 +129,13 @@ class Visitor extends CI_Controller {
}
}
+ public function radio_display_component() {
+ $this->load->model('cat');
+
+ $data['radio_status'] = $this->cat->recent_status();
+ $this->load->view('components/radio_display_table', $data);
+ }
+
public function map() {
$this->load->model('logbook_model');
diff --git a/application/language/english/lotw_lang.php b/application/language/english/lotw_lang.php
index dd062ab7..26f942b0 100644
--- a/application/language/english/lotw_lang.php
+++ b/application/language/english/lotw_lang.php
@@ -57,3 +57,6 @@ $lang['lotw_confirmed'] = 'This QSO is confirmed on LoTW';
// LoTW Expiry
$lang['lotw_cert_expiring'] = 'At least one of your LoTW certificates is about to expire!';
$lang['lotw_cert_expired'] = 'At least one of your LoTW certificates is expired!';
+
+// Lotw User
+$lang['lotw_user'] = 'This station uses LoTW. The last upload was';
diff --git a/application/language/german/lotw_lang.php b/application/language/german/lotw_lang.php
index 2a2a7f58..2e01e3b0 100644
--- a/application/language/german/lotw_lang.php
+++ b/application/language/german/lotw_lang.php
@@ -57,3 +57,6 @@ $lang['lotw_confirmed'] = 'Dieses QSO wurde via LoTW bestätigt am';
// LoTW Expiry
$lang['lotw_cert_expiring'] = 'Mindestens eines deiner LoTW Zertifikate läuft bald ab!';
$lang['lotw_cert_expired'] = 'Mindestens eines deiner LoTW Zertifikate ist abgelaufen!';
+
+// Lotw User
+$lang['lotw_user'] = 'Diese Station nutzt LoTW. Der letzte Upload war am';
\ No newline at end of file
diff --git a/application/migrations/123_add_lotw_users.php b/application/migrations/123_add_lotw_users.php
new file mode 100644
index 00000000..9afa6a39
--- /dev/null
+++ b/application/migrations/123_add_lotw_users.php
@@ -0,0 +1,42 @@
+db->table_exists('lotw_users')) {
+ $this->dbforge->add_field(array(
+ 'id' => array(
+ 'type' => 'INT',
+ 'constraint' => 20,
+ 'unsigned' => TRUE,
+ 'auto_increment' => TRUE,
+ 'unique' => TRUE
+ ),
+ 'callsign' => array(
+ 'type' => 'VARCHAR',
+ 'constraint' => 32,
+ 'unsigned' => TRUE,
+ ),
+ 'lastupload' => array(
+ 'type' => 'datetime',
+ )
+ ));
+
+ $this->dbforge->add_key('id', TRUE);
+
+ $this->dbforge->create_table('lotw_users');
+
+ $this->db->query("ALTER TABLE lotw_users ADD INDEX `callsign` (`callsign`)");
+ }
+
+ }
+
+ public function down()
+ {
+ if ($this->db->table_exists('lotw_users')) {
+ $this->dbforge->drop_table('lotw_users');
+ }
+ }
+}
diff --git a/application/models/Adif_data.php b/application/models/Adif_data.php
index c01a6103..3c7641df 100644
--- a/application/models/Adif_data.php
+++ b/application/models/Adif_data.php
@@ -10,8 +10,7 @@ class adif_data extends CI_Model {
if (strpos($this->api_model->access($api_key), 'r') !== false) {
$this->api_model->update_last_used($api_key);
$user_id = $this->api_model->key_userid($api_key);
- $active_station_logbook = $CI->logbooks_model->find_active_station_logbook_from_userid($user_id);
- $logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($active_station_logbook);
+ $logbooks_locations_array = $this->list_station_locations($user_id);
}
} else {
$logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
@@ -27,6 +26,22 @@ class adif_data extends CI_Model {
return $query;
}
+ function list_station_locations($user_id) {
+ $this->db->where('user_id', $user_id);
+ $query = $this->db->get('station_profile');
+
+ if ($query->num_rows() == 0) {
+ return array();
+ }
+
+ $locations_array = array();
+ foreach ($query->result() as $row) {
+ array_push($locations_array, $row->station_id);
+ }
+
+ return $locations_array;
+ }
+
function export_printrequested($station_id = NULL) {
$this->load->model('stations');
$active_station_id = $this->stations->find_active();
diff --git a/application/models/Eqsl_images.php b/application/models/Eqsl_images.php
index 31a89b37..dcd16092 100644
--- a/application/models/Eqsl_images.php
+++ b/application/models/Eqsl_images.php
@@ -27,7 +27,7 @@ class Eqsl_images extends CI_Model {
function eqsl_qso_list() {
$this->load->model('logbooks_model');
$logbooks_locations_array = $this->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
- $this->db->select('qso_id, COL_CALL, COL_MODE, , COL_SUBMODE, COL_TIME_ON, COL_BAND, COL_SAT_NAME, image_file');
+ $this->db->select('COL_PRIMARY_KEY, qso_id, COL_CALL, COL_MODE, , COL_SUBMODE, COL_TIME_ON, COL_BAND, COL_SAT_NAME, image_file');
$this->db->join($this->config->item('table_name'), 'qso_id = COL_PRIMARY_KEY', 'left outer');
$this->db->join('station_profile', $this->config->item('table_name').'.station_id = station_profile.station_id', 'left outer');
$this->db->where_in('station_profile.station_id', $logbooks_locations_array);
diff --git a/application/models/Logbook_model.php b/application/models/Logbook_model.php
index bfed414a..db8771de 100755
--- a/application/models/Logbook_model.php
+++ b/application/models/Logbook_model.php
@@ -1295,13 +1295,13 @@ class Logbook_model extends CI_Model {
}
function get_qso($id) {
- $this->db->select($this->config->item('table_name').'.*, station_profile.*, dxcc_entities.*, dxcc_entities_2.name as station_country, dxcc_entities_2.end as station_end');
- $this->db->select($this->config->item('table_name').'.*, station_profile.*, dxcc_entities.*, coalesce(dxcc_entities_2.name, "- NONE -") as station_country, dxcc_entities_2.end as station_end, eQSL_images.image_file as eqsl_image_file');
+ $this->db->select($this->config->item('table_name').'.*, station_profile.*, dxcc_entities.*, coalesce(dxcc_entities_2.name, "- NONE -") as station_country, dxcc_entities_2.end as station_end, eQSL_images.image_file as eqsl_image_file, lotw_users.callsign as lotwuser, lotw_users.lastupload');
$this->db->from($this->config->item('table_name'));
$this->db->join('dxcc_entities', $this->config->item('table_name').'.col_dxcc = dxcc_entities.adif', 'left');
$this->db->join('station_profile', 'station_profile.station_id = '.$this->config->item('table_name').'.station_id', 'left');
$this->db->join('dxcc_entities as dxcc_entities_2', 'station_profile.station_dxcc = dxcc_entities_2.adif', 'left outer');
$this->db->join('eQSL_images', $this->config->item('table_name').'.COL_PRIMARY_KEY = eQSL_images.qso_id', 'left outer');
+ $this->db->join('lotw_users', $this->config->item('table_name').'.COL_CALL = lotw_users.callsign', 'left outer');
$this->db->where('COL_PRIMARY_KEY', $id);
return $this->db->get();
@@ -2484,7 +2484,7 @@ class Logbook_model extends CI_Model {
}
}
- function lotw_update($datetime, $callsign, $band, $qsl_date, $qsl_status, $state, $qsl_gridsquare, $iota, $cnty) {
+ function lotw_update($datetime, $callsign, $band, $qsl_date, $qsl_status, $state, $qsl_gridsquare, $iota, $cnty, $cqz, $ituz) {
$data = array(
'COL_LOTW_QSLRDATE' => $qsl_date,
@@ -2502,6 +2502,14 @@ class Logbook_model extends CI_Model {
$data['COL_CNTY'] = $cnty;
}
+ if($cqz != "") {
+ $data['COL_CQZ'] = $cqz;
+ }
+
+ if($ituz != "") {
+ $data['COL_ITUZ'] = $ituz;
+ }
+
$this->db->where('date_format(COL_TIME_ON, \'%Y-%m-%d %H:%i\') = "'.$datetime.'"');
$this->db->where('COL_CALL', $callsign);
$this->db->where('COL_BAND', $band);
diff --git a/application/models/Logbookadvanced_model.php b/application/models/Logbookadvanced_model.php
index 437f4f7a..f0571352 100644
--- a/application/models/Logbookadvanced_model.php
+++ b/application/models/Logbookadvanced_model.php
@@ -100,6 +100,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_dxcc=dxcc_entities.adif
+ LEFT OUTER JOIN lotw_users ON qsos.col_call=lotw_users.callsign
WHERE station_profile.user_id = ?
$where
ORDER BY qsos.COL_TIME_ON desc, qsos.COL_PRIMARY_KEY desc
diff --git a/application/views/adif/import.php b/application/views/adif/import.php
index 779bd48d..c2c36fac 100644
--- a/application/views/adif/import.php
+++ b/application/views/adif/import.php
@@ -148,7 +148,7 @@
Export All Satellite QSOs Confirmed on LoTW
+Export All Satellite QSOs Confirmed on LoTW
diff --git a/application/views/components/radio_display_table.php b/application/views/components/radio_display_table.php new file mode 100644 index 00000000..e27c5154 --- /dev/null +++ b/application/views/components/radio_display_table.php @@ -0,0 +1,23 @@ +num_rows()) { ?> + +| Radio Status | +|
| + | + + + + frequency->hz_to_mhz($row['frequency']); ?> () + + | +
| Radio Status | -|
| - | - - - - frequency->hz_to_mhz($row['frequency']); ?> () - - | -
| ' . $qsl->COL_CALL . ' | '; + echo '' . $qsl->COL_CALL . ' | '; echo ''; echo $qsl->COL_SUBMODE==null?$qsl->COL_MODE:$qsl->COL_SUBMODE; echo ' | '; diff --git a/application/views/interface_assets/footer.php b/application/views/interface_assets/footer.php index 4430a9c0..132908ae 100644 --- a/application/views/interface_assets/footer.php +++ b/application/views/interface_assets/footer.php @@ -816,6 +816,29 @@ function findduplicates(){ }); } +function findlotwunconfirmed(){ + event.preventDefault(); + $('#partial_view').load(base_url+"index.php/logbook/search_lotw_unconfirmed/"+$("#station_id").val(), function() { + $('.qsolist').DataTable({ + "pageLength": 25, + responsive: false, + ordering: false, + "scrollY": "500px", + "scrollCollapse": true, + "paging": false, + "scrollX": true, + dom: 'Bfrtip', + buttons: [ + 'csv' + ] + }); + // change color of csv-button if dark mode is chosen + if (isDarkModeTheme()) { + $(".buttons-csv").css("color", "white"); + } + }); +} + function findincorrectcqzones() { event.preventDefault(); $('#partial_view').load(base_url+"index.php/logbook/search_incorrect_cq_zones/"+$("#station_id").val(), function() { @@ -2732,6 +2755,8 @@ function viewEqsl(picture, callsign) { "scrollCollapse": true, "paging": false, "scrollX": true, + "ordering": true, + "order": [ 2, 'desc' ], }); diff --git a/application/views/logbookadvanced/index.php b/application/views/logbookadvanced/index.php index 42c0438c..ed417d8b 100644 --- a/application/views/logbookadvanced/index.php +++ b/application/views/logbookadvanced/index.php @@ -1,3 +1,12 @@ + +|||||||||||||||||||||||
| '.lang('gen_hamradio_callsign').' | +Date / time | +' . lang('gen_hamradio_mode') . ' | +' . lang('gen_hamradio_band') . ' | +Last LoTW upload | +' . lang('gen_hamradio_station') . ' | +
|---|---|---|---|---|---|
| '; + echo ' | ' . $qso->COL_TIME_ON . ' | '; + echo ''; echo $qso->COL_SUBMODE==null?$qso->COL_MODE:$qso->COL_SUBMODE; echo ' | '; + echo ''; if($qso->COL_SAT_NAME != null) { echo $qso->COL_SAT_NAME; } else { echo strtolower($qso->COL_BAND); }; echo ' | '; + echo '' . $qso->lastupload . ' | '; + echo '' . $qso->station_callsign . ' | '; + echo '
lastupload); echo date($custom_date_format, $timestamp); $timestamp = strtotime($row->lastupload); echo " at ".date('H:i', $timestamp);?> UTC.
+ COL_LOTW_QSL_RCVD == "Y") { ?> @@ -388,7 +391,7 @@ $hashtags .= " #IOTA ".$row->COL_IOTA; } if($row->COL_SOTA_REF != null) { - $hashtags .= " #SOTA ".$row->COL_SOTA_EF; + $hashtags .= " #SOTA ".$row->COL_SOTA_REF; } if($row->COL_POTA_REF != null) { $hashtags .= " #POTA ".$row->COL_POTA_REF; diff --git a/application/views/visitor/index.php b/application/views/visitor/index.php index d316ed6d..3194abcb 100644 --- a/application/views/visitor/index.php +++ b/application/views/visitor/index.php @@ -116,29 +116,8 @@ function echoQrbCalcLink($mygrid, $grid, $vucc) {| Radio Status | -|
| - | - - - - frequency->hz_to_mhz($row['frequency']); ?> () - - | -