Version 2.4.7
pull/2426/head 2.4.7
Peter Goodhall 2023-08-17 14:02:43 +01:00 zatwierdzone przez GitHub
commit 98bd2ea245
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
70 zmienionych plików z 1492 dodań i 938 usunięć

Wyświetl plik

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

Wyświetl plik

@ -151,262 +151,8 @@ class API extends CI_Controller {
}
}
// FUNCTION: search()
// Handle search requests
/*
Okay, so here's how it works in a nutshell...
*******************************************************************
Because this is effectively just a filter between the query string
and a MySQL statement, if done wrong we're just asking for pain.
DO NOT alter any of the filtering statements without fully
understanding what you're doing. CodeIgniter provides some
protection against unwanted characters in the query string, but
this should in no way be relied upon for safety.
*******************************************************************
Example query:-
.../search/query[Call~M0*(and)(Locator~I*(or)Locator~J*)]/limit[10]/fields[distinct(Call),Locator]/order[Call(asc)]
There's four parts to this query, separated with forward slashes. It's effectively a heavily-sanitised
MySQL query, hence the hideous search and replace code blocks below.
FIELDS
------
Straightforward - input is sanitised and passed on - in the example, this ends up as "DISTINCT (Call),Locator",
which is then the first argument to 'SELECT'
QUERY
-----
This forms the 'WHERE' clause.
* '(and)' and '(or)' are expanded out to ' AND ' and ' OR '
* Parentheses are preserved
* '~' is expanded out to ' LIKE '
* '*' is translated to '%'
* Values are encapsulated in quote marks
So in the example, this translates to "WHERE Call LIKE 'M0%' AND (Locator LIKE 'I%' OR Locator LIKE 'J%')"
ORDER
-----
Sanitised, so our example ends up as "ORDER BY Call ASC".
LIMIT
-----
Straightforward - what's between the square brackets is passed as an argument to 'LIMIT'
Finally, once this has been done, each field name is translated to the MySQL column name.
*/
function search()
{
// Load the API and Logbook models
$this->load->model('api_model');
$this->load->model('logbook_model');
$this->load->model('user_model');
$arguments = $this->_retrieve();
print_r($arguments);
return;
if((!$this->user_model->authorize(3)) && ($this->api_model->authorize($arguments['key']) == 0)) {
$this->session->set_flashdata('notice', 'You\'re not allowed to do that!'); redirect('dashboard');
}
$this->api_model->update_last_used($obj['key']);
// Retrieve the arguments from the query string
$data['data']['format'] = $arguments['format'];
// Call the parser within the API model to build the query
$query = $this->api_model->select_parse($arguments);
// Execute the query, and retrieve the results
$s = $this->logbook_model->api_search_query($query);
$a = 0;
// Print query results using original column names and exit
if ($arguments['format'] == 'original'){
$results = array();
foreach($s['results']->result() as $row){
//print_r($row);
array_push($results, $row);
}
print json_encode($results);
return;
}
if(isset($s['results'])) {
$results = $s['results'];
// Cycle through the results, and translate between MySQL column names
// and more friendly, descriptive names
if($results->num_rows() != 0)
{
foreach ($results->result() as $row) {
$record = (array)$row;
$r[$a]['rid'] = $a;
while (list($key, $val) = each($record)) {
$r[$a][$this->api_model->name($key)] = $val;
}
$a++;
}
// Add the result record to the main results array
$data['data']['search_Result']['results'] = $r;
}
else
{
// We've got no results, so make this empty for completeness
$data['data']['search_Result']['results'] = "";
}
} else {
$data['data']['error'] = $s['error'];
$data['data']['search_Result']['results'] = "";
}
// Add some debugging information to the XML output
$data['data']['queryInfo']['call'] = "search";
$data['data']['queryInfo']['dbQuery'] = $s['query'];
$data['data']['queryInfo']['numResults'] = $a;
$data['data']['queryInfo']['executionTime'] = $s['time'];
// Load the XML output view
$this->load->view('api/index', $data);
}
/*
* version of search that is callable internally
* $arguments is an array of columns to query
*/
function api_search($arguments){
// Load the API and Logbook models
$this->load->model('api_model');
$this->load->model('logbook_model');
$this->load->model('user_model');
if((!$this->user_model->authorize(3)) && ($this->api_model->authorize($arguments['key']) == 0)) {
$this->session->set_flashdata('notice', 'You\'re not allowed to do that!'); redirect('dashboard');
}
$this->api_model->update_last_used($obj['key']);
// Retrieve the arguments from the query string
$data['data']['format'] = $arguments['format'];
// Call the parser within the API model to build the query
$query = $this->api_model->select_parse($arguments);
// Execute the query, and retrieve the results
$s = $this->logbook_model->api_search_query($query);
return $s;
}
function validate()
{
// Load the API and Logbook models
$this->load->model('api_model');
$this->load->model('logbook_model');
// Retrieve the arguments from the query string
$arguments = $this->_retrieve();
// Add some debugging information to the XML output
$data['data'] = $arguments;
$data['data']['queryInfo']['call'] = "validate";
$data['data']['queryInfo']['dbQuery'] = "";
$data['data']['queryInfo']['numResults'] = 1;
$data['data']['queryInfo']['executionTime'] = 0;
$data['data']['validate_Result']['results'] = array(0 => array('Result' => $this->api_model->authorize($arguments['key'])));
$this->load->view('api/index', $data);
}
function add()
{
// Load the API and Logbook models
$this->load->model('api_model');
$this->load->model('logbook_model');
$this->load->model('user_model');
if(!$this->user_model->authorize(3)) { $this->session->set_flashdata('notice', 'You\'re not allowed to do that!'); redirect('dashboard'); }
// Retrieve the arguments from the query string
$arguments = $this->_retrieve();
// Call the parser within the API model to build the query
$query = $this->api_model->insert_parse($arguments);
# Check for guessable fields
if(!isset($query['COL_TIME_ON']))
{
$query['COL_TIME_ON'] = date("Y-m-d H:i:s", time());
}
if(!isset($query['COL_TIME_OFF']))
{
$query['COL_TIME_OFF'] = date("Y-m-d H:i:s", time());
}
$data['data']['queryInfo']['dbQuery'] = "";
$data['data']['queryInfo']['executionTime'] = 0;
if(!isset($query['COL_CALL'])) {
$data['data']['add_Result']['results'] = array(0 => array('Result' => 'EMISSINGCALL'));
} else {
$s = $this->logbook_model->api_insert_query($query);
$data['data']['queryInfo']['dbQuery'] = $s['query'];
$data['data']['queryInfo']['executionTime'] = $s['time'];
$data['data']['add_Result']['results'] = array(0 => array('Result' => $s['result_string']));
}
// Add some debugging information to the XML output
$data['data']['queryInfo']['call'] = "add";
$data['data']['queryInfo']['numResults'] = 0;
$this->load->view('api/index', $data);
}
// FUNCTION: _retrieve()
// Pull the search query arguments from the query string
private function _retrieve()
{
// This whole function could probably have been done in one line... if this was Perl.
$arguments = array();
// Retrieve each arguments
$query = preg_grep("/^query=(.*)$/", $this->uri->segments);
$limit = preg_grep("/^limit=(.*)$/", $this->uri->segments);
$order = preg_grep("/^order=(.*)$/", $this->uri->segments);
$fields = preg_grep("/^fields=(.*)$/", $this->uri->segments);
$format = preg_grep("/^format=(.*)$/", $this->uri->segments);
$key = preg_grep("/^key=(.*)$/", $this->uri->segments);
// Strip each argument
$arguments['query'] = substr(array_pop($query), 6);
$arguments['query'] = substr($arguments['query'], 0, strlen($arguments['query']));
$arguments['limit'] = substr(array_pop($limit), 6);
$arguments['limit'] = substr($arguments['limit'], 0, strlen($arguments['limit']));
$arguments['order'] = substr(array_pop($order), 6);
$arguments['order'] = substr($arguments['order'], 0, strlen($arguments['order']));
$arguments['fields'] = substr(array_pop($fields), 7);
$arguments['fields'] = substr($arguments['fields'], 0, strlen($arguments['fields']));
$arguments['format'] = substr(array_pop($format), 7);
$arguments['format'] = substr($arguments['format'], 0, strlen($arguments['format']));
$arguments['key'] = substr(array_pop($key), 4);
$arguments['key'] = substr($arguments['key'], 0, strlen($arguments['key']));
// By default, assume XML for the format if not otherwise set
if($arguments['format'] == "") {
$arguments['format'] = "xml";
}
// Return the arguments
return $arguments;
}
/*
/*
*
* Function: QSO
* Task: allows passing of ADIF data to Cloudlog
@ -482,11 +228,19 @@ class API extends CI_Controller {
$obj = json_decode(file_get_contents("php://input"), true);
if ($obj === NULL) {
echo json_encode(['status' => 'failed', 'reason' => "wrong JSON"]);
return;
}
if(!isset($obj['key']) || $this->api_model->authorize($obj['key']) == 0) {
http_response_code(401);
echo json_encode(['status' => 'failed', 'reason' => "missing api key"]);
return;
}
if(!isset($obj['logbook_public_slug']) || !isset($obj['callsign'])) {
http_response_code(401);
echo json_encode(['status' => 'failed', 'reason' => "missing fields"]);
return;
}
if($obj['logbook_public_slug'] != "" && $obj['callsign'] != "") {
@ -562,6 +316,12 @@ class API extends CI_Controller {
echo json_encode(['status' => 'failed', 'reason' => "missing api key"]);
}
if(!isset($obj['logbook_public_slug']) || !isset($obj['grid'])) {
http_response_code(401);
echo json_encode(['status' => 'failed', 'reason' => "missing fields"]);
return;
}
if($obj['logbook_public_slug'] != "" && $obj['grid'] != "") {
$logbook_slug = $obj['logbook_public_slug'];

Wyświetl plik

@ -97,37 +97,6 @@ class Awards extends CI_Controller {
}
public function dok_details_ajax(){
$a = $this->security->xss_clean($this->input->post());
$q = "";
foreach ($a as $key => $value) {
$q .= $key."=".$value.("(and)");
}
$q = substr($q, 0, strlen($q)-13);
$arguments["query"] = $q;
$arguments["fields"] = '';
$arguments["format"] = "json";
$arguments["limit"] = '';
$arguments["order"] = '';
$arguments["join_station_profile"] = true;
// Load the API and Logbook models
$this->load->model('api_model');
$this->load->model('logbook_model');
// Call the parser within the API model to build the query
$query = $this->api_model->select_parse($arguments);
// Execute the query, and retrieve the results
$data = $this->logbook_model->api_search_query($query);
// Render Page
$data['page_title'] = "Log View - DOK";
$data['filter'] = str_replace("(and)", ", ", $q);
$this->load->view('awards/details', $data);
}
public function dxcc () {
$this->load->model('dxcc');
$this->load->model('modes');
@ -252,7 +221,6 @@ class Awards extends CI_Controller {
$mode = str_replace('"', "", $this->security->xss_clean($this->input->post("Mode")));
$type = $this->security->xss_clean($this->input->post('Type'));
$qsl = $this->input->post('QSL') == null ? '' : $this->security->xss_clean($this->input->post('QSL'));
$data['results'] = $this->logbook_model->qso_details($searchphrase, $band, $mode, $type, $qsl);
// This is done because we have two different ways to get dxcc info in Cloudlog. Once is using the name (in awards), and the other one is using the ADIF DXCC.

Wyświetl plik

@ -5,7 +5,7 @@ class Csv extends CI_Controller {
public function index() {
$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(2)) { $this->session->set_flashdata('notice', 'You\'re not allowed to do that!'); redirect('dashboard'); }
$this->load->model('modes');
$this->load->model('logbook_model');
@ -26,8 +26,11 @@ class Csv extends CI_Controller {
}
public function export() {
$this->load->model('csv_model');
$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'); }
$this->load->model('csv_model');
// Parameters
$station_id = $this->security->xss_clean($this->input->post('station_profile'));
$band = $this->security->xss_clean($this->input->post('band'));

Wyświetl plik

@ -87,12 +87,19 @@ class Dashboard extends CI_Controller {
$data['total_qsl_sent'] = $QSLStatsBreakdownArray['QSL_Sent'];
$data['total_qsl_rcvd'] = $QSLStatsBreakdownArray['QSL_Received'];
$data['total_qsl_requested'] = $QSLStatsBreakdownArray['QSL_Requested'];
$data['qsl_sent_today'] = $QSLStatsBreakdownArray['QSL_Sent_today'];
$data['qsl_rcvd_today'] = $QSLStatsBreakdownArray['QSL_Received_today'];
$data['qsl_requested_today'] = $QSLStatsBreakdownArray['QSL_Requested_today'];
$data['total_eqsl_sent'] = $QSLStatsBreakdownArray['eQSL_Sent'];
$data['total_eqsl_rcvd'] = $QSLStatsBreakdownArray['eQSL_Received'];
$data['eqsl_sent_today'] = $QSLStatsBreakdownArray['eQSL_Sent_today'];
$data['eqsl_rcvd_today'] = $QSLStatsBreakdownArray['eQSL_Received_today'];
$data['total_lotw_sent'] = $QSLStatsBreakdownArray['LoTW_Sent'];
$data['total_lotw_rcvd'] = $QSLStatsBreakdownArray['LoTW_Received'];
$data['lotw_sent_today'] = $QSLStatsBreakdownArray['LoTW_Sent_today'];
$data['lotw_rcvd_today'] = $QSLStatsBreakdownArray['LoTW_Received_today'];
$data['last_five_qsos'] = $this->logbook_model->get_last_qsos('18', $logbooks_locations_array);
@ -210,6 +217,6 @@ class Dashboard extends CI_Controller {
echo "}";
}
}

Wyświetl plik

@ -4,8 +4,7 @@ class Dxatlas extends CI_Controller {
public function index() {
$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(2)) { $this->session->set_flashdata('notice', 'You\'re not allowed to do that!'); redirect('dashboard'); }
$this->load->model('modes');
$this->load->model('logbook_model');
@ -26,6 +25,9 @@ class Dxatlas extends CI_Controller {
}
public function export() {
$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'); }
$this->load->model('dxatlas_model');
// Parameters
@ -45,6 +47,8 @@ class Dxatlas extends CI_Controller {
}
function generateFiles($wkdArray, $cfmArray, $band) {
$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'); }
$gridCfmArray = [];
$gridWkdArray = [];
@ -100,9 +104,11 @@ class Dxatlas extends CI_Controller {
}
function makeZip($gridWkdString, $gridCfmString, $band) {
$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'); }
$zipFileName = 'dxatlas_gridsquares_'. $band . '.zip';
// Prepare File
$file = tempnam("tmp", "zip");
$file = tempnam(".", "zip");
$zip = new ZipArchive();
$zip->open($file, ZipArchive::OVERWRITE);

Wyświetl plik

@ -463,7 +463,7 @@ class eqsl extends CI_Controller {
}
function writeEqslNotSent($qslsnotsent, $custom_date_format) {
$table = '<table = style="width:100%" class="table-sm table table-bordered table-hover table-striped table-condensed text-center">';
$table = '<table = style="width:100%" class="table-sm table qsotable table-bordered table-hover table-striped table-condensed text-center">';
$table .= "<thead><tr class=\"titles\">";
$table .= "<th>Date</th>";
$table .= "<th>Time</th>";

Wyświetl plik

@ -1,21 +0,0 @@
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Export extends CI_Controller {
public function index()
{
$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'); }
$data['page_title'] = "Data Export";
$this->load->view('interface_assets/header', $data);
$this->load->view('export/index');
$this->load->view('interface_assets/footer');
}
}
/* End of file welcome.php */
/* Location: ./application/controllers/welcome.php */

Wyświetl plik

