New feature: QSL card image upload

这个提交包含在:
Andreas 2020-10-28 23:20:03 +01:00
父节点 e8b660b775
当前提交 6b1f30cb0d
共有 10 个文件被更改,包括 646 次插入248 次删除

查看文件

@ -21,7 +21,7 @@ $config['migration_enabled'] = TRUE;
| be upgraded / downgraded to.
|
*/
$config['migration_version'] = 52;
$config['migration_version'] = 54;
/*
|--------------------------------------------------------------------------

查看文件

@ -411,6 +411,9 @@ class Logbook extends CI_Controller {
$data['measurement_base'] = $this->session->userdata('user_measurement_base');
}
$this->load->model('Qsl_model');
$data['qslimages'] = $this->Qsl_model->getQslForQsoId($id);
$this->load->view('interface_assets/mini_header', $data);
$this->load->view('view_log/qso');
$this->load->view('interface_assets/footer');

查看文件

@ -0,0 +1,104 @@
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/*
Controller for QSL Cards
*/
class Qsl extends CI_Controller {
function __construct() {
parent::__construct();
$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() {
// Render Page
$data['page_title'] = "QSL Cards";
$this->load->model('qsl_model');
$data['qslarray'] = $this->qsl_model->getQsoWithQslList();
$this->load->view('interface_assets/header', $data);
$this->load->view('qslcard/index');
$this->load->view('interface_assets/footer');
}
public function upload() {
// Render Page
$data['page_title'] = "Upload QSL Cards";
$this->load->view('interface_assets/header', $data);
$this->load->view('qslcard/upload');
$this->load->view('interface_assets/footer');
}
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('Qsl_model');
$path = './assets/qslcard/';
$file = $this->Qsl_model->getFilename($id)->row();
$filename = $file->filename;
unlink($path.$filename);
$this->Qsl_model->deleteQsl($id);
}
public function uploadqsl() {
$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/qslcard')) {
mkdir('./assets/qslcard', 0755, true);
}
$qsoid = $this->input->post('qsoid');
if (isset($_FILES['qslcardfront']) && $_FILES['qslcardfront']['name'] != "" && $_FILES['qslcardfront']['error'] == 0)
{
$result = $this->uploadQslCard($qsoid);
}
// Set Page Title
$data['page_title'] = "QSL Upload";
// Load Views
$this->load->view('interface_assets/header', $data);
$this->load->view('qslcard/upload_done', $result);
$this->load->view('interface_assets/footer');
}
function uploadQslCard($qsoid) {
$config['upload_path'] = './assets/qslcard';
$config['allowed_types'] = 'jpg|gif|png';
$array = explode(".", $_FILES['qslcardfront']['name']);
$ext = end($array);
$config['file_name'] = $qsoid . '_' . time() . '.' . $ext;
$this->load->library('upload', $config);
if ( ! $this->upload->do_upload('qslcardfront')) {
// Upload of QSL card Failed
$error = array('error' => $this->upload->display_errors());
return $error;
}
else {
// Load database queries
$this->load->model('Qsl_model');
//Upload of QSL card was successful
$data = $this->upload->data();
// Now we need to insert info into database about file
$filename = $data['file_name'];
$this->Qsl_model->saveQsl($qsoid, $filename);
return 'Success';
}
}
}

查看文件

