kopia lustrzana https://github.com/magicbug/Cloudlog
commit
d2bb80f3c8
|
@ -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
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"cSpell.words": [
|
||||
"callsign",
|
||||
"cloudlog",
|
||||
"hamradio",
|
||||
"qslcard",
|
||||
"sstv",
|
||||
"sstvimages",
|
||||
"sstvtable",
|
||||
"SUBMODE",
|
||||
"userdata"
|
||||
]
|
||||
}
|
|
@ -22,7 +22,7 @@ $config['migration_enabled'] = TRUE;
|
|||
|
|
||||
*/
|
||||
|
||||
$config['migration_version'] = 174;
|
||||
$config['migration_version'] = 176;
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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');
|
||||
|
|
|
@ -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';
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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";
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -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'] = '«';
|
||||
$config['prev_tag_open'] = '<li class="page-item">';
|
||||
$config['prev_tag_close'] = '</li>';
|
||||
$config['next_link'] = '»';
|
||||
$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;
|
||||
|
|
|
@ -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';
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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!';
|
||||
|
||||
|
||||
|
|
|
@ -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';
|
||||
|
||||
|
|
|
@ -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';
|
|
@ -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 字段!';
|
||||
|
||||
|
||||
|
|
|
@ -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';
|
|
@ -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!';
|
||||
|
||||
|
||||
|
|
|
@ -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';
|
|
@ -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!';
|
||||
|
||||
|
||||
|
|
|
@ -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';
|
||||
|
||||
|
|
|
@ -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';
|
|
@ -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!';
|
||||
|
||||
|
||||
|
|
|
@ -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';
|
||||
|
|
|
@ -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';
|
||||
|
||||
|
|
|
@ -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';
|
|
@ -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!';
|
||||
|
||||
|
||||
|
|
|
@ -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';
|
|
@ -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 !";
|
||||
|
||||
|
||||
|
|
|
@ -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';
|
||||
|
||||
|
|
|
@ -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';
|
|
@ -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!';
|
||||
|
||||
|
||||
|
|
|
@ -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';
|
|
@ -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!';
|
||||
|
||||
|
||||
|
|
|
@ -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';
|
||||
|
||||
|
|
|
@ -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';
|
|
@ -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!';
|
||||
|
||||
|
||||
|
|
|
@ -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';
|
||||
|
||||
|
|
|
@ -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';
|
|
@ -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!';
|
||||
|
||||
|
||||
|
|
|
@ -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';
|
||||
|
||||
|
|
|
@ -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';
|
|
@ -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 базы данных!';
|
||||
|
||||
|
||||
|
|
|
@ -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';
|
|
@ -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!';
|
||||
|
||||
|
||||
|
|
|
@ -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';
|
|
@ -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!';
|
||||
|
||||
|
||||
|
|
|
@ -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';
|
|
@ -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!';
|
||||
|
||||
|
||||
|
|
|
@ -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';
|
||||
|
||||
|
|
|
@ -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';
|
|
@ -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";
|
||||
}
|
||||
}
|
|
@ -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'));
|
||||
}
|
||||
}
|
|
@ -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');
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
@ -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>
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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">
|
||||
|
|
|
@ -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 . ' 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 . ' 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 . ' 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 . ' 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 . ' 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 . ' 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)) { ?>
|
||||
|
||||
|
|
|
@ -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", "Ø", $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>
|
|
@ -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>
|
|
@ -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) {
|
||||
|
|
|
@ -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>
|
||||
|
||||
|
|
|
@ -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 != "") {
|
||||
|
|
Ładowanie…
Reference in New Issue