kopia lustrzana https://github.com/magicbug/Cloudlog
Porównaj commity
32 Commity
c71847c423
...
19a95cecf5
Autor | SHA1 | Data |
---|---|---|
Patrick Burns | 19a95cecf5 | |
Peter Goodhall | fd3ba41d26 | |
Peter Goodhall | 5b70a1b61b | |
Peter Goodhall | d7c6dbd29f | |
Peter Goodhall | 04ba3e733b | |
Peter Goodhall | f297618cb0 | |
Peter Goodhall | f46b550917 | |
Peter Goodhall | dc5dd22766 | |
Peter Goodhall | c7718d675c | |
Peter Goodhall | 0bc7f44e26 | |
Peter Goodhall | 3fe5159489 | |
Ciemon | b551ba3a30 | |
Peter Goodhall | 99e958d48c | |
Peter Goodhall | d77bb118ea | |
Peter Goodhall | e44ea531cc | |
Peter Goodhall | 18e46ad7a1 | |
Patrick Burns | 5dcebe82a6 | |
Peter Goodhall | 96fdf31588 | |
Patrick Burns | 365671322b | |
DJ3CE | f03ad1d0b0 | |
Patrick Burns | 96ed12cd89 | |
Patrick Burns | 58d8705774 | |
Patrick Burns | 236e86f7a8 | |
Patrick Burns | ab119a1f5d | |
Patrick Burns | b9483d910e | |
Patrick Burns | b926cb68d4 | |
Patrick Burns | 5b2c04f6d5 | |
Patrick Burns | 0d9924a49c | |
Patrick Burns | 8e63c3a694 | |
Patrick Burns | 7345289b86 | |
Patrick Burns | 671e34157f | |
DJ3CE | 07ba06d104 |
|
@ -0,0 +1,6 @@
|
||||||
|
MYSQL_ROOT_PASSWORD=rootpassword
|
||||||
|
MYSQL_DATABASE=cloudlog
|
||||||
|
MYSQL_USER=cloudlog
|
||||||
|
MYSQL_PASSWORD=cloudlogpassword
|
||||||
|
MYSQL_HOST=db
|
||||||
|
MYSQL_PORT=3306
|
|
@ -18,3 +18,4 @@
|
||||||
sync.sh
|
sync.sh
|
||||||
*.p12
|
*.p12
|
||||||
*.swp
|
*.swp
|
||||||
|
.env
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
# Use the official image for PHP and Apache
|
||||||
|
FROM php:7.4-apache
|
||||||
|
|
||||||
|
# Set the working directory to /var/www/html
|
||||||
|
WORKDIR /var/www/html
|
||||||
|
|
||||||
|
# Install system dependencies, including git and libxml2
|
||||||
|
RUN apt-get update && apt-get install -y \
|
||||||
|
libcurl4-openssl-dev \
|
||||||
|
libxml2-dev \
|
||||||
|
libzip-dev \
|
||||||
|
zlib1g-dev \
|
||||||
|
libpng-dev \
|
||||||
|
libonig-dev \
|
||||||
|
default-mysql-client \
|
||||||
|
curl \
|
||||||
|
&& apt-get clean \
|
||||||
|
&& rm -rf /var/lib/apt/lists/* \
|
||||||
|
&& docker-php-ext-install pdo_mysql \
|
||||||
|
&& docker-php-ext-install mysqli \
|
||||||
|
&& docker-php-ext-install gd \
|
||||||
|
&& docker-php-ext-install mbstring \
|
||||||
|
&& docker-php-ext-install zip \
|
||||||
|
&& docker-php-ext-install xml \
|
||||||
|
&& a2enmod rewrite
|
||||||
|
|
||||||
|
|
||||||
|
# Expose port 80
|
||||||
|
EXPOSE 80
|
48
README.md
48
README.md
|
@ -11,24 +11,58 @@ Core Contributors: 2M0SQL ([@magicbug](https://github.com/magicbug)), LA8AJA ([@
|
||||||
Website: [http://www.cloudlog.co.uk](http://www.cloudlog.co.uk)
|
Website: [http://www.cloudlog.co.uk](http://www.cloudlog.co.uk)
|
||||||
|
|
||||||
## Requirements
|
## Requirements
|
||||||
* Linux based Operating System
|
|
||||||
* Apache (Nginx should work)
|
- Linux based Operating System
|
||||||
* PHP Version 7.4 (PHP 8.2 works)
|
- Apache (Nginx should work)
|
||||||
* MySQL (MySQL 5.7 or higher)
|
- PHP Version 7.4 (PHP 8.2 works)
|
||||||
|
- MySQL (MySQL 5.7 or higher)
|
||||||
|
|
||||||
Notes
|
Notes
|
||||||
* If you want to log microwave QSOs you will need to use a 64bit operating system.
|
|
||||||
* We do not provide Docker support, however you are free to use it if you wish but we will not handle support.
|
- If you want to log microwave QSOs you will need to use a 64bit operating system.
|
||||||
|
- We do not provide Docker support, however you are free to use it if you wish but we will not handle support.
|
||||||
|
|
||||||
## Setup
|
## Setup
|
||||||
|
|
||||||
Installation information can be found on the [wiki](https://github.com/magicbug/Cloudlog/wiki).
|
Installation information can be found on the [wiki](https://github.com/magicbug/Cloudlog/wiki).
|
||||||
|
|
||||||
|
# Docker Development Environment
|
||||||
|
|
||||||
|
This guide provides instructions for setting up a local development environment using Docker and Docker Compose. Please note that this setup is not recommended for production use.
|
||||||
|
|
||||||
|
## Prerequisites
|
||||||
|
|
||||||
|
Before you begin, you need to install Docker and Docker Compose. You can download them using the following links:
|
||||||
|
|
||||||
|
- [Docker](https://docs.docker.com/get-docker/)
|
||||||
|
- [Docker Compose](https://docs.docker.com/compose/install/)
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
1. Copy the `.env.sample` file to `.env`:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cp .env.sample .env
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Open the `.env` file and update the values to match your setup. The values from the `.env` file will be used to populate the database connection details on the install page. You should not need to change these unless your setup requires different values.
|
||||||
|
|
||||||
|
**Note:** Docker Compose creates a network for your application, and each service (container) in the Docker Compose file can reach each other via the service name. This is why the `DB_HOST` value in the `.env` file and on the install page should match the service name of the database in the `docker-compose.yml` file. For example, if the database service in `docker-compose.yml` is defined as `db`, then `DB_HOST` should be set as 'db'. This allows the application to communicate with the database service on its internal docker network.
|
||||||
|
|
||||||
|
## Starting the Development Environment
|
||||||
|
|
||||||
|
To start the development environment, run the following command in your terminal:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker-compose up
|
||||||
|
```
|
||||||
|
|
||||||
## Support
|
## Support
|
||||||
|
|
||||||
Cloudlog has two support systems for code issues use Github issues, however if you have general issues with setting up your server please use our general discussion forum [https://github.com/magicbug/Cloudlog/discussions](https://github.com/magicbug/Cloudlog/discussions).
|
Cloudlog has two support systems for code issues use Github issues, however if you have general issues with setting up your server please use our general discussion forum [https://github.com/magicbug/Cloudlog/discussions](https://github.com/magicbug/Cloudlog/discussions).
|
||||||
|
|
||||||
## Security Vulnerabilities
|
## Security Vulnerabilities
|
||||||
|
|
||||||
If you discover a security vulnerability within Cloudlog, please send an e-mail to Peter Goodhall, 2M0SQL via [peter@magicbug.co.uk](mailto:peter@magicbug.co.uk). All security vulnerabilities will be promptly addressed.
|
If you discover a security vulnerability within Cloudlog, please send an e-mail to Peter Goodhall, 2M0SQL via [peter@magicbug.co.uk](mailto:peter@magicbug.co.uk). All security vulnerabilities will be promptly addressed.
|
||||||
|
|
||||||
## Want Cloudlog Hosting?
|
## Want Cloudlog Hosting?
|
||||||
|
@ -53,4 +87,4 @@ Cloudlog is supported by Patreon and donations via PayPal, thanks to the followi
|
||||||
|
|
||||||
Paul (M0TZO), Tim (G4VXE), Paul (N8HM), Michelle (W5NYV), Mitchell (AD0HJ), Dan (M0TCB), Martin (DK3ML), Juan Carlos (EA5WA), Iain (M0PCB), Charlie (GM1TGY), Ondrej (OK1CDJ), Trystan (G0KAY), Oliver (DL6KBG), Volkmar Schirmer, Jordan (M0PIR), Thomas Ziegler, Mathis (DB9MAT), Ken (VE3HLS), Tyler (WL7T), Jeremy Taylor, Ben Kuhn, Eric Thresher, Michael Cullen, Juuso (OH1JW), Anthony Castiglia, Fernando Ramirez-Ferrer, Robert Dixon, Mark Percival, Julia (KV1V), Timo Tomasini, Ant (NU1U), Christopher Williams, Danny Barnes, Vic, Tom (M0LTE), smurphboy, Lars (SM0TGU), Theo (PD9DP), Stefan (SM0RGM). Peter (G0ABI), Lou (KI5FTY), Michael (DG3NAB), Dragan (4O4A), minorsecond, Emily (W7AYQ), Steve (M0SKM), Rob (M0VFC), Doug (WA6L), Petr (OK1PKR), Fabian (HB9HIL), Daniel (OK2VLK), John (M5JFS).
|
Paul (M0TZO), Tim (G4VXE), Paul (N8HM), Michelle (W5NYV), Mitchell (AD0HJ), Dan (M0TCB), Martin (DK3ML), Juan Carlos (EA5WA), Iain (M0PCB), Charlie (GM1TGY), Ondrej (OK1CDJ), Trystan (G0KAY), Oliver (DL6KBG), Volkmar Schirmer, Jordan (M0PIR), Thomas Ziegler, Mathis (DB9MAT), Ken (VE3HLS), Tyler (WL7T), Jeremy Taylor, Ben Kuhn, Eric Thresher, Michael Cullen, Juuso (OH1JW), Anthony Castiglia, Fernando Ramirez-Ferrer, Robert Dixon, Mark Percival, Julia (KV1V), Timo Tomasini, Ant (NU1U), Christopher Williams, Danny Barnes, Vic, Tom (M0LTE), smurphboy, Lars (SM0TGU), Theo (PD9DP), Stefan (SM0RGM). Peter (G0ABI), Lou (KI5FTY), Michael (DG3NAB), Dragan (4O4A), minorsecond, Emily (W7AYQ), Steve (M0SKM), Rob (M0VFC), Doug (WA6L), Petr (OK1PKR), Fabian (HB9HIL), Daniel (OK2VLK), John (M5JFS).
|
||||||
|
|
||||||
If you'd like to donate to Cloudlog to help allow @magicbug spend less time doing commercial work and more time coding Cloudlog then you can donate via [PayPal](https://paypal.me/PGoodhall), [Github Sponsor](https://github.com/sponsors/magicbug) or become a [Patreon](https://www.patreon.com/2m0sql)
|
If you'd like to donate to Cloudlog to help allow @magicbug spend less time doing commercial work and more time coding Cloudlog then you can donate via [PayPal](https://paypal.me/PGoodhall), [Github Sponsor](https://github.com/sponsors/magicbug) or become a [Patreon](https://www.patreon.com/2m0sql)
|
||||||
|
|
|
@ -22,7 +22,7 @@ $config['migration_enabled'] = TRUE;
|
||||||
|
|
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
$config['migration_version'] = 176;
|
$config['migration_version'] = 177;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
@ -59,6 +59,61 @@ class User extends CI_Controller {
|
||||||
$data['timezones'] = $this->user_model->timezones();
|
$data['timezones'] = $this->user_model->timezones();
|
||||||
$data['language'] = 'english';
|
$data['language'] = 'english';
|
||||||
|
|
||||||
|
// Set defaults
|
||||||
|
$data['dashboard_upcoming_dx_card'] = false;
|
||||||
|
$data['dashboard_qslcard_card'] = false;
|
||||||
|
$data['dashboard_eqslcard_card'] = false;
|
||||||
|
$data['dashboard_lotw_card'] = false;
|
||||||
|
$data['dashboard_vuccgrids_card'] = false;
|
||||||
|
|
||||||
|
$dashboard_options = $this->user_options_model->get_options('dashboard')->result();
|
||||||
|
|
||||||
|
foreach ($dashboard_options as $item) {
|
||||||
|
$option_name = $item->option_name;
|
||||||
|
$option_key = $item->option_key;
|
||||||
|
$option_value = $item->option_value;
|
||||||
|
|
||||||
|
if ($option_name == 'dashboard_upcoming_dx_card' && $option_key == 'enabled') {
|
||||||
|
if($item->option_value == 'true') {
|
||||||
|
$data['dashboard_upcoming_dx_card'] = true;
|
||||||
|
} else {
|
||||||
|
$data['dashboard_upcoming_dx_card'] = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($option_name == 'dashboard_qslcards_card' && $option_key == 'enabled') {
|
||||||
|
if($item->option_value == 'true') {
|
||||||
|
$data['dashboard_qslcard_card'] = true;
|
||||||
|
} else {
|
||||||
|
$data['dashboard_qslcard_card'] = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($option_name == 'dashboard_eqslcards_card' && $option_key == 'enabled') {
|
||||||
|
if($item->option_value == 'true') {
|
||||||
|
$data['dashboard_eqslcard_card'] = true;
|
||||||
|
} else {
|
||||||
|
$data['dashboard_eqslcard_card'] = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($option_name == 'dashboard_lotw_card' && $option_key == 'enabled') {
|
||||||
|
if($item->option_value == 'true') {
|
||||||
|
$data['dashboard_lotw_card'] = true;
|
||||||
|
} else {
|
||||||
|
$data['dashboard_lotw_card'] = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($option_name == 'dashboard_vuccgrids_card' && $option_key == 'enabled') {
|
||||||
|
if($item->option_value == 'true') {
|
||||||
|
$data['dashboard_vuccgrids_card'] = true;
|
||||||
|
} else {
|
||||||
|
$data['dashboard_vuccgrids_card'] = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ($this->form_validation->run() == FALSE) {
|
if ($this->form_validation->run() == FALSE) {
|
||||||
$data['page_title'] = "Add User";
|
$data['page_title'] = "Add User";
|
||||||
$data['measurement_base'] = $this->config->item('measurement_base');
|
$data['measurement_base'] = $this->config->item('measurement_base');
|
||||||
|
@ -757,6 +812,37 @@ class User extends CI_Controller {
|
||||||
$this->load->view('interface_assets/footer');
|
$this->load->view('interface_assets/footer');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deletes a user by their ID.
|
||||||
|
*
|
||||||
|
* This function first loads the 'user_model'. It then checks if the current user has the authorization level of 99.
|
||||||
|
* If not, it sets a flash message and redirects the user to the dashboard.
|
||||||
|
*
|
||||||
|
* If the user is authorized, it gets the user to be deleted by their ID from the URI segment 3.
|
||||||
|
* It then calls the 'delete' function from the 'user_model' with the user ID as a parameter.
|
||||||
|
*
|
||||||
|
* If the 'delete' function executes successfully, it sets the HTTP status code to 200.
|
||||||
|
* If the 'delete' function fails, it sets the HTTP status code to 500.
|
||||||
|
*
|
||||||
|
* @param int $id The ID of the user to delete.
|
||||||
|
*/
|
||||||
|
function delete_new($id) {
|
||||||
|
$this->load->model('user_model');
|
||||||
|
if(!$this->user_model->authorize(99)) { $this->session->set_flashdata('notice', 'You\'re not allowed to do that!'); redirect('dashboard'); }
|
||||||
|
$query = $this->user_model->get_by_id($this->uri->segment(3));
|
||||||
|
|
||||||
|
// call $this->user_model->delete and if no errors return true
|
||||||
|
if ($this->user_model->delete($id)) {
|
||||||
|
// request responds with a 200 status code and empty content
|
||||||
|
$this->output->set_status_header(200);
|
||||||
|
} else {
|
||||||
|
// request responds with a 500 status code and empty content
|
||||||
|
$this->output->set_status_header(500);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
function delete() {
|
function delete() {
|
||||||
$this->load->model('user_model');
|
$this->load->model('user_model');
|
||||||
if(!$this->user_model->authorize(99)) { $this->session->set_flashdata('notice', 'You\'re not allowed to do that!'); redirect('dashboard'); }
|
if(!$this->user_model->authorize(99)) { $this->session->set_flashdata('notice', 'You\'re not allowed to do that!'); redirect('dashboard'); }
|
||||||
|
|
|
@ -82,7 +82,7 @@ class Visitor extends CI_Controller {
|
||||||
$config['base_url'] = base_url().'index.php/visitor/'. $public_slug . '/index';
|
$config['base_url'] = base_url().'index.php/visitor/'. $public_slug . '/index';
|
||||||
$config['total_rows'] = $this->logbook_model->total_qsos($logbooks_locations_array);
|
$config['total_rows'] = $this->logbook_model->total_qsos($logbooks_locations_array);
|
||||||
$config['per_page'] = '25';
|
$config['per_page'] = '25';
|
||||||
$config['num_links'] = $this->logbook_model->total_qsos($logbooks_locations_array) / 25;
|
$config['num_links'] = 6;
|
||||||
$config['full_tag_open'] = '<ul class="pagination">';
|
$config['full_tag_open'] = '<ul class="pagination">';
|
||||||
$config['full_tag_close'] = '</ul>';
|
$config['full_tag_close'] = '</ul>';
|
||||||
$config['attributes'] = ['class' => 'page-link'];
|
$config['attributes'] = ['class' => 'page-link'];
|
||||||
|
|
|
@ -30,7 +30,7 @@ class Workabledxcc extends CI_Controller
|
||||||
public function dxcclist()
|
public function dxcclist()
|
||||||
{
|
{
|
||||||
|
|
||||||
$json = file_get_contents('https://cdn.cloudlog.org/read_ng3k_dxped_list.php');
|
$json = file_get_contents($this->optionslib->get_option('dxped_url'));
|
||||||
|
|
||||||
// Decode the JSON data into a PHP array
|
// Decode the JSON data into a PHP array
|
||||||
$dataResult = json_decode($json, true);
|
$dataResult = json_decode($json, true);
|
||||||
|
|
|
@ -2,22 +2,26 @@
|
||||||
|
|
||||||
if (!function_exists('folderSize')) {
|
if (!function_exists('folderSize')) {
|
||||||
function folderSize($dir){
|
function folderSize($dir){
|
||||||
$count_size = 0;
|
if (is_dir($dir)) {
|
||||||
$count = 0;
|
$count_size = 0;
|
||||||
$dir_array = scandir($dir);
|
$count = 0;
|
||||||
foreach($dir_array as $key=>$filename){
|
$dir_array = scandir($dir);
|
||||||
if($filename!=".." && $filename!="."){
|
foreach($dir_array as $key=>$filename){
|
||||||
if(is_dir($dir."/".$filename)){
|
if($filename!=".." && $filename!="."){
|
||||||
$new_foldersize = folderSize($dir."/".$filename);
|
if(is_dir($dir."/".$filename)){
|
||||||
$count_size = $count_size+ $new_foldersize;
|
$new_foldersize = folderSize($dir."/".$filename);
|
||||||
}else if(is_file($dir."/".$filename)){
|
$count_size = $count_size+ $new_foldersize;
|
||||||
$count_size = $count_size + filesize($dir."/".$filename);
|
}else if(is_file($dir."/".$filename)){
|
||||||
$count++;
|
$count_size = $count_size + filesize($dir."/".$filename);
|
||||||
|
$count++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return $count_size;
|
||||||
|
} else {
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
return $count_size;
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!function_exists('sizeFormat')) {
|
if (!function_exists('sizeFormat')) {
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
defined('BASEPATH') OR exit('No direct script access allowed');
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This migration adds a dxped_url-key to the options table, to configure
|
||||||
|
* the endpoint, from where the dxpedition-data is being loaded.
|
||||||
|
*/
|
||||||
|
|
||||||
|
class Migration_add_dxped_url_option extends CI_Migration {
|
||||||
|
|
||||||
|
public function up()
|
||||||
|
{
|
||||||
|
$data = array(
|
||||||
|
array('option_name' => "dxped_url", 'option_value' => "https://cdn.cloudlog.org/read_ng3k_dxped_list.php", 'autoload' => "yes"),
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->db->insert_batch('options', $data);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function down()
|
||||||
|
{
|
||||||
|
// No option to down
|
||||||
|
}
|
||||||
|
}
|
|
@ -185,7 +185,8 @@ class User_Model extends CI_Model {
|
||||||
'user_qso_end_times' => xss_clean($user_qso_end_times),
|
'user_qso_end_times' => xss_clean($user_qso_end_times),
|
||||||
'user_quicklog' => xss_clean($user_quicklog),
|
'user_quicklog' => xss_clean($user_quicklog),
|
||||||
'user_quicklog_enter' => xss_clean($user_quicklog_enter),
|
'user_quicklog_enter' => xss_clean($user_quicklog_enter),
|
||||||
'language' => xss_clean($language)
|
'language' => xss_clean($language),
|
||||||
|
'user_eqsl_qth_nickname' => "",
|
||||||
);
|
);
|
||||||
|
|
||||||
// Check the password is valid
|
// Check the password is valid
|
||||||
|
|
|
@ -5,7 +5,7 @@ class Workabledxcc_model extends CI_Model
|
||||||
|
|
||||||
public function GetThisWeek()
|
public function GetThisWeek()
|
||||||
{
|
{
|
||||||
$json = file_get_contents('https://cdn.cloudlog.org/read_ng3k_dxped_list.php');
|
$json = file_get_contents($this->optionslib->get_option('dxped_url'));
|
||||||
|
|
||||||
// Step 2: Convert the JSON data to an array.
|
// Step 2: Convert the JSON data to an array.
|
||||||
$data = json_decode($json, true);
|
$data = json_decode($json, true);
|
||||||
|
|
|
@ -47,7 +47,7 @@
|
||||||
<script type="text/javascript" src="<?php echo base_url(); ?>assets/js/sections/eqslcharcounter.js"></script>
|
<script type="text/javascript" src="<?php echo base_url(); ?>assets/js/sections/eqslcharcounter.js"></script>
|
||||||
<script type="text/javascript" src="<?php echo base_url(); ?>assets/js/sections/version_dialog.js"></script>
|
<script type="text/javascript" src="<?php echo base_url(); ?>assets/js/sections/version_dialog.js"></script>
|
||||||
|
|
||||||
<script src="https://unpkg.com/htmx.org@1.6.1"></script>
|
<script src="<?php echo base_url(); ?>assets/js/htmx.min.js"></script>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
// Reinitialize tooltips after new content has been loaded
|
// Reinitialize tooltips after new content has been loaded
|
||||||
|
|
|
@ -1,35 +1,85 @@
|
||||||
<?php
|
<?php
|
||||||
function echo_table_header_col($name) {
|
function echo_table_header_col($name)
|
||||||
switch($name) {
|
{
|
||||||
case 'Mode': echo lang('gen_hamradio_mode'); break;
|
switch ($name) {
|
||||||
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':
|
case 'Mode':
|
||||||
echo $row->COL_SUBMODE==null?$row->COL_MODE:$row->COL_SUBMODE;
|
echo lang('gen_hamradio_mode');
|
||||||
break;
|
break;
|
||||||
case 'RSTS':
|
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>';};
|
echo lang('gen_hamradio_rsts');
|
||||||
break;
|
break;
|
||||||
case 'RSTR':
|
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>';};
|
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;
|
break;
|
||||||
case 'Country':
|
case 'Country':
|
||||||
echo ucwords(strtolower(($row->COL_COUNTRY)));
|
echo ucwords(strtolower(($row->COL_COUNTRY)));
|
||||||
|
@ -47,13 +97,17 @@ function echo_table_col($row, $name) {
|
||||||
echo ($row->COL_POTA_REF);
|
echo ($row->COL_POTA_REF);
|
||||||
break;
|
break;
|
||||||
case 'Grid':
|
case 'Grid':
|
||||||
echo strlen($row->COL_GRIDSQUARE)==0?$row->COL_VUCC_GRIDS:$row->COL_GRIDSQUARE;
|
echo strlen($row->COL_GRIDSQUARE) == 0 ? $row->COL_VUCC_GRIDS : $row->COL_GRIDSQUARE;
|
||||||
break;
|
break;
|
||||||
case 'Distance':
|
case 'Distance':
|
||||||
echo ($row->COL_DISTANCE ? $row->COL_DISTANCE . ' km' : '');
|
echo ($row->COL_DISTANCE ? $row->COL_DISTANCE . ' km' : '');
|
||||||
break;
|
break;
|
||||||
case 'Band':
|
case 'Band':
|
||||||
if($row->COL_SAT_NAME != null) { echo $row->COL_SAT_NAME; } else { echo strtolower($row->COL_BAND); };
|
if ($row->COL_SAT_NAME != null) {
|
||||||
|
echo $row->COL_SAT_NAME;
|
||||||
|
} else {
|
||||||
|
echo strtolower($row->COL_BAND);
|
||||||
|
};
|
||||||
break;
|
break;
|
||||||
case 'State':
|
case 'State':
|
||||||
echo ($row->COL_STATE);
|
echo ($row->COL_STATE);
|
||||||
|
@ -62,7 +116,26 @@ function echo_table_col($row, $name) {
|
||||||
echo ($row->COL_OPERATOR);
|
echo ($row->COL_OPERATOR);
|
||||||
break;
|
break;
|
||||||
case 'Frequency':
|
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); } };
|
$CI =& get_instance();
|
||||||
|
$CI->load->library('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 && $CI->frequency->hz_to_mhz($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 && $CI->frequency->hz_to_mhz($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;
|
break;
|
||||||
case 'State':
|
case 'State':
|
||||||
echo ($row->COL_STATE);
|
echo ($row->COL_STATE);
|
||||||
|
@ -74,7 +147,7 @@ function echo_table_col($row, $name) {
|
||||||
echo ($row->station_profile_name);
|
echo ($row->station_profile_name);
|
||||||
break;
|
break;
|
||||||
case 'Name':
|
case 'Name':
|
||||||
echo ($row->COL_NAME);
|
echo ($row->COL_NAME);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
echo '(unknown col)';
|
echo '(unknown col)';
|
||||||
|
@ -82,323 +155,331 @@ function echo_table_col($row, $name) {
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
<div class="table-responsive">
|
<div class="table-responsive">
|
||||||
<table style="width:100%" class="table table-sm tablewas table-bordered table-hover table-striped table-condensed text-center">
|
<table style="width:100%" class="table table-sm tablewas table-bordered table-hover table-striped table-condensed text-center">
|
||||||
<thead>
|
<thead>
|
||||||
<tr class="titles">
|
<tr class="titles">
|
||||||
<th><?php echo lang('general_word_date'); ?></th>
|
<th><?php echo lang('general_word_date'); ?></th>
|
||||||
<?php if(($this->config->item('use_auth') && ($this->session->userdata('user_type') >= 2)) || $this->config->item('use_auth') === FALSE || ($this->config->item('show_time'))) { ?>
|
<?php if (($this->config->item('use_auth') && ($this->session->userdata('user_type') >= 2)) || $this->config->item('use_auth') === FALSE || ($this->config->item('show_time'))) { ?>
|
||||||
<th><?php echo lang('general_word_time'); ?></th>
|
<th><?php echo lang('general_word_time'); ?></th>
|
||||||
<?php } ?>
|
<?php } ?>
|
||||||
<th><?php echo lang('gen_hamradio_call'); ?></th>
|
<th><?php echo lang('gen_hamradio_call'); ?></th>
|
||||||
<?php
|
<?php
|
||||||
$ci =& get_instance();
|
$ci = &get_instance();
|
||||||
echo '<th>';
|
echo '<th>';
|
||||||
echo_table_header_col($this->session->userdata('user_column1')==""?'Mode':$this->session->userdata('user_column1'));
|
echo_table_header_col($this->session->userdata('user_column1') == "" ? 'Mode' : $this->session->userdata('user_column1'));
|
||||||
echo '</th>';
|
echo '</th>';
|
||||||
echo '<th>';
|
echo '<th>';
|
||||||
echo_table_header_col($this->session->userdata('user_column2')==""?'RSTS':$this->session->userdata('user_column2'));
|
echo_table_header_col($this->session->userdata('user_column2') == "" ? 'RSTS' : $this->session->userdata('user_column2'));
|
||||||
echo '</th>';
|
echo '</th>';
|
||||||
echo '<th>';
|
echo '<th>';
|
||||||
echo_table_header_col($this->session->userdata('user_column3')==""?'RSTR':$this->session->userdata('user_column3'));
|
echo_table_header_col($this->session->userdata('user_column3') == "" ? 'RSTR' : $this->session->userdata('user_column3'));
|
||||||
echo '</th>';
|
echo '</th>';
|
||||||
echo '<th>';
|
echo '<th>';
|
||||||
echo_table_header_col($this->session->userdata('user_column4')==""?'Band':$this->session->userdata('user_column4'));
|
echo_table_header_col($this->session->userdata('user_column4') == "" ? 'Band' : $this->session->userdata('user_column4'));
|
||||||
echo '</th>';
|
echo '</th>';
|
||||||
echo '<th>';
|
echo '<th>';
|
||||||
echo_table_header_col($this->session->userdata('user_column5')==""?'Country':$this->session->userdata('user_column5'));
|
echo_table_header_col($this->session->userdata('user_column5') == "" ? 'Country' : $this->session->userdata('user_column5'));
|
||||||
echo '</th>';
|
echo '</th>';
|
||||||
|
|
||||||
if(($this->config->item('use_auth')) && ($this->session->userdata('user_type') >= 2)) { ?>
|
if (($this->config->item('use_auth')) && ($this->session->userdata('user_type') >= 2)) { ?>
|
||||||
<th>QSL</th>
|
<th>QSL</th>
|
||||||
<?php if($this->session->userdata('user_eqsl_name') != "") { ?>
|
<?php if ($this->session->userdata('user_eqsl_name') != "") { ?>
|
||||||
<th>eQSL</th>
|
<th>eQSL</th>
|
||||||
|
<?php } ?>
|
||||||
|
<?php if ($this->session->userdata('user_lotw_name') != "") { ?>
|
||||||
|
<th>LoTW</th>
|
||||||
|
<?php } ?>
|
||||||
|
<?php if ($this->session->userdata('hasQrzKey') != "") { ?>
|
||||||
|
<th>QRZ</th>
|
||||||
|
<?php } ?>
|
||||||
<?php } ?>
|
<?php } ?>
|
||||||
<?php if($this->session->userdata('user_lotw_name') != "") { ?>
|
|
||||||
<th>LoTW</th>
|
|
||||||
<?php } ?>
|
|
||||||
<?php if($this->session->userdata('hasQrzKey') != "") { ?>
|
|
||||||
<th>QRZ</th>
|
|
||||||
<?php } ?>
|
|
||||||
<?php } ?>
|
|
||||||
<th><?php echo lang('gen_hamradio_station'); ?></th>
|
<th><?php echo lang('gen_hamradio_station'); ?></th>
|
||||||
<?php if(($this->config->item('use_auth')) && ($this->session->userdata('user_type') >= 2)) { ?>
|
<?php if (($this->config->item('use_auth')) && ($this->session->userdata('user_type') >= 2)) { ?>
|
||||||
<th></th>
|
<th></th>
|
||||||
<?php } ?>
|
<?php } ?>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<?php $i = 0; foreach ($results->result() as $row) { ?>
|
<?php $i = 0;
|
||||||
|
foreach ($results->result() as $row) { ?>
|
||||||
|
|
||||||
<?php
|
<?php
|
||||||
// Get Date format
|
// Get Date format
|
||||||
if($this->session->userdata('user_date_format')) {
|
if ($this->session->userdata('user_date_format')) {
|
||||||
// If Logged in and session exists
|
// If Logged in and session exists
|
||||||
$custom_date_format = $this->session->userdata('user_date_format');
|
$custom_date_format = $this->session->userdata('user_date_format');
|
||||||
} else {
|
} else {
|
||||||
// Get Default date format from /config/cloudlog.php
|
// Get Default date format from /config/cloudlog.php
|
||||||
$custom_date_format = $this->config->item('qso_date_format');
|
$custom_date_format = $this->config->item('qso_date_format');
|
||||||
}
|
}
|
||||||
?>
|
|
||||||
<?php echo '<tr class="tr'.($i & 1).'" id="qso_'. $row->COL_PRIMARY_KEY .'">'; ?>
|
|
||||||
<td><?php $timestamp = strtotime($row->COL_TIME_ON); echo date($custom_date_format, $timestamp); ?></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('H:i', $timestamp); ?></td>
|
|
||||||
<?php } ?>
|
|
||||||
<td>
|
|
||||||
<a id="edit_qso" href="javascript:displayQso(<?php echo $row->COL_PRIMARY_KEY; ?>)"><?php echo str_replace("0","Ø",strtoupper($row->COL_CALL)); ?></a>
|
|
||||||
</td>
|
|
||||||
<?php
|
|
||||||
|
|
||||||
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)) { ?>
|
|
||||||
|
|
||||||
<?php
|
|
||||||
echo '<td id="qsl_'.$row->COL_PRIMARY_KEY.'" style=\'text-align: center\' class="qsl">';
|
|
||||||
echo '<span ';
|
|
||||||
if ($row->COL_QSL_SENT != "N") {
|
|
||||||
if ($row->COL_QSLSDATE != null) {
|
|
||||||
$timestamp = ' '.date($custom_date_format, strtotime($row->COL_QSLSDATE));
|
|
||||||
} else {
|
|
||||||
$timestamp = '';
|
|
||||||
}
|
|
||||||
switch ($row->COL_QSL_SENT) {
|
|
||||||
case "Y":
|
|
||||||
echo "class=\"qsl-green\" data-bs-toggle=\"tooltip\" title=\"".lang('general_word_sent').$timestamp;
|
|
||||||
break;
|
|
||||||
case "Q":
|
|
||||||
echo "class=\"qsl-yellow\" data-bs-toggle=\"tooltip\" title=\"".lang('general_word_queued').$timestamp;
|
|
||||||
break;
|
|
||||||
case "R":
|
|
||||||
echo "class=\"qsl-yellow\" data-bs-toggle=\"tooltip\" title=\"".lang('general_word_requested').$timestamp;
|
|
||||||
break;
|
|
||||||
case "I":
|
|
||||||
echo "class=\"qsl-grey\" data-bs-toggle=\"tooltip\" title=\"".lang('general_word_invalid_ignore').$timestamp;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
echo "class=\"qsl-red";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
} else { echo "class=\"qsl-red"; }
|
|
||||||
if ($row->COL_QSL_SENT_VIA != "") {
|
|
||||||
switch ($row->COL_QSL_SENT_VIA) {
|
|
||||||
case "B":
|
|
||||||
echo " (".lang('general_word_qslcard_bureau').")";
|
|
||||||
break;
|
|
||||||
case "D":
|
|
||||||
echo " (".lang('general_word_qslcard_direct').")";
|
|
||||||
break;
|
|
||||||
case "M":
|
|
||||||
echo " (".lang('general_word_qslcard_via').": ".($row->COL_QSL_VIA!="" ? $row->COL_QSL_VIA:"n/a").")";
|
|
||||||
break;
|
|
||||||
case "E":
|
|
||||||
echo " (".lang('general_word_qslcard_electronic').")";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
echo '">▲</span>';
|
|
||||||
echo '<span ';
|
|
||||||
if ($row->COL_QSL_RCVD != "N") {
|
|
||||||
if ($row->COL_QSLRDATE != null) {
|
|
||||||
$timestamp = ' '.date($custom_date_format, strtotime($row->COL_QSLRDATE));
|
|
||||||
} else {
|
|
||||||
$timestamp = '';
|
|
||||||
}
|
|
||||||
switch ($row->COL_QSL_RCVD) {
|
|
||||||
case "Y":
|
|
||||||
echo "class=\"qsl-green\" data-bs-toggle=\"tooltip\" title=\"".lang('general_word_received').$timestamp;
|
|
||||||
break;
|
|
||||||
case "Q":
|
|
||||||
echo "class=\"qsl-yellow\" data-bs-toggle=\"tooltip\" title=\"".lang('general_word_queued').$timestamp;
|
|
||||||
break;
|
|
||||||
case "R":
|
|
||||||
echo "class=\"qsl-yellow\" data-bs-toggle=\"tooltip\" title=\"".lang('general_word_requested').$timestamp;
|
|
||||||
break;
|
|
||||||
case "I":
|
|
||||||
echo "class=\"qsl-grey\" data-bs-toggle=\"tooltip\" title=\"".lang('general_word_invalid_ignore').$timestamp;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
echo "class=\"qsl-red";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
} else { echo "class=\"qsl-red"; }
|
|
||||||
if ($row->COL_QSL_RCVD_VIA != "") {
|
|
||||||
switch ($row->COL_QSL_RCVD_VIA) {
|
|
||||||
case "B":
|
|
||||||
echo " (".lang('general_word_qslcard_bureau').")";
|
|
||||||
break;
|
|
||||||
case "D":
|
|
||||||
echo " (".lang('general_word_qslcard_direct').")";
|
|
||||||
break;
|
|
||||||
case "M":
|
|
||||||
echo " (Manager)";
|
|
||||||
break;
|
|
||||||
case "E":
|
|
||||||
echo " (".lang('general_word_qslcard_electronic').")";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
echo '">▼</span>';
|
|
||||||
?>
|
?>
|
||||||
<?php if ($this->session->userdata('user_eqsl_name') != ""){
|
<?php echo '<tr class="tr' . ($i & 1) . '" id="qso_' . $row->COL_PRIMARY_KEY . '">'; ?>
|
||||||
echo '<td style=\'text-align: center\' class="eqsl">';
|
<td><?php $timestamp = strtotime($row->COL_TIME_ON);
|
||||||
echo '<span ';
|
echo date($custom_date_format, $timestamp); ?></td>
|
||||||
if ($row->COL_EQSL_QSL_SENT == "Y") {
|
<?php if (($this->config->item('use_auth') && ($this->session->userdata('user_type') >= 2)) || $this->config->item('use_auth') === FALSE || ($this->config->item('show_time'))) { ?>
|
||||||
echo "title=\"".lang('eqsl_short')." ".lang('general_word_sent');
|
<td><?php $timestamp = strtotime($row->COL_TIME_ON);
|
||||||
if ($row->COL_EQSL_QSLSDATE != null) {
|
echo date('H:i', $timestamp); ?></td>
|
||||||
$timestamp = strtotime($row->COL_EQSL_QSLSDATE);
|
<?php } ?>
|
||||||
echo " ".($timestamp != '' ? date($custom_date_format, $timestamp) : '');
|
|
||||||
}
|
|
||||||
echo "\" data-bs-toggle=\"tooltip\"";
|
|
||||||
}
|
|
||||||
echo ' class="eqsl-';
|
|
||||||
echo ($row->COL_EQSL_QSL_SENT=='Y')?'green':'red';
|
|
||||||
echo '">▲</span>';
|
|
||||||
|
|
||||||
echo '<span ';
|
|
||||||
if ($row->COL_EQSL_QSL_RCVD == "Y") {
|
|
||||||
echo "title=\"".lang('eqsl_short')." ".lang('general_word_received');
|
|
||||||
if ($row->COL_EQSL_QSLRDATE != null) {
|
|
||||||
$timestamp = strtotime($row->COL_EQSL_QSLRDATE);
|
|
||||||
echo " ".($timestamp != '' ? date($custom_date_format, $timestamp) : '');
|
|
||||||
}
|
|
||||||
echo "\" data-bs-toggle=\"tooltip\"";
|
|
||||||
}
|
|
||||||
echo ' class="eqsl-';
|
|
||||||
echo ($row->COL_EQSL_QSL_RCVD=='Y')?'green':'red';
|
|
||||||
echo '">';
|
|
||||||
if($row->COL_EQSL_QSL_RCVD =='Y') {
|
|
||||||
echo '<a style="color: green" href="';
|
|
||||||
echo site_url("eqsl/image/".$row->COL_PRIMARY_KEY);
|
|
||||||
echo '" data-fancybox="images" data-width="528" data-height="336">▼</a>';
|
|
||||||
} else {
|
|
||||||
echo '▼';
|
|
||||||
}
|
|
||||||
echo '</span>';
|
|
||||||
echo '</td>';
|
|
||||||
} ?>
|
|
||||||
|
|
||||||
<?php if($this->session->userdata('user_lotw_name') != "") {
|
|
||||||
echo '<td style=\'text-align: center\' class="lotw">';
|
|
||||||
echo '<span ';
|
|
||||||
if ($row->COL_LOTW_QSL_SENT == "Y") {
|
|
||||||
echo "title=\"".lang('lotw_short')." ".lang('general_word_sent');
|
|
||||||
if ($row->COL_LOTW_QSLSDATE != null) {
|
|
||||||
$timestamp = strtotime($row->COL_LOTW_QSLSDATE);
|
|
||||||
echo " ".($timestamp != '' ? date($custom_date_format, $timestamp) : '');
|
|
||||||
}
|
|
||||||
echo "\" data-bs-toggle=\"tooltip\"";
|
|
||||||
}
|
|
||||||
echo ' class="lotw-';
|
|
||||||
echo ($row->COL_LOTW_QSL_SENT=='Y')?'green':'red';
|
|
||||||
echo '">▲</span>';
|
|
||||||
|
|
||||||
echo '<span ';
|
|
||||||
if ($row->COL_LOTW_QSL_RCVD == "Y") {
|
|
||||||
echo "title=\"".lang('lotw_short')." ".lang('general_word_received');
|
|
||||||
if ($row->COL_LOTW_QSLRDATE != null) {
|
|
||||||
$timestamp = strtotime($row->COL_LOTW_QSLRDATE);
|
|
||||||
echo " ".($timestamp != '' ? date($custom_date_format, $timestamp) : '');
|
|
||||||
}
|
|
||||||
echo "\" data-bs-toggle=\"tooltip\"";
|
|
||||||
}
|
|
||||||
echo ' class="lotw-';
|
|
||||||
echo ($row->COL_LOTW_QSL_RCVD=='Y')?'green':'red';
|
|
||||||
echo '">▼</span>';
|
|
||||||
echo '</td>';
|
|
||||||
} ?>
|
|
||||||
|
|
||||||
<?php if($this->session->userdata('hasQrzKey') != "") {
|
|
||||||
echo '<td style=\'text-align: center\' class="qrz">';
|
|
||||||
echo '<span ';
|
|
||||||
if ($row->COL_QRZCOM_QSO_UPLOAD_STATUS == "Y") {
|
|
||||||
echo "title=\"QRZ ".lang('general_word_sent');
|
|
||||||
if ($row->COL_QRZCOM_QSO_UPLOAD_DATE != null) {
|
|
||||||
$timestamp = strtotime($row->COL_QRZCOM_QSO_UPLOAD_DATE);
|
|
||||||
echo " ".($timestamp != '' ? date($custom_date_format, $timestamp) : '');
|
|
||||||
}
|
|
||||||
echo "\" data-bs-toggle=\"tooltip\"";
|
|
||||||
}
|
|
||||||
echo ' class="qrz-';
|
|
||||||
echo ($row->COL_QRZCOM_QSO_UPLOAD_STATUS=='Y')?'green':'red';
|
|
||||||
echo '">▲</span>';
|
|
||||||
|
|
||||||
echo '<span ';
|
|
||||||
if ($row->COL_QRZCOM_QSO_DOWNLOAD_STATUS == "Y") {
|
|
||||||
echo "title=\"QRZ ".lang('general_word_received');
|
|
||||||
if ($row->COL_QRZCOM_QSO_DOWNLOAD_DATE != null) {
|
|
||||||
$timestamp = strtotime($row->COL_QRZCOM_QSO_DOWNLOAD_DATE);
|
|
||||||
echo " ".($timestamp != '' ? date($custom_date_format, $timestamp) : '');
|
|
||||||
}
|
|
||||||
echo "\" data-bs-toggle=\"tooltip\"";
|
|
||||||
}
|
|
||||||
echo ' class="qrz-';
|
|
||||||
echo ($row->COL_QRZCOM_QSO_DOWNLOAD_STATUS=='Y')?'green':'red';
|
|
||||||
echo '">▼</span>';
|
|
||||||
echo '</td>';
|
|
||||||
} ?>
|
|
||||||
|
|
||||||
<?php } ?>
|
|
||||||
|
|
||||||
<?php if(isset($row->station_callsign)) { ?>
|
|
||||||
<td>
|
|
||||||
<span class="badge text-bg-light"><?php echo $row->station_callsign; ?></span>
|
|
||||||
</td>
|
|
||||||
<?php } ?>
|
|
||||||
|
|
||||||
<?php if(($this->config->item('use_auth')) && ($this->session->userdata('user_type') >= 2)) { ?>
|
|
||||||
<td>
|
<td>
|
||||||
<div class="dropdown">
|
<a id="edit_qso" href="javascript:displayQso(<?php echo $row->COL_PRIMARY_KEY; ?>)"><?php echo str_replace("0", "Ø", strtoupper($row->COL_CALL)); ?></a>
|
||||||
<a class="btn btn-sm btn-secondary dropdown-toggle" href="#" role="button" id="dropdownMenuLink" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
|
||||||
<i class="fas fa-cog"></i>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<div class="dropdown-menu menuOnResultTab" aria-labelledby="dropdownMenuLink" data-qsoid="qso_<?php echo $row->COL_PRIMARY_KEY; ?>">
|
|
||||||
<a class="dropdown-item" id="edit_qso" href="javascript:qso_edit(<?php echo $row->COL_PRIMARY_KEY; ?>)"><i class="fas fa-edit"></i> <?php echo lang('general_edit_qso'); ?></a>
|
|
||||||
|
|
||||||
<?php if($row->COL_QSL_SENT !='Y') { ?>
|
|
||||||
<div class="qsl_sent_<?php echo $row->COL_PRIMARY_KEY; ?>">
|
|
||||||
<div class="dropdown-divider"></div>
|
|
||||||
<a class="dropdown-item" href="javascript:qsl_sent(<?php echo $row->COL_PRIMARY_KEY; ?>, 'B')" ><i class="fas fa-envelope"></i> <?php echo lang('general_mark_qsl_tx_bureau'); ?></a>
|
|
||||||
<a class="dropdown-item" href="javascript:qsl_sent(<?php echo $row->COL_PRIMARY_KEY; ?>, 'D')" ><i class="fas fa-envelope"></i> <?php echo lang('general_mark_qsl_tx_direct'); ?></a>
|
|
||||||
</div>
|
|
||||||
<?php } ?>
|
|
||||||
|
|
||||||
<?php if($row->COL_QSL_RCVD !='Y') { ?>
|
|
||||||
<div class="qsl_rcvd_<?php echo $row->COL_PRIMARY_KEY; ?>">
|
|
||||||
<div class="dropdown-divider"></div>
|
|
||||||
<a class="dropdown-item" href="javascript:qsl_rcvd(<?php echo $row->COL_PRIMARY_KEY; ?>, 'B')" ><i class="fas fa-envelope"></i> <?php echo lang('general_mark_qsl_rx_bureau'); ?></a>
|
|
||||||
<a class="dropdown-item" href="javascript:qsl_rcvd(<?php echo $row->COL_PRIMARY_KEY; ?>, 'D')" ><i class="fas fa-envelope"></i> <?php echo lang('general_mark_qsl_rx_direct'); ?></a>
|
|
||||||
<a class="dropdown-item" href="javascript:qsl_requested(<?php echo $row->COL_PRIMARY_KEY; ?>, 'D')" ><i class="fas fa-envelope"></i><?php echo lang('general_mark_qsl_requested'); ?></a>
|
|
||||||
<a class="dropdown-item" href="javascript:qsl_ignore(<?php echo $row->COL_PRIMARY_KEY; ?>, 'D')" ><i class="fas fa-envelope"></i><?php echo lang('general_mark_qsl_not_required'); ?></a>
|
|
||||||
</div>
|
|
||||||
<?php } ?>
|
|
||||||
|
|
||||||
<div class="dropdown-divider"></div>
|
|
||||||
|
|
||||||
<a class="dropdown-item" href="https://www.qrz.com/db/<?php echo $row->COL_CALL; ?>" target="_blank"><i class="fas fa-question"></i><?php echo lang('general_lookup_qrz'); ?></a>
|
|
||||||
|
|
||||||
<a class="dropdown-item" href="https://www.hamqth.com/<?php echo $row->COL_CALL; ?>" target="_blank"><i class="fas fa-question"></i><?php echo lang('general_lookup_hamqth'); ?></a>
|
|
||||||
|
|
||||||
<div class="dropdown-divider"></div>
|
|
||||||
|
|
||||||
<a class="dropdown-item" href="javascript:qso_delete(<?php echo $row->COL_PRIMARY_KEY; ?>, '<?php echo $row->COL_CALL; ?>')"><i class="fas fa-trash-alt"></i> <?php echo lang('general_delete_qso'); ?></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</td>
|
</td>
|
||||||
<?php } ?>
|
<?php
|
||||||
</tr>
|
|
||||||
<?php $i++; } ?>
|
echo '<td>';
|
||||||
</tbody>
|
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)) { ?>
|
||||||
|
|
||||||
|
<?php
|
||||||
|
echo '<td id="qsl_' . $row->COL_PRIMARY_KEY . '" style=\'text-align: center\' class="qsl">';
|
||||||
|
echo '<span ';
|
||||||
|
if ($row->COL_QSL_SENT != "N") {
|
||||||
|
if ($row->COL_QSLSDATE != null) {
|
||||||
|
$timestamp = ' ' . date($custom_date_format, strtotime($row->COL_QSLSDATE));
|
||||||
|
} else {
|
||||||
|
$timestamp = '';
|
||||||
|
}
|
||||||
|
switch ($row->COL_QSL_SENT) {
|
||||||
|
case "Y":
|
||||||
|
echo "class=\"qsl-green\" data-bs-toggle=\"tooltip\" title=\"" . lang('general_word_sent') . $timestamp;
|
||||||
|
break;
|
||||||
|
case "Q":
|
||||||
|
echo "class=\"qsl-yellow\" data-bs-toggle=\"tooltip\" title=\"" . lang('general_word_queued') . $timestamp;
|
||||||
|
break;
|
||||||
|
case "R":
|
||||||
|
echo "class=\"qsl-yellow\" data-bs-toggle=\"tooltip\" title=\"" . lang('general_word_requested') . $timestamp;
|
||||||
|
break;
|
||||||
|
case "I":
|
||||||
|
echo "class=\"qsl-grey\" data-bs-toggle=\"tooltip\" title=\"" . lang('general_word_invalid_ignore') . $timestamp;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
echo "class=\"qsl-red";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
echo "class=\"qsl-red";
|
||||||
|
}
|
||||||
|
if ($row->COL_QSL_SENT_VIA != "") {
|
||||||
|
switch ($row->COL_QSL_SENT_VIA) {
|
||||||
|
case "B":
|
||||||
|
echo " (" . lang('general_word_qslcard_bureau') . ")";
|
||||||
|
break;
|
||||||
|
case "D":
|
||||||
|
echo " (" . lang('general_word_qslcard_direct') . ")";
|
||||||
|
break;
|
||||||
|
case "M":
|
||||||
|
echo " (" . lang('general_word_qslcard_via') . ": " . ($row->COL_QSL_VIA != "" ? $row->COL_QSL_VIA : "n/a") . ")";
|
||||||
|
break;
|
||||||
|
case "E":
|
||||||
|
echo " (" . lang('general_word_qslcard_electronic') . ")";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
echo '">▲</span>';
|
||||||
|
echo '<span ';
|
||||||
|
if ($row->COL_QSL_RCVD != "N") {
|
||||||
|
if ($row->COL_QSLRDATE != null) {
|
||||||
|
$timestamp = ' ' . date($custom_date_format, strtotime($row->COL_QSLRDATE));
|
||||||
|
} else {
|
||||||
|
$timestamp = '';
|
||||||
|
}
|
||||||
|
switch ($row->COL_QSL_RCVD) {
|
||||||
|
case "Y":
|
||||||
|
echo "class=\"qsl-green\" data-bs-toggle=\"tooltip\" title=\"" . lang('general_word_received') . $timestamp;
|
||||||
|
break;
|
||||||
|
case "Q":
|
||||||
|
echo "class=\"qsl-yellow\" data-bs-toggle=\"tooltip\" title=\"" . lang('general_word_queued') . $timestamp;
|
||||||
|
break;
|
||||||
|
case "R":
|
||||||
|
echo "class=\"qsl-yellow\" data-bs-toggle=\"tooltip\" title=\"" . lang('general_word_requested') . $timestamp;
|
||||||
|
break;
|
||||||
|
case "I":
|
||||||
|
echo "class=\"qsl-grey\" data-bs-toggle=\"tooltip\" title=\"" . lang('general_word_invalid_ignore') . $timestamp;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
echo "class=\"qsl-red";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
echo "class=\"qsl-red";
|
||||||
|
}
|
||||||
|
if ($row->COL_QSL_RCVD_VIA != "") {
|
||||||
|
switch ($row->COL_QSL_RCVD_VIA) {
|
||||||
|
case "B":
|
||||||
|
echo " (" . lang('general_word_qslcard_bureau') . ")";
|
||||||
|
break;
|
||||||
|
case "D":
|
||||||
|
echo " (" . lang('general_word_qslcard_direct') . ")";
|
||||||
|
break;
|
||||||
|
case "M":
|
||||||
|
echo " (Manager)";
|
||||||
|
break;
|
||||||
|
case "E":
|
||||||
|
echo " (" . lang('general_word_qslcard_electronic') . ")";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
echo '">▼</span>';
|
||||||
|
?>
|
||||||
|
<?php if ($this->session->userdata('user_eqsl_name') != "") {
|
||||||
|
echo '<td style=\'text-align: center\' class="eqsl">';
|
||||||
|
echo '<span ';
|
||||||
|
if ($row->COL_EQSL_QSL_SENT == "Y") {
|
||||||
|
echo "title=\"" . lang('eqsl_short') . " " . lang('general_word_sent');
|
||||||
|
if ($row->COL_EQSL_QSLSDATE != null) {
|
||||||
|
$timestamp = strtotime($row->COL_EQSL_QSLSDATE);
|
||||||
|
echo " " . ($timestamp != '' ? date($custom_date_format, $timestamp) : '');
|
||||||
|
}
|
||||||
|
echo "\" data-bs-toggle=\"tooltip\"";
|
||||||
|
}
|
||||||
|
echo ' class="eqsl-';
|
||||||
|
echo ($row->COL_EQSL_QSL_SENT == 'Y') ? 'green' : 'red';
|
||||||
|
echo '">▲</span>';
|
||||||
|
|
||||||
|
echo '<span ';
|
||||||
|
if ($row->COL_EQSL_QSL_RCVD == "Y") {
|
||||||
|
echo "title=\"" . lang('eqsl_short') . " " . lang('general_word_received');
|
||||||
|
if ($row->COL_EQSL_QSLRDATE != null) {
|
||||||
|
$timestamp = strtotime($row->COL_EQSL_QSLRDATE);
|
||||||
|
echo " " . ($timestamp != '' ? date($custom_date_format, $timestamp) : '');
|
||||||
|
}
|
||||||
|
echo "\" data-bs-toggle=\"tooltip\"";
|
||||||
|
}
|
||||||
|
echo ' class="eqsl-';
|
||||||
|
echo ($row->COL_EQSL_QSL_RCVD == 'Y') ? 'green' : 'red';
|
||||||
|
echo '">';
|
||||||
|
if ($row->COL_EQSL_QSL_RCVD == 'Y') {
|
||||||
|
echo '<a style="color: green" href="';
|
||||||
|
echo site_url("eqsl/image/" . $row->COL_PRIMARY_KEY);
|
||||||
|
echo '" data-fancybox="images" data-width="528" data-height="336">▼</a>';
|
||||||
|
} else {
|
||||||
|
echo '▼';
|
||||||
|
}
|
||||||
|
echo '</span>';
|
||||||
|
echo '</td>';
|
||||||
|
} ?>
|
||||||
|
|
||||||
|
<?php if ($this->session->userdata('user_lotw_name') != "") {
|
||||||
|
echo '<td style=\'text-align: center\' class="lotw">';
|
||||||
|
echo '<span ';
|
||||||
|
if ($row->COL_LOTW_QSL_SENT == "Y") {
|
||||||
|
echo "title=\"" . lang('lotw_short') . " " . lang('general_word_sent');
|
||||||
|
if ($row->COL_LOTW_QSLSDATE != null) {
|
||||||
|
$timestamp = strtotime($row->COL_LOTW_QSLSDATE);
|
||||||
|
echo " " . ($timestamp != '' ? date($custom_date_format, $timestamp) : '');
|
||||||
|
}
|
||||||
|
echo "\" data-bs-toggle=\"tooltip\"";
|
||||||
|
}
|
||||||
|
echo ' class="lotw-';
|
||||||
|
echo ($row->COL_LOTW_QSL_SENT == 'Y') ? 'green' : 'red';
|
||||||
|
echo '">▲</span>';
|
||||||
|
|
||||||
|
echo '<span ';
|
||||||
|
if ($row->COL_LOTW_QSL_RCVD == "Y") {
|
||||||
|
echo "title=\"" . lang('lotw_short') . " " . lang('general_word_received');
|
||||||
|
if ($row->COL_LOTW_QSLRDATE != null) {
|
||||||
|
$timestamp = strtotime($row->COL_LOTW_QSLRDATE);
|
||||||
|
echo " " . ($timestamp != '' ? date($custom_date_format, $timestamp) : '');
|
||||||
|
}
|
||||||
|
echo "\" data-bs-toggle=\"tooltip\"";
|
||||||
|
}
|
||||||
|
echo ' class="lotw-';
|
||||||
|
echo ($row->COL_LOTW_QSL_RCVD == 'Y') ? 'green' : 'red';
|
||||||
|
echo '">▼</span>';
|
||||||
|
echo '</td>';
|
||||||
|
} ?>
|
||||||
|
|
||||||
|
<?php if ($this->session->userdata('hasQrzKey') != "") {
|
||||||
|
echo '<td style=\'text-align: center\' class="qrz">';
|
||||||
|
echo '<span ';
|
||||||
|
if ($row->COL_QRZCOM_QSO_UPLOAD_STATUS == "Y") {
|
||||||
|
echo "title=\"QRZ " . lang('general_word_sent');
|
||||||
|
if ($row->COL_QRZCOM_QSO_UPLOAD_DATE != null) {
|
||||||
|
$timestamp = strtotime($row->COL_QRZCOM_QSO_UPLOAD_DATE);
|
||||||
|
echo " " . ($timestamp != '' ? date($custom_date_format, $timestamp) : '');
|
||||||
|
}
|
||||||
|
echo "\" data-bs-toggle=\"tooltip\"";
|
||||||
|
}
|
||||||
|
echo ' class="qrz-';
|
||||||
|
echo ($row->COL_QRZCOM_QSO_UPLOAD_STATUS == 'Y') ? 'green' : 'red';
|
||||||
|
echo '">▲</span>';
|
||||||
|
|
||||||
|
echo '<span ';
|
||||||
|
if ($row->COL_QRZCOM_QSO_DOWNLOAD_STATUS == "Y") {
|
||||||
|
echo "title=\"QRZ " . lang('general_word_received');
|
||||||
|
if ($row->COL_QRZCOM_QSO_DOWNLOAD_DATE != null) {
|
||||||
|
$timestamp = strtotime($row->COL_QRZCOM_QSO_DOWNLOAD_DATE);
|
||||||
|
echo " " . ($timestamp != '' ? date($custom_date_format, $timestamp) : '');
|
||||||
|
}
|
||||||
|
echo "\" data-bs-toggle=\"tooltip\"";
|
||||||
|
}
|
||||||
|
echo ' class="qrz-';
|
||||||
|
echo ($row->COL_QRZCOM_QSO_DOWNLOAD_STATUS == 'Y') ? 'green' : 'red';
|
||||||
|
echo '">▼</span>';
|
||||||
|
echo '</td>';
|
||||||
|
} ?>
|
||||||
|
|
||||||
|
<?php } ?>
|
||||||
|
|
||||||
|
<?php if (isset($row->station_callsign)) { ?>
|
||||||
|
<td>
|
||||||
|
<span class="badge text-bg-light"><?php echo $row->station_callsign; ?></span>
|
||||||
|
</td>
|
||||||
|
<?php } ?>
|
||||||
|
|
||||||
|
<?php if (($this->config->item('use_auth')) && ($this->session->userdata('user_type') >= 2)) { ?>
|
||||||
|
<td>
|
||||||
|
<div class="dropdown">
|
||||||
|
<a class="btn btn-sm btn-secondary dropdown-toggle" href="#" role="button" id="dropdownMenuLink" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||||
|
<i class="fas fa-cog"></i>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<div class="dropdown-menu menuOnResultTab" aria-labelledby="dropdownMenuLink" data-qsoid="qso_<?php echo $row->COL_PRIMARY_KEY; ?>">
|
||||||
|
<a class="dropdown-item" id="edit_qso" href="javascript:qso_edit(<?php echo $row->COL_PRIMARY_KEY; ?>)"><i class="fas fa-edit"></i> <?php echo lang('general_edit_qso'); ?></a>
|
||||||
|
|
||||||
|
<?php if ($row->COL_QSL_SENT != 'Y') { ?>
|
||||||
|
<div class="qsl_sent_<?php echo $row->COL_PRIMARY_KEY; ?>">
|
||||||
|
<div class="dropdown-divider"></div>
|
||||||
|
<a class="dropdown-item" href="javascript:qsl_sent(<?php echo $row->COL_PRIMARY_KEY; ?>, 'B')"><i class="fas fa-envelope"></i> <?php echo lang('general_mark_qsl_tx_bureau'); ?></a>
|
||||||
|
<a class="dropdown-item" href="javascript:qsl_sent(<?php echo $row->COL_PRIMARY_KEY; ?>, 'D')"><i class="fas fa-envelope"></i> <?php echo lang('general_mark_qsl_tx_direct'); ?></a>
|
||||||
|
</div>
|
||||||
|
<?php } ?>
|
||||||
|
|
||||||
|
<?php if ($row->COL_QSL_RCVD != 'Y') { ?>
|
||||||
|
<div class="qsl_rcvd_<?php echo $row->COL_PRIMARY_KEY; ?>">
|
||||||
|
<div class="dropdown-divider"></div>
|
||||||
|
<a class="dropdown-item" href="javascript:qsl_rcvd(<?php echo $row->COL_PRIMARY_KEY; ?>, 'B')"><i class="fas fa-envelope"></i> <?php echo lang('general_mark_qsl_rx_bureau'); ?></a>
|
||||||
|
<a class="dropdown-item" href="javascript:qsl_rcvd(<?php echo $row->COL_PRIMARY_KEY; ?>, 'D')"><i class="fas fa-envelope"></i> <?php echo lang('general_mark_qsl_rx_direct'); ?></a>
|
||||||
|
<a class="dropdown-item" href="javascript:qsl_requested(<?php echo $row->COL_PRIMARY_KEY; ?>, 'D')"><i class="fas fa-envelope"></i><?php echo lang('general_mark_qsl_requested'); ?></a>
|
||||||
|
<a class="dropdown-item" href="javascript:qsl_ignore(<?php echo $row->COL_PRIMARY_KEY; ?>, 'D')"><i class="fas fa-envelope"></i><?php echo lang('general_mark_qsl_not_required'); ?></a>
|
||||||
|
</div>
|
||||||
|
<?php } ?>
|
||||||
|
|
||||||
|
<div class="dropdown-divider"></div>
|
||||||
|
|
||||||
|
<a class="dropdown-item" href="https://www.qrz.com/db/<?php echo $row->COL_CALL; ?>" target="_blank"><i class="fas fa-question"></i><?php echo lang('general_lookup_qrz'); ?></a>
|
||||||
|
|
||||||
|
<a class="dropdown-item" href="https://www.hamqth.com/<?php echo $row->COL_CALL; ?>" target="_blank"><i class="fas fa-question"></i><?php echo lang('general_lookup_hamqth'); ?></a>
|
||||||
|
|
||||||
|
<div class="dropdown-divider"></div>
|
||||||
|
|
||||||
|
<a class="dropdown-item" href="javascript:qso_delete(<?php echo $row->COL_PRIMARY_KEY; ?>, '<?php echo $row->COL_CALL; ?>')"><i class="fas fa-trash-alt"></i> <?php echo lang('general_delete_qso'); ?></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
<?php } ?>
|
||||||
|
</tr>
|
||||||
|
<?php $i++;
|
||||||
|
} ?>
|
||||||
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
</div>
|
</div>
|
|
@ -36,8 +36,22 @@
|
||||||
|
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<label for="stationCallsignInput"><?php echo lang("station_location_callsign"); ?></label>
|
<label for="stationCallsignInput"><?php echo lang("station_location_callsign"); ?></label>
|
||||||
<input type="text" class="form-control" name="station_callsign" id="stationCallsignInput" aria-describedby="stationCallsignInputHelp" placeholder="2M0SQL" required>
|
<input type="text" class="form-control" name="station_callsign" id="stationCallsignInput" aria-describedby="stationCallsignInputHelp" placeholder="2M0SQL" pattern="[a-zA-Z0-9\/]*" required oninput="validateInput(this);">
|
||||||
<small id="stationCallsignInputHelp" class="form-text text-muted"><?php echo lang("station_location_callsign_hint"); ?></small>
|
<div id="stationCallsignInputError" style="display: none; color: red;">Only letters, numbers, and forward slashes are allowed.</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
function validateInput(input) {
|
||||||
|
var errorDiv = document.getElementById('stationCallsignInputError');
|
||||||
|
if (input.checkValidity()) {
|
||||||
|
input.classList.remove('error-red-border');
|
||||||
|
errorDiv.style.display = 'none';
|
||||||
|
} else {
|
||||||
|
input.classList.add('error-red-border');
|
||||||
|
errorDiv.style.display = 'block';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<small id="stationCallsignInputHelp" class="form-text text-muted"><?php echo lang("station_location_callsign_hint"); ?></small>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
|
|
|
@ -53,7 +53,7 @@
|
||||||
<th style="text-align: center; vertical-align: middle;" scope="col"><?php echo lang('admin_delete'); ?></th>
|
<th style="text-align: center; vertical-align: middle;" scope="col"><?php echo lang('admin_delete'); ?></th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody hx-confirm="Are you sure you want to delete the user?" hx-target="closest tr" hx-swap="outerHTML swap:1s">
|
||||||
|
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
@ -80,11 +80,10 @@
|
||||||
}
|
}
|
||||||
?></td>
|
?></td>
|
||||||
<td style="text-align: center; vertical-align: middle;">
|
<td style="text-align: center; vertical-align: middle;">
|
||||||
<?php
|
<?php if ($_SESSION['user_id'] != $row->user_id) { ?>
|
||||||
if ($_SESSION['user_id'] != $row->user_id) {
|
<button class="btn btn-danger btn-sm" hx-delete="<?php echo site_url('user/delete_new/'.$row->user_id);?>"><i class="fas fa-user-minus"></i></button>
|
||||||
echo "<a href=" . site_url('user/delete') . "/" . $row->user_id . " class=\"btn btn-danger btn-sm\"><i class=\"fas fa-user-minus\"></i></a>";
|
<?php } ?>
|
||||||
}
|
</td>
|
||||||
?></td>
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<?php $i++;
|
<?php $i++;
|
||||||
|
|
|
@ -796,4 +796,13 @@ label {
|
||||||
}
|
}
|
||||||
|
|
||||||
.table-responsive>table .dropdown{position:static;}
|
.table-responsive>table .dropdown{position:static;}
|
||||||
.table-responsive>table .dropdown>.dropdown-menu{left:auto !important;top:auto !important;}
|
.table-responsive>table .dropdown>.dropdown-menu{left:auto !important;top:auto !important;}
|
||||||
|
|
||||||
|
tr.htmx-swapping td {
|
||||||
|
opacity: 0;
|
||||||
|
transition: opacity 1s ease-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
.error-red-border {
|
||||||
|
border-color: red;
|
||||||
|
}
|
File diff suppressed because one or more lines are too long
94161
assets/json/pota.txt
94161
assets/json/pota.txt
Plik diff jest za duży
Load Diff
|
@ -0,0 +1,8 @@
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>403 Forbidden</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<p>Directory access is forbidden.</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,22 @@
|
||||||
|
version: "3.8"
|
||||||
|
|
||||||
|
services:
|
||||||
|
web:
|
||||||
|
build: .
|
||||||
|
env_file:
|
||||||
|
- .env
|
||||||
|
ports:
|
||||||
|
- "80:80"
|
||||||
|
volumes:
|
||||||
|
- ./:/var/www/html:rw
|
||||||
|
depends_on:
|
||||||
|
- db
|
||||||
|
|
||||||
|
db:
|
||||||
|
image: mariadb:latest
|
||||||
|
env_file:
|
||||||
|
- .env
|
||||||
|
volumes:
|
||||||
|
- db_data:/var/lib/mysql
|
||||||
|
volumes:
|
||||||
|
db_data: {}
|
|
@ -148,10 +148,10 @@ if($_POST) {
|
||||||
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>Database settings</legend>
|
<legend>Database settings</legend>
|
||||||
<label for="hostname">Hostname</label><input type="text" id="hostname" value="localhost" class="input_text" name="hostname" />
|
<label for="hostname">Hostname</label><input type="text" id="hostname" value="<?php echo getenv('MYSQL_HOST') ?: 'localhost'; ?>" class="input_text" name="hostname" />
|
||||||
<label for="username">Username</label><input type="text" id="username" class="input_text" name="username" />
|
<label for="username">Username</label><input type="text" id="username" value="<?php echo getenv('MYSQL_USER'); ?>" class="input_text" name="username" />
|
||||||
<label for="password">Password</label><input type="password" id="password" class="input_text" name="password" />
|
<label for="password">Password</label><input type="password" id="password" value="<?php echo getenv('MYSQL_PASSWORD'); ?>" class="input_text" name="password" />
|
||||||
<label for="database">Database Name</label><input type="text" id="database" class="input_text" name="database" />
|
<label for="database">Database Name</label><input type="text" id="database" value="<?php echo getenv('MYSQL_DATABASE'); ?>" class="input_text" name="database" />
|
||||||
<input type="submit" value="Install" id="submit" />
|
<input type="submit" value="Install" id="submit" />
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</form>
|
</form>
|
||||||
|
|
Ładowanie…
Reference in New Issue