wavelog/application/views/interface_assets/header.php

610 lines
38 KiB
PHP
Raw Normal View History

<!doctype html>
2024-06-06 10:47:55 +02:00
<html lang="<?php echo $language['code']; ?>">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
2023-11-02 20:58:40 +01:00
<meta name="apple-mobile-web-app-capable" content="yes">
2023-11-05 14:07:05 +01:00
<meta name="mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="default">
<link rel="manifest" href="<?php echo base_url(); ?>manifest.json" />
2023-11-23 12:14:37 +01:00
2024-01-31 11:34:39 +00:00
<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" />
<!-- Bootstrap CSS -->
2024-05-28 10:04:01 +02:00
<?php
$theme = $this->optionslib->get_theme();
if ($theme) { ?>
<link rel="stylesheet" href="<?php echo base_url(); ?>assets/css/bootstrap-multiselect.css">
2024-05-28 10:04:01 +02:00
<link rel="stylesheet" href="<?php echo base_url(); ?>assets/css/<?php echo $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" />
2024-05-28 10:04:01 +02:00
<link rel="stylesheet" href="<?php echo base_url(); ?>assets/css/<?php echo $theme; ?>/overrides.css">
<?php } ?>
2024-05-23 11:04:23 +02:00
<link rel="stylesheet" href="<?php echo base_url(); ?>assets/fontawesome/css/all.min.css">
<link rel="stylesheet" href="<?php echo base_url(); ?>assets/css/jquery.fancybox.min.css" />
2019-03-20 17:47:40 +00:00
<!-- Maps -->
<link rel="stylesheet" type="text/css" href="<?php echo base_url(); ?>assets/js/leaflet/leaflet.css" />
2023-03-18 14:16:59 +01:00
<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 } ?>
<?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" />
2023-09-19 13:59:19 +02:00
<?php if ($this->uri->segment(1) == "sattimers") { ?>
<link rel="stylesheet" type="text/css" href="<?php echo base_url(); ?>assets/css/sattimers.css" />
<?php } ?>
<?php if (file_exists(APPPATH . '../assets/css/custom.css')) {
echo '<link rel="stylesheet" href="' . base_url() . 'assets/css/custom.css">';
} ?>
2021-04-10 05:02:01 +02:00
2023-12-17 23:08:58 +01:00
<script>
var userName = '<?php echo $this->session->userdata('user_name'); ?>';
<?php
if ($this->uri->segment(1) == "qso") {
$actstation=$this->stations->find_active() ?? '';
echo "var activeStationId = '".$actstation."';\n";
$profile_info = $this->stations->profile($actstation)->row();
2024-08-08 07:54:28 +00:00
echo "var activeStationTXPower = '".xss_clean($profile_info->station_power ?? 0)."';\n";
2024-02-28 14:14:29 +00:00
echo "var activeStationOP = '".xss_clean($this->session->userdata('operator_callsign'))."';\n";
}
?>
2023-12-17 23:08:58 +01:00
</script>
2023-11-23 12:14:37 +01:00
<?php if (file_exists(APPPATH . '../assets/js/sections/custom.js')) {
echo '<script src="' . base_url() . 'assets/js/sections/custom.js"></script>';
} ?>
<link rel="icon" href="<?php echo base_url(); ?>favicon.ico">
2019-05-21 14:00:39 +01:00
<title><?php if (isset($page_title)) {
echo $page_title;
} ?> - Wavelog</title>
</head>
2024-06-06 10:47:55 +02:00
<body dir="<?php echo $language['direction']; ?>">
<nav class="navbar navbar-expand-lg navbar-light bg-light main-nav" id="header-menu">
<div class="container">
2024-02-29 19:13:37 +01:00
<a class="navbar-brand" href="<?php echo site_url(); ?>"><img class="headerLogo" src="<?php echo base_url(); ?>assets/logo/<?php echo $this->optionslib->get_logo('header_logo'); ?>.png" alt="Logo" /></a>
2024-02-25 14:14:18 +01:00
<?php if (ENVIRONMENT == "development") { ?>
Clubstations for Wavelog (#1334) * feat[clubstations]: New DB structure * feat[clubstations]: Add clubstationstable in user managment * feat[clubstations]: Show last operator * feat[clubstations]: Better solution for last operator. tnx for the hint @int2001 * feat[clubstations]: New Club Model and Controller * feat[clubstations]: Add "Add User" and "Edit User" functionality * docs[clubstations]: move comment * feat[clubstations]: Add "Delete Member" functionality * feat[clubstations]: some enhancements and javascript * fix[clubstations]: Wrong message class for flashmessages * feat[clubstations]: Added Switch in the Header menu (not functional yet) * feat[clubstations]: clubswitch modal * fix[clubstations]: Load encryption library if not already loaded * fix[clubstations]: Prevent direct login attempts to clubstations and enhance impersonation authorization * fix[clubstations]: Typo * feat[clubstations]: Only show the operator dialog if there is something fishy * fix[user]: little UI bug * feat[impersonate]: Add source uid to session data * fix[impersonate]: logic adjustment * feat[clubstations]: Add manage button in header menu for club officers * fix[clubstations]: typo in permission level check * fix[clubstations]: Full rights for the admin * feat[impersonate]: Custom sessiondata * feat[impersonate]: Implement stop impersonation feature with modal confirmation; "the way back" * fix(modal): Fix bug where modal was hidden when mouse leaved the browser content * docs(config): Adjust config description for special callsigns and clubstations * feat(club): Add club access check helper * typo * fix[impersonation]: Better text * feat(club): Selectize for a efficient user search * feat(clubstations): Restrict clubstations based on users permission level part 1/x * adjustments for dev merge * Adjusted club right for the advanced logbook * feat[user]: Refactoring of the Action Buttons in the user table * fix[club_permissions]: normal button instead small one for club permissions * remove unnecessary line break in modal body * feat[clubstations]: Add Club Mode badge to the header * fix[clubstations]: fix maintenance mode * allow switch back on http * feat(simplefle): display operator input based on club_access * small UI adjustments * small UI adjustments * moved api page to a index.php file and added support for clubstations * removed unused stuff * typo * radios and api keys * missed one binding * fix qso view, even officers do just see their own radios in QSO logging * omit the need for a relogin to see the changes as an admin * Omit the need for relogin after club changes in general. It's a question of UX. It's better to accept a little higher DB load (if clubstations are enabled) then the need of an user to relogin. There is some room for improvement by changing user_model->get_by_id() and adding a join there. This can be done later if we see that the load is too high * If the user is not the creator of the API key, it's likely a clubstation. In this case the callsign of the clubstation can not be the same as the callsign of the user (operator call provided by the user). If this is the case, we need to use the callsign of the creator of the API key * remove debug messages * better UI in header * found a typo * full access in clubstations for admins (if accessed via admin usertable) * adjusted text * adjusted text * adjust text * reduce required chars * bugfix: missing the correct authentication in case the admin was not member of the club. he wasn't able to switch back * reduce debug messages * fixed UI bug related to tooltips * load js in controller * upps.. * some UI adjustments * corrected permissions * if user gets delete we need to remove data in club_permissions and also api keys which were created by this user * Notify members about new memberships or changes in permission level * add spinner to save button * make login/logout process more bulletproof * remove the relogin cookie after the attempt * better strategy * bug where switch back failed if user is no admin * make api keys more secure * mask not owned api keys * removed annoying link * if a user gets removed from a club we also should delete the corresponding api keys and cat radios * adjusted wiki link * Auto creation of logbook and location when new user is created * store and display locator in uppercase * same for callsign * fixed a bug in user/club creation * Revert "Auto creation of logbook and location when new user is created" We found another solution to which will be addressed in a second PR This reverts commit f05f4b7bf0423a88abf0087ade81fe613d217794. * Optimized SQL for stats at userlist * Source query for lastop "out", because mysql<9.0 can't handle Windowed functions * adjust migration * add new columns to users table to get created_at and modified_at * added a partial down function * add operator dropdown for clubstations * fix mig version * Add some backend restrictions in case a user wants to try something funny with the club --------- Co-authored-by: Andreas Kristiansen <6977712+AndreasK79@users.noreply.github.com> Co-authored-by: int2001 <joerg@dj7nt.de>
2025-01-02 10:22:23 +01:00
<span class="badge text-bg-danger me-1"><?= __("Developer Mode"); ?></span>
2024-02-25 14:14:18 +01:00
<?php } ?>
<?php if (ENVIRONMENT == "maintenance") { ?>
Clubstations for Wavelog (#1334) * feat[clubstations]: New DB structure * feat[clubstations]: Add clubstationstable in user managment * feat[clubstations]: Show last operator * feat[clubstations]: Better solution for last operator. tnx for the hint @int2001 * feat[clubstations]: New Club Model and Controller * feat[clubstations]: Add "Add User" and "Edit User" functionality * docs[clubstations]: move comment * feat[clubstations]: Add "Delete Member" functionality * feat[clubstations]: some enhancements and javascript * fix[clubstations]: Wrong message class for flashmessages * feat[clubstations]: Added Switch in the Header menu (not functional yet) * feat[clubstations]: clubswitch modal * fix[clubstations]: Load encryption library if not already loaded * fix[clubstations]: Prevent direct login attempts to clubstations and enhance impersonation authorization * fix[clubstations]: Typo * feat[clubstations]: Only show the operator dialog if there is something fishy * fix[user]: little UI bug * feat[impersonate]: Add source uid to session data * fix[impersonate]: logic adjustment * feat[clubstations]: Add manage button in header menu for club officers * fix[clubstations]: typo in permission level check * fix[clubstations]: Full rights for the admin * feat[impersonate]: Custom sessiondata * feat[impersonate]: Implement stop impersonation feature with modal confirmation; "the way back" * fix(modal): Fix bug where modal was hidden when mouse leaved the browser content * docs(config): Adjust config description for special callsigns and clubstations * feat(club): Add club access check helper * typo * fix[impersonation]: Better text * feat(club): Selectize for a efficient user search * feat(clubstations): Restrict clubstations based on users permission level part 1/x * adjustments for dev merge * Adjusted club right for the advanced logbook * feat[user]: Refactoring of the Action Buttons in the user table * fix[club_permissions]: normal button instead small one for club permissions * remove unnecessary line break in modal body * feat[clubstations]: Add Club Mode badge to the header * fix[clubstations]: fix maintenance mode * allow switch back on http * feat(simplefle): display operator input based on club_access * small UI adjustments * small UI adjustments * moved api page to a index.php file and added support for clubstations * removed unused stuff * typo * radios and api keys * missed one binding * fix qso view, even officers do just see their own radios in QSO logging * omit the need for a relogin to see the changes as an admin * Omit the need for relogin after club changes in general. It's a question of UX. It's better to accept a little higher DB load (if clubstations are enabled) then the need of an user to relogin. There is some room for improvement by changing user_model->get_by_id() and adding a join there. This can be done later if we see that the load is too high * If the user is not the creator of the API key, it's likely a clubstation. In this case the callsign of the clubstation can not be the same as the callsign of the user (operator call provided by the user). If this is the case, we need to use the callsign of the creator of the API key * remove debug messages * better UI in header * found a typo * full access in clubstations for admins (if accessed via admin usertable) * adjusted text * adjusted text * adjust text * reduce required chars * bugfix: missing the correct authentication in case the admin was not member of the club. he wasn't able to switch back * reduce debug messages * fixed UI bug related to tooltips * load js in controller * upps.. * some UI adjustments * corrected permissions * if user gets delete we need to remove data in club_permissions and also api keys which were created by this user * Notify members about new memberships or changes in permission level * add spinner to save button * make login/logout process more bulletproof * remove the relogin cookie after the attempt * better strategy * bug where switch back failed if user is no admin * make api keys more secure * mask not owned api keys * removed annoying link * if a user gets removed from a club we also should delete the corresponding api keys and cat radios * adjusted wiki link * Auto creation of logbook and location when new user is created * store and display locator in uppercase * same for callsign * fixed a bug in user/club creation * Revert "Auto creation of logbook and location when new user is created" We found another solution to which will be addressed in a second PR This reverts commit f05f4b7bf0423a88abf0087ade81fe613d217794. * Optimized SQL for stats at userlist * Source query for lastop "out", because mysql<9.0 can't handle Windowed functions * adjust migration * add new columns to users table to get created_at and modified_at * added a partial down function * add operator dropdown for clubstations * fix mig version * Add some backend restrictions in case a user wants to try something funny with the club --------- Co-authored-by: Andreas Kristiansen <6977712+AndreasK79@users.noreply.github.com> Co-authored-by: int2001 <joerg@dj7nt.de>
2025-01-02 10:22:23 +01:00
<span class="badge text-bg-info me-1"><?= __("Maintenance Mode"); ?></span>
<?php } ?>
<?php if ($this->session->userdata('clubstation') == '1' && $this->session->userdata('impersonate') == '1') { ?>
<span class="badge text-bg-primary me-1"><?= __("Clubstation"); ?></span>
2024-02-25 14:14:18 +01:00
<?php } ?>
2023-11-14 13:35:53 +01:00
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation"><span class="navbar-toggler-icon"></span></button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav navbar-nav-left">
<li class="nav-item dropdown"> <!-- LOGBOOK -->
2024-06-06 20:23:19 +02:00
<a class="nav-link dropdown-toggle" data-bs-toggle="dropdown" href="#"> <?= __("Logbook"); ?></a>
<ul class="dropdown-menu header-dropdown">
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item" href="<?php echo site_url('logbook'); ?>"><i class="fas fa-book"></i> <?= __("Overview"); ?></a></li>
<div class="dropdown-divider"></div>
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item" href="<?php echo site_url('logbookadvanced'); ?>"><i class="fas fa-book-open"></i> <?= __("Advanced"); ?></a></li>
<div class="dropdown-divider"></div>
<?php if (!($this->config->item('disable_qsl') ?? false)) { ?>
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item" href="<?php echo site_url('qsl'); ?>" title="QSL"><i class="fa fa-id-card"></i> <?= __("View QSL Cards"); ?></a></li>
<div class="dropdown-divider"></div>
<?php } ?>
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item" href="<?php echo site_url('eqsl'); ?>" title="eQSL"><i class="fa fa-id-card"></i> <?= __("View eQSL Cards"); ?></a></li>
</ul>
</li>
<?php if (($this->config->item('use_auth')) && ($this->session->userdata('user_type') >= 2)) { ?>
<li class="nav-item dropdown"> <!-- QSO -->
2024-06-06 20:23:19 +02:00
<a class="nav-link dropdown-toggle" data-bs-toggle="dropdown" href="#"><?= __("QSO"); ?></a>
<ul class="dropdown-menu header-dropdown">
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item" href="<?php echo site_url('qso?manual=0'); ?>" title="Log Live QSOs"><i class="fas fa-list"></i> <?= __("Live QSO"); ?></a></li>
<div class="dropdown-divider"></div>
2024-06-06 20:23:19 +02:00
<li><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> <?= __("Post QSO"); ?></a></li>
<div class="dropdown-divider"></div>
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item" href="<?php echo site_url('simplefle'); ?>" title="Simple Fast Log Entry"><i class="fas fa-list"></i> <?= __("Simple Fast Log Entry"); ?></a></li>
Clubstations for Wavelog (#1334) * feat[clubstations]: New DB structure * feat[clubstations]: Add clubstationstable in user managment * feat[clubstations]: Show last operator * feat[clubstations]: Better solution for last operator. tnx for the hint @int2001 * feat[clubstations]: New Club Model and Controller * feat[clubstations]: Add "Add User" and "Edit User" functionality * docs[clubstations]: move comment * feat[clubstations]: Add "Delete Member" functionality * feat[clubstations]: some enhancements and javascript * fix[clubstations]: Wrong message class for flashmessages * feat[clubstations]: Added Switch in the Header menu (not functional yet) * feat[clubstations]: clubswitch modal * fix[clubstations]: Load encryption library if not already loaded * fix[clubstations]: Prevent direct login attempts to clubstations and enhance impersonation authorization * fix[clubstations]: Typo * feat[clubstations]: Only show the operator dialog if there is something fishy * fix[user]: little UI bug * feat[impersonate]: Add source uid to session data * fix[impersonate]: logic adjustment * feat[clubstations]: Add manage button in header menu for club officers * fix[clubstations]: typo in permission level check * fix[clubstations]: Full rights for the admin * feat[impersonate]: Custom sessiondata * feat[impersonate]: Implement stop impersonation feature with modal confirmation; "the way back" * fix(modal): Fix bug where modal was hidden when mouse leaved the browser content * docs(config): Adjust config description for special callsigns and clubstations * feat(club): Add club access check helper * typo * fix[impersonation]: Better text * feat(club): Selectize for a efficient user search * feat(clubstations): Restrict clubstations based on users permission level part 1/x * adjustments for dev merge * Adjusted club right for the advanced logbook * feat[user]: Refactoring of the Action Buttons in the user table * fix[club_permissions]: normal button instead small one for club permissions * remove unnecessary line break in modal body * feat[clubstations]: Add Club Mode badge to the header * fix[clubstations]: fix maintenance mode * allow switch back on http * feat(simplefle): display operator input based on club_access * small UI adjustments * small UI adjustments * moved api page to a index.php file and added support for clubstations * removed unused stuff * typo * radios and api keys * missed one binding * fix qso view, even officers do just see their own radios in QSO logging * omit the need for a relogin to see the changes as an admin * Omit the need for relogin after club changes in general. It's a question of UX. It's better to accept a little higher DB load (if clubstations are enabled) then the need of an user to relogin. There is some room for improvement by changing user_model->get_by_id() and adding a join there. This can be done later if we see that the load is too high * If the user is not the creator of the API key, it's likely a clubstation. In this case the callsign of the clubstation can not be the same as the callsign of the user (operator call provided by the user). If this is the case, we need to use the callsign of the creator of the API key * remove debug messages * better UI in header * found a typo * full access in clubstations for admins (if accessed via admin usertable) * adjusted text * adjusted text * adjust text * reduce required chars * bugfix: missing the correct authentication in case the admin was not member of the club. he wasn't able to switch back * reduce debug messages * fixed UI bug related to tooltips * load js in controller * upps.. * some UI adjustments * corrected permissions * if user gets delete we need to remove data in club_permissions and also api keys which were created by this user * Notify members about new memberships or changes in permission level * add spinner to save button * make login/logout process more bulletproof * remove the relogin cookie after the attempt * better strategy * bug where switch back failed if user is no admin * make api keys more secure * mask not owned api keys * removed annoying link * if a user gets removed from a club we also should delete the corresponding api keys and cat radios * adjusted wiki link * Auto creation of logbook and location when new user is created * store and display locator in uppercase * same for callsign * fixed a bug in user/club creation * Revert "Auto creation of logbook and location when new user is created" We found another solution to which will be addressed in a second PR This reverts commit f05f4b7bf0423a88abf0087ade81fe613d217794. * Optimized SQL for stats at userlist * Source query for lastop "out", because mysql<9.0 can't handle Windowed functions * adjust migration * add new columns to users table to get created_at and modified_at * added a partial down function * add operator dropdown for clubstations * fix mig version * Add some backend restrictions in case a user wants to try something funny with the club --------- Co-authored-by: Andreas Kristiansen <6977712+AndreasK79@users.noreply.github.com> Co-authored-by: int2001 <joerg@dj7nt.de>
2025-01-02 10:22:23 +01:00
<?php if (clubaccess_check(99)) { ?> <!-- Club Access Check -->
2023-10-24 22:54:17 +02:00
<div class="dropdown-divider"></div>
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item" href="<?php echo site_url('contesting?manual=0'); ?>" title="Live contest QSOs"><i class="fas fa-list"></i> <?= __("Live Contest Logging"); ?></a></li>
<div class="dropdown-divider"></div>
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item" href="<?php echo site_url('contesting?manual=1'); ?>" title="Post contest QSOs"><i class="fas fa-list"></i> <?= __("Post Contest Logging"); ?></a></li>
Clubstations for Wavelog (#1334) * feat[clubstations]: New DB structure * feat[clubstations]: Add clubstationstable in user managment * feat[clubstations]: Show last operator * feat[clubstations]: Better solution for last operator. tnx for the hint @int2001 * feat[clubstations]: New Club Model and Controller * feat[clubstations]: Add "Add User" and "Edit User" functionality * docs[clubstations]: move comment * feat[clubstations]: Add "Delete Member" functionality * feat[clubstations]: some enhancements and javascript * fix[clubstations]: Wrong message class for flashmessages * feat[clubstations]: Added Switch in the Header menu (not functional yet) * feat[clubstations]: clubswitch modal * fix[clubstations]: Load encryption library if not already loaded * fix[clubstations]: Prevent direct login attempts to clubstations and enhance impersonation authorization * fix[clubstations]: Typo * feat[clubstations]: Only show the operator dialog if there is something fishy * fix[user]: little UI bug * feat[impersonate]: Add source uid to session data * fix[impersonate]: logic adjustment * feat[clubstations]: Add manage button in header menu for club officers * fix[clubstations]: typo in permission level check * fix[clubstations]: Full rights for the admin * feat[impersonate]: Custom sessiondata * feat[impersonate]: Implement stop impersonation feature with modal confirmation; "the way back" * fix(modal): Fix bug where modal was hidden when mouse leaved the browser content * docs(config): Adjust config description for special callsigns and clubstations * feat(club): Add club access check helper * typo * fix[impersonation]: Better text * feat(club): Selectize for a efficient user search * feat(clubstations): Restrict clubstations based on users permission level part 1/x * adjustments for dev merge * Adjusted club right for the advanced logbook * feat[user]: Refactoring of the Action Buttons in the user table * fix[club_permissions]: normal button instead small one for club permissions * remove unnecessary line break in modal body * feat[clubstations]: Add Club Mode badge to the header * fix[clubstations]: fix maintenance mode * allow switch back on http * feat(simplefle): display operator input based on club_access * small UI adjustments * small UI adjustments * moved api page to a index.php file and added support for clubstations * removed unused stuff * typo * radios and api keys * missed one binding * fix qso view, even officers do just see their own radios in QSO logging * omit the need for a relogin to see the changes as an admin * Omit the need for relogin after club changes in general. It's a question of UX. It's better to accept a little higher DB load (if clubstations are enabled) then the need of an user to relogin. There is some room for improvement by changing user_model->get_by_id() and adding a join there. This can be done later if we see that the load is too high * If the user is not the creator of the API key, it's likely a clubstation. In this case the callsign of the clubstation can not be the same as the callsign of the user (operator call provided by the user). If this is the case, we need to use the callsign of the creator of the API key * remove debug messages * better UI in header * found a typo * full access in clubstations for admins (if accessed via admin usertable) * adjusted text * adjusted text * adjust text * reduce required chars * bugfix: missing the correct authentication in case the admin was not member of the club. he wasn't able to switch back * reduce debug messages * fixed UI bug related to tooltips * load js in controller * upps.. * some UI adjustments * corrected permissions * if user gets delete we need to remove data in club_permissions and also api keys which were created by this user * Notify members about new memberships or changes in permission level * add spinner to save button * make login/logout process more bulletproof * remove the relogin cookie after the attempt * better strategy * bug where switch back failed if user is no admin * make api keys more secure * mask not owned api keys * removed annoying link * if a user gets removed from a club we also should delete the corresponding api keys and cat radios * adjusted wiki link * Auto creation of logbook and location when new user is created * store and display locator in uppercase * same for callsign * fixed a bug in user/club creation * Revert "Auto creation of logbook and location when new user is created" We found another solution to which will be addressed in a second PR This reverts commit f05f4b7bf0423a88abf0087ade81fe613d217794. * Optimized SQL for stats at userlist * Source query for lastop "out", because mysql<9.0 can't handle Windowed functions * adjust migration * add new columns to users table to get created_at and modified_at * added a partial down function * add operator dropdown for clubstations * fix mig version * Add some backend restrictions in case a user wants to try something funny with the club --------- Co-authored-by: Andreas Kristiansen <6977712+AndreasK79@users.noreply.github.com> Co-authored-by: int2001 <joerg@dj7nt.de>
2025-01-02 10:22:23 +01:00
<?php } ?>
</ul>
</li>
<?php if ($this->session->userdata('user_show_notes') == 1) { ?><!-- NOTES -->
2024-06-06 20:23:19 +02:00
<a class="nav-link" href="<?php echo site_url('notes'); ?>"><?= __("Notes"); ?></a>
<?php } ?>
<li class="nav-item dropdown"> <!-- ANALYTICS -->
2024-06-06 20:23:19 +02:00
<a class="nav-link dropdown-toggle" data-bs-toggle="dropdown" href="#"><?= __("Analytics"); ?></a>
<ul class="dropdown-menu header-dropdown">
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item" href="<?php echo site_url('statistics'); ?>" title="Statistics"><i class="fas fa-chart-area"></i> <?= __("Statistics"); ?></a></li>
<div class="dropdown-divider"></div>
2024-11-25 00:05:28 +01:00
<li><a class="dropdown-item" href="<?php echo site_url('statistics/antennaanalytics'); ?>" title="Antenna Analytics"><i class="fas fa-chart-area"></i> <?= __("Antenna Analytics"); ?></a></li>
<div class="dropdown-divider"></div>
<li><a class="dropdown-item" href="<?php echo site_url('statistics/qslstats'); ?>" title="QSL Statistics"><i class="fas fa-chart-area"></i> <?= __("QSL Statistics"); ?></a></li>
<div class="dropdown-divider"></div>
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item" href="<?php echo site_url('gridmap'); ?>" title="Gridmap"><i class="fas fa-globe-europe"></i> <?= __("Gridsquare Map"); ?></a></li>
<div class="dropdown-divider"></div>
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item" href="<?php echo site_url('activated_gridmap'); ?>" title="Activated Gridsquares"><i class="fas fa-globe-europe"></i> <?= __("Activated Gridsquares"); ?></a></li>
<div class="dropdown-divider"></div>
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item" href="<?php echo site_url('activators'); ?>" title="Gridsquare Activators"><i class="fas fa-globe-europe"></i> <?= __("Gridsquare Activators"); ?></a></li>
<div class="dropdown-divider"></div>
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item" href="<?php echo site_url('distances'); ?>" title="Distances"><i class="fas fa-chart-area"></i> <?= __("Distances Worked"); ?></a></li>
<div class="dropdown-divider"></div>
2024-09-02 10:18:22 +02:00
<li><a class="dropdown-item" href="<?php echo site_url('distancerecords'); ?>" title="Satellite Distance records"><i class="fas fa-chart-area"></i> <?= __("Satellite Distance Records"); ?></a></li>
2024-08-29 17:14:45 +02:00
<div class="dropdown-divider"></div>
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item" href="<?php echo site_url('dayswithqso'); ?>" title="Days with QSOs"><i class="fas fa-chart-area"></i> <?= __("Days with QSOs"); ?></a></li>
<div class="dropdown-divider"></div>
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item" href="<?php echo site_url('timeline'); ?>" title="Timeline"><i class="fas fa-chart-area"></i> <?= __("Timeline"); ?></a></li>
<div class="dropdown-divider"></div>
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item" href="<?php echo site_url('accumulated'); ?>" title="Accumulated Statistics"><i class="fas fa-chart-area"></i> <?= __("Accumulated Statistics"); ?></a></li>
<div class="dropdown-divider"></div>
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item" href="<?php echo site_url('timeplotter'); ?>" title="View time when worked"><i class="fas fa-chart-area"></i> <?= __("Timeplotter"); ?></a></li>
<div class="dropdown-divider"></div>
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item" href="<?php echo site_url('continents'); ?>" title="Continents"><i class="fas fa-globe-europe"></i> <?= __("Continents"); ?></a></li>
</ul>
</li>
<li class="nav-item dropdown"> <!-- AWARDS -->
2024-06-06 20:23:19 +02:00
<a class="nav-link dropdown-toggle" data-bs-toggle="dropdown" href="#"><?= __("Awards"); ?></a>
<ul class="dropdown-menu header-dropdown">
2024-06-07 14:58:23 +02:00
<li><a class="dropdown-item dropdown-toggle" data-bs-toggle="dropdown" href="#"><i class="fas fa-globe"></i> <?= __("International"); ?></a>
2024-05-03 14:28:01 +02:00
<ul class="submenu dropdown-menu">
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item" href="<?php echo site_url('awards/cq'); ?>"><i class="fas fa-trophy"></i> <?= __("CQ"); ?></a></li>
2024-05-03 14:28:01 +02:00
<div class="dropdown-divider"></div>
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item" href="<?php echo site_url('awards/dxcc'); ?>"><i class="fas fa-trophy"></i> <?= __("DXCC"); ?></a></li>
2024-05-03 14:28:01 +02:00
<div class="dropdown-divider"></div>
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item" href="<?php echo site_url('awards/itu'); ?>"><i class="fas fa-trophy"></i> <?= __("ITU"); ?></a></li>
2024-05-03 14:28:01 +02:00
<div class="dropdown-divider"></div>
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item" href="<?php echo site_url('awards/sig'); ?>"><i class="fas fa-trophy"></i> <?= __("SIG"); ?></a></li>
2024-05-03 14:28:01 +02:00
<div class="dropdown-divider"></div>
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item" href="<?php echo site_url('awards/vucc'); ?>"><i class="fas fa-trophy"></i> <?= __("VUCC"); ?></a></li>
2024-05-03 14:28:01 +02:00
<div class="dropdown-divider"></div>
<li><a class="dropdown-item" href="<?php echo site_url('awards/wae'); ?>"><i class="fas fa-trophy"></i> <?= __("Worked All Europe (WAE)"); ?></a></li>
<div class="dropdown-divider"></div>
2024-09-06 11:24:03 +02:00
<li><a class="dropdown-item" href="<?php echo site_url('awards/wac'); ?>"><i class="fas fa-trophy"></i> <?= __("Worked All Continents (WAC)"); ?></a></li>
<div class="dropdown-divider"></div>
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item" href="<?php echo site_url('awards/wwff'); ?>"><i class="fas fa-trophy"></i> <?= __("WWFF"); ?></a></li>
2024-05-03 14:28:01 +02:00
</ul>
</li>
2023-10-20 13:27:44 +02:00
<div class="dropdown-divider"></div>
2024-05-02 22:18:41 +02:00
<li><a class="dropdown-item dropdown-toggle" data-bs-toggle="dropdown" href="#"><i class="fas fa-trophy"></i> xOTA</a>
<ul class="submenu dropdown-menu">
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item" href="<?php echo site_url('awards/sota'); ?>"><i class="fas fa-trophy"></i> <?= __("SOTA"); ?></a></li>
2023-12-12 21:22:46 +01:00
<div class="dropdown-divider"></div>
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item" href="<?php echo site_url('awards/iota'); ?>"><i class="fas fa-trophy"></i> <?= __("IOTA"); ?></a></li>
2023-12-10 00:54:11 +01:00
<div class="dropdown-divider"></div>
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item" href="<?php echo site_url('awards/pota'); ?>"><i class="fas fa-trophy"></i> <?= __("POTA"); ?></a></li>
2023-12-10 00:54:11 +01:00
</ul>
</li>
<div class="dropdown-divider"></div>
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item dropdown-toggle" data-bs-toggle="dropdown" href="#">🇨🇦 <?= __("Canada"); ?></a>
2024-05-02 22:18:41 +02:00
<ul class="submenu dropdown-menu">
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item" href="<?php echo site_url('awards/rac'); ?>"><i class="fas fa-trophy"></i> <?= __("RAC"); ?></a></li>
2024-05-02 22:18:41 +02:00
</ul>
</li>
<div class="dropdown-divider"></div>
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item dropdown-toggle" data-bs-toggle="dropdown" href="#">🇩🇪 <?= __("Germany"); ?></a>
2024-05-02 22:18:41 +02:00
<ul class="submenu dropdown-menu">
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item" href="<?php echo site_url('awards/dok'); ?>"><i class="fas fa-trophy"></i> <?= __("DOK"); ?></a></li>
2024-05-02 22:18:41 +02:00
<div class="dropdown-divider"></div>
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item" href="<?php echo site_url('awards/gridmaster/dl'); ?>"><i class="fas fa-trophy"></i> <?= __("DL Gridmaster"); ?></a></li>
2024-05-02 22:18:41 +02:00
</ul>
</li>
<div class="dropdown-divider"></div>
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item dropdown-toggle" data-bs-toggle="dropdown" href="#">🇬🇧 <?= __("Great Britain"); ?></a>
2024-05-02 22:18:41 +02:00
<ul class="submenu dropdown-menu">
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item" href="<?php echo site_url('awards/wab'); ?>"><i class="fas fa-trophy"></i> <?= __("WAB"); ?></a></li>
2024-05-02 22:18:41 +02:00
</ul>
</li>
<div class="dropdown-divider"></div>
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item dropdown-toggle" data-bs-toggle="dropdown" href="#">🇯🇵 <?= __("Japan"); ?></a>
2024-05-02 22:18:41 +02:00
<ul class="submenu dropdown-menu">
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item" href="<?php echo site_url('awards/waja'); ?>"><i class="fas fa-trophy"></i> <?= __("WAJA"); ?></a></li>
2024-05-02 22:18:41 +02:00
<div class="dropdown-divider"></div>
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item" href="<?php echo site_url('awards/jcc'); ?>"><i class="fas fa-trophy"></i> <?= __("JCC"); ?></a></li>
2024-05-02 22:18:41 +02:00
<div class="dropdown-divider"></div>
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item" href="<?php echo site_url('awards/gridmaster/ja'); ?>"><i class="fas fa-trophy"></i> <?= __("JA Gridmaster"); ?></a></li>
2024-05-02 22:18:41 +02:00
</ul>
</li>
2024-04-20 10:05:33 +02:00
<div class="dropdown-divider"></div>
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item dropdown-toggle" data-bs-toggle="dropdown" href="#">🇱🇺 <?= __("Luxemburg"); ?></a>
2024-05-02 22:18:41 +02:00
<ul class="submenu dropdown-menu">
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item" href="<?php echo site_url('awards/gridmaster/lx'); ?>"><i class="fas fa-trophy"></i> <?= __("LX Gridmaster"); ?></a></li>
2024-05-02 22:18:41 +02:00
</ul>
</li>
2023-11-29 20:16:53 +01:00
<div class="dropdown-divider"></div>
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item dropdown-toggle" data-bs-toggle="dropdown" href="#">🇨🇭 <?= __("Switzerland"); ?></a>
2024-05-02 22:18:41 +02:00
<ul class="submenu dropdown-menu">
<li><a class="dropdown-item" href="<?php echo site_url('awards/helvetia'); ?>"><i class="fas fa-trophy"></i> H26</a></li>
</ul>
</li>
<div class="dropdown-divider"></div>
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item dropdown-toggle" data-bs-toggle="dropdown" href="#">🇺🇸 <?= __("USA"); ?></a>
2024-05-02 22:18:41 +02:00
<ul class="submenu dropdown-menu">
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item" href="<?php echo site_url('awards/counties'); ?>"><i class="fas fa-trophy"></i> <?= __("US Counties"); ?></a></li>
2024-05-02 22:18:41 +02:00
<div class="dropdown-divider"></div>
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item" href="<?php echo site_url('awards/was'); ?>"><i class="fas fa-trophy"></i> <?= __("WAS"); ?></a></li>
2024-05-02 22:18:41 +02:00
<div class="dropdown-divider"></div>
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item" href="<?php echo site_url('awards/gridmaster/us'); ?>"><i class="fas fa-trophy"></i> <?= __("US Gridmaster"); ?></a></li>
2024-05-03 14:28:01 +02:00
<div class="dropdown-divider"></div>
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item" href="<?php echo site_url('awards/ffma'); ?>"><i class="fas fa-trophy"></i> <?= __("Fred Fish Memorial Award"); ?></a></li>
2024-05-02 22:18:41 +02:00
</ul>
</li>
</ul>
</li>
<li class="nav-item dropdown"> <!-- TOOLS -->
2024-06-06 20:23:19 +02:00
<a class="nav-link dropdown-toggle" data-bs-toggle="dropdown" href="#"><?= __("Tools"); ?></a>
<ul class="dropdown-menu header-dropdown">
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item" href="<?php echo site_url('dxcalendar'); ?>" title="DX Calendar"><i class="fas fa-calendar"></i> <?= __("DX Calendar"); ?></a></li>
2024-02-17 08:52:01 +01:00
<div class="dropdown-divider"></div>
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item" href="<?php echo site_url('contestcalendar'); ?>" title="Contest Calendar"><i class="fas fa-calendar"></i> <?= __("Contest Calendar"); ?></a></li>
2024-02-17 08:52:01 +01:00
<div class="dropdown-divider"></div>
<li><a class="dropdown-item" href="<?php echo site_url('hamsat'); ?>" title="Hams.at"><i class="fas fa-list"></i> Hams.at</a></li>
2024-03-03 14:52:20 +01:00
<div class="dropdown-divider"></div>
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item" href="<?php echo site_url('bandmap/list'); ?>" title="Bandmap"><i class="fa fa-id-card"></i> <?= __("Bandmap"); ?></a></li>
2023-11-04 21:15:36 +01:00
<div class="dropdown-divider"></div>
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item" href="<?php echo site_url('sattimers'); ?>" title="SAT Timers"><i class="fas fa-satellite"></i> <?= __("SAT Timers"); ?></a></li>
2025-01-17 13:59:40 +01:00
<div class="dropdown-divider"></div>
<li><a class="dropdown-item" href="<?php echo site_url('satellite/flightpath'); ?>" title="Show Satellite Flight Path"><i class="fas fa-satellite"></i> <?= __("Satellite Flightpath"); ?></a></li>
<div class="dropdown-divider"></div>
<li><a class="dropdown-item" href="<?php echo site_url('satellite/pass'); ?>" title="Search for satellite passes"><i class="fas fa-satellite"></i> <?= __("Satellite Pass"); ?></a></li>
</ul>
</li>
<?php } ?>
<?php if (($this->config->item('use_auth')) && ($this->session->userdata('user_type') == 99)) { ?> <!-- ADMIN -->
<li class="nav-item dropdown">
2024-06-06 20:23:19 +02:00
<a class="nav-link dropdown-toggle" data-bs-toggle="dropdown" href="#" title="<?= __("Admin"); ?>"><i class="fas fa-users-cog"></i></a>
<div class="dropdown-menu header-dropdown">
2024-06-06 20:23:19 +02:00
<a class="dropdown-item" href="<?php echo site_url('user'); ?>" title="Manage user accounts"><i class="fas fa-user"></i> <?= __("User Accounts"); ?></a>
<div class="dropdown-divider"></div>
2024-06-06 20:23:19 +02:00
<a class="dropdown-item" href="<?php echo site_url('options'); ?>" title="Manage global options"><i class="fas fa-cog"></i> <?= __("Global Options"); ?></a>
<div class="dropdown-divider"></div>
2024-06-06 20:23:19 +02:00
<a class="dropdown-item" href="<?php echo site_url('mode'); ?>" title="Manage QSO modes"><i class="fas fa-broadcast-tower"></i> <?= __("Modes"); ?></a>
<div class="dropdown-divider"></div>
2024-06-06 20:23:19 +02:00
<a class="dropdown-item" href="<?php echo site_url('contesting/add'); ?>" title="Manage Contest names"><i class="fas fa-broadcast-tower"></i> <?= __("Contests"); ?></a>
<div class="dropdown-divider"></div>
2024-06-06 20:23:19 +02:00
<a class="dropdown-item" href="<?php echo site_url('satellite'); ?>" title="Manage Satellites"><i class="fas fa-satellite"></i> <?= __("Satellites"); ?></a>
<div class="dropdown-divider"></div>
2024-06-06 20:23:19 +02:00
<a class="dropdown-item" href="<?php echo site_url('themes'); ?>" title="Manage Themes"><i class="fas fa-cog"></i> <?= __("Themes"); ?></a>
<div class="dropdown-divider"></div>
2024-06-06 20:23:19 +02:00
<a class="dropdown-item" href="<?php echo site_url('backup'); ?>" title="Backup Wavelog content"><i class="fas fa-save"></i> <?= __("Backup"); ?></a>
<div class="dropdown-divider"></div>
2024-06-06 20:23:19 +02:00
<a class="dropdown-item" href="<?php echo site_url('update'); ?>" title="Update Country Files"><i class="fas fa-sync"></i> <?= __("Update Country Files"); ?></a>
<div class="dropdown-divider"></div>
2024-06-07 14:58:23 +02:00
<a class="dropdown-item" href="<?php echo site_url('cron'); ?>" title="Cron Manager"><i class="fas fa-clock"></i> <?= __("Cron Manager"); ?></a>
2024-04-22 14:24:04 +02:00
<div class="dropdown-divider"></div>
2024-06-06 20:23:19 +02:00
<a class="dropdown-item" href="<?php echo site_url('debug'); ?>" title="Debug Information"><i class="fas fa-tools"></i> <?= __("Debug Information"); ?></a>
</div>
</li>
<?php } ?>
</ul>
<ul class="navbar-nav navbar-nav-right">
<?php if ($this->session->userdata('user_quicklog') == 1) { ?> <!-- QUICKLOG/SEARCHBAR -->
<script>
function submitForm(action) {
var form = document.getElementById('quicklog-form');
var input = document.getElementById('quicklog-input');
if (action === 'search') {
form.action = "<?php echo site_url('search'); ?>";
form.method = "post";
}
form.submit();
}
function logQuicklog() {
if (localStorage.getItem("quicklogCallsign") !== "") {
localStorage.removeItem("quicklogCallsign");
}
localStorage.setItem("quicklogCallsign", $("input[name='callsign']").val());
window.open("<?php echo site_url('qso?manual=0'); ?>", "_self");
}
</script>
<?php if ($this->session->userdata('user_quicklog_enter') == 1) { ?>
<script>
function handleKeyPress(event) {
if (event.key === 'Enter') {
submitForm('search'); // Treat Enter key press as clicking the 'quicksearch-search' button
}
}
</script>
<?php } else { ?>
<script>
function handleKeyPress(event) {
if (event.key === 'Enter') {
logQuicklog(); // Treat Enter key press as clicking the 'quicksearch-log' button
}
}
</script>
<?php } ?>
<form id="quicklog-form" class="d-flex align-items-center me-3" onsubmit="return false;">
<div class="input-group">
2024-06-06 20:23:19 +02:00
<input class="form-control border" id="nav-bar-search-input" type="text" name="callsign" placeholder="<?= __("Add/Search Callsign"); ?>" aria-label="Quicklog" onkeypress="handleKeyPress(event)">
2024-06-06 20:23:19 +02:00
<button title="<?= __("Log"); ?>" class="btn btn-outline-success border" type="button" onclick="logQuicklog()"><i class="fas fa-plus"></i></button>
<button title="<?= __("Search"); ?>" class="btn btn-outline-success border" type="button" onclick="submitForm('search')"><i class="fas fa-search"></i></button>
</div>
</form>
<?php } else { ?>
<form id="searchbar-form" method="post" class="d-flex align-items-center me-2" action="<?php echo site_url('search'); ?>">
<div class="input-group">
2024-06-06 20:23:19 +02:00
<input class="form-control border" id="nav-bar-search-input" type="search" name="callsign" placeholder="<?= __("Search Callsign"); ?>" aria-label="Search">
<button title="<?= __("Search"); ?>" class="btn btn-outline-success border" type="submit"><i class="fas fa-search"></i></button>
</div>
</form>
<?php } ?>
<?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 me-sm-2" type="text" name="user_name" placeholder="Username" aria-label="Username">
<input class="form-control me-sm-2" type="password" name="user_password" placeholder="Password" aria-label="Password">
<input type="hidden" name="id" value="<?php echo $this->uri->segment(3); ?>" />
2024-06-06 20:23:19 +02:00
<button class="btn btn-outline-success me-sm-2" type="submit"><?= __("Login"); ?></button>
</form>
<?php } ?>
<?php if (($this->config->item('use_auth')) && ($this->session->userdata('user_type') >= 2)) { ?>
<!-- Logged in As -->
<li class="nav-item dropdown">
Clubstations for Wavelog (#1334) * feat[clubstations]: New DB structure * feat[clubstations]: Add clubstationstable in user managment * feat[clubstations]: Show last operator * feat[clubstations]: Better solution for last operator. tnx for the hint @int2001 * feat[clubstations]: New Club Model and Controller * feat[clubstations]: Add "Add User" and "Edit User" functionality * docs[clubstations]: move comment * feat[clubstations]: Add "Delete Member" functionality * feat[clubstations]: some enhancements and javascript * fix[clubstations]: Wrong message class for flashmessages * feat[clubstations]: Added Switch in the Header menu (not functional yet) * feat[clubstations]: clubswitch modal * fix[clubstations]: Load encryption library if not already loaded * fix[clubstations]: Prevent direct login attempts to clubstations and enhance impersonation authorization * fix[clubstations]: Typo * feat[clubstations]: Only show the operator dialog if there is something fishy * fix[user]: little UI bug * feat[impersonate]: Add source uid to session data * fix[impersonate]: logic adjustment * feat[clubstations]: Add manage button in header menu for club officers * fix[clubstations]: typo in permission level check * fix[clubstations]: Full rights for the admin * feat[impersonate]: Custom sessiondata * feat[impersonate]: Implement stop impersonation feature with modal confirmation; "the way back" * fix(modal): Fix bug where modal was hidden when mouse leaved the browser content * docs(config): Adjust config description for special callsigns and clubstations * feat(club): Add club access check helper * typo * fix[impersonation]: Better text * feat(club): Selectize for a efficient user search * feat(clubstations): Restrict clubstations based on users permission level part 1/x * adjustments for dev merge * Adjusted club right for the advanced logbook * feat[user]: Refactoring of the Action Buttons in the user table * fix[club_permissions]: normal button instead small one for club permissions * remove unnecessary line break in modal body * feat[clubstations]: Add Club Mode badge to the header * fix[clubstations]: fix maintenance mode * allow switch back on http * feat(simplefle): display operator input based on club_access * small UI adjustments * small UI adjustments * moved api page to a index.php file and added support for clubstations * removed unused stuff * typo * radios and api keys * missed one binding * fix qso view, even officers do just see their own radios in QSO logging * omit the need for a relogin to see the changes as an admin * Omit the need for relogin after club changes in general. It's a question of UX. It's better to accept a little higher DB load (if clubstations are enabled) then the need of an user to relogin. There is some room for improvement by changing user_model->get_by_id() and adding a join there. This can be done later if we see that the load is too high * If the user is not the creator of the API key, it's likely a clubstation. In this case the callsign of the clubstation can not be the same as the callsign of the user (operator call provided by the user). If this is the case, we need to use the callsign of the creator of the API key * remove debug messages * better UI in header * found a typo * full access in clubstations for admins (if accessed via admin usertable) * adjusted text * adjusted text * adjust text * reduce required chars * bugfix: missing the correct authentication in case the admin was not member of the club. he wasn't able to switch back * reduce debug messages * fixed UI bug related to tooltips * load js in controller * upps.. * some UI adjustments * corrected permissions * if user gets delete we need to remove data in club_permissions and also api keys which were created by this user * Notify members about new memberships or changes in permission level * add spinner to save button * make login/logout process more bulletproof * remove the relogin cookie after the attempt * better strategy * bug where switch back failed if user is no admin * make api keys more secure * mask not owned api keys * removed annoying link * if a user gets removed from a club we also should delete the corresponding api keys and cat radios * adjusted wiki link * Auto creation of logbook and location when new user is created * store and display locator in uppercase * same for callsign * fixed a bug in user/club creation * Revert "Auto creation of logbook and location when new user is created" We found another solution to which will be addressed in a second PR This reverts commit f05f4b7bf0423a88abf0087ade81fe613d217794. * Optimized SQL for stats at userlist * Source query for lastop "out", because mysql<9.0 can't handle Windowed functions * adjust migration * add new columns to users table to get created_at and modified_at * added a partial down function * add operator dropdown for clubstations * fix mig version * Add some backend restrictions in case a user wants to try something funny with the club --------- Co-authored-by: Andreas Kristiansen <6977712+AndreasK79@users.noreply.github.com> Co-authored-by: int2001 <joerg@dj7nt.de>
2025-01-02 10:22:23 +01:00
<a class="nav-link dropdown-toggle" data-bs-toggle="dropdown" href="#">
<?php if ($this->session->userdata('clubstation') == 1) {
echo '<i class="fas fa-users"></i> '
. '<b>' . str_replace("0","&Oslash;", strtoupper($this->session->userdata('user_callsign'))) . '</b>'
. ' <br><small>'
. sprintf(_pgettext("Operator: Callsign", "Op: %s"), str_replace("0","&Oslash;", strtoupper($this->session->userdata('operator_callsign'))))
. '</small>';
} else {
echo '<i class="fas fa-user"></i> ' . str_replace("0","&Oslash;", strtoupper($this->session->userdata('user_callsign')));
} ?>
</a>
<ul class="dropdown-menu dropdown-menu-right header-dropdown">
Clubstations for Wavelog (#1334) * feat[clubstations]: New DB structure * feat[clubstations]: Add clubstationstable in user managment * feat[clubstations]: Show last operator * feat[clubstations]: Better solution for last operator. tnx for the hint @int2001 * feat[clubstations]: New Club Model and Controller * feat[clubstations]: Add "Add User" and "Edit User" functionality * docs[clubstations]: move comment * feat[clubstations]: Add "Delete Member" functionality * feat[clubstations]: some enhancements and javascript * fix[clubstations]: Wrong message class for flashmessages * feat[clubstations]: Added Switch in the Header menu (not functional yet) * feat[clubstations]: clubswitch modal * fix[clubstations]: Load encryption library if not already loaded * fix[clubstations]: Prevent direct login attempts to clubstations and enhance impersonation authorization * fix[clubstations]: Typo * feat[clubstations]: Only show the operator dialog if there is something fishy * fix[user]: little UI bug * feat[impersonate]: Add source uid to session data * fix[impersonate]: logic adjustment * feat[clubstations]: Add manage button in header menu for club officers * fix[clubstations]: typo in permission level check * fix[clubstations]: Full rights for the admin * feat[impersonate]: Custom sessiondata * feat[impersonate]: Implement stop impersonation feature with modal confirmation; "the way back" * fix(modal): Fix bug where modal was hidden when mouse leaved the browser content * docs(config): Adjust config description for special callsigns and clubstations * feat(club): Add club access check helper * typo * fix[impersonation]: Better text * feat(club): Selectize for a efficient user search * feat(clubstations): Restrict clubstations based on users permission level part 1/x * adjustments for dev merge * Adjusted club right for the advanced logbook * feat[user]: Refactoring of the Action Buttons in the user table * fix[club_permissions]: normal button instead small one for club permissions * remove unnecessary line break in modal body * feat[clubstations]: Add Club Mode badge to the header * fix[clubstations]: fix maintenance mode * allow switch back on http * feat(simplefle): display operator input based on club_access * small UI adjustments * small UI adjustments * moved api page to a index.php file and added support for clubstations * removed unused stuff * typo * radios and api keys * missed one binding * fix qso view, even officers do just see their own radios in QSO logging * omit the need for a relogin to see the changes as an admin * Omit the need for relogin after club changes in general. It's a question of UX. It's better to accept a little higher DB load (if clubstations are enabled) then the need of an user to relogin. There is some room for improvement by changing user_model->get_by_id() and adding a join there. This can be done later if we see that the load is too high * If the user is not the creator of the API key, it's likely a clubstation. In this case the callsign of the clubstation can not be the same as the callsign of the user (operator call provided by the user). If this is the case, we need to use the callsign of the creator of the API key * remove debug messages * better UI in header * found a typo * full access in clubstations for admins (if accessed via admin usertable) * adjusted text * adjusted text * adjust text * reduce required chars * bugfix: missing the correct authentication in case the admin was not member of the club. he wasn't able to switch back * reduce debug messages * fixed UI bug related to tooltips * load js in controller * upps.. * some UI adjustments * corrected permissions * if user gets delete we need to remove data in club_permissions and also api keys which were created by this user * Notify members about new memberships or changes in permission level * add spinner to save button * make login/logout process more bulletproof * remove the relogin cookie after the attempt * better strategy * bug where switch back failed if user is no admin * make api keys more secure * mask not owned api keys * removed annoying link * if a user gets removed from a club we also should delete the corresponding api keys and cat radios * adjusted wiki link * Auto creation of logbook and location when new user is created * store and display locator in uppercase * same for callsign * fixed a bug in user/club creation * Revert "Auto creation of logbook and location when new user is created" We found another solution to which will be addressed in a second PR This reverts commit f05f4b7bf0423a88abf0087ade81fe613d217794. * Optimized SQL for stats at userlist * Source query for lastop "out", because mysql<9.0 can't handle Windowed functions * adjust migration * add new columns to users table to get created_at and modified_at * added a partial down function * add operator dropdown for clubstations * fix mig version * Add some backend restrictions in case a user wants to try something funny with the club --------- Co-authored-by: Andreas Kristiansen <6977712+AndreasK79@users.noreply.github.com> Co-authored-by: int2001 <joerg@dj7nt.de>
2025-01-02 10:22:23 +01:00
<?php if (clubaccess_check(9)) { ?> <!-- Club Access Check -->
2024-06-26 00:46:25 +02:00
<li><a class="dropdown-item" href="<?php echo site_url('user/edit') . "/" . $this->session->userdata('user_id'); ?>" title="Account"><i class="fas fa-user"></i> <?= __("Account"); ?></a></li>
2024-02-09 11:05:28 +01:00
<?php
$quickswitch_enabled = ($this->user_options_model->get_options('header_menu', array('option_name' => 'locations_quickswitch'))->row()->option_value ?? 'false');
2024-02-14 11:04:34 +01:00
if ($quickswitch_enabled != 'true') {
2024-02-09 11:05:28 +01:00
?>
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item" href="<?php echo site_url('stationsetup'); ?>" title="Manage station setup"><i class="fas fa-home"></i> <?= __("Station Setup"); ?></a></li>
2024-02-09 11:05:28 +01:00
<?php } ?>
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item" href="<?php echo site_url('band'); ?>" title="Manage Bands"><i class="fas fa-cog"></i> <?= __("Bands"); ?></a></li>
Clubstations for Wavelog (#1334) * feat[clubstations]: New DB structure * feat[clubstations]: Add clubstationstable in user managment * feat[clubstations]: Show last operator * feat[clubstations]: Better solution for last operator. tnx for the hint @int2001 * feat[clubstations]: New Club Model and Controller * feat[clubstations]: Add "Add User" and "Edit User" functionality * docs[clubstations]: move comment * feat[clubstations]: Add "Delete Member" functionality * feat[clubstations]: some enhancements and javascript * fix[clubstations]: Wrong message class for flashmessages * feat[clubstations]: Added Switch in the Header menu (not functional yet) * feat[clubstations]: clubswitch modal * fix[clubstations]: Load encryption library if not already loaded * fix[clubstations]: Prevent direct login attempts to clubstations and enhance impersonation authorization * fix[clubstations]: Typo * feat[clubstations]: Only show the operator dialog if there is something fishy * fix[user]: little UI bug * feat[impersonate]: Add source uid to session data * fix[impersonate]: logic adjustment * feat[clubstations]: Add manage button in header menu for club officers * fix[clubstations]: typo in permission level check * fix[clubstations]: Full rights for the admin * feat[impersonate]: Custom sessiondata * feat[impersonate]: Implement stop impersonation feature with modal confirmation; "the way back" * fix(modal): Fix bug where modal was hidden when mouse leaved the browser content * docs(config): Adjust config description for special callsigns and clubstations * feat(club): Add club access check helper * typo * fix[impersonation]: Better text * feat(club): Selectize for a efficient user search * feat(clubstations): Restrict clubstations based on users permission level part 1/x * adjustments for dev merge * Adjusted club right for the advanced logbook * feat[user]: Refactoring of the Action Buttons in the user table * fix[club_permissions]: normal button instead small one for club permissions * remove unnecessary line break in modal body * feat[clubstations]: Add Club Mode badge to the header * fix[clubstations]: fix maintenance mode * allow switch back on http * feat(simplefle): display operator input based on club_access * small UI adjustments * small UI adjustments * moved api page to a index.php file and added support for clubstations * removed unused stuff * typo * radios and api keys * missed one binding * fix qso view, even officers do just see their own radios in QSO logging * omit the need for a relogin to see the changes as an admin * Omit the need for relogin after club changes in general. It's a question of UX. It's better to accept a little higher DB load (if clubstations are enabled) then the need of an user to relogin. There is some room for improvement by changing user_model->get_by_id() and adding a join there. This can be done later if we see that the load is too high * If the user is not the creator of the API key, it's likely a clubstation. In this case the callsign of the clubstation can not be the same as the callsign of the user (operator call provided by the user). If this is the case, we need to use the callsign of the creator of the API key * remove debug messages * better UI in header * found a typo * full access in clubstations for admins (if accessed via admin usertable) * adjusted text * adjusted text * adjust text * reduce required chars * bugfix: missing the correct authentication in case the admin was not member of the club. he wasn't able to switch back * reduce debug messages * fixed UI bug related to tooltips * load js in controller * upps.. * some UI adjustments * corrected permissions * if user gets delete we need to remove data in club_permissions and also api keys which were created by this user * Notify members about new memberships or changes in permission level * add spinner to save button * make login/logout process more bulletproof * remove the relogin cookie after the attempt * better strategy * bug where switch back failed if user is no admin * make api keys more secure * mask not owned api keys * removed annoying link * if a user gets removed from a club we also should delete the corresponding api keys and cat radios * adjusted wiki link * Auto creation of logbook and location when new user is created * store and display locator in uppercase * same for callsign * fixed a bug in user/club creation * Revert "Auto creation of logbook and location when new user is created" We found another solution to which will be addressed in a second PR This reverts commit f05f4b7bf0423a88abf0087ade81fe613d217794. * Optimized SQL for stats at userlist * Source query for lastop "out", because mysql<9.0 can't handle Windowed functions * adjust migration * add new columns to users table to get created_at and modified_at * added a partial down function * add operator dropdown for clubstations * fix mig version * Add some backend restrictions in case a user wants to try something funny with the club --------- Co-authored-by: Andreas Kristiansen <6977712+AndreasK79@users.noreply.github.com> Co-authored-by: int2001 <joerg@dj7nt.de>
2025-01-02 10:22:23 +01:00
<?php if ($this->config->item('special_callsign') && $this->session->userdata('clubstation') == 0) { ?>
<?php if (!empty($this->session->userdata('available_clubstations'))) { ?>
2025-01-07 05:57:36 +01:00
<div class="dropdown-divider"></div>
Clubstations for Wavelog (#1334) * feat[clubstations]: New DB structure * feat[clubstations]: Add clubstationstable in user managment * feat[clubstations]: Show last operator * feat[clubstations]: Better solution for last operator. tnx for the hint @int2001 * feat[clubstations]: New Club Model and Controller * feat[clubstations]: Add "Add User" and "Edit User" functionality * docs[clubstations]: move comment * feat[clubstations]: Add "Delete Member" functionality * feat[clubstations]: some enhancements and javascript * fix[clubstations]: Wrong message class for flashmessages * feat[clubstations]: Added Switch in the Header menu (not functional yet) * feat[clubstations]: clubswitch modal * fix[clubstations]: Load encryption library if not already loaded * fix[clubstations]: Prevent direct login attempts to clubstations and enhance impersonation authorization * fix[clubstations]: Typo * feat[clubstations]: Only show the operator dialog if there is something fishy * fix[user]: little UI bug * feat[impersonate]: Add source uid to session data * fix[impersonate]: logic adjustment * feat[clubstations]: Add manage button in header menu for club officers * fix[clubstations]: typo in permission level check * fix[clubstations]: Full rights for the admin * feat[impersonate]: Custom sessiondata * feat[impersonate]: Implement stop impersonation feature with modal confirmation; "the way back" * fix(modal): Fix bug where modal was hidden when mouse leaved the browser content * docs(config): Adjust config description for special callsigns and clubstations * feat(club): Add club access check helper * typo * fix[impersonation]: Better text * feat(club): Selectize for a efficient user search * feat(clubstations): Restrict clubstations based on users permission level part 1/x * adjustments for dev merge * Adjusted club right for the advanced logbook * feat[user]: Refactoring of the Action Buttons in the user table * fix[club_permissions]: normal button instead small one for club permissions * remove unnecessary line break in modal body * feat[clubstations]: Add Club Mode badge to the header * fix[clubstations]: fix maintenance mode * allow switch back on http * feat(simplefle): display operator input based on club_access * small UI adjustments * small UI adjustments * moved api page to a index.php file and added support for clubstations * removed unused stuff * typo * radios and api keys * missed one binding * fix qso view, even officers do just see their own radios in QSO logging * omit the need for a relogin to see the changes as an admin * Omit the need for relogin after club changes in general. It's a question of UX. It's better to accept a little higher DB load (if clubstations are enabled) then the need of an user to relogin. There is some room for improvement by changing user_model->get_by_id() and adding a join there. This can be done later if we see that the load is too high * If the user is not the creator of the API key, it's likely a clubstation. In this case the callsign of the clubstation can not be the same as the callsign of the user (operator call provided by the user). If this is the case, we need to use the callsign of the creator of the API key * remove debug messages * better UI in header * found a typo * full access in clubstations for admins (if accessed via admin usertable) * adjusted text * adjusted text * adjust text * reduce required chars * bugfix: missing the correct authentication in case the admin was not member of the club. he wasn't able to switch back * reduce debug messages * fixed UI bug related to tooltips * load js in controller * upps.. * some UI adjustments * corrected permissions * if user gets delete we need to remove data in club_permissions and also api keys which were created by this user * Notify members about new memberships or changes in permission level * add spinner to save button * make login/logout process more bulletproof * remove the relogin cookie after the attempt * better strategy * bug where switch back failed if user is no admin * make api keys more secure * mask not owned api keys * removed annoying link * if a user gets removed from a club we also should delete the corresponding api keys and cat radios * adjusted wiki link * Auto creation of logbook and location when new user is created * store and display locator in uppercase * same for callsign * fixed a bug in user/club creation * Revert "Auto creation of logbook and location when new user is created" We found another solution to which will be addressed in a second PR This reverts commit f05f4b7bf0423a88abf0087ade81fe613d217794. * Optimized SQL for stats at userlist * Source query for lastop "out", because mysql<9.0 can't handle Windowed functions * adjust migration * add new columns to users table to get created_at and modified_at * added a partial down function * add operator dropdown for clubstations * fix mig version * Add some backend restrictions in case a user wants to try something funny with the club --------- Co-authored-by: Andreas Kristiansen <6977712+AndreasK79@users.noreply.github.com> Co-authored-by: int2001 <joerg@dj7nt.de>
2025-01-02 10:22:23 +01:00
<li><a class="dropdown-item disabled"><?= __("Switch to Clubstation:"); ?></a></li>
<?php foreach ($this->session->userdata('available_clubstations') as $clubstation) { ?>
<li>
<div class="btn-group w-100" role="group">
<button class="dropdown-item text-start" style="flex: 1;" title="<?= sprintf(__("Switch to %s"), $clubstation->user_callsign); ?>" onclick="clubswitch_modal('<?php echo $clubstation->user_id; ?>', '<?php echo $clubstation->user_callsign; ?>')">
<i class="fas fa-exchange-alt"></i> <?php echo $clubstation->user_callsign; ?>
</button>
<?php if ($clubstation->p_level >= 9 || $this->session->userdata('user_type') == 99) { ?>
<a class="dropdown-item text-end" style="flex: 0 0 50px;" title="<?= sprintf(_pgettext("Managing a Club Callsign", "Manage %s"), $clubstation->user_callsign); ?>" href="<?php echo site_url('club/permissions/' . $clubstation->user_id); ?>">
<i class="fas fa-cogs"></i>
</a>
<?php } ?>
</div>
</li>
<?php } ?>
2025-01-07 05:57:36 +01:00
<?php } else if ($this->session->userdata('user_type') === '99') { ?>
<div class="dropdown-divider"></div>
Clubstations for Wavelog (#1334) * feat[clubstations]: New DB structure * feat[clubstations]: Add clubstationstable in user managment * feat[clubstations]: Show last operator * feat[clubstations]: Better solution for last operator. tnx for the hint @int2001 * feat[clubstations]: New Club Model and Controller * feat[clubstations]: Add "Add User" and "Edit User" functionality * docs[clubstations]: move comment * feat[clubstations]: Add "Delete Member" functionality * feat[clubstations]: some enhancements and javascript * fix[clubstations]: Wrong message class for flashmessages * feat[clubstations]: Added Switch in the Header menu (not functional yet) * feat[clubstations]: clubswitch modal * fix[clubstations]: Load encryption library if not already loaded * fix[clubstations]: Prevent direct login attempts to clubstations and enhance impersonation authorization * fix[clubstations]: Typo * feat[clubstations]: Only show the operator dialog if there is something fishy * fix[user]: little UI bug * feat[impersonate]: Add source uid to session data * fix[impersonate]: logic adjustment * feat[clubstations]: Add manage button in header menu for club officers * fix[clubstations]: typo in permission level check * fix[clubstations]: Full rights for the admin * feat[impersonate]: Custom sessiondata * feat[impersonate]: Implement stop impersonation feature with modal confirmation; "the way back" * fix(modal): Fix bug where modal was hidden when mouse leaved the browser content * docs(config): Adjust config description for special callsigns and clubstations * feat(club): Add club access check helper * typo * fix[impersonation]: Better text * feat(club): Selectize for a efficient user search * feat(clubstations): Restrict clubstations based on users permission level part 1/x * adjustments for dev merge * Adjusted club right for the advanced logbook * feat[user]: Refactoring of the Action Buttons in the user table * fix[club_permissions]: normal button instead small one for club permissions * remove unnecessary line break in modal body * feat[clubstations]: Add Club Mode badge to the header * fix[clubstations]: fix maintenance mode * allow switch back on http * feat(simplefle): display operator input based on club_access * small UI adjustments * small UI adjustments * moved api page to a index.php file and added support for clubstations * removed unused stuff * typo * radios and api keys * missed one binding * fix qso view, even officers do just see their own radios in QSO logging * omit the need for a relogin to see the changes as an admin * Omit the need for relogin after club changes in general. It's a question of UX. It's better to accept a little higher DB load (if clubstations are enabled) then the need of an user to relogin. There is some room for improvement by changing user_model->get_by_id() and adding a join there. This can be done later if we see that the load is too high * If the user is not the creator of the API key, it's likely a clubstation. In this case the callsign of the clubstation can not be the same as the callsign of the user (operator call provided by the user). If this is the case, we need to use the callsign of the creator of the API key * remove debug messages * better UI in header * found a typo * full access in clubstations for admins (if accessed via admin usertable) * adjusted text * adjusted text * adjust text * reduce required chars * bugfix: missing the correct authentication in case the admin was not member of the club. he wasn't able to switch back * reduce debug messages * fixed UI bug related to tooltips * load js in controller * upps.. * some UI adjustments * corrected permissions * if user gets delete we need to remove data in club_permissions and also api keys which were created by this user * Notify members about new memberships or changes in permission level * add spinner to save button * make login/logout process more bulletproof * remove the relogin cookie after the attempt * better strategy * bug where switch back failed if user is no admin * make api keys more secure * mask not owned api keys * removed annoying link * if a user gets removed from a club we also should delete the corresponding api keys and cat radios * adjusted wiki link * Auto creation of logbook and location when new user is created * store and display locator in uppercase * same for callsign * fixed a bug in user/club creation * Revert "Auto creation of logbook and location when new user is created" We found another solution to which will be addressed in a second PR This reverts commit f05f4b7bf0423a88abf0087ade81fe613d217794. * Optimized SQL for stats at userlist * Source query for lastop "out", because mysql<9.0 can't handle Windowed functions * adjust migration * add new columns to users table to get created_at and modified_at * added a partial down function * add operator dropdown for clubstations * fix mig version * Add some backend restrictions in case a user wants to try something funny with the club --------- Co-authored-by: Andreas Kristiansen <6977712+AndreasK79@users.noreply.github.com> Co-authored-by: int2001 <joerg@dj7nt.de>
2025-01-02 10:22:23 +01:00
<li><a class="dropdown-item disabled"><?= __("No Clubstations available"); ?></a></li>
<?php } ?>
<?php } ?>
<div class="dropdown-divider"></div>
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item" href="<?php echo site_url('adif'); ?>" title="Amateur Data Interchange Format (ADIF) import / export"><i class="fas fa-sync"></i> <?= __("ADIF Import / Export"); ?></a></li>
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item dropdown-toggle" data-bs-toggle="dropdown"><i class="fas fa-sync"></i> <?= __("Other Export Options"); ?></a>
<ul class="submenu submenu-left dropdown-menu">
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item" href="<?php echo site_url('kmlexport'); ?>" title="KML Export for Google Earth"><i class="fas fa-sync"></i> <?= __("KML Export"); ?></a></li>
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item" href="<?php echo site_url('dxatlas'); ?>" title="DX Atlas Gridsquare Export"><i class="fas fa-sync"></i> <?= __("DX Atlas Gridsquare Export"); ?></a></li>
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item" href="<?php echo site_url('csv'); ?>" title="SOTA CSV Export"><i class="fas fa-sync"></i> <?= __("SOTA CSV Export"); ?></a></li>
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item" href="<?php echo site_url('cabrillo'); ?>" title="Cabrillo Export"><i class="fas fa-sync"></i> <?= __("Cabrillo Export"); ?></a></li>
2024-08-23 13:17:14 +02:00
<li><a class="dropdown-item" href="<?php echo site_url('reg1test'); ?>" title="EDI Export"><i class="fas fa-sync"></i> <?= __("EDI Export"); ?></a></li>
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item" href="<?php echo site_url('cfdexport'); ?>" title="CFD Export"><i class="fas fa-sync"></i> <?= __("CFD Export"); ?></a></li>
</ul>
</li>
<div class="dropdown-divider"></div>
<?php
2024-02-09 11:05:28 +01:00
$logbooks_locations_array = $this->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;
}
if (!($this->config->item('disable_oqrs') ?? false)) {
$oqrs_requests = $this->oqrs_model->oqrs_requests($location_list);
?>
<li><a class="dropdown-item" href="<?php echo site_url('oqrs/requests'); ?>" title="OQRS Requests"><i class="fa fa-id-card"></i> <?= __("OQRS Requests"); ?>
<?php if ($oqrs_requests > 0) {
echo "<span id=\"oqrs_requests\" class=\"badge text-bg-light\">" . $oqrs_requests . "</span>";
} ?></a></li>
<?php } ?>
<li><a class="dropdown-item" href="<?php echo site_url('qslprint'); ?>" title="<?= __("QSL Queue"); ?>"><i class="fas fa-print"></i> <?= __("QSL Queue"); ?></a></li>
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item" href="<?php echo site_url('labels'); ?>" title="Label setup"><i class="fas fa-print"></i> <?= __("Labels"); ?></a></li>
<div class="dropdown-divider"></div>
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item dropdown-toggle" data-bs-toggle="dropdown"><i class="fas fa-sync"></i> <?= __("Third-Party Services"); ?></a>
<ul class="submenu submenu-left dropdown-menu">
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item" href="<?php echo site_url('lotw'); ?>" title="Synchronise with Logbook of the World (LoTW)"><i class="fas fa-sync"></i> <?= __("Logbook of the World"); ?></a></li>
<li><a class="dropdown-item" href="<?php echo site_url('eqsl/import'); ?>" title="eQSL import / export"><i class="fas fa-sync"></i> <?= __("eQSL Import / Export"); ?></a></li>
<li><a class="dropdown-item" href="<?php echo site_url('hrdlog/export'); ?>" title="Upload to HRDLog.net logbook"><i class="fas fa-sync"></i> <?= __("HRDLog Logbook"); ?></a></li>
<li><a class="dropdown-item" href="<?php echo site_url('qrz/export'); ?>" title="Upload to QRZ.com logbook"><i class="fas fa-sync"></i> <?= __("QRZ Logbook"); ?></a></li>
<li><a class="dropdown-item" href="<?php echo site_url('webadif/export'); ?>" title="Upload to webADIF"><i class="fas fa-sync"></i> <?= __("QO-100 Dx Club Upload"); ?></a></li>
</ul>
</li>
<div class="dropdown-divider"></div>
Clubstations for Wavelog (#1334) * feat[clubstations]: New DB structure * feat[clubstations]: Add clubstationstable in user managment * feat[clubstations]: Show last operator * feat[clubstations]: Better solution for last operator. tnx for the hint @int2001 * feat[clubstations]: New Club Model and Controller * feat[clubstations]: Add "Add User" and "Edit User" functionality * docs[clubstations]: move comment * feat[clubstations]: Add "Delete Member" functionality * feat[clubstations]: some enhancements and javascript * fix[clubstations]: Wrong message class for flashmessages * feat[clubstations]: Added Switch in the Header menu (not functional yet) * feat[clubstations]: clubswitch modal * fix[clubstations]: Load encryption library if not already loaded * fix[clubstations]: Prevent direct login attempts to clubstations and enhance impersonation authorization * fix[clubstations]: Typo * feat[clubstations]: Only show the operator dialog if there is something fishy * fix[user]: little UI bug * feat[impersonate]: Add source uid to session data * fix[impersonate]: logic adjustment * feat[clubstations]: Add manage button in header menu for club officers * fix[clubstations]: typo in permission level check * fix[clubstations]: Full rights for the admin * feat[impersonate]: Custom sessiondata * feat[impersonate]: Implement stop impersonation feature with modal confirmation; "the way back" * fix(modal): Fix bug where modal was hidden when mouse leaved the browser content * docs(config): Adjust config description for special callsigns and clubstations * feat(club): Add club access check helper * typo * fix[impersonation]: Better text * feat(club): Selectize for a efficient user search * feat(clubstations): Restrict clubstations based on users permission level part 1/x * adjustments for dev merge * Adjusted club right for the advanced logbook * feat[user]: Refactoring of the Action Buttons in the user table * fix[club_permissions]: normal button instead small one for club permissions * remove unnecessary line break in modal body * feat[clubstations]: Add Club Mode badge to the header * fix[clubstations]: fix maintenance mode * allow switch back on http * feat(simplefle): display operator input based on club_access * small UI adjustments * small UI adjustments * moved api page to a index.php file and added support for clubstations * removed unused stuff * typo * radios and api keys * missed one binding * fix qso view, even officers do just see their own radios in QSO logging * omit the need for a relogin to see the changes as an admin * Omit the need for relogin after club changes in general. It's a question of UX. It's better to accept a little higher DB load (if clubstations are enabled) then the need of an user to relogin. There is some room for improvement by changing user_model->get_by_id() and adding a join there. This can be done later if we see that the load is too high * If the user is not the creator of the API key, it's likely a clubstation. In this case the callsign of the clubstation can not be the same as the callsign of the user (operator call provided by the user). If this is the case, we need to use the callsign of the creator of the API key * remove debug messages * better UI in header * found a typo * full access in clubstations for admins (if accessed via admin usertable) * adjusted text * adjusted text * adjust text * reduce required chars * bugfix: missing the correct authentication in case the admin was not member of the club. he wasn't able to switch back * reduce debug messages * fixed UI bug related to tooltips * load js in controller * upps.. * some UI adjustments * corrected permissions * if user gets delete we need to remove data in club_permissions and also api keys which were created by this user * Notify members about new memberships or changes in permission level * add spinner to save button * make login/logout process more bulletproof * remove the relogin cookie after the attempt * better strategy * bug where switch back failed if user is no admin * make api keys more secure * mask not owned api keys * removed annoying link * if a user gets removed from a club we also should delete the corresponding api keys and cat radios * adjusted wiki link * Auto creation of logbook and location when new user is created * store and display locator in uppercase * same for callsign * fixed a bug in user/club creation * Revert "Auto creation of logbook and location when new user is created" We found another solution to which will be addressed in a second PR This reverts commit f05f4b7bf0423a88abf0087ade81fe613d217794. * Optimized SQL for stats at userlist * Source query for lastop "out", because mysql<9.0 can't handle Windowed functions * adjust migration * add new columns to users table to get created_at and modified_at * added a partial down function * add operator dropdown for clubstations * fix mig version * Add some backend restrictions in case a user wants to try something funny with the club --------- Co-authored-by: Andreas Kristiansen <6977712+AndreasK79@users.noreply.github.com> Co-authored-by: int2001 <joerg@dj7nt.de>
2025-01-02 10:22:23 +01:00
<?php } ?> <!-- End of Clubaccess check -->
<li><a class="dropdown-item" href="<?php echo site_url('api'); ?>" title="Manage API keys"><i class="fas fa-key"></i> <?= __("API Keys"); ?></a></li>
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item" href="<?php echo site_url('radio'); ?>" title="Interface with one or more radios"><i class="fas fa-broadcast-tower"></i> <?= __("Hardware Interfaces"); ?></a></li>
<div class="dropdown-divider"></div>
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item" href="javascript:displayVersionDialog();" title="Version Information"><i class="fas fa-star"></i> <?= __("Version Info"); ?></a></li>
<li><a class="dropdown-item" target="_blank" href="https://github.com/wavelog/wavelog/wiki" title="Help"><i class="fas fa-question"></i> <?= __("Help"); ?></a></li>
<li><a class="dropdown-item" target="_blank" href="https://github.com/wavelog/wavelog/discussions" title="Forum"><i class="far fa-comment-dots"></i> <?= __("Forum"); ?></a></li>
<div class="dropdown-divider"></div>
Clubstations for Wavelog (#1334) * feat[clubstations]: New DB structure * feat[clubstations]: Add clubstationstable in user managment * feat[clubstations]: Show last operator * feat[clubstations]: Better solution for last operator. tnx for the hint @int2001 * feat[clubstations]: New Club Model and Controller * feat[clubstations]: Add "Add User" and "Edit User" functionality * docs[clubstations]: move comment * feat[clubstations]: Add "Delete Member" functionality * feat[clubstations]: some enhancements and javascript * fix[clubstations]: Wrong message class for flashmessages * feat[clubstations]: Added Switch in the Header menu (not functional yet) * feat[clubstations]: clubswitch modal * fix[clubstations]: Load encryption library if not already loaded * fix[clubstations]: Prevent direct login attempts to clubstations and enhance impersonation authorization * fix[clubstations]: Typo * feat[clubstations]: Only show the operator dialog if there is something fishy * fix[user]: little UI bug * feat[impersonate]: Add source uid to session data * fix[impersonate]: logic adjustment * feat[clubstations]: Add manage button in header menu for club officers * fix[clubstations]: typo in permission level check * fix[clubstations]: Full rights for the admin * feat[impersonate]: Custom sessiondata * feat[impersonate]: Implement stop impersonation feature with modal confirmation; "the way back" * fix(modal): Fix bug where modal was hidden when mouse leaved the browser content * docs(config): Adjust config description for special callsigns and clubstations * feat(club): Add club access check helper * typo * fix[impersonation]: Better text * feat(club): Selectize for a efficient user search * feat(clubstations): Restrict clubstations based on users permission level part 1/x * adjustments for dev merge * Adjusted club right for the advanced logbook * feat[user]: Refactoring of the Action Buttons in the user table * fix[club_permissions]: normal button instead small one for club permissions * remove unnecessary line break in modal body * feat[clubstations]: Add Club Mode badge to the header * fix[clubstations]: fix maintenance mode * allow switch back on http * feat(simplefle): display operator input based on club_access * small UI adjustments * small UI adjustments * moved api page to a index.php file and added support for clubstations * removed unused stuff * typo * radios and api keys * missed one binding * fix qso view, even officers do just see their own radios in QSO logging * omit the need for a relogin to see the changes as an admin * Omit the need for relogin after club changes in general. It's a question of UX. It's better to accept a little higher DB load (if clubstations are enabled) then the need of an user to relogin. There is some room for improvement by changing user_model->get_by_id() and adding a join there. This can be done later if we see that the load is too high * If the user is not the creator of the API key, it's likely a clubstation. In this case the callsign of the clubstation can not be the same as the callsign of the user (operator call provided by the user). If this is the case, we need to use the callsign of the creator of the API key * remove debug messages * better UI in header * found a typo * full access in clubstations for admins (if accessed via admin usertable) * adjusted text * adjusted text * adjust text * reduce required chars * bugfix: missing the correct authentication in case the admin was not member of the club. he wasn't able to switch back * reduce debug messages * fixed UI bug related to tooltips * load js in controller * upps.. * some UI adjustments * corrected permissions * if user gets delete we need to remove data in club_permissions and also api keys which were created by this user * Notify members about new memberships or changes in permission level * add spinner to save button * make login/logout process more bulletproof * remove the relogin cookie after the attempt * better strategy * bug where switch back failed if user is no admin * make api keys more secure * mask not owned api keys * removed annoying link * if a user gets removed from a club we also should delete the corresponding api keys and cat radios * adjusted wiki link * Auto creation of logbook and location when new user is created * store and display locator in uppercase * same for callsign * fixed a bug in user/club creation * Revert "Auto creation of logbook and location when new user is created" We found another solution to which will be addressed in a second PR This reverts commit f05f4b7bf0423a88abf0087ade81fe613d217794. * Optimized SQL for stats at userlist * Source query for lastop "out", because mysql<9.0 can't handle Windowed functions * adjust migration * add new columns to users table to get created_at and modified_at * added a partial down function * add operator dropdown for clubstations * fix mig version * Add some backend restrictions in case a user wants to try something funny with the club --------- Co-authored-by: Andreas Kristiansen <6977712+AndreasK79@users.noreply.github.com> Co-authored-by: int2001 <joerg@dj7nt.de>
2025-01-02 10:22:23 +01:00
<?php if ($this->session->userdata('impersonate') == 1) { ?>
<li>
<button class="dropdown-item" style="flex: 1;" title="<?= sprintf(__("Stop impersonate and switch back to %s"), $this->session->userdata('cd_src_call') ?? ''); ?>" onclick="stopImpersonate_modal()">
<i class="fas fa-exchange-alt"></i> <?= sprintf(__("Switch back to %s"), $this->session->userdata('cd_src_call') ?? ''); ?>
</button>
</li>
<?php } ?>
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item" href="<?php echo site_url('user/logout'); ?>" title="Logout"><i class="fas fa-sign-out-alt"></i> <?= __("Logout"); ?></a></li>
</ul>
</li>
2024-02-17 08:52:01 +01:00
<?php
Clubstations for Wavelog (#1334) * feat[clubstations]: New DB structure * feat[clubstations]: Add clubstationstable in user managment * feat[clubstations]: Show last operator * feat[clubstations]: Better solution for last operator. tnx for the hint @int2001 * feat[clubstations]: New Club Model and Controller * feat[clubstations]: Add "Add User" and "Edit User" functionality * docs[clubstations]: move comment * feat[clubstations]: Add "Delete Member" functionality * feat[clubstations]: some enhancements and javascript * fix[clubstations]: Wrong message class for flashmessages * feat[clubstations]: Added Switch in the Header menu (not functional yet) * feat[clubstations]: clubswitch modal * fix[clubstations]: Load encryption library if not already loaded * fix[clubstations]: Prevent direct login attempts to clubstations and enhance impersonation authorization * fix[clubstations]: Typo * feat[clubstations]: Only show the operator dialog if there is something fishy * fix[user]: little UI bug * feat[impersonate]: Add source uid to session data * fix[impersonate]: logic adjustment * feat[clubstations]: Add manage button in header menu for club officers * fix[clubstations]: typo in permission level check * fix[clubstations]: Full rights for the admin * feat[impersonate]: Custom sessiondata * feat[impersonate]: Implement stop impersonation feature with modal confirmation; "the way back" * fix(modal): Fix bug where modal was hidden when mouse leaved the browser content * docs(config): Adjust config description for special callsigns and clubstations * feat(club): Add club access check helper * typo * fix[impersonation]: Better text * feat(club): Selectize for a efficient user search * feat(clubstations): Restrict clubstations based on users permission level part 1/x * adjustments for dev merge * Adjusted club right for the advanced logbook * feat[user]: Refactoring of the Action Buttons in the user table * fix[club_permissions]: normal button instead small one for club permissions * remove unnecessary line break in modal body * feat[clubstations]: Add Club Mode badge to the header * fix[clubstations]: fix maintenance mode * allow switch back on http * feat(simplefle): display operator input based on club_access * small UI adjustments * small UI adjustments * moved api page to a index.php file and added support for clubstations * removed unused stuff * typo * radios and api keys * missed one binding * fix qso view, even officers do just see their own radios in QSO logging * omit the need for a relogin to see the changes as an admin * Omit the need for relogin after club changes in general. It's a question of UX. It's better to accept a little higher DB load (if clubstations are enabled) then the need of an user to relogin. There is some room for improvement by changing user_model->get_by_id() and adding a join there. This can be done later if we see that the load is too high * If the user is not the creator of the API key, it's likely a clubstation. In this case the callsign of the clubstation can not be the same as the callsign of the user (operator call provided by the user). If this is the case, we need to use the callsign of the creator of the API key * remove debug messages * better UI in header * found a typo * full access in clubstations for admins (if accessed via admin usertable) * adjusted text * adjusted text * adjust text * reduce required chars * bugfix: missing the correct authentication in case the admin was not member of the club. he wasn't able to switch back * reduce debug messages * fixed UI bug related to tooltips * load js in controller * upps.. * some UI adjustments * corrected permissions * if user gets delete we need to remove data in club_permissions and also api keys which were created by this user * Notify members about new memberships or changes in permission level * add spinner to save button * make login/logout process more bulletproof * remove the relogin cookie after the attempt * better strategy * bug where switch back failed if user is no admin * make api keys more secure * mask not owned api keys * removed annoying link * if a user gets removed from a club we also should delete the corresponding api keys and cat radios * adjusted wiki link * Auto creation of logbook and location when new user is created * store and display locator in uppercase * same for callsign * fixed a bug in user/club creation * Revert "Auto creation of logbook and location when new user is created" We found another solution to which will be addressed in a second PR This reverts commit f05f4b7bf0423a88abf0087ade81fe613d217794. * Optimized SQL for stats at userlist * Source query for lastop "out", because mysql<9.0 can't handle Windowed functions * adjust migration * add new columns to users table to get created_at and modified_at * added a partial down function * add operator dropdown for clubstations * fix mig version * Add some backend restrictions in case a user wants to try something funny with the club --------- Co-authored-by: Andreas Kristiansen <6977712+AndreasK79@users.noreply.github.com> Co-authored-by: int2001 <joerg@dj7nt.de>
2025-01-02 10:22:23 +01:00
if (($quickswitch_enabled ?? '') == 'true') { ?>
Station setup (#175) * The start of station setup * Added modals new logbook and new location * Added 1st JSON-Create Logbook (PHP) * Added 1st JSON-Create Logbook (JS) * Changed to small buttons * A bit more errorhandling (JS) * Moved collecting of params to controller and added errorhandling * Added Delete-Function (with confirmation) * Moved view to new folder and added delete Logbook * Added AJAX for setActive Book * Added AJAX for setActiveBook (JS) * Partially working reload logbook table * Dynamic loading of logbooks (PHP) * Dynamic loading of logbooks (JS) * Reload location table * Removed duplicate return statement * Fixed Zoo of params to JSON-Out * Fixed RenderBug (not yet finished) at JS * Fixed DT error * Fixed CSS * Changed setActiveStation from link to Ajax (PHP) * Changed setActiveStation from link to Ajax (JS) * Added confirmation to changeActiveStation * Changed EmptyStation to AJAX (PHP) * Changed EmptyStation to AJAX (JS) * Changed DeleteStation to AJAX (JS) * Changed DeleteStation to AJAX (PHP) * Tidy up code a little * Re-added favorites * Ajaxyfing favorite location * Fixed clicking on favorite * Fixed favorite star * Tweaked new logbook dialog * Fixed public search badge * Fix badges on first load * Reloads stations on load * Redirect to station setup * Re-added translation * Fixed more badges * Added menu item translation * Header with translated menu * Updated warning links on dashboard to go to station setup * Added missing lang lines for Polish and Czech * Changed links in Quickswitch to station setup * station setup in quickswitcher * Make station location ID a separate (and sortable) column * Added missing ID * Relocated eQSL-Thing to station_model to reduce redundancies * Removed Debug-Stuff * Moved get_options to get_default_eqsl_message within QSO-Controller * Moved generic get_options to more specific get_eqsl_default_message * Removed loading of options_model, since it is already loaded via "autload"... * dynamic quickswitcher * disabled button for active location * typo * removed empty unused function * comment * reload stationsetup list if we are on this page * don't grey out the locations * dynamic loading in both directions * rename function to make it more clear * readability --------- Co-authored-by: int2001 <joerg@dj7nt.de> Co-authored-by: Joerg (DJ7NT) <int2001@users.noreply.github.com> Co-authored-by: HB9HIL <fabian.berg@hb9hil.org> Co-authored-by: phl0 <github@florian-wolters.de>
2024-03-03 21:52:51 +01:00
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" data-bs-toggle="dropdown" href="#"><i class="fas fa-map-marker-alt"></i> | <i class="fas fa-book"></i></a>
<ul class="dropdown-menu dropdown-menu-right header-dropdown">
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item disabled"><?= __("Select a Location"); ?>:</a></li>
Station setup (#175) * The start of station setup * Added modals new logbook and new location * Added 1st JSON-Create Logbook (PHP) * Added 1st JSON-Create Logbook (JS) * Changed to small buttons * A bit more errorhandling (JS) * Moved collecting of params to controller and added errorhandling * Added Delete-Function (with confirmation) * Moved view to new folder and added delete Logbook * Added AJAX for setActive Book * Added AJAX for setActiveBook (JS) * Partially working reload logbook table * Dynamic loading of logbooks (PHP) * Dynamic loading of logbooks (JS) * Reload location table * Removed duplicate return statement * Fixed Zoo of params to JSON-Out * Fixed RenderBug (not yet finished) at JS * Fixed DT error * Fixed CSS * Changed setActiveStation from link to Ajax (PHP) * Changed setActiveStation from link to Ajax (JS) * Added confirmation to changeActiveStation * Changed EmptyStation to AJAX (PHP) * Changed EmptyStation to AJAX (JS) * Changed DeleteStation to AJAX (JS) * Changed DeleteStation to AJAX (PHP) * Tidy up code a little * Re-added favorites * Ajaxyfing favorite location * Fixed clicking on favorite * Fixed favorite star * Tweaked new logbook dialog * Fixed public search badge * Fix badges on first load * Reloads stations on load * Redirect to station setup * Re-added translation * Fixed more badges * Added menu item translation * Header with translated menu * Updated warning links on dashboard to go to station setup * Added missing lang lines for Polish and Czech * Changed links in Quickswitch to station setup * station setup in quickswitcher * Make station location ID a separate (and sortable) column * Added missing ID * Relocated eQSL-Thing to station_model to reduce redundancies * Removed Debug-Stuff * Moved get_options to get_default_eqsl_message within QSO-Controller * Moved generic get_options to more specific get_eqsl_default_message * Removed loading of options_model, since it is already loaded via "autload"... * dynamic quickswitcher * disabled button for active location * typo * removed empty unused function * comment * reload stationsetup list if we are on this page * don't grey out the locations * dynamic loading in both directions * rename function to make it more clear * readability --------- Co-authored-by: int2001 <joerg@dj7nt.de> Co-authored-by: Joerg (DJ7NT) <int2001@users.noreply.github.com> Co-authored-by: HB9HIL <fabian.berg@hb9hil.org> Co-authored-by: phl0 <github@florian-wolters.de>
2024-03-03 21:52:51 +01:00
<?php
// let's get all stations for the logged in user
$all_user_locations = $this->stations->all_of_user($this->session->userdata('user_id'));
Station setup (#175) * The start of station setup * Added modals new logbook and new location * Added 1st JSON-Create Logbook (PHP) * Added 1st JSON-Create Logbook (JS) * Changed to small buttons * A bit more errorhandling (JS) * Moved collecting of params to controller and added errorhandling * Added Delete-Function (with confirmation) * Moved view to new folder and added delete Logbook * Added AJAX for setActive Book * Added AJAX for setActiveBook (JS) * Partially working reload logbook table * Dynamic loading of logbooks (PHP) * Dynamic loading of logbooks (JS) * Reload location table * Removed duplicate return statement * Fixed Zoo of params to JSON-Out * Fixed RenderBug (not yet finished) at JS * Fixed DT error * Fixed CSS * Changed setActiveStation from link to Ajax (PHP) * Changed setActiveStation from link to Ajax (JS) * Added confirmation to changeActiveStation * Changed EmptyStation to AJAX (PHP) * Changed EmptyStation to AJAX (JS) * Changed DeleteStation to AJAX (JS) * Changed DeleteStation to AJAX (PHP) * Tidy up code a little * Re-added favorites * Ajaxyfing favorite location * Fixed clicking on favorite * Fixed favorite star * Tweaked new logbook dialog * Fixed public search badge * Fix badges on first load * Reloads stations on load * Redirect to station setup * Re-added translation * Fixed more badges * Added menu item translation * Header with translated menu * Updated warning links on dashboard to go to station setup * Added missing lang lines for Polish and Czech * Changed links in Quickswitch to station setup * station setup in quickswitcher * Make station location ID a separate (and sortable) column * Added missing ID * Relocated eQSL-Thing to station_model to reduce redundancies * Removed Debug-Stuff * Moved get_options to get_default_eqsl_message within QSO-Controller * Moved generic get_options to more specific get_eqsl_default_message * Removed loading of options_model, since it is already loaded via "autload"... * dynamic quickswitcher * disabled button for active location * typo * removed empty unused function * comment * reload stationsetup list if we are on this page * don't grey out the locations * dynamic loading in both directions * rename function to make it more clear * readability --------- Co-authored-by: int2001 <joerg@dj7nt.de> Co-authored-by: Joerg (DJ7NT) <int2001@users.noreply.github.com> Co-authored-by: HB9HIL <fabian.berg@hb9hil.org> Co-authored-by: phl0 <github@florian-wolters.de>
2024-03-03 21:52:51 +01:00
// and the set favourites as array
$location_favorites_result = $this->user_options_model->get_options('station_location', array('option_name' => 'is_favorite', 'option_value' => 'true'));
$location_favorites = $location_favorites_result->result_array();
// also we need the current active station
$current_active_location = $this->stations->find_active();
// iterate through all available stations
foreach ($all_user_locations->result() as $row) {
// get information about this station like the name and the station id
$profile_info = $this->stations->profile($row->station_id)->row();
$station_profile_name = ($profile_info) ? $profile_info->station_profile_name : 'Unknown Location';
$station_id = $row->station_id;
// the active badge, not shown by default
2024-06-06 15:41:03 +02:00
$active_badge = '<span id="quickswitcher_active_badge_' . $station_id . '" class="badge bg-success ms-2 d-none">' . __("Active") . '</span>';
Station setup (#175) * The start of station setup * Added modals new logbook and new location * Added 1st JSON-Create Logbook (PHP) * Added 1st JSON-Create Logbook (JS) * Changed to small buttons * A bit more errorhandling (JS) * Moved collecting of params to controller and added errorhandling * Added Delete-Function (with confirmation) * Moved view to new folder and added delete Logbook * Added AJAX for setActive Book * Added AJAX for setActiveBook (JS) * Partially working reload logbook table * Dynamic loading of logbooks (PHP) * Dynamic loading of logbooks (JS) * Reload location table * Removed duplicate return statement * Fixed Zoo of params to JSON-Out * Fixed RenderBug (not yet finished) at JS * Fixed DT error * Fixed CSS * Changed setActiveStation from link to Ajax (PHP) * Changed setActiveStation from link to Ajax (JS) * Added confirmation to changeActiveStation * Changed EmptyStation to AJAX (PHP) * Changed EmptyStation to AJAX (JS) * Changed DeleteStation to AJAX (JS) * Changed DeleteStation to AJAX (PHP) * Tidy up code a little * Re-added favorites * Ajaxyfing favorite location * Fixed clicking on favorite * Fixed favorite star * Tweaked new logbook dialog * Fixed public search badge * Fix badges on first load * Reloads stations on load * Redirect to station setup * Re-added translation * Fixed more badges * Added menu item translation * Header with translated menu * Updated warning links on dashboard to go to station setup * Added missing lang lines for Polish and Czech * Changed links in Quickswitch to station setup * station setup in quickswitcher * Make station location ID a separate (and sortable) column * Added missing ID * Relocated eQSL-Thing to station_model to reduce redundancies * Removed Debug-Stuff * Moved get_options to get_default_eqsl_message within QSO-Controller * Moved generic get_options to more specific get_eqsl_default_message * Removed loading of options_model, since it is already loaded via "autload"... * dynamic quickswitcher * disabled button for active location * typo * removed empty unused function * comment * reload stationsetup list if we are on this page * don't grey out the locations * dynamic loading in both directions * rename function to make it more clear * readability --------- Co-authored-by: int2001 <joerg@dj7nt.de> Co-authored-by: Joerg (DJ7NT) <int2001@users.noreply.github.com> Co-authored-by: HB9HIL <fabian.berg@hb9hil.org> Co-authored-by: phl0 <github@florian-wolters.de>
2024-03-03 21:52:51 +01:00
// only continue if the station id is a favourite and show the station in the list
$is_favorite = false;
foreach ($location_favorites as $favorite) {
if ($favorite['option_value'] == true && $favorite['option_key'] == $station_id) {
$is_favorite = true;
break;
}
}
if ($is_favorite) { ?>
<li id="quickswitcher_list_item_<?php echo $station_id; ?>">
<a id="quickswitcher_list_button_<?php echo $station_id; ?>" type="button" onclick="set_active_loc_quickswitcher('<?php echo $station_id; ?>')" class="dropdown-item quickswitcher">
<i class="fas fa-map-marker-alt me-2"></i><?php echo $station_profile_name; echo $active_badge; ?>
</a>
</li>
<?php }
} ?>
<div class="dropdown-divider"></div>
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item quickswitcher disabled"><?= __("Active Logbook"); ?>:<span class="badge text-bg-info ms-1"><?php echo $this->logbooks_model->find_name($this->session->userdata('active_station_logbook')); ?></span></a></li>
Station setup (#175) * The start of station setup * Added modals new logbook and new location * Added 1st JSON-Create Logbook (PHP) * Added 1st JSON-Create Logbook (JS) * Changed to small buttons * A bit more errorhandling (JS) * Moved collecting of params to controller and added errorhandling * Added Delete-Function (with confirmation) * Moved view to new folder and added delete Logbook * Added AJAX for setActive Book * Added AJAX for setActiveBook (JS) * Partially working reload logbook table * Dynamic loading of logbooks (PHP) * Dynamic loading of logbooks (JS) * Reload location table * Removed duplicate return statement * Fixed Zoo of params to JSON-Out * Fixed RenderBug (not yet finished) at JS * Fixed DT error * Fixed CSS * Changed setActiveStation from link to Ajax (PHP) * Changed setActiveStation from link to Ajax (JS) * Added confirmation to changeActiveStation * Changed EmptyStation to AJAX (PHP) * Changed EmptyStation to AJAX (JS) * Changed DeleteStation to AJAX (JS) * Changed DeleteStation to AJAX (PHP) * Tidy up code a little * Re-added favorites * Ajaxyfing favorite location * Fixed clicking on favorite * Fixed favorite star * Tweaked new logbook dialog * Fixed public search badge * Fix badges on first load * Reloads stations on load * Redirect to station setup * Re-added translation * Fixed more badges * Added menu item translation * Header with translated menu * Updated warning links on dashboard to go to station setup * Added missing lang lines for Polish and Czech * Changed links in Quickswitch to station setup * station setup in quickswitcher * Make station location ID a separate (and sortable) column * Added missing ID * Relocated eQSL-Thing to station_model to reduce redundancies * Removed Debug-Stuff * Moved get_options to get_default_eqsl_message within QSO-Controller * Moved generic get_options to more specific get_eqsl_default_message * Removed loading of options_model, since it is already loaded via "autload"... * dynamic quickswitcher * disabled button for active location * typo * removed empty unused function * comment * reload stationsetup list if we are on this page * don't grey out the locations * dynamic loading in both directions * rename function to make it more clear * readability --------- Co-authored-by: int2001 <joerg@dj7nt.de> Co-authored-by: Joerg (DJ7NT) <int2001@users.noreply.github.com> Co-authored-by: HB9HIL <fabian.berg@hb9hil.org> Co-authored-by: phl0 <github@florian-wolters.de>
2024-03-03 21:52:51 +01:00
<div class="dropdown-divider"></div>
2024-06-06 20:23:19 +02:00
<li><a class="dropdown-item" href="<?php echo site_url('stationsetup'); ?>" title="Manage station locations"><?= __("Station Setup"); ?>...</a></li>
Station setup (#175) * The start of station setup * Added modals new logbook and new location * Added 1st JSON-Create Logbook (PHP) * Added 1st JSON-Create Logbook (JS) * Changed to small buttons * A bit more errorhandling (JS) * Moved collecting of params to controller and added errorhandling * Added Delete-Function (with confirmation) * Moved view to new folder and added delete Logbook * Added AJAX for setActive Book * Added AJAX for setActiveBook (JS) * Partially working reload logbook table * Dynamic loading of logbooks (PHP) * Dynamic loading of logbooks (JS) * Reload location table * Removed duplicate return statement * Fixed Zoo of params to JSON-Out * Fixed RenderBug (not yet finished) at JS * Fixed DT error * Fixed CSS * Changed setActiveStation from link to Ajax (PHP) * Changed setActiveStation from link to Ajax (JS) * Added confirmation to changeActiveStation * Changed EmptyStation to AJAX (PHP) * Changed EmptyStation to AJAX (JS) * Changed DeleteStation to AJAX (JS) * Changed DeleteStation to AJAX (PHP) * Tidy up code a little * Re-added favorites * Ajaxyfing favorite location * Fixed clicking on favorite * Fixed favorite star * Tweaked new logbook dialog * Fixed public search badge * Fix badges on first load * Reloads stations on load * Redirect to station setup * Re-added translation * Fixed more badges * Added menu item translation * Header with translated menu * Updated warning links on dashboard to go to station setup * Added missing lang lines for Polish and Czech * Changed links in Quickswitch to station setup * station setup in quickswitcher * Make station location ID a separate (and sortable) column * Added missing ID * Relocated eQSL-Thing to station_model to reduce redundancies * Removed Debug-Stuff * Moved get_options to get_default_eqsl_message within QSO-Controller * Moved generic get_options to more specific get_eqsl_default_message * Removed loading of options_model, since it is already loaded via "autload"... * dynamic quickswitcher * disabled button for active location * typo * removed empty unused function * comment * reload stationsetup list if we are on this page * don't grey out the locations * dynamic loading in both directions * rename function to make it more clear * readability --------- Co-authored-by: int2001 <joerg@dj7nt.de> Co-authored-by: Joerg (DJ7NT) <int2001@users.noreply.github.com> Co-authored-by: HB9HIL <fabian.berg@hb9hil.org> Co-authored-by: phl0 <github@florian-wolters.de>
2024-03-03 21:52:51 +01:00
</ul>
</li>
2024-05-05 14:56:11 +02:00
<?php } ?>
2024-05-05 17:22:22 +02:00
<?php
$utc_headermenu = ($this->user_options_model->get_options('header_menu', array('option_name' => 'utc_headermenu'))->row()->option_value ?? 'false');
if ($utc_headermenu == 'true') {
2024-05-05 17:22:22 +02:00
?>
<li class="nav-link disabled" id="utc_header_li">
2024-05-05 17:22:22 +02:00
<a id="utc_header" style="width: 70px; display: inline-block;"></a>
</li>
<?php }
Station setup (#175) * The start of station setup * Added modals new logbook and new location * Added 1st JSON-Create Logbook (PHP) * Added 1st JSON-Create Logbook (JS) * Changed to small buttons * A bit more errorhandling (JS) * Moved collecting of params to controller and added errorhandling * Added Delete-Function (with confirmation) * Moved view to new folder and added delete Logbook * Added AJAX for setActive Book * Added AJAX for setActiveBook (JS) * Partially working reload logbook table * Dynamic loading of logbooks (PHP) * Dynamic loading of logbooks (JS) * Reload location table * Removed duplicate return statement * Fixed Zoo of params to JSON-Out * Fixed RenderBug (not yet finished) at JS * Fixed DT error * Fixed CSS * Changed setActiveStation from link to Ajax (PHP) * Changed setActiveStation from link to Ajax (JS) * Added confirmation to changeActiveStation * Changed EmptyStation to AJAX (PHP) * Changed EmptyStation to AJAX (JS) * Changed DeleteStation to AJAX (JS) * Changed DeleteStation to AJAX (PHP) * Tidy up code a little * Re-added favorites * Ajaxyfing favorite location * Fixed clicking on favorite * Fixed favorite star * Tweaked new logbook dialog * Fixed public search badge * Fix badges on first load * Reloads stations on load * Redirect to station setup * Re-added translation * Fixed more badges * Added menu item translation * Header with translated menu * Updated warning links on dashboard to go to station setup * Added missing lang lines for Polish and Czech * Changed links in Quickswitch to station setup * station setup in quickswitcher * Make station location ID a separate (and sortable) column * Added missing ID * Relocated eQSL-Thing to station_model to reduce redundancies * Removed Debug-Stuff * Moved get_options to get_default_eqsl_message within QSO-Controller * Moved generic get_options to more specific get_eqsl_default_message * Removed loading of options_model, since it is already loaded via "autload"... * dynamic quickswitcher * disabled button for active location * typo * removed empty unused function * comment * reload stationsetup list if we are on this page * don't grey out the locations * dynamic loading in both directions * rename function to make it more clear * readability --------- Co-authored-by: int2001 <joerg@dj7nt.de> Co-authored-by: Joerg (DJ7NT) <int2001@users.noreply.github.com> Co-authored-by: HB9HIL <fabian.berg@hb9hil.org> Co-authored-by: phl0 <github@florian-wolters.de>
2024-03-03 21:52:51 +01:00
// Can add extra menu items by defining them in options. The format is json.
// Useful to add extra things in Wavelog 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');
$menuitems = $this->optionslib->get_option('menuitems');
if ($menuitems) { ?>
<li class="nav-item dropdown">
2024-06-06 20:23:19 +02:00
<a class="nav-link dropdown-toggle" data-bs-toggle="dropdown" href="#"><?= __("Extras"); ?></a>
<div class="dropdown-menu header-dropdown">
<?php
foreach (json_decode($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 } ?>
<?php } ?>
</ul>
</div>
</div>
Clubstations for Wavelog (#1334) * feat[clubstations]: New DB structure * feat[clubstations]: Add clubstationstable in user managment * feat[clubstations]: Show last operator * feat[clubstations]: Better solution for last operator. tnx for the hint @int2001 * feat[clubstations]: New Club Model and Controller * feat[clubstations]: Add "Add User" and "Edit User" functionality * docs[clubstations]: move comment * feat[clubstations]: Add "Delete Member" functionality * feat[clubstations]: some enhancements and javascript * fix[clubstations]: Wrong message class for flashmessages * feat[clubstations]: Added Switch in the Header menu (not functional yet) * feat[clubstations]: clubswitch modal * fix[clubstations]: Load encryption library if not already loaded * fix[clubstations]: Prevent direct login attempts to clubstations and enhance impersonation authorization * fix[clubstations]: Typo * feat[clubstations]: Only show the operator dialog if there is something fishy * fix[user]: little UI bug * feat[impersonate]: Add source uid to session data * fix[impersonate]: logic adjustment * feat[clubstations]: Add manage button in header menu for club officers * fix[clubstations]: typo in permission level check * fix[clubstations]: Full rights for the admin * feat[impersonate]: Custom sessiondata * feat[impersonate]: Implement stop impersonation feature with modal confirmation; "the way back" * fix(modal): Fix bug where modal was hidden when mouse leaved the browser content * docs(config): Adjust config description for special callsigns and clubstations * feat(club): Add club access check helper * typo * fix[impersonation]: Better text * feat(club): Selectize for a efficient user search * feat(clubstations): Restrict clubstations based on users permission level part 1/x * adjustments for dev merge * Adjusted club right for the advanced logbook * feat[user]: Refactoring of the Action Buttons in the user table * fix[club_permissions]: normal button instead small one for club permissions * remove unnecessary line break in modal body * feat[clubstations]: Add Club Mode badge to the header * fix[clubstations]: fix maintenance mode * allow switch back on http * feat(simplefle): display operator input based on club_access * small UI adjustments * small UI adjustments * moved api page to a index.php file and added support for clubstations * removed unused stuff * typo * radios and api keys * missed one binding * fix qso view, even officers do just see their own radios in QSO logging * omit the need for a relogin to see the changes as an admin * Omit the need for relogin after club changes in general. It's a question of UX. It's better to accept a little higher DB load (if clubstations are enabled) then the need of an user to relogin. There is some room for improvement by changing user_model->get_by_id() and adding a join there. This can be done later if we see that the load is too high * If the user is not the creator of the API key, it's likely a clubstation. In this case the callsign of the clubstation can not be the same as the callsign of the user (operator call provided by the user). If this is the case, we need to use the callsign of the creator of the API key * remove debug messages * better UI in header * found a typo * full access in clubstations for admins (if accessed via admin usertable) * adjusted text * adjusted text * adjust text * reduce required chars * bugfix: missing the correct authentication in case the admin was not member of the club. he wasn't able to switch back * reduce debug messages * fixed UI bug related to tooltips * load js in controller * upps.. * some UI adjustments * corrected permissions * if user gets delete we need to remove data in club_permissions and also api keys which were created by this user * Notify members about new memberships or changes in permission level * add spinner to save button * make login/logout process more bulletproof * remove the relogin cookie after the attempt * better strategy * bug where switch back failed if user is no admin * make api keys more secure * mask not owned api keys * removed annoying link * if a user gets removed from a club we also should delete the corresponding api keys and cat radios * adjusted wiki link * Auto creation of logbook and location when new user is created * store and display locator in uppercase * same for callsign * fixed a bug in user/club creation * Revert "Auto creation of logbook and location when new user is created" We found another solution to which will be addressed in a second PR This reverts commit f05f4b7bf0423a88abf0087ade81fe613d217794. * Optimized SQL for stats at userlist * Source query for lastop "out", because mysql<9.0 can't handle Windowed functions * adjust migration * add new columns to users table to get created_at and modified_at * added a partial down function * add operator dropdown for clubstations * fix mig version * Add some backend restrictions in case a user wants to try something funny with the club --------- Co-authored-by: Andreas Kristiansen <6977712+AndreasK79@users.noreply.github.com> Co-authored-by: int2001 <joerg@dj7nt.de>
2025-01-02 10:22:23 +01:00
</nav>
<div id="clubswitchModal-container"></div>
<div id="stopImpersonateModal-container"></div>
<script>
let headerMenu = document.getElementById('header-menu');
let dropdowns = document.querySelectorAll('.dropdown-toggle');
dropdowns.forEach((dd) => {
dd.addEventListener('click', function(e) {
if (headerMenu.clientWidth < 992) {
var el = this.nextElementSibling;
el.style.display = el.style.display === 'block' ? 'none' : 'block';
}
});
});
</script>