@ -0,0 +1,19 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Migration_add_qsl_images extends CI_Migration {
public function up()
{
// create qsl images table
$this->db->query("CREATE TABLE `qsl_images`
(`id` integer NOT NULL auto_increment, `qsoid` int, `filename` text, primary key (id))
ENGINE=myisam DEFAULT CHARSET=utf8;");
}
public function down()
{
$this->db->query("");
}
}

查看文件

@ -0,0 +1,61 @@
<?php
class Qsl_model extends CI_Model {
function __construct()
{
// Call the Model constructor
parent::__construct();
}
function getQsoWithQslList() {
$CI =& get_instance();
$CI->load->model('Stations');
$station_id = $CI->Stations->find_active();
$this->db->select('*');
$this->db->from($this->config->item('table_name'));
$this->db->join('qsl_images', 'qsl_images.qsoid = ' . $this->config->item('table_name') . '.col_primary_key');
$this->db->where('station_id', $station_id);
return $this->db->get();
}
function getQslForQsoId($id) {
// Clean ID
$clean_id = $this->security->xss_clean($id);
$this->db->select('*');
$this->db->from('qsl_images');
$this->db->where('qsoid', $clean_id);
return $this->db->get()->result();
}
function saveQsl($qsoid, $filename) {
$data = array(
'qsoid' => $qsoid,
'filename' => $filename
);
$this->db->insert('qsl_images', $data);
}
function deleteQsl($id) {
// Clean ID
$clean_id = $this->security->xss_clean($id);
// Delete Mode
$this->db->delete('qsl_images', array('id' => $clean_id));
}
function getFilename($id) {
// Clean ID
$clean_id = $this->security->xss_clean($id);
$this->db->select('filename');
$this->db->from('qsl_images');
$this->db->where('id', $clean_id);
return $this->db->get();
}
}

查看文件

@ -2265,5 +2265,63 @@ $(document).ready(function(){
</script>
<?php } ?>
<?php if ($this->uri->segment(1) == "qsl") { ?>
<script>
$('.qsltable').DataTable({
"pageLength": 25,
responsive: false,
ordering: false,
"scrollY": "500px",
"scrollCollapse": true,
"paging": false,
"scrollX": true
});
function viewQsl(picture, callsign) {
var baseURL= "<?php echo base_url();?>";
var $textAndPic = $('<div></div>');
$textAndPic.append('<img class="img-fluid" style="height:auto;width:auto;"src="'+baseURL+'/assets/qslcard/'+picture+'" />');
BootstrapDialog.show({
title: 'QSL Card for ' + callsign,
size: BootstrapDialog.SIZE_WIDE,
message: $textAndPic,
buttons: [{
label: 'Close',
action: function(dialogRef){
dialogRef.close();
}
}]
});
}
</script>
<?php } ?>
<script>
function deleteQsl(id) {
BootstrapDialog.confirm({
title: 'DANGER',
message: 'Warning! Are you sure you want to delete this QSL card?' ,
type: BootstrapDialog.TYPE_DANGER,
closable: true,
draggable: true,
btnOKClass: 'btn-danger',
callback: function(result) {
if(result) {
var baseURL= "<?php echo base_url();?>";
$.ajax({
url: baseURL + 'index.php/qsl/delete',
type: 'post',
data: {'id': id
},
success: function(data) {
$("#" + id).parent("tr:first").remove(); // removes mode from table
}
});
}
}
});
}
</script>
</body>
</html>

查看文件

@ -67,6 +67,8 @@
<a class="dropdown-item" href="<?php echo site_url('qso?manual=0');?>" title="Log Live QSOs">Live QSO</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('qso?manual=1');?>" title="Log QSO made in the past">Post QSO</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('qsl');?>" title="QSL"> View QSL</a>
</div>
</li>

查看文件

@ -0,0 +1,28 @@
<div class="container">
<h2><?php echo $page_title; ?></h2>
<?php
if (is_array($qslarray->result())) {
echo '<table style="width:100%" class="qsltable table table-sm table-bordered table-hover table-striped table-condensed">
<thead>
<tr>
<th style=\'text-align: center\'>Callsign</th>
<th style=\'text-align: center\'>QSL</th>
<th style=\'text-align: center\'></th>
<th style=\'text-align: center\'></th>
</tr>
</thead><tbody>';
foreach ($qslarray->result() as $qsl) {
echo '<tr>';
echo '<td style=\'text-align: center\'>' . $qsl->COL_CALL . '</td>';
echo '<td style=\'text-align: center\'>' . $qsl->filename . '</td>';
echo '<td id="'.$qsl->id.'" style=\'text-align: center\'><button onclick="deleteQsl(\''.$qsl->id.'\')" class="btn btn-sm btn-danger">Delete</button></td>';
echo '<td style=\'text-align: center\'><button onclick="viewQsl(\''.$qsl->filename.'\', \''. $qsl->COL_CALL . '\')" class="btn btn-sm btn-success">View</button></td>';
echo '</tr>';
}
echo '</tbody></table>';
}
?>
</div>

查看文件

@ -0,0 +1,15 @@
<div class="container">
<h2><?php echo $page_title; ?></h2>
<div class="card-body">
<?php if(isset($error)) { ?>
<div class="alert alert-danger" role="alert">
<?php echo $error; ?>
</div>
<?php } else { ?>
<div class="alert alert-success" role="alert">
QSLcard has been uploaded!
</div>
<?php } ?>
</div>
</div>

查看文件

@ -1,274 +1,382 @@
<?php if ($query->num_rows() > 0) { foreach ($query->result() as $row) { ?>
<div class="container-fluid">
<div class="container-fluid">
<div class="row">
<div class="col">
<h3>QSO Details</h3>
</div>
</div>
<ul class="nav nav-tabs" id="myTab" role="tablist">
<li class="nav-item">
<a class="nav-link active" id="table-tab" data-toggle="tab" href="#qsodetails" role="tab" aria-controls="table" aria-selected="true">QSO Details</a>
</li>
<?php
if (($this->config->item('use_auth')) && ($this->session->userdata('user_type') >= 2)) {
<div class="row">
<div class="col">
<table width="100%">
<tr>
<?php
if (count($qslimages) > 0) {
echo '<li class="nav-item">
<a class="nav-link" id="map-tab" data-toggle="tab" href="#qslcard" role="tab" aria-controls="home" aria-selected="false">QSL card</a>
</li>';
}
// Get Date format
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');
}
echo '<li class="nav-item">
<a class="nav-link" id="map-tab" data-toggle="tab" href="#qslupload" role="tab" aria-controls="home" aria-selected="false">QSL card management</a>
</li>';
?>
<td>Date/Time:</td>
<?php if(($this->config->item('use_auth') && ($this->session->userdata('user_type') >= 2)) || $this->config->item('use_auth') === FALSE || ($this->config->item('show_time'))) { ?>
<td><?php $timestamp = strtotime($row->COL_TIME_ON); echo date($custom_date_format, $timestamp); $timestamp = strtotime($row->COL_TIME_ON); echo " at ".date('H:i', $timestamp); ?></td>
<?php } else { ?>
<td><?php $timestamp = strtotime($row->COL_TIME_ON); echo date($custom_date_format, $timestamp); ?></td>
<?php } ?>
</tr>
<tr>
<td>Callsign:</td>
<td><b><?php echo str_replace("0","&Oslash;",strtoupper($row->COL_CALL)); ?></b></td>
</tr>
<tr>
<td>Band:</td>
<td><?php echo $row->COL_BAND; ?></td>
</tr>
<?php if($this->config->item('display_freq') == true) { ?>
<tr>
<td>Freq:</td>
<td><?php echo frequency_display_string($row->COL_FREQ); ?></td>
</tr>
<?php if($row->COL_FREQ_RX != 0) { ?>
<tr>
<td>Freq (RX):</td>
<td><?php echo frequency_display_string($row->COL_FREQ_RX); ?></td>
</tr>
<?php }} ?>
<tr>
<td>Mode:</td>
<td><?php echo $row->COL_SUBMODE==null?$row->COL_MODE:$row->COL_SUBMODE; ?></td>
</tr>
<tr>
<td>RST Sent:</td>
<td><?php echo $row->COL_RST_SENT; ?> <?php if ($row->COL_STX) { ?>(<?php echo $row->COL_STX;?>)<?php } ?> <?php if ($row->COL_STX_STRING) { ?>(<?php echo $row->COL_STX_STRING;?>)<?php } ?></td>
</tr>
<tr>
<td>RST Recv:</td>
<td><?php echo $row->COL_RST_RCVD; ?> <?php if ($row->COL_SRX) { ?>(<?php echo $row->COL_SRX;?>)<?php } ?> <?php if ($row->COL_SRX_STRING) { ?>(<?php echo $row->COL_SRX_STRING;?>)<?php } ?></td>
</tr>
<?php if($row->COL_GRIDSQUARE != null) { ?>
<tr>
<td>Gridsquare:</td>
<td><?php echo $row->COL_GRIDSQUARE; ?></td>
</tr>
<?php } ?>
<?php if($row->COL_GRIDSQUARE != null) { ?>
<!-- Total Distance Between the Station Profile Gridsquare and Logged Square -->
<tr>
<td>Total Distance</td>
<td>
<?php
// Load the QRA Library
$CI =& get_instance();
$CI->load->library('qra');
}
?>
// Cacluate Distance
echo $CI->qra->distance($row->station_gridsquare, $row->COL_GRIDSQUARE, $measurement_base);
</ul>
switch ($measurement_base) {
case 'M':
echo "mi";
break;
case 'K':
echo "km";
break;
case 'N':
echo "nmi";
break;
}
?>
</td>
</tr>
<?php } ?>
<div class="tab-content" id="myTabContent">
<div class="tab-pane active" id="qsodetails" role="tabpanel" aria-labelledby="home-tab">
<?php if($row->COL_VUCC_GRIDS != null) { ?>
<tr>
<td>Gridsquare (Multi):</td>
<td><?php echo $row->COL_VUCC_GRIDS; ?></td>
</tr>
<?php } ?>
<div class="row">
<div class="col">
<?php if($row->COL_STATE != null) { ?>
<tr>
<td>USA State:</td>
<td><?php echo $row->COL_STATE; ?></td>
</tr>
<?php } ?>
<?php if($row->COL_NAME != null) { ?>
<tr>
<td>Name:</td>
<td><?php echo $row->COL_NAME; ?></td>
</tr>
<?php } ?>
<?php if(($this->config->item('use_auth') && ($this->session->userdata('user_type') >= 2)) || $this->config->item('use_auth') === FALSE) { ?>
<?php if($row->COL_COMMENT != null) { ?>
<tr>
<td>Comment:</td>
<td><?php echo $row->COL_COMMENT; ?></td>
</tr>
<?php } ?>
<?php } ?>
<?php if($row->COL_SAT_NAME != null) { ?>
<tr>
<td>Sat Name:</td>
<td><?php echo $row->COL_SAT_NAME; ?></td>
</tr>
<?php } ?>
<?php if($row->COL_SAT_MODE != null) { ?>
<tr>
<td>Sat Mode:</td>
<td><?php echo $row->COL_SAT_MODE; ?></td>
</tr>
<?php } ?>
<?php if($row->COL_COUNTRY != null) { ?>
<tr>
<td>Country:</td>
<td><?php echo ucwords(strtolower(($row->COL_COUNTRY))); ?></td>
</tr>
<?php } ?>
<table width="100%">
<tr>
<?php
<?php if($row->COL_IOTA != null) { ?>
<tr>
<td>IOTA Ref:</td>
<td><?php echo $row->COL_IOTA; ?></td>
</tr>
<?php } ?>
// Get Date format
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');
}
<?php if($row->COL_SOTA_REF != null) { ?>
<tr>
<td>SOTA Ref:</td>
<td><?php echo $row->COL_SOTA_REF; ?></td>
</tr>
<?php } ?>
<?php if($row->COL_DARC_DOK != null) { ?>
<tr>
<td>DOK:</td>
<td><a href="https://www.darc.de/<?php echo $row->COL_DARC_DOK; ?>" target="_new"><?php echo $row->COL_DARC_DOK; ?></a></td>
</tr>
<?php } ?>
?>
</table>
<?php if($row->COL_QSL_SENT == "Y" || $row->COL_QSL_RCVD == "Y") { ?>
<h3>QSL Info:</h3>
<?php if($row->COL_QSL_SENT == "Y" && $row->COL_QSL_SENT_VIA == "B") { ?>
<p>QSL Card has been sent via the bureau</p>
<?php } ?>
<?php if($row->COL_QSL_SENT == "Y" && $row->COL_QSL_SENT_VIA == "D") { ?>
<p>QSL Card has been sent direct</p>
<?php } ?>
<?php if($row->COL_QSL_RCVD == "Y" && $row->COL_QSL_RCVD_VIA == "B") { ?>
<p>QSL Card has been received via the bureau</p>
<?php } ?>
<?php if($row->COL_QSL_RCVD == "Y" && $row->COL_QSL_RCVD_VIA == "D") { ?>
<p>QSL Card has been received direct</p>
<?php } ?>
<?php } ?>
<?php if($row->COL_LOTW_QSL_RCVD == "Y") { ?>
<h3>LoTW:</h3>
<p>This QSO is confirmed on Lotw</p>
<?php } ?>
<td>Date/Time:</td>
<?php if(($this->config->item('use_auth') && ($this->session->userdata('user_type') >= 2)) || $this->config->item('use_auth') === FALSE || ($this->config->item('show_time'))) { ?>
<td><?php $timestamp = strtotime($row->COL_TIME_ON); echo date($custom_date_format, $timestamp); $timestamp = strtotime($row->COL_TIME_ON); echo " at ".date('H:i', $timestamp); ?></td>
<?php } else { ?>
<td><?php $timestamp = strtotime($row->COL_TIME_ON); echo date($custom_date_format, $timestamp); ?></td>
<?php } ?>
</tr>
<h2 style="font-size: 22px;">Station Information</h2>
<tr>
<td>Callsign:</td>
<td><b><?php echo str_replace("0","&Oslash;",strtoupper($row->COL_CALL)); ?></b></td>
</tr>
<table width="100%">
<tr>
<td>Station Callsign</td>
<td><?php echo $row->station_callsign; ?></td>
</tr>
<tr>
<td>Station Gridsquare</td>
<td><?php echo $row->station_gridsquare; ?></td>
</tr>
<tr>
<td>Band:</td>
<td><?php echo $row->COL_BAND; ?></td>
</tr>
<?php if($row->station_city) { ?>
<tr>
<td>Station City:</td>
<td><?php echo $row->station_city; ?></td>
</tr>
<?php } ?>
<?php if($this->config->item('display_freq') == true) { ?>
<tr>
<td>Freq:</td>
<td><?php echo frequency_display_string($row->COL_FREQ); ?></td>
</tr>
<?php if($row->COL_FREQ_RX != 0) { ?>
<tr>
<td>Freq (RX):</td>
<td><?php echo frequency_display_string($row->COL_FREQ_RX); ?></td>
</tr>
<?php }} ?>
<?php if($row->station_country) { ?>
<tr>
<td>Station Country:</td>
<td><?php echo ucwords(strtolower(($row->station_country))); ?></td>
</tr>
<?php } ?>
<tr>
<td>Mode:</td>
<td><?php echo $row->COL_SUBMODE==null?$row->COL_MODE:$row->COL_SUBMODE; ?></td>
</tr>
<?php if($row->COL_OPERATOR) { ?>
<tr>
<td>Station Operator</td>
<td><?php echo $row->COL_OPERATOR; ?></td>
</tr>
<?php } ?>
<tr>
<td>RST Sent:</td>
<td><?php echo $row->COL_RST_SENT; ?> <?php if ($row->COL_STX) { ?>(<?php echo $row->COL_STX;?>)<?php } ?> <?php if ($row->COL_STX_STRING) { ?>(<?php echo $row->COL_STX_STRING;?>)<?php } ?></td>
</tr>
<?php if($row->COL_TX_PWR) { ?>
<tr>
<td>Station Transmit Power</td>
<td><?php echo $row->COL_TX_PWR; ?>w</td>
</tr>
<?php } ?>
</table>
</div>
<div class="col">
<div id="mapqso" style="width: 340px; height: 250px"></div>
<?php if(($this->config->item('use_auth') && ($this->session->userdata('user_type') >= 2)) || $this->config->item('use_auth') === FALSE) { ?>
<br>
<p class="editButton"><a class="btn btn-success" href="<?php echo site_url('qso/edit'); ?>/<?php echo $row->COL_PRIMARY_KEY; ?>" href="javascript:;"><i class="fas fa-edit"></i> Edit QSO</a></p>
<?php } ?>
<tr>
<td>RST Recv:</td>
<td><?php echo $row->COL_RST_RCVD; ?> <?php if ($row->COL_SRX) { ?>(<?php echo $row->COL_SRX;?>)<?php } ?> <?php if ($row->COL_SRX_STRING) { ?>(<?php echo $row->COL_SRX_STRING;?>)<?php } ?></td>
</tr>
<?php
<?php if($row->COL_GRIDSQUARE != null) { ?>
<tr>
<td>Gridsquare:</td>
<td><?php echo $row->COL_GRIDSQUARE; ?></td>
</tr>
<?php } ?>
if($row->COL_SAT_NAME != null) {
$twitter_band_sat = $row->COL_SAT_NAME;
$hashtags = "#hamr #cloudlog #amsat";
} else {
$twitter_band_sat = $row->COL_BAND;
$hashtags = "#hamr #cloudlog";
}
<?php if($row->COL_GRIDSQUARE != null) { ?>
<!-- Total Distance Between the Station Profile Gridsquare and Logged Square -->
<tr>
<td>Total Distance</td>
<td>
<?php
// Load the QRA Library
$CI =& get_instance();
$CI->load->library('qra');
$twitter_string = urlencode("Just worked ".$row->COL_CALL." in ".ucwords(strtolower(($row->COL_COUNTRY)))." (Gridsquare: ".$row->COL_GRIDSQUARE.") on ".$twitter_band_sat." using ".$row->COL_MODE." ".$hashtags);
?>
// Cacluate Distance
echo $CI->qra->distance($row->station_gridsquare, $row->COL_GRIDSQUARE, $measurement_base);
<div class="text-right"><a class="btn btn-sm btn-primary twitter-share-button" target="_blank" href="https://twitter.com/intent/tweet?text=<?php echo $twitter_string; ?>"><i class="fab fa-twitter"></i> Tweet</a></div>
switch ($measurement_base) {
case 'M':
echo "mi";
break;
case 'K':
echo "km";
break;
case 'N':
echo "nmi";
break;
}
?>
</td>
</tr>
<?php } ?>
</div>
</div>
<?php if($row->COL_VUCC_GRIDS != null) { ?>
<tr>
<td>Gridsquare (Multi):</td>
<td><?php echo $row->COL_VUCC_GRIDS; ?></td>
</tr>
<?php } ?>
<?php if($row->COL_STATE != null) { ?>
<tr>
<td>USA State:</td>
<td><?php echo $row->COL_STATE; ?></td>
</tr>
<?php } ?>
<?php if($row->COL_NAME != null) { ?>
<tr>
<td>Name:</td>
<td><?php echo $row->COL_NAME; ?></td>
</tr>
<?php } ?>
<?php if(($this->config->item('use_auth') && ($this->session->userdata('user_type') >= 2)) || $this->config->item('use_auth') === FALSE) { ?>
<?php if($row->COL_COMMENT != null) { ?>
<tr>
<td>Comment:</td>
<td><?php echo $row->COL_COMMENT; ?></td>
</tr>
<?php } ?>
<?php } ?>
<?php if($row->COL_SAT_NAME != null) { ?>
<tr>
<td>Sat Name:</td>
<td><?php echo $row->COL_SAT_NAME; ?></td>
</tr>
<?php } ?>
<?php if($row->COL_SAT_MODE != null) { ?>
<tr>
<td>Sat Mode:</td>
<td><?php echo $row->COL_SAT_MODE; ?></td>
</tr>
<?php } ?>
<?php if($row->COL_COUNTRY != null) { ?>
<tr>
<td>Country:</td>
<td><?php echo ucwords(strtolower(($row->COL_COUNTRY))); ?></td>
</tr>
<?php } ?>
<?php if($row->COL_IOTA != null) { ?>
<tr>
<td>IOTA Ref:</td>
<td><?php echo $row->COL_IOTA; ?></td>
</tr>
<?php } ?>
<?php if($row->COL_SOTA_REF != null) { ?>
<tr>
<td>SOTA Ref:</td>
<td><?php echo $row->COL_SOTA_REF; ?></td>
</tr>
<?php } ?>
<?php if($row->COL_DARC_DOK != null) { ?>
<tr>
<td>DOK:</td>
<td><a href="https://www.darc.de/<?php echo $row->COL_DARC_DOK; ?>" target="_new"><?php echo $row->COL_DARC_DOK; ?></a></td>
</tr>
<?php } ?>
</table>
<?php if($row->COL_QSL_SENT == "Y" || $row->COL_QSL_RCVD == "Y") { ?>
<h3>QSL Info:</h3>
<?php if($row->COL_QSL_SENT == "Y" && $row->COL_QSL_SENT_VIA == "B") { ?>
<p>QSL Card has been sent via the bureau</p>
<?php } ?>
<?php if($row->COL_QSL_SENT == "Y" && $row->COL_QSL_SENT_VIA == "D") { ?>
<p>QSL Card has been sent direct</p>
<?php } ?>
<?php if($row->COL_QSL_RCVD == "Y" && $row->COL_QSL_RCVD_VIA == "B") { ?>
<p>QSL Card has been received via the bureau</p>
<?php } ?>
<?php if($row->COL_QSL_RCVD == "Y" && $row->COL_QSL_RCVD_VIA == "D") { ?>
<p>QSL Card has been received direct</p>
<?php } ?>
<?php } ?>
<?php if($row->COL_LOTW_QSL_RCVD == "Y") { ?>
<h3>LoTW:</h3>
<p>This QSO is confirmed on Lotw</p>
<?php } ?>
<h2 style="font-size: 22px;">Station Information</h2>
<table width="100%">
<tr>
<td>Station Callsign</td>
<td><?php echo $row->station_callsign; ?></td>
</tr>
<tr>
<td>Station Gridsquare</td>
<td><?php echo $row->station_gridsquare; ?></td>
</tr>
<?php if($row->station_city) { ?>
<tr>
<td>Station City:</td>
<td><?php echo $row->station_city; ?></td>
</tr>
<?php } ?>
<?php if($row->station_country) { ?>
<tr>
<td>Station Country:</td>
<td><?php echo ucwords(strtolower(($row->station_country))); ?></td>
</tr>
<?php } ?>
<?php if($row->COL_OPERATOR) { ?>
<tr>
<td>Station Operator</td>
<td><?php echo $row->COL_OPERATOR; ?></td>
</tr>
<?php } ?>
<?php if($row->COL_TX_PWR) { ?>
<tr>
<td>Station Transmit Power</td>
<td><?php echo $row->COL_TX_PWR; ?>w</td>
</tr>
<?php } ?>
</table>
</div>
<div class="col">
<div id="mapqso" style="width: 340px; height: 250px"></div>
<?php if(($this->config->item('use_auth') && ($this->session->userdata('user_type') >= 2)) || $this->config->item('use_auth') === FALSE) { ?>
<br>
<p class="editButton"><a class="btn btn-success" href="<?php echo site_url('qso/edit'); ?>/<?php echo $row->COL_PRIMARY_KEY; ?>" href="javascript:;"><i class="fas fa-edit"></i> Edit QSO</a></p>
<?php } ?>
<?php
if($row->COL_SAT_NAME != null) {
$twitter_band_sat = $row->COL_SAT_NAME;
$hashtags = "#hamr #cloudlog #amsat";
} else {
$twitter_band_sat = $row->COL_BAND;
$hashtags = "#hamr #cloudlog";
}
$twitter_string = urlencode("Just worked ".$row->COL_CALL." in ".ucwords(strtolower(($row->COL_COUNTRY)))." (Gridsquare: ".$row->COL_GRIDSQUARE.") on ".$twitter_band_sat." using ".$row->COL_MODE." ".$hashtags);
?>
<div class="text-right"><a class="btn btn-sm btn-primary twitter-share-button" target="_blank" href="https://twitter.com/intent/tweet?text=<?php echo $twitter_string; ?>"><i class="fab fa-twitter"></i> Tweet</a></div>
</div>
</div>
</div>
<?php
if (($this->config->item('use_auth')) && ($this->session->userdata('user_type') >= 2)) {
?>
<div class="tab-pane fade" id="qslupload" role="tabpanel" aria-labelledby="table-tab">
<?php
if (count($qslimages) > 0) {
echo '<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>
</tr>
</thead><tbody>';
foreach ($qslimages as $qsl) {
echo '<tr>';
echo '<td style=\'text-align: center\'>' . $qsl->filename . '</td>';
echo '<td id="'.$qsl->id.'" style=\'text-align: center\'><button onclick="deleteQsl(\''.$qsl->id.'\')" class="btn btn-sm btn-danger">Delete</button></td>';
echo '</tr>';
}
echo '</tbody></table>';
}
?>
<form class="form" id="fileinfo" method="post" enctype="multipart/form-data" action="<?php echo site_url('qsl/uploadqsl');?>">
<fieldset>
<div class="form-group">
<label for="qslcardfront">Upload QSL card image</label>
<input class="form-control-file" type="file" id="qslcardfront" name="qslcardfront" accept="image/*" capture="environment">
</div>
<input type="hidden" class="form-control" id="qsoinputid" name="qsoid" value="<?php echo $row->COL_PRIMARY_KEY; ?>">
<button type="submit" id="button1id" name="button1id" class="btn btn-primary">Upload QSL card image</button>
</fieldset>
</form>
</div>
<div class="tab-pane fade" id="qslcard" role="tabpanel" aria-labelledby="table-tab">
<div id="carouselExampleIndicators" class="carousel slide" data-ride="carousel">
<ol class="carousel-indicators">
<?php
$i = 0;
foreach ($qslimages as $image) {
echo '<li data-target="#carouselExampleIndicators" data-slide-to="' . $i . '"';
if ($i == 0) {
echo 'class="active"';
}
$i++;
echo '></li>';
}
?>
</ol>
<div class="carousel-inner">
<?php
$i = 1;
foreach ($qslimages as $image) {
echo '<div class="carousel-item';
if ($i == 1) {
echo ' active';
}
echo '">';
echo '<img class="d-block w-100" src="' . base_url() . '/assets/qslcard/' . $image->filename .'" alt="QSL picture #'. $i++.'">';
echo '</div>';
}
?>
</div>
<a class="carousel-control-prev" href="#carouselExampleIndicators" role="button" data-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="sr-only">Previous</span>
</a>
<a class="carousel-control-next" href="#carouselExampleIndicators" role="button" data-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="sr-only">Next</span>
</a>
</div>
</div>
<?php
}
?>
</div>
</div>
<?php