pull/3068/head 2.6.8
Peter Goodhall 2024-04-05 22:12:38 +01:00 zatwierdzone przez GitHub
commit d2bb80f3c8
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: B5690EEEBB952194
67 zmienionych plików z 1146 dodań i 405 usunięć

1
.gitignore vendored
Wyświetl plik

@ -11,6 +11,7 @@
/images/eqsl_card_images/*.jpg
/updates/clublog_scp.txt
/assets/qslcard/*
/assets/sstvimages/*
/assets/js/sections/custom.js
.idea/*
.DS_Store

13
.vscode/settings.json vendored 100644
Wyświetl plik

@ -0,0 +1,13 @@
{
"cSpell.words": [
"callsign",
"cloudlog",
"hamradio",
"qslcard",
"sstv",
"sstvimages",
"sstvtable",
"SUBMODE",
"userdata"
]
}

Wyświetl plik

@ -22,7 +22,7 @@ $config['migration_enabled'] = TRUE;
|
*/
$config['migration_version'] = 174;
$config['migration_version'] = 176;
/*
|--------------------------------------------------------------------------

Wyświetl plik

@ -12,8 +12,9 @@ class eqsl extends CI_Controller {
public function index() {
$this->lang->load('qslcard');
$this->load->helper('storage');
$folder_name = "images/eqsl_card_images";
$data['storage_used'] = $this->sizeFormat($this->folderSize($folder_name));
$data['storage_used'] = sizeFormat(folderSize($folder_name));
// Render Page
@ -749,49 +750,4 @@ class eqsl extends CI_Controller {
$status = $this->uploadQso($adif, $qsl);
}
}
// Functions for storage, these need shifted to a libary to use across Cloudlog
function folderSize($dir){
$count_size = 0;
$count = 0;
$dir_array = scandir($dir);
foreach($dir_array as $key=>$filename){
if($filename!=".." && $filename!="."){
if(is_dir($dir."/".$filename)){
$new_foldersize = $this->foldersize($dir."/".$filename);
$count_size = $count_size+ $new_foldersize;
}else if(is_file($dir."/".$filename)){
$count_size = $count_size + filesize($dir."/".$filename);
$count++;
}
}
}
return $count_size;
}
function sizeFormat($bytes){
$kb = 1024;
$mb = $kb * 1024;
$gb = $mb * 1024;
$tb = $gb * 1024;
if (($bytes >= 0) && ($bytes < $kb)) {
return $bytes . ' B';
} elseif (($bytes >= $kb) && ($bytes < $mb)) {
return ceil($bytes / $kb) . ' KB';
} elseif (($bytes >= $mb) && ($bytes < $gb)) {
return ceil($bytes / $mb) . ' MB';
} elseif (($bytes >= $gb) && ($bytes < $tb)) {
return ceil($bytes / $gb) . ' GB';
} elseif ($bytes >= $tb) {
return ceil($bytes / $tb) . ' TB';
} else {
return $bytes . ' B';
}
}
} // end class

Wyświetl plik

@ -273,7 +273,7 @@ class Labels extends CI_Controller {
$qso_data[] = [
'time' => $qso->COL_TIME_ON,
'band' => $qso->COL_BAND,
'mode' => $qso->COL_MODE,
'mode' => (($qso->COL_SUBMODE ?? '') == '') ? $qso->COL_MODE : $qso->COL_SUBMODE,
'rst' => $qso->COL_RST_SENT,
'mygrid' => $qso->station_gridsquare,
'via' => $qso->COL_QSL_VIA,

Wyświetl plik

@ -618,7 +618,9 @@ class Logbook extends CI_Controller {
}
$this->load->model('Qsl_model');
$this->load->model('Sstv_model');
$data['qslimages'] = $this->Qsl_model->getQslForQsoId($id);
$data['sstvimages'] = $this->Sstv_model->getSstvForQsoId($id);
$data['primary_subdivision'] = $this->subdivisions->get_primary_subdivision_name($data['query']->result()[0]->COL_DXCC);
$data['secondary_subdivision'] = $this->subdivisions->get_secondary_subdivision_name($data['query']->result()[0]->COL_DXCC);
$data['max_upload'] = ini_get('upload_max_filesize');

Wyświetl plik

@ -15,7 +15,7 @@ class Qsl extends CI_Controller {
// Default view when loading controller.
public function index() {
$this->load->helper('storage'); // Load the storage helper
$folder_name = "assets/qslcard";
$data['storage_used'] = sizeFormat(folderSize($folder_name));
@ -181,48 +181,4 @@ class Qsl extends CI_Controller {
$this->load->view('qslcard/qslcarousel', $data);
}
}
// Functions for storage, these need shifted to a libary to use across Cloudlog
function folderSize($dir){
$count_size = 0;
$count = 0;
$dir_array = scandir($dir);
foreach($dir_array as $key=>$filename){
if($filename!=".." && $filename!="."){
if(is_dir($dir."/".$filename)){
$new_foldersize = foldersize($dir."/".$filename);
$count_size = $count_size+ $new_foldersize;
}else if(is_file($dir."/".$filename)){
$count_size = $count_size + filesize($dir."/".$filename);
$count++;
}
}
}
return $count_size;
}
function sizeFormat($bytes){
$kb = 1024;
$mb = $kb * 1024;
$gb = $mb * 1024;
$tb = $gb * 1024;
if (($bytes >= 0) && ($bytes < $kb)) {
return $bytes . ' B';
} elseif (($bytes >= $kb) && ($bytes < $mb)) {
return ceil($bytes / $kb) . ' KB';
} elseif (($bytes >= $mb) && ($bytes < $gb)) {
return ceil($bytes / $mb) . ' MB';
} elseif (($bytes >= $gb) && ($bytes < $tb)) {
return ceil($bytes / $gb) . ' GB';
} elseif ($bytes >= $tb) {
return ceil($bytes / $tb) . ' TB';
} else {
return $bytes . ' B';
}
}
}

Wyświetl plik

@ -15,10 +15,10 @@ class Sattimers extends CI_Controller {
$footerData['scripts'] = [
'assets/js/sections/sattimers.js?'
];
$url = 'https://www.df2et.de/tevel/api2.php?grid='.strtoupper($this->stations->find_gridsquare());
$data['gridsquare'] = substr(strtoupper($this->stations->find_gridsquare()), 0, 6);
$url = 'https://www.df2et.de/tevel/api2.php?grid=' . $data['gridsquare'];
$json = file_get_contents($url);
$data['activations'] = json_decode($json, true)['data'];
$data['gridsquare'] = strtoupper($this->stations->find_gridsquare());
$data['page_title'] = "Satellite Timers";

Wyświetl plik

@ -0,0 +1,111 @@
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/*
Controller for SSTV Images
*/
class Sstv extends CI_Controller {
function __construct() {
parent::__construct();
$this->lang->load('sstv');
$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() {
$this->load->helper('storage');
$folder_name = "assets/sstvimages";
$data['storage_used'] = sizeFormat(folderSize($folder_name));
// Render Page
$data['page_title'] = "SSTV Images";
$this->load->model('sstv_model');
$data['sstvArray'] = $this->sstv_model->getQsoWithSstvImageList();
$this->load->view('interface_assets/header', $data);
$this->load->view('sstv/index');
$this->load->view('interface_assets/footer');
}
public function uploadSSTV() {
$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'); }
if (!file_exists('./assets/sstvimages')) {
mkdir('./assets/sstvimages', 0755, true);
}
$qsoid = $this->input->post('qsoid');
$results = array();
if (isset($_FILES['sstvimages']) && $_FILES['sstvimages']['error'][0] == 0)
{
for($i=0; $i<count($_FILES['sstvimages']['name']); $i++) {
$file = array(
'name' => $_FILES['sstvimages']['name'][$i],
'type' => $_FILES['sstvimages']['type'][$i],
'tmp_name' => $_FILES['sstvimages']['tmp_name'][$i],
'error' => $_FILES['sstvimages']['error'][$i],
'size' => $_FILES['sstvimages']['size'][$i]
);
$result = $this->uploadSSTVImage($qsoid, $file);
array_push($results, $result);
}
}
header("Content-type: application/json");
echo json_encode($results);
}
function uploadSSTVImage($qsoid, $file) {
$config['upload_path'] = './assets/sstvimages';
$config['allowed_types'] = 'jpg|gif|png|jpeg|JPG|PNG|bmp';
$array = explode(".", $file['name']);
$ext = end($array);
$config['file_name'] = $qsoid . '.sstv.' . '_' . time() . '.' . $ext;
$this->load->library('upload', $config);
$_FILES['sstvimage'] = $file;
if ( ! $this->upload->do_upload('sstvimage')) {
// Upload of SSTV image Failed
$error = array('error' => $this->upload->display_errors());
return $error;
}
else {
// Load database queries
$this->load->model('Sstv_model');
//Upload of SSTV image was successful
$data = $this->upload->data();
// Now we need to insert info into database about file
$filename = $data['file_name'];
$insertid = $this->Sstv_model->saveSstvImages($qsoid, $filename);
$result['status'] = 'Success';
$result['insertid'] = $insertid;
$result['filename'] = $filename;
return $result;
}
}
// Deletes SSTV Image
public function delete() {
$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'); }
$id = $this->input->post('id');
$this->load->model('Sstv_model');
$path = './assets/sstvimages/';
$file = $this->Sstv_model->getSSTVFilename($id)->row();
$filename = $file->filename;
unlink($path.$filename);
$this->Sstv_model->deleteSstv($id);
}
}

Wyświetl plik

@ -75,6 +75,37 @@ class Visitor extends CI_Controller {
$this->load->model('logbook_model');
// load config and init pagination
$this->load->library('pagination');
//Pagination config
$config['base_url'] = base_url().'index.php/visitor/'. $public_slug . '/index';
$config['total_rows'] = $this->logbook_model->total_qsos($logbooks_locations_array);
$config['per_page'] = '25';
$config['num_links'] = $this->logbook_model->total_qsos($logbooks_locations_array) / 25;
$config['full_tag_open'] = '<ul class="pagination">';
$config['full_tag_close'] = '</ul>';
$config['attributes'] = ['class' => 'page-link'];
$config['first_link'] = false;
$config['last_link'] = false;
$config['first_tag_open'] = '<li class="page-item">';
$config['first_tag_close'] = '</li>';
$config['prev_link'] = '&laquo';
$config['prev_tag_open'] = '<li class="page-item">';
$config['prev_tag_close'] = '</li>';
$config['next_link'] = '&raquo';
$config['next_tag_open'] = '<li class="page-item">';
$config['next_tag_close'] = '</li>';
$config['last_tag_open'] = '<li class="page-item">';
$config['last_tag_close'] = '</li>';
$config['cur_tag_open'] = '<li class="page-item active"><a href="#" class="page-link">';
$config['cur_tag_close'] = '<span class="visually-hidden">(current)</span></a></li>';
$config['num_tag_open'] = '<li class="page-item">';
$config['num_tag_close'] = '</li>';
$this->pagination->initialize($config);
// Public visitor so no QRA to setup
$data['qra'] = "none";
@ -107,8 +138,9 @@ class Visitor extends CI_Controller {
$data['total_lotw_sent'] = $QSLStatsBreakdownArray['LoTW_Sent'];
$data['total_lotw_rcvd'] = $QSLStatsBreakdownArray['LoTW_Received'];
$data['last_five_qsos'] = $this->logbook_model->get_last_qsos('18', $logbooks_locations_array);
// Show paginated results
$data['results'] = $this->logbook_model->get_qsos($config['per_page'], $this->uri->segment(4), $logbooks_locations_array);
$data['page_title'] = "Dashboard";
$data['slug'] = $public_slug;

Wyświetl plik

@ -0,0 +1,44 @@
<?php
if (!function_exists('folderSize')) {
function folderSize($dir){
$count_size = 0;
$count = 0;
$dir_array = scandir($dir);
foreach($dir_array as $key=>$filename){
if($filename!=".." && $filename!="."){
if(is_dir($dir."/".$filename)){
$new_foldersize = folderSize($dir."/".$filename);
$count_size = $count_size+ $new_foldersize;
}else if(is_file($dir."/".$filename)){
$count_size = $count_size + filesize($dir."/".$filename);
$count++;
}
}
}
return $count_size;
}
}
if (!function_exists('sizeFormat')) {
function sizeFormat($bytes){
$kb = 1024;
$mb = $kb * 1024;
$gb = $mb * 1024;
$tb = $gb * 1024;
if (($bytes >= 0) && ($bytes < $kb)) {
return $bytes . ' B';
} elseif (($bytes >= $kb) && ($bytes < $mb)) {
return ceil($bytes / $kb) . ' KB';
} elseif (($bytes >= $mb) && ($bytes < $gb)) {
return ceil($bytes / $mb) . ' MB';
} elseif (($bytes >= $gb) && ($bytes < $tb)) {
return ceil($bytes / $gb) . ' GB';
} elseif ($bytes >= $tb) {
return ceil($bytes / $tb) . ' TB';
} else {
return $bytes . ' B';
}
}
}

Wyświetl plik

@ -28,5 +28,11 @@ $lang['contesting_title_callsign_suggestions'] = 'Предложения за и
$lang['contesting_title_contest_logbook'] = 'Дневник на състезанието';
$lang['contesting_copy_exch_to_dok'] = 'Copy received exchange to DOK field in the database!';
$lang['contesting_copy_exch_to_none'] = 'Copy received exchange to no additional field in the database!';
$lang['contesting_copy_exch_to_power'] = 'Copy received exchange to RX-Power field in the database!';
$lang['contesting_copy_exch_to_state'] = 'Copy received exchange to US-State field in the database!';
$lang['contesting_copy_exch_to_age'] = 'Copy received exchange to Age field in the database!';
$lang['contesting_copy_exch_to_name'] = 'Copy received exchange to Name field in the database!';
$lang['contesting_copy_exch_to_locator'] = 'Copy received exchange to Locator field in the database!';

Wyświetl plik

@ -17,6 +17,7 @@ $lang['menu_post_contest_logging'] = 'Post Contest Logging';
$lang['menu_bandmap'] = 'Bandmap';
$lang['menu_view_qsl'] = 'View QSL Cards';
$lang['menu_view_eqsl'] = 'View eQSL Cards';
$lang['menu_view_sstv'] = 'View SSTV Images';
$lang['menu_notes'] = 'Notes';

Wyświetl plik

@ -0,0 +1,5 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
$lang['sstv_string_disk_space'] = 'of disk space to store SSTV image assets';

Wyświetl plik

@ -28,5 +28,11 @@ $lang['contesting_title_callsign_suggestions'] = '呼号建议';
$lang['contesting_title_contest_logbook'] = '竞赛日志簿';
$lang['contesting_copy_exch_to_dok'] = '将收到的交换信息复制到数据库中的 DOK 字段!';
$lang['contesting_copy_exch_to_none'] = '将收到的交换信息复制到数据库中的 no additional 字段!';
$lang['contesting_copy_exch_to_power'] = '将收到的交换信息复制到数据库中的 RX-Power 字段!';
$lang['contesting_copy_exch_to_state'] = '将收到的交换信息复制到数据库中的 US-State 字段!';
$lang['contesting_copy_exch_to_age'] = '将收到的交换信息复制到数据库中的 Age 字段!';
$lang['contesting_copy_exch_to_name'] = '将收到的交换信息复制到数据库中的 Name 字段!';
$lang['contesting_copy_exch_to_locator'] = '将收到的交换信息复制到数据库中的 Locator 字段!';

Wyświetl plik

@ -0,0 +1,5 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
$lang['sstv_string_disk_space'] = 'of disk space to store SSTV image assets';

Wyświetl plik

@ -28,5 +28,11 @@ $lang['contesting_title_callsign_suggestions'] = 'Našeptávač značek';
$lang['contesting_title_contest_logbook'] = 'Závodní deník';
$lang['contesting_copy_exch_to_dok'] = 'Copy received exchange to DOK field in the database!';
$lang['contesting_copy_exch_to_none'] = 'Copy received exchange to no additional field in the database!';
$lang['contesting_copy_exch_to_power'] = 'Copy received exchange to RX-Power field in the database!';
$lang['contesting_copy_exch_to_state'] = 'Copy received exchange to US-State field in the database!';
$lang['contesting_copy_exch_to_age'] = 'Copy received exchange to Age field in the database!';
$lang['contesting_copy_exch_to_name'] = 'Copy received exchange to Name field in the database!';
$lang['contesting_copy_exch_to_locator'] = 'Copy received exchange to Locator field in the database!';

Wyświetl plik

@ -0,0 +1,5 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
$lang['sstv_string_disk_space'] = 'of disk space to store SSTV image assets';

Wyświetl plik

@ -28,5 +28,11 @@ $lang['contesting_title_callsign_suggestions'] = 'Roepnaam suggesties';
$lang['contesting_title_contest_logbook'] = 'Contest Logboek';
$lang['contesting_copy_exch_to_dok'] = 'Copy received exchange to DOK field in the database!';
$lang['contesting_copy_exch_to_none'] = 'Copy received exchange to no additional field in the database!';
$lang['contesting_copy_exch_to_power'] = 'Copy received exchange to RX-Power field in the database!';
$lang['contesting_copy_exch_to_state'] = 'Copy received exchange to US-State field in the database!';
$lang['contesting_copy_exch_to_age'] = 'Copy received exchange to Age field in the database!';
$lang['contesting_copy_exch_to_name'] = 'Copy received exchange to Name field in the database!';
$lang['contesting_copy_exch_to_locator'] = 'Copy received exchange to Locator field in the database!';

Wyświetl plik

@ -17,6 +17,7 @@ $lang['menu_post_contest_logging'] = 'Post Contest Logging';
$lang['menu_bandmap'] = 'Bandmap';
$lang['menu_view_qsl'] = 'View QSL Cards';
$lang['menu_view_eqsl'] = 'View eQSL Cards';
$lang['menu_view_sstv'] = 'View SSTV Images';
$lang['menu_notes'] = 'Notes';

Wyświetl plik

@ -0,0 +1,5 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
$lang['sstv_string_disk_space'] = 'of disk space to store SSTV image assets';

Wyświetl plik

@ -28,5 +28,11 @@ $lang['contesting_title_callsign_suggestions'] = 'Callsign Suggestions';
$lang['contesting_title_contest_logbook'] = 'Contest Logbook';
$lang['contesting_copy_exch_to_dok'] = 'Copy received exchange to DOK field in the database!';
$lang['contesting_copy_exch_to_none'] = 'Copy received exchange to no additional field in the database!';
$lang['contesting_copy_exch_to_power'] = 'Copy received exchange to RX-Power field in the database!';
$lang['contesting_copy_exch_to_state'] = 'Copy received exchange to US-State field in the database!';
$lang['contesting_copy_exch_to_age'] = 'Copy received exchange to Age field in the database!';
$lang['contesting_copy_exch_to_name'] = 'Copy received exchange to Name field in the database!';
$lang['contesting_copy_exch_to_locator'] = 'Copy received exchange to Locator field in the database!';

Wyświetl plik

@ -74,6 +74,10 @@ $lang['general_word_invalid_ignore'] = 'Invalid (Ignore)';
$lang['general_word_qslcard'] = 'QSL Card';
$lang['general_word_qslcard_management'] = 'QSL Management';
$lang['general_word_qslcards'] = 'QSL Cards';
$lang['general_word_sstv_management'] = 'SSTV Management';
$lang['general_word_sstvimages'] = 'SSTV Images';
$lang['general_sstv_upload'] = 'Uploaded SSTV images';
$lang['general_sstv_upload_button'] = 'Upload SSTV image(s)';
$lang['general_word_qslcard_direct'] = 'Direct';
$lang['general_word_qslcard_bureau'] = 'Bureau';
$lang['general_word_qslcard_electronic'] = 'Electronic';

Wyświetl plik

@ -17,6 +17,7 @@ $lang['menu_post_contest_logging'] = 'Post Contest Logging';
$lang['menu_bandmap'] = 'Bandmap';
$lang['menu_view_qsl'] = 'View QSL Cards';
$lang['menu_view_eqsl'] = 'View eQSL Cards';
$lang['menu_view_sstv'] = 'View SSTV Images';
$lang['menu_notes'] = 'Notes';

Wyświetl plik

@ -0,0 +1,5 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
$lang['sstv_string_disk_space'] = 'of disk space to store SSTV image assets';

Wyświetl plik

@ -28,5 +28,11 @@ $lang['contesting_title_callsign_suggestions'] = 'Ehdotettu kutsu';
$lang['contesting_title_contest_logbook'] = 'Kilpailussa pidetyt yhteydet';
$lang['contesting_copy_exch_to_dok'] = 'Copy received exchange to DOK field in the database!';
$lang['contesting_copy_exch_to_none'] = 'Copy received exchange to no additional field in the database!';
$lang['contesting_copy_exch_to_power'] = 'Copy received exchange to RX-Power field in the database!';
$lang['contesting_copy_exch_to_state'] = 'Copy received exchange to US-State field in the database!';
$lang['contesting_copy_exch_to_age'] = 'Copy received exchange to Age field in the database!';
$lang['contesting_copy_exch_to_name'] = 'Copy received exchange to Name field in the database!';
$lang['contesting_copy_exch_to_locator'] = 'Copy received exchange to Locator field in the database!';

Wyświetl plik

@ -0,0 +1,5 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
$lang['sstv_string_disk_space'] = 'of disk space to store SSTV image assets';

Wyświetl plik

@ -28,5 +28,11 @@ $lang['contesting_title_callsign_suggestions'] = "Suggestion d'indicatif";
$lang['contesting_title_contest_logbook'] = "Journal de trafic du concours";
$lang['contesting_copy_exch_to_dok'] = "Copiez l'échange reçu dans le champ DOK de la base de données !";
$lang['contesting_copy_exch_to_none'] = "Copiez l'échange reçu dans le champ no additional de la base de données !";
$lang['contesting_copy_exch_to_power'] = "Copiez l'échange reçu dans le champ RX-Power de la base de données !";
$lang['contesting_copy_exch_to_state'] = "Copiez l'échange reçu dans le champ US-State de la base de données !";
$lang['contesting_copy_exch_to_age'] = "Copiez l'échange reçu dans le champ Age de la base de données !";
$lang['contesting_copy_exch_to_name'] = "Copiez l'échange reçu dans le champ Name de la base de données !";
$lang['contesting_copy_exch_to_locator'] = "Copiez l'échange reçu dans le champ Locator de la base de données !";

Wyświetl plik

@ -17,6 +17,7 @@ $lang['menu_post_contest_logging'] = 'Post Contest Logging';
$lang['menu_bandmap'] = 'Bandmap';
$lang['menu_view_qsl'] = 'View QSL Cards';
$lang['menu_view_eqsl'] = 'View eQSL Cards';
$lang['menu_view_sstv'] = 'View SSTV Images';
$lang['menu_notes'] = 'Notes';

Wyświetl plik

@ -0,0 +1,5 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
$lang['sstv_string_disk_space'] = 'of disk space to store SSTV image assets';

Wyświetl plik

@ -28,5 +28,11 @@ $lang['contesting_title_callsign_suggestions'] = 'Rufzeichenvorschläge';
$lang['contesting_title_contest_logbook'] = 'Contest-Logbuch';
$lang['contesting_copy_exch_to_dok'] = 'Kopiere den erhaltenen Exchange in das DOK Feld der Datenbank!';
$lang['contesting_copy_exch_to_none'] = 'Kopiere den erhaltenen Exchange in kein weiteres Feld der Datenbank!';
$lang['contesting_copy_exch_to_power'] = 'Kopiere den erhaltenen Exchange in das RX-Power Feld der Datenbank!';
$lang['contesting_copy_exch_to_state'] = 'Kopiere den erhaltenen Exchange in das US-State Feld der Datenbank!';
$lang['contesting_copy_exch_to_age'] = 'Kopiere den erhaltenen Exchange in das Lebensalter Feld der Datenbank!';
$lang['contesting_copy_exch_to_name'] = 'Kopiere den erhaltenen Exchange in das Namens Feld der Datenbank!';
$lang['contesting_copy_exch_to_locator'] = 'Kopiere den erhaltenen Exchange in das Locator Feld der Datenbank!';

Wyświetl plik

@ -0,0 +1,5 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
$lang['sstv_string_disk_space'] = 'of disk space to store SSTV image assets';

Wyświetl plik

@ -28,5 +28,11 @@ $lang['contesting_title_callsign_suggestions'] = 'Προτάσεις διακρ
$lang['contesting_title_contest_logbook'] = 'Αρχείο διαγωνισμού';
$lang['contesting_copy_exch_to_dok'] = 'Copy received exchange to DOK field in the database!';
$lang['contesting_copy_exch_to_none'] = 'Copy received exchange to no additional field in the database!';
$lang['contesting_copy_exch_to_power'] = 'Copy received exchange to RX-Power field in the database!';
$lang['contesting_copy_exch_to_state'] = 'Copy received exchange to US-State field in the database!';
$lang['contesting_copy_exch_to_age'] = 'Copy received exchange to Age field in the database!';
$lang['contesting_copy_exch_to_name'] = 'Copy received exchange to Name field in the database!';
$lang['contesting_copy_exch_to_locator'] = 'Copy received exchange to Locator field in the database!';

Wyświetl plik

@ -17,6 +17,7 @@ $lang['menu_post_contest_logging'] = 'Post Contest Logging';
$lang['menu_bandmap'] = 'Bandmap';
$lang['menu_view_qsl'] = 'View QSL Cards';
$lang['menu_view_eqsl'] = 'View eQSL Cards';
$lang['menu_view_sstv'] = 'View SSTV Images';
$lang['menu_notes'] = 'Notes';

Wyświetl plik

@ -0,0 +1,5 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
$lang['sstv_string_disk_space'] = 'of disk space to store SSTV image assets';

Wyświetl plik

@ -28,5 +28,11 @@ $lang['contesting_title_callsign_suggestions'] = 'Suggerimenti Nominativi';
$lang['contesting_title_contest_logbook'] = 'Log del Contest';
$lang['contesting_copy_exch_to_dok'] = 'Copy received exchange to DOK field in the database!';
$lang['contesting_copy_exch_to_none'] = 'Copy received exchange to no additional field in the database!';
$lang['contesting_copy_exch_to_power'] = 'Copy received exchange to RX-Power field in the database!';
$lang['contesting_copy_exch_to_state'] = 'Copy received exchange to US-State field in the database!';
$lang['contesting_copy_exch_to_age'] = 'Copy received exchange to Age field in the database!';
$lang['contesting_copy_exch_to_name'] = 'Copy received exchange to Name field in the database!';
$lang['contesting_copy_exch_to_locator'] = 'Copy received exchange to Locator field in the database!';

Wyświetl plik

@ -17,6 +17,7 @@ $lang['menu_post_contest_logging'] = 'Post Contest Logging';
$lang['menu_bandmap'] = 'Bandmap';
$lang['menu_view_qsl'] = 'View QSL Cards';
$lang['menu_view_eqsl'] = 'View eQSL Cards';
$lang['menu_view_sstv'] = 'View SSTV Images';
$lang['menu_notes'] = 'Notes';

Wyświetl plik

@ -0,0 +1,5 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
$lang['sstv_string_disk_space'] = 'of disk space to store SSTV image assets';

Wyświetl plik

@ -28,5 +28,11 @@ $lang['contesting_title_callsign_suggestions'] = 'Podpowiadanie znaków';
$lang['contesting_title_contest_logbook'] = 'Log zawodów';
$lang['contesting_copy_exch_to_dok'] = 'Copy received exchange to DOK field in the database!';
$lang['contesting_copy_exch_to_none'] = 'Copy received exchange to no additional field in the database!';
$lang['contesting_copy_exch_to_power'] = 'Copy received exchange to RX-Power field in the database!';
$lang['contesting_copy_exch_to_state'] = 'Copy received exchange to US-State field in the database!';
$lang['contesting_copy_exch_to_age'] = 'Copy received exchange to Age field in the database!';
$lang['contesting_copy_exch_to_name'] = 'Copy received exchange to Name field in the database!';
$lang['contesting_copy_exch_to_locator'] = 'Copy received exchange to Locator field in the database!';

Wyświetl plik

@ -17,6 +17,7 @@ $lang['menu_post_contest_logging'] = 'Post Contest Logging';
$lang['menu_bandmap'] = 'Bandmap';
$lang['menu_view_qsl'] = 'View QSL Cards';
$lang['menu_view_eqsl'] = 'View eQSL Cards';
$lang['menu_view_sstv'] = 'View SSTV Images';
$lang['menu_notes'] = 'Notes';

Wyświetl plik

@ -0,0 +1,5 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
$lang['sstv_string_disk_space'] = 'of disk space to store SSTV image assets';

Wyświetl plik

@ -28,5 +28,11 @@ $lang['contesting_title_callsign_suggestions'] = 'Предложение поз
$lang['contesting_title_contest_logbook'] = 'Журнал контеста';
$lang['contesting_copy_exch_to_dok'] = 'Копировать принятую контроль в поле DOK базы данных!';
$lang['contesting_copy_exch_to_none'] = 'Копировать принятую контроль в поле no additional базы данных!';
$lang['contesting_copy_exch_to_power'] = 'Копировать принятую контроль в поле RX-Power базы данных!';
$lang['contesting_copy_exch_to_state'] = 'Копировать принятую контроль в поле US-State базы данных!';
$lang['contesting_copy_exch_to_age'] = 'Копировать принятую контроль в поле Age базы данных!';
$lang['contesting_copy_exch_to_name'] = 'Копировать принятую контроль в поле Name базы данных!';
$lang['contesting_copy_exch_to_locator'] = 'Копировать принятую контроль в поле Locator базы данных!';

Wyświetl plik

@ -0,0 +1,5 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
$lang['sstv_string_disk_space'] = 'of disk space to store SSTV image assets';

Wyświetl plik

@ -28,5 +28,11 @@ $lang['contesting_title_callsign_suggestions'] = 'Indicativos sugeridos';
$lang['contesting_title_contest_logbook'] = 'Libro de guardia del concurso';
$lang['contesting_copy_exch_to_dok'] = '¡Copiar intercambio recibido al campo DOK de la base de datos!';
$lang['contesting_copy_exch_to_none'] = '¡Copiar intercambio recibido al campo no additional de la base de datos!';
$lang['contesting_copy_exch_to_power'] = '¡Copiar intercambio recibido al campo RX-Power de la base de datos!';
$lang['contesting_copy_exch_to_state'] = '¡Copiar intercambio recibido al campo US-State de la base de datos!';
$lang['contesting_copy_exch_to_age'] = '¡Copiar intercambio recibido al campo Age de la base de datos!';
$lang['contesting_copy_exch_to_name'] = '¡Copiar intercambio recibido al campo Name de la base de datos!';
$lang['contesting_copy_exch_to_locator'] = '¡Copiar intercambio recibido al campo Locator de la base de datos!';

Wyświetl plik

@ -0,0 +1,5 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
$lang['sstv_string_disk_space'] = 'of disk space to store SSTV image assets';

Wyświetl plik

@ -28,5 +28,11 @@ $lang['contesting_title_callsign_suggestions'] = 'Signal-förslag';
$lang['contesting_title_contest_logbook'] = 'Contest loggbok';
$lang['contesting_copy_exch_to_dok'] = 'Copy received exchange to DOK field in the database!';
$lang['contesting_copy_exch_to_none'] = 'Copy received exchange to no additional field in the database!';
$lang['contesting_copy_exch_to_power'] = 'Copy received exchange to RX-Power field in the database!';
$lang['contesting_copy_exch_to_state'] = 'Copy received exchange to US-State field in the database!';
$lang['contesting_copy_exch_to_age'] = 'Copy received exchange to Age field in the database!';
$lang['contesting_copy_exch_to_name'] = 'Copy received exchange to Name field in the database!';
$lang['contesting_copy_exch_to_locator'] = 'Copy received exchange to Locator field in the database!';

Wyświetl plik

@ -0,0 +1,5 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
$lang['sstv_string_disk_space'] = 'of disk space to store SSTV image assets';

Wyświetl plik

@ -28,5 +28,11 @@ $lang['contesting_title_callsign_suggestions'] = 'Çağrı Kodu Önerileri';
$lang['contesting_title_contest_logbook'] = 'Yarışma kayıt defteri';
$lang['contesting_copy_exch_to_dok'] = 'Copy received exchange to DOK field in the database!';
$lang['contesting_copy_exch_to_none'] = 'Copy received exchange to no additional field in the database!';
$lang['contesting_copy_exch_to_power'] = 'Copy received exchange to RX-Power field in the database!';
$lang['contesting_copy_exch_to_state'] = 'Copy received exchange to US-State field in the database!';
$lang['contesting_copy_exch_to_age'] = 'Copy received exchange to Age field in the database!';
$lang['contesting_copy_exch_to_name'] = 'Copy received exchange to Name field in the database!';
$lang['contesting_copy_exch_to_locator'] = 'Copy received exchange to Locator field in the database!';

Wyświetl plik

@ -17,6 +17,7 @@ $lang['menu_post_contest_logging'] = 'Post Contest Logging';
$lang['menu_bandmap'] = 'Bandmap';
$lang['menu_view_qsl'] = 'View QSL Cards';
$lang['menu_view_eqsl'] = 'View eQSL Cards';
$lang['menu_view_sstv'] = 'View SSTV Images';
$lang['menu_notes'] = 'Notes';

Wyświetl plik

@ -0,0 +1,5 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
$lang['sstv_string_disk_space'] = 'of disk space to store SSTV image assets';

Wyświetl plik

@ -0,0 +1,41 @@
<?php
defined('BASEPATH') or exit('No direct script access allowed');
class Migration_add_sstv_images_table extends CI_Migration
{
public function up()
{
// if sstv_images table doesn't exist
if (!$this->db->table_exists('sstv_images')) {
$this->dbforge->add_field(array(
'id' => array(
'type' => 'INT',
'constraint' => 5,
'unsigned' => TRUE,
'auto_increment' => TRUE
),
'qsoid' => array(
'type' => 'VARCHAR',
'constraint' => '250',
),
'filename' => array(
'type' => 'VARCHAR',
'constraint' => '250',
),
'modified' => array(
'type' => 'timestamp',
'null' => TRUE,
),
));
$this->dbforge->add_key('id', TRUE);
$this->dbforge->create_table('sstv_images');
}
}
public function down()
{
echo "not possible";
}
}

Wyświetl plik

@ -0,0 +1,30 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
/*
* Tag Cloudlog as 2.6.8
*/
class Migration_tag_2_6_8 extends CI_Migration {
public function up()
{
// Tag Cloudlog 2.6.3
$this->db->where('option_name', 'version');
$this->db->update('options', array('option_value' => '2.6.8'));
// Trigger Version Info Dialog
$this->db->where('option_type', 'version_dialog');
$this->db->where('option_name', 'confirmed');
$this->db->update('user_options', array('option_value' => 'false'));
}
public function down()
{
$this->db->where('option_name', 'version');
$this->db->update('options', array('option_value' => '2.6.7'));
}
}

Wyświetl plik

@ -13,6 +13,7 @@ class Contesting_model extends CI_Model {
$contestid = $qsoarray[2];
$date = DateTime::createFromFormat('d-m-Y H:i:s', $qsoarray[0]);
if ($date == false) $date = DateTime::createFromFormat('d-m-Y H:i', $qsoarray[0]);
$date = $date->format('Y-m-d H:i:s');
$sql = "SELECT date_format(col_time_on, '%d-%m-%Y %H:%i:%s') as col_time_on, col_call, col_band, col_mode,
@ -65,6 +66,7 @@ class Contesting_model extends CI_Model {
$sql = "SELECT * from contest_session where station_id = " . $station_id;
$data = $this->db->query($sql);
return $data->row();
}
@ -102,6 +104,10 @@ class Contesting_model extends CI_Model {
'station_id' => $station_id,
);
if ($this->input->post('copyexchangeto')) {
$data['copytodok'] = xss_clean($this->input->post('copyexchangeto'));
}
$sql = "SELECT * from contest_session where station_id = " . $station_id;
$querydata = $this->db->query($sql);
@ -246,6 +252,7 @@ class Contesting_model extends CI_Model {
$qsoarray = explode(',', $contest_session->qso);
$date = DateTime::createFromFormat('d-m-Y H:i:s', $qsoarray[0]);
if ($date == false) $date = DateTime::createFromFormat('d-m-Y H:i', $qsoarray[0]);
$date = $date->format('Y-m-d H:i:s');
$this->db->select('timediff(UTC_TIMESTAMP(),col_time_off) b4, COL_TIME_OFF');

Wyświetl plik

@ -157,6 +157,44 @@ class Logbook_model extends CI_Model
$darc_dok = $this->input->post('darc_dok');
}
//$darc_dok = $this->input->post('darc_dok');
$qso_locator = strtoupper(trim(xss_clean($this->input->post('locator')) ?? ''));
$qso_name = $this->input->post('name');
$qso_age = null;
$qso_usa_state = $this->input->post('usa_state') == null ? '' : $this->input->post('usa_state');
$qso_rx_power = null;
if ($this->input->post('copyexchangeto')) {
switch($this->input->post('copyexchangeto')) {
case 'dok':
$darc_dok = $srx_string;
break;
case 'locator':
$qso_locator = strtoupper(trim(xss_clean($srx_string)));
break;
case 'name':
$qso_name = $srx_string;
break;
case 'age':
$qso_age = $srx_string;
break;
case 'state':
$qso_usa_state = $srx_string;
break;
case 'power':
$qso_rx_power = $srx_string;
break;
// Example for more sophisticated exchanges and their split into the db:
//case 'name/power':
// if (strlen($srx_string) == 0) break;
// $exch_pt = explode(" ",$srx_string);
// $qso_name = $exch_pt[0];
// if (count($exch_pt)>1) $qso_power = $exch_pt[1];
// break;
default:
}
}
if ($this->input->post('qsl_sent')) {
$qsl_sent = $this->input->post('qsl_sent');
} else {
@ -193,7 +231,7 @@ class Logbook_model extends CI_Model
'COL_SUBMODE' => $submode,
'COL_RST_RCVD' => $this->input->post('rst_rcvd'),
'COL_RST_SENT' => $this->input->post('rst_sent'),
'COL_NAME' => $this->input->post('name'),
'COL_NAME' => $qso_name,
'COL_COMMENT' => $this->input->post('comment'),
'COL_SAT_NAME' => $this->input->post('sat_name') == null ? '' : strtoupper($this->input->post('sat_name')),
'COL_SAT_MODE' => $this->input->post('sat_mode') == null ? '' : strtoupper($this->input->post('sat_mode')),
@ -216,7 +254,7 @@ class Logbook_model extends CI_Model
'COL_ANT_AZ' => null,
'COL_ANT_EL' => null,
'COL_A_INDEX' => null,
'COL_AGE' => null,
'COL_AGE' => $qso_age,
'COL_TEN_TEN' => null,
'COL_TX_PWR' => $tx_power,
'COL_STX' => $stx,
@ -229,12 +267,12 @@ class Logbook_model extends CI_Model
'COL_MAX_BURSTS' => null,
'COL_K_INDEX' => null,
'COL_SFI' => null,
'COL_RX_PWR' => null,
'COL_RX_PWR' => $qso_rx_power,
'COL_LAT' => null,
'COL_LON' => null,
'COL_DXCC' => $dxcc_id,
'COL_CQZ' => $cqz,
'COL_STATE' => $this->input->post('usa_state') == null ? '' : trim($this->input->post('usa_state')),
'COL_STATE' => $qso_usa_state,
'COL_CNTY' => $clean_county_input,
'COL_SOTA_REF' => $this->input->post('sota_ref') == null ? '' : trim($this->input->post('sota_ref')),
'COL_WWFF_REF' => $this->input->post('wwff_ref') == null ? '' : trim($this->input->post('wwff_ref')),
@ -302,10 +340,10 @@ class Logbook_model extends CI_Model
}
// Decide whether its single gridsquare or a multi which makes it vucc_grids
if (strpos(trim(xss_clean($this->input->post('locator')) ?? ''), ',') !== false) {
$data['COL_VUCC_GRIDS'] = strtoupper(preg_replace('/\s+/', '', xss_clean($this->input->post('locator')) ?? ''));
if (strpos($qso_locator, ',') !== false) {
$data['COL_VUCC_GRIDS'] = strtoupper(preg_replace('/\s+/', '', $qso_locator));
} else {
$data['COL_GRIDSQUARE'] = strtoupper(trim(xss_clean($this->input->post('locator')) ?? ''));
$data['COL_GRIDSQUARE'] = $qso_locator;
}
// if eQSL username set, default SENT & RCVD to 'N' else leave as null

Wyświetl plik

@ -0,0 +1,110 @@
<?php
class Sstv_model extends CI_Model
{
function saveSstvImages($qsoid, $filename)
{
// Clean ID
$clean_id = $this->security->xss_clean($qsoid);
// be sure that QSO belongs to user
$CI = &get_instance();
$CI->load->model('logbook_model');
if (!$CI->logbook_model->check_qso_is_accessible($clean_id)) {
return;
}
$data = array(
'qsoid' => $clean_id,
'filename' => $filename
);
$this->db->insert('sstv_images', $data);
return $this->db->insert_id();
}
function getSSTVFilename($id)
{
// Clean ID
$clean_id = $this->security->xss_clean($id);
// be sure that QSO belongs to user
$CI = &get_instance();
$CI->load->model('logbook_model');
$this->db->select('qsoid');
$this->db->from('sstv_images');
$this->db->where('id', $clean_id);
$qsoid = $this->db->get()->row()->qsoid;
if (!$CI->logbook_model->check_qso_is_accessible($qsoid)) {
return;
}
$this->db->select('filename');
$this->db->from('sstv_images');
$this->db->where('id', $clean_id);
return $this->db->get();
}
function deleteSstv($id)
{
// Clean ID
$clean_id = $this->security->xss_clean($id);
// be sure that QSO belongs to user
$CI = &get_instance();
$CI->load->model('logbook_model');
$this->db->select('qsoid');
$this->db->from('sstv_images');
$this->db->where('id', $clean_id);
$qsoid = $this->db->get()->row()->qsoid;
if (!$CI->logbook_model->check_qso_is_accessible($qsoid)) {
return;
}
// Delete Mode
$this->db->delete('sstv_images', array('id' => $clean_id));
}
function getSstvForQsoId($id)
{
// Clean ID
$clean_id = $this->security->xss_clean($id);
// be sure that QSO belongs to user
$CI = &get_instance();
$CI->load->model('logbook_model');
if (!$CI->logbook_model->check_qso_is_accessible($clean_id)) {
return;
}
$this->db->select('*');
$this->db->from('sstv_images');
$this->db->where('qsoid', $clean_id);
return $this->db->get()->result();
}
function getQsoWithSstvImageList()
{
$CI = &get_instance();
$CI->load->model('logbooks_model');
$logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
if (is_array($logbooks_locations_array) && !empty($logbooks_locations_array)) {
$this->db->select('*');
$this->db->from($this->config->item('table_name'));
$this->db->join('sstv_images', 'sstv_images.qsoid = ' . $this->config->item('table_name') . '.col_primary_key');
$this->db->where_in('station_id', $logbooks_locations_array);
$this->db->order_by("id", "desc");
return $this->db->get();
} else {
return false;
}
}
}

Wyświetl plik

@ -4,10 +4,10 @@
<div id="awardInfoButton">
<script>
var lang_awards_info_button = "<?php echo lang('awards_info_button'); ?>";
var lang_award_info_ln1 = "<?php echo lang('awards_dok_description_ln1'); ?>";
var lang_award_info_ln2 = "<?php echo lang('awards_dok_description_ln2'); ?>";
var lang_award_info_ln3 = "<?php echo lang('awards_dok_description_ln3'); ?>";
var lang_award_info_ln4 = "<?php echo lang('awards_dok_description_ln4'); ?>";
var lang_award_info_ln1 = "<?php echo lang('awards_wwff_description_ln1'); ?>";
var lang_award_info_ln2 = "<?php echo lang('awards_wwff_description_ln2'); ?>";
var lang_award_info_ln3 = "<?php echo lang('awards_wwff_description_ln3'); ?>";
var lang_award_info_ln4 = "<?php echo lang('awards_wwff_description_ln4'); ?>";
</script>
<h2><?php echo $page_title; ?></h2>
<button type="button" class="btn btn-sm btn-primary me-1" id="displayAwardInfo"><?php echo lang('awards_info_button'); ?></button>

Wyświetl plik

@ -1,6 +1,6 @@
<div class="container qso_panel contesting">
<button type="button" class="btn btn-sm btn-warning float-end" onclick="reset_contest_session()"><i class="fas fa-sync-alt"></i> <?php echo lang('contesting_button_reset_contest_session'); ?></button>
<h2><?php echo lang('contesting_page_title'); ?></h2>
<h2 style="display:inline"><?php echo lang('contesting_page_title'); ?> </h2> <?php echo ($_GET['manual'] == 0 ? " <span style='display:inline' class='align-text-top badge text-bg-success'>LIVE</span>" : " <span style='display:inline' class='align-text-top badge text-bg-danger'>POST</span>"); ?>
<div class="row">
<div class="col-sm-12 col-md-12">
@ -115,7 +115,7 @@
<label for="exch_serial_s"><?php echo lang('contesting_exchange_serial_s'); ?></label>
<input type="number" class="form-control form-control-sm" name="exch_serial_s" id="exch_serial_s" value="">
</div>
<div style="display:none" class="mb-3 col-md-1 exchanges">
<label for="exch_sent"><?php echo lang('gen_hamradio_exchange_sent_short'); ?></label>
<input type="text" class="form-control form-control-sm" name="exch_sent" id="exch_sent" value="">
@ -135,7 +135,7 @@
<label for="exch_serial_r"><?php echo lang('contesting_exchange_serial_r'); ?></label>
<input type="number" class="form-control form-control-sm" name="exch_serial_r" id="exch_serial_r" value="">
</div>
<div style="display:none" class="mb-3 col-md-1 exchanger">
<label for="exch_rcvd"><?php echo lang('gen_hamradio_exchange_rcvd_short'); ?></label>
<input type="text" class="form-control form-control-sm" name="exch_rcvd" id="exch_rcvd" value="">
@ -164,8 +164,15 @@
<div class="mb-3 row">
<div class="col-md-12">
<div class="form-check-inline">
<input class="form-check-input" type="checkbox" name="copyexchangetodok" value="1" id="copyexchangetodok">
<label class="form-check-label" for="copyexchangetodok"><?php echo lang('contesting_copy_exch_to_dok'); ?></label>
<select class="form-select form-select-sm" id="copyexchangeto" name="copyexchangeto">
<option value='None'><?php echo lang('contesting_copy_exch_to_none'); ?></option>
<option value='dok'><?php echo lang('contesting_copy_exch_to_dok'); ?></option>
<option value='name'><?php echo lang('contesting_copy_exch_to_name'); ?></option>
<option value='age'><?php echo lang('contesting_copy_exch_to_age'); ?></option>
<option value='state'><?php echo lang('contesting_copy_exch_to_state'); ?></option>
<option value='power'><?php echo lang('contesting_copy_exch_to_power'); ?></option>
<option value='locator'><?php echo lang('contesting_copy_exch_to_locator'); ?></option>
</select>
</div>
</div>
</div>

Wyświetl plik

@ -2474,10 +2474,10 @@ if ($this->session->userdata('user_id') != null) {
<script>
function viewQsl(picture, callsign) {
var baseURL = "<?php echo base_url(); ?>";
var $textAndPic = $('<div></div>');
$textAndPic.append('<center><img class="img-fluid w-qsl" style="height:auto;width:auto;"src="' + baseURL + '/assets/qslcard/' + picture + '" /><center>');
var title = '';
let title = '';
const baseURL = "<?php echo base_url(); ?>";
const textAndPic = $('<div></div>').append('<center><img class="img-fluid w-qsl" style="height:auto;width:auto;"src="' + baseURL + '/assets/qslcard/' + picture + '" /><center>');
if (callsign == null) {
title = 'QSL Card';
} else {
@ -2487,7 +2487,7 @@ if ($this->session->userdata('user_id') != null) {
BootstrapDialog.show({
title: title,
size: BootstrapDialog.SIZE_WIDE,
message: $textAndPic,
message: textAndPic,
buttons: [{
label: lang_admin_close,
action: function(dialogRef) {
@ -2499,6 +2499,7 @@ if ($this->session->userdata('user_id') != null) {
</script>
<script>
function deleteQsl(id) {
const baseURL = "<?php echo base_url(); ?>";
BootstrapDialog.confirm({
title: 'DANGER',
message: 'Warning! Are you sure you want to delete this QSL card?',
@ -2508,7 +2509,6 @@ if ($this->session->userdata('user_id') != null) {
btnOKClass: 'btn-danger',
callback: function(result) {
if (result) {
var baseURL = "<?php echo base_url(); ?>";
$.ajax({
url: baseURL + 'index.php/qsl/delete',
type: 'post',
@ -2535,6 +2535,64 @@ if ($this->session->userdata('user_id') != null) {
});
}
</script>
<script>
function viewSstv(picture) {
const title = 'SSTV Image';
const baseURL = "<?php echo base_url(); ?>";
const textAndPic = $('<div></div>').append(`<center><img class="img-fluid w-qsl" style="height:auto;width:auto;"src="${baseURL}/assets/sstvimages/${picture}" /><center>`);
BootstrapDialog.show({
title: title,
size: BootstrapDialog.SIZE_WIDE,
message: textAndPic,
buttons: [{
label: lang_admin_close,
action: function(dialogRef) {
dialogRef.close();
}
}]
});
}
function deleteSstv(id) {
const baseURL = "<?php echo base_url(); ?>";
BootstrapDialog.confirm({
title: 'DANGER',
message: 'Warning! Are you sure you want to delete this SSTV Image?',
type: BootstrapDialog.TYPE_DANGER,
closable: true,
draggable: true,
btnOKClass: 'btn-danger',
callback: function(result) {
if (result) {
$.ajax({
url: baseURL + 'index.php/sstv/delete',
type: 'post',
data: {
'id': id
},
success: function(data) {
// remove selected sstv image from table
$("#" + id).parent("tr:first").remove();
// remove sstv image from carousel
$("#sstvCarouselIndicators .carousel-indicators li:last-child").remove();
$("#sstvCarouselIndicators .carouselimageid_" + id).remove();
$('#sstvCarouselIndicators').find('.carousel-item').first().addClass('active');
// remove table and hide tab if all sstv images are deleted
if ($('.sstvtable tr').length == 1) {
$('.sstvtable').remove();
$('.sstvimagetab').attr('hidden', '');
}
}
});
}
}
});
}
</script>
<script>
function viewEqsl(picture, callsign) {
var baseURL = "<?php echo base_url(); ?>";
@ -2687,9 +2745,104 @@ if ($this->session->userdata('user_id') != null) {
});
}
function createTable(title, type) {
const tableClass = type === 'sstv' ? 'sstvtable' : 'qsltable';
return `<table style="width:100%" class="${tableClass} table table-sm table-bordered table-hover table-striped table-condensed">` +
'<thead>' +
'<tr>' +
'<th style="text-align: center">' + title + '</th>' +
'<th style="text-align: center"></th>' +
'<th style="text-align: center"></th>' +
'</tr>' +
'</thead>' +
'<tbody></tbody>' +
'</table>'
}
function createTableRow(image, type){
const viewFunction = type === 'sstv' ? 'viewSstv' : 'viewQsl';
const deleteFunction = type === 'sstv' ? 'deleteSstv' : 'deleteQsl';
return '<tr><td style="text-align: center">' + image.filename + '</td>' +
`<td id="${image.insertid}" style="text-align: center"><button onclick="${deleteFunction}(${image.insertid});" class="btn btn-sm btn-danger">Delete</button></td>` +
`<td style="text-align: center"><button onclick="${viewFunction}('${image.filename}')" class="btn btn-sm btn-success">View</button></td>` +
'</tr>'
}
function handleSSTVImageUpload(sstvImage){
const baseURL = "<?php echo base_url(); ?>";
const numCarouselItems = $('#sstv-carousel-indicators li').length;
// Next, append card to the table
$('.sstvtable').length === 0 ? $("#sstvupload").prepend(createTable("SSTV image file", "sstv")) : null;
$('.sstvtable tbody:last').append(createTableRow(sstvImage, "sstv"));
// Append card to the carousel
const newCarouselItem = '<div class="' + (numCarouselItems === 0 ? 'active ' : '') + 'carousel-item carouselimageid_' + sstvImage.insertid +'"><img class="img-fluid w-qsl" src="' + baseURL + '/assets/sstvimages/' + sstvImage.filename + '" alt="QSL picture"></div>';
$("#sstv-carousel-inner").append(newCarouselItem);
// Append new carousel indicator
const newCarouselIndicator = '<li class="' + (numCarouselItems === 0 ? 'active ' : '') + '" data-bs-target="#sstvCarouselIndicators" data-bs-slide-to="' + numCarouselItems + '"></li>';
$("#sstv-carousel-indicators").append(newCarouselIndicator);
// Initialize the bootstrap carousel
$("#sstvCarouselIndicators").carousel();
}
function uploadSSTV() {
const baseURL = "<?php echo base_url(); ?>";
const formdata = new FormData(document.getElementById("sstvinfo"));
$.ajax({
url: baseURL + 'index.php/sstv/uploadsstv',
type: 'post',
data: formdata,
enctype: 'multipart/form-data',
processData: false,
contentType: false,
success: function(data) {
// Iterate over each SSTV image and handle it
data.forEach((sstvImage) => {
if (sstvImage.status == 'Success') {
// Show the SSTV image tab
$('.sstvimagetab').removeAttr('hidden');
// Handle the SSTV image upload
handleSSTVImageUpload(sstvImage);
} else if (sstvImage.status != '') {
$("#sstvupload").append('<div class="alert alert-danger">SSTV image:' +
sstvImage.error +
'</div>');
}
// Reset the image inputs
$("#sstvimages").val(null);
})
}
});
}
function handleQslCardUpload(qslCard) {
const baseURL = "<?php echo base_url(); ?>";
const numCarouselItems = $('#qsl-carousel-indicators li').length;
// append card to the qsl management table
$('.qsltable').length === 0 ? $("#qslupload").prepend(createTable("QSL image file", "qsl")) : null;
$('.qsltable tbody:last').append(createTableRow(qslCard, "qsl"));
// Append card image to the carousel
const newCarouselItem = '<div class="' + (numCarouselItems === 0 ? 'active ' : '') + 'carousel-item carouselimageid_' + qslCard.insertid +'"><img class="img-fluid w-qsl" src="' + baseURL + '/assets/qslcard/' + qslCard.filename + '" alt="QSL picture"></div>';
$("#qsl-carousel-inner").append(newCarouselItem);
// Append carousel indicator for the new card
const newCarouselIndicator = '<li class="' + (numCarouselItems === 0 ? 'active ' : '') + '" data-bs-target="#qslCarouselIndicators" data-bs-slide-to="' + numCarouselItems + '"></li>';
$("#qsl-carousel-indicators").append(newCarouselIndicator);
// Initialize the bootstrap carousel
$("#qslCarouselIndicators").carousel();
}
function uploadQsl() {
var baseURL = "<?php echo base_url(); ?>";
var formdata = new FormData(document.getElementById("fileinfo"));
const baseURL = "<?php echo base_url(); ?>";
const formdata = new FormData(document.getElementById("fileinfo"));
$.ajax({
url: baseURL + 'index.php/qsl/uploadqsl',
@ -2699,80 +2852,29 @@ if ($this->session->userdata('user_id') != null) {
processData: false,
contentType: false,
success: function(data) {
const qslCard = data.status || {}
if (data.status.front.status == 'Success') {
if ($('.qsltable').length > 0) {
$('.qsltable tr:last').after('<tr><td style="text-align: center">' + data.status.front.filename + '</td>' +
'<td id="' + data.status.front.insertid + '"style="text-align: center"><button onclick="deleteQsl(' + data.status.front.insertid + ');" class="btn btn-sm btn-danger">Delete</button></td>' +
'<td style="text-align: center"><button onclick="viewQsl(\'' + data.status.front.filename + '\')" class="btn btn-sm btn-success">View</button></td>' +
'</tr>');
var quantity = $(".carousel-indicators li").length;
$(".carousel-indicators").append('<li data-bs-target="#carouselExampleIndicators" data-bs-slide-to="' + quantity + '"></li>');
$(".carousel-inner").append('<center><div class="carousel-item carouselimageid_' + data.status.front.insertid + '"><img class="img-fluid w-qsl" src="' + baseURL + '/assets/qslcard/' + data.status.front.filename + '" alt="QSL picture #' + (quantity + 1) + '"></div></center>');
$("#qslcardfront").val(null);
} else {
$("#qslupload").prepend('<table style="width:100%" class="qsltable table table-sm table-bordered table-hover table-striped table-condensed">' +
'<thead>' +
'<tr>' +
'<th style="text-align: center">QSL image file</th>' +
'<th style="text-align: center"></th>' +
'<th style="text-align: center"></th>' +
'</tr>' +
'</thead><tbody>' +
'<tr><td style="text-align: center">' + data.status.front.filename + '</td>' +
'<td id="' + data.status.front.insertid + '"style="text-align: center"><button onclick="deleteQsl(' + data.status.front.insertid + ');" class="btn btn-sm btn-danger">Delete</button></td>' +
'<td style="text-align: center"><button onclick="viewQsl(\'' + data.status.front.filename + '\')" class="btn btn-sm btn-success">View</button></td>' +
'</tr>' +
'</tbody></table>');
$('.qslcardtab').removeAttr('hidden');
var quantity = $(".carousel-indicators li").length;
$(".carousel-indicators").append('<li class="active" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="' + quantity + '"></li>');
$(".carousel-inner").append('<center><div class="active carousel-item carouselimageid_' + data.status.front.insertid + '"><img class="img-fluid w-qsl" src="' + baseURL + '/assets/qslcard/' + data.status.front.filename + '" alt="QSL picture #' + (quantity + 1) + '"></div></center>');
$(".carouselExampleIndicators").carousel();
$("#qslcardfront").val(null);
}
} else if (data.status.front.status != '') {
handleQslCardUpload(qslCard.front);
} else if (qslCard.front.status != '') {
$("#qslupload").append('<div class="alert alert-danger">Front QSL Card:' +
data.status.front.error +
qslCard.front.error +
'</div>');
}
if (data.status.back.status == 'Success') {
var qsoid = $("#qsoid").text();
if ($('.qsltable').length > 0) {
$('.qsltable tr:last').after('<tr><td style="text-align: center">' + data.status.back.filename + '</td>' +
'<td id="' + data.status.back.insertid + '"style="text-align: center"><button onclick="deleteQsl(' + data.status.back.insertid + ');" class="btn btn-sm btn-danger">Delete</button></td>' +
'<td style="text-align: center"><button onclick="viewQsl(\'' + data.status.back.filename + '\')" class="btn btn-sm btn-success">View</button></td>' +
'</tr>');
var quantity = $(".carousel-indicators li").length;
$(".carousel-indicators").append('<li data-bs-target="#carouselExampleIndicators" data-bs-slide-to="' + quantity + '"></li>');
$(".carousel-inner").append('<center><div class="carousel-item carouselimageid_' + data.status.back.insertid + '"><img class="img-fluid w-qsl" src="' + baseURL + '/assets/qslcard/' + data.status.back.filename + '" alt="QSL picture #' + (quantity + 1) + '"></div></center>');
$("#qslcardback").val(null);
} else {
$("#qslupload").prepend('<table style="width:100%" class="qsltable table table-sm table-bordered table-hover table-striped table-condensed">' +
'<thead>' +
'<tr>' +
'<th style="text-align: center">QSL image file</th>' +
'<th style="text-align: center"></th>' +
'<th style="text-align: center"></th>' +
'</tr>' +
'</thead><tbody>' +
'<tr><td style="text-align: center">' + data.status.back.filename + '</td>' +
'<td id="' + data.status.back.insertid + '"style="text-align: center"><button onclick="deleteQsl(' + data.status.back.insertid + ');" class="btn btn-sm btn-danger">Delete</button></td>' +
'<td><button onclick="viewQsl(\'' + data.status.back.filename + '\')" class="btn btn-sm btn-success">View</button></td>' +
'</tr>' +
'</tbody></table>');
$('.qslcardtab').removeAttr('hidden');
var quantity = $(".carousel-indicators li").length;
$(".carousel-indicators").append('<li class="active" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="' + quantity + '"></li>');
$(".carousel-inner").append('<center><div class="active carousel-item carouselimageid_' + data.status.back.insertid + '"><img class="img-fluid w-qsl" src="' + baseURL + '/assets/qslcard/' + data.status.back.filename + '" alt="QSL picture #' + (quantity + 1) + '"></div></center>');
$(".carouselExampleIndicators").carousel();
$("#qslcardback").val(null);
}
} else if (data.status.back.status != '') {
if (qslCard.back.status == 'Success') {
handleQslCardUpload(qslCard.back);
} else if (qslCard.back.status != '') {
$("#qslupload").append('<div class="alert alert-danger">\nBack QSL Card: ' +
data.status.back.error +
qslCard.back.error +
'</div>');
}
// Show the QSL card tab
$('.qslcardtab').removeAttr('hidden');
// Reset the image inputs
$("#qslcardfront").val(null);
$("#qslcardback").val(null);
}
});
}

Wyświetl plik

@ -83,6 +83,8 @@
<a class="dropdown-item" href="<?php echo site_url('qsl'); ?>" title="QSL"><i class="fa fa-id-card"></i> <?php echo lang('menu_view_qsl'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('eqsl'); ?>" title="eQSL"><i class="fa fa-id-card"></i> <?php echo lang('menu_view_eqsl'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('sstv'); ?>" title="SSTV"><i class="fa fa-image"></i> <?php echo lang('menu_view_sstv'); ?></a>
</div>
</li>

Wyświetl plik

@ -1,42 +1,37 @@
<div id="carouselExampleIndicators" class="carousel slide" data-bs-ride="carousel">
<?php if (count($qslimages) > 1) { ?>
<ol class="carousel-indicators">
<?php
$i = 0;
foreach ($qslimages as $image) {
echo '<li data-bs-target="#carouselExampleIndicators" data-bs-slide-to="' . $i . '"';
if ($i == 0) {
echo 'class="active"';
<div id="qslCarouselIndicators" class="carousel slide" data-bs-ride="carousel">
<ol class="carousel-indicators" id="qsl-carousel-indicators">
<?php
$i = 0;
foreach ($qslimages as $image) {
echo '<li data-bs-target="#qslCarouselIndicators" data-bs-slide-to="' . $i . '"';
if ($i == 0) {
echo 'class="active"';
}
$i++;
echo '></li>';
}
$i++;
echo '></li>';
}
?>
</ol>
<?php } ?>
<div class="carousel-inner">
<?php
$i = 1;
foreach ($qslimages as $image) {
echo '<div class="text-center carousel-item carouselimageid_' . $image->id;
if ($i == 1) {
echo ' active';
}
echo '">';
echo '<img class="img-fluid w-qsl" src="' . base_url() . '/assets/qslcard/' . $image->filename .'" alt="QSL picture #'. $i++.'">';
echo '</div>';
}
?>
</div>
<?php if (count($qslimages) > 1) { ?>
<a class="carousel-control-prev" href="#carouselExampleIndicators" role="button" data-bs-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="visually-hidden">Previous</span>
</a>
<a class="carousel-control-next" href="#carouselExampleIndicators" role="button" data-bs-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="visually-hidden">Next</span>
</a>
<?php } ?>
?>
</ol>
<div id="qsl-carousel-inner" class="carousel-inner">
<?php
$i = 1;
foreach ($qslimages as $image) {
echo '<div class="text-center carousel-item carouselimageid_' . $image->id;
if ($i == 1) {
echo ' active';
}
echo '">';
echo '<img class="img-fluid w-qsl" src="' . base_url() . '/assets/qslcard/' . $image->filename .'" alt="QSL picture #'. $i++.'">';
echo '</div>';
}
?>
</div>
<a class="carousel-control-prev" href="#qslCarouselIndicators" role="button" data-bs-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="visually-hidden">Previous</span>
</a>
<a class="carousel-control-next" href="#qslCarouselIndicators" role="button" data-bs-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="visually-hidden">Next</span>
</a>
</div>

Wyświetl plik

@ -16,7 +16,7 @@
<div class="card-header">
<ul style="font-size: 15px;" class="nav nav-tabs card-header-tabs pull-right" id="myTab" role="tablist">
<li class="nav-item">
<a class="nav-link active" id="qsp-tab" data-bs-toggle="tab" href="#qso" role="tab" aria-controls="qso" aria-selected="true"><?php echo lang('gen_hamradio_qso'); ?></a>
<a class="nav-link active" id="qsp-tab" data-bs-toggle="tab" href="#qso" role="tab" aria-controls="qso" aria-selected="true"><?php echo lang('gen_hamradio_qso'); ?><?php if ($_GET['manual'] == 0) { echo " <span class=\"badge text-bg-success\">LIVE</span>"; }; if ($_GET['manual'] == 1) { echo " <span class=\"badge text-bg-danger\">POST</span>"; } ?></a>
</li>
<li class="nav-item">

Wyświetl plik

@ -1,3 +1,86 @@
<?php
function echo_table_header_col($name) {
switch($name) {
case 'Mode': echo lang('gen_hamradio_mode'); break;
case 'RSTS': echo lang('gen_hamradio_rsts'); break;
case 'RSTR': echo lang('gen_hamradio_rstr'); break;
case 'Country': echo lang('general_word_country'); break;
case 'IOTA': echo lang('gen_hamradio_iota'); break;
case 'SOTA': echo lang('gen_hamradio_sota'); break;
case 'WWFF': echo lang('gen_hamradio_wwff'); break;
case 'POTA': echo lang('gen_hamradio_pota'); break;
case 'State': echo lang('gen_hamradio_state'); break;
case 'Grid': echo lang('gen_hamradio_gridsquare'); break;
case 'Distance': echo lang('gen_hamradio_distance'); break;
case 'Band': echo lang('gen_hamradio_band'); break;
case 'Frequency': echo lang('gen_hamradio_frequency'); break;
case 'Operator': echo lang('gen_hamradio_operator'); break;
case 'Location': echo lang('cloudlog_station_profile'); break;
case 'Name': echo lang('general_word_name'); break;
}
}
function echo_table_col($row, $name) {
switch($name) {
case 'Mode':
echo $row->COL_SUBMODE==null?$row->COL_MODE:$row->COL_SUBMODE;
break;
case 'RSTS':
echo $row->COL_RST_SENT; if ($row->COL_STX) { echo ' <span data-bs-toggle="tooltip" title="'.($row->COL_CONTEST_ID!=""?$row->COL_CONTEST_ID:"n/a").'" class="badge text-bg-light">'; printf("%03d", $row->COL_STX); echo '</span>';} if ($row->COL_STX_STRING) { echo ' <span data-bs-toggle="tooltip" title="'.($row->COL_CONTEST_ID!=""?$row->COL_CONTEST_ID:"n/a").'" class="badge text-bg-light">' . $row->COL_STX_STRING . '</span>';};
break;
case 'RSTR':
echo $row->COL_RST_RCVD; if ($row->COL_SRX) { echo ' <span data-bs-toggle="tooltip" title="'.($row->COL_CONTEST_ID!=""?$row->COL_CONTEST_ID:"n/a").'" class="badge text-bg-light">'; printf("%03d", $row->COL_SRX); echo '</span>';} if ($row->COL_SRX_STRING) { echo ' <span data-bs-toggle="tooltip" title="'.($row->COL_CONTEST_ID!=""?$row->COL_CONTEST_ID:"n/a").'" class="badge text-bg-light">' . $row->COL_SRX_STRING . '</span>';};
break;
case 'Country':
echo ucwords(strtolower(($row->COL_COUNTRY)));
break;
case 'IOTA':
echo ($row->COL_IOTA);
break;
case 'SOTA':
echo ($row->COL_SOTA_REF);
break;
case 'WWFF':
echo ($row->COL_WWFF_REF);
break;
case 'POTA':
echo ($row->COL_POTA_REF);
break;
case 'Grid':
echo strlen($row->COL_GRIDSQUARE)==0?$row->COL_VUCC_GRIDS:$row->COL_GRIDSQUARE;
break;
case 'Distance':
echo ($row->COL_DISTANCE ? $row->COL_DISTANCE . '&nbsp;km' : '');
break;
case 'Band':
if($row->COL_SAT_NAME != null) { echo $row->COL_SAT_NAME; } else { echo strtolower($row->COL_BAND); };
break;
case 'State':
echo ($row->COL_STATE);
break;
case 'Operator':
echo ($row->COL_OPERATOR);
break;
case 'Frequency':
if($row->COL_SAT_NAME != null) { echo '<a href="https://db.satnogs.org/search/?q='.$row->COL_SAT_NAME.'" target="_blank">'; if ($row->COL_FREQ != null) { echo ' <span data-bs-toggle="tooltip" title="'.$ci->frequency->hz_to_mhz($row->COL_FREQ).'">'.$row->COL_SAT_NAME.'</span>'; } else { echo $row->COL_SAT_NAME; } echo '</a></td>'; } else { if ($row->COL_FREQ != null) { echo ' <span data-bs-toggle="tooltip" title="'.$row->COL_BAND.'">'.$ci->frequency->hz_to_mhz($row->COL_FREQ).'</span>'; } else { echo strtolower($row->COL_BAND); } };
break;
case 'State':
echo ($row->COL_STATE);
break;
case 'Operator':
echo ($row->COL_OPERATOR);
break;
case 'Location':
echo ($row->station_profile_name);
break;
case 'Name':
echo ($row->COL_NAME);
break;
default:
echo '(unknown col)';
}
}
?>
<div class="table-responsive">
<table style="width:100%" class="table table-sm tablewas table-bordered table-hover table-striped table-condensed text-center">
<thead>
@ -10,84 +93,19 @@
<?php
$ci =& get_instance();
echo '<th>';
switch($this->session->userdata('user_column1')==""?'Mode':$this->session->userdata('user_column1')) {
case 'Mode': echo lang('gen_hamradio_mode'); break;
case 'RSTS': echo lang('gen_hamradio_rsts'); break;
case 'RSTR': echo lang('gen_hamradio_rstr'); break;
case 'Country': echo lang('general_word_country'); break;
case 'IOTA': echo lang('gen_hamradio_iota'); break;
case 'SOTA': echo lang('gen_hamradio_sota'); break;
case 'State': echo lang('gen_hamradio_state'); break;
case 'Grid': echo lang('gen_hamradio_gridsquare'); break;
case 'Distance': echo lang('gen_hamradio_distance'); break;
case 'Band': echo lang('gen_hamradio_band'); break;
case 'Frequency': echo lang('gen_hamradio_frequency'); break;
case 'Operator': echo lang('gen_hamradio_operator'); break;
}
echo_table_header_col($this->session->userdata('user_column1')==""?'Mode':$this->session->userdata('user_column1'));
echo '</th>';
echo '<th>';
switch($this->session->userdata('user_column2')==""?'RSTS':$this->session->userdata('user_column2')) {
case 'Mode': echo lang('gen_hamradio_mode'); break;
case 'RSTS': echo lang('gen_hamradio_rsts'); break;
case 'RSTR': echo lang('gen_hamradio_rstr'); break;
case 'Country': echo lang('general_word_country'); break;
case 'IOTA': echo lang('gen_hamradio_iota'); break;
case 'State': echo lang('gen_hamradio_state'); break;
case 'SOTA': echo lang('gen_hamradio_sota'); break;
case 'Grid': echo lang('gen_hamradio_gridsquare'); break;
case 'Distance': echo lang('gen_hamradio_distance'); break;
case 'Band': echo lang('gen_hamradio_band'); break;
case 'Frequency': echo lang('gen_hamradio_frequency'); break;
case 'Operator': echo lang('gen_hamradio_operator'); break;
}
echo_table_header_col($this->session->userdata('user_column2')==""?'RSTS':$this->session->userdata('user_column2'));
echo '</th>';
echo '<th>';
switch($this->session->userdata('user_column3')==""?'RSTR':$this->session->userdata('user_column3')) {
case 'Mode': echo lang('gen_hamradio_mode'); break;
case 'RSTS': echo lang('gen_hamradio_rsts'); break;
case 'RSTR': echo lang('gen_hamradio_rstr'); break;
case 'Country': echo lang('general_word_country'); break;
case 'IOTA': echo lang('gen_hamradio_iota'); break;
case 'SOTA': echo lang('gen_hamradio_sota'); break;
case 'State': echo lang('gen_hamradio_state'); break;
case 'Grid': echo lang('gen_hamradio_gridsquare'); break;
case 'Distance': echo lang('gen_hamradio_distance'); break;
case 'Band': echo lang('gen_hamradio_band'); break;
case 'Frequency': echo lang('gen_hamradio_frequency'); break;
case 'Operator': echo lang('gen_hamradio_operator'); break;
}
echo_table_header_col($this->session->userdata('user_column3')==""?'RSTR':$this->session->userdata('user_column3'));
echo '</th>';
echo '<th>';
switch($this->session->userdata('user_column4')==""?'Band':$this->session->userdata('user_column4')) {
case 'Mode': echo lang('gen_hamradio_mode'); break;
case 'RSTS': echo lang('gen_hamradio_rsts'); break;
case 'RSTR': echo lang('gen_hamradio_rstr'); break;
case 'Country': echo lang('general_word_country'); break;
case 'IOTA': echo lang('gen_hamradio_iota'); break;
case 'SOTA': echo lang('gen_hamradio_sota'); break;
case 'State': echo lang('gen_hamradio_state'); break;
case 'Grid': echo lang('gen_hamradio_gridsquare'); break;
case 'Distance': echo lang('gen_hamradio_distance'); break;
case 'Band': echo lang('gen_hamradio_band'); break;
case 'Frequency': echo lang('gen_hamradio_frequency'); break;
case 'Operator': echo lang('gen_hamradio_operator'); break;
}
echo_table_header_col($this->session->userdata('user_column4')==""?'Band':$this->session->userdata('user_column4'));
echo '</th>';
echo '<th>';
switch($this->session->userdata('user_column5')==""?'Country':$this->session->userdata('user_column5')) {
case 'Mode': echo lang('gen_hamradio_mode'); break;
case 'RSTS': echo lang('gen_hamradio_rsts'); break;
case 'RSTR': echo lang('gen_hamradio_rstr'); break;
case 'Country': echo lang('general_word_country'); break;
case 'IOTA': echo lang('gen_hamradio_iota'); break;
case 'SOTA': echo lang('gen_hamradio_sota'); break;
case 'State': echo lang('gen_hamradio_state'); break;
case 'Grid': echo lang('gen_hamradio_gridsquare'); break;
case 'Distance': echo lang('gen_hamradio_distance'); break;
case 'Band': echo lang('gen_hamradio_band'); break;
case 'Frequency': echo lang('gen_hamradio_frequency'); break;
case 'Operator': echo lang('gen_hamradio_operator'); break;
}
echo_table_header_col($this->session->userdata('user_column5')==""?'Country':$this->session->userdata('user_column5'));
echo '</th>';
if(($this->config->item('use_auth')) && ($this->session->userdata('user_type') >= 2)) { ?>
@ -131,91 +149,16 @@ $ci =& get_instance();
</td>
<?php
switch($this->session->userdata('user_column1')==""?'Mode':$this->session->userdata('user_column1')) {
case 'Mode': echo '<td>'; echo $row->COL_SUBMODE==null?$row->COL_MODE:$row->COL_SUBMODE; break;
case 'RSTS': echo '<td>' . $row->COL_RST_SENT; if ($row->COL_STX) { echo ' <span data-bs-toggle="tooltip" title="'.($row->COL_CONTEST_ID!=""?$row->COL_CONTEST_ID:"n/a").'" class="badge text-bg-light">'; printf("%03d", $row->COL_STX); echo '</span>';} if ($row->COL_STX_STRING) { echo ' <span data-bs-toggle="tooltip" title="'.($row->COL_CONTEST_ID!=""?$row->COL_CONTEST_ID:"n/a").'" class="badge text-bg-light">' . $row->COL_STX_STRING . '</span>';} echo '</td>'; break;
case 'RSTR': echo '<td>' . $row->COL_RST_RCVD; if ($row->COL_SRX) { echo ' <span data-bs-toggle="tooltip" title="'.($row->COL_CONTEST_ID!=""?$row->COL_CONTEST_ID:"n/a").'" class="badge text-bg-light">'; printf("%03d", $row->COL_SRX); echo '</span>';} if ($row->COL_SRX_STRING) { echo ' <span data-bs-toggle="tooltip" title="'.($row->COL_CONTEST_ID!=""?$row->COL_CONTEST_ID:"n/a").'" class="badge text-bg-light">' . $row->COL_SRX_STRING . '</span>';} echo '</td>'; break;
case 'Country': echo '<td>' . ucwords(strtolower(($row->COL_COUNTRY)));; break;
case 'IOTA': echo '<td>' . ($row->COL_IOTA); break;
case 'SOTA': echo '<td>' . ($row->COL_SOTA_REF); break;
case 'WWFF': echo '<td>' . ($row->COL_WWFF_REF); break;
case 'POTA': echo '<td>' . ($row->COL_POTA_REF); break;
case 'Grid': echo '<td>'; echo strlen($row->COL_GRIDSQUARE)==0?$row->COL_VUCC_GRIDS:$row->COL_GRIDSQUARE; break;
case 'Distance':echo '<td>' . ($row->COL_DISTANCE ? $row->COL_DISTANCE . '&nbsp;km' : ''); break;
case 'Band': echo '<td>'; if($row->COL_SAT_NAME != null) { echo $row->COL_SAT_NAME; } else { echo strtolower($row->COL_BAND); }; break;
case 'State': echo '<td>' . ($row->COL_STATE); break;
case 'Operator': echo '<td>' . ($row->COL_OPERATOR); break;
case 'Frequency': echo '<td>'; if($row->COL_SAT_NAME != null) { echo '<a href="https://db.satnogs.org/search/?q='.$row->COL_SAT_NAME.'" target="_blank">'; if ($row->COL_FREQ != null) { echo ' <span data-bs-toggle="tooltip" title="'.$ci->frequency->hz_to_mhz($row->COL_FREQ).'">'.$row->COL_SAT_NAME.'</span>'; } else { echo $row->COL_SAT_NAME; } echo '</a></td>'; } else { if ($row->COL_FREQ != null) { echo ' <span data-bs-toggle="tooltip" title="'.$row->COL_BAND.'">'.$ci->frequency->hz_to_mhz($row->COL_FREQ).'</span>'; } else { echo strtolower($row->COL_BAND); } } echo '</td>'; break;
}
echo '</td>';
switch($this->session->userdata('user_column2')==""?'RSTS':$this->session->userdata('user_column2')) {
case 'Mode': echo '<td>'; echo $row->COL_SUBMODE==null?$row->COL_MODE:$row->COL_SUBMODE; break;
case 'RSTS': echo '<td>' . $row->COL_RST_SENT; if ($row->COL_STX) { echo ' <span data-bs-toggle="tooltip" title="'.($row->COL_CONTEST_ID!=""?$row->COL_CONTEST_ID:"n/a").'" class="badge text-bg-light">'; printf("%03d", $row->COL_STX); echo '</span>';} if ($row->COL_STX_STRING) { echo ' <span data-bs-toggle="tooltip" title="'.($row->COL_CONTEST_ID!=""?$row->COL_CONTEST_ID:"n/a").'" class="badge text-bg-light">' . $row->COL_STX_STRING . '</span>';} echo '</td>'; break;
case 'RSTR': echo '<td>' . $row->COL_RST_RCVD; if ($row->COL_SRX) { echo ' <span data-bs-toggle="tooltip" title="'.($row->COL_CONTEST_ID!=""?$row->COL_CONTEST_ID:"n/a").'" class="badge text-bg-light">'; printf("%03d", $row->COL_SRX); echo '</span>';} if ($row->COL_SRX_STRING) { echo ' <span data-bs-toggle="tooltip" title="'.($row->COL_CONTEST_ID!=""?$row->COL_CONTEST_ID:"n/a").'" class="badge text-bg-light">' . $row->COL_SRX_STRING . '</span>';} echo '</td>'; break;
case 'Country': echo '<td>' . ucwords(strtolower(($row->COL_COUNTRY)));; break;
case 'IOTA': echo '<td>' . ($row->COL_IOTA); break;
case 'SOTA': echo '<td>' . ($row->COL_SOTA_REF); break;
case 'WWFF': echo '<td>' . ($row->COL_WWFF_REF); break;
case 'POTA': echo '<td>' . ($row->COL_POTA_REF); break;
case 'Grid': echo '<td>'; echo strlen($row->COL_GRIDSQUARE)==0?$row->COL_VUCC_GRIDS:$row->COL_GRIDSQUARE; break;
case 'Distance':echo '<td>' . ($row->COL_DISTANCE ? $row->COL_DISTANCE . '&nbsp;km' : ''); break;
case 'Band': echo '<td>'; if($row->COL_SAT_NAME != null) { echo $row->COL_SAT_NAME; } else { echo strtolower($row->COL_BAND); }; break;
case 'State': echo '<td>' . ($row->COL_STATE); break;
case 'Operator': echo '<td>' . ($row->COL_OPERATOR); break;
case 'Frequency': echo '<td>'; if($row->COL_SAT_NAME != null) { echo '<a href="https://db.satnogs.org/search/?q='.$row->COL_SAT_NAME.'" target="_blank">'; if ($row->COL_FREQ != null) { echo ' <span data-bs-toggle="tooltip" title="'.$ci->frequency->hz_to_mhz($row->COL_FREQ).'">'.$row->COL_SAT_NAME.'</span>'; } else { echo $row->COL_SAT_NAME; } echo '</a></td>'; } else { if ($row->COL_FREQ != null) { echo ' <span data-bs-toggle="tooltip" title="'.$row->COL_BAND.'">'.$ci->frequency->hz_to_mhz($row->COL_FREQ).'</span>'; } else { echo strtolower($row->COL_BAND); } } echo '</td>'; break;
}
echo '</td>';
switch($this->session->userdata('user_column3')==""?'RSTR':$this->session->userdata('user_column3')) {
case 'Mode': echo '<td>'; echo $row->COL_SUBMODE==null?$row->COL_MODE:$row->COL_SUBMODE; break;
case 'RSTS': echo '<td>' . $row->COL_RST_SENT; if ($row->COL_STX) { echo ' <span data-bs-toggle="tooltip" title="'.($row->COL_CONTEST_ID!=""?$row->COL_CONTEST_ID:"n/a").'" class="badge text-bg-light">'; printf("%03d", $row->COL_STX); echo '</span>';} if ($row->COL_STX_STRING) { echo ' <span data-bs-toggle="tooltip" title="'.($row->COL_CONTEST_ID!=""?$row->COL_CONTEST_ID:"n/a").'" class="badge text-bg-light">' . $row->COL_STX_STRING . '</span>';} echo '</td>'; break;
case 'RSTR': echo '<td>' . $row->COL_RST_RCVD; if ($row->COL_SRX) { echo ' <span data-bs-toggle="tooltip" title="'.($row->COL_CONTEST_ID!=""?$row->COL_CONTEST_ID:"n/a").'" class="badge text-bg-light">'; printf("%03d", $row->COL_SRX); echo '</span>';} if ($row->COL_SRX_STRING) { echo ' <span data-bs-toggle="tooltip" title="'.($row->COL_CONTEST_ID!=""?$row->COL_CONTEST_ID:"n/a").'" class="badge text-bg-light">' . $row->COL_SRX_STRING . '</span>';} echo '</td>'; break;
case 'Country': echo '<td>' . ucwords(strtolower(($row->COL_COUNTRY)));; break;
case 'IOTA': echo '<td>' . ($row->COL_IOTA); break;
case 'SOTA': echo '<td>' . ($row->COL_SOTA_REF); break;
case 'WWFF': echo '<td>' . ($row->COL_WWFF_REF); break;
case 'POTA': echo '<td>' . ($row->COL_POTA_REF); break;
case 'Grid': echo '<td>'; echo strlen($row->COL_GRIDSQUARE)==0?$row->COL_VUCC_GRIDS:$row->COL_GRIDSQUARE; break;
case 'Distance':echo '<td>' . ($row->COL_DISTANCE ? $row->COL_DISTANCE . '&nbsp;km' : ''); break;
case 'Band': echo '<td>'; if($row->COL_SAT_NAME != null) { echo $row->COL_SAT_NAME; } else { echo strtolower($row->COL_BAND); }; break;
case 'State': echo '<td>' . ($row->COL_STATE); break;
case 'Operator': echo '<td>' . ($row->COL_OPERATOR); break;
case 'Frequency': echo '<td>'; if($row->COL_SAT_NAME != null) { echo '<a href="https://db.satnogs.org/search/?q='.$row->COL_SAT_NAME.'" target="_blank">'; if ($row->COL_FREQ != null) { echo ' <span data-bs-toggle="tooltip" title="'.$ci->frequency->hz_to_mhz($row->COL_FREQ).'">'.$row->COL_SAT_NAME.'</span>'; } else { echo $row->COL_SAT_NAME; } echo '</a></td>'; } else { if ($row->COL_FREQ != null) { echo ' <span data-bs-toggle="tooltip" title="'.$row->COL_BAND.'">'.$ci->frequency->hz_to_mhz($row->COL_FREQ).'</span>'; } else { echo strtolower($row->COL_BAND); } } echo '</td>'; break;
}
echo '</td>';
switch($this->session->userdata('user_column4')==""?'Band':$this->session->userdata('user_column4')) {
case 'Mode': echo '<td>'; echo $row->COL_SUBMODE==null?$row->COL_MODE:$row->COL_SUBMODE; break;
case 'RSTS': echo '<td>' . $row->COL_RST_SENT; if ($row->COL_STX) { echo ' <span data-bs-toggle="tooltip" title="'.($row->COL_CONTEST_ID!=""?$row->COL_CONTEST_ID:"n/a").'" class="badge text-bg-light">'; printf("%03d", $row->COL_STX); echo '</span>';} if ($row->COL_STX_STRING) { echo ' <span data-bs-toggle="tooltip" title="'.($row->COL_CONTEST_ID!=""?$row->COL_CONTEST_ID:"n/a").'" class="badge text-bg-light">' . $row->COL_STX_STRING . '</span>';} echo '</td>'; break;
case 'RSTR': echo '<td>' . $row->COL_RST_RCVD; if ($row->COL_SRX) { echo ' <span data-bs-toggle="tooltip" title="'.($row->COL_CONTEST_ID!=""?$row->COL_CONTEST_ID:"n/a").'" class="badge text-bg-light">'; printf("%03d", $row->COL_SRX); echo '</span>';} if ($row->COL_SRX_STRING) { echo ' <span data-bs-toggle="tooltip" title="'.($row->COL_CONTEST_ID!=""?$row->COL_CONTEST_ID:"n/a").'" class="badge text-bg-light">' . $row->COL_SRX_STRING . '</span>';} echo '</td>'; break;
case 'Country': echo '<td>' . ucwords(strtolower(($row->COL_COUNTRY)));; break;
case 'IOTA': echo '<td>' . ($row->COL_IOTA); break;
case 'SOTA': echo '<td>' . ($row->COL_SOTA_REF); break;
case 'WWFF': echo '<td>' . ($row->COL_WWFF_REF); break;
case 'POTA': echo '<td>' . ($row->COL_POTA_REF); break;
case 'Grid': echo '<td>'; echo strlen($row->COL_GRIDSQUARE)==0?$row->COL_VUCC_GRIDS:$row->COL_GRIDSQUARE; break;
case 'Distance':echo '<td>' . ($row->COL_DISTANCE ? $row->COL_DISTANCE . '&nbsp;km' : ''); break;
case 'Band': echo '<td>'; if($row->COL_SAT_NAME != null) { echo $row->COL_SAT_NAME; } else { echo strtolower($row->COL_BAND); }; break;
case 'State': echo '<td>' . ($row->COL_STATE); break;
case 'Operator': echo '<td>' . ($row->COL_OPERATOR); break;
case 'Frequency': echo '<td>'; if($row->COL_SAT_NAME != null) { echo '<a href="https://db.satnogs.org/search/?q='.$row->COL_SAT_NAME.'" target="_blank">'; if ($row->COL_FREQ != null) { echo ' <span data-bs-toggle="tooltip" title="'.$ci->frequency->hz_to_mhz($row->COL_FREQ).'">'.$row->COL_SAT_NAME.'</span>'; } else { echo $row->COL_SAT_NAME; } echo '</a></td>'; } else { if ($row->COL_FREQ != null) { echo ' <span data-bs-toggle="tooltip" title="'.$row->COL_BAND.'">'.$ci->frequency->hz_to_mhz($row->COL_FREQ).'</span>'; } else { echo strtolower($row->COL_BAND); } } echo '</td>'; break;
}
echo '</td>';
switch($this->session->userdata('user_column5')==""?'Country':$this->session->userdata('user_column5')) {
case 'Mode': echo '<td>'; echo $row->COL_SUBMODE==null?$row->COL_MODE:$row->COL_SUBMODE; break;
case 'RSTS': echo '<td>' . $row->COL_RST_SENT; if ($row->COL_STX) { echo ' <span data-bs-toggle="tooltip" title="'.($row->COL_CONTEST_ID!=""?$row->COL_CONTEST_ID:"n/a").'" class="badge text-bg-light">'; printf("%03d", $row->COL_STX); echo '</span>';} if ($row->COL_STX_STRING) { echo ' <span data-bs-toggle="tooltip" title="'.($row->COL_CONTEST_ID!=""?$row->COL_CONTEST_ID:"n/a").'" class="badge text-bg-light">' . $row->COL_STX_STRING . '</span>';} echo '</td>'; break;
case 'RSTR': echo '<td>' . $row->COL_RST_RCVD; if ($row->COL_SRX) { echo ' <span data-bs-toggle="tooltip" title="'.($row->COL_CONTEST_ID!=""?$row->COL_CONTEST_ID:"n/a").'" class="badge text-bg-light">'; printf("%03d", $row->COL_SRX); echo '</span>';} if ($row->COL_SRX_STRING) { echo ' <span data-bs-toggle="tooltip" title="'.($row->COL_CONTEST_ID!=""?$row->COL_CONTEST_ID:"n/a").'" class="badge text-bg-light">' . $row->COL_SRX_STRING . '</span>';} echo '</td>'; break;
case 'Country': echo '<td>' . ucwords(strtolower(($row->COL_COUNTRY)));; break;
case 'IOTA': echo '<td>' . ($row->COL_IOTA); break;
case 'SOTA': echo '<td>' . ($row->COL_SOTA_REF); break;
case 'WWFF': echo '<td>' . ($row->COL_WWFF_REF); break;
case 'POTA': echo '<td>' . ($row->COL_POTA_REF); break;
case 'Grid': echo '<td>'; echo strlen($row->COL_GRIDSQUARE)==0?$row->COL_VUCC_GRIDS:$row->COL_GRIDSQUARE; break;
case 'Distance':echo '<td>' . ($row->COL_DISTANCE ? $row->COL_DISTANCE . '&nbsp;km' : ''); break;
case 'Band': echo '<td>'; if($row->COL_SAT_NAME != null) { echo $row->COL_SAT_NAME; } else { echo strtolower($row->COL_BAND); }; break;
case 'State': echo '<td>' . ($row->COL_STATE); break;
case 'Operator': echo '<td>' . ($row->COL_OPERATOR); break;
case 'Frequency': echo '<td>'; if($row->COL_SAT_NAME != null) { echo '<a href="https://db.satnogs.org/search/?q='.$row->COL_SAT_NAME.'" target="_blank">'; if ($row->COL_FREQ != null) { echo ' <span data-bs-toggle="tooltip" title="'.$ci->frequency->hz_to_mhz($row->COL_FREQ).'">'.$row->COL_SAT_NAME.'</span>'; } else { echo $row->COL_SAT_NAME; } echo '</a></td>'; } else { if ($row->COL_FREQ != null) { echo ' <span data-bs-toggle="tooltip" title="'.$row->COL_BAND.'">'.$ci->frequency->hz_to_mhz($row->COL_FREQ).'</span>'; } else { echo strtolower($row->COL_BAND); } } echo '</td>'; break;
}
echo '<td>';
echo_table_col($row, $this->session->userdata('user_column1')==""?'Mode':$this->session->userdata('user_column1'));
echo '</td><td>';
echo_table_col($row, $this->session->userdata('user_column2')==""?'RSTS':$this->session->userdata('user_column2'));
echo '</td><td>';
echo_table_col($row, $this->session->userdata('user_column3')==""?'RSTR':$this->session->userdata('user_column3'));
echo '</td><td>';
echo_table_col($row, $this->session->userdata('user_column4')==""?'Band':$this->session->userdata('user_column4'));
echo '</td><td>';
echo_table_col($row, $this->session->userdata('user_column5')==""?'Country':$this->session->userdata('user_column5'));
echo '</td>';
if(($this->config->item('use_auth')) && ($this->session->userdata('user_type') >= 2)) { ?>

Wyświetl plik

@ -0,0 +1,71 @@
<div class="container">
<br>
<h2>
<?php echo lang('general_word_sstvimages'); ?>
</h2>
<div class="alert alert-info" role="alert">
<?php echo lang('qslcard_string_your_are_using'); ?>
<?php echo $storage_used; ?>
<?php echo lang('sstv_string_disk_space'); ?>
</div>
<?php
if ($this->session->userdata('user_date_format')) {
// If Logged in and session exists
$custom_date_format = $this->session->userdata('user_date_format');
} else {
// Get Default date format from /config/cloudlog.php
$custom_date_format = $this->config->item('qso_date_format');
}
if ($sstvArray !== FALSE && is_array($sstvArray->result())) {
echo '<table style="width:100%" class="sstvtable table table-sm table-bordered table-hover table-striped table-condensed">
<thead>
<tr>
<th style=\'text-align: center\'>' . lang('gen_hamradio_callsign') . '</th>
<th style=\'text-align: center\'>' . lang('gen_hamradio_mode') . '</th>
<th style=\'text-align: center\'>' . lang('general_word_date') . '</th>
<th style=\'text-align: center\'>' . lang('general_word_time') . '</th>
<th style=\'text-align: center\'>' . lang('gen_hamradio_band') . '</th>
<th style=\'text-align: center\'></th>
<th style=\'text-align: center\'></th>
<th style=\'text-align: center\'></th>
</tr>
</thead><tbody>';
foreach ($sstvArray->result() as $sstvImage) {
echo '<tr>';
echo '<td style=\'text-align: center\'>' . str_replace("0", "&Oslash;", $sstvImage->COL_CALL) . '</td>';
echo '<td style=\'text-align: center\'>';
echo $sstvImage->COL_SUBMODE == null ? $sstvImage->COL_MODE : $sstvImage->COL_SUBMODE;
echo '</td>';
echo '<td style=\'text-align: center\'>';
$timestamp = strtotime($sstvImage->COL_TIME_ON);
echo date($custom_date_format, $timestamp);
echo '</td>';
echo '<td style=\'text-align: center\'>';
$timestamp = strtotime($sstvImage->COL_TIME_ON);
echo date('H:i', $timestamp);
echo '</td>';
echo '<td style=\'text-align: center\'>';
if ($sstvImage->COL_SAT_NAME != null) {
echo $sstvImage->COL_SAT_NAME;
} else {
echo strtolower($sstvImage->COL_BAND);
}
;
echo '</td>';
echo '<td style=\'text-align: center\'>' . $sstvImage->filename . '</td>';
echo '<td id="' . $sstvImage->id . '" style=\'text-align: center\'><button onclick="deleteSstv(\'' . $sstvImage->id . '\')" class="btn btn-sm btn-danger">Delete</button></td>';
echo '<td style=\'text-align: center\'><button onclick="viewSstv(\'' . $sstvImage->filename . '\', \'' . $sstvImage->COL_CALL . '\')" class="btn btn-sm btn-success">View</button></td>';
echo '</tr>';
}
echo '</tbody></table>';
} else {
echo '<div class="alert alert-warning" role="alert">No SSTV images Found.</div>';
}
?>
</div>

Wyświetl plik

@ -0,0 +1,37 @@
<div id="sstvCarouselIndicators" class="carousel slide" data-bs-ride="carousel">
<ol class="carousel-indicators" id="sstv-carousel-indicators">
<?php
$i = 0;
foreach ($sstvimages as $image) {
echo '<li data-bs-target="#sstvCarouselIndicators" data-bs-slide-to="' . $i . '"';
if ($i == 0) {
echo 'class="active"';
}
$i++;
echo '></li>';
}
?>
</ol>
<div id="sstv-carousel-inner" class="carousel-inner">
<?php
$i = 1;
foreach ($sstvimages as $image) {
echo '<div class="text-center carousel-item carouselimageid_' . $image->id;
if ($i == 1) {
echo ' active';
}
echo '">';
echo '<img class="img-fluid w-qsl" src="' . base_url() . '/assets/sstvimages/' . $image->filename .'" alt="SSTV picture #'. $i++.'">';
echo '</div>';
}
?>
</div>
<a class="carousel-control-prev" href="#sstvCarouselIndicators" role="button" data-bs-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="visually-hidden">Previous</span>
</a>
<a class="carousel-control-next" href="#sstvCarouselIndicators" role="button" data-bs-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="visually-hidden">Next</span>
</a>
</div>

Wyświetl plik

@ -30,6 +30,22 @@
</li>';
}
?>
<?php
if (($this->config->item('use_auth')) && ($this->session->userdata('user_type') >= 2) && ($row->COL_MODE == 'SSTV')) {
echo '<li ';
if (count($sstvimages) == 0) {
echo 'hidden ';
}
echo 'class="sstvimagetab nav-item">
<a class="nav-link" id="sstvtab" data-bs-toggle="tab" href="#sstvimage" role="tab" aria-controls="home" aria-selected="false">'. lang('general_word_sstvimages') .'</a>
</li>';
echo '<li class="nav-item">
<a class="nav-link" id="sstvmanagementtab" data-bs-toggle="tab" href="#sstvupload" role="tab" aria-controls="home" aria-selected="false">'. lang('general_word_sstv_management') .'</a>
</li>';
}
?>
<?php
if (($this->config->item('use_auth')) && ($this->session->userdata('user_type') >= 2)) {
@ -554,6 +570,45 @@
<?php
if (($this->config->item('use_auth')) && ($this->session->userdata('user_type') >= 2)) {
?>
<div class="tab-pane fade" id="sstvupload" role="tabpanel" aria-labelledby="table-tab">
<?php
if (count($sstvimages) > 0) {
echo '<table style="width:100%" class="sstvtable table table-sm table-bordered table-hover table-striped table-condensed">
<thead>
<tr>
<th style=\'text-align: center\'>SSTV image file</th>
<th style=\'text-align: center\'></th>
<th style=\'text-align: center\'></th>
</tr>
</thead><tbody>';
foreach ($sstvimages as $sstv) {
echo '<tr>';
echo '<td style=\'text-align: center\'>' . $sstv->filename . '</td>';
echo '<td id="'.$sstv->id.'" style=\'text-align: center\'><button onclick="deleteSstv('.$sstv->id.')" class="btn btn-sm btn-danger">Delete</button></td>';
echo '<td style=\'text-align: center\'><button onclick="viewSstv(\''.$sstv->filename.'\')" class="btn btn-sm btn-success">View</button></td>';
echo '</tr>';
}
echo '</tbody></table>';
}
?>
<p><div class="alert alert-warning" role="alert"><span class="badge text-bg-warning"><?php echo lang('general_word_warning'); ?></span><?php echo lang('gen_max_file_upload_size'); ?> <?php echo $max_upload; ?>B.</div></p>
<form class="form" id="sstvinfo" name="sstvinfo" enctype="multipart/form-data">
<div class="row">
<div class="col-md">
<fieldset>
<div class="mb-3">
<label for="sstvimages"><?php echo lang('general_sstv_upload'); ?></label>
<input class="form-control" type="file" id="sstvimages" name="sstvimages[]" accept="image/*" multiple>
</div>
<input type="hidden" class="form-control" id="qsoinputid" name="qsoid" value="<?php echo $row->COL_PRIMARY_KEY; ?>">
<button type="button" onclick="uploadSSTV();" id="button2id" name="button2id" class="btn btn-primary"><?php echo lang('general_sstv_upload_button'); ?></button>
</fieldset>
</div>
</div>
</form>
</div>
<div class="tab-pane fade" id="qslupload" role="tabpanel" aria-labelledby="table-tab">
<?php
if (count($qslimages) > 0) {
@ -631,6 +686,11 @@
<?php $this->load->view('qslcard/qslcarousel', $qslimages); ?>
</div>
<div class="tab-pane fade" id="sstvimage" role="tabpanel" aria-labelledby="table-tab">
<?php $this->load->view('sstv/sstvcarousel', $sstvimages); ?>
</div>
<div class="tab-pane fade" id="eqslcard" role="tabpanel" aria-labelledby="table-tab">
<?php
if ($row->eqsl_image_file != null) {

Wyświetl plik

@ -80,12 +80,11 @@ function echoQrbCalcLink($mygrid, $grid, $vucc) {
<?php
$i = 0;
if(!empty($last_five_qsos) > 0) {
foreach ($last_five_qsos->result() as $row) { ?>
if(!empty($results)) {
foreach ($results->result() as $row) { ?>
<?php echo '<tr class="tr'.($i & 1).'">'; ?>
<?php
// Get Date format
if($this->session->userdata('user_date_format')) {
// If Logged in and session exists
@ -114,6 +113,9 @@ function echoQrbCalcLink($mygrid, $grid, $vucc) {
</tr>
<?php $i++; } } ?>
</table>
<div class="pagination-links">
<?php echo $this->pagination->create_links(); ?>
</div>
</div>
</div>

Wyświetl plik

@ -27,7 +27,7 @@ function reset_contest_session() {
setExchangetype("None");
$("#contestname").val("Other").change();
$(".contest_qso_table_contents").empty();
$('#copyexchangetodok').prop('checked', false);
$('#copyexchangeto').val("None");
$.ajax({
url: base_url + 'index.php/contesting/deleteSession',
@ -39,7 +39,7 @@ function reset_contest_session() {
}
// Storing the contestid in contest session
$('#contestname').change(function () {
$('#contestname, #copyexchangeto').change(function () {
var formdata = new FormData(document.getElementById("qso_input"));
setSession(formdata);
});
@ -53,6 +53,7 @@ $('#exchangetype').change(function () {
});
function setSession(formdata) {
formdata.set('copyexchangeto',$("#copyexchangeto option:selected").index());
$.ajax({
url: base_url + 'index.php/contesting/setSession',
type: 'post',
@ -77,27 +78,20 @@ if (!manual) {
}
// We don't want spaces to be written in callsign
$(function () {
$('#callsign').on('keypress', function (e) {
if (e.which == 32) {
return false;
}
});
});
// We don't want spaces to be written in exchange
// We don't want spaces to be written in time :)
$(function () {
$('#exch_rcvd').on('keypress', function (e) {
$('#callsign, #exch_rcvd, #start_time').on('keypress', function (e) {
if (e.which == 32) {
return false;
}
});
});
// We don't want spaces to be written in serial
// We don't want anything but numbers to be written in serial
$(function () {
$('#exch_serial_r').on('keypress', function (e) {
if (e.which == 32) {
$('#exch_serial_r, #exch_serial_s').on('keypress', function (e) {
if (e.key.charCodeAt(0) < 48 || e.key.charCodeAt(0) > 57) {
return false;
}
});
@ -129,6 +123,12 @@ document.onkeyup = function (e) {
// Space to jump to either callsign or the various exchanges
} else if (e.which == 32) {
var exchangetype = $("#exchangetype").val();
if (manual && $(document.activeElement).attr("id") == "start_time") {
$("#callsign").focus();
return false;
}
if (exchangetype == 'Exchange') {
if ($(document.activeElement).attr("id") == "callsign") {
$("#exch_rcvd").focus();
@ -468,7 +468,11 @@ function logQso() {
$('#exch_rcvd').val("");
$('#exch_gridsquare_r').val("");
$('#exch_serial_r').val("");
$("#callsign").focus();
if (manual) {
$("#start_time").focus().select();
} else {
$("#callsign").focus();
}
setSession(formdata);
// try setting session data
@ -491,8 +495,8 @@ async function getSession() {
async function restoreContestSession(data) {
if (data) {
if (data.copytodok == "1") {
$('#copyexchangetodok').prop('checked', true);
if (data.copytodok != "") {
$('#copyexchangeto option')[data.copytodok].selected = true;
}
if (data.contestid != "") {