@ -13,9 +13,9 @@ class Kmlexport extends CI_Controller {
$this->load->model('user_model');
$this->load->model('modes');
$this->load->model('logbook_model');
$this->load->model('bands');
$this->load->model('bands');
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(2)) { $this->session->set_flashdata('notice', 'You\'re not allowed to do that!'); redirect('dashboard'); }
$data['worked_bands'] = $this->bands->get_worked_bands(); // Used in the view for band select
$data['modes'] = $this->modes->active(); // Used in the view for mode select
@ -29,6 +29,8 @@ class Kmlexport extends CI_Controller {
}
public function export() {
$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'); }
// Load Libraries
$this->load->library('qra');
$this->load->helper('file');

Wyświetl plik

@ -127,7 +127,6 @@ class Logbook extends CI_Controller {
"callsign_us_county" => "",
"qsl_manager" => "",
"bearing" => "",
"latlng" => "",
"workedBefore" => false,
"lotw_member" => $lotw_member,
"lotw_days" => $lotw_days,
@ -145,14 +144,14 @@ class Logbook extends CI_Controller {
$measurement_base = $this->session->userdata('user_measurement_base');
}
$return['callsign_name'] = $this->nval($callbook['name'], $this->logbook_model->call_name($callsign));
$return['callsign_qra'] = $this->nval($callbook['gridsquare'], $this->logbook_model->call_qra($callsign));
$return['callsign_name'] = $this->nval($callbook['name'] ?? '', $this->logbook_model->call_name($callsign));
$return['callsign_qra'] = $this->nval($callbook['gridsquare'] ?? '', $this->logbook_model->call_qra($callsign));
$return['callsign_distance'] = $this->distance($return['callsign_qra']);
$return['callsign_qth'] = $this->nval($callbook['city'], $this->logbook_model->call_qth($callsign));
$return['callsign_iota'] = $this->nval($callbook['iota'], $this->logbook_model->call_iota($callsign));
$return['qsl_manager'] = $this->nval($callbook['qslmgr'], $this->logbook_model->call_qslvia($callsign));
$return['callsign_state'] = $this->nval($callbook['state'], $this->logbook_model->call_state($callsign));
$return['callsign_us_county'] = $this->nval($callbook['us_county'], $this->logbook_model->call_us_county($callsign));
$return['callsign_qth'] = $this->nval($callbook['city'] ?? '', $this->logbook_model->call_qth($callsign));
$return['callsign_iota'] = $this->nval($callbook['iota'] ?? '', $this->logbook_model->call_iota($callsign));
$return['qsl_manager'] = $this->nval($callbook['qslmgr'] ?? '', $this->logbook_model->call_qslvia($callsign));
$return['callsign_state'] = $this->nval($callbook['state'] ?? '', $this->logbook_model->call_state($callsign));
$return['callsign_us_county'] = $this->nval($callbook['us_county'] ?? '', $this->logbook_model->call_us_county($callsign));
$return['workedBefore'] = $this->worked_grid_before($return['callsign_qra'], $type, $band, $mode);
if ($this->session->userdata('user_show_profile_image')) {

Wyświetl plik

@ -115,6 +115,7 @@ class Logbookadvanced extends CI_Controller {
'sota' => xss_clean($this->input->post('sota')),
'pota' => xss_clean($this->input->post('pota')),
'wwff' => xss_clean($this->input->post('wwff')),
'qslimages' => xss_clean($this->input->post('qslimages')),
);
$qsos = [];
@ -140,7 +141,7 @@ class Logbookadvanced extends CI_Controller {
$callbook = $this->logbook_model->loadCallBook($qso['COL_CALL'], $this->config->item('use_fullname'));
if ($callbook['callsign'] !== "") {
if ($callbook['callsign'] ?? "" !== "") {
$this->logbookadvanced_model->updateQsoWithCallbookInfo($qsoID, $qso, $callbook);
$qso['COL_NAME'] = trim($callbook['name']);
if (isset($callbook['qslmgr'])) {
@ -225,4 +226,11 @@ class Logbookadvanced extends CI_Controller {
public function startAtLabel() {
$this->load->view('logbookadvanced/startatform');
}
public function qslSlideshow() {
$cleanids = $this->security->xss_clean($this->input->post('ids'));
$this->load->model('logbookadvanced_model');
$data['qslimages'] = $this->logbookadvanced_model->getQslsForQsoIds($cleanids);
$this->load->view('logbookadvanced/qslcarousel', $data);
}
}

Wyświetl plik

@ -571,6 +571,17 @@ class QSO extends CI_Controller {
echo json_encode($data);
}
// Return Previous QSOs Made in the active logbook
public function component_past_contacts() {
$this->load->model('logbook_model');
if(!$this->user_model->authorize(2)) { $this->session->set_flashdata('notice', 'You\'re not allowed to do that!'); redirect('dashboard'); }
$data['query'] = $this->logbook_model->last_custom('5');
// Load view
$this->load->view('qso/components/previous_contacts', $data);
}
function check_locator($grid) {
$grid = $this->input->post('locator');
// Allow empty locator

Wyświetl plik

@ -1,114 +0,0 @@
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Unconfirmed_Entity_Slots extends CI_Controller {
function __construct()
{
parent::__construct();
$this->load->helper(array('form', 'url'));
$this->load->model('user_model');
if(!$this->user_model->authorize(2)) { $this->session->set_flashdata('notice', 'You\'re not allowed to do that!'); redirect('dashboard'); }
}
public function index()
{
$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'); }
$data['page_title'] = "Showing unconfirmed Entities with Slots";
$this->load->view('interface_assets/header', $data);
$this->load->view('uncfmd_entity_slots/index');
$this->load->view('interface_assets/footer');
}
public function exportadif()
{
// Set memory limit to unlimited to allow heavy usage
ini_set('memory_limit', '-1');
$this->load->model('adif_data');
$data['qsos'] = $this->adif_data->export_printrequested();
$this->load->view('adif/data/exportall', $data);
}
public function exportcsv()
{
// Set memory limit to unlimited to allow heavy usage
ini_set('memory_limit', '-1');
$this->load->model('logbook_model');
$myData = $this->logbook_model->get_qsos_for_printing();
// file name
$filename = 'qsl_export.csv';
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=$filename");
header("Content-Type: application/csv;charset=iso-8859-1");
// file creation
$file = fopen('php://output', 'w');
$header = array("STATION_CALLSIGN",
"COL_CALL",
"COL_QSL_VIA",
"COL_TIME_ON",
"COL_MODE",
"COL_FREQ",
"COL_BAND",
"COL_RST_SENT",
"COL_SAT_NAME",
"COL_SAT_MODE",
"COL_QSL_RCVD",
"COL_COMMENT",
"COL_ROUTING",
"ADIF",
"ENTITY");
fputcsv($file, $header);
foreach ($myData->result() as $qso) {
fputcsv($file,
array($qso->STATION_CALLSIGN,
str_replace("0", "Ø", $qso->COL_CALL),
$qso->COL_QSL_VIA!=""?"Via ".str_replace("0", "Ø", $qso->COL_QSL_VIA):"",
$qso->COL_TIME_ON,
$qso->COL_MODE,
$qso->COL_FREQ,
$qso->COL_BAND,
$qso->COL_RST_SENT,
$qso->COL_SAT_NAME,
$qso->COL_SAT_MODE,
$qso->COL_QSL_RCVD =='Y'?'TNX QSL':'PSE QSL',
$qso->COL_COMMENT,
$qso->COL_ROUTING,
$qso->ADIF,
$qso->ENTITY));
}
fclose($file);
exit;
}
function qsl_printed() {
$this->load->model('qslprint_model');
$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'); }
// Update Logbook to Mark Paper Card Received
$this->qslprint_model->mark_qsos_printed();
$this->session->set_flashdata('notice', 'QSOs are marked as sent via buro');
redirect('logbook');
}
}
/* End of file Qslprint.php */
/* Location: ./application/controllers/Qslprint.php */

Wyświetl plik

@ -8,3 +8,90 @@ $lang['account_column2_text'] = '选择第2列';
$lang['account_column3_text'] = '选择第3列';
$lang['account_column4_text'] = '选择第4列';
$lang['account_column5_text'] = '选择第5列仅日志簿';
$lang['account_create_user_account'] = '创建用户账户i';
$lang['account_edit_account'] = '编辑账户';
$lang['account_account_information'] = '账户信息';
$lang['account_username'] = '用户名';
$lang['account_email_address'] = '电子邮件';
$lang['account_password'] = '密码';
$lang['account_roles'] = '角色';
$lang['account_user_role'] = '用户角色';
$lang['account_theme'] = '主题';
$lang['account_stylesheet'] = '样式表';
$lang['account_personal_information'] = '个人信息';
$lang['account_first_name'] = '姓';
$lang['account_last_name'] = '名';
$lang['account_callsign'] = '呼号';
$lang['account_gridsquare'] = '梅登海德网格';
$lang['account_cloudlog_preferences'] = '偏好选项';
$lang['account_timezone'] = '时区';
$lang['account_date_format'] = '日期格式';
$lang['account_measurement_preferences'] = '距离单位偏好';
$lang['account_select_how_you_would_like_dates_shown_when_logged_into_your_account'] = '选择您登录账户时要显示的日期格式';
$lang['account_choose_which_unit_distances_will_be_shown_in'] = '选择距离单位';
$lang['account_main_menu'] = '主菜单';
$lang['account_show_notes_in_the_main_menu'] = '在主菜单显示便签栏';
$lang['account_gridsquare_and_location_autocomplete'] = '自动填写梅登海德网格和位置';
$lang['account_location_auto_lookup'] = '自动查找位置';
$lang['account_if_set_gridsquare_is_fetched_based_on_location_name'] = '如果开启本选项,将根据位置名称获取梅登海德网格。';
$lang['account_sota_auto_lookup_gridsquare_and_name_for_summit'] = '根据SOTA编号自动查找梅登海德网格和峰名。';
$lang['account_wwff_auto_lookup_gridsquare_and_name_for_reference'] = '根据WWFF编号自动查找梅登海德网格和名称。';
$lang['account_pota_auto_lookup_gridsquare_and_name_for_park'] = '根据POTA编号自动查找梅登海德网格和名称。';
$lang['account_if_set_name_and_gridsquare_is_fetched_from_the_api_and_filled_in_location_and_locator'] = '如果开启此项设置将从API获取名称和梅登海德网格并填写位置和定位器。';
$lang['account_previous_qsl_type'] = '上一个QSL类型';
$lang['account_select_the_type_of_qsl_to_show_in_the_previous_qsos_section'] = '选择要在上一个QSO部分中显示的QSL类型。';
$lang['account_qrzcom_hamqthcom_images'] = 'qrz.com/hamqth.com Images';
$lang['account_show_profile_picture_of_qso_partner_from_qrzcom_hamqthcom_profile_in_the_log_qso_section'] = '在日志QSO部分中显示qrz.com/hamqth.com配置文件的QSO合作伙伴的个人资料图片。';
$lang['account_please_set_your_qrzcom_hamqthcom_credentials_in_the_general_config_file'] = '请在general_config.php文件中设置qrz.com/hamqth.com凭据。';
$lang['account_amsat_status_upload'] = '上传到AMSAT';
$lang['account_upload_status_of_sat_qsos_to'] = '上传卫星QSO到';
$lang['account_logbook_of_the_world'] = 'Logbook of the World';
$lang['account_logbook_of_the_world_lotw_username'] = 'Logbook of The World (LoTW) 用户名';
$lang['account_logbook_of_the_world_lotw_password'] = 'Logbook of The World (LoTW) 密码';
$lang['account_leave_blank_to_keep_existing_password'] = '留空以保留现有密码';
$lang['account_clublog'] = 'Club Log俱乐部日志';
$lang['account_clublog_email_callsign'] = 'Club Log 邮件地址/呼号';
$lang['account_clublog_password'] = 'Club Log 密码';
$lang['account_the_email_or_callsign_you_use_to_login_to_club_log'] = '您用于登录Club Log的电子邮件或呼号。';
$lang['account_eqsl'] = 'eQSL';
$lang['account_eqslcc_username'] = 'eQSL.cc 用户名';
$lang['account_eqslcc_password'] = 'eQSL.cc 密码';
$lang['account_save_account_changes'] = '保存账户更改';
$lang['account_create_account'] = '创建账户';
$lang['account_delete_user_account'] = '删除用户账户';
$lang['account_are_you_sure_you_want_to_delete_the_user_account'] = '您确定要删除用户账户吗?';
$lang['account_yes_delete_this_user'] = '是的,删除此用户';
$lang['account_no_do_not_delete_this_user'] = '不,不要删除此用户';
$lang['account_forgot_password'] = '忘记密码';
$lang['account_you_can_reset_your_password_here'] = '您可以在此处重置密码。';
$lang['account_reset_password'] = '重置密码';
$lang['account_the_email_field_is_required'] = '电子邮件必填';
$lang['account_confirm_password'] = '确认密码';
$lang['account_forgot_your_password'] = '忘记密码?';
$lang['account_login_to_cloudlog'] = '登录Cloudlog';
$lang['account_login'] = '登录';
$lang['account_mastodon'] = 'Mastodon服务器';
$lang['account_user_mastodon'] = 'Mastodon 地址';
$lang['account_gridmap_settings'] = '网格地图设置';
$lang['account_gridmap_default_band'] = '默认波段';

Wyświetl plik

@ -0,0 +1,18 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
$lang['admin_user_line1'] = 'Cloudlog至少需要配置一个用户才能运行。';
$lang['admin_user_line2'] = '用户可以被分配不同的角色这些角色赋予他们不同的权限例如向日志簿添加Qso和访问Cloudlog api。';
$lang['admin_user_line3'] = '页面右上方显示当前登录的用户。';
$lang['admin_user_list'] = '用户列表';
$lang['admin_user'] = '用户名';
$lang['admin_email'] = '电子邮件';
$lang['admin_type'] = '用户类型';
$lang['admin_options'] = '设置';
$lang['admin_create_user'] = '创建用户';
$lang['admin_delete'] = '删除用户';
$lang['admin_edit'] = '编辑用户';

Wyświetl plik

@ -0,0 +1,5 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
$lang['eqsl_short'] = 'eQSL';

Wyświetl plik

@ -48,6 +48,7 @@ $lang['general_word_qslcard_bureau'] = '卡片局';
$lang['general_word_qslcard_electronic'] = '电子';
$lang['general_word_qslcard_manager'] = '管理员';
$lang['general_word_qslcard_via'] = '通过';
$lang['general_word_eqslcard'] = '电子 QSL 卡片';
$lang['general_word_eqslcards'] = 'eQSL 卡片';
$lang['general_word_lotw'] = 'Logbook of the World';
@ -55,6 +56,7 @@ $lang['general_edit_qso'] = '编辑 QSO';
$lang['general_mark_qsl_rx_bureau'] = '标记 已收到的QSL (卡片局)';
$lang['general_mark_qsl_rx_direct'] = '标记 已收到的QSL (直邮)';
$lang['general_mark_qsl_tx_bureau'] = '标记 已发送的QSL (卡片局)';
$lang['general_mark_qsl_rx_electronic'] = '标记 已收到的QSL (电子)';
$lang['general_mark_qsl_tx_direct'] = '标记 已发送的QSL (直邮)';
$lang['general_delete_qso'] = '删除 QSO';
@ -93,13 +95,15 @@ $lang['gen_hamradio_satellite_mode'] = '卫星模式';
$lang['gen_hamradio_logbook'] = '日志簿';
$lang['gen_hamradio_cq_zone'] = 'CQ 分区';
$lang['gen_hamradio_dxcc'] = 'DXCC';
$lang['gen_hamradio_dxcc'] = 'DXCC实体';
$lang['gen_hamradio_deleted_dxcc'] = '删除 DXCC实体';
$lang['gen_hamradio_continent'] = '大陆';
$lang['gen_hamradio_usa_state'] = '州(美国)';
$lang['gen_hamradio_county_reference'] = '县(美国)';
$lang['gen_hamradio_iota_reference'] = 'IOTA 参考';
$lang['gen_hamradio_sota_reference'] = 'SOTA 参考';
$lang['gen_hamradio_wwff_reference'] = 'WWFF 参考';
$lang['gen_hamradio_pota_reference'] = 'POTA 参考';
$lang['gen_hamradio_iota_reference'] = 'IOTA 编号';
$lang['gen_hamradio_sota_reference'] = 'SOTA 编号';
$lang['gen_hamradio_wwff_reference'] = 'WWFF 编号';
$lang['gen_hamradio_pota_reference'] = 'POTA 编号';
$lang['gen_hamradio_dok'] = 'DOK';
$lang['gen_hamradio_state'] = '州';
$lang['gen_hamradio_iota'] = 'IOTA';
@ -107,6 +111,7 @@ $lang['gen_hamradio_sota'] = 'SOTA';
$lang['gen_hamradio_wwff'] = 'WWFF';
$lang['gen_hamradio_pota'] = 'POTA';
$lang['gen_hamradio_gridsquare'] = '网格';
$lang['gen_hamradio_distance'] = '距离';
$lang['gen_hamradio_operator'] = '操作员';
$lang['gen_hamradio_sig'] = 'Sig';
@ -115,8 +120,8 @@ $lang['gen_hamradio_sig_info'] = 'Sig 属性';
// Dashboard Words
$lang['dashboard_you_have_had'] = '今天你有';
$lang['dashboard_qsos_today'] = '个 QSO!';
$lang['dashboard_qso_breakdown'] = 'QSO 分';
$lang['dashboard_countries_breakdown'] = 'DXCC 实体分';
$lang['dashboard_qso_breakdown'] = 'QSO 分';
$lang['dashboard_countries_breakdown'] = 'DXCC 实体分';
$lang['gen_from_date'] = '起始日期';
@ -125,3 +130,13 @@ $lang['gen_this_qso_was_confirmed_on'] = '该 QSO 确认于';
$lang['error_no_logbook_found'] = '没有找到日志本。 您需要在台站日志下添加一个日志本! 在这里添加:';
$lang['copy_to_clipboard'] = '复制到剪贴板';
$lang['africa'] = '非洲';
$lang['antarctica'] = '南极洲';
$lang['asia'] = '亚洲';
$lang['europe'] = '欧洲';
$lang['northamerica'] = '北美洲';
$lang['oceania'] = '大洋洲';
$lang['southamerica'] = '南美洲';
$lang['gen_band_selection'] = '波段选择';

Wyświetl plik

@ -0,0 +1,26 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
$lang['gridsquares_gridsquare_map'] = '网格地图';
$lang['gridsquares_confirmed_is_green'] = '已确认的网格是绿色';
$lang['gridsquares_worked_but_not_confirmed_is_red'] = '已工作但未确认的网格是红色';
$lang['gridsquares_activated_but_not_confirmed_is_red'] = '已激活但未确认的网格是红色';
$lang['gridsquares_this_map_does_not_include_satellite_internet_or_repeater_qsos'] = '此地图不包括通过卫星互联网或中继达成的QSO';
$lang['gridsquares_grid_squares'] = '网格';
$lang['gridsquares_total_count'] = '总数';
$lang['gridsquares_band'] = '频率';
$lang['gridsquares_mode'] = '模式';
$lang['gridsquares_sat'] = '卫星';
$lang['gridsquares_confirmation'] = '确认';
$lang['gridsquares_button_plot'] = '绘制';
$lang['gridsquares_gridsquares'] = '网格';
$lang['gridsquares_gridsquares_confirmed'] = '已确认的网格';
$lang['gridsquares_gridsquares_not_confirmed'] = '未确认的网格';
$lang['gridsquares_gridsquares_total_worked'] = '总共工作过的网格';

Wyświetl plik

@ -5,6 +5,7 @@
<body>
<p>Directory access is forbidden.</p>
1
</body>
</html>

Wyświetl plik

@ -11,7 +11,7 @@ $lang['lotw_title_export_p12_file_instruction'] = '导出 .p12 文件流程';
$lang['lotw_title_adif_import'] = 'ADIF 导入';
$lang['lotw_title_adif_import_options'] = '导入选项';
$lang['lotw_beta_warning'] = '请明确 LoTW 同步处于 BETA 测试阶段, 查看 wiki 寻求帮助。';
$lang['lotw_beta_warning'] = '请明确 LoTW 同步处于 BETA 测试阶段, 查看 wiki 寻求帮助。';
$lang['lotw_no_certs_uploaded'] = '你需要上传 LoTW p12 证书以使用该功能。';
$lang['lotw_date_created'] = '创建日期';
@ -22,6 +22,7 @@ $lang['lotw_status'] = '状态';
$lang['lotw_options'] = '选项';
$lang['lotw_valid'] = '有效';
$lang['lotw_expired'] = '过期';
$lang['lotw_expiring'] = '即将到期';
$lang['lotw_not_synced'] = '未同步';
$lang['lotw_certificate_dxcc'] = '证书 DXCC';
@ -29,7 +30,7 @@ $lang['lotw_certificate_dxcc_help_text'] = '证书的 DXCC 实体。例如: Scot
$lang['lotw_input_a_file'] = '上传文件';
$lang['lotw_upload_exported_adif_file_from_lotw'] = '下载从 LoTW <a href="https://p1k.arrl.org/lotwuser/qsos?qsoscmd=adif" target="_blank">Download Report</a> 中导出的 ADIF 文件,以标记这些 QSO 在 LoTW上已得到确认。';
$lang['lotw_upload_exported_adif_file_from_lotw'] = '下载从 LoTW <a href="https://p1k.arrl.org/lotwuser/qsos?qsoscmd=adif" target="_blank">Download Report</a> 中导出的 ADIF 文件,并且标记在 LoTW上已得到确认的QSO。';
$lang['lotw_upload_type_must_be_adi'] = '日志文件的类型必须为 .adi';
$lang['lotw_pull_lotw_data_for_me'] = '为我拉取 LoTW 数据';
@ -51,3 +52,10 @@ $lang['lotw_p12_export_step_three'] = '单击 "Save Callsign Certificate File"
$lang['lotw_p12_export_step_four'] = '在下方上传文件。';
$lang['lotw_confirmed'] = '该 QSO 已在 LoTW 确认';
// LoTW Expiry
$lang['lotw_cert_expiring'] = '至少有一个LoTW证书即将过期!';
$lang['lotw_cert_expired'] = '至少有一个LoTW证书已经过期!';
// Lotw User
$lang['lotw_user'] = '这个电台使用 LOTW。最后一次上传是';

Wyświetl plik

@ -0,0 +1,84 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
$lang['menu_badge_developer_mode'] = '开发模式';
$lang['menu_logbook'] = '日志簿';
$lang['menu_overview'] = '概览';
$lang['menu_advanced'] = '详细信息';
$lang['menu_qso'] = 'QSO';
$lang['menu_live_qso'] = '添加QSO从电台获取信息';
$lang['menu_post_qso'] = '添加QSO手动输入信息';
$lang['menu_live_contest_logging'] = '比赛日志(从电台获取信息)';
$lang['menu_post_contest_logging'] = '比赛日志(手动输入信息)';
$lang['menu_view_qsl'] = '浏览QSL卡片';
$lang['menu_view_eqsl'] = '浏览电子QSL卡片';
$lang['menu_notes'] = '笔记';
$lang['menu_analytics'] = '分析';
$lang['menu_statistics'] = '统计';
$lang['menu_gridsquares'] = '网格';
$lang['menu_gridmap'] = '网格地图';
$lang['menu_activated_gridsquares'] = '激活的网格';
$lang['menu_gridsquare_activators'] = '网格激活者';
$lang['menu_distances_worked'] = '距离';
$lang['menu_days_with_qsos'] = '天数';
$lang['menu_timeline'] = '时间线';
$lang['menu_accumulated_statistics'] = '累积统计';
$lang['menu_timeplotter'] = '时间图';
$lang['menu_custom_maps'] = '自定义地图';
$lang['menu_continents'] = '大陆';
$lang['menu_awards'] = '奖项';
$lang['menu_cq'] = 'CQ';
$lang['menu_dok'] = 'DOK';
$lang['menu_dxcc'] = 'DXCC';
$lang['menu_iota'] = 'IOTA';
$lang['menu_pota'] = 'POTA';
$lang['menu_sig'] = 'SIG';
$lang['menu_sota'] = 'SOTA';
$lang['menu_us_counties'] = 'US Counties';
$lang['menu_vucc'] = 'VUCC';
$lang['menu_was'] = 'WAS';
$lang['menu_wwff'] = 'WWFF';
$lang['menu_admin'] = '管理';
$lang['menu_user_account'] = '用户账户';
$lang['menu_global_options'] = '全局选项';
$lang['menu_modes'] = '模式';
$lang['menu_contests'] = '比赛';
$lang['menu_themes'] = '主题';
$lang['menu_backup'] = '备份';
$lang['menu_update_country_files'] = '更新国家文件';
$lang['menu_debug_information'] = '调试信息';
$lang['menu_search_text'] = '搜索呼号';
$lang['menu_search_button'] = '搜索';
$lang['menu_login_button'] = '登录';
$lang['menu_account'] = '账户';
$lang['menu_station_logbooks'] = '电台站日志簿';
$lang['menu_station_locations'] = '电台站位置';
$lang['menu_bands'] = '波段';
$lang['menu_adif_import_export'] = 'ADIF 导入/导出';
$lang['menu_kml_export'] = 'KML 导出';
$lang['menu_dx_atlas_gridsquare_export'] = 'DX Atlas Gridsquare 导出';
$lang['menu_sota_csv_export'] = 'SOTA CSV 导出';
$lang['menu_cabrillo_export'] = 'Cabrillo 导出';
$lang['menu_oqrs_requests'] = 'OQRS 请求';
$lang['menu_print_requested_qsls'] = '打印请求的QSL卡片';
$lang['menu_labels'] = '标签';
$lang['menu_logbook_of_the_world'] = 'Logbook of the World';
$lang['menu_eqsl_import_export'] = 'eQSL 导入/导出';
$lang['menu_qrz_logbook'] = 'QRZ 日志簿';
$lang['menu_hrd_logbook'] = 'HRDLog 日志簿';
$lang['menu_qo_100_dx_club_upload'] = 'QO-100 Dx Club 上传';
$lang['menu_api_keys'] = 'API 密钥';
$lang['menu_hardware_interfaces'] = '硬件接口';
$lang['menu_help'] = '帮助';
$lang['menu_forum'] = '论坛';
$lang['menu_logout'] = '注销';

Wyświetl plik

@ -0,0 +1,61 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
$lang['options_cloudlog_options'] = 'Cloudlog 设置';
$lang['options_message1'] = '本设置是针对所有用户的全局设置,会覆盖对于单个用户的设置。';
$lang['options_appearance'] = '外观';
$lang['options_theme'] = '主题';
$lang['options_global_theme_choice_this_is_used_when_users_arent_logged_in'] = '全局主题选择,当用户未登录时使用。';
$lang['options_public_search_bar'] = '公共搜索栏';
$lang['options_this_allows_non_logged_in_users_to_access_the_search_functions'] = '允许未登录的用户访问搜索功能。';
$lang['options_dashboard_notification_banner'] = '仪表盘通知栏';
$lang['options_this_allows_to_disable_the_global_notification_banner_on_the_dashboard'] = '禁用仪表板上的全局通知横幅。';
$lang['options_dashboard_map'] = '仪表盘的地图';
$lang['options_this_allows_the_map_on_the_dashboard_to_be_disabled_or_placed_on_the_right'] = '允许禁用仪表板上的地图或将其放置在右侧。';
$lang['options_logbook_map'] = '日志地图';
$lang['options_this_allows_to_disable_the_map_in_the_logbook'] = '允许禁用日志中的地图。';
$lang['options_theme_changed_to'] = '主题更改为 ';
$lang['options_global_search_changed_to'] = '全局搜索更改为 ';
$lang['options_dashboard_banner_changed_to'] = '仪表板横幅更改为 ';
$lang['options_dashboard_map_changed_to'] = '仪表板地图更改为 ';
$lang['options_logbook_map_changed_to'] = '日志地图更改为 ';
$lang['options_radios'] = '电台';
$lang['options_radio_settings'] = '电台设置';
$lang['options_radio_timeout_warning'] = '电台超时警告';
$lang['options_the_radio_timeout_warning_is_used_on_the_qso_entry_panel_to_alert_you_to_radio_interface_disconnects'] = '在QSO输入面板上使用无线电超时警告提醒您无线电接口断开。';
$lang['options_this_number_is_in_seconds'] = '此数字以秒为单位。';
$lang['options_radio_timeout_warning_changed_to'] = '无线电超时警告更改为 ';
$lang['options_email'] = '电子邮件';
$lang['options_outgoing_protocol'] = '传出协议';
$lang['options_smtp_encryption'] = 'SMTP加密';
$lang['options_email_address'] = '电子邮件地址';
$lang['options_email_sender_name'] = '发件人姓名';
$lang['options_smtp_host'] = 'SMTP 主机';
$lang['options_smtp_port'] = 'SMTP 端口';
$lang['options_smtp_username'] = 'SMTP 用户名';
$lang['options_smtp_password'] = 'SMTP 密码';
$lang['options_crlf'] = 'CRLF';
$lang['options_newline'] = '新行';
$lang['options_outgoing_email_protocol_changed_to'] = '传出电子邮件协议更改为 ';
$lang['options_smtp_encryption_changed_to'] = 'SMTP 加密更改为 ';
$lang['options_email_address_changed_to'] = '电子邮件地址更改为 ';
$lang['options_email_sender_name_changed_to'] = '发件人姓名更改为 ';
$lang['options_smtp_host_changed_to'] = 'SMTP 主机更改为 ';
$lang['options_smtp_port_changed_to'] = 'SMTP 端口更改为 ';
$lang['options_smtp_username_changed_to'] = 'SMTP 用户名更改为';
$lang['options_smtp_password_changed_to'] = 'SMTP 密码更改为';
$lang['options_email_crlf_changed_to'] = '电子邮件 CRLF 更改为';
$lang['options_email_newline_changed_to'] = '电子邮件新行更改为';
$lang['options_oqrs'] = 'OQRS设置';
$lang['options_global_text'] = '全局文本';
$lang['options_this_text_is_an_optional_text_that_can_be_displayed_on_top_of_the_oqrs_page'] = '该文本是一个可选文本可以显示在OQRS页面的顶部。';
$lang['options_grouped_search'] = '分组搜索';
$lang['options_when_this_is_on_all_station_locations_with_oqrs_active_will_be_searched_at_once'] = '当此选项打开时所有具有OQRS活动的电台位置将同时搜索。';
$lang['options_oqrs_options_have_been_saved'] = 'OQRS选项已保存';
$lang['options_save'] = '保存';

Wyświetl plik

@ -0,0 +1,17 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
$lang['statistics_statistics'] = '统计';
$lang['statistics_explore_the_logbook'] = '查看日志';
$lang['statistics_years'] = '年';
$lang['statistics_mode'] = '模式';
$lang['statistics_bands'] = '波段';
$lang['statistics_qsos'] = 'QSOs';
$lang['statistics_unique_callsigns'] = '呼号';
$lang['statistics_total'] = '总计';
$lang['statistics_year'] = '年';

Wyświetl plik

@ -0,0 +1,100 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
$lang['account_logbook_fields'] = 'Pole deníku';
$lang['account_column1_text'] = 'Vybrat sloupec 1';
$lang['account_column2_text'] = 'Vybrat sloupec 2';
$lang['account_column3_text'] = 'Vybrat sloupec 3';
$lang['account_column4_text'] = 'Vybrat sloupec 4';
$lang['account_column5_text'] = 'Vybrat sloupec 5 (pouze pro deník)';
$lang['account_create_user_account'] = 'Vytvořit uživatelský účet';
$lang['account_edit_account'] = 'Upravit účet';
$lang['account_account_information'] = 'Informace o účtu';
$lang['account_username'] = 'Uživatelské jméno';
$lang['account_email_address'] = 'Emailová adresa';
$lang['account_password'] = 'Heslo';
$lang['account_roles'] = 'Role';
$lang['account_user_role'] = 'Uživatelská role';
$lang['account_theme'] = 'Motiv';
$lang['account_stylesheet'] = 'Styl';
$lang['account_personal_information'] = 'Osobní informace';
$lang['account_first_name'] = 'Jméno';
$lang['account_last_name'] = 'Příjmení';
$lang['account_callsign'] = 'Značka';
$lang['account_gridsquare'] = 'Locátor';
$lang['account_cloudlog_preferences'] = 'Nastavení Cloudlogu';
$lang['account_timezone'] = 'Časové pásmo';
$lang['account_date_format'] = 'Formát data';
$lang['account_measurement_preferences'] = 'Nastavení měření';
$lang['account_select_how_you_would_like_dates_shown_when_logged_into_your_account'] = 'Vyberte, jak chcete, aby byla data zobrazena při přihlášení do vašeho účtu.';
$lang['account_choose_which_unit_distances_will_be_shown_in'] = 'Vyberte, v jakých jednotkách se budou zobrazovat vzdálenosti.'
$lang['account_main_menu'] = 'Hlavní menu';
$lang['account_show_notes_in_the_main_menu'] = 'Zobrazovat poznámky v hlavním menu.'
$lang['account_main_menu'] = 'Hlavní menu';
$lang['account_show_notes_in_the_main_menu'] = 'Zobrazovat poznámky v hlavním menu.';
$lang['account_gridsquare_and_location_autocomplete'] = 'Automatické doplňování lokátoru a umístění';
$lang['account_location_auto_lookup'] = 'Automatické vyhledávání umístění.';
$lang['account_if_set_gridsquare_is_fetched_based_on_location_name'] = 'Pokud je nastaveno, lokátor je získán na základě názvu umístění.';
$lang['account_sota_auto_lookup_gridsquare_and_name_for_summit'] = 'Automatické vyhledávání lokátoru a jména pro SOTA vrchol.';
$lang['account_wwff_auto_lookup_gridsquare_and_name_for_reference'] = 'Automatické vyhledávání lokátoru a jména pro WWFF referenci.';
$lang['account_pota_auto_lookup_gridsquare_and_name_for_park'] = 'Automatické vyhledávání lokátoru a jména pro POTA park.';
$lang['account_if_set_name_and_gridsquare_is_fetched_from_the_api_and_filled_in_location_and_locator'] = 'Pokud je nastaveno, jméno a lokátor jsou získány z API a vyplněny do umístění a lokátoru.'
$lang['account_previous_qsl_type'] = 'Předchozí typ QSL';
$lang['account_select_the_type_of_qsl_to_show_in_the_previous_qsos_section'] = 'Vyberte typ QSL k zobrazení v sekci předchozích QSOs.';
$lang['account_qrzcom_hamqthcom_images'] = 'Obrázky qrz.com/hamqth.com';
$lang['account_show_profile_picture_of_qso_partner_from_qrzcom_hamqthcom_profile_in_the_log_qso_section'] = 'Zobrazit profilový obrázek partnera z QSO záznamu z profilu qrz.com/hamqth.com v sekci protokolu QSO.';
$lang['account_please_set_your_qrzcom_hamqthcom_credentials_in_the_general_config_file'] = 'Prosím, nastavte své přihlašovací údaje pro qrz.com/hamqth.com v obecném konfiguračním souboru.'
$lang['account_amsat_status_upload'] = 'Nahrávání stavu AMSAT';
$lang['account_upload_status_of_sat_qsos_to'] = 'Nahrávání stavu SAT QSOs na';
$lang['account_logbook_of_the_world'] = 'Logbook of the World';
$lang['account_logbook_of_the_world_lotw_username'] = 'Přihlašovací jméno Logbook of The World (LoTW)';
$lang['account_logbook_of_the_world_lotw_password'] = 'Heslo Logbook of The World (LoTW)';
$lang['account_leave_blank_to_keep_existing_password'] = 'Ponechte prázdné, pokud chcete zachovat stávající heslo';
$lang['account_clublog'] = 'Club Log';
$lang['account_clublog_email_callsign'] = 'Email nebo značka volacího znaku Club Logu';
$lang['account_clublog_password'] = 'Heslo Club Logu';
$lang['account_the_email_or_callsign_you_use_to_login_to_club_log'] = 'E-mail nebo značka volacího znaku, kterou používáte pro přihlášení do Club Logu';
$lang['account_eqsl'] = 'eQSL';
$lang['account_eqslcc_username'] = 'Uživatelské jméno eQSL.cc';
$lang['account_eqslcc_password'] = 'Heslo eQSL.cc';
$lang['account_save_account_changes'] = 'Uložit změny účtu';
$lang['account_create_account'] = 'Vytvořit účet';
$lang['account_delete_user_account'] = 'Smazat uživatelský účet';
$lang['account_are_you_sure_you_want_to_delete_the_user_account'] = 'Jste si jistí, že chcete smazat uživatelský účet';
$lang['account_yes_delete_this_user'] = 'Ano, smazat tohoto uživatele';
$lang['account_no_do_not_delete_this_user'] = 'Ne, nevymazávat tohoto uživatele';
$lang['account_forgot_password'] = 'Zapomenuté heslo?';
$lang['account_you_can_reset_your_password_here'] = 'Zde si můžete obnovit heslo.';
$lang['account_reset_password'] = 'Obnovit heslo';
$lang['account_the_email_field_is_required'] = 'Pole e-mail je povinné';
$lang['account_confirm_password'] = 'Potvrzení hesla';
$lang['account_forgot_your_password'] = 'Zapomněli jste heslo?';
$lang['account_login_to_cloudlog'] = 'Přihlásit se do Cloudlogu';
$lang['account_login'] = 'Přihlásit se';
$lang['account_mastodon'] = 'Mastodon server';
$lang['account_user_mastodon'] = 'URL Mastodon serveru';
$lang['account_gridmap_settings'] = 'Nastavení pro Mapu lokátorů';
$lang['account_gridmap_default_band'] = 'Výchozí pásma';

Wyświetl plik

@ -0,0 +1,18 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
$lang['admin_user_line1'] = 'Cloudlog potřebuje alespoň jednoho uživatele nastaveného pro svůj provoz.';
$lang['admin_user_line2'] = 'Uživatelům mohou být přiděleny role, které jim udělují různá oprávnění, jako je přidávání QSO do logu a přístup k Cloudlog API.';
$lang['admin_user_line3'] = 'Nyní přihlášený uživatel je zobrazen v pravém horním rohu každé stránky.';
$lang['admin_user_list'] = 'Seznam uživatelů';
$lang['admin_user'] = 'Uživatel';
$lang['admin_email'] = 'E-mail';
$lang['admin_type'] = 'Typ';
$lang['admin_options'] = 'Možnosti';
$lang['admin_create_user'] = 'Vytvořit uživatele';
$lang['admin_delete'] = 'Smazat';
$lang['admin_edit'] = 'Upravit';

Wyświetl plik

@ -0,0 +1,5 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
$lang['eqsl_short'] = 'eQSL';

Wyświetl plik

@ -2,9 +2,9 @@
defined('BASEPATH') OR exit('No direct script access allowed');
$lang['error_no_active_station_profile'] = 'Pozor: je třeba mít nastaven aktivní profil stanice.';
$lang['error_no_active_station_profile'] = 'Pozor: musíte nastavit aktivní umístění stanice.';
$lang['notice_turn_the_radio_on'] = 'Dnes žádné spojení, je čas zapnout rádio!';
$lang['notice_turn_the_radio_on'] = 'Dnes jste neudělali žádná QSO spojení; je čas zapnout rádio!';
$lang['general_word_important'] = 'Důležité';
$lang['general_word_info'] = 'Info';
@ -12,45 +12,59 @@ $lang['general_word_choose_file'] = 'Vybrat soubor';
$lang['general_word_date'] = 'Datum';
$lang['general_word_time'] = 'Čas';
$lang['general_word_none'] = 'Nic';
$lang['general_word_datetime'] = 'Datum/čas';
$lang['general_word_none'] = 'Žádné';
$lang['general_word_name'] = 'Jméno';
$lang['general_word_location'] = 'Location';
$lang['general_word_location'] = 'Místo';
$lang['general_word_comment'] = 'Komentář';
$lang['general_word_general'] = 'Všeobecné';
$lang['general_word_general'] = 'Obecné';
$lang['general_word_satellite'] = 'Satelit';
$lang['general_word_satellite_short'] = 'Sat';
$lang['general_word_notes'] = 'Poznámky';
$lang['general_word_comment'] = 'Obsah';
$lang['general_word_country'] = 'Země';
$lang['general_word_total'] = 'Celkem';
$lang['general_word_year'] = 'Rok';
$lang['general_word_month'] = 'Měsíc';
$lang['general_word_worked'] = 'Pracováno';
$lang['general_word_worked'] = 'Spojeno';
$lang['general_word_confirmed'] = 'Potvrzeno';
$lang['general_word_needed'] = 'Potřeba';
$lang['general_word_needed'] = 'Potřebuje se';
$lang['general_word_no'] = 'Ne';
$lang['general_word_yes'] = 'Ano';
$lang['general_word_method'] = 'Method';
$lang['general_word_method'] = 'Metoda';
$lang['general_word_sent'] = 'Odesláno';
$lang['general_word_received'] = 'Přijato';
$lang['general_word_requested'] = 'Žádáno';
$lang['general_word_qslcards'] = 'QSL lístků';
$lang['general_word_qslcard_direct'] = 'Direct';
$lang['general_word_requested'] = 'Vyžádáno';
$lang['general_word_queued'] = 'Ve frontě';
$lang['general_word_invalid_ignore'] = 'Neplatné (Ignorováno)';
$lang['general_word_qslcard'] = 'QSL karta';
$lang['general_word_qslcard_management'] = 'Správa QSL';
$lang['general_word_qslcards'] = 'QSL karty';
$lang['general_word_qslcard_direct'] = 'Přímá';
$lang['general_word_qslcard_bureau'] = 'Bureau';
$lang['general_word_qslcard_via'] = 'Via';
$lang['general_word_qslcard_electronic'] = 'Elektronická';
$lang['general_word_qslcard_manager'] = 'Správce';
$lang['general_word_qslcard_via'] = 'Přes';
$lang['general_word_eqslcard'] = 'eQSL karta';
$lang['general_word_eqslcards'] = 'eQSL karty';
$lang['general_word_lotw'] = 'Logbook of the World';
$lang['general_edit_qso'] = 'Editovat QSO';
$lang['general_mark_qsl_rx_bureau'] = 'Označit QSL jako přijaté (Bureau)';
$lang['general_mark_qsl_rx_direct'] = 'Označit QSL jako přijaté (Direct)';
$lang['general_edit_qso'] = 'Upravit QSO';
$lang['general_mark_qsl_rx_bureau'] = 'Označit QSL přijato (Bureau)';
$lang['general_mark_qsl_rx_direct'] = 'Označit QSL přijato (Přímá)';
$lang['general_mark_qsl_rx_electronic'] = 'Označit QSL přijato (Elektronicky)';
$lang['general_mark_qsl_tx_bureau'] = 'Označit QSL odesláno (Bureau)';
$lang['general_mark_qsl_tx_direct'] = 'Označit QSL odesláno (Přímá)';
$lang['general_delete_qso'] = 'Smazat QSO';
$lang['general_total_distance'] = 'Celková vzdálenost';
// Cloudlog Terms
$lang['cloudlog_station_profile'] = 'Profil stanice';
$lang['cloudlog_station_profile'] = 'Umístění stanice';
// ham radio terms
$lang['gen_hamradio_qso'] = 'QSO';
@ -58,42 +72,71 @@ $lang['gen_hamradio_station'] = 'Stanice';
$lang['gen_hamradio_call'] = 'Značka';
$lang['gen_hamradio_callsign'] = 'Značka';
$lang['gen_hamradio_mode'] = 'Mód';
$lang['gen_hamradio_mode'] = 'Režim';
$lang['gen_hamradio_rst_sent'] = 'Odesláno';
$lang['gen_hamradio_rst_rcvd'] = 'Přijato';
$lang['gen_hamradio_band'] = 'Pásmo';
$lang['gen_hamradio_band_rx'] = 'Pásmo (RX)';
$lang['gen_hamradio_frequency'] = 'Kmitočet';
$lang['gen_hamradio_frequency_rx'] = 'Kmitočet (RX)';
$lang['gen_hamradio_frequency'] = 'Frekvence';
$lang['gen_hamradio_frequency_rx'] = 'Frekvence (RX)';
$lang['gen_hamradio_radio'] = 'Rádio';
$lang['gen_hamradio_rsts'] = 'RST (S)';
$lang['gen_hamradio_rstr'] = 'RST (R)';
$lang['gen_hamradio_exchange_sent_short'] = 'Exch (S)';
$lang['gen_hamradio_exchange_rcvd_short'] = 'Exch (R)';
$lang['gen_hamradio_exchange_sent_short'] = 'Výměna (S)';
$lang['gen_hamradio_exchange_rcvd_short'] = 'Výměna (R)';
$lang['gen_hamradio_qsl'] = 'QSL';
$lang['gen_hamradio_locator'] = 'Lokátor';
$lang['gen_hamradio_transmit_power'] = 'Výkon (W)';
$lang['gen_hamradio_propagation_mode'] = 'Druh šíření';
$lang['gen_hamradio_transmit_power'] = 'Vysílací výkon (W)';
$lang['gen_hamradio_propagation_mode'] = 'Šíření signálu';
$lang['gen_hamradio_satellite_name'] = 'Jméno satelitu';
$lang['gen_hamradio_satellite_mode'] = 'Mód satelitu';
$lang['gen_hamradio_satellite_name'] = 'Název satelitu';
$lang['gen_hamradio_satellite_mode'] = 'Režim satelitu';
$lang['gen_hamradio_logbook'] = 'Deník';
$lang['gen_hamradio_logbook'] = 'Logbook';
$lang['gen_hamradio_cq_zone'] = 'CQ zóna';
$lang['gen_hamradio_dxcc'] = 'DXCC';
$lang['gen_hamradio_deleted_dxcc'] = 'Smazané DXCC';
$lang['gen_hamradio_continent'] = 'Kontinent';
$lang['gen_hamradio_usa_state'] = 'Stát USA';
$lang['gen_hamradio_iota_reference'] = 'IOTA Reference';
$lang['gen_hamradio_sota_reference'] = 'SOTA Reference';
$lang['gen_hamradio_county_reference'] = 'Označení okresu USA';
$lang['gen_hamradio_iota_reference'] = 'IOTA označení';
$lang['gen_hamradio_sota_reference'] = 'SOTA označení';
$lang['gen_hamradio_wwff_reference'] = 'WWFF označení';
$lang['gen_hamradio_pota_reference'] = 'POTA označení';
$lang['gen_hamradio_dok'] = 'DOK';
$lang['gen_hamradio_state'] = 'Stát';
$lang['gen_hamradio_iota'] = 'IOTA';
$lang['gen_hamradio_sota'] = 'SOTA';
$lang['gen_hamradio_wwff'] = 'WWFF';
$lang['gen_hamradio_pota'] = 'POTA';
$lang['gen_hamradio_gridsquare'] = 'Lokátor';
$lang['gen_hamradio_distance'] = 'Vzdálenost';
$lang['gen_hamradio_operator'] = 'Operátor';
$lang['gen_hamradio_sig'] = 'Sig';
$lang['gen_hamradio_sig_info'] = 'Sig Info';
// Dashboard Words
$lang['dashboard_you_have_had'] = 'Máš dnes';
$lang['dashboard_qsos_today'] = 'spojení!';
$lang['dashboard_qso_breakdown'] = 'Statistika spojení';
$lang['dashboard_countries_breakdown'] = 'Statistika zemí';
$lang['dashboard_you_have_had'] = 'Máte';
$lang['dashboard_qsos_today'] = 'QSO spojení dnes!';
$lang['dashboard_qso_breakdown'] = 'Počet QSO spojení';
$lang['dashboard_countries_breakdown'] = 'Počet zemí';
$lang['gen_from_date'] = 'Datum od';
$lang['gen_from_date'] = 'Od data';
$lang['gen_this_qso_was_confirmed_on'] = 'Toto QSO bylo potvrzeno';
$lang['error_no_logbook_found'] = 'Nebyly nalezeny žádné denníky. Musíte definovat denník! Udělejte to zde:';
$lang['copy_to_clipboard'] = 'Kopírovat do schránky';
$lang['africa'] = 'Afrika';
$lang['antarctica'] = 'Antarktida';
$lang['asia'] = 'Asie';
$lang['europe'] = 'Evropa';
$lang['northamerica'] = 'Severní Amerika';
$lang['oceania'] = 'Oceánie';
$lang['southamerica'] = 'Jižní Amerika';
$lang['gen_band_selection'] = 'Výběr pásma';

Wyświetl plik

@ -0,0 +1,26 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
$lang['gridsquares_gridsquare_map'] = 'Mapa lokátorů';
$lang['gridsquares_confirmed_is_green'] = 'Potvrzené lokátory jsou zeleně';
$lang['gridsquares_worked_but_not_confirmed_is_red'] = 'Odpracované, ale nepotvrzené lokátory jsou červeně';
$lang['gridsquares_activated_but_not_confirmed_is_red'] = 'Aktivované, ale nepotvrzené lokátory jsou červeně';
$lang['gridsquares_this_map_does_not_include_satellite_internet_or_repeater_qsos'] = 'Tato mapa nezahrnuje satelitní, internetová ani repeaterová QSO';
$lang['gridsquares_grid_squares'] = 'lokátor';
$lang['gridsquares_total_count'] = 'Celkový počet';
$lang['gridsquares_band'] = 'Pásmo';
$lang['gridsquares_mode'] = 'Režim';
$lang['gridsquares_sat'] = 'Satelit';
$lang['gridsquares_confirmation'] = 'Potvrzení';
$lang['gridsquares_button_plot'] = 'Zobrazit';
$lang['gridsquares_gridsquares'] = 'Lokátory';
$lang['gridsquares_gridsquares_confirmed'] = 'Potvrzené lokátory';
$lang['gridsquares_gridsquares_not_confirmed'] = 'Nepotvrzené lokátory';
$lang['gridsquares_gridsquares_total_worked'] = 'Celkový počet odpracovaných lokátorů';

Wyświetl plik

@ -26,7 +26,7 @@ $lang['lotw_certificate_dxcc_help_text'] = 'Certifikát zěmě DXCC. Například
$lang['lotw_input_a_file'] = 'Nahraj soubor';
$lang['lotw_upload_exported_adif_file_from_lotw'] = 'Nahraj exportovaný soubor z LoTW z <a href="https://p1k.arrl.org/lotwuser/qsos?qsoscmd=adif" target="_blank">Download Report</a> Area, to mark QSOs as confirmed on LoTW.';
$lang['lotw_upload_exported_adif_file_from_lotw'] = 'Nahraj exportovaný soubor z LoTW z <a href="https://p1k.arrl.org/lotwuser/qsos?qsoscmd=adif" target="_blank">Download Report</a> Area, to mark QSOs as confirmed on LOTW.';
$lang['lotw_upload_type_must_be_adi'] = 'Deník musí být ve formátu .adi';
$lang['lotw_pull_lotw_data_for_me'] = 'Stáhni data z LoTW';

Wyświetl plik

@ -0,0 +1,84 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
$lang['menu_badge_developer_mode'] = 'Režim vývojáře';
$lang['menu_logbook'] = 'Logbook';
$lang['menu_overview'] = 'Přehled';
$lang['menu_advanced'] = 'Pokročilé zobrazení';
$lang['menu_qso'] = 'QSO';
$lang['menu_live_qso'] = 'Živé QSO';
$lang['menu_post_qso'] = 'Uložit QSO';
$lang['menu_live_contest_logging'] = 'Živé závodní logování';
$lang['menu_post_contest_logging'] = 'Uložit závodní log';
$lang['menu_view_qsl'] = 'Zobrazit QSL';
$lang['menu_view_eqsl'] = 'Zobrazit eQSL';
$lang['menu_notes'] = 'Poznámky';
$lang['menu_analytics'] = 'Analýza';
$lang['menu_statistics'] = 'Statistiky';
$lang['menu_gridsquares'] = 'Lokátory';
$lang['menu_gridmap'] = 'Mapa lokátorů';
$lang['menu_activated_gridsquares'] = 'Aktivované lokátory';
$lang['menu_gridsquare_activators'] = 'Aktivátoři lokátorů';
$lang['menu_distances_worked'] = 'Vzdálenosti';
$lang['menu_days_with_qsos'] = 'Dny s QSO';
$lang['menu_timeline'] = 'Časová osa';
$lang['menu_accumulated_statistics'] = 'Kumulativní statistiky';
$lang['menu_timeplotter'] = 'Graf času';
$lang['menu_custom_maps'] = 'Vlastní mapy';
$lang['menu_continents'] = 'Kontinenty';
$lang['menu_awards'] = 'Diplomy';
$lang['menu_cq'] = 'CQ';
$lang['menu_dok'] = 'DOK';
$lang['menu_dxcc'] = 'DXCC';
$lang['menu_iota'] = 'IOTA';
$lang['menu_pota'] = 'POTA';
$lang['menu_sig'] = 'SIG';
$lang['menu_sota'] = 'SOTA';
$lang['menu_us_counties'] = 'US okresy';
$lang['menu_vucc'] = 'VUCC';
$lang['menu_was'] = 'WAS';
$lang['menu_wwff'] = 'WWFF';
$lang['menu_admin'] = 'Admin';
$lang['menu_user_account'] = 'Uživatelské účty';
$lang['menu_global_options'] = 'Globální nastavení';
$lang['menu_modes'] = 'Režimy';
$lang['menu_contests'] = 'Závody';
$lang['menu_themes'] = 'Témata';
$lang['menu_backup'] = 'Zálohování';
$lang['menu_update_country_files'] = 'Aktualizace souborů';
$lang['menu_debug_information'] = 'Informace pro ladění';
$lang['menu_search_text'] = 'Hledat značku';
$lang['menu_search_button'] = 'Hledat';
$lang['menu_login_button'] = 'Přihlásit se';
$lang['menu_account'] = 'Účet';
$lang['menu_station_logbooks'] = 'Logy stanice';
$lang['menu_station_locations'] = 'Umístění stanice';
$lang['menu_bands'] = 'Pásmo';
$lang['menu_adif_import_export'] = 'ADIF import / export';
$lang['menu_kml_export'] = 'KML export';
$lang['menu_dx_atlas_gridsquare_export'] = 'DX Atlas export lokátorů';
$lang['menu_sota_csv_export'] = 'SOTA CSV export';
$lang['menu_cabrillo_export'] = 'Cabrillo export';
$lang['menu_oqrs_requests'] = 'OQRS požadavky';
$lang['menu_print_requested_qsls'] = 'Tisk žádaných QSL';
$lang['menu_labels'] = 'Štítky';
$lang['menu_logbook_of_the_world'] = 'Logbook of the World';
$lang['menu_eqsl_import_export'] = 'eQSL import / export';
$lang['menu_qrz_logbook'] = 'QRZ Logbook';
$lang['menu_hrd_logbook'] = 'HRDLog Logbook';
$lang['menu_qo_100_dx_club_upload'] = 'QO-100 Dx Club Upload';
$lang['menu_api_keys'] = 'API klíče';
$lang['menu_hardware_interfaces'] = 'Hardwarové rozhraní';
$lang['menu_help'] = 'Nápověda';
$lang['menu_forum'] = 'Fórum';
$lang['menu_logout'] = 'Odhlásit se';

Wyświetl plik

@ -0,0 +1,62 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
```php
$lang['options_cloudlog_options'] = 'Možnosti Cloudlogu';
$lang['options_message1'] = 'Možnosti Cloudlogu jsou globální nastavení používaná pro všechny uživatele instalace, která jsou přepsána, pokud je nastavení na úrovni uživatele.';
$lang['options_appearance'] = 'Vzhled';
$lang['options_theme'] = 'Téma';
$lang['options_global_theme_choice_this_is_used_when_users_arent_logged_in'] = 'Globální volba motivu, která se používá, když uživatelé nejsou přihlášeni.';
$lang['options_public_search_bar'] = 'Veřejná vyhledávací lišta';
$lang['options_this_allows_non_logged_in_users_to_access_the_search_functions'] = 'Tímto se umožní ne přihlášeným uživatelům přístup ke vyhledávacím funkcím.';
$lang['options_dashboard_notification_banner'] = 'Oznámení na palubní desce';
$lang['options_this_allows_to_disable_the_global_notification_banner_on_the_dashboard'] = 'Tímto lze zakázat globální oznámení na palubní desce.';
$lang['options_dashboard_map'] = 'Mapa na palubní desce';
$lang['options_this_allows_the_map_on_the_dashboard_to_be_disabled_or_placed_on_the_right'] = 'Toto umožňuje zakázat mapu na palubní desce nebo ji umístit na pravou stranu.';
$lang['options_logbook_map'] = 'Mapa v logbooku';
$lang['options_this_allows_to_disable_the_map_in_the_logbook'] = 'Toto umožňuje zakázat mapu v logbooku.';
$lang['options_theme_changed_to'] = 'Téma změněno na ';
$lang['options_global_search_changed_to'] = 'Globální vyhledávání změněno na ';
$lang['options_dashboard_banner_changed_to'] = 'Banner na palubní desce změněn na ';
$lang['options_dashboard_map_changed_to'] = 'Mapa na palubní desce změněna na ';
$lang['options_logbook_map_changed_to'] = 'Mapa v logbooku změněna na ';
$lang['options_radios'] = 'Rádia';
$lang['options_radio_settings'] = 'Nastavení rádia';
$lang['options_radio_timeout_warning'] = 'Upozornění na časový limit rádia';
$lang['options_the_radio_timeout_warning_is_used_on_the_qso_entry_panel_to_alert_you_to_radio_interface_disconnects'] = 'Upozornění na časový limit rádia se používá na panelu vstupu QSO k upozornění na odpojení rozhraní rádia.';
$lang['options_this_number_is_in_seconds'] = 'Toto číslo je v sekundách.';
$lang['options_radio_timeout_warning_changed_to'] = 'Upozornění na časový limit rádia změněno na ';
$lang['options_email'] = 'E-mail';
$lang['options_outgoing_protocol'] = 'Odchozí protokol';
$lang['options_smtp_encryption'] = 'SMTP šifrování';
$lang['options_email_address'] = 'E-mailová adresa';
$lang['options_email_sender_name'] = 'Jméno odesílatele e-mailu';
$lang['options_smtp_host'] = 'SMTP hostitel';
$lang['options_smtp_port'] = 'SMTP port';
$lang['options_smtp_username'] = 'SMTP uživatelské jméno';
$lang['options_smtp_password'] = 'SMTP heslo';
$lang['options_crlf'] = 'CRLF';
$lang['options_newline'] = 'Nový řádek';
$lang['options_outgoing_email_protocol_changed_to'] = 'Protokol odchozího e-mailu změněn na ';
$lang['options_smtp_encryption_changed_to'] = 'SMTP šifrování změněno na ';
$lang['options_email_address_changed_to'] = 'E-mailová adresa změněna na ';
$lang['options_email_sender_name_changed_to'] = 'Jméno odesílatele e-mailu změněno na ';
$lang['options_smtp_host_changed_to'] = 'SMTP hostitel změněn na ';
$lang['options_smtp_port_changed_to'] = 'SMTP port změněn na ';
$lang['options_smtp_username_changed_to'] = 'SMTP uživatelské jméno změněno na ';
$lang['options_smtp_password_changed_to'] = 'SMTP heslo změněno na ';
$lang['options_email_crlf_changed_to'] = 'CRLF e-mail změněn na ';
$lang['options_email_newline_changed_to'] = 'Nový řádek e-mailu změněn na ';
$lang['options_oqrs'] = 'OQRS možnosti';
$lang['options_global_text'] = 'Globální text';
$lang['options_this_text_is_an_optional_text_that_can_be_displayed_on_top_of_the_oqrs_page'] = 'Tento text je nepovinný text, který lze zobrazit na horní části stránky OQRS.';
$lang['options_grouped_search'] = 'Seskupené vyhledávání';
$lang['options_when_this_is_on_all_station_locations_with_oqrs_active_will_be_searched_at_once'] = 'Když je tato možnost zapnutá, budou všechny stanice s aktivním OQRS vyhledávány najednou.';
$lang['options_oqrs_options_have_been_saved'] = 'Možnosti OQRS byly uloženy.';
$lang['options_save'] = 'Uložit';

Wyświetl plik

@ -23,3 +23,8 @@ $lang['qso_notes_helptext'] = 'Obsah je užíván pouze Cloudlogu a není export
$lang['qso_btn_reset_qso'] = 'Vymazat';
$lang['qso_btn_save_qso'] = 'Uložit spojení';
$lang['qso_btn_edit_qso'] = 'Editovat spojení';
// QSO Details
$lang['qso_details'] = 'Detail spojení';

Wyświetl plik

@ -0,0 +1,17 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
$lang['statistics_statistics'] = 'Statistiky';
$lang['statistics_explore_the_logbook'] = 'Prozkoumejte logbook.';
$lang['statistics_years'] = 'Roky';
$lang['statistics_mode'] = 'Módy';
$lang['statistics_bands'] = 'Pásma';
$lang['statistics_qsos'] = 'QSO';
$lang['statistics_unique_callsigns'] = 'Jedinečné značky';
$lang['statistics_total'] = 'Celkem';
$lang['statistics_year'] = 'Rok';

Wyświetl plik

@ -140,3 +140,4 @@ $lang['oceania'] = 'Oceania';
$lang['southamerica'] = 'South America';
$lang['gen_band_selection'] = 'Band selection';
$lang['general_word_today'] = 'Today';

Wyświetl plik

@ -142,3 +142,4 @@ $lang['oceania'] = 'Ozeanien';
$lang['southamerica'] = 'Südamerika';
$lang['gen_band_selection'] = 'Bandauswahl';
$lang['general_word_today'] = 'Heute';

Wyświetl plik

@ -0,0 +1,24 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
/*
* Tag Cloudlog as 2.4.7
*/
class Migration_tag_2_4_7 extends CI_Migration {
public function up()
{
// Tag Cloudlog 2.4.7
$this->db->where('option_name', 'version');
$this->db->update('options', array('option_value' => '2.4.7'));
}
public function down()
{
$this->db->where('option_name', 'version');
$this->db->update('options', array('option_value' => '2.4.6'));
}
}

Wyświetl plik

@ -183,191 +183,7 @@ class API_Model extends CI_Model {
return 0;
}
function insert_parse($arguments)
{
# $q = "INSERT INTO ".$this->config->item('table_name');
$f = explode(",", $arguments['query']);
$r = $this->_insert_field_translate($f);
return $r;
}
// FUNCTION: string select_parse(array $arguments)
// Converts an array of arguments into a MySQL query string
// See documentation for search() under the API controller for more details
function select_parse($arguments)
{
// Initialise our string
$q = "SELECT ";
// Cycle through the fields, converting friendly names to MySQL column names
if($arguments['fields'] != "") {
$field = "";
$fields = explode(",", $arguments['fields']);
foreach ($fields as $f) {
if($field != "") {
$field .= ",";
}
// Add field to the query, with '++' placeholders for later translation
$field .= "++$f++";
}
// Handle any DISTINCT arguments
$field = str_replace("++distinct&#40;", "DISTINCT(++", $field);
$field = str_replace("&#41;++", "++)", $field);
// Add the MySQL column name to the query
$q .= $field." ";
} else {
// If no fields are specified, display all fields
$q .= "* ";
}
// Append the table we're pulling data from
$q .= "FROM ".$this->config->item('table_name');
if (isset($arguments["join_station_profile"]) && $arguments["join_station_profile"]) {
$q .= " INNER JOIN station_profile ON ".$this->config->item('table_name').".station_id = station_profile.station_id";
}
// Parse the 'query' string, which is converted into a standard MySQL 'WHERE'
// clause.
// $s and $r can be refactored into single array definitions, but during
// development it's easier to list them in this way for quick reference.
if($arguments['query'] != "")
{
$q .= " WHERE ";
$q = $this->_query_parse($q, $arguments['query']);
}
// Parse any order arguments
if($arguments['order'] != "")
{
$q .= " ORDER BY ";
$s = null;
$r = null;
$s[0] = '/&#40;/';
$s[1] = '/&#41;/';
$s[2] = '/([a-zA-Z0-9\-\_]+)([,\(]{1}|$)/';
$s[3] = '/\(asc\)/';
$s[4] = '/\(desc\)/';
$s[5] = '/,$/';
$s[6] = '/\[/';
$s[7] = '/\]/';
$r[0] = '(';
$r[1] = ')';
$r[2] = '++$1++ $2';
$r[3] = ' ASC ';
$r[4] = ' DESC ';
$r[5] = '';
$r[6] = '';
$r[7] = '';
$q .= preg_replace($s, $r, $arguments['order']);
}
$q = $this->_select_field_translate($q);
// Parse any limit arguments
if($arguments['limit'] != "")
{
// Add the limit arguments, removing any characters other than numbers and commas
$q .= " LIMIT " . preg_replace(array("/[^0-9\,]/","/,$/"), "", $arguments['limit']);
}
else
{
// If no limit argument is given, default to the first 20 results
$q .= " LIMIT 0,20";
}
return $q;
}
private function _query_parse($q, $qs)
{
if($qs != "")
{
$s = null;
$r = null;
// (and), becomes ' AND '
$s[0] = '/&#40;and&#41;/';
// (or), becomes ' OR '
$s[1] = '/&#40;or&#41;/';
// <, >, [ and ] all translated from their urlencoded forms
$s[2] = '/%3C/';
$s[3] = '/%3E/';
$s[4] = '/%5B/';
$s[5] = '/%5D/';
// FieldName=, which becomes '++FieldName++ = '
$s[6] = '/([a-zA-Z0-9\-\_\*\(\)\=\~]+)=/';
// =Value, which becomes '= 'Value''
$s[7] = '/=([a-zA-Z0-9\-\_\*\(\)\=\~]+)/';
// now(), which becomes 'UNIX_TIMESTAMP(NOW())'
$s[8] = '/now()/';
// (, and ), which are translated to their non-HTML entity forms,
// and with added padding
$s[9] = '/&#40;/';
$s[10] = '/&#41;/';
// FieldName~, becomes '++FieldName++ LIKE~'
$s[11] = '/([a-zA-Z0-9\-\_\*\(\)\=\~]+)~/';
// ~Value, becomes ' 'Value''
$s[12] = '/~([a-zA-Z0-9\-\_\*\(\)\=\~]+)/';
// *, which becomes '%'
$s[13] = '/\*/';
$r[0] = ' AND ';
$r[1] = ' OR ';
$r[2] = ' < ';
$r[3] = ' > ';
// Strip out square brackets
$r[4] = '';
$r[5] = '';
$r[6] = '++$1++ =';
$r[7] = '= \'$1\'';
$r[8] = 'UNIX_TIMESTAMP(NOW())';
$r[9] = '( ';
$r[10] = ' )';
$r[11] = '++$1++ LIKE~';
$r[12] = ' \'$1\'';
$r[13] = '%';
// Bulk replace everything
$q .= preg_replace($s, $r, $qs);
}
return $q;
}
private function _select_field_translate($q)
{
// Do search/replace on field names, to convert from friendly names
// to MySQL column names
foreach($this->_columnName as $key => $val) {
$q = str_replace("++".$val['Name']."++", $key, $q);
}
return $q;
}
private function _insert_field_translate($q)
{
// Do search/replace on field names, to convert from friendly names
// to MySQL column names
$r = array();
foreach($q as $key => $val) {
$f = explode('=', $val);
$r[$this->column($f[0])] = $f[1];
}
return $r;
}
// ARRAY: $_columnName
// An array matching MySQL column names to friendly names, descriptions and types
private $_columnName = array(

Wyświetl plik

@ -337,37 +337,55 @@ class Logbook_model extends CI_Model {
$this->db->join('dxcc_entities', 'dxcc_entities.adif = '.$this->config->item('table_name').'.COL_DXCC', 'left outer');
$this->db->join('lotw_users', 'lotw_users.callsign = '.$this->config->item('table_name').'.col_call', 'left outer');
switch ($type) {
case 'DXCC':
$this->db->where('COL_COUNTRY', $searchphrase);
break;
case 'DXCC2':
$this->db->where('COL_DXCC', $searchphrase);
break;
case 'IOTA':
$this->db->where('COL_IOTA', $searchphrase);
break;
case 'VUCC':
$this->db->where("(COL_GRIDSQUARE like '%" . $searchphrase . "%' OR COL_VUCC_GRIDS like'%" . $searchphrase ."%')");
break;
case 'CQZone':
$this->db->where('COL_CQZ', $searchphrase);
break;
case 'WAS':
$this->db->where('COL_STATE', $searchphrase);
$this->db->where_in('COL_DXCC', ['291', '6', '110']);
break;
case 'SOTA':
$this->db->where('COL_SOTA_REF', $searchphrase);
break;
case 'WWFF':
$this->db->where('COL_WWFF_REF', $searchphrase);
break;
case 'POTA':
$this->db->where('COL_POTA_REF', $searchphrase);
break;
case 'DOK':
$this->db->where('COL_DARC_DOK', $searchphrase);
break;
case 'DXCC':
$this->db->where('COL_COUNTRY', $searchphrase);
break;
case 'DXCC2':
$this->db->where('COL_DXCC', $searchphrase);
break;
case 'IOTA':
$this->db->where('COL_IOTA', $searchphrase);
break;
case 'VUCC':
$this->db->where("(COL_GRIDSQUARE like '%" . $searchphrase . "%' OR COL_VUCC_GRIDS like'%" . $searchphrase ."%')");
break;
case 'CQZone':
$this->db->where('COL_CQZ', $searchphrase);
break;
case 'WAS':
$this->db->where('COL_STATE', $searchphrase);
$this->db->where_in('COL_DXCC', ['291', '6', '110']);
break;
case 'SOTA':
$this->db->where('COL_SOTA_REF', $searchphrase);
break;
case 'WWFF':
$this->db->where('COL_WWFF_REF', $searchphrase);
break;
case 'POTA':
$this->db->where('COL_POTA_REF', $searchphrase);
break;
case 'DOK':
$this->db->where('COL_DARC_DOK', $searchphrase);
break;
case 'QSLRDATE':
$this->db->where('date(COL_QSLRDATE)=date(SYSDATE())');
break;
case 'QSLSDATE':
$this->db->where('date(COL_QSLSDATE)=date(SYSDATE())');
break;
case 'EQSLRDATE':
$this->db->where('date(COL_EQSL_QSLRDATE)=date(SYSDATE())');
break;
case 'EQSLSDATE':
$this->db->where('date(COL_EQSL_QSLSDATE)=date(SYSDATE())');
break;
case 'LOTWRDATE':
$this->db->where('date(COL_LOTW_QSLRDATE)=date(SYSDATE())');
break;
case 'LOTWSDATE':
$this->db->where('date(COL_LOTW_QSLSDATE)=date(SYSDATE())');
break;
}
$this->db->where_in($this->config->item('table_name').'.station_id', $logbooks_locations_array);
@ -883,9 +901,12 @@ class Logbook_model extends CI_Model {
$CI =& get_instance();
$CI->load->model('stations');
if (!$CI->stations->check_station_is_accessible($stationId)) {
return;
return;
}
$station_profile=$CI->stations->profile_clean($stationId);
$stationCallsign=$station_profile->station_callsign;
$mode = $this->get_main_mode_if_submode($this->input->post('mode'));
if ($mode == null) {
$mode = $this->input->post('mode');
@ -912,7 +933,7 @@ class Logbook_model extends CI_Model {
$srx_string = null;
}
if (stristr($this->input->post('usa_county'), ',')) {
if (stristr($this->input->post('usa_county') ?? '', ',')) {
$uscounty = $this->input->post('usa_county');
} else {
$uscounty = $this->input->post('usa_state') .",".$this->input->post('usa_county');
@ -1058,6 +1079,7 @@ class Logbook_model extends CI_Model {
'COL_CONTEST_ID' => $this->input->post('contest_name'),
'COL_QSL_VIA' => $this->input->post('qsl_via_callsign'),
'station_id' => $stationId,
'COL_STATION_CALLSIGN' => $stationCallsign,
'COL_OPERATOR' => $this->input->post('operator_callsign'),
'COL_STATE' =>$this->input->post('usa_state'),
'COL_CNTY' => $uscounty
@ -2241,64 +2263,88 @@ class Logbook_model extends CI_Model {
function get_QSLStats($StationLocationsArray = null) {
if($StationLocationsArray == null) {
$CI =& get_instance();
$CI->load->model('logbooks_model');
$logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
} else {
$logbooks_locations_array = $StationLocationsArray;
}
if($StationLocationsArray == null) {
$CI =& get_instance();
$CI->load->model('logbooks_model');
$logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
} else {
$logbooks_locations_array = $StationLocationsArray;
}
if(!empty($logbooks_locations_array)) {
$this->db->select('
COUNT(IF(COL_QSL_SENT="Y",COL_QSL_SENT,null)) as QSL_Sent,
COUNT(IF(COL_QSL_RCVD="Y",COL_QSL_RCVD,null)) as QSL_Received,
COUNT(IF(COL_QSL_SENT IN("Q", "R") ,COL_QSL_SENT,null)) as QSL_Requested,
COUNT(IF(COL_EQSL_QSL_SENT="Y",COL_EQSL_QSL_SENT,null)) as eQSL_Sent,
COUNT(IF(COL_EQSL_QSL_RCVD="Y",COL_EQSL_QSL_RCVD,null)) as eQSL_Received,
COUNT(IF(COL_LOTW_QSL_SENT="Y",COL_LOTW_QSL_SENT,null)) as LoTW_Sent,
COUNT(IF(COL_LOTW_QSL_RCVD="Y",COL_LOTW_QSL_RCVD,null)) as LoTW_Received
');
$this->db->where_in('station_id', $logbooks_locations_array);
if(!empty($logbooks_locations_array)) {
$this->db->select('
COUNT(IF(COL_QSL_SENT="Y",COL_QSL_SENT,null)) as QSL_Sent,
COUNT(IF(COL_QSL_RCVD="Y",COL_QSL_RCVD,null)) as QSL_Received,
COUNT(IF(COL_QSL_SENT IN("Q", "R") ,COL_QSL_SENT,null)) as QSL_Requested,
COUNT(IF(COL_EQSL_QSL_SENT="Y",COL_EQSL_QSL_SENT,null)) as eQSL_Sent,
COUNT(IF(COL_EQSL_QSL_RCVD="Y",COL_EQSL_QSL_RCVD,null)) as eQSL_Received,
COUNT(IF(COL_LOTW_QSL_SENT="Y",COL_LOTW_QSL_SENT,null)) as LoTW_Sent,
COUNT(IF(COL_LOTW_QSL_RCVD="Y",COL_LOTW_QSL_RCVD,null)) as LoTW_Received,
COUNT(IF(COL_QSL_SENT="Y" and DATE(COL_QSLSDATE)=DATE(SYSDATE()),COL_QSL_SENT,null)) as QSL_Sent_today,
COUNT(IF(COL_QSL_RCVD="Y" and DATE(COL_QSLRDATE)=DATE(SYSDATE()),COL_QSL_RCVD,null)) as QSL_Received_today,
COUNT(IF(COL_QSL_SENT IN("Q", "R") and DATE(COL_QSLSDATE)=DATE(SYSDATE()) ,COL_QSL_SENT,null)) as QSL_Requested_today,
COUNT(IF(COL_EQSL_QSL_SENT="Y" and DATE(COL_EQSL_QSLSDATE)=DATE(SYSDATE()),COL_EQSL_QSL_SENT,null)) as eQSL_Sent_today,
COUNT(IF(COL_EQSL_QSL_RCVD="Y" and DATE(COL_EQSL_QSLRDATE)=DATE(SYSDATE()),COL_EQSL_QSL_RCVD,null)) as eQSL_Received_today,
COUNT(IF(COL_LOTW_QSL_SENT="Y" and DATE(COL_LOTW_QSLSDATE)=DATE(SYSDATE()),COL_LOTW_QSL_SENT,null)) as LoTW_Sent_today,
COUNT(IF(COL_LOTW_QSL_RCVD="Y" and DATE(COL_LOTW_QSLRDATE)=DATE(SYSDATE()),COL_LOTW_QSL_RCVD,null)) as LoTW_Received_today
');
$this->db->where_in('station_id', $logbooks_locations_array);
if ($query = $this->db->get($this->config->item('table_name')))
{
$this->db->last_query();
foreach ($query->result() as $row)
{
$QSLBreakdown['QSL_Sent'] = $row->QSL_Sent;
$QSLBreakdown['QSL_Received'] = $row->QSL_Received;
$QSLBreakdown['QSL_Requested'] = $row->QSL_Requested;
$QSLBreakdown['eQSL_Sent'] = $row->eQSL_Sent;
$QSLBreakdown['eQSL_Received'] = $row->eQSL_Received;
$QSLBreakdown['LoTW_Sent'] = $row->LoTW_Sent;
$QSLBreakdown['LoTW_Received'] = $row->LoTW_Received;
}
if ($query = $this->db->get($this->config->item('table_name'))) {
$this->db->last_query();
foreach ($query->result() as $row) {
$QSLBreakdown['QSL_Sent'] = $row->QSL_Sent;
$QSLBreakdown['QSL_Received'] = $row->QSL_Received;
$QSLBreakdown['QSL_Requested'] = $row->QSL_Requested;
$QSLBreakdown['eQSL_Sent'] = $row->eQSL_Sent;
$QSLBreakdown['eQSL_Received'] = $row->eQSL_Received;
$QSLBreakdown['LoTW_Sent'] = $row->LoTW_Sent;
$QSLBreakdown['LoTW_Received'] = $row->LoTW_Received;
$QSLBreakdown['QSL_Sent_today'] = $row->QSL_Sent_today;
$QSLBreakdown['QSL_Received_today'] = $row->QSL_Received_today;
$QSLBreakdown['QSL_Requested_today'] = $row->QSL_Requested_today;
$QSLBreakdown['eQSL_Sent_today'] = $row->eQSL_Sent_today;
$QSLBreakdown['eQSL_Received_today'] = $row->eQSL_Received_today;
$QSLBreakdown['LoTW_Sent_today'] = $row->LoTW_Sent_today;
$QSLBreakdown['LoTW_Received_today'] = $row->LoTW_Received_today;
}
return $QSLBreakdown;
}
else
{
$QSLBreakdown['QSL_Sent'] = 0;
$QSLBreakdown['QSL_Received'] = 0;
$QSLBreakdown['QSL_Requested'] = 0;
$QSLBreakdown['eQSL_Sent'] = 0;
$QSLBreakdown['eQSL_Received'] = 0;
$QSLBreakdown['LoTW_Sent'] = 0;
$QSLBreakdown['LoTW_Received'] = 0;
return $QSLBreakdown;
} else {
$QSLBreakdown['QSL_Sent'] = 0;
$QSLBreakdown['QSL_Received'] = 0;
$QSLBreakdown['QSL_Requested'] = 0;
$QSLBreakdown['eQSL_Sent'] = 0;
$QSLBreakdown['eQSL_Received'] = 0;
$QSLBreakdown['LoTW_Sent'] = 0;
$QSLBreakdown['LoTW_Received'] = 0;
$QSLBreakdown['QSL_Sent_today'] = 0;
$QSLBreakdown['QSL_Received_today'] = 0;
$QSLBreakdown['QSL_Requested_today'] = 0;
$QSLBreakdown['eQSL_Sent_today'] = 0;
$QSLBreakdown['eQSL_Received_today'] = 0;
$QSLBreakdown['LoTW_Sent_today'] = 0;
$QSLBreakdown['LoTW_Received_today'] = 0;
return $QSLBreakdown;
}
} else {
$QSLBreakdown['QSL_Sent'] = 0;
$QSLBreakdown['QSL_Received'] = 0;
$QSLBreakdown['QSL_Requested'] = 0;
$QSLBreakdown['eQSL_Sent'] = 0;
$QSLBreakdown['eQSL_Received'] = 0;
$QSLBreakdown['LoTW_Sent'] = 0;
$QSLBreakdown['LoTW_Received'] = 0;
return $QSLBreakdown;
}
} else {
$QSLBreakdown['QSL_Sent'] = 0;
$QSLBreakdown['QSL_Received'] = 0;
$QSLBreakdown['QSL_Requested'] = 0;
$QSLBreakdown['eQSL_Sent'] = 0;
$QSLBreakdown['eQSL_Received'] = 0;
$QSLBreakdown['LoTW_Sent'] = 0;
$QSLBreakdown['LoTW_Received'] = 0;
$QSLBreakdown['QSL_Sent_today'] = 0;
$QSLBreakdown['QSL_Received_today'] = 0;
$QSLBreakdown['QSL_Requested_today'] = 0;
$QSLBreakdown['eQSL_Sent_today'] = 0;
$QSLBreakdown['eQSL_Received_today'] = 0;
$QSLBreakdown['LoTW_Sent_today'] = 0;
$QSLBreakdown['LoTW_Received_today'] = 0;
return $QSLBreakdown;
return $QSLBreakdown;
}
}
@ -2629,30 +2675,6 @@ class Logbook_model extends CI_Model {
}
}
function api_search_query($query) {
$time_start = microtime(true);
$results = $this->db->query($query);
if(!$results) {
return array('query' => $query, 'error' => $this->db->_error_number(), 'time' => 0);
}
$time_end = microtime(true);
$time = round($time_end - $time_start, 4);
return array('query' => $query, 'results' => $results, 'time' => $time);
}
function api_insert_query($query) {
$time_start = microtime(true);
$results = $this->db->insert($this->config->item('table_name'), $query);
if(!$results) {
return array('query' => $query, 'error' => $this->db->_error_number(), 'time' => 0);
}
$time_end = microtime(true);
$time = round($time_end - $time_start, 4);
return array('query' => $this->db->queries[2], 'result_string' => $results, 'time' => $time);
}
/* Delete QSO based on the QSO ID */
function delete($id) {
if ($this->check_qso_is_accessible($id)) {

Wyświetl plik

@ -86,19 +86,19 @@ class Logbookadvanced_model extends CI_Model {
}
if ($searchCriteria['eqslSent'] !== '') {
$condition = "COL_EQSL_SENT = ?";
$condition = "COL_EQSL_QSL_SENT = ?";
if ($searchCriteria['eqslSent'] == 'N') {
$condition = '('.$condition;
$condition .= " OR COL_EQSL_SENT IS NULL OR COL_EQSL_SENT = '')";
$condition .= " OR COL_EQSL_QSL_SENT IS NULL OR COL_EQSL_QSL_SENT = '')";
}
$conditions[] = $condition;
$binding[] = $searchCriteria['eqslSent'];
}
if ($searchCriteria['eqslReceived'] !== '') {
$condition = "COL_EQSL_RCVD = ?";
$condition = "COL_EQSL_QSL_RCVD = ?";
if ($searchCriteria['eqslReceived'] == 'N') {
$condition = '('.$condition;
$condition .= " OR COL_EQSL_RCVD IS NULL OR COL_EQSL_RCVD = '')";
$condition .= " OR COL_EQSL_QSL_RCVD IS NULL OR COL_EQSL_QSL_RCVD = '')";
}
$conditions[] = $condition;
$binding[] = $searchCriteria['eqslReceived'];
@ -168,6 +168,18 @@ class Logbookadvanced_model extends CI_Model {
$limit = $searchCriteria['qsoresults'];
$where2 = '';
if ($searchCriteria['qslimages'] !== '') {
if ($searchCriteria['qslimages'] == 'Y') {
$where2 .= ' and x.qslcount > "0"';
}
if ($searchCriteria['qslimages'] == 'N') {
$where2 .= ' and x.qslcount is null';
}
}
$sql = "
SELECT *
FROM " . $this->config->item('table_name') . " qsos
@ -181,6 +193,7 @@ class Logbookadvanced_model extends CI_Model {
) x on qsos.COL_PRIMARY_KEY = x.qsoid
WHERE station_profile.user_id = ?
$where
$where2
ORDER BY qsos.COL_TIME_ON desc, qsos.COL_PRIMARY_KEY desc
LIMIT $limit
";
@ -391,4 +404,19 @@ class Logbookadvanced_model extends CI_Model {
return $modes;
}
function getQslsForQsoIds($ids) {
$CI =& get_instance();
$CI->load->model('logbooks_model');
$logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
$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_in('qsoid', $ids);
$this->db->where_in('station_id', $logbooks_locations_array);
$this->db->order_by("id", "desc");
return $this->db->get()->result();
}
}

Wyświetl plik

@ -216,21 +216,25 @@ function echoQrbCalcLink($mygrid, $grid, $vucc) {
<table class="table table-striped">
<tr class="titles">
<td colspan="2"><i class="fas fa-envelope"></i> <?php echo lang('general_word_qslcards'); ?></td>
<td colspan="1"><?php echo lang('general_word_today'); ?></td>
</tr>
<tr>
<td width="50%"><?php echo lang('general_word_sent'); ?></td>
<td width="50%"><?php echo $total_qsl_sent; ?></td>
<td width="25%"><?php echo $total_qsl_sent; ?></td>
<td width="25%"><a href="javascript:displayContacts('','All','All','QSLSDATE','');"><?php echo $qsl_sent_today; ?></a></td>
</tr>
<tr>
<td width="50%"><?php echo lang('general_word_received'); ?></td>
<td width="50%"><?php echo $total_qsl_rcvd; ?></td>
<td width="25%"><?php echo $total_qsl_rcvd; ?></td>
<td width="25%"><a href="javascript:displayContacts('','All','All','QSLRDATE','');"><?php echo $qsl_rcvd_today; ?></a></td>
</tr>
<tr>
<td width="50%"><?php echo lang('general_word_requested'); ?></td>
<td width="50%"><?php echo $total_qsl_requested; ?></td>
<td width="25%"><?php echo $total_qsl_requested; ?></td>
<td width="25%"><?php echo $qsl_requested_today; ?></td>
</tr>
</table>
<?php } ?>
@ -239,16 +243,19 @@ function echoQrbCalcLink($mygrid, $grid, $vucc) {
<table class="table table-striped">
<tr class="titles">
<td colspan="2"><i class="fas fa-address-card"></i> <?php echo lang('general_word_eqslcards'); ?></td>
<td colspan="1"><?php echo lang('general_word_today'); ?></td>
</tr>
<tr>
<td width="50%"><?php echo lang('general_word_sent'); ?></td>
<td width="50%"><?php echo $total_eqsl_sent; ?></td>
<td width="25%"><?php echo $total_eqsl_sent; ?></td>
<td width="25%"><a href="javascript:displayContacts('','All','All','EQSLSDATE','');"><?php echo $eqsl_sent_today; ?></a></td>
</tr>
<tr>
<td width="50%"><?php echo lang('general_word_received'); ?></td>
<td width="50%"><?php echo $total_eqsl_rcvd; ?></td>
<td width="25%"><?php echo $total_eqsl_rcvd; ?></td>
<td width="25%"><a href="javascript:displayContacts('','All','All','EQSLRDATE','');"><?php echo $eqsl_rcvd_today; ?></a></td>
</tr>
</table>
<?php } ?>
@ -257,16 +264,19 @@ function echoQrbCalcLink($mygrid, $grid, $vucc) {
<table class="table table-striped">
<tr class="titles">
<td colspan="2"><i class="fas fa-list"></i> <?php echo lang('general_word_lotw'); ?></td>
<td colspan="1"><?php echo lang('general_word_today'); ?></td>
</tr>
<tr>
<td width="50%"><?php echo lang('general_word_sent'); ?></td>
<td width="50%"><?php echo $total_lotw_sent; ?></td>
<td width="25%"><?php echo $total_lotw_sent; ?></td>
<td width="25%"><a href="javascript:displayContacts('','All','All','LOTWSDATE','');"><?php echo $lotw_sent_today; ?></a></td>
</tr>
<tr>
<td width="50%"><?php echo lang('general_word_received'); ?></td>
<td width="50%"><?php echo $total_lotw_rcvd; ?></td>
<td width="25%"><?php echo $total_lotw_rcvd; ?></td>
<td width="25%"><a href="javascript:displayContacts('','All','All','LOTWRDATE','');"><?php echo $lotw_rcvd_today; ?></a></td>
</tr>
</table>
<?php } ?>

Wyświetl plik

@ -1,12 +0,0 @@
<div id="container">
<h2><?php echo $page_title; ?></h2>
<p>Below are all the exportable data options available in Cloudlog</p>
<h3>Data Types</h3>
<ul>
<li><a href="<?php echo site_url('kml'); ?>">All QSOs as KML</a></li>
<li><a href="<?php echo site_url('adif/export'); ?>">ADIF Export</a></li>
</ul>
</div>

Wyświetl plik

@ -46,7 +46,7 @@
echo '<td id ="modcount'.$station->station_id.'">' . $station->modcount . '</td>';
echo '<td id ="notcount'.$station->station_id.'">' . $station->notcount . '</td>';
echo '<td id ="totcount'.$station->station_id.'">' . $station->totcount . '</td>';
echo '<td><button id="HrdlogUpload" type="button" name="HrdlogUpload" class="btn btn-primary btn-sm ld-ext-right" onclick="ExportHrd('. $station->station_id .')"><i class="fas fa-cloud-upload-alt"></i> Upload<div class="ld ld-ring ld-spin"></div></button></td>';
echo '<td><button id="HrdlogUpload" type="button" name="HrdlogUpload" class="btn btn-primary btn-sm ld-ext-right ld-ext-right-'.$station->station_id.'" onclick="ExportHrd('. $station->station_id .')"><i class="fas fa-cloud-upload-alt"></i> Upload<div class="ld ld-ring ld-spin"></div></button></td>';
echo '</tr>';
}
echo '</tfoot></table>';

Wyświetl plik

@ -940,8 +940,9 @@ $(document).on('keypress',function(e) {
<?php if ($this->uri->segment(1) == "qso") { ?>
<script src="<?php echo base_url() ;?>assets/js/sections/qso.js"></script>
<script src="<?php echo base_url() ;?>assets/js/winkey.js"></script>
<?php
<?php if ($this->config->item('winkey')) { ?>
<script src="<?php echo base_url() ;?>assets/js/winkey.js"></script>
<?php }
if ($this->optionslib->get_option('dxcache_url') != ''){ ?>
<script type="text/javascript">
@ -950,6 +951,7 @@ $(document).on('keypress',function(e) {
$("#check_cluster").on("click", function() {
$.ajax({ url: dxcluster_provider+"/qrg_lookup/"+$("#frequency").val()/1000, cache: false, dataType: "json" }).done(
function(dxspot) {
reset_fields();
$("#callsign").val(dxspot.spotted);
$("#callsign").trigger("blur");
}
@ -1179,7 +1181,7 @@ $(document).on('keypress',function(e) {
async: false,
type: 'GET',
dataType: "json",
url: "https://nominatim.openstreetmap.org/search/?city=" + $(this).val() + "&format=json&addressdetails=1&limit=1",
url: "https://nominatim.openstreetmap.org/?city=" + $(this).val() + "&format=json&addressdetails=1&limit=1",
data: {},
success: function (data) {
if (typeof data[0].lat !== 'undefined') {
@ -1242,6 +1244,9 @@ $(document).on('keypress',function(e) {
<script type="text/javascript" src="<?php echo base_url(); ?>assets/js/moment.min.js"></script>
<script type="text/javascript" src="<?php echo base_url(); ?>assets/js/datetime-moment.js"></script>
<script>
$('#notice-alerts').delay(1000).fadeOut(5000);
function setRst(mode) {
if(mode == 'JT65' || mode == 'JT65B' || mode == 'JT6C' || mode == 'JTMS' || mode == 'ISCAT' || mode == 'MSK144' || mode == 'JTMSK' || mode == 'QRA64' || mode == 'FT8' || mode == 'FT4' || mode == 'JS8' || mode == 'JT9' || mode == 'JT9-1' || mode == 'ROS'){
$('#rst_sent').val('-5');
@ -1314,7 +1319,7 @@ $(document).on('keypress',function(e) {
if(data.updated_minutes_ago > minutes) {
$(".radio_cat_state" ).remove();
if($('.radio_timeout_error').length == 0) {
$('.qso_panel').prepend('<div class="alert alert-danger radio_timeout_error" role="alert"><i class="fas fa-broadcast-tower"></i> Radio connection timed-out: ' + $('select.radios option:selected').text() + ' data is ' + data.updated_minutes_ago + ' minutes old.</div>');
$('#radio_status').prepend('<div class="alert alert-danger radio_timeout_error" role="alert"><i class="fas fa-broadcast-tower"></i> Radio connection timed-out: ' + $('select.radios option:selected').text() + ' data is ' + data.updated_minutes_ago + ' minutes old.</div>');
} else {
$('.radio_timeout_error').html('Radio connection timed-out: ' + $('select.radios option:selected').text() + ' data is ' + data.updated_minutes_ago + ' minutes old.');
}
@ -1337,7 +1342,7 @@ $(document).on('keypress',function(e) {
text = text+'<span style="margin-left:10px"></span><b>RX:</b> '+(Math.round(parseInt(data.frequency_rx)/1000)/1000).toFixed(3)+' MHz)';
}
if (! $('#radio_cat_state').length) {
$('.qso_panel').prepend('<div aria-hidden="true"><div id="radio_cat_state" class="alert alert-success radio_cat_state" role="alert">'+text+'</div></div>');
$('#radio_status').prepend('<div aria-hidden="true"><div id="radio_cat_state" class="alert alert-success radio_cat_state" role="alert">'+text+'</div></div>');
} else {
$('#radio_cat_state').html(text);
}
@ -1860,40 +1865,6 @@ $(document).ready(function(){
</script>
<?php } ?>
<?php if ($this->uri->segment(2) == "dok") { ?>
<script>
function displayDokContacts(dok, band) {
var baseURL= "<?php echo base_url();?>";
$.ajax({
url: baseURL + 'index.php/awards/dok_details_ajax',
type: 'post',
data: {'DOK': dok,
'Band': band
},
success: function(html) {
BootstrapDialog.show({
title: 'QSO Data',
size: BootstrapDialog.SIZE_WIDE,
cssClass: 'qso-dok-dialog',
nl2br: false,
message: html,
onshown: function(dialog) {
$('[data-toggle="tooltip"]').tooltip();
},
buttons: [{
label: 'Close',
action: function (dialogItself) {
dialogItself.close();
}
}]
});
}
});
}
</script>
<?php } ?>
<?php if ($this->uri->segment(2) == "iota") { ?>
<script>
@ -2225,7 +2196,17 @@ $(document).ready(function(){
<script type="text/javascript" src="<?php echo base_url(); ?>assets/js/datetime-moment.js"></script>
<script>
$.fn.dataTable.moment('<?php echo $usethisformat ?>');
$.fn.dataTable.ext.buttons.clear = {
className: 'buttons-clear',
action: function ( e, dt, node, config ) {
dt.search('').draw();
}
};
<?php if ($this->uri->segment(1) == "qsl") { ?>
$('.qsltable').DataTable({
<?php } else if ($this->uri->segment(1) == "eqsl") { ?>
$('.eqsltable').DataTable({
<?php } ?>
"pageLength": 25,
responsive: false,
ordering: true,
@ -2234,7 +2215,18 @@ $(document).ready(function(){
"paging": false,
"scrollX": true,
"order": [ 2, 'desc' ],
dom: 'Bfrtip',
buttons: [
{
extend: 'clear',
text: 'Clear'
}
]
});
// change color of csv-button if dark mode is chosen
if (isDarkModeTheme()) {
$('[class*="buttons"]').css("color", "white");
}
</script>
@ -2395,6 +2387,53 @@ function viewEqsl(picture, callsign) {
});
}
function displayContactsOnMap(target, searchphrase, band, mode, type, qsl) {
$.ajax({
url: base_url + 'index.php/awards/qso_details_ajax',
type: 'post',
data: {
'Searchphrase': searchphrase,
'Band': band,
'Mode': mode,
'Type': type,
'QSL' : qsl
},
success: function (html) {
var dialog = new BootstrapDialog({
title: 'QSO Data',
size: BootstrapDialog.SIZE_WIDE,
cssClass: 'qso-dialog',
nl2br: false,
message: html,
onshown: function(dialog) {
$('[data-toggle="tooltip"]').tooltip();
$('.contacttable').DataTable({
"pageLength": 25,
responsive: false,
ordering: false,
"scrollY": "550px",
"scrollCollapse": true,
"paging": false,
"scrollX": true,
dom: 'Bfrtip',
buttons: [
'csv'
]
});
},
buttons: [{
label: 'Close',
action: function (dialogItself) {
dialogItself.close();
}
}]
});
dialog.realize();
target.append(dialog.getModal());
dialog.open();
}
});
}
function uploadQsl() {
var baseURL= "<?php echo base_url();?>";
var formdata = new FormData(document.getElementById("fileinfo"));
@ -2794,7 +2833,7 @@ function viewEqsl(picture, callsign) {
<?php if ($this->uri->segment(1) == "eqsl") { ?>
<script>
$('.table').DataTable({
$('.qsotable').DataTable({
"stateSave": true,
"pageLength": 25,
responsive: false,
@ -2803,7 +2842,7 @@ function viewEqsl(picture, callsign) {
"paging": false,
"scrollX": true,
"ordering": true,
"order": [ 2, 'desc' ],
"order": [ 0, 'desc' ],
});
</script>
<?php } ?>

Wyświetl plik

@ -318,7 +318,7 @@ $oqrs_requests = $CI->oqrs_model->oqrs_requests($location_list);
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<?php
foreach(json_decode($this->optionslib->get_option('menuitems')) as $item) {
echo '<a class="dropdown-item" href="' . site_url($item->url) . '" title="Gridsquares"><i class="fas '. $item->icon .'"></i> ' . $item->text . '</a>';
echo '<a class="dropdown-item" href="' . site_url($item->url) . '" title="'. $item->text. '"><i class="fas '. $item->icon .'"></i> ' . $item->text . '</a>';
}
?>
</div>

Wyświetl plik

@ -247,12 +247,20 @@
</datalist>
<input type="search" list="qslvia" name="qslviainput" class="custom-select custom-select-sm">
</div>
<div class="form-group col-lg-2 col-md-2 col-sm-3 col-xl">
<label for="qslimages">QSL Images</label>
<select class="form-control form-control-sm" id="qslimages" name="qslimages">
<option value="">-</option>
<option value="Y">Yes</option>
<option value="N">No</option>
</select>
</div>
</div>
</div>
<div class="actionbody collapse">
<div class="mb-2">
<span class="h6">With selected :</span>
<div class="mb-2 btn-group">
<span class="h6 mr-1">With selected:</span>
<button type="button" class="btn btn-sm btn-primary mr-1" id="btnUpdateFromCallbook">Update from Callbook</button>
<button type="button" class="btn btn-sm btn-primary mr-1" id="queueBureau">Queue Bureau</button>
<button type="button" class="btn btn-sm btn-primary mr-1" id="queueDirect">Queue Direct</button>
@ -266,12 +274,13 @@
<button type="button" class="btn btn-sm btn-warning mr-1" id="receivedDirect">Received (direct)</button>
<button type="button" class="btn btn-sm btn-info mr-1" id="exportAdif">Create ADIF</button>
<button type="button" class="btn btn-sm btn-info mr-1" id="printLabel">Print Label</button>
<button type="button" class="btn btn-sm btn-info mr-1" id="qslSlideshow">QSL Slideshow</button>
<button type="button" class="btn btn-sm btn-danger mr-1" id="deleteQsos">Delete</button>
</div>
</div>
<div class="quickfilterbody collapse">
<div class="mb-2">
<span class="h6">Quick search with selected :</span>
<div class="mb-2 btn-group">
<span class="h6 mr-1">Quick search with selected:</span>
<button type="button" class="btn btn-sm btn-primary mr-1" id="searchCallsign">Search Callsign</button>
<button type="button" class="btn btn-sm btn-primary mr-1" id="searchDxcc">Search DXCC</button>
<button type="button" class="btn btn-sm btn-primary mr-1" id="searchIota">Search IOTA</button>

Wyświetl plik

@ -0,0 +1,74 @@
<div id="carouselExampleIndicators" class="carousel slide" data-ride="carousel">
<?php if (count($qslimages) > 1) { ?>
<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>
<?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 '">';?>
<table style="width:100%" class="table-sm table table-bordered table-hover table-striped table-condensed text-center">
<thead>
<tr>
<th>Callsign</th>
<th>Date/Time</th>
<th>Mode</th>
<th>Band</th>
<th>Name</th>
<th>DXCC</th>
<th>State</th>
<th>CQ Zone</th>
<th>IOTA</th>
<th>Gridsquare</th>
</tr>
</thead>
<tbody>
<?php
echo '<tr>';
echo '<td>'.$image->COL_CALL.'</td>';
echo '<td>'.$image->COL_TIME_ON.'</td>';
echo '<td>'.$image->COL_MODE.'</td>';
echo '<td>'.$image->COL_BAND.'</td>';
echo '<td>'.$image->COL_NAME.'</td>';
echo '<td>'.$image->COL_COUNTRY.'</td>';
echo '<td>'.$image->COL_STATE.'</td>';
echo '<td>'.$image->COL_CQZ.'</td>';
echo '<td>'.$image->COL_IOTA.'</td>';
echo '<td>'.$image->COL_GRIDSQUARE.'</td>';
echo '</tr>';
?>
</tbody>
</table>
<?php 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-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>
<?php } ?>
</div>

Wyświetl plik

@ -45,7 +45,7 @@
echo '<td id ="modcount'.$station->station_id.'">' . $station->modcount . '</td>';
echo '<td id ="notcount'.$station->station_id.'">' . $station->notcount . '</td>';
echo '<td id ="totcount'.$station->station_id.'">' . $station->totcount . '</td>';
echo '<td><button id="qrzUpload" type="button" name="qrzUpload" class="btn btn-primary btn-sm ld-ext-right" onclick="ExportQrz('. $station->station_id .')"><i class="fas fa-cloud-upload-alt"></i> Upload<div class="ld ld-ring ld-spin"></div></button></td>';
echo '<td><button id="qrzUpload" type="button" name="qrzUpload" class="btn btn-primary btn-sm ld-ext-right ld-ext-right-'.$station->station_id.'" onclick="ExportQrz('. $station->station_id .')"><i class="fas fa-cloud-upload-alt"></i> Upload<div class="ld ld-ring ld-spin"></div></button></td>';
echo '</tr>';
}
echo '</tfoot></table>';

Wyświetl plik

@ -1,4 +1,5 @@
<div id="carouselExampleIndicators" class="carousel slide" data-ride="carousel">
<?php if (count($qslimages) > 1) { ?>
<ol class="carousel-indicators">
<?php
$i = 0;
@ -12,6 +13,7 @@
}
?>
</ol>
<?php } ?>
<div class="carousel-inner">
<?php
@ -27,12 +29,14 @@
}
?>
</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>
<?php if (count($qslimages) > 1) { ?>
<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>
<?php } ?>
</div>

Wyświetl plik

@ -13,9 +13,10 @@ if (empty($station_id)) {
}
if ($qsos->result() != NULL) {
echo '<table style="width:100%" class="table table-sm table-bordered table-hover table-striped table-condensed">
echo '<table style="width:100%" class="table table-sm table-bordered table-hover table-striped table-condensed qslprint">
<thead>
<tr>
<th style=\'text-align: center\'><div class="form-check" style="margin-top: -1.5em"><input class="form-check-input" type="checkbox" id="checkBoxAll" /></div></th>
<th style=\'text-align: center\'>'.lang('gen_hamradio_callsign').'</th>
<th style=\'text-align: center\'>' . lang('general_word_date') . '</th>
<th style=\'text-align: center\'>'. lang('general_word_time') .'</th>
@ -25,7 +26,7 @@ if ($qsos->result() != NULL) {
<th style=\'text-align: center\'>' . lang('gen_hamradio_station') . '</th>
<th style=\'text-align: center\'>Sent method</th>
<th style=\'text-align: center\'>Mark as sent</th>
<th style=\'text-align: center\'>Delete</th>
<th style=\'text-align: center\'>Remove</th>
<th style=\'text-align: center\'>QSO List</th>
</tr>
</thead><tbody>';
@ -41,6 +42,7 @@ if ($qsos->result() != NULL) {
foreach ($qsos->result() as $qsl) {
echo '<tr id="qslprint_'.$qsl->COL_PRIMARY_KEY.'">';
echo '<td style=\'text-align: center\'><div class="form-check"><input class="form-check-input" type="checkbox" /></div></td>';
echo '<td style=\'text-align: center\'>' . $qsl->COL_CALL . '</td>';
echo '<td style=\'text-align: center\'>'; $timestamp = strtotime($qsl->COL_TIME_ON); echo date($custom_date_format, $timestamp); echo '</td>';
echo '<td style=\'text-align: center\'>'; $timestamp = strtotime($qsl->COL_TIME_ON); echo date('H:i', $timestamp); echo '</td>';
@ -57,11 +59,15 @@ if ($qsos->result() != NULL) {
echo '</tbody></table>';
?>
<p><a href="<?php echo site_url('qslprint/exportcsv/' . $station_id); ?>" title="Export CSV-file" class="btn btn-primary">Export requested QSLs to CSV-file</a></p>
<p><button onclick="markSelectedQsos();" title="Mark selected QSOs as printed" class="btn btn-success markallprinted">Mark selected QSOs as printed</button>
<p><a href="<?php echo site_url('qslprint/exportadif/' . $station_id); ?>" title="Export ADIF" class="btn btn-primary">Export requested QSLs to ADIF-file</a></p>
<button onclick="removeSelectedQsos();" title="Remove seleced QSOS from print queue" class="btn btn-danger removeall">Remove selected QSOs from the queue</button></p>
<p><a href="<?php echo site_url('qslprint/qsl_printed/' . $station_id); ?>" title="Mark QSLs as printed" class="btn btn-primary">Mark requested QSLs as sent</a></p>
<p><a href="<?php echo site_url('qslprint/exportcsv/' . $station_id); ?>" title="Export CSV-file" class="btn btn-primary">Export requested QSLs to CSV-file</a>
<a href="<?php echo site_url('qslprint/exportadif/' . $station_id); ?>" title="Export ADIF" class="btn btn-primary">Export requested QSLs to ADIF-file</a>
<a href="<?php echo site_url('qslprint/qsl_printed/' . $station_id); ?>" title="Mark QSLs as printed" class="btn btn-primary">Mark requested QSLs as sent</a></p>
<?php
} else {

Wyświetl plik

@ -0,0 +1,65 @@
<div id="qso-last-table">
<div class="table-responsive" style="font-size: 0.95rem;">
<table class="table">
<tr class="log_title titles">
<td><?php echo lang('general_word_date'); ?>/<?php echo lang('general_word_time'); ?></td>
<td><?php echo lang('gen_hamradio_call'); ?></td>
<td><?php echo lang('gen_hamradio_mode'); ?></td>
<td><?php echo lang('gen_hamradio_rsts'); ?></td>
<td><?php echo lang('gen_hamradio_rstr'); ?></td>
<?php if ($this->session->userdata('user_column1')=='Frequency' || $this->session->userdata('user_column2')=='Frequency' || $this->session->userdata('user_column3')=='Frequency' || $this->session->userdata('user_column4')=='Frequency' || $this->session->userdata('user_column5')=='Frequency') {
echo '<td>'.lang('gen_hamradio_frequency').'</td>';
} else {
echo '<td>'.lang('gen_hamradio_band').'</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');
}
$i = 0;
if($query != false) {
foreach ($query->result() as $row) {
echo '<tr class="tr'.($i & 1).'">';
echo '<td>';
$timestamp = strtotime($row->COL_TIME_ON);
echo date($custom_date_format, $timestamp);
echo date(' H:i',strtotime($row->COL_TIME_ON));
?>
</td>
<td>
<a id="edit_qso" href="javascript:displayQso(<?php echo $row->COL_PRIMARY_KEY; ?>)"><?php echo str_replace("0","&Oslash;",strtoupper($row->COL_CALL)); ?></a>
</td>
<td><?php echo $row->COL_SUBMODE==null?$row->COL_MODE:$row->COL_SUBMODE; ?></td>
<td><?php echo $row->COL_RST_SENT; ?></td>
<td><?php echo $row->COL_RST_RCVD; ?></td>
<?php if($row->COL_SAT_NAME != null) { ?>
<td><?php echo $row->COL_SAT_NAME; ?></td>
<?php } else {
if ($this->session->userdata('user_column1')=='Frequency' || $this->session->userdata('user_column2')=='Frequency' || $this->session->userdata('user_column3')=='Frequency' || $this->session->userdata('user_column4')=='Frequency' || $this->session->userdata('user_column5')=='Frequency') {
echo '<td>';
if ($row->COL_FREQ != null) {
echo $this->frequency->hz_to_mhz($row->COL_FREQ);
} else {
echo $row->COL_BAND;
}
echo '</td>';
} else {
echo '<td>'.$row->COL_BAND.'</td>';
}
} ?>
</tr>
<?php $i++; } } ?>
</table>
</div>
</div>

Wyświetl plik

@ -502,13 +502,13 @@
<div class="col-sm-7">
<?php if($notice) { ?>
<div class="alert alert-info" role="alert">
<div id="notice-alerts" class="alert alert-info" role="alert">
<?php echo $notice; ?>
</div>
<?php } ?>
<?php if(validation_errors()) { ?>
<div class="alert alert-warning" role="alert">
<div id="notice-alerts" class="alert alert-warning" role="alert">
<?php echo validation_errors(); ?>
</div>
<?php } ?>
@ -518,6 +518,8 @@
<div id="qsomap" style="width: 100%; height: 200px;"></div>
</div>
<div id="radio_status"></div>
<!-- Winkey Starts -->
<?php
@ -579,7 +581,7 @@
<div id="partial_view" style="font-size: 0.95rem;"></div>
<div id="qso-last-table">
<div id="qso-last-table" hx-get="<?php echo site_url('/qso/component_past_contacts'); ?>" hx-trigger="every 5s">
<div class="table-responsive" style="font-size: 0.95rem;">
<table class="table">

Wyświetl plik

@ -1,11 +1,14 @@
<div class="alert alert-secondary" role="alert" style="margin-bottom: 0px !important;">
<div class="container">
<?php if ($results) { ?>
<p style="margin-bottom: 0px !important;"><?php echo lang('gen_hamradio_logbook'); ?>: <span class="badge badge-info"><?php echo $this->logbooks_model->find_name($this->session->userdata('active_station_logbook')); ?></span> <?php echo lang('general_word_location'); ?>: <span class="badge badge-info"><?php echo $this->stations->find_name(); ?></span></p>
<?php } ?>
</div>
</div>
<div class="container logbook">
<h2><?php echo lang('gen_hamradio_logbook'); ?></h2>
<?php if ($results) { ?>
<h6><?php echo lang('gen_hamradio_logbook').": ".$this->logbooks_model->find_name($this->session->userdata('active_station_logbook')); ?> <?php echo lang('general_word_location').": ".$this->stations->find_name(); ?></h6>
<?php } ?>
<?php if($this->session->flashdata('notice')) { ?>
<div class="alert alert-info" role="alert">
<?php echo $this->session->flashdata('notice'); ?>

Wyświetl plik

@ -52,7 +52,7 @@
echo '<td>' . $station->station_callsign . '</td>';
echo '<td id ="notcount'.$station->station_id.'">' . $station->notcount . '</td>';
echo '<td id ="totcount'.$station->station_id.'">' . $station->totcount . '</td>';
echo '<td><button id="webadifUpload" type="button" name="webadifUpload" class="btn btn-primary btn-sm ld-ext-right" onclick="ExportWebADIF('. $station->station_id .')"><i class="fas fa-cloud-upload-alt"></i> Upload<div class="ld ld-ring ld-spin"></div></button></td>';
echo '<td><button id="webadifUpload" type="button" name="webadifUpload" class="btn btn-primary btn-sm ld-ext-right ld-ext-right-'.$station->station_id.'" onclick="ExportWebADIF('. $station->station_id .')"><i class="fas fa-cloud-upload-alt"></i> Upload<div class="ld ld-ring ld-spin"></div></button></td>';
echo '</tr>';
}
}

Wyświetl plik

@ -507,4 +507,12 @@ div#station_logbooks_linked_table_paginate {
.highcharts-data-table tr:hover {
background: #f1f7ff;
}
#radio_cat_state {
margin-bottom: 10px;
}
.previous-qsos table {
margin-bottom: 0px;
}

Wyświetl plik

@ -152,8 +152,8 @@ function qso_edit(id) {
$('#locator').change(function(){
if ($(this).val().length >= 4) {
$('#locator_info').load("logbook/searchbearing/" + $(this).val() + "/" + $('#stationProfile').val()).fadeIn("slow");
$.get('logbook/searchdistance/' + $(this).val() + "/" + $('#stationProfile').val(), function(result) {
$('#locator_info').load(base_url + "index.php/logbook/searchbearing/" + $(this).val() + "/" + $('#stationProfile').val()).fadeIn("slow");
$.get(base_url + 'index.php/logbook/searchdistance/' + $(this).val() + "/" + $('#stationProfile').val(), function(result) {
document.getElementById("distance").value = result;
});
}

Wyświetl plik

@ -190,5 +190,5 @@ function load_cq_map2(data) {
function onClick(e) {
var marker = e.target;
displayContacts(marker.options.title, $('#band2').val(), $('#mode').val(), 'CQZone');
displayContactsOnMap($("#cqmap"),marker.options.title, $('#band2').val(), $('#mode').val(), 'CQZone');
}

Wyświetl plik

@ -155,5 +155,5 @@ function addMarker(L, D, mapColor, map) {
function onClick(e) {
var marker = e.target;
displayContacts(marker.options.adif, $('#band2').val(), $('#mode').val(), 'DXCC2');
displayContactsOnMap($("#dxccmap"),marker.options.adif, $('#band2').val(), $('#mode').val(), 'DXCC2');
}

Wyświetl plik

@ -17,16 +17,16 @@ function ExportHrd(station_id) {
if ($(".errormessages").length > 0) {
$(".errormessages").remove();
}
$(".ld-ext-right").addClass('running');
$(".ld-ext-right").prop('disabled', true);
$(".ld-ext-right-"+station_id).addClass('running');
$(".ld-ext-right-"+station_id).prop('disabled', true);
$.ajax({
url: base_url + 'index.php/hrdlog/upload_station',
type: 'post',
data: {'station_id': station_id},
success: function (data) {
$(".ld-ext-right").removeClass('running');
$(".ld-ext-right").prop('disabled', false);
$(".ld-ext-right-"+station_id).removeClass('running');
$(".ld-ext-right-"+station_id).prop('disabled', false);
if (data.status == 'OK') {
$.each(data.info, function(index, value){
$('#modcount'+value.station_id).html(value.modcount);

Wyświetl plik

@ -169,5 +169,5 @@ function addMarker(L, D, mapColor, map) {
function onClick(e) {
var marker = e.target;
displayContacts(marker.options.iota, $('#band2').val(), $('#mode').val(), 'IOTA');
displayContactsOnMap($("#iotamap"), marker.options.iota,$('#band2').val(), $('#mode').val(), 'IOTA');
}

Wyświetl plik

@ -197,6 +197,7 @@ $(document).ready(function () {
sota: this.sota.value,
pota: this.pota.value,
wwff: this.wwff.value,
qslimages: this.qslimages.value,
},
dataType: 'json',
success: function (data) {
@ -287,7 +288,10 @@ $(document).ready(function () {
$('#deleteQsos').prop("disabled", false);
})
}
}
},
onhide: function(dialogRef){
$('#deleteQsos').prop("disabled", false);
},
});
});
@ -408,6 +412,49 @@ $(document).ready(function () {
quickSearch('pota');
});
$('#qslSlideshow').click(function (event) {
var elements = $('#qsoList tbody input:checked');
var nElements = elements.length;
if (nElements == 0) {
return;
}
$('#qslSlideshow').prop("disabled", true);
var id_list=[];
elements.each(function() {
let id = $(this).first().closest('tr').data('qsoID')
id_list.push(id);
});
$.ajax({
url: base_url + 'index.php/logbookadvanced/qslSlideshow',
type: 'post',
data: {
ids: id_list,
},
success: function (html) {
BootstrapDialog.show({
title: 'QSL Card',
size: BootstrapDialog.SIZE_WIDE,
cssClass: 'lookup-dialog',
nl2br: false,
message: html,
onshown: function(dialog) {
},
buttons: [{
label: 'Close',
action: function (dialogItself) {
$('#qslSlideshow').prop("disabled", false);
dialogItself.close();
}
}],
onhide: function(dialogRef){
$('#qslSlideshow').prop("disabled", false);
},
});
}
});
});
function quickSearch(type) {
var elements = $('#qsoList tbody input:checked');
var nElements = elements.length;

Wyświetl plik

@ -17,16 +17,16 @@ function ExportQrz(station_id) {
if ($(".errormessages").length > 0) {
$(".errormessages").remove();
}
$(".ld-ext-right").addClass('running');
$(".ld-ext-right").prop('disabled', true);
$(".ld-ext-right-"+station_id).addClass('running');
$(".ld-ext-right-"+station_id).prop('disabled', true);
$.ajax({
url: base_url + 'index.php/qrz/upload_station',
type: 'post',
data: {'station_id': station_id},
success: function (data) {
$(".ld-ext-right").removeClass('running');
$(".ld-ext-right").prop('disabled', false);
$(".ld-ext-right-"+station_id).removeClass('running');
$(".ld-ext-right-"+station_id).prop('disabled', false);
if (data.status == 'OK') {
$.each(data.info, function(index, value){
$('#modcount'+value.station_id).html(value.modcount);

Wyświetl plik

@ -126,3 +126,91 @@ function mark_qsl_sent(id, method) {
}
});
}
$('#checkBoxAll').change(function (event) {
if (this.checked) {
$('.qslprint tbody tr').each(function (i) {
$(this).closest('tr').addClass('activeRow');
$(this).closest('tr').find("input[type=checkbox]").prop("checked", true);
});
} else {
$('.qslprint tbody tr').each(function (i) {
$(this).closest('tr').removeClass('activeRow');
$(this).closest('tr').find("input[type=checkbox]").prop("checked", false);
});
}
});
$('.qslprint').on('click', 'input[type="checkbox"]', function() {
if ($(this).is(":checked")) {
$(this).closest('tr').addClass('activeRow');
} else {
$(this).closest('tr').removeClass('activeRow');
}
});
function markSelectedQsos() {
var elements = $('.qslprint tbody input:checked');
var nElements = elements.length;
if (nElements == 0) {
return;
}
$('.markallprinted').prop("disabled", true);
var id_list=[];
elements.each(function() {
let id = $(this).first().closest('tr').attr('id');
id = id.match(/\d/g);
id = id.join("");
id_list.push(id);
});
$.ajax({
url: base_url + 'index.php/logbookadvanced/update_qsl',
type: 'post',
data: {'id': JSON.stringify(id_list, null, 2),
'sent' : 'Y',
'method' : 'B'
},
success: function(data) {
if (data !== []) {
$.each(data, function(k, v) {
$("#qslprint_"+this.qsoID).remove();
});
}
$('.markallprinted').prop("disabled", false);
}
});
}
function removeSelectedQsos() {
var elements = $('.qslprint tbody input:checked');
var nElements = elements.length;
if (nElements == 0) {
return;
}
$('.removeall').prop("disabled", true);
var id_list=[];
elements.each(function() {
let id = $(this).first().closest('tr').attr('id');
id = id.match(/\d/g);
id = id.join("");
id_list.push(id);
});
$.ajax({
url: base_url + 'index.php/logbookadvanced/update_qsl',
type: 'post',
data: {'id': JSON.stringify(id_list, null, 2),
'sent' : 'N',
'method' : ''
},
success: function(data) {
if (data !== []) {
$.each(data, function(k, v) {
$("#qslprint_"+this.qsoID).remove();
});
}
$('.removeall').prop("disabled", false);
}
});
}

Wyświetl plik

@ -307,7 +307,7 @@ $(document).on('change', 'input', function(){
function changebadge(entityname) {
if($("#sat_name" ).val() != "") {
$.getJSON('logbook/jsonlookupdxcc/' + convert_case(entityname) + '/SAT/0/0', function(result)
$.getJSON(base_url + 'index.php/logbook/jsonlookupdxcc/' + convert_case(entityname) + '/SAT/0/0', function(result)
{
$('#callsign_info').removeClass("badge-secondary");
@ -327,7 +327,7 @@ function changebadge(entityname) {
}
})
} else {
$.getJSON('logbook/jsonlookupdxcc/' + convert_case(entityname) + '/0/' + $("#band").val() +'/' + $("#mode").val(), function(result)
$.getJSON(base_url + 'index.php/logbook/jsonlookupdxcc/' + convert_case(entityname) + '/0/' + $("#band").val() +'/' + $("#mode").val(), function(result)
{
// Reset CSS values before updating
$('#callsign_info').removeClass("badge-secondary");
@ -426,7 +426,7 @@ $("#callsign").focusout(function() {
find_callsign.replace(/\//g, "-");
// Replace / in a callsign with - to stop urls breaking
$.getJSON('logbook/json/' + find_callsign.replace(/\//g, "-") + '/' + sat_type + '/' + json_band + '/' + json_mode + '/' + $('#stationProfile').val(), function(result)
$.getJSON(base_url + 'index.php/logbook/json/' + find_callsign.replace(/\//g, "-") + '/' + sat_type + '/' + json_band + '/' + json_mode + '/' + $('#stationProfile').val(), function(result)
{
// Make sure the typed callsign and json result match
@ -441,7 +441,7 @@ $("#callsign").focusout(function() {
if($("#sat_name" ).val() != "") {
//logbook/jsonlookupgrid/io77/SAT/0/0
$.getJSON('logbook/jsonlookupcallsign/' + find_callsign.replace(/\//g, "-") + '/SAT/0/0', function(result)
$.getJSON(base_url + 'index.php/logbook/jsonlookupcallsign/' + find_callsign.replace(/\//g, "-") + '/SAT/0/0', function(result)
{
// Reset CSS values before updating
$('#callsign').removeClass("workedGrid");
@ -460,7 +460,7 @@ $("#callsign").focusout(function() {
}
})
} else {
$.getJSON('logbook/jsonlookupcallsign/' + find_callsign.replace(/\//g, "-") + '/0/' + $("#band").val() +'/' + $("#mode").val(), function(result)
$.getJSON(base_url + 'index.php/logbook/jsonlookupcallsign/' + find_callsign.replace(/\//g, "-") + '/0/' + $("#band").val() +'/' + $("#mode").val(), function(result)
{
// Reset CSS values before updating
$('#callsign').removeClass("workedGrid");
@ -507,7 +507,7 @@ $("#callsign").focusout(function() {
var $dok_select = $('#darc_dok').selectize();
var dok_selectize = $dok_select[0].selectize;
if (result.dxcc.adif == '230') {
$.get('lookup/dok/' + $('#callsign').val().toUpperCase(), function(result) {
$.get(base_url + 'index.php/lookup/dok/' + $('#callsign').val().toUpperCase(), function(result) {
if (result) {
dok_selectize.addOption({name: result});
dok_selectize.setValue(result, false);
@ -634,7 +634,7 @@ $("#callsign").focusout(function() {
// Only set the frequency when not set by userdata/PHP.
if ($('#frequency').val() == "")
{
$.get('qso/band_to_freq/' + $('#band').val() + '/' + $('.mode').val(), function(result) {
$.get(base_url + 'index.php/qso/band_to_freq/' + $('#band').val() + '/' + $('.mode').val(), function(result) {
$('#frequency').val(result);
$('#frequency_rx').val("");
});
@ -663,7 +663,7 @@ $('#start_date').change(function() {
/* on mode change */
$('.mode').change(function() {
$.get('qso/band_to_freq/' + $('#band').val() + '/' + $('.mode').val(), function(result) {
$.get(base_url + 'index.php/qso/band_to_freq/' + $('#band').val() + '/' + $('.mode').val(), function(result) {
$('#frequency').val(result);
$('#frequency_rx').val("");
});
@ -672,7 +672,7 @@ $('.mode').change(function() {
/* Calculate Frequency */
/* on band change */
$('#band').change(function() {
$.get('qso/band_to_freq/' + $(this).val() + '/' + $('.mode').val(), function(result) {
$.get(base_url + 'index.php/qso/band_to_freq/' + $(this).val() + '/' + $('.mode').val(), function(result) {
$('#frequency').val(result);
$('#frequency_rx').val("");
});
@ -692,7 +692,7 @@ $("#locator").keyup(function(){
//logbook/jsonlookupgrid/io77/SAT/0/0
$.getJSON('logbook/jsonlookupgrid/' + qra_lookup.toUpperCase() + '/SAT/0/0', function(result)
$.getJSON(base_url + 'index.php/logbook/jsonlookupgrid/' + qra_lookup.toUpperCase() + '/SAT/0/0', function(result)
{
// Reset CSS values before updating
$('#locator').removeClass("workedGrid");
@ -711,7 +711,7 @@ $("#locator").keyup(function(){
}
})
} else {
$.getJSON('logbook/jsonlookupgrid/' + qra_lookup.toUpperCase() + '/0/' + $("#band").val() +'/' + $("#mode").val(), function(result)
$.getJSON(base_url + 'index.php/logbook/jsonlookupgrid/' + qra_lookup.toUpperCase() + '/0/' + $("#band").val() +'/' + $("#mode").val(), function(result)
{
// Reset CSS values before updating
$('#locator').removeClass("workedGrid");
@ -733,7 +733,7 @@ $("#locator").keyup(function(){
}
if(qra_input.length >= 4 && $(this).val().length > 0) {
$.getJSON('logbook/qralatlngjson/' + $(this).val(), function(result)
$.getJSON(base_url + 'index.php/logbook/qralatlngjson/' + $(this).val(), function(result)
{
// Set Map to Lat/Long
markers.clearLayers();
@ -751,8 +751,8 @@ $("#locator").keyup(function(){
markers.addLayer(marker).addTo(mymap);
})
$('#locator_info').load("logbook/searchbearing/" + $(this).val() + "/" + $('#stationProfile').val()).fadeIn("slow");
$.get('logbook/searchdistance/' + $(this).val() + "/" + $('#stationProfile').val(), function(result) {
$('#locator_info').load(base_url +"index.php/logbook/searchbearing/" + $(this).val() + "/" + $('#stationProfile').val()).fadeIn("slow");
$.get(base_url + 'index.php/logbook/searchdistance/' + $(this).val() + "/" + $('#stationProfile').val(), function(result) {
document.getElementById("distance").value = result;
});
}
@ -772,7 +772,7 @@ function convert_case(str) {
}
$('#dxcc_id').on('change', function() {
$.getJSON('logbook/jsonentity/' + $(this).val(), function (result) {
$.getJSON(base_url + 'index.php/logbook/jsonentity/' + $(this).val(), function (result) {
if (result.dxcc.name != undefined) {
$('#country').val(convert_case(result.dxcc.name));

Wyświetl plik

@ -29,16 +29,16 @@ function ExportWebADIF(station_id) {
if ($(".errormessages").length > 0) {
$(".errormessages").remove();
}
$(".ld-ext-right").addClass('running');
$(".ld-ext-right").prop('disabled', true);
$(".ld-ext-right-"+station_id).addClass('running');
$(".ld-ext-right-"+station_id).prop('disabled', true);
$.ajax({
url: base_url + 'index.php/webadif/upload_station',
type: 'post',
data: {'station_id': station_id},
success: function (data) {
$(".ld-ext-right").removeClass('running');
$(".ld-ext-right").prop('disabled', false);
$(".ld-ext-right-"+station_id).removeClass('running');
$(".ld-ext-right-"+station_id).prop('disabled', false);
if (data.status == 'OK') {
$.each(data.info, function(index, value){
$('#notcount'+value.station_id).html(value.notcount);

Wyświetl plik

@ -281,7 +281,7 @@
},
"IO-117":{
"Modes":{
"U":[
"U/U":[
{
"Uplink_Mode":"PKT",
"Uplink_Freq":"435310000",
@ -303,6 +303,18 @@
]
}
},
"LEDSAT":{
"Modes":{
"U/U":[
{
"Uplink_Mode":"PKT",
"Uplink_Freq":"435310000",
"Downlink_Mode":"PKT",
"Downlink_Freq":"435190000"
}
]
}
},
"Lilacsat-1":{
"Modes":{
"V/U":[

Wyświetl plik

@ -13,18 +13,11 @@ RUN docker-php-ext-install mysqli mbstring xml
RUN rm -rf /var/www/html/docker/
COPY ./ /var/www/html/
WORKDIR /var/www/html
# Setting permissions as: https://github.com/magicbug/Cloudlog/wiki/Installation
RUN cd /var/www/html \
&& echo "Setting root as owner of the folder..." \
&& chown -R root:root /var/www/html \
&& echo "Setting permissions to the install folder" \
&& chown -R root:www-data ./application/config/ \
&& chown -R root:www-data ./application/logs/ \
&& chown -R root:www-data ./assets/qslcard/ \
&& chown -R root:www-data ./backup/ \
&& chown -R root:www-data ./updates/ \
&& chown -R root:www-data ./uploads/ \
&& chown -R root:www-data ./images/eqsl_card_images/ \
&& chown -R root:www-data ./assets/json/ \
&& echo "Setting root as owner of the html folder" \
&& chown -R root:www-data /var/www/html
RUN echo "Setting permissions to the install folder" \
&& chmod -R g+rw ./application/config/ \
&& chmod -R g+rw ./application/logs/ \
&& chmod -R g+rw ./assets/qslcard/ \
@ -33,6 +26,4 @@ RUN cd /var/www/html \
&& chmod -R g+rw ./uploads/ \
&& chmod -R g+rw ./images/eqsl_card_images/ \
&& chmod -R g+rw ./assets/json/ \
&& chmod 777 /var/www/html/install \
&& echo "Make sure everything is fine" \
&& dir -ls
&& chmod -R 777 /var/www/html/install

Wyświetl plik

@ -123,5 +123,4 @@ class Core {
}
}
?>
?>

Wyświetl plik

@ -43,5 +43,4 @@ class Database {
return true;
}
}
?>
?>

Wyświetl plik

@ -7,13 +7,21 @@ $db_file_path = $db_config_path."database.php";
function delDir($dir) {
$files = glob( $dir . '*', GLOB_MARK );
foreach( $files as $file ){
if( substr( $file, -1 ) == '/' )
delDir( $file );
else
unlink( $file );
foreach ( $files as $file ) {
if ( substr( $file, -1 ) == '/' ) {
if (file_exists($file)) {
delDir( $file );
}
} else {
if (file_exists($file)) {
unlink( $file );
}
}
}
rmdir( $dir );
// This step may be not needed
if (file_exists($dir)) {
rmdir( $dir );
}
}
if (file_exists($db_file_path)) {

Wyświetl plik

@ -117,7 +117,6 @@ class QSO
'COL_STATE',
'COL_COUNTRY',
'COL_IOTA',
'name'
];
@ -196,16 +195,16 @@ class QSO
$this->cqzone = ($data['COL_CQZ'] === null) ? '' : '<a href="javascript:spawnLookupModal('.$data['COL_CQZ'].',\'cq\');">'.$data['COL_CQZ'].'</a>';
$this->state = ($data['COL_STATE'] === null) ? '' :$data['COL_STATE'];
$this->dxcc = ($data['name'] === null) ? '- NONE -' : '<a href="javascript:spawnLookupModal('.$data['COL_DXCC'].',\'dxcc\');">'.ucwords(strtolower($data['name']), "- (/").'</a>';
$this->dxcc = (($data['name'] ?? null) === null) ? '- NONE -' : '<a href="javascript:spawnLookupModal('.$data['COL_DXCC'].',\'dxcc\');">'.ucwords(strtolower($data['name']), "- (/").'</a>';
$this->iota = ($data['COL_IOTA'] === null) ? '' : $this->getIotaLink($data['COL_IOTA']);
if (array_key_exists('end', $data)) {
$this->end = ($data['end'] === null) ? null : DateTime::createFromFormat("Y-m-d", $data['end'], new DateTimeZone('UTC'));
} else {
$this->end = null;
}
$this->callsign = ($data['callsign'] === null) ? '' :$data['callsign'];
$this->lastupload = ($data['lastupload'] === null) ? '' : date($custom_date_format . " H:i", strtotime($data['lastupload']));
$this->lotw_hint = $this->getLotwHint($data['lastupload']);
$this->callsign = ($data['callsign'] ?? null === null) ? '' :$data['callsign'];
$this->lastupload = ($data['lastupload'] ?? null === null) ? '' : date($custom_date_format . " H:i", strtotime($data['lastupload'] ?? null));
$this->lotw_hint = $this->getLotwHint($data['lastupload'] ?? null);
}
/**
@ -323,7 +322,7 @@ class QSO
}
}
$qslstring .= '">&#9660;</span>';
if ($data['qslcount'] != null) {
if ($data['qslcount'] ?? null != null) {
$qslstring .= ' <a href="javascript:displayQsl('.$data['COL_PRIMARY_KEY'].');"><i class="fa fa-id-card"></i></a>';
}
return $qslstring;