Merge remote-tracking branch 'upstream/dev' into activatedGridsToGridmap

这个提交包含在:
phl0 2023-09-16 00:38:23 +02:00
当前提交 ef0740050a
找不到此签名对应的密钥
GPG 密钥 ID: 48EA1E640798CA9A
共有 26 个文件被更改,包括 917 次插入316 次删除

查看文件

@ -46,6 +46,6 @@ Thanks to Andy (VE7CXZ), Gavin (M1BXF), Graham (W5ISP), Robert (M0VFC), Corby (K
Cloudlog is supported by Patreon and donations via PayPal, thanks to the following people:
Paul (M0TZO), Tim (G4VXE), Paul (N8HM), Michelle (W5NYV), Mitchell (AD0HJ), Dan (M0TCB), Martin (DK3ML), Juan Carlos (EA5WA), Iain (M0PCB), Charlie (GM1TGY), Ondrej (OK1CDJ), Trystan (G0KAY), Oliver (DL6KBG), Volkmar Schirmer, Jordan (M0PIR), Thomas Ziegler, Mathis (DB9MAT), Ken (VE3HLS), Tyler (WL7T), Jeremy Taylor, Ben Kuhn, Eric Thresher, Michael Cullen, Juuso (OH1JW), Anthony Castiglia, Fernando Ramirez-Ferrer, Robert Dixon, Mark Percival, Julia (KV1V), Timo Tomasini, Ant (NU1U), Christopher Williams, Danny Barnes, Vic, Tom (M0LTE), smurphboy, Lars (SM0TGU), Theo (PD9DP), Stefan (SM0RGM). Peter (G0ABI), Lou (KI5FTY), Michael (DG3NAB), Dragan (4O4A), minorsecond, Emily (W7AYQ), Steve (M0SKM), Rob (M0VFC), Doug (WA6L), Petr (OK1PKR), Fabian (HB9HI).
Paul (M0TZO), Tim (G4VXE), Paul (N8HM), Michelle (W5NYV), Mitchell (AD0HJ), Dan (M0TCB), Martin (DK3ML), Juan Carlos (EA5WA), Iain (M0PCB), Charlie (GM1TGY), Ondrej (OK1CDJ), Trystan (G0KAY), Oliver (DL6KBG), Volkmar Schirmer, Jordan (M0PIR), Thomas Ziegler, Mathis (DB9MAT), Ken (VE3HLS), Tyler (WL7T), Jeremy Taylor, Ben Kuhn, Eric Thresher, Michael Cullen, Juuso (OH1JW), Anthony Castiglia, Fernando Ramirez-Ferrer, Robert Dixon, Mark Percival, Julia (KV1V), Timo Tomasini, Ant (NU1U), Christopher Williams, Danny Barnes, Vic, Tom (M0LTE), smurphboy, Lars (SM0TGU), Theo (PD9DP), Stefan (SM0RGM). Peter (G0ABI), Lou (KI5FTY), Michael (DG3NAB), Dragan (4O4A), minorsecond, Emily (W7AYQ), Steve (M0SKM), Rob (M0VFC), Doug (WA6L), Petr (OK1PKR), Fabian (HB9HIL).
If you'd like to donate to Cloudlog to help allow @magicbug spend less time doing commercial work and more time coding Cloudlog then you can donate via [PayPal](https://paypal.me/PGoodhall), [Github Sponsor](https://github.com/sponsors/magicbug) or become a [Patreon](https://www.patreon.com/2m0sql)

查看文件

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

查看文件

@ -0,0 +1,24 @@
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/*
Controller to interact with the Clublog API
*/
class Components extends CI_Controller {
function __construct() {
parent::__construct();
$this->load->model('user_model');
if(!$this->user_model->authorize(2)) { $this->session->set_flashdata('notice', 'You\'re not allowed to do that!'); redirect('dashboard'); }
}
public function index() {
$url = 'https://oscarwatch.org/scripts/hamsat_json.php';
$json = file_get_contents($url);
$data['rovedata'] = json_decode($json, true);
// load view
$this->load->view('components/hamsat/table', $data);
}
}

查看文件

@ -0,0 +1,23 @@
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/*
Controller to interact with the Clublog API
*/
class Hamsat extends CI_Controller {
function __construct() {
parent::__construct();
$this->load->model('user_model');
if(!$this->user_model->authorize(2)) { $this->session->set_flashdata('notice', 'You\'re not allowed to do that!'); redirect('dashboard'); }
}
public function index() {
// Load public view
$data['page_title'] = "Hamsat - Satellite Roving";
$this->load->view('interface_assets/header', $data);
$this->load->view('/hamsat/index');
$this->load->view('interface_assets/footer');
}
}

查看文件

@ -153,6 +153,7 @@ class Logbook extends CI_Controller {
$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);
$return['confirmed'] = $this->confirmed_grid_before($return['callsign_qra'], $type, $band, $mode);
if ($this->session->userdata('user_show_profile_image')) {
if (isset($callbook)) {
@ -181,7 +182,70 @@ class Logbook extends CI_Controller {
return (($val2 ?? "") === "" ? ($val1 ?? "") : ($val2 ?? ""));
}
function worked_grid_before($gridsquare, $type, $band, $mode)
function confirmed_grid_before($gridsquare, $type, $band, $mode) {
if (strlen($gridsquare) < 4)
return false;
$CI =& get_instance();
$CI->load->model('logbooks_model');
$logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
$user_gridmap_confirmation = $this->session->userdata('user_gridmap_confirmation');
if(!empty($logbooks_locations_array)) {
$extrawhere='';
if (isset($user_gridmap_confirmation) && strpos($user_gridmap_confirmation, 'Q') !== false) {
$extrawhere="COL_QSL_RCVD='Y'";
}
if (isset($user_gridmap_confirmation) && strpos($user_gridmap_confirmation, 'L') !== false) {
if ($extrawhere!='') {
$extrawhere.=" OR";
}
$extrawhere.=" COL_LOTW_QSL_RCVD='Y'";
}
if (isset($user_gridmap_confirmation) && strpos($user_gridmap_confirmation, 'E') !== false) {
if ($extrawhere!='') {
$extrawherei.=" OR";
}
$extrawhere.=" COL_EQSL_QSL_RCVD='Y'";
}
if($type == "SAT") {
$this->db->where('COL_PROP_MODE', 'SAT');
if ($extrawhere != '') {
$this->db->where('('.$extrawhere.')');
} else {
$this->db->where("1=0");
}
} else {
$CI->load->model('logbook_model');
$this->db->where('COL_MODE', $CI->logbook_model->get_main_mode_from_mode($mode));
$this->db->where('COL_BAND', $band);
$this->db->where('COL_PROP_MODE !=','SAT');
if ($extrawhere != '') {
$this->db->where('('.$extrawhere.')');
} else {
$this->db->where("1=0");
}
}
$this->db->where_in('station_id', $logbooks_locations_array);
$this->db->like('SUBSTRING(COL_GRIDSQUARE, 1, 4)', substr($gridsquare, 0, 4));
$this->db->order_by($this->config->item('table_name').".COL_TIME_ON", "desc");
$this->db->limit(1);
$query = $this->db->get($this->config->item('table_name'));
foreach ($query->result() as $workedBeforeRow) {
return true;
}
}
return false;
}
function worked_grid_before($gridsquare, $type, $band, $mode)
{
if (strlen($gridsquare) < 4)
return false;
@ -226,8 +290,9 @@ class Logbook extends CI_Controller {
function jsonlookupgrid($gridsquare, $type, $band, $mode) {
$return = [
"workedBefore" => false,
"confirmed" => false,
];
$user_gridmap_confirmation = $this->session->userdata('user_gridmap_confirmation');
$CI =& get_instance();
$CI->load->model('logbooks_model');
$logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
@ -251,6 +316,51 @@ class Logbook extends CI_Controller {
$return['workedBefore'] = true;
}
$extrawhere='';
if (isset($user_gridmap_confirmation) && strpos($user_gridmap_confirmation, 'Q') !== false) {
$extrawhere="COL_QSL_RCVD='Y'";
}
if (isset($user_gridmap_confirmation) && strpos($user_gridmap_confirmation, 'L') !== false) {
if ($extrawhere!='') {
$extrawhere.=" OR";
}
$extrawhere.=" COL_LOTW_QSL_RCVD='Y'";
}
if (isset($user_gridmap_confirmation) && strpos($user_gridmap_confirmation, 'E') !== false) {
if ($extrawhere!='') {
$extrawherei.=" OR";
}
$extrawhere.=" COL_EQSL_QSL_RCVD='Y'";
}
if($type == "SAT") {
$this->db->where('COL_PROP_MODE', 'SAT');
if ($extrawhere != '') {
$this->db->where('('.$extrawhere.')');
} else {
$this->db->where("1=0");
}
} else {
$CI->load->model('logbook_model');
$this->db->where('COL_MODE', $CI->logbook_model->get_main_mode_from_mode($mode));
$this->db->where('COL_BAND', $band);
$this->db->where('COL_PROP_MODE !=','SAT');
if ($extrawhere != '') {
$this->db->where('('.$extrawhere.')');
} else {
$this->db->where("1=0");
}
}
$this->db->where_in('station_id', $logbooks_locations_array);
$this->db->like('SUBSTRING(COL_GRIDSQUARE, 1, 4)', substr($gridsquare, 0, 4));
$query = $this->db->get($this->config->item('table_name'), 1, 0);
foreach ($query->result() as $workedBeforeRow) {
$return['confirmed']=true;
}
header('Content-Type: application/json');
echo json_encode($return, JSON_PRETTY_PRINT);
@ -261,12 +371,14 @@ class Logbook extends CI_Controller {
$return = [
"workedBefore" => false,
"confirmed" => false,
];
$user_gridmap_confirmation = $this->session->userdata('user_gridmap_confirmation');
$CI =& get_instance();
$CI->load->model('logbooks_model');
$logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
$CI->load->model('logbook_model');
$CI->load->model('logbooks_model');
$logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
$CI->load->model('logbook_model');
if(!empty($logbooks_locations_array)) {
if($type == "SAT") {
@ -287,12 +399,59 @@ class Logbook extends CI_Controller {
$return['workedBefore'] = true;
}
$extrawhere='';
if (isset($user_gridmap_confirmation) && strpos($user_gridmap_confirmation, 'Q') !== false) {
$extrawhere="COL_QSL_RCVD='Y'";
}
if (isset($user_gridmap_confirmation) && strpos($user_gridmap_confirmation, 'L') !== false) {
if ($extrawhere!='') {
$extrawhere.=" OR";
}
$extrawhere.=" COL_LOTW_QSL_RCVD='Y'";
}
if (isset($user_gridmap_confirmation) && strpos($user_gridmap_confirmation, 'E') !== false) {
if ($extrawhere!='') {
$extrawherei.=" OR";
}
$extrawhere.=" COL_EQSL_QSL_RCVD='Y'";
}
if($type == "SAT") {
$this->db->where('COL_PROP_MODE', 'SAT');
if ($extrawhere != '') {
$this->db->where('('.$extrawhere.')');
} else {
$this->db->where("1=0");
}
} else {
$CI->load->model('logbook_model');
$this->db->where('COL_MODE', $CI->logbook_model->get_main_mode_from_mode($mode));
$this->db->where('COL_BAND', $band);
$this->db->where('COL_PROP_MODE !=','SAT');
if ($extrawhere != '') {
$this->db->where('('.$extrawhere.')');
} else {
$this->db->where("1=0");
}
}
$this->db->where_in('station_id', $logbooks_locations_array);
$this->db->where('COL_COUNTRY', urldecode($country));
$query = $this->db->get($this->config->item('table_name'), 1, 0);
foreach ($query->result() as $workedBeforeRow) {
$return['confirmed']=true;
}
header('Content-Type: application/json');
echo json_encode($return, JSON_PRETTY_PRINT);
return;
} else {
$return['workedBefore'] = false;
$return['confirmed'] = false;
header('Content-Type: application/json');
echo json_encode($return, JSON_PRETTY_PRINT);
@ -307,8 +466,10 @@ class Logbook extends CI_Controller {
$return = [
"workedBefore" => false,
"confirmed" => false,
];
$user_gridmap_confirmation = $this->session->userdata('user_gridmap_confirmation');
$CI =& get_instance();
$CI->load->model('logbooks_model');
$logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
@ -333,11 +494,56 @@ class Logbook extends CI_Controller {
$return['workedBefore'] = true;
}
$extrawhere='';
if (isset($user_gridmap_confirmation) && strpos($user_gridmap_confirmation, 'Q') !== false) {
$extrawhere="COL_QSL_RCVD='Y'";
}
if (isset($user_gridmap_confirmation) && strpos($user_gridmap_confirmation, 'L') !== false) {
if ($extrawhere!='') {
$extrawhere.=" OR";
}
$extrawhere.=" COL_LOTW_QSL_RCVD='Y'";
}
if (isset($user_gridmap_confirmation) && strpos($user_gridmap_confirmation, 'E') !== false) {
if ($extrawhere!='') {
$extrawherei.=" OR";
}
$extrawhere.=" COL_EQSL_QSL_RCVD='Y'";
}
if($type == "SAT") {
$this->db->where('COL_PROP_MODE', 'SAT');
if ($extrawhere != '') {
$this->db->where('('.$extrawhere.')');
} else {
$this->db->where("1=0");
}
} else {
$CI->load->model('logbook_model');
$this->db->where('COL_MODE', $CI->logbook_model->get_main_mode_from_mode($mode));
$this->db->where('COL_BAND', $band);
$this->db->where('COL_PROP_MODE !=','SAT');
if ($extrawhere != '') {
$this->db->where('('.$extrawhere.')');
} else {
$this->db->where("1=0");
}
}
$this->db->where_in('station_id', $logbooks_locations_array);
$this->db->where('COL_CALL', strtoupper($callsign));
$query = $this->db->get($this->config->item('table_name'), 1, 0);
foreach ($query->result() as $workedBeforeRow) {
$return['confirmed'] = true;
}
header('Content-Type: application/json');
echo json_encode($return, JSON_PRETTY_PRINT);
return;
} else {
$return['workedBefore'] = false;
$return['confirmed'] = false;
header('Content-Type: application/json');
echo json_encode($return, JSON_PRETTY_PRINT);
return;

查看文件

@ -95,3 +95,4 @@ $lang['account_user_mastodon'] = 'URL of Mastodonserver';
$lang['account_gridmap_settings'] = 'Settings for Gridsquare Map';
$lang['account_gridmap_default_band'] = 'Default Band';
$lang['account_qsl_settings'] = 'Default QSL-Method shown in views (Gridsquare and Add-QSO)';

查看文件

@ -14,8 +14,8 @@ $lang['menu_post_qso'] = 'Post QSO';
$lang['menu_live_contest_logging'] = 'Live Contest Logging';
$lang['menu_post_contest_logging'] = 'Post Contest Logging';
$lang['menu_bandmap'] = 'Bandmap';
$lang['menu_view_qsl'] = 'View QSL';
$lang['menu_view_eqsl'] = 'View eQSL';
$lang['menu_view_qsl'] = 'View QSL Cards';
$lang['menu_view_eqsl'] = 'View eQSL Cards';
$lang['menu_notes'] = 'Notes';

查看文件

@ -8,3 +8,84 @@ $lang['account_colonne2_text'] = 'Choisir colonne 2';
$lang['account_colonne3_text'] = 'Choisir colonne 3';
$lang['account_colonne4_text'] = 'Choisir colonne 4';
$lang['account_colonne5_text'] = 'Choisir colonne 5 (uniquement pour logbook)';
$lang['account_create_user_account'] = 'Creer un compte';
$lang['account_edit_account'] = 'Editer un compte';
$lang['account_account_information'] = 'Informations du compte';
$lang['account_username'] = 'Utilisateur';
$lang['account_email_address'] = 'Email';
$lang['account_password'] = 'Mot de passe';
$lang['account_roles'] = 'Rôles';
$lang['account_user_role'] = 'Rôle de l\'utilisateur';
$lang['account_theme'] = 'Thème';
$lang['account_stylesheet'] = 'Nom du thème';
$lang['account_personal_information'] = 'Informations personnelles';
$lang['account_first_name'] = 'Nom';
$lang['account_last_name'] = 'Prénom';
$lang['account_callsign'] = 'Indicatif';
$lang['account_gridsquare'] = 'Locator';
$lang['account_cloudlog_preferences'] = 'Préférences Cloudlog';
$lang['account_timezone'] = 'Timezone';
$lang['account_date_format'] = 'Format de la date';
$lang['account_measurement_preferences'] = 'Unité de mesure';
$lang['account_select_how_you_would_like_dates_shown_when_logged_into_your_account'] = '(Sélectionnez le format de date à afficher)';
$lang['account_choose_which_unit_distances_will_be_shown_in'] = '(Choisiez l\'unité de mesure à afficher)';
$lang['account_main_menu'] = 'Menu principal';
$lang['account_show_notes_in_the_main_menu'] = 'Voir les notes dans le main principal.';
$lang['account_gridsquare_and_location_autocomplete'] = 'Renseignement automatique du lieu et du Locator';
$lang['account_location_auto_lookup'] = 'Recherche automatique de lieu.';
$lang['account_if_set_gridsquare_is_fetched_based_on_location_name'] = '(Si activé, le Locator est récupéré en fonction du nom du lieu.)';
$lang['account_sota_auto_lookup_gridsquare_and_name_for_summit'] = 'SOTA : Renseigner automatiquement le Locator et le nom du sommet.';
$lang['account_wwff_auto_lookup_gridsquare_and_name_for_reference'] = 'WWFF : Renseigner automatiquement le Locator et le nom de la référence.';
$lang['account_pota_auto_lookup_gridsquare_and_name_for_park'] = 'POTA : Renseigner automatiquement le Locateur et le nom du parc.';
$lang['account_if_set_name_and_gridsquare_is_fetched_from_the_api_and_filled_in_location_and_locator'] = '(Si activé, le nom et le Locator seront récupérés depuis l\'API et renseignés.)';
$lang['account_previous_qsl_type'] = 'Type de QSL pour le statut';
$lang['account_select_the_type_of_qsl_to_show_in_the_previous_qsos_section'] = 'Selectionner le type de QSL à afficher (statut) dans la session précédents QSOs.';
$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'] = 'Affiche l\'image de profil du contact (depuis qrz.com/hamqth.com) dans la session QSO.';
$lang['account_please_set_your_qrzcom_hamqthcom_credentials_in_the_general_config_file'] = 'Indiquer les éléments d\'authentification pour qrz.com/hamqth.com credentials dans le fichier de configuration (config.php).';
$lang['account_amsat_status_upload'] = 'Envoi du statut AMSAT';
$lang['account_upload_status_of_sat_qsos_to'] = 'Envoi des statuts des QSOs Satellites sur';
$lang['account_logbook_of_the_world'] = 'Logbook of the World';
$lang['account_logbook_of_the_world_lotw_username'] = 'Utilisateur';
$lang['account_logbook_of_the_world_lotw_password'] = 'Mot de passe';
$lang['account_leave_blank_to_keep_existing_password'] = '(Laisser vide pour conserver le mot de passe existant)';
$lang['account_clublog'] = 'Club Log';
$lang['account_clublog_email_callsign'] = 'Email/Callsign';
$lang['account_clublog_password'] = 'Mot de passe';
$lang['account_the_email_or_callsign_you_use_to_login_to_club_log'] = '(Renseigner l\'email ou l\'indicatif pour se connecter à Club Log)';
$lang['account_eqsl'] = 'eQSL';
$lang['account_eqslcc_username'] = 'Utilisateur';
$lang['account_eqslcc_password'] = 'Mot de passe';
$lang['account_save_account_changes'] = 'Sauvegarder les changements';
$lang['account_create_account'] = 'Creation du compte';
$lang['account_delete_user_account'] = 'Supprimer l\'utilisateur';
$lang['account_are_you_sure_you_want_to_delete_the_user_account'] = 'Etes-vous certain de supprimer le compte de l\'utilisateur ?';
$lang['account_yes_delete_this_user'] = 'Oui, supprimer l\'utilisateur';
$lang['account_no_do_not_delete_this_user'] = 'Non, ne pas supprimer l\'utilisateur';
$lang['account_forgot_password'] = 'Mot de passe oublié ?';
$lang['account_you_can_reset_your_password_here'] = 'Vous pouvez réinitialiser votre mot de passe ici.';
$lang['account_reset_password'] = 'Mot de passe réinitialisé';
$lang['account_the_email_field_is_required'] = 'Le champs Email est obligatoire';
$lang['account_confirm_password'] = 'Mot de passe confirmé';
$lang['account_forgot_your_password'] = 'Mot de passe oublié ?';
$lang['account_login_to_cloudlog'] = 'Connexion à Cloudlog';
$lang['account_login'] = 'Login';

查看文件

@ -0,0 +1,18 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
$lang['admin_user_line1'] = 'Cloudlog a besoin d\'au moins un utilisateur configuré pour fonctionner.';
$lang['admin_user_line2'] = 'Les utilisateurs peuvent se voir attribuer des rôles qui leur donnent différentes autorisations, telles que l\'ajout de QSO au journal de bord et l\'accès aux API Cloudlog.';
$lang['admin_user_line3'] = 'L\'utilisateur actuellement connecté est affiché en haut à droite de chaque page.';
$lang['admin_user_list'] = 'Utilisateurs List';
$lang['admin_user'] = 'Utilisateur';
$lang['admin_email'] = 'E-mail';
$lang['admin_type'] = 'Type';
$lang['admin_options'] = 'Options';
$lang['admin_create_user'] = 'Creation d\'un utilisateur';
$lang['admin_delete'] = 'Supprimer';
$lang['admin_edit'] = 'Editer';

查看文件

@ -3,16 +3,16 @@
defined('BASEPATH') OR exit('No direct script access allowed');
$lang['contesting_page_title'] = 'Logging Contest';
$lang['contesting_button_reset_contest_session'] = 'Rinitialiser la Session Contest';
$lang['contesting_button_reset_contest_session'] = 'Réinitialiser la session Contest';
$lang['contesting_exchange_type'] = 'Type d\'échange';
$lang['contesting_exchange_type_serial'] = 'Serie';
$lang['contesting_exchange_type_serial'] = 'Série';
$lang['contesting_exchange_type_other'] = 'Autre';
$lang['contesting_contest_name'] = 'Nom du Contest';
$lang['contesting_btn_reset_qso'] = 'Reinitialise QSO';
$lang['contesting_btn_reset_qso'] = 'Réinitialise QSO';
$lang['contesting_btn_save_qso'] = 'Sauvegarder QSO';
$lang['contesting_title_callsign_suggestions'] = 'Sugestion d\'indicatif';
$lang['contesting_title_contest_logbook'] = 'Logbook du Contest';
$lang['contesting_title_callsign_suggestions'] = 'Suggestion d\'indicatif';
$lang['contesting_title_contest_logbook'] = 'Logbook du Contest';

查看文件

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

查看文件

@ -0,0 +1,26 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
$lang['gridsquares_gridsquare_map'] = 'Carte des Locators';
$lang['gridsquares_confirmed_is_green'] = 'Confirmé en Vert';
$lang['gridsquares_worked_but_not_confirmed_is_red'] = 'Contacté, mais non confirmé en Rouge';
$lang['gridsquares_activated_but_not_confirmed_is_red'] = 'Activé, mais non confirmé en Rouge';
$lang['gridsquares_this_map_does_not_include_satellite_internet_or_repeater_qsos'] = 'Cette carte n\'inclue pas les QSOs par Satellites, internet or relais';
$lang['gridsquares_grid_squares'] = 'Grilles des Locators';
$lang['gridsquares_total_count'] = 'Total';
$lang['gridsquares_band'] = 'Bande';
$lang['gridsquares_mode'] = 'Mode';
$lang['gridsquares_sat'] = 'Satellite';
$lang['gridsquares_confirmation'] = 'Confirmé';
$lang['gridsquares_button_plot'] = 'Plot';
$lang['gridsquares_gridsquares'] = 'Locators';
$lang['gridsquares_gridsquares_confirmed'] = 'Locators confirmés';
$lang['gridsquares_gridsquares_not_confirmed'] = 'Locators non confirmés';
$lang['gridsquares_gridsquares_total_worked'] = 'Total des Locators contactés';

查看文件

@ -2,7 +2,8 @@
defined('BASEPATH') OR exit('No direct script access allowed');
$lang['lotw_title'] = 'Logbook du monde';
$lang['lotw_short'] = 'LoTW';
$lang['lotw_title'] = 'Logbook of the World';
$lang['lotw_title_available_cert'] = 'Certificats disponibles';
$lang['lotw_title_information'] = 'Information';
$lang['lotw_title_upload_p12_cert'] = 'Envoyer certificat .p12 du Logbook du monde';
@ -15,10 +16,13 @@ $lang['lotw_no_certs_uploaded'] = 'Vous devez envoyer des certificats p1 pour ut
$lang['lotw_date_created'] = 'Date Création';
$lang['lotw_date_expires'] = 'Date Expiration';
$lang['lotw_qso_start_date'] = 'Date de début des QSOs';
$lang['lotw_qso_end_date'] = 'Date de fin des QSOs';
$lang['lotw_status'] = 'Status';
$lang['lotw_options'] = 'Options';
$lang['lotw_valid'] = 'Valide';
$lang['lotw_expired'] = 'Expiré';
$lang['lotw_expiring'] = 'Expiration';
$lang['lotw_not_synced'] = 'Non Synchronisé';
$lang['lotw_certificate_dxcc'] = 'Certificat DXCC';
@ -46,4 +50,13 @@ $lang['lotw_p12_export_step_one'] = 'Ouvrir TQSL et aller à l\'onglet Certifi
$lang['lotw_p12_export_step_two'] = 'Click droit sur l\indicatif désiré';
$lang['lotw_p12_export_step_three'] = 'Cliquer "Enregistrer le fichier des certificats d\'indicatif sans ajouter de mot de passe';
$lang['lotw_p12_export_step_four'] = 'Envoyer le fichier ci-dessous.';
$lang['lotw_confirmed'] = 'Ce QSO est confirmé sur LoTW';
// LoTW Expiry
$lang['lotw_cert_expiring'] = 'Au moins un de vos certificats LoTW est sur le point d\'expirer !';
$lang['lotw_cert_expired'] = 'Au moins un de vos certificats LoTW est expiré !';
// Lotw User
$lang['lotw_user'] = 'Cette station utilise LoTW.';
$lang['lotw_last_upload'] = 'Dernier upload';

查看文件

@ -95,3 +95,4 @@ $lang['account_user_mastodon'] = 'URL des Mastodonservers';
$lang['account_gridmap_settings'] = 'Einstellung der Planquadratkarte';
$lang['account_gridmap_default_band'] = 'Standardband';
$lang['account_qsl_settings'] = 'QSL-Methoden, die in der Planquadratkarte und beim anlegen eines QSOs angezeigt werden';

查看文件

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

查看文件

@ -63,6 +63,7 @@ class Dxcluster_model extends CI_Model {
if ( ($de != '') && ($de != 'Any') && (property_exists($singlespot->dxcc_spotter,'cont')) ){ // If we have a "de continent" and a filter-wish filter on that
if (strtolower($de) == strtolower($singlespot->dxcc_spotter->cont ?? '')) {
$singlespot->worked_call = ($this->logbook_model->check_if_callsign_worked_in_logbook($singlespot->spotted, $logbooks_locations_array, $singlespot->band) >= 1);
$singlespot->cnfmd_call = ($this->logbook_model->check_if_callsign_cnfmd_in_logbook($singlespot->spotted, $logbooks_locations_array, $singlespot->band) >= 1);
array_push($spotsout,$singlespot);
}
} else { // No de continent? No Filter --> Just push

查看文件

@ -1680,7 +1680,58 @@ class Logbook_model extends CI_Model {
}
function check_if_callsign_worked_in_logbook($callsign, $StationLocationsArray = null, $band = null) {
function check_if_callsign_cnfmd_in_logbook($callsign, $StationLocationsArray = null, $band = null) {
$user_gridmap_confirmation = $this->session->userdata('user_gridmap_confirmation');
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;
}
$extrawhere='';
if (isset($user_gridmap_confirmation) && strpos($user_gridmap_confirmation, 'Q') !== false) {
$extrawhere="COL_QSL_RCVD='Y'";
}
if (isset($user_gridmap_confirmation) && strpos($user_gridmap_confirmation, 'L') !== false) {
if ($extrawhere!='') {
$extrawhere.=" OR";
}
$extrawhere.=" COL_LOTW_QSL_RCVD='Y'";
}
if (isset($user_gridmap_confirmation) && strpos($user_gridmap_confirmation, 'E') !== false) {
if ($extrawhere!='') {
$extrawherei.=" OR";
}
$extrawhere.=" COL_EQSL_QSL_RCVD='Y'";
}
$this->db->select('COL_CALL');
$this->db->where_in('station_id', $logbooks_locations_array);
$this->db->where('COL_CALL', $callsign);
if($band != null && $band != 'SAT') {
$this->db->where('COL_BAND', $band);
} else if($band == 'SAT') {
// Where col_sat_name is not empty
$this->db->where('COL_SAT_NAME !=', '');
}
if ($extrawhere != '') {
$this->db->where('('.$extrawhere.')');
} else {
$this->db->where("1=0");
}
$this->db->limit('2');
$query = $this->db->get($this->config->item('table_name'));
return $query->num_rows();
}
function check_if_callsign_worked_in_logbook($callsign, $StationLocationsArray = null, $band = null) {
if($StationLocationsArray == null) {
$CI =& get_instance();
@ -2832,10 +2883,6 @@ class Logbook_model extends CI_Model {
$record['station_callsign']=$station_profile_call;
}
if (($station_id != 0) && ($record['station_callsign'] != $station_profile_call)) { // Check if station_call from import matches profile ONLY when submitting via GUI.
return "Wrong station_callsign ".$record['station_callsign']." while importing QSO with ".$record['call']." for ".$station_profile_call." : SKIPPED";
}
$CI =& get_instance();
$CI->load->library('frequency');
$my_error = "";

查看文件

@ -0,0 +1,76 @@
<div class="table-responsive">
<h2>Hamsat - Satellite Rovers</h2>
<p>This data is from <a target="_blank" href="https://hams.at/">https://hams.at/</a></p>
<table class="table table-striped table-hover">
<thead>
<tr>
<th>Date / Time</th>
<th>Callsign</th>
<th>Satellite</th>
<th>Gridsquare</th>
<th></th>
</tr>
</thead>
<tbody>
<?php foreach ($rovedata as $rove) : ?>
<tr>
<td>
<?php
// Get Date format
if ($this->session->userdata('user_date_format')) {
// If Logged in and session exists
$custom_date_format = $this->session->userdata('user_date_format');
} else {
// Get Default date format from /config/cloudlog.php
$custom_date_format = $this->config->item('qso_date_format');
}
?>
<?php $timestamp = strtotime($rove['date']);
echo date($custom_date_format, $timestamp); ?>
- <?php echo $rove['start_time']; ?> - <?php echo $rove['end_time']; ?>
</td>
<td>
<?php
$CI = &get_instance();
$CI->load->model('logbooks_model');
$logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
$CI->load->model('logbook_model');
$call_worked = $CI->logbook_model->check_if_callsign_worked_in_logbook($rove['callsign'], $logbooks_locations_array, "SAT");
echo " <span data-toggle=\"tooltip\" title=\"".$rove['comment']."\">";
if ($call_worked != 0) {
echo "<span class=\"text-success\">".$rove['callsign']."</span>";
} else {
echo $rove['callsign'];
}
echo "</span></td>";
?>
</td>
<td><span data-toggle="tooltip" title="<?php echo $rove['frequency']; ?> - <?php echo $rove['mode']; ?>"><?= $rove['satellite'] ?></span></td>
<td>
<?php
// Load the logbook model and call check_if_grid_worked_in_logbook
$worked = $CI->logbook_model->check_if_grid_worked_in_logbook($rove['gridsquare'], null, "SAT");
if ($worked != 0) {
echo " <span data-toggle=\"tooltip\" title=\"Worked\" class=\"badge badge-success\">" . $rove['gridsquare'] . "</span>";
} else {
echo " <span data-toggle=\"tooltip\" title=\"Not Worked\" class=\"badge badge-danger\">" . $rove['gridsquare'] . "</span>";
}
?>
</td>
<td><a href="<?php echo $rove['track_link']; ?>" target="_blank">Track</a></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>

查看文件

@ -0,0 +1,3 @@
<div class="container">
<div id="hamsat_display" hx-get="<?php echo site_url('components'); ?>" hx-trigger="load, every 60s"></div>
</div>

查看文件

@ -32,6 +32,12 @@
<script src="https://unpkg.com/htmx.org@1.6.1"></script>
<script>
// Reinitialize tooltips after new content has been loaded
document.addEventListener('htmx:afterSwap', function(event) {
$('[data-toggle="tooltip"]').tooltip();
});
</script>
<?php if ($this->uri->segment(1) == "awards" && ($this->uri->segment(2) == "was") ) { ?>
<script>
function load_was_map() {
@ -712,6 +718,7 @@ function showActivatorsMap(call, count, grids) {
<?php if ($this->uri->segment(1) == "" || $this->uri->segment(1) == "dashboard" ) { ?>
<script type="text/javascript" src="<?php echo base_url();?>assets/js/leaflet/L.Maidenhead.js"></script>
<script id="leafembed" type="text/javascript" src="<?php echo base_url();?>assets/js/leaflet/leafembed.js" tileUrl="<?php echo $this->optionslib->get_option('option_map_tile_server');?>"></script>
<script type="text/javascript">
$(function () {
$('[data-toggle="tooltip"]').tooltip()

查看文件

@ -1,334 +1,351 @@
<!doctype html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<!-- Bootstrap CSS -->
<?php if($this->optionslib->get_theme()) { ?>
<link rel="stylesheet" href="<?php echo base_url(); ?>assets/css/<?php echo $this->optionslib->get_theme();?>/bootstrap.min.css">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<!-- Bootstrap CSS -->
<?php if ($this->optionslib->get_theme()) { ?>
<link rel="stylesheet" href="<?php echo base_url(); ?>assets/css/<?php echo $this->optionslib->get_theme(); ?>/bootstrap.min.css">
<link rel="stylesheet" href="<?php echo base_url(); ?>assets/css/general.css">
<link rel="stylesheet" href="<?php echo base_url(); ?>assets/css/selectize.bootstrap4.css"/>
<link rel="stylesheet" href="<?php echo base_url(); ?>assets/css/bootstrap-dialog.css"/>
<link rel="stylesheet" href="<?php echo base_url(); ?>assets/css/<?php echo $this->optionslib->get_theme();?>/overrides.css">
<link rel="stylesheet" href="<?php echo base_url(); ?>assets/css/selectize.bootstrap4.css" />
<link rel="stylesheet" href="<?php echo base_url(); ?>assets/css/bootstrap-dialog.css" />
<link rel="stylesheet" href="<?php echo base_url(); ?>assets/css/<?php echo $this->optionslib->get_theme(); ?>/overrides.css">
<?php } ?>
<link rel="stylesheet" href="<?php echo base_url(); ?>assets/fontawesome/css/all.css">
<link rel="stylesheet" href="<?php echo base_url(); ?>assets/fontawesome/css/all.css">
<link rel="stylesheet" href="<?php echo base_url(); ?>assets/css/jquery.fancybox.min.css" />
<!-- Maps -->
<link rel="stylesheet" type="text/css" href="<?php echo base_url(); ?>assets/js/leaflet/leaflet.css" />
<!-- Maps -->
<link rel="stylesheet" type="text/css" href="<?php echo base_url(); ?>assets/js/leaflet/leaflet.css" />
<link rel="stylesheet" type="text/css" href="<?php echo base_url(); ?>assets/js/leaflet/Control.FullScreen.css" />
<?php if ($this->uri->segment(1) == "search" && $this->uri->segment(2) == "filter") { ?>
<link rel="stylesheet" type="text/css" href="<?php echo base_url(); ?>assets/css/query-builder.default.min.css" />
<?php if ($this->uri->segment(1) == "search" && $this->uri->segment(2) == "filter") { ?>
<link rel="stylesheet" type="text/css" href="<?php echo base_url(); ?>assets/css/query-builder.default.min.css" />
<?php } ?>
<?php if ($this->uri->segment(1) == "notes" && ($this->uri->segment(2) == "add" || $this->uri->segment(2) == "edit") ) { ?>
<link rel="stylesheet" type="text/css" href="<?php echo base_url(); ?>assets/plugins/quill/quill.snow.css" />
<?php if ($this->uri->segment(1) == "notes" && ($this->uri->segment(2) == "add" || $this->uri->segment(2) == "edit")) { ?>
<link rel="stylesheet" type="text/css" href="<?php echo base_url(); ?>assets/plugins/quill/quill.snow.css" />
<?php } ?>
<link rel="stylesheet" type="text/css" href="<?php echo base_url(); ?>assets/css/loading.min.css" />
<link rel="stylesheet" type="text/css" href="<?php echo base_url(); ?>assets/css/ldbtn.min.css" />
<link rel="stylesheet" type="text/css" href="<?php echo base_url(); ?>assets/css/buttons.dataTables.min.css"/>
<link rel="stylesheet" type="text/css" href="<?php echo base_url(); ?>assets/css/buttons.dataTables.min.css" />
<link rel="stylesheet" type="text/css" href="<?php echo base_url(); ?>assets/css/datatables.min.css"/>
<link rel="stylesheet" type="text/css" href="<?php echo base_url(); ?>assets/css/datatables.min.css" />
<?php if ($this->uri->segment(1) == "adif" || (isset($hasDatePicker) && $hasDatePicker)) { ?>
<link rel="stylesheet" href="<?php echo base_url(); ?>assets/css/datepicker.css" />
<?php } ?>
<?php if ($this->uri->segment(1) == "adif" || (isset($hasDatePicker) && $hasDatePicker)) { ?>
<link rel="stylesheet" href="<?php echo base_url(); ?>assets/css/datepicker.css" />
<?php } ?>
<?php if (file_exists(APPPATH.'../assets/css/custom.css')) { echo '<link rel="stylesheet" href="'.base_url().'assets/css/custom.css">'; } ?>
<?php if (file_exists(APPPATH . '../assets/css/custom.css')) {
echo '<link rel="stylesheet" href="' . base_url() . 'assets/css/custom.css">';
} ?>
<link rel="icon" href="<?php echo base_url(); ?>favicon.ico">
<link rel="icon" href="<?php echo base_url(); ?>favicon.ico">
<title><?php if(isset($page_title)) { echo $page_title; } ?> - Cloudlog</title>
</head>
<body>
<title><?php if (isset($page_title)) {
echo $page_title;
} ?> - Cloudlog</title>
</head>
<nav class="navbar navbar-expand-lg navbar-light bg-light main-nav">
<div class="container">
<a class="navbar-brand" href="<?php echo site_url(); ?>">Cloudlog</a> <?php if(ENVIRONMENT == "development") { ?><span class="badge badge-danger"><?php echo lang('menu_badge_developer_mode'); ?></span><?php } ?>
<body>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation"><span class="navbar-toggler-icon"></span></button>
<nav class="navbar navbar-expand-lg navbar-light bg-light main-nav">
<div class="container">
<a class="navbar-brand" href="<?php echo site_url(); ?>">Cloudlog</a> <?php if (ENVIRONMENT == "development") { ?><span class="badge badge-danger"><?php echo lang('menu_badge_developer_mode'); ?></span><?php } ?>
<div class="collapse navbar-collapse" id="navbarNav">
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation"><span class="navbar-toggler-icon"></span></button>
<ul class="navbar-nav">
<li class="nav-item active">
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> <?php echo lang('menu_logbook'); ?></a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<a class="dropdown-item" href="<?php echo site_url('logbook');?>"><i class="fas fa-book"></i> <?php echo lang('menu_overview'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('logbookadvanced');?>"><i class="fas fa-book-open"></i> <?php echo lang('menu_advanced'); ?></a>
</div>
</li>
<div class="collapse navbar-collapse" id="navbarNav">
<?php if(($this->config->item('use_auth')) && ($this->session->userdata('user_type') >= 2)) { ?>
<!-- QSO Menu Dropdown -->
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><?php echo lang('menu_qso'); ?></a>
<ul class="navbar-nav">
<li class="nav-item active">
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> <?php echo lang('menu_logbook'); ?></a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<a class="dropdown-item" href="<?php echo site_url('qso?manual=0');?>" title="Log Live QSOs"><i class="fas fa-list"></i> <?php echo lang('menu_live_qso'); ?></a>
<a class="dropdown-item" href="<?php echo site_url('logbook'); ?>"><i class="fas fa-book"></i> <?php echo lang('menu_overview'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('qso?manual=1');?>" title="Log QSO made in the past"><i class="fas fa-list"></i> <?php echo lang('menu_post_qso'); ?></a>
<a class="dropdown-item" href="<?php echo site_url('logbookadvanced'); ?>"><i class="fas fa-book-open"></i> <?php echo lang('menu_advanced'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('contesting?manual=0');?>" title="Live contest QSOs"><i class="fas fa-list"></i> <?php echo lang('menu_live_contest_logging'); ?></a>
<a class="dropdown-item" href="<?php echo site_url('qsl'); ?>" title="QSL"><i class="fa fa-id-card"></i> <?php echo lang('menu_view_qsl'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('contesting?manual=1');?>" title="Post contest QSOs"><i class="fas fa-list"></i> <?php echo lang('menu_post_contest_logging'); ?></a>
<?php if ($this->optionslib->get_option('dxcache_url') != '') { ?>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('bandmap/list');?>" title="Bandmap"><i class="fa fa-id-card"></i> <?php echo lang('menu_bandmap'); ?></a>
<?php } ?>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('qsl');?>" title="QSL"><i class="fa fa-id-card"></i> <?php echo lang('menu_view_qsl'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('eqsl');?>" title="eQSL"><i class="fa fa-id-card"></i> <?php echo lang('menu_view_eqsl'); ?></a>
<a class="dropdown-item" href="<?php echo site_url('eqsl'); ?>" title="eQSL"><i class="fa fa-id-card"></i> <?php echo lang('menu_view_eqsl'); ?></a>
</div>
</li>
</li>
<!-- Notes -->
<?php if ($this->session->userdata('user_show_notes') == 1) { ?>
<a class="nav-link" href="<?php echo site_url('notes');?>"><?php echo lang('menu_notes'); ?></a>
<?php } ?>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><?php echo lang('menu_analytics'); ?></a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<a class="dropdown-item" href="<?php echo site_url('statistics');?>" title="Statistics"><i class="fas fa-chart-area"></i> <?php echo lang('menu_statistics'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('gridmap');?>" title="Gridmap"><i class="fas fa-globe-europe"></i> <?php echo lang('menu_gridmap'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('activated_gridmap');?>" title="Activated Gridsquares"><i class="fas fa-globe-europe"></i> <?php echo lang('menu_activated_gridsquares'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('activators');?>" title="Gridsquare Activators"><i class="fas fa-globe-europe"></i> <?php echo lang('menu_gridsquare_activators'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('distances');?>" title="Distances"><i class="fas fa-chart-area"></i> <?php echo lang('menu_distances_worked'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('dayswithqso');?>" title="Days with QSOs"><i class="fas fa-chart-area"></i> <?php echo lang('menu_days_with_qsos'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('timeline');?>" title="Timeline"><i class="fas fa-chart-area"></i> <?php echo lang('menu_timeline'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('accumulated');?>" title="Accumulated Statistics"><i class="fas fa-chart-area"></i> <?php echo lang('menu_accumulated_statistics'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('timeplotter');?>" title="View time when worked"><i class="fas fa-chart-area"></i> <?php echo lang('menu_timeplotter'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('map/custom');?>" title="Custom Maps of QSOs"><i class="fas fa-globe-europe"></i> <?php echo lang('menu_custom_maps'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('continents');?>" title="Continents"><i class="fas fa-globe-europe"></i> <?php echo lang('menu_continents'); ?></a>
</div>
</li>
<?php if (($this->config->item('use_auth')) && ($this->session->userdata('user_type') >= 2)) { ?>
<!-- QSO Menu Dropdown -->
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><?php echo lang('menu_qso'); ?></a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<a class="dropdown-item" href="<?php echo site_url('qso?manual=0'); ?>" title="Log Live QSOs"><i class="fas fa-list"></i> <?php echo lang('menu_live_qso'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('qso?manual=1'); ?>" title="Log QSO made in the past"><i class="fas fa-list"></i> <?php echo lang('menu_post_qso'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('contesting?manual=0'); ?>" title="Live contest QSOs"><i class="fas fa-list"></i> <?php echo lang('menu_live_contest_logging'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('contesting?manual=1'); ?>" title="Post contest QSOs"><i class="fas fa-list"></i> <?php echo lang('menu_post_contest_logging'); ?></a>
</div>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><?php echo lang('menu_awards'); ?></a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<a class="dropdown-item" href="<?php echo site_url('awards/cq');?>"><i class="fas fa-trophy"></i> <?php echo lang('menu_cq'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('awards/dok');?>"><i class="fas fa-trophy"></i> <?php echo lang('menu_dok'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('awards/dxcc');?>"><i class="fas fa-trophy"></i> <?php echo lang('menu_dxcc'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('awards/iota');?>"><i class="fas fa-trophy"></i> <?php echo lang('menu_iota'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('awards/pota');?>"><i class="fas fa-trophy"></i> <?php echo lang('menu_pota'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('awards/sig');?>"><i class="fas fa-trophy"></i> <?php echo lang('menu_sig'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('awards/sota');?>"><i class="fas fa-trophy"></i> <?php echo lang('menu_sota'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('awards/counties');?>"><i class="fas fa-trophy"></i> <?php echo lang('menu_us_counties'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('awards/vucc');?>"><i class="fas fa-trophy"></i> <?php echo lang('menu_vucc'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('awards/was');?>"><i class="fas fa-trophy"></i> <?php echo lang('menu_was'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('awards/wwff');?>"><i class="fas fa-trophy"></i> <?php echo lang('menu_wwff'); ?></a>
</div>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">QRV</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<a class="dropdown-item" href="<?php echo site_url('hamsat'); ?>" title="Hams.at"><i class="fas fa-list"></i> Hams.at</a>
<?php if ($this->optionslib->get_option('dxcache_url') != '') { ?>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('bandmap/list'); ?>" title="Bandmap"><i class="fa fa-id-card"></i> <?php echo lang('menu_bandmap'); ?></a>
<?php } ?>
</div>
</li>
<?php if(($this->config->item('use_auth')) && ($this->session->userdata('user_type') == 99)) { ?>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><?php echo lang('menu_admin'); ?></a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<a class="dropdown-item" href="<?php echo site_url('user');?>" title="Manage user accounts"><i class="fas fa-user"></i> <?php echo lang('menu_user_account'); ?></a>
<div class="dropdown-divider"></div>
<!-- Notes -->
<?php if ($this->session->userdata('user_show_notes') == 1) { ?>
<a class="nav-link" href="<?php echo site_url('notes'); ?>"><?php echo lang('menu_notes'); ?></a>
<?php } ?>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><?php echo lang('menu_analytics'); ?></a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<a class="dropdown-item" href="<?php echo site_url('statistics'); ?>" title="Statistics"><i class="fas fa-chart-area"></i> <?php echo lang('menu_statistics'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('gridmap'); ?>" title="Gridmap"><i class="fas fa-globe-europe"></i> <?php echo lang('menu_gridmap'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('activated_gridmap'); ?>" title="Activated Gridsquares"><i class="fas fa-globe-europe"></i> <?php echo lang('menu_activated_gridsquares'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('activators'); ?>" title="Gridsquare Activators"><i class="fas fa-globe-europe"></i> <?php echo lang('menu_gridsquare_activators'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('distances'); ?>" title="Distances"><i class="fas fa-chart-area"></i> <?php echo lang('menu_distances_worked'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('dayswithqso'); ?>" title="Days with QSOs"><i class="fas fa-chart-area"></i> <?php echo lang('menu_days_with_qsos'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('timeline'); ?>" title="Timeline"><i class="fas fa-chart-area"></i> <?php echo lang('menu_timeline'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('accumulated'); ?>" title="Accumulated Statistics"><i class="fas fa-chart-area"></i> <?php echo lang('menu_accumulated_statistics'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('timeplotter'); ?>" title="View time when worked"><i class="fas fa-chart-area"></i> <?php echo lang('menu_timeplotter'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('map/custom'); ?>" title="Custom Maps of QSOs"><i class="fas fa-globe-europe"></i> <?php echo lang('menu_custom_maps'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('continents'); ?>" title="Continents"><i class="fas fa-globe-europe"></i> <?php echo lang('menu_continents'); ?></a>
</div>
</li>
<a class="dropdown-item" href="<?php echo site_url('options');?>" title="Manage global options"><i class="fas fa-cog"></i> <?php echo lang('menu_global_options'); ?></a>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><?php echo lang('menu_awards'); ?></a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<a class="dropdown-item" href="<?php echo site_url('awards/cq'); ?>"><i class="fas fa-trophy"></i> <?php echo lang('menu_cq'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('awards/dok'); ?>"><i class="fas fa-trophy"></i> <?php echo lang('menu_dok'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('awards/dxcc'); ?>"><i class="fas fa-trophy"></i> <?php echo lang('menu_dxcc'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('awards/iota'); ?>"><i class="fas fa-trophy"></i> <?php echo lang('menu_iota'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('awards/pota'); ?>"><i class="fas fa-trophy"></i> <?php echo lang('menu_pota'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('awards/sig'); ?>"><i class="fas fa-trophy"></i> <?php echo lang('menu_sig'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('awards/sota'); ?>"><i class="fas fa-trophy"></i> <?php echo lang('menu_sota'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('awards/counties'); ?>"><i class="fas fa-trophy"></i> <?php echo lang('menu_us_counties'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('awards/vucc'); ?>"><i class="fas fa-trophy"></i> <?php echo lang('menu_vucc'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('awards/was'); ?>"><i class="fas fa-trophy"></i> <?php echo lang('menu_was'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('awards/wwff'); ?>"><i class="fas fa-trophy"></i> <?php echo lang('menu_wwff'); ?></a>
</div>
</li>
<div class="dropdown-divider"></div>
<?php if (($this->config->item('use_auth')) && ($this->session->userdata('user_type') == 99)) { ?>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><?php echo lang('menu_admin'); ?></a>
<a class="dropdown-item" href="<?php echo site_url('mode');?>" title="Manage QSO modes"><i class="fas fa-broadcast-tower"></i> <?php echo lang('menu_modes'); ?></a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<a class="dropdown-item" href="<?php echo site_url('user'); ?>" title="Manage user accounts"><i class="fas fa-user"></i> <?php echo lang('menu_user_account'); ?></a>
<div class="dropdown-divider"></div>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('contesting/add');?>" title="Manage Contest names"><i class="fas fa-broadcast-tower"></i> <?php echo lang('menu_contests'); ?></a>
<a class="dropdown-item" href="<?php echo site_url('options'); ?>" title="Manage global options"><i class="fas fa-cog"></i> <?php echo lang('menu_global_options'); ?></a>
<div class="dropdown-divider"></div>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('themes');?>" title="Manage Themes"><i class="fas fa-cog"></i> <?php echo lang('menu_themes'); ?></a>
<a class="dropdown-item" href="<?php echo site_url('mode'); ?>" title="Manage QSO modes"><i class="fas fa-broadcast-tower"></i> <?php echo lang('menu_modes'); ?></a>
<div class="dropdown-divider"></div>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('backup');?>" title="Backup Cloudlog content"><i class="fas fa-save"></i> <?php echo lang('menu_backup'); ?></a>
<a class="dropdown-item" href="<?php echo site_url('contesting/add'); ?>" title="Manage Contest names"><i class="fas fa-broadcast-tower"></i> <?php echo lang('menu_contests'); ?></a>
<div class="dropdown-divider"></div>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('update');?>" title="Update Country Files"><i class="fas fa-sync"></i> <?php echo lang('menu_update_country_files'); ?></a>
<a class="dropdown-item" href="<?php echo site_url('themes'); ?>" title="Manage Themes"><i class="fas fa-cog"></i> <?php echo lang('menu_themes'); ?></a>
<div class="dropdown-divider"></div>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('maintenance');?>" title="maintenance"><i class="fas fa-tools"></i> <?php echo lang('menu_maintenance'); ?></a>
<a class="dropdown-item" href="<?php echo site_url('backup'); ?>" title="Backup Cloudlog content"><i class="fas fa-save"></i> <?php echo lang('menu_backup'); ?></a>
<div class="dropdown-divider"></div>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('debug');?>" title="Debug Information"><i class="fas fa-tools"></i> <?php echo lang('menu_debug_information'); ?></a>
<a class="dropdown-item" href="<?php echo site_url('update'); ?>" title="Update Country Files"><i class="fas fa-sync"></i> <?php echo lang('menu_update_country_files'); ?></a>
</div>
</li>
<?php } ?>
<?php } ?>
</ul>
<div class="dropdown-divider"></div>
<?php if($this->optionslib->get_option('global_search') != "false" || $this->session->userdata('user_type') >= 2) { ?>
<form method="post" action="<?php echo site_url('search'); ?>" class="form-inline">
<input class="form-control mr-sm-2" id="nav-bar-search-input" type="search" name="callsign" placeholder="<?php echo lang('menu_search_text'); ?>" aria-label="Search">
<a class="dropdown-item" href="<?php echo site_url('maintenance'); ?>" title="maintenance"><i class="fas fa-tools"></i> <?php echo lang('menu_maintenance'); ?></a>
<button title="<?php echo lang('menu_search_button'); ?>" class="btn btn-outline-success my-2 my-sm-0" type="submit"><i class="fas fa-search"></i></button>
</form>
<?php } ?>
<div class="dropdown-divider"></div>
<?php if(($this->config->item('use_auth')) && ($this->session->userdata('user_type') >= 2)) { ?>
<!-- Logged in Content-->
<?php } else { ?>
<!-- Not Logged In-->
<form method="post" action="<?php echo site_url('user/login'); ?>" style="padding-left: 5px;" class="form-inline">
<input class="form-control mr-sm-2" type="text" name="user_name" placeholder="Username" aria-label="Username">
<input class="form-control mr-sm-2" type="password" name="user_password" placeholder="Password" aria-label="Password">
<input type="hidden" name="id" value="<?php echo $this->uri->segment(3); ?>" />
<button class="btn btn-outline-success mr-sm-2" type="submit"><?php echo lang('menu_login_button'); ?></button>
</form>
<?php } ?>
<a class="dropdown-item" href="<?php echo site_url('debug'); ?>" title="Debug Information"><i class="fas fa-tools"></i> <?php echo lang('menu_debug_information'); ?></a>
<?php if(($this->config->item('use_auth')) && ($this->session->userdata('user_type') >= 2)) { ?>
<ul class="navbar-nav">
<!-- Logged in As -->
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><i class="fas fa-user"></i> <?php echo $this->session->userdata('user_callsign'); ?></a>
</div>
</li>
<?php } ?>
<?php } ?>
</ul>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<a class="dropdown-item" href="<?php echo site_url('user/edit')."/".$this->session->userdata('user_id'); ?>" title="Account"><i class="fas fa-user"></i> <?php echo lang('menu_account'); ?></a>
<?php if ($this->optionslib->get_option('global_search') != "false" || $this->session->userdata('user_type') >= 2) { ?>
<form method="post" action="<?php echo site_url('search'); ?>" class="form-inline">
<input class="form-control mr-sm-2" id="nav-bar-search-input" type="search" name="callsign" placeholder="<?php echo lang('menu_search_text'); ?>" aria-label="Search">
<a class="dropdown-item" href="<?php echo site_url('logbooks');?>" title="Manage station logbooks"><i class="fas fa-home"></i> <?php echo lang('menu_station_logbooks'); ?></a>
<button title="<?php echo lang('menu_search_button'); ?>" class="btn btn-outline-success my-2 my-sm-0" type="submit"><i class="fas fa-search"></i></button>
</form>
<?php } ?>
<a class="dropdown-item" href="<?php echo site_url('station');?>" title="Manage station locations"><i class="fas fa-home"></i> <?php echo lang('menu_station_locations'); ?></a>
<?php if (($this->config->item('use_auth')) && ($this->session->userdata('user_type') >= 2)) { ?>
<!-- Logged in Content-->
<?php } else { ?>
<!-- Not Logged In-->
<form method="post" action="<?php echo site_url('user/login'); ?>" style="padding-left: 5px;" class="form-inline">
<input class="form-control mr-sm-2" type="text" name="user_name" placeholder="Username" aria-label="Username">
<input class="form-control mr-sm-2" type="password" name="user_password" placeholder="Password" aria-label="Password">
<input type="hidden" name="id" value="<?php echo $this->uri->segment(3); ?>" />
<button class="btn btn-outline-success mr-sm-2" type="submit"><?php echo lang('menu_login_button'); ?></button>
</form>
<?php } ?>
<a class="dropdown-item" href="<?php echo site_url('band');?>" title="Manage Bands"><i class="fas fa-cog"></i> <?php echo lang('menu_bands'); ?></a>
<?php if (($this->config->item('use_auth')) && ($this->session->userdata('user_type') >= 2)) { ?>
<ul class="navbar-nav">
<!-- Logged in As -->
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><i class="fas fa-user"></i> <?php echo $this->session->userdata('user_callsign'); ?></a>
<div class="dropdown-divider"></div>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<a class="dropdown-item" href="<?php echo site_url('user/edit') . "/" . $this->session->userdata('user_id'); ?>" title="Account"><i class="fas fa-user"></i> <?php echo lang('menu_account'); ?></a>
<a class="dropdown-item" href="<?php echo site_url('adif');?>" title="Amateur Data Interchange Format (ADIF) import / export"><i class="fas fa-sync"></i> <?php echo lang('menu_adif_import_export'); ?></a>
<a class="dropdown-item" href="<?php echo site_url('logbooks'); ?>" title="Manage station logbooks"><i class="fas fa-home"></i> <?php echo lang('menu_station_logbooks'); ?></a>
<a class="dropdown-item" href="<?php echo site_url('kmlexport');?>" title="KML Export for Google Earth"><i class="fas fa-sync"></i> <?php echo lang('menu_kml_export'); ?></a>
<a class="dropdown-item" href="<?php echo site_url('station'); ?>" title="Manage station locations"><i class="fas fa-home"></i> <?php echo lang('menu_station_locations'); ?></a>
<a class="dropdown-item" href="<?php echo site_url('dxatlas');?>" title="DX Atlas Gridsquare Export"><i class="fas fa-sync"></i> <?php echo lang('menu_dx_atlas_gridsquare_export'); ?></a>
<a class="dropdown-item" href="<?php echo site_url('band'); ?>" title="Manage Bands"><i class="fas fa-cog"></i> <?php echo lang('menu_bands'); ?></a>
<a class="dropdown-item" href="<?php echo site_url('csv');?>" title="SOTA CSV Export"><i class="fas fa-sync"></i> <?php echo lang('menu_sota_csv_export'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('cabrillo');?>" title="Cabrillo Export"><i class="fas fa-sync"></i> <?php echo lang('menu_cabrillo_export'); ?></a>
<a class="dropdown-item" href="<?php echo site_url('adif'); ?>" title="Amateur Data Interchange Format (ADIF) import / export"><i class="fas fa-sync"></i> <?php echo lang('menu_adif_import_export'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('kmlexport'); ?>" title="KML Export for Google Earth"><i class="fas fa-sync"></i> <?php echo lang('menu_kml_export'); ?></a>
<?php
$CI =& get_instance();
$CI->load->model('oqrs_model');
$CI->load->model('logbooks_model');
$logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
if ($logbooks_locations_array) {
$location_list = "'".implode("','",$logbooks_locations_array)."'";
} else {
$location_list = null;
}
<a class="dropdown-item" href="<?php echo site_url('dxatlas'); ?>" title="DX Atlas Gridsquare Export"><i class="fas fa-sync"></i> <?php echo lang('menu_dx_atlas_gridsquare_export'); ?></a>
$oqrs_requests = $CI->oqrs_model->oqrs_requests($location_list);
?>
<a class="dropdown-item" href="<?php echo site_url('oqrs/requests');?>" title="OQRS Requests"><i class="fa fa-id-card"></i> <?php echo lang('menu_oqrs_requests'); ?> <?php if ($oqrs_requests > 0) { echo "<span class=\"badge badge-light\">".$oqrs_requests."</span>"; } ?></a>
<a class="dropdown-item" href="<?php echo site_url('csv'); ?>" title="SOTA CSV Export"><i class="fas fa-sync"></i> <?php echo lang('menu_sota_csv_export'); ?></a>
<a class="dropdown-item" href="<?php echo site_url('qslprint');?>" title="Print Requested QSLs"><i class="fas fa-print"></i> <?php echo lang('menu_print_requested_qsls'); ?></a>
<a class="dropdown-item" href="<?php echo site_url('cabrillo'); ?>" title="Cabrillo Export"><i class="fas fa-sync"></i> <?php echo lang('menu_cabrillo_export'); ?></a>
<a class="dropdown-item" href="<?php echo site_url('labels');?>" title="Label setup"><i class="fas fa-print"></i> <?php echo lang('menu_labels'); ?></a>
<div class="dropdown-divider"></div>
<div class="dropdown-divider"></div>
<?php
$CI = &get_instance();
$CI->load->model('oqrs_model');
$CI->load->model('logbooks_model');
$logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
if ($logbooks_locations_array) {
$location_list = "'" . implode("','", $logbooks_locations_array) . "'";
} else {
$location_list = null;
}
<a class="dropdown-item" href="<?php echo site_url('lotw');?>" title="Synchronise with Logbook of the World (LoTW)"><i class="fas fa-sync"></i> <?php echo lang('menu_logbook_of_the_world'); ?></a>
$oqrs_requests = $CI->oqrs_model->oqrs_requests($location_list);
?>
<a class="dropdown-item" href="<?php echo site_url('oqrs/requests'); ?>" title="OQRS Requests"><i class="fa fa-id-card"></i> <?php echo lang('menu_oqrs_requests'); ?> <?php if ($oqrs_requests > 0) {
echo "<span class=\"badge badge-light\">" . $oqrs_requests . "</span>";
} ?></a>
<a class="dropdown-item" href="<?php echo site_url('eqsl/import');?>" title="eQSL import / export"><i class="fas fa-sync"></i> <?php echo lang('menu_eqsl_import_export'); ?></a>
<a class="dropdown-item" href="<?php echo site_url('qslprint'); ?>" title="Print Requested QSLs"><i class="fas fa-print"></i> <?php echo lang('menu_print_requested_qsls'); ?></a>
<a class="dropdown-item" href="<?php echo site_url('hrdlog/export');?>" title="Upload to HRDLog.net logbook"><i class="fas fa-sync"></i> <?php echo lang('menu_hrd_logbook'); ?></a>
<a class="dropdown-item" href="<?php echo site_url('qrz/export');?>" title="Upload to QRZ.com logbook"><i class="fas fa-sync"></i> <?php echo lang('menu_qrz_logbook'); ?></a>
<a class="dropdown-item" href="<?php echo site_url('labels'); ?>" title="Label setup"><i class="fas fa-print"></i> <?php echo lang('menu_labels'); ?></a>
<a class="dropdown-item" href="<?php echo site_url('webadif/export');?>" title="Upload to webADIF"><i class="fas fa-sync"></i> <?php echo lang('menu_qo_100_dx_club_upload'); ?></a>
<div class="dropdown-divider"></div>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('lotw'); ?>" title="Synchronise with Logbook of the World (LoTW)"><i class="fas fa-sync"></i> <?php echo lang('menu_logbook_of_the_world'); ?></a>
<a class="dropdown-item" href="<?php echo site_url('api/help');?>" title="Manage API keys"><i class="fas fa-key"></i> <?php echo lang('menu_api_keys'); ?></a>
<a class="dropdown-item" href="<?php echo site_url('eqsl/import'); ?>" title="eQSL import / export"><i class="fas fa-sync"></i> <?php echo lang('menu_eqsl_import_export'); ?></a>
<a class="dropdown-item" href="<?php echo site_url('radio');?>" title="Interface with one or more radios"><i class="fas fa-broadcast-tower"></i> <?php echo lang('menu_hardware_interfaces'); ?></a>
<a class="dropdown-item" href="<?php echo site_url('hrdlog/export'); ?>" title="Upload to HRDLog.net logbook"><i class="fas fa-sync"></i> <?php echo lang('menu_hrd_logbook'); ?></a>
<a class="dropdown-item" href="<?php echo site_url('qrz/export'); ?>" title="Upload to QRZ.com logbook"><i class="fas fa-sync"></i> <?php echo lang('menu_qrz_logbook'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('webadif/export'); ?>" title="Upload to webADIF"><i class="fas fa-sync"></i> <?php echo lang('menu_qo_100_dx_club_upload'); ?></a>
<a class="dropdown-item" target="_blank" href="https://github.com/magicbug/Cloudlog/wiki" title="Help"><i class="fas fa-question"></i> <?php echo lang('menu_help'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" target="_blank" href="https://github.com/magicbug/Cloudlog/discussions" title="Forum"><i class="far fa-comment-dots"></i> <?php echo lang('menu_forum'); ?></a>
<a class="dropdown-item" href="<?php echo site_url('api/help'); ?>" title="Manage API keys"><i class="fas fa-key"></i> <?php echo lang('menu_api_keys'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('radio'); ?>" title="Interface with one or more radios"><i class="fas fa-broadcast-tower"></i> <?php echo lang('menu_hardware_interfaces'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" target="_blank" href="https://github.com/magicbug/Cloudlog/wiki" title="Help"><i class="fas fa-question"></i> <?php echo lang('menu_help'); ?></a>
<a class="dropdown-item" target="_blank" href="https://github.com/magicbug/Cloudlog/discussions" title="Forum"><i class="far fa-comment-dots"></i> <?php echo lang('menu_forum'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('user/logout'); ?>" title="Logout"><i class="fas fa-sign-out-alt"></i> <?php echo lang('menu_logout'); ?></a>
</div>
</li>
<?php
// Can add extra menu items by defining them in options. The format is json.
// Useful to add extra things in Cloudlog without the need for modifying files. If you add extras, these files will not be overwritten when updating.
//
// The menu items will be displayed to the top right under extras.
//
// Example:
// INSERT INTO options (option_name,option_value,autoload) VALUES
// ('menuitems','[
// {
// "url":"gridmap",
// "text":"Gridmap",
// "icon":"fa-globe-europe"
// },
// {
// "url":"gallery",
// "text":"Gallery",
// "icon":"fa-globe-europe"
// }
// ]','yes');
if ($this->optionslib->get_option('menuitems')) { ?>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Extras</a>
<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="' . $item->text . '"><i class="fas ' . $item->icon . '"></i> ' . $item->text . '</a>';
}
?>
</div>
</li>
<?php } ?>
</ul>
<?php } ?>
<a class="dropdown-item" href="<?php echo site_url('user/logout');?>" title="Logout"><i class="fas fa-sign-out-alt"></i> <?php echo lang('menu_logout'); ?></a>
</div>
</li>
<?php
// Can add extra menu items by defining them in options. The format is json.
// Useful to add extra things in Cloudlog without the need for modifying files. If you add extras, these files will not be overwritten when updating.
//
// The menu items will be displayed to the top right under extras.
//
// Example:
// INSERT INTO options (option_name,option_value,autoload) VALUES
// ('menuitems','[
// {
// "url":"gridmap",
// "text":"Gridmap",
// "icon":"fa-globe-europe"
// },
// {
// "url":"gallery",
// "text":"Gallery",
// "icon":"fa-globe-europe"
// }
// ]','yes');
if ($this->optionslib->get_option('menuitems')) { ?>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Extras</a>
<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="'. $item->text. '"><i class="fas '. $item->icon .'"></i> ' . $item->text . '</a>';
}
?>
</div>
</li>
<?php } ?>
</ul>
<?php } ?>
</div>
</div>
</nav>
</div>
</nav>

查看文件

@ -473,7 +473,7 @@
</div>
<div class="card-body">
<div class="form-group">
<label for="profileimages">Select the type of QSL to show in the previous QSOs section.</label>
<label for="profileimages"><?php echo lang('account_select_the_type_of_qsl_to_show_in_the_previous_qsos_section'); ?></label>
<select class="custom-select" id="previousqsltype" name="user_previous_qsl_type">
<option value="0" <?php if ($user_previous_qsl_type == 0) { echo " selected =\"selected\""; } ?>><?php echo lang('gen_hamradio_qsl'); ?></option>
<option value="1" <?php if ($user_previous_qsl_type == 1) { echo " selected =\"selected\""; } ?>><?php echo lang('lotw_short'); ?></option>
@ -562,6 +562,11 @@
} ?>
</select>
</div>
</div>
<div class="card-header">
<?php echo lang('account_qsl_settings'); ?>
</div>
<div class="card-body">
<div class="form-group">
<label class="my-1 mr-2"><?php echo lang('gridsquares_confirmation'); ?></label>
<div class="form-check-inline">

查看文件

@ -144,10 +144,14 @@ thead > tr > td {
text-transform: uppercase;
}
.workedGrid {
.confirmedGrid {
border-color: green;
}
.workedGrid {
border-color: yellow;
}
.newGrid {
border-color: red;
border-width: 2px;

查看文件

@ -45,10 +45,17 @@ $(function() {
dxspots.sort(SortByQrg);
dxspots.forEach((single) => {
var data=[];
if (single.cnfmd_call) {
addon_class="text-success";
} else if (single.worked_call) {
addon_class="text-warning";
} else {
addon_class="";
}
data[0]=[];
data[0].push(single.when_pretty);
data[0].push(single.frequency*1);
data[0].push((single.worked_call ?'<span class="text-success">' : '')+single.spotted+(single.worked_call ? '</span>' : ''));
data[0].push((addon_class != '' ?'<span class="'+addon_class+'">' : '')+single.spotted+(addon_class != '' ? '</span>' : ''));
data[0].push(single.dxcc_spotted.entity);
data[0].push(single.spotter);
if (oldtable.length > 0) {

查看文件

@ -386,18 +386,20 @@ function changebadge(entityname) {
$.getJSON(base_url + 'index.php/logbook/jsonlookupdxcc/' + convert_case(entityname) + '/SAT/0/0', function(result)
{
$('#callsign_info').removeClass("lotw_info_orange");
$('#callsign_info').removeClass("badge-secondary");
$('#callsign_info').removeClass("badge-success");
$('#callsign_info').removeClass("badge-danger");
$('#callsign_info').attr('title', '');
if (result.workedBefore)
{
if (result.confirmed) {
$('#callsign_info').addClass("badge-success");
$('#callsign_info').attr('title', 'DXCC was already worked and confirmed in the past on this band and mode!');
} else if (result.workedBefore) {
$('#callsign_info').addClass("badge-success");
$('#callsign_info').addClass("lotw_info_orange");
$('#callsign_info').attr('title', 'DXCC was already worked in the past on this band and mode!');
}
else
{
} else {
$('#callsign_info').addClass("badge-danger");
$('#callsign_info').attr('title', 'New DXCC, not worked on this band and mode!');
}
@ -406,18 +408,20 @@ function changebadge(entityname) {
$.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("lotw_info_orange");
$('#callsign_info').removeClass("badge-secondary");
$('#callsign_info').removeClass("badge-success");
$('#callsign_info').removeClass("badge-danger");
$('#callsign_info').attr('title', '');
if (result.workedBefore)
{
if (result.confirmed) {
$('#callsign_info').addClass("badge-success");
$('#callsign_info').attr('title', 'DXCC was already worked and confirmed in the past on this band and mode!');
} else if (result.workedBefore) {
$('#callsign_info').addClass("badge-success");
$('#callsign_info').addClass("lotw_info_orange");
$('#callsign_info').attr('title', 'DXCC was already worked in the past on this band and mode!');
}
else
{
} else {
$('#callsign_info').addClass("badge-danger");
$('#callsign_info').attr('title', 'New DXCC, not worked on this band and mode!');
}
@ -445,8 +449,10 @@ function reset_fields() {
$('#locator').val("");
$('#iota_ref').val("");
$('#sota_ref').val("");
$("#locator").removeClass("confirmedGrid");
$("#locator").removeClass("workedGrid");
$("#locator").removeClass("newGrid");
$("#callsign").removeClass("confirmedGrid");
$("#callsign").removeClass("workedGrid");
$("#callsign").removeClass("newGrid");
$('#callsign_info').removeClass("badge-secondary");
@ -521,11 +527,14 @@ $("#callsign").focusout(function() {
{
// Reset CSS values before updating
$('#callsign').removeClass("workedGrid");
$('#callsign').removeClass("confirmedGrid");
$('#callsign').removeClass("newGrid");
$('#callsign').attr('title', '');
if (result.workedBefore)
{
if (result.confirmed) {
$('#callsign').addClass("confirmedGrid");
$('#callsign').attr('title', 'Callsign was already worked and confirmed in the past on this band and mode!');
} else if (result.workedBefore) {
$('#callsign').addClass("workedGrid");
$('#callsign').attr('title', 'Callsign was already worked in the past on this band and mode!');
}
@ -539,20 +548,22 @@ $("#callsign").focusout(function() {
$.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("confirmedGrid");
$('#callsign').removeClass("workedGrid");
$('#callsign').removeClass("newGrid");
$('#callsign').attr('title', '');
if (result.workedBefore)
{
if (result.confirmed) {
$('#callsign').addClass("confirmedGrid");
$('#callsign').attr('title', 'Callsign was already worked and confirmed in the past on this band and mode!');
} else if (result.workedBefore) {
$('#callsign').addClass("workedGrid");
$('#callsign').attr('title', 'Callsign was already worked in the past on this band and mode!');
}
else
{
} else {
$('#callsign').addClass("newGrid");
$('#callsign').attr('title', 'New Callsign!');
}
})
}
@ -632,20 +643,19 @@ $("#callsign").focusout(function() {
if (result.callsign_qra != "")
{
if (result.workedBefore)
{
if (result.confirmed) {
$('#locator').addClass("confirmedGrid");
$('#locator').attr('title', 'Grid was already worked and confirmed in the past');
} else if (result.workedBefore) {
$('#locator').addClass("workedGrid");
$('#locator').attr('title', 'Grid was already worked in the past');
}
else
{
} else {
$('#locator').addClass("newGrid");
$('#locator').attr('title', 'New grid!');
}
}
else
{
} else {
$('#locator').removeClass("workedGrid");
$('#locator').removeClass("confirmedGrid");
$('#locator').removeClass("newGrid");
$('#locator').attr('title', '');
}
@ -773,17 +783,18 @@ $("#locator").keyup(function(){
$.getJSON(base_url + 'index.php/logbook/jsonlookupgrid/' + qra_lookup.toUpperCase() + '/SAT/0/0', function(result)
{
// Reset CSS values before updating
$('#locator').removeClass("confirmedGrid");
$('#locator').removeClass("workedGrid");
$('#locator').removeClass("newGrid");
$('#locator').attr('title', '');
if (result.workedBefore)
{
if (result.confirmed) {
$('#locator').addClass("confirmedGrid");
$('#locator').attr('title', 'Grid was already worked and confirmed in the past');
} else if (result.workedBefore) {
$('#locator').addClass("workedGrid");
$('#locator').attr('title', 'Grid was already worked in the past');
}
else
{
} else {
$('#locator').addClass("newGrid");
$('#locator').attr('title', 'New grid!');
}
@ -792,20 +803,22 @@ $("#locator").keyup(function(){
$.getJSON(base_url + 'index.php/logbook/jsonlookupgrid/' + qra_lookup.toUpperCase() + '/0/' + $("#band").val() +'/' + $("#mode").val(), function(result)
{
// Reset CSS values before updating
$('#locator').removeClass("confirmedGrid");
$('#locator').removeClass("workedGrid");
$('#locator').removeClass("newGrid");
$('#locator').attr('title', '');
if (result.workedBefore)
{
if (result.confirmed) {
$('#locator').addClass("confirmedGrid");
$('#locator').attr('title', 'Grid was already worked and confimred in the past');
} else if (result.workedBefore) {
$('#locator').addClass("workedGrid");
$('#locator').attr('title', 'Grid was already worked in the past');
}
else
{
} else {
$('#locator').addClass("newGrid");
$('#locator').attr('title', 'New grid!');
}
})
}
}
@ -954,8 +967,10 @@ function resetDefaultQSOFields() {
$('#iota_ref').val("");
$('#sota_ref').val("");
$("#locator").removeClass("workedGrid");
$("#locator").removeClass("confirmedGrid");
$("#locator").removeClass("newGrid");
$("#callsign").removeClass("workedGrid");
$("#callsign").removeClass("confirmedGrid");
$("#callsign").removeClass("newGrid");
$('#callsign_info').removeClass("badge-secondary");
$('#callsign_info').removeClass("badge-success");

查看文件

@ -38,7 +38,6 @@ class QSO
private string $iota;
/** @var string[] */
private string $deVUCCGridsquares;
private string $stationGridsquare;
private string $dxGridsquare;
private string $dxIOTA;
private string $dxSig;
@ -156,17 +155,15 @@ class QSO
$this->email = $data['COL_EMAIL'] ?? '';
$this->address = $data['COL_ADDRESS'] ?? '';
$this->deGridsquare = $data['COL_MY_GRIDSQUARE'] ?? '';
$this->deIOTA = $data['COL_MY_IOTA'] ?? '';
$this->deSig = $data['COL_MY_SIG'] ?? '';
$this->deSigInfo = $data['COL_MY_SIG_INFO'] ?? '';
$this->deGridsquare = $data['station_gridsquare'] ?? '';
$this->deIOTA = $data['station_iota'] ?? '';
$this->deSig = $data['station_sig'] ?? '';
$this->deSigInfo = $data['station_sig_info'] ?? '';
$this->deIOTAIslandID = $data['COL_MY_IOTA_ISLAND_ID'] ?? '';
$this->deSOTAReference = $data['COL_MY_SOTA_REF'] ?? '';
$this->deSOTAReference = $data['station_sota'] ?? '';
$this->deVUCCGridsquares = $data['COL_MY_VUCC_GRIDS'] ?? '';
$this->stationGridsquare = $data['station_gridsquare'] ?? '';
$this->dxGridsquare = $data['COL_GRIDSQUARE'] ?? '';
$this->dxIOTA = $data['COL_IOTA'] ?? '';
$this->dxSig = $data['COL_SIG'] ?? '';
@ -862,9 +859,9 @@ class QSO
{
$refs = [];
if ($this->dxVUCCGridsquares !== '') {
$refs[] = '<span id="dxgrid">' . $this->dxVUCCGridsquares . '</span> ' .$this->getQrbLink($this->stationGridsquare, $this->dxVUCCGridsquares, $this->dxGridsquare);
$refs[] = '<span id="dxgrid">' . $this->dxVUCCGridsquares . '</span> ' .$this->getQrbLink($this->deGridsquare, $this->dxVUCCGridsquares, $this->dxGridsquare);
} else if ($this->dxGridsquare !== '') {
$refs[] = '<span id="dxgrid">' . $this->dxGridsquare . '</span> ' .$this->getQrbLink($this->stationGridsquare, $this->dxVUCCGridsquares, $this->dxGridsquare);
$refs[] = '<span id="dxgrid">' . $this->dxGridsquare . '</span> ' .$this->getQrbLink($this->deGridsquare, $this->dxVUCCGridsquares, $this->dxGridsquare);
}
if ($this->dxSOTAReference !== '') {
$refs[] = "SOTA: " . '<span id="dxsota">' . $this->dxSOTAReference. '</span>';