Merge branch 'dev' into cypress-end-to-end-testing

pull/3066/head
Peter Goodhall 2024-04-19 17:45:54 +01:00 zatwierdzone przez GitHub
commit 64873c5178
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: B5690EEEBB952194
42 zmienionych plików z 178434 dodań i 381 usunięć

1
.gitignore vendored
Wyświetl plik

@ -21,3 +21,4 @@ sync.sh
*.p12
*.swp
.env
/node_modules

Wyświetl plik

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

Wyświetl plik

@ -498,6 +498,13 @@ class Awards extends CI_Controller {
$this->load->view('awards/was/index');
$this->load->view('interface_assets/footer', $footerData);
}
public function wab() {
// Render page
$data['page_title'] = "Awards - Worked All Britain";
$this->load->view('interface_assets/header', $data);
$this->load->view('awards/wab/index');
$this->load->view('interface_assets/footer');
}
public function iota () {
$this->load->model('iota');

Wyświetl plik

@ -135,10 +135,11 @@ class Labels extends CI_Controller {
$offset = xss_clean($this->input->post('startat'));
$grid = $this->input->post('grid') === "true" ? 1 : 0;
$via = $this->input->post('via') === "true" ? 1 : 0;
$awards = $this->input->post('awards') === "true" ? 1 : 0;
$this->load->model('labels_model');
$result = $this->labels_model->export_printrequestedids($ids);
$this->prepareLabel($result, true, $offset, $grid, $via);
$this->prepareLabel($result, true, $offset, $grid, $via, $awards);
}
public function print($station_id) {
@ -146,18 +147,19 @@ class Labels extends CI_Controller {
$offset = xss_clean($this->input->post('startat'));
$grid = xss_clean($this->input->post('grid') ?? 0);
$via = xss_clean($this->input->post('via') ?? 0);
$awards = xss_clean($this->input->post('awards') ?? 0);
$this->load->model('stations');
if ($this->stations->check_station_is_accessible($station_id)) {
$this->load->model('labels_model');
$result = $this->labels_model->export_printrequested($clean_id);
$this->prepareLabel($result, false, $offset, $grid, $via);
$this->prepareLabel($result, false, $offset, $grid, $via, $awards);
} else {
redirect('labels');
}
}
function prepareLabel($qsos, $jscall = false, $offset = 1, $grid = false, $via = false) {
function prepareLabel($qsos, $jscall = false, $offset = 1, $grid = false, $via = false, $awards = false) {
$this->load->model('labels_model');
$label = $this->labels_model->getDefaultLabel();
@ -232,11 +234,7 @@ class Labels extends CI_Controller {
}
if ($qsos->num_rows() > 0) {
if ($label->qsos == 1) {
$this->makeMultiQsoLabel($qsos->result(), $pdf, 1, $offset, $ptype->orientation, $grid, $via);
} else {
$this->makeMultiQsoLabel($qsos->result(), $pdf, $label->qsos, $offset, $ptype->orientation, $grid, $via);
}
$this->makeMultiQsoLabel($qsos->result(), $pdf, $label->qsos, $offset, $ptype->orientation, $grid, $via, $awards);
} else {
$this->session->set_flashdata('message', '0 QSOs found for print!');
redirect('labels');
@ -244,7 +242,7 @@ class Labels extends CI_Controller {
$pdf->Output();
}
function makeMultiQsoLabel($qsos, $pdf, $numberofqsos, $offset, $orientation, $grid, $via) {
function makeMultiQsoLabel($qsos, $pdf, $numberofqsos, $offset, $orientation, $grid, $via, $awards) {
$text = '';
$current_callsign = '';
$current_sat = '';
@ -261,7 +259,7 @@ class Labels extends CI_Controller {
( ($qso->COL_BAND_RX !== $current_sat_bandrx) && ($this->pretty_sat_mode($qso->COL_SAT_MODE) !== '')) ) {
// ((($qso->COL_SAT_NAME ?? '' !== $current_sat) || ($qso->COL_CALL !== $current_callsign)) && ($qso->COL_SAT_NAME ?? '' !== '') && ($col->COL_BAND_RX ?? '' !== $current_sat_bandrx))) {
if (!empty($qso_data)) {
$this->finalizeData($pdf, $current_callsign, $qso_data, $numberofqsos, $orientation, $grid, $via);
$this->finalizeData($pdf, $current_callsign, $qso_data, $numberofqsos, $orientation, $grid, $via, $awards);
$qso_data = [];
}
$current_callsign = $qso->COL_CALL;
@ -281,19 +279,46 @@ class Labels extends CI_Controller {
'sat_mode' => $this->pretty_sat_mode($qso->COL_SAT_MODE ?? ''),
'sat_band_rx' => ($qso->COL_BAND_RX ?? ''),
'qsl_recvd' => $qso->COL_QSL_RCVD,
'mycall' => $qso->COL_STATION_CALLSIGN
'mycall' => $qso->COL_STATION_CALLSIGN,
'awards' => $this->stationAwardsList($qso)
];
}
if (!empty($qso_data)) {
$this->finalizeData($pdf, $current_callsign, $qso_data, $numberofqsos, $orientation, $grid, $via);
$this->finalizeData($pdf, $current_callsign, $qso_data, $numberofqsos, $orientation, $grid, $via, $awards);
}
}
function stationAwardsList($station_profile) {
$awards = "";
if (trim($station_profile->station_iota) !== '') {
$awards .= "IOTA:" . $station_profile->station_iota . " ";
}
if (trim($station_profile->station_sota) !== '') {
$awards .= "SOTA:" . $station_profile->station_sota . " ";
}
if (trim($station_profile->station_wwff) !== '') {
$awards .= "WWFF:" . $station_profile->station_wwff . " ";
}
if (trim($station_profile->station_pota) !== '') {
$awards .= "POTA:" . $station_profile->station_pota . " ";
}
if (trim($station_profile->station_sig) !== '' && trim($station_profile->station_sig_info) !== '') {
$awards .= $station_profile->station_sig . ":" . $station_profile->station_sig_info;
}
return $awards;
}
// New begin
function pretty_sat_mode($sat_mode) {
return(strlen($sat_mode ?? '') == 2 ? (strtoupper($sat_mode[0]).'/'.strtoupper($sat_mode[1])) : strtoupper($sat_mode ?? ''));
}
function finalizeData($pdf, $current_callsign, &$preliminaryData, $qso_per_label,$orientation, $grid, $via) {
function finalizeData($pdf, $current_callsign, &$preliminaryData, $qso_per_label,$orientation, $grid, $via, $awards) {
$tableData = [];
$count_qso = 0;
@ -313,7 +338,7 @@ class Labels extends CI_Controller {
if($count_qso == $qso_per_label){
$this->generateLabel($pdf, $current_callsign, $tableData,$count_qso,$qso,$orientation, $grid, $via);
$this->generateLabel($pdf, $current_callsign, $tableData,$count_qso,$qso,$orientation, $grid, $via, $awards);
$tableData = []; // reset the data
$count_qso = 0; // reset the counter
}
@ -321,12 +346,12 @@ class Labels extends CI_Controller {
}
// generate label for remaining QSOs
if($count_qso > 0){
$this->generateLabel($pdf, $current_callsign, $tableData,$count_qso,$qso,$orientation, $grid, $via);
$this->generateLabel($pdf, $current_callsign, $tableData,$count_qso,$qso,$orientation, $grid, $via, $awards);
$preliminaryData = []; // reset the data
}
}
function generateLabel($pdf, $current_callsign, $tableData,$numofqsos,$qso,$orientation,$grid=true, $via=false){
function generateLabel($pdf, $current_callsign, $tableData,$numofqsos,$qso,$orientation,$grid=true, $via=false, $awards=false){
$builder = new \AsciiTable\Builder();
$builder->addRows($tableData);
$text = "Confirming QSO".($numofqsos>1 ? 's' : '')." with ";
@ -347,6 +372,7 @@ class Labels extends CI_Controller {
}
$text.="\n";
if ($grid) { $text .= "My call: ".$qso['mycall']." Grid: ".$qso['mygrid']."\n"; }
if ($awards) { $text .= $qso['awards']."\n"; }
$text .= "Thanks for the QSO".($numofqsos>1 ? 's' : '');
$text .= " | ".($qso['qsl_recvd'] == 'Y' ? 'TNX' : 'PSE')." QSL";
$pdf->Add_Label($text,$orientation);

Wyświetl plik

@ -59,6 +59,61 @@ class User extends CI_Controller {
$data['timezones'] = $this->user_model->timezones();
$data['language'] = 'english';
// Set defaults
$data['dashboard_upcoming_dx_card'] = false;
$data['dashboard_qslcard_card'] = false;
$data['dashboard_eqslcard_card'] = false;
$data['dashboard_lotw_card'] = false;
$data['dashboard_vuccgrids_card'] = false;
$dashboard_options = $this->user_options_model->get_options('dashboard')->result();
foreach ($dashboard_options as $item) {
$option_name = $item->option_name;
$option_key = $item->option_key;
$option_value = $item->option_value;
if ($option_name == 'dashboard_upcoming_dx_card' && $option_key == 'enabled') {
if($item->option_value == 'true') {
$data['dashboard_upcoming_dx_card'] = true;
} else {
$data['dashboard_upcoming_dx_card'] = false;
}
}
if ($option_name == 'dashboard_qslcards_card' && $option_key == 'enabled') {
if($item->option_value == 'true') {
$data['dashboard_qslcard_card'] = true;
} else {
$data['dashboard_qslcard_card'] = false;
}
}
if ($option_name == 'dashboard_eqslcards_card' && $option_key == 'enabled') {
if($item->option_value == 'true') {
$data['dashboard_eqslcard_card'] = true;
} else {
$data['dashboard_eqslcard_card'] = false;
}
}
if ($option_name == 'dashboard_lotw_card' && $option_key == 'enabled') {
if($item->option_value == 'true') {
$data['dashboard_lotw_card'] = true;
} else {
$data['dashboard_lotw_card'] = false;
}
}
if ($option_name == 'dashboard_vuccgrids_card' && $option_key == 'enabled') {
if($item->option_value == 'true') {
$data['dashboard_vuccgrids_card'] = true;
} else {
$data['dashboard_vuccgrids_card'] = false;
}
}
}
if ($this->form_validation->run() == FALSE) {
$data['page_title'] = "Add User";
$data['measurement_base'] = $this->config->item('measurement_base');
@ -757,6 +812,37 @@ class User extends CI_Controller {
$this->load->view('interface_assets/footer');
}
/**
* Deletes a user by their ID.
*
* This function first loads the 'user_model'. It then checks if the current user has the authorization level of 99.
* If not, it sets a flash message and redirects the user to the dashboard.
*
* If the user is authorized, it gets the user to be deleted by their ID from the URI segment 3.
* It then calls the 'delete' function from the 'user_model' with the user ID as a parameter.
*
* If the 'delete' function executes successfully, it sets the HTTP status code to 200.
* If the 'delete' function fails, it sets the HTTP status code to 500.
*
* @param int $id The ID of the user to delete.
*/
function delete_new($id) {
$this->load->model('user_model');
if(!$this->user_model->authorize(99)) { $this->session->set_flashdata('notice', 'You\'re not allowed to do that!'); redirect('dashboard'); }
$query = $this->user_model->get_by_id($this->uri->segment(3));
// call $this->user_model->delete and if no errors return true
if ($this->user_model->delete($id)) {
// request responds with a 200 status code and empty content
$this->output->set_status_header(200);
} else {
// request responds with a 500 status code and empty content
$this->output->set_status_header(500);
}
}
function delete() {
$this->load->model('user_model');
if(!$this->user_model->authorize(99)) { $this->session->set_flashdata('notice', 'You\'re not allowed to do that!'); redirect('dashboard'); }

Wyświetl plik

@ -82,7 +82,7 @@ class Visitor extends CI_Controller {
$config['base_url'] = base_url().'index.php/visitor/'. $public_slug . '/index';
$config['total_rows'] = $this->logbook_model->total_qsos($logbooks_locations_array);
$config['per_page'] = '25';
$config['num_links'] = $this->logbook_model->total_qsos($logbooks_locations_array) / 25;
$config['num_links'] = 6;
$config['full_tag_open'] = '<ul class="pagination">';
$config['full_tag_close'] = '</ul>';
$config['attributes'] = ['class' => 'page-link'];

Wyświetl plik

@ -30,7 +30,7 @@ class Workabledxcc extends CI_Controller
public function dxcclist()
{
$json = file_get_contents('https://cdn.cloudlog.org/read_ng3k_dxped_list.php');
$json = file_get_contents($this->optionslib->get_option('dxped_url'));
// Decode the JSON data into a PHP array
$dataResult = json_decode($json, true);

Wyświetl plik

@ -2,22 +2,26 @@
if (!function_exists('folderSize')) {
function folderSize($dir){
$count_size = 0;
$count = 0;
$dir_array = scandir($dir);
foreach($dir_array as $key=>$filename){
if($filename!=".." && $filename!="."){
if(is_dir($dir."/".$filename)){
$new_foldersize = folderSize($dir."/".$filename);
$count_size = $count_size+ $new_foldersize;
}else if(is_file($dir."/".$filename)){
$count_size = $count_size + filesize($dir."/".$filename);
$count++;
if (is_dir($dir)) {
$count_size = 0;
$count = 0;
$dir_array = scandir($dir);
foreach($dir_array as $key=>$filename){
if($filename!=".." && $filename!="."){
if(is_dir($dir."/".$filename)){
$new_foldersize = folderSize($dir."/".$filename);
$count_size = $count_size+ $new_foldersize;
}else if(is_file($dir."/".$filename)){
$count_size = $count_size + filesize($dir."/".$filename);
$count++;
}
}
}
return $count_size;
} else {
return 0;
}
return $count_size;
}
}
}
if (!function_exists('sizeFormat')) {

Wyświetl plik

@ -81,6 +81,10 @@ $lang['general_word_qslcard_manager'] = 'Manager';
$lang['general_word_qslcard_via'] = 'Чрез';
$lang['general_word_eqslcard'] = 'eQSL Card';
$lang['general_word_eqslcards'] = 'eQSL Cards';
$lang['general_word_sstv_management'] = 'SSTV Management';
$lang['general_word_sstvimages'] = 'SSTV Images';
$lang['general_sstv_upload'] = 'Uploaded SSTV images';
$lang['general_sstv_upload_button'] = 'Upload SSTV image(s)';
$lang['general_word_lotw'] = 'Logbook of the World';
$lang['general_word_lotw_short'] = 'LoTW';

Wyświetl plik

@ -79,6 +79,10 @@ $lang['general_word_qslcard_bureau'] = '卡片局';
$lang['general_word_qslcard_electronic'] = '电子卡片';
$lang['general_word_qslcard_manager'] = '卡片管理员';
$lang['general_word_qslcard_via'] = '通过via';
$lang['general_word_sstv_management'] = 'SSTV Management';
$lang['general_word_sstvimages'] = 'SSTV Images';
$lang['general_sstv_upload'] = 'Uploaded SSTV images';
$lang['general_sstv_upload_button'] = 'Upload SSTV image(s)';
$lang['general_word_eqslcard'] = '电子 QSL 卡片';
$lang['general_word_eqslcards'] = 'eQSL 卡片';
$lang['general_word_lotw'] = 'Logbook of the WorldLoTW';

Wyświetl plik

@ -17,6 +17,7 @@ $lang['menu_post_contest_logging'] = '比赛日志(手动)';
$lang['menu_bandmap'] = '波段地图';
$lang['menu_view_qsl'] = '浏览QSL卡片';
$lang['menu_view_eqsl'] = '浏览eQSL卡片';
$lang['menu_view_sstv'] = 'View SSTV Images';
$lang['menu_notes'] = '笔记';

Wyświetl plik

@ -81,6 +81,10 @@ $lang['general_word_qslcard_manager'] = 'Správce';
$lang['general_word_qslcard_via'] = 'Přes';
$lang['general_word_eqslcard'] = 'eQSL karta';
$lang['general_word_eqslcards'] = 'eQSL karty';
$lang['general_word_sstv_management'] = 'SSTV Management';
$lang['general_word_sstvimages'] = 'SSTV Images';
$lang['general_sstv_upload'] = 'Uploaded SSTV images';
$lang['general_sstv_upload_button'] = 'Upload SSTV image(s)';
$lang['general_word_lotw'] = 'Logbook of the World';
$lang['general_word_lotw_short'] = 'LoTW';

Wyświetl plik

@ -17,6 +17,7 @@ $lang['menu_post_contest_logging'] = 'Uložit závodní log';
$lang['menu_bandmap'] = 'Bandmap';
$lang['menu_view_qsl'] = 'Zobrazit QSL';
$lang['menu_view_eqsl'] = 'Zobrazit eQSL';
$lang['menu_view_sstv'] = 'View SSTV Images';
$lang['menu_notes'] = 'Poznámky';

Wyświetl plik

@ -81,6 +81,10 @@ $lang['general_word_qslcard_manager'] = 'Manager';
$lang['general_word_qslcard_via'] = 'Via';
$lang['general_word_eqslcard'] = 'eQSL Card';
$lang['general_word_eqslcards'] = 'eQSL Cards';
$lang['general_word_sstv_management'] = 'SSTV Management';
$lang['general_word_sstvimages'] = 'SSTV Images';
$lang['general_sstv_upload'] = 'Uploaded SSTV images';
$lang['general_sstv_upload_button'] = 'Upload SSTV image(s)';
$lang['general_word_lotw'] = 'Logbook of the World';
$lang['general_word_lotw_short'] = 'LoTW';

Wyświetl plik

@ -81,6 +81,10 @@ $lang['general_word_qslcard_manager'] = 'Manageri';
$lang['general_word_qslcard_via'] = 'Via';
$lang['general_word_eqslcard'] = 'eQSL Card';
$lang['general_word_eqslcards'] = 'eQSL Cards';
$lang['general_word_sstv_management'] = 'SSTV Management';
$lang['general_word_sstvimages'] = 'SSTV Images';
$lang['general_sstv_upload'] = 'Uploaded SSTV images';
$lang['general_sstv_upload_button'] = 'Upload SSTV image(s)';
$lang['general_word_lotw'] = 'Logbook of the World';
$lang['general_word_lotw_short'] = 'LoTW';

Wyświetl plik

@ -17,6 +17,7 @@ $lang['menu_post_contest_logging'] = 'Post Contest Logging';
$lang['menu_bandmap'] = 'Bandikartta';
$lang['menu_view_qsl'] = 'Näytä QSL';
$lang['menu_view_eqsl'] = 'Näytä eQSL';
$lang['menu_view_sstv'] = 'View SSTV Images';
$lang['menu_notes'] = 'Muistio';

Wyświetl plik

@ -81,6 +81,10 @@ $lang['general_word_qslcard_manager'] = "Manager";
$lang['general_word_qslcard_via'] = "Via";
$lang['general_word_eqslcard'] = "Carte eQSL";
$lang['general_word_eqslcards'] = "Cartes eQSL";
$lang['general_word_sstv_management'] = 'SSTV Management';
$lang['general_word_sstvimages'] = 'SSTV Images';
$lang['general_sstv_upload'] = 'Uploaded SSTV images';
$lang['general_sstv_upload_button'] = 'Upload SSTV image(s)';
$lang['general_word_lotw'] = "Logbook of the World";
$lang['general_word_lotw_short'] = "LoTW";

Wyświetl plik

@ -81,6 +81,10 @@ $lang['general_word_qslcard_manager'] = 'Διευθυντής';
$lang['general_word_qslcard_via'] = 'Μέσω';
$lang['general_word_eqslcard'] = 'eQSL Card';
$lang['general_word_eqslcards'] = 'Κάρτες eQSL';
$lang['general_word_sstv_management'] = 'SSTV Management';
$lang['general_word_sstvimages'] = 'SSTV Images';
$lang['general_sstv_upload'] = 'Uploaded SSTV images';
$lang['general_sstv_upload_button'] = 'Upload SSTV image(s)';
$lang['general_word_lotw'] = 'Logbook of the World';
$lang['general_word_lotw_short'] = 'LoTW';

Wyświetl plik

@ -81,6 +81,10 @@ $lang['general_word_qslcard_manager'] = 'Manager';
$lang['general_word_qslcard_via'] = 'Via';
$lang['general_word_eqslcard'] = 'eQSL Card';
$lang['general_word_eqslcards'] = 'Cartoline eQSL';
$lang['general_word_sstv_management'] = 'SSTV Management';
$lang['general_word_sstvimages'] = 'SSTV Images';
$lang['general_sstv_upload'] = 'Uploaded SSTV images';
$lang['general_sstv_upload_button'] = 'Upload SSTV image(s)';
$lang['general_word_lotw'] = 'Logbook of the World';
$lang['general_word_lotw_short'] = 'LoTW';

Wyświetl plik

@ -81,6 +81,10 @@ $lang['general_word_qslcard_manager'] = 'Manager';
$lang['general_word_qslcard_via'] = 'Via';
$lang['general_word_eqslcard'] = 'eQSL Card';
$lang['general_word_eqslcards'] = 'eQSL Cards';
$lang['general_word_sstv_management'] = 'SSTV Management';
$lang['general_word_sstvimages'] = 'SSTV Images';
$lang['general_sstv_upload'] = 'Uploaded SSTV images';
$lang['general_sstv_upload_button'] = 'Upload SSTV image(s)';
$lang['general_word_lotw'] = 'Logbook of the World';
$lang['general_word_lotw_short'] = 'LoTW';

Wyświetl plik

@ -82,6 +82,10 @@ $lang['general_word_qslcard_manager'] = 'Менеджер';
$lang['general_word_qslcard_via'] = 'через';
$lang['general_word_eqslcard'] = 'eQSL Card';
$lang['general_word_eqslcards'] = 'eQSL';
$lang['general_word_sstv_management'] = 'SSTV Management';
$lang['general_word_sstvimages'] = 'SSTV Images';
$lang['general_sstv_upload'] = 'Uploaded SSTV images';
$lang['general_sstv_upload_button'] = 'Upload SSTV image(s)';
$lang['general_word_lotw'] = 'Logbook of the World';
$lang['general_word_lotw_short'] = 'LoTW';

Wyświetl plik

@ -17,6 +17,7 @@ $lang['menu_post_contest_logging'] = 'Журнал прошедших сорев
$lang['menu_bandmap'] = 'План диапазонов';
$lang['menu_view_qsl'] = 'Просмотр QSL';
$lang['menu_view_eqsl'] = 'Просмотр eQSL';
$lang['menu_view_sstv'] = 'View SSTV Images';
$lang['menu_notes'] = 'Заметки';

Wyświetl plik

@ -82,6 +82,10 @@ $lang['general_word_qslcard_manager'] = 'Manager';
$lang['general_word_qslcard_via'] = 'Vía';
$lang['general_word_eqslcard'] = 'Tarjeta eQSL';
$lang['general_word_eqslcards'] = 'Tarjetas eQSL';
$lang['general_word_sstv_management'] = 'SSTV Management';
$lang['general_word_sstvimages'] = 'SSTV Images';
$lang['general_sstv_upload'] = 'Uploaded SSTV images';
$lang['general_sstv_upload_button'] = 'Upload SSTV image(s)';
$lang['general_word_lotw'] = 'Logbook of the World';
$lang['general_word_lotw_short'] = 'LoTW';

Wyświetl plik

@ -17,6 +17,7 @@ $lang['menu_post_contest_logging'] = 'Registrar Entrada de Concurso';
$lang['menu_bandmap'] = 'mapa de Bandas';
$lang['menu_view_qsl'] = 'Ver Tarjetas QSL';
$lang['menu_view_eqsl'] = 'Ver Tarjetas eQSL';
$lang['menu_view_sstv'] = 'View SSTV Images';
$lang['menu_notes'] = 'Notas';

Wyświetl plik

@ -25,7 +25,7 @@ $lang['general_word_enabled'] = "Enabled";
$lang['general_word_disabled'] = "Disabled";
$lang['general_word_count'] = "Count";
$lang['general_word_filtering_on'] = "Filtering on";
$lang['general_word_never'] = "Never";
$lang['general_word_never'] = "Never";
$lang['general_word_export'] = "Export";
$lang['general_word_import'] = "Import";
$lang['general_word_startdate'] = "Start Date";
@ -82,6 +82,10 @@ $lang['general_word_qslcard_manager'] = 'Manager';
$lang['general_word_qslcard_via'] = 'Via';
$lang['general_word_eqslcard'] = 'eQSL Card';
$lang['general_word_eqslcards'] = 'eQSL Cards';
$lang['general_word_sstv_management'] = 'SSTV Management';
$lang['general_word_sstvimages'] = 'SSTV Images';
$lang['general_sstv_upload'] = 'Uploaded SSTV images';
$lang['general_sstv_upload_button'] = 'Upload SSTV image(s)';
$lang['general_word_lotw'] = 'Logbook of the World';
$lang['general_word_lotw_short'] = 'LoTW';
@ -125,8 +129,8 @@ $lang['gen_hamradio_callsign'] = 'Signal';
$lang['gen_hamradio_de'] = 'De';
$lang['gen_hamradio_dx'] = 'Dx';
$lang['gen_hamradio_mode'] = 'Mode';
$lang['gen_hamradio_ant_az'] = 'Antenna Azimuth';
$lang['gen_hamradio_ant_el'] = 'Antenna Elevation';
$lang['gen_hamradio_ant_az'] = 'Antenna Azimuth';
$lang['gen_hamradio_ant_el'] = 'Antenna Elevation';
$lang['gen_hamradio_rst_sent'] = 'Skickat';
$lang['gen_hamradio_rst_rcvd'] = 'Mottagen\'d';
$lang['gen_hamradio_band'] = 'Band';

Wyświetl plik

@ -17,6 +17,7 @@ $lang['menu_post_contest_logging'] = 'Post Tävlingsloggning';
$lang['menu_bandmap'] = 'Bandkarta';
$lang['menu_view_qsl'] = 'Se QSL';
$lang['menu_view_eqsl'] = 'Se eQSL';
$lang['menu_view_sstv'] = 'View SSTV Images';
$lang['menu_notes'] = 'Anteckningar';

Wyświetl plik

@ -81,6 +81,10 @@ $lang['general_word_qslcard_manager'] = 'Yönetici';
$lang['general_word_qslcard_via'] = 'üzerinden';
$lang['general_word_eqslcard'] = 'eQSL Card';
$lang['general_word_eqslcards'] = 'eQSL Kartları';
$lang['general_word_sstv_management'] = 'SSTV Management';
$lang['general_word_sstvimages'] = 'SSTV Images';
$lang['general_sstv_upload'] = 'Uploaded SSTV images';
$lang['general_sstv_upload_button'] = 'Upload SSTV image(s)';
$lang['general_word_lotw'] = 'Logbook of the World';
$lang['general_word_lotw_short'] = 'LoTW';

Wyświetl plik

@ -0,0 +1,25 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
/*
* This migration adds a dxped_url-key to the options table, to configure
* the endpoint, from where the dxpedition-data is being loaded.
*/
class Migration_add_dxped_url_option extends CI_Migration {
public function up()
{
$data = array(
array('option_name' => "dxped_url", 'option_value' => "https://cdn.cloudlog.org/read_ng3k_dxped_list.php", 'autoload' => "yes"),
);
$this->db->insert_batch('options', $data);
}
public function down()
{
// No option to down
}
}

Wyświetl plik

@ -0,0 +1,30 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
/*
* Tag Cloudlog as 2.6.9
*/
class Migration_tag_2_6_9 extends CI_Migration {
public function up()
{
// Tag Cloudlog 2.6.3
$this->db->where('option_name', 'version');
$this->db->update('options', array('option_value' => '2.6.9'));
// Trigger Version Info Dialog
$this->db->where('option_type', 'version_dialog');
$this->db->where('option_name', 'confirmed');
$this->db->update('user_options', array('option_value' => 'false'));
}
public function down()
{
$this->db->where('option_name', 'version');
$this->db->update('options', array('option_value' => '2.6.8'));
}
}

Wyświetl plik

@ -185,7 +185,8 @@ class User_Model extends CI_Model {
'user_qso_end_times' => xss_clean($user_qso_end_times),
'user_quicklog' => xss_clean($user_quicklog),
'user_quicklog_enter' => xss_clean($user_quicklog_enter),
'language' => xss_clean($language)
'language' => xss_clean($language),
'user_eqsl_qth_nickname' => "",
);
// Check the password is valid

Wyświetl plik

@ -5,7 +5,7 @@ class Workabledxcc_model extends CI_Model
public function GetThisWeek()
{
$json = file_get_contents('https://cdn.cloudlog.org/read_ng3k_dxped_list.php');
$json = file_get_contents($this->optionslib->get_option('dxped_url'));
// Step 2: Convert the JSON data to an array.
$data = json_decode($json, true);

Wyświetl plik

@ -0,0 +1,98 @@
<div class="container">
<!-- Award Info Box -->
<br>
<div id="awardInfoButton">
<script>
var lang_awards_info_button = "<?php echo lang('awards_info_button'); ?>";
var lang_award_info_ln1 = "<?php echo lang('awards_vucc_description_ln1'); ?>";
var lang_award_info_ln2 = "<?php echo lang('awards_vucc_description_ln2'); ?>";
var lang_award_info_ln3 = "<?php echo lang('awards_vucc_description_ln3'); ?>";
var lang_award_info_ln4 = "<?php echo lang('awards_vucc_description_ln4'); ?>";
</script>
<h2><?php echo $page_title; ?></h2>
<button type="button" class="btn btn-sm btn-primary me-1" id="displayAwardInfo"><?php echo lang('awards_info_button'); ?></button>
</div>
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css" integrity="sha256-p4NxAoJBhIIN+hmNHrzRCf9tD/miZyoHS5obTRR9BMY=" crossorigin="" />
<script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js" integrity="sha256-20nQCchB9co0qIjJZRGuk2/Z9VM+kNiyxNV1lvTlZBo=" crossorigin=""></script>
<script src='//api.tiles.mapbox.com/mapbox.js/plugins/leaflet-omnivore/v0.3.1/leaflet-omnivore.min.js'></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<div id="map" style="width: 100%; height: 100vh;"></div>
<script>
var wab_squares = $.ajax({
url: "http://cloudlog.mg/assets/json/WABSquares.geojson",
dataType: "json",
success: console.log("WAB data successfully loaded."),
error: function(xhr) {
alert(xhr.statusText)
}
})
$.when(wab_squares).done(function() {
var map = L.map('map').setView([51.5074, -0.1278], 7);
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
attribution: '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
}).addTo(map);
console.log(wab_squares.responseJSON);
// Add requested external GeoJSON to map
var kywab_squares = L.geoJSON(wab_squares.responseJSON, {
style: function(feature) {
if (feature.properties.name === 'Small Square SP50 Boundry Box') {
return {
fillColor: '#5cb85c',
fill: true,
fillOpacity: 1,
};
} else {
return {};
}
},
pointToLayer: function(feature, latlng) {
if (feature.properties && feature.properties.name) {
// Create a custom icon that displays the name from the GeoJSON data
var labelIcon = L.divIcon({
className: 'text-labels', // Set class for CSS styling
html: feature.properties.name
});
// Create a marker at the location of the point
return L.marker(latlng, {
icon: labelIcon
});
}
},
onEachFeature: function(feature, layer) {
layer.on('click', function() {
// Code to execute when the area is clicked
alert('Area clicked: ' + feature.properties.name);
});
}
}).addTo(map);
// Function to update labels based on zoom level
function updateLabels() {
var currentZoom = map.getZoom();
kywab_squares.eachLayer(function(layer) {
if (currentZoom >= 8) {
// Show labels if zoom level is 10 or higher
layer.getElement().style.display = 'block';
} else {
// Hide labels if zoom level is less than 10
layer.getElement().style.display = 'none';
}
});
}
// Update labels when the map zoom changes
map.on('zoomend', updateLabels);
// Update labels immediately after adding the GeoJSON data to the map
updateLabels();
});
</script>
</div>

Wyświetl plik

@ -47,7 +47,7 @@
<script type="text/javascript" src="<?php echo base_url(); ?>assets/js/sections/eqslcharcounter.js"></script>
<script type="text/javascript" src="<?php echo base_url(); ?>assets/js/sections/version_dialog.js"></script>
<script src="https://unpkg.com/htmx.org@1.6.1"></script>
<script src="<?php echo base_url(); ?>assets/js/htmx.min.js"></script>
<script>
// Reinitialize tooltips after new content has been loaded

Wyświetl plik

@ -11,6 +11,12 @@
<input class="form-check-input" type="checkbox" name="via" id="via">
</div>
</div>
<div class="mb-3 row">
<label class="my-1 me-2 col-md-4" for="via">Include awards?</label>
<div class="form-check-inline">
<input class="form-check-input" type="checkbox" name="awards" id="awards">
</div>
</div>
<div class="mb-3 row">
<label class="my-1 me-2 col-md-4" for="startat">Start printing at?</label>
<div class="d-flex align-items-center">

Wyświetl plik

@ -1,35 +1,85 @@
<?php
function echo_table_header_col($name) {
switch($name) {
case 'Mode': echo lang('gen_hamradio_mode'); break;
case 'RSTS': echo lang('gen_hamradio_rsts'); break;
case 'RSTR': echo lang('gen_hamradio_rstr'); break;
case 'Country': echo lang('general_word_country'); break;
case 'IOTA': echo lang('gen_hamradio_iota'); break;
case 'SOTA': echo lang('gen_hamradio_sota'); break;
case 'WWFF': echo lang('gen_hamradio_wwff'); break;
case 'POTA': echo lang('gen_hamradio_pota'); break;
case 'State': echo lang('gen_hamradio_state'); break;
case 'Grid': echo lang('gen_hamradio_gridsquare'); break;
case 'Distance': echo lang('gen_hamradio_distance'); break;
case 'Band': echo lang('gen_hamradio_band'); break;
case 'Frequency': echo lang('gen_hamradio_frequency'); break;
case 'Operator': echo lang('gen_hamradio_operator'); break;
case 'Location': echo lang('cloudlog_station_profile'); break;
case 'Name': echo lang('general_word_name'); break;
}
}
function echo_table_col($row, $name) {
switch($name) {
function echo_table_header_col($name)
{
switch ($name) {
case 'Mode':
echo $row->COL_SUBMODE==null?$row->COL_MODE:$row->COL_SUBMODE;
echo lang('gen_hamradio_mode');
break;
case 'RSTS':
echo $row->COL_RST_SENT; if ($row->COL_STX) { echo ' <span data-bs-toggle="tooltip" title="'.($row->COL_CONTEST_ID!=""?$row->COL_CONTEST_ID:"n/a").'" class="badge text-bg-light">'; printf("%03d", $row->COL_STX); echo '</span>';} if ($row->COL_STX_STRING) { echo ' <span data-bs-toggle="tooltip" title="'.($row->COL_CONTEST_ID!=""?$row->COL_CONTEST_ID:"n/a").'" class="badge text-bg-light">' . $row->COL_STX_STRING . '</span>';};
echo lang('gen_hamradio_rsts');
break;
case 'RSTR':
echo $row->COL_RST_RCVD; if ($row->COL_SRX) { echo ' <span data-bs-toggle="tooltip" title="'.($row->COL_CONTEST_ID!=""?$row->COL_CONTEST_ID:"n/a").'" class="badge text-bg-light">'; printf("%03d", $row->COL_SRX); echo '</span>';} if ($row->COL_SRX_STRING) { echo ' <span data-bs-toggle="tooltip" title="'.($row->COL_CONTEST_ID!=""?$row->COL_CONTEST_ID:"n/a").'" class="badge text-bg-light">' . $row->COL_SRX_STRING . '</span>';};
echo lang('gen_hamradio_rstr');
break;
case 'Country':
echo lang('general_word_country');
break;
case 'IOTA':
echo lang('gen_hamradio_iota');
break;
case 'SOTA':
echo lang('gen_hamradio_sota');
break;
case 'WWFF':
echo lang('gen_hamradio_wwff');
break;
case 'POTA':
echo lang('gen_hamradio_pota');
break;
case 'State':
echo lang('gen_hamradio_state');
break;
case 'Grid':
echo lang('gen_hamradio_gridsquare');
break;
case 'Distance':
echo lang('gen_hamradio_distance');
break;
case 'Band':
echo lang('gen_hamradio_band');
break;
case 'Frequency':
echo lang('gen_hamradio_frequency');
break;
case 'Operator':
echo lang('gen_hamradio_operator');
break;
case 'Location':
echo lang('cloudlog_station_profile');
break;
case 'Name':
echo lang('general_word_name');
break;
}
}
function echo_table_col($row, $name)
{
switch ($name) {
case 'Mode':
echo $row->COL_SUBMODE == null ? $row->COL_MODE : $row->COL_SUBMODE;
break;
case 'RSTS':
echo $row->COL_RST_SENT;
if ($row->COL_STX) {
echo ' <span data-bs-toggle="tooltip" title="' . ($row->COL_CONTEST_ID != "" ? $row->COL_CONTEST_ID : "n/a") . '" class="badge text-bg-light">';
printf("%03d", $row->COL_STX);
echo '</span>';
}
if ($row->COL_STX_STRING) {
echo ' <span data-bs-toggle="tooltip" title="' . ($row->COL_CONTEST_ID != "" ? $row->COL_CONTEST_ID : "n/a") . '" class="badge text-bg-light">' . $row->COL_STX_STRING . '</span>';
};
break;
case 'RSTR':
echo $row->COL_RST_RCVD;
if ($row->COL_SRX) {
echo ' <span data-bs-toggle="tooltip" title="' . ($row->COL_CONTEST_ID != "" ? $row->COL_CONTEST_ID : "n/a") . '" class="badge text-bg-light">';
printf("%03d", $row->COL_SRX);
echo '</span>';
}
if ($row->COL_SRX_STRING) {
echo ' <span data-bs-toggle="tooltip" title="' . ($row->COL_CONTEST_ID != "" ? $row->COL_CONTEST_ID : "n/a") . '" class="badge text-bg-light">' . $row->COL_SRX_STRING . '</span>';
};
break;
case 'Country':
echo ucwords(strtolower(($row->COL_COUNTRY)));
@ -47,13 +97,17 @@ function echo_table_col($row, $name) {
echo ($row->COL_POTA_REF);
break;
case 'Grid':
echo strlen($row->COL_GRIDSQUARE)==0?$row->COL_VUCC_GRIDS:$row->COL_GRIDSQUARE;
echo strlen($row->COL_GRIDSQUARE) == 0 ? $row->COL_VUCC_GRIDS : $row->COL_GRIDSQUARE;
break;
case 'Distance':
echo ($row->COL_DISTANCE ? $row->COL_DISTANCE . '&nbsp;km' : '');
break;
case 'Band':
if($row->COL_SAT_NAME != null) { echo $row->COL_SAT_NAME; } else { echo strtolower($row->COL_BAND); };
if ($row->COL_SAT_NAME != null) {
echo $row->COL_SAT_NAME;
} else {
echo strtolower($row->COL_BAND);
};
break;
case 'State':
echo ($row->COL_STATE);
@ -62,7 +116,26 @@ function echo_table_col($row, $name) {
echo ($row->COL_OPERATOR);
break;
case 'Frequency':
if($row->COL_SAT_NAME != null) { echo '<a href="https://db.satnogs.org/search/?q='.$row->COL_SAT_NAME.'" target="_blank">'; if ($row->COL_FREQ != null) { echo ' <span data-bs-toggle="tooltip" title="'.$ci->frequency->hz_to_mhz($row->COL_FREQ).'">'.$row->COL_SAT_NAME.'</span>'; } else { echo $row->COL_SAT_NAME; } echo '</a></td>'; } else { if ($row->COL_FREQ != null) { echo ' <span data-bs-toggle="tooltip" title="'.$row->COL_BAND.'">'.$ci->frequency->hz_to_mhz($row->COL_FREQ).'</span>'; } else { echo strtolower($row->COL_BAND); } };
$CI =& get_instance();
$CI->load->library('frequency');
if ($row->COL_SAT_NAME != null) {
echo '<a href="https://db.satnogs.org/search/?q=' . $row->COL_SAT_NAME . '" target="_blank">';
if ($row->COL_FREQ != null && $CI->frequency->hz_to_mhz($row->COL_FREQ) != null) {
echo ' <span data-bs-toggle="tooltip" title="' . $CI->frequency->hz_to_mhz($row->COL_FREQ) . '">' . $row->COL_SAT_NAME . '</span>';
} else {
echo $row->COL_SAT_NAME;
}
echo '</a></td>';
} else {
if ($row->COL_FREQ != null && $CI->frequency->hz_to_mhz($row->COL_FREQ) != null) {
echo ' <span data-bs-toggle="tooltip" title="' . $row->COL_BAND . '">' . $CI->frequency->hz_to_mhz($row->COL_FREQ) . '</span>';
} else {
echo strtolower($row->COL_BAND);
}
}
break;
case 'State':
echo ($row->COL_STATE);
@ -74,7 +147,7 @@ function echo_table_col($row, $name) {
echo ($row->station_profile_name);
break;
case 'Name':
echo ($row->COL_NAME);
echo ($row->COL_NAME);
break;
default:
echo '(unknown col)';
@ -82,323 +155,331 @@ function echo_table_col($row, $name) {
}
?>
<div class="table-responsive">
<table style="width:100%" class="table table-sm tablewas table-bordered table-hover table-striped table-condensed text-center">
<thead>
<tr class="titles">
<th><?php echo lang('general_word_date'); ?></th>
<?php if(($this->config->item('use_auth') && ($this->session->userdata('user_type') >= 2)) || $this->config->item('use_auth') === FALSE || ($this->config->item('show_time'))) { ?>
<th><?php echo lang('general_word_time'); ?></th>
<?php } ?>
<th><?php echo lang('gen_hamradio_call'); ?></th>
<?php
$ci =& get_instance();
echo '<th>';
echo_table_header_col($this->session->userdata('user_column1')==""?'Mode':$this->session->userdata('user_column1'));
echo '</th>';
echo '<th>';
echo_table_header_col($this->session->userdata('user_column2')==""?'RSTS':$this->session->userdata('user_column2'));
echo '</th>';
echo '<th>';
echo_table_header_col($this->session->userdata('user_column3')==""?'RSTR':$this->session->userdata('user_column3'));
echo '</th>';
echo '<th>';
echo_table_header_col($this->session->userdata('user_column4')==""?'Band':$this->session->userdata('user_column4'));
echo '</th>';
echo '<th>';
echo_table_header_col($this->session->userdata('user_column5')==""?'Country':$this->session->userdata('user_column5'));
echo '</th>';
<table style="width:100%" class="table table-sm tablewas table-bordered table-hover table-striped table-condensed text-center">
<thead>
<tr class="titles">
<th><?php echo lang('general_word_date'); ?></th>
<?php if (($this->config->item('use_auth') && ($this->session->userdata('user_type') >= 2)) || $this->config->item('use_auth') === FALSE || ($this->config->item('show_time'))) { ?>
<th><?php echo lang('general_word_time'); ?></th>
<?php } ?>
<th><?php echo lang('gen_hamradio_call'); ?></th>
<?php
$ci = &get_instance();
echo '<th>';
echo_table_header_col($this->session->userdata('user_column1') == "" ? 'Mode' : $this->session->userdata('user_column1'));
echo '</th>';
echo '<th>';
echo_table_header_col($this->session->userdata('user_column2') == "" ? 'RSTS' : $this->session->userdata('user_column2'));
echo '</th>';
echo '<th>';
echo_table_header_col($this->session->userdata('user_column3') == "" ? 'RSTR' : $this->session->userdata('user_column3'));
echo '</th>';
echo '<th>';
echo_table_header_col($this->session->userdata('user_column4') == "" ? 'Band' : $this->session->userdata('user_column4'));
echo '</th>';
echo '<th>';
echo_table_header_col($this->session->userdata('user_column5') == "" ? 'Country' : $this->session->userdata('user_column5'));
echo '</th>';
if(($this->config->item('use_auth')) && ($this->session->userdata('user_type') >= 2)) { ?>
<th>QSL</th>
<?php if($this->session->userdata('user_eqsl_name') != "") { ?>
<th>eQSL</th>
if (($this->config->item('use_auth')) && ($this->session->userdata('user_type') >= 2)) { ?>
<th>QSL</th>
<?php if ($this->session->userdata('user_eqsl_name') != "") { ?>
<th>eQSL</th>
<?php } ?>
<?php if ($this->session->userdata('user_lotw_name') != "") { ?>
<th>LoTW</th>
<?php } ?>
<?php if ($this->session->userdata('hasQrzKey') != "") { ?>
<th>QRZ</th>
<?php } ?>
<?php } ?>
<?php if($this->session->userdata('user_lotw_name') != "") { ?>
<th>LoTW</th>
<?php } ?>
<?php if($this->session->userdata('hasQrzKey') != "") { ?>
<th>QRZ</th>
<?php } ?>
<?php } ?>
<th><?php echo lang('gen_hamradio_station'); ?></th>
<?php if(($this->config->item('use_auth')) && ($this->session->userdata('user_type') >= 2)) { ?>
<th></th>
<?php } ?>
</tr>
</thead>
<tbody>
<?php $i = 0; foreach ($results->result() as $row) { ?>
<?php if (($this->config->item('use_auth')) && ($this->session->userdata('user_type') >= 2)) { ?>
<th></th>
<?php } ?>
</tr>
</thead>
<tbody>
<?php $i = 0;
foreach ($results->result() as $row) { ?>
<?php
<?php
// Get Date format
if($this->session->userdata('user_date_format')) {
if ($this->session->userdata('user_date_format')) {
// If Logged in and session exists
$custom_date_format = $this->session->userdata('user_date_format');
} else {
// Get Default date format from /config/cloudlog.php
$custom_date_format = $this->config->item('qso_date_format');
}
?>
<?php echo '<tr class="tr'.($i & 1).'" id="qso_'. $row->COL_PRIMARY_KEY .'">'; ?>
<td><?php $timestamp = strtotime($row->COL_TIME_ON); echo date($custom_date_format, $timestamp); ?></td>
<?php if(($this->config->item('use_auth') && ($this->session->userdata('user_type') >= 2)) || $this->config->item('use_auth') === FALSE || ($this->config->item('show_time'))) { ?>
<td><?php $timestamp = strtotime($row->COL_TIME_ON); echo date('H:i', $timestamp); ?></td>
<?php } ?>
<td>
<a id="edit_qso" href="javascript:displayQso(<?php echo $row->COL_PRIMARY_KEY; ?>)"><?php echo str_replace("0","&Oslash;",strtoupper($row->COL_CALL)); ?></a>
</td>
<?php
echo '<td>';
echo_table_col($row, $this->session->userdata('user_column1')==""?'Mode':$this->session->userdata('user_column1'));
echo '</td><td>';
echo_table_col($row, $this->session->userdata('user_column2')==""?'RSTS':$this->session->userdata('user_column2'));
echo '</td><td>';
echo_table_col($row, $this->session->userdata('user_column3')==""?'RSTR':$this->session->userdata('user_column3'));
echo '</td><td>';
echo_table_col($row, $this->session->userdata('user_column4')==""?'Band':$this->session->userdata('user_column4'));
echo '</td><td>';
echo_table_col($row, $this->session->userdata('user_column5')==""?'Country':$this->session->userdata('user_column5'));
echo '</td>';
if(($this->config->item('use_auth')) && ($this->session->userdata('user_type') >= 2)) { ?>
<?php
echo '<td id="qsl_'.$row->COL_PRIMARY_KEY.'" style=\'text-align: center\' class="qsl">';
echo '<span ';
if ($row->COL_QSL_SENT != "N") {
if ($row->COL_QSLSDATE != null) {
$timestamp = ' '.date($custom_date_format, strtotime($row->COL_QSLSDATE));
} else {
$timestamp = '';
}
switch ($row->COL_QSL_SENT) {
case "Y":
echo "class=\"qsl-green\" data-bs-toggle=\"tooltip\" title=\"".lang('general_word_sent').$timestamp;
break;
case "Q":
echo "class=\"qsl-yellow\" data-bs-toggle=\"tooltip\" title=\"".lang('general_word_queued').$timestamp;
break;
case "R":
echo "class=\"qsl-yellow\" data-bs-toggle=\"tooltip\" title=\"".lang('general_word_requested').$timestamp;
break;
case "I":
echo "class=\"qsl-grey\" data-bs-toggle=\"tooltip\" title=\"".lang('general_word_invalid_ignore').$timestamp;
break;
default:
echo "class=\"qsl-red";
break;
}
} else { echo "class=\"qsl-red"; }
if ($row->COL_QSL_SENT_VIA != "") {
switch ($row->COL_QSL_SENT_VIA) {
case "B":
echo " (".lang('general_word_qslcard_bureau').")";
break;
case "D":
echo " (".lang('general_word_qslcard_direct').")";
break;
case "M":
echo " (".lang('general_word_qslcard_via').": ".($row->COL_QSL_VIA!="" ? $row->COL_QSL_VIA:"n/a").")";
break;
case "E":
echo " (".lang('general_word_qslcard_electronic').")";
break;
}
}
echo '">&#9650;</span>';
echo '<span ';
if ($row->COL_QSL_RCVD != "N") {
if ($row->COL_QSLRDATE != null) {
$timestamp = ' '.date($custom_date_format, strtotime($row->COL_QSLRDATE));
} else {
$timestamp = '';
}
switch ($row->COL_QSL_RCVD) {
case "Y":
echo "class=\"qsl-green\" data-bs-toggle=\"tooltip\" title=\"".lang('general_word_received').$timestamp;
break;
case "Q":
echo "class=\"qsl-yellow\" data-bs-toggle=\"tooltip\" title=\"".lang('general_word_queued').$timestamp;
break;
case "R":
echo "class=\"qsl-yellow\" data-bs-toggle=\"tooltip\" title=\"".lang('general_word_requested').$timestamp;
break;
case "I":
echo "class=\"qsl-grey\" data-bs-toggle=\"tooltip\" title=\"".lang('general_word_invalid_ignore').$timestamp;
break;
default:
echo "class=\"qsl-red";
break;
}
} else { echo "class=\"qsl-red"; }
if ($row->COL_QSL_RCVD_VIA != "") {
switch ($row->COL_QSL_RCVD_VIA) {
case "B":
echo " (".lang('general_word_qslcard_bureau').")";
break;
case "D":
echo " (".lang('general_word_qslcard_direct').")";
break;
case "M":
echo " (Manager)";
break;
case "E":
echo " (".lang('general_word_qslcard_electronic').")";
break;
}
}
echo '">&#9660;</span>';
?>
<?php if ($this->session->userdata('user_eqsl_name') != ""){
echo '<td style=\'text-align: center\' class="eqsl">';
echo '<span ';
if ($row->COL_EQSL_QSL_SENT == "Y") {
echo "title=\"".lang('eqsl_short')." ".lang('general_word_sent');
if ($row->COL_EQSL_QSLSDATE != null) {
$timestamp = strtotime($row->COL_EQSL_QSLSDATE);
echo " ".($timestamp != '' ? date($custom_date_format, $timestamp) : '');
}
echo "\" data-bs-toggle=\"tooltip\"";
}
echo ' class="eqsl-';
echo ($row->COL_EQSL_QSL_SENT=='Y')?'green':'red';
echo '">&#9650;</span>';
echo '<span ';
if ($row->COL_EQSL_QSL_RCVD == "Y") {
echo "title=\"".lang('eqsl_short')." ".lang('general_word_received');
if ($row->COL_EQSL_QSLRDATE != null) {
$timestamp = strtotime($row->COL_EQSL_QSLRDATE);
echo " ".($timestamp != '' ? date($custom_date_format, $timestamp) : '');
}
echo "\" data-bs-toggle=\"tooltip\"";
}
echo ' class="eqsl-';
echo ($row->COL_EQSL_QSL_RCVD=='Y')?'green':'red';
echo '">';
if($row->COL_EQSL_QSL_RCVD =='Y') {
echo '<a style="color: green" href="';
echo site_url("eqsl/image/".$row->COL_PRIMARY_KEY);
echo '" data-fancybox="images" data-width="528" data-height="336">&#9660;</a>';
} else {
echo '&#9660;';
}
echo '</span>';
echo '</td>';
} ?>
<?php if($this->session->userdata('user_lotw_name') != "") {
echo '<td style=\'text-align: center\' class="lotw">';
echo '<span ';
if ($row->COL_LOTW_QSL_SENT == "Y") {
echo "title=\"".lang('lotw_short')." ".lang('general_word_sent');
if ($row->COL_LOTW_QSLSDATE != null) {
$timestamp = strtotime($row->COL_LOTW_QSLSDATE);
echo " ".($timestamp != '' ? date($custom_date_format, $timestamp) : '');
}
echo "\" data-bs-toggle=\"tooltip\"";
}
echo ' class="lotw-';
echo ($row->COL_LOTW_QSL_SENT=='Y')?'green':'red';
echo '">&#9650;</span>';
echo '<span ';
if ($row->COL_LOTW_QSL_RCVD == "Y") {
echo "title=\"".lang('lotw_short')." ".lang('general_word_received');
if ($row->COL_LOTW_QSLRDATE != null) {
$timestamp = strtotime($row->COL_LOTW_QSLRDATE);
echo " ".($timestamp != '' ? date($custom_date_format, $timestamp) : '');
}
echo "\" data-bs-toggle=\"tooltip\"";
}
echo ' class="lotw-';
echo ($row->COL_LOTW_QSL_RCVD=='Y')?'green':'red';
echo '">&#9660;</span>';
echo '</td>';
} ?>
<?php if($this->session->userdata('hasQrzKey') != "") {
echo '<td style=\'text-align: center\' class="qrz">';
echo '<span ';
if ($row->COL_QRZCOM_QSO_UPLOAD_STATUS == "Y") {
echo "title=\"QRZ ".lang('general_word_sent');
if ($row->COL_QRZCOM_QSO_UPLOAD_DATE != null) {
$timestamp = strtotime($row->COL_QRZCOM_QSO_UPLOAD_DATE);
echo " ".($timestamp != '' ? date($custom_date_format, $timestamp) : '');
}
echo "\" data-bs-toggle=\"tooltip\"";
}
echo ' class="qrz-';
echo ($row->COL_QRZCOM_QSO_UPLOAD_STATUS=='Y')?'green':'red';
echo '">&#9650;</span>';
echo '<span ';
if ($row->COL_QRZCOM_QSO_DOWNLOAD_STATUS == "Y") {
echo "title=\"QRZ ".lang('general_word_received');
if ($row->COL_QRZCOM_QSO_DOWNLOAD_DATE != null) {
$timestamp = strtotime($row->COL_QRZCOM_QSO_DOWNLOAD_DATE);
echo " ".($timestamp != '' ? date($custom_date_format, $timestamp) : '');
}
echo "\" data-bs-toggle=\"tooltip\"";
}
echo ' class="qrz-';
echo ($row->COL_QRZCOM_QSO_DOWNLOAD_STATUS=='Y')?'green':'red';
echo '">&#9660;</span>';
echo '</td>';
} ?>
<?php } ?>
<?php if(isset($row->station_callsign)) { ?>
<td>
<span class="badge text-bg-light"><?php echo $row->station_callsign; ?></span>
</td>
<?php } ?>
<?php if(($this->config->item('use_auth')) && ($this->session->userdata('user_type') >= 2)) { ?>
<?php echo '<tr class="tr' . ($i & 1) . '" id="qso_' . $row->COL_PRIMARY_KEY . '">'; ?>
<td><?php $timestamp = strtotime($row->COL_TIME_ON);
echo date($custom_date_format, $timestamp); ?></td>
<?php if (($this->config->item('use_auth') && ($this->session->userdata('user_type') >= 2)) || $this->config->item('use_auth') === FALSE || ($this->config->item('show_time'))) { ?>
<td><?php $timestamp = strtotime($row->COL_TIME_ON);
echo date('H:i', $timestamp); ?></td>
<?php } ?>
<td>
<div class="dropdown">
<a class="btn btn-sm btn-secondary dropdown-toggle" href="#" role="button" id="dropdownMenuLink" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<i class="fas fa-cog"></i>
</a>
<div class="dropdown-menu menuOnResultTab" aria-labelledby="dropdownMenuLink" data-qsoid="qso_<?php echo $row->COL_PRIMARY_KEY; ?>">
<a class="dropdown-item" id="edit_qso" href="javascript:qso_edit(<?php echo $row->COL_PRIMARY_KEY; ?>)"><i class="fas fa-edit"></i> <?php echo lang('general_edit_qso'); ?></a>
<?php if($row->COL_QSL_SENT !='Y') { ?>
<div class="qsl_sent_<?php echo $row->COL_PRIMARY_KEY; ?>">
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="javascript:qsl_sent(<?php echo $row->COL_PRIMARY_KEY; ?>, 'B')" ><i class="fas fa-envelope"></i> <?php echo lang('general_mark_qsl_tx_bureau'); ?></a>
<a class="dropdown-item" href="javascript:qsl_sent(<?php echo $row->COL_PRIMARY_KEY; ?>, 'D')" ><i class="fas fa-envelope"></i> <?php echo lang('general_mark_qsl_tx_direct'); ?></a>
</div>
<?php } ?>
<?php if($row->COL_QSL_RCVD !='Y') { ?>
<div class="qsl_rcvd_<?php echo $row->COL_PRIMARY_KEY; ?>">
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="javascript:qsl_rcvd(<?php echo $row->COL_PRIMARY_KEY; ?>, 'B')" ><i class="fas fa-envelope"></i> <?php echo lang('general_mark_qsl_rx_bureau'); ?></a>
<a class="dropdown-item" href="javascript:qsl_rcvd(<?php echo $row->COL_PRIMARY_KEY; ?>, 'D')" ><i class="fas fa-envelope"></i> <?php echo lang('general_mark_qsl_rx_direct'); ?></a>
<a class="dropdown-item" href="javascript:qsl_requested(<?php echo $row->COL_PRIMARY_KEY; ?>, 'D')" ><i class="fas fa-envelope"></i><?php echo lang('general_mark_qsl_requested'); ?></a>
<a class="dropdown-item" href="javascript:qsl_ignore(<?php echo $row->COL_PRIMARY_KEY; ?>, 'D')" ><i class="fas fa-envelope"></i><?php echo lang('general_mark_qsl_not_required'); ?></a>
</div>
<?php } ?>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="https://www.qrz.com/db/<?php echo $row->COL_CALL; ?>" target="_blank"><i class="fas fa-question"></i><?php echo lang('general_lookup_qrz'); ?></a>
<a class="dropdown-item" href="https://www.hamqth.com/<?php echo $row->COL_CALL; ?>" target="_blank"><i class="fas fa-question"></i><?php echo lang('general_lookup_hamqth'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="javascript:qso_delete(<?php echo $row->COL_PRIMARY_KEY; ?>, '<?php echo $row->COL_CALL; ?>')"><i class="fas fa-trash-alt"></i> <?php echo lang('general_delete_qso'); ?></a>
</div>
</div>
<a id="edit_qso" href="javascript:displayQso(<?php echo $row->COL_PRIMARY_KEY; ?>)"><?php echo str_replace("0", "&Oslash;", strtoupper($row->COL_CALL)); ?></a>
</td>
<?php } ?>
</tr>
<?php $i++; } ?>
</tbody>
<?php
echo '<td>';
echo_table_col($row, $this->session->userdata('user_column1') == "" ? 'Mode' : $this->session->userdata('user_column1'));
echo '</td><td>';
echo_table_col($row, $this->session->userdata('user_column2') == "" ? 'RSTS' : $this->session->userdata('user_column2'));
echo '</td><td>';
echo_table_col($row, $this->session->userdata('user_column3') == "" ? 'RSTR' : $this->session->userdata('user_column3'));
echo '</td><td>';
echo_table_col($row, $this->session->userdata('user_column4') == "" ? 'Band' : $this->session->userdata('user_column4'));
echo '</td><td>';
echo_table_col($row, $this->session->userdata('user_column5') == "" ? 'Country' : $this->session->userdata('user_column5'));
echo '</td>';
if (($this->config->item('use_auth')) && ($this->session->userdata('user_type') >= 2)) { ?>
<?php
echo '<td id="qsl_' . $row->COL_PRIMARY_KEY . '" style=\'text-align: center\' class="qsl">';
echo '<span ';
if ($row->COL_QSL_SENT != "N") {
if ($row->COL_QSLSDATE != null) {
$timestamp = ' ' . date($custom_date_format, strtotime($row->COL_QSLSDATE));
} else {
$timestamp = '';
}
switch ($row->COL_QSL_SENT) {
case "Y":
echo "class=\"qsl-green\" data-bs-toggle=\"tooltip\" title=\"" . lang('general_word_sent') . $timestamp;
break;
case "Q":
echo "class=\"qsl-yellow\" data-bs-toggle=\"tooltip\" title=\"" . lang('general_word_queued') . $timestamp;
break;
case "R":
echo "class=\"qsl-yellow\" data-bs-toggle=\"tooltip\" title=\"" . lang('general_word_requested') . $timestamp;
break;
case "I":
echo "class=\"qsl-grey\" data-bs-toggle=\"tooltip\" title=\"" . lang('general_word_invalid_ignore') . $timestamp;
break;
default:
echo "class=\"qsl-red";
break;
}
} else {
echo "class=\"qsl-red";
}
if ($row->COL_QSL_SENT_VIA != "") {
switch ($row->COL_QSL_SENT_VIA) {
case "B":
echo " (" . lang('general_word_qslcard_bureau') . ")";
break;
case "D":
echo " (" . lang('general_word_qslcard_direct') . ")";
break;
case "M":
echo " (" . lang('general_word_qslcard_via') . ": " . ($row->COL_QSL_VIA != "" ? $row->COL_QSL_VIA : "n/a") . ")";
break;
case "E":
echo " (" . lang('general_word_qslcard_electronic') . ")";
break;
}
}
echo '">&#9650;</span>';
echo '<span ';
if ($row->COL_QSL_RCVD != "N") {
if ($row->COL_QSLRDATE != null) {
$timestamp = ' ' . date($custom_date_format, strtotime($row->COL_QSLRDATE));
} else {
$timestamp = '';
}
switch ($row->COL_QSL_RCVD) {
case "Y":
echo "class=\"qsl-green\" data-bs-toggle=\"tooltip\" title=\"" . lang('general_word_received') . $timestamp;
break;
case "Q":
echo "class=\"qsl-yellow\" data-bs-toggle=\"tooltip\" title=\"" . lang('general_word_queued') . $timestamp;
break;
case "R":
echo "class=\"qsl-yellow\" data-bs-toggle=\"tooltip\" title=\"" . lang('general_word_requested') . $timestamp;
break;
case "I":
echo "class=\"qsl-grey\" data-bs-toggle=\"tooltip\" title=\"" . lang('general_word_invalid_ignore') . $timestamp;
break;
default:
echo "class=\"qsl-red";
break;
}
} else {
echo "class=\"qsl-red";
}
if ($row->COL_QSL_RCVD_VIA != "") {
switch ($row->COL_QSL_RCVD_VIA) {
case "B":
echo " (" . lang('general_word_qslcard_bureau') . ")";
break;
case "D":
echo " (" . lang('general_word_qslcard_direct') . ")";
break;
case "M":
echo " (Manager)";
break;
case "E":
echo " (" . lang('general_word_qslcard_electronic') . ")";
break;
}
}
echo '">&#9660;</span>';
?>
<?php if ($this->session->userdata('user_eqsl_name') != "") {
echo '<td style=\'text-align: center\' class="eqsl">';
echo '<span ';
if ($row->COL_EQSL_QSL_SENT == "Y") {
echo "title=\"" . lang('eqsl_short') . " " . lang('general_word_sent');
if ($row->COL_EQSL_QSLSDATE != null) {
$timestamp = strtotime($row->COL_EQSL_QSLSDATE);
echo " " . ($timestamp != '' ? date($custom_date_format, $timestamp) : '');
}
echo "\" data-bs-toggle=\"tooltip\"";
}
echo ' class="eqsl-';
echo ($row->COL_EQSL_QSL_SENT == 'Y') ? 'green' : 'red';
echo '">&#9650;</span>';
echo '<span ';
if ($row->COL_EQSL_QSL_RCVD == "Y") {
echo "title=\"" . lang('eqsl_short') . " " . lang('general_word_received');
if ($row->COL_EQSL_QSLRDATE != null) {
$timestamp = strtotime($row->COL_EQSL_QSLRDATE);
echo " " . ($timestamp != '' ? date($custom_date_format, $timestamp) : '');
}
echo "\" data-bs-toggle=\"tooltip\"";
}
echo ' class="eqsl-';
echo ($row->COL_EQSL_QSL_RCVD == 'Y') ? 'green' : 'red';
echo '">';
if ($row->COL_EQSL_QSL_RCVD == 'Y') {
echo '<a style="color: green" href="';
echo site_url("eqsl/image/" . $row->COL_PRIMARY_KEY);
echo '" data-fancybox="images" data-width="528" data-height="336">&#9660;</a>';
} else {
echo '&#9660;';
}
echo '</span>';
echo '</td>';
} ?>
<?php if ($this->session->userdata('user_lotw_name') != "") {
echo '<td style=\'text-align: center\' class="lotw">';
echo '<span ';
if ($row->COL_LOTW_QSL_SENT == "Y") {
echo "title=\"" . lang('lotw_short') . " " . lang('general_word_sent');
if ($row->COL_LOTW_QSLSDATE != null) {
$timestamp = strtotime($row->COL_LOTW_QSLSDATE);
echo " " . ($timestamp != '' ? date($custom_date_format, $timestamp) : '');
}
echo "\" data-bs-toggle=\"tooltip\"";
}
echo ' class="lotw-';
echo ($row->COL_LOTW_QSL_SENT == 'Y') ? 'green' : 'red';
echo '">&#9650;</span>';
echo '<span ';
if ($row->COL_LOTW_QSL_RCVD == "Y") {
echo "title=\"" . lang('lotw_short') . " " . lang('general_word_received');
if ($row->COL_LOTW_QSLRDATE != null) {
$timestamp = strtotime($row->COL_LOTW_QSLRDATE);
echo " " . ($timestamp != '' ? date($custom_date_format, $timestamp) : '');
}
echo "\" data-bs-toggle=\"tooltip\"";
}
echo ' class="lotw-';
echo ($row->COL_LOTW_QSL_RCVD == 'Y') ? 'green' : 'red';
echo '">&#9660;</span>';
echo '</td>';
} ?>
<?php if ($this->session->userdata('hasQrzKey') != "") {
echo '<td style=\'text-align: center\' class="qrz">';
echo '<span ';
if ($row->COL_QRZCOM_QSO_UPLOAD_STATUS == "Y") {
echo "title=\"QRZ " . lang('general_word_sent');
if ($row->COL_QRZCOM_QSO_UPLOAD_DATE != null) {
$timestamp = strtotime($row->COL_QRZCOM_QSO_UPLOAD_DATE);
echo " " . ($timestamp != '' ? date($custom_date_format, $timestamp) : '');
}
echo "\" data-bs-toggle=\"tooltip\"";
}
echo ' class="qrz-';
echo ($row->COL_QRZCOM_QSO_UPLOAD_STATUS == 'Y') ? 'green' : 'red';
echo '">&#9650;</span>';
echo '<span ';
if ($row->COL_QRZCOM_QSO_DOWNLOAD_STATUS == "Y") {
echo "title=\"QRZ " . lang('general_word_received');
if ($row->COL_QRZCOM_QSO_DOWNLOAD_DATE != null) {
$timestamp = strtotime($row->COL_QRZCOM_QSO_DOWNLOAD_DATE);
echo " " . ($timestamp != '' ? date($custom_date_format, $timestamp) : '');
}
echo "\" data-bs-toggle=\"tooltip\"";
}
echo ' class="qrz-';
echo ($row->COL_QRZCOM_QSO_DOWNLOAD_STATUS == 'Y') ? 'green' : 'red';
echo '">&#9660;</span>';
echo '</td>';
} ?>
<?php } ?>
<?php if (isset($row->station_callsign)) { ?>
<td>
<span class="badge text-bg-light"><?php echo $row->station_callsign; ?></span>
</td>
<?php } ?>
<?php if (($this->config->item('use_auth')) && ($this->session->userdata('user_type') >= 2)) { ?>
<td>
<div class="dropdown">
<a class="btn btn-sm btn-secondary dropdown-toggle" href="#" role="button" id="dropdownMenuLink" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<i class="fas fa-cog"></i>
</a>
<div class="dropdown-menu menuOnResultTab" aria-labelledby="dropdownMenuLink" data-qsoid="qso_<?php echo $row->COL_PRIMARY_KEY; ?>">
<a class="dropdown-item" id="edit_qso" href="javascript:qso_edit(<?php echo $row->COL_PRIMARY_KEY; ?>)"><i class="fas fa-edit"></i> <?php echo lang('general_edit_qso'); ?></a>
<?php if ($row->COL_QSL_SENT != 'Y') { ?>
<div class="qsl_sent_<?php echo $row->COL_PRIMARY_KEY; ?>">
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="javascript:qsl_sent(<?php echo $row->COL_PRIMARY_KEY; ?>, 'B')"><i class="fas fa-envelope"></i> <?php echo lang('general_mark_qsl_tx_bureau'); ?></a>
<a class="dropdown-item" href="javascript:qsl_sent(<?php echo $row->COL_PRIMARY_KEY; ?>, 'D')"><i class="fas fa-envelope"></i> <?php echo lang('general_mark_qsl_tx_direct'); ?></a>
</div>
<?php } ?>
<?php if ($row->COL_QSL_RCVD != 'Y') { ?>
<div class="qsl_rcvd_<?php echo $row->COL_PRIMARY_KEY; ?>">
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="javascript:qsl_rcvd(<?php echo $row->COL_PRIMARY_KEY; ?>, 'B')"><i class="fas fa-envelope"></i> <?php echo lang('general_mark_qsl_rx_bureau'); ?></a>
<a class="dropdown-item" href="javascript:qsl_rcvd(<?php echo $row->COL_PRIMARY_KEY; ?>, 'D')"><i class="fas fa-envelope"></i> <?php echo lang('general_mark_qsl_rx_direct'); ?></a>
<a class="dropdown-item" href="javascript:qsl_requested(<?php echo $row->COL_PRIMARY_KEY; ?>, 'D')"><i class="fas fa-envelope"></i><?php echo lang('general_mark_qsl_requested'); ?></a>
<a class="dropdown-item" href="javascript:qsl_ignore(<?php echo $row->COL_PRIMARY_KEY; ?>, 'D')"><i class="fas fa-envelope"></i><?php echo lang('general_mark_qsl_not_required'); ?></a>
</div>
<?php } ?>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="https://www.qrz.com/db/<?php echo $row->COL_CALL; ?>" target="_blank"><i class="fas fa-question"></i><?php echo lang('general_lookup_qrz'); ?></a>
<a class="dropdown-item" href="https://www.hamqth.com/<?php echo $row->COL_CALL; ?>" target="_blank"><i class="fas fa-question"></i><?php echo lang('general_lookup_hamqth'); ?></a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="javascript:qso_delete(<?php echo $row->COL_PRIMARY_KEY; ?>, '<?php echo $row->COL_CALL; ?>')"><i class="fas fa-trash-alt"></i> <?php echo lang('general_delete_qso'); ?></a>
</div>
</div>
</td>
<?php } ?>
</tr>
<?php $i++;
} ?>
</tbody>
</table>
</div>
</div>

Wyświetl plik

@ -36,8 +36,22 @@
<div class="mb-3">
<label for="stationCallsignInput"><?php echo lang("station_location_callsign"); ?></label>
<input type="text" class="form-control" name="station_callsign" id="stationCallsignInput" aria-describedby="stationCallsignInputHelp" placeholder="2M0SQL" required>
<small id="stationCallsignInputHelp" class="form-text text-muted"><?php echo lang("station_location_callsign_hint"); ?></small>
<input type="text" class="form-control" name="station_callsign" id="stationCallsignInput" aria-describedby="stationCallsignInputHelp" placeholder="2M0SQL" pattern="[a-zA-Z0-9\/]*" required oninput="validateInput(this);">
<div id="stationCallsignInputError" style="display: none; color: red;">Only letters, numbers, and forward slashes are allowed.</div>
<script>
function validateInput(input) {
var errorDiv = document.getElementById('stationCallsignInputError');
if (input.checkValidity()) {
input.classList.remove('error-red-border');
errorDiv.style.display = 'none';
} else {
input.classList.add('error-red-border');
errorDiv.style.display = 'block';
}
}
</script>
<small id="stationCallsignInputHelp" class="form-text text-muted"><?php echo lang("station_location_callsign_hint"); ?></small>
</div>
<div class="mb-3">

Wyświetl plik

@ -53,7 +53,7 @@
<th style="text-align: center; vertical-align: middle;" scope="col"><?php echo lang('admin_delete'); ?></th>
</tr>
</thead>
<tbody>
<tbody hx-confirm="Are you sure you want to delete the user?" hx-target="closest tr" hx-swap="outerHTML swap:1s">
<?php
@ -80,11 +80,10 @@
}
?></td>
<td style="text-align: center; vertical-align: middle;">
<?php
if ($_SESSION['user_id'] != $row->user_id) {
echo "<a href=" . site_url('user/delete') . "/" . $row->user_id . " class=\"btn btn-danger btn-sm\"><i class=\"fas fa-user-minus\"></i></a>";
}
?></td>
<?php if ($_SESSION['user_id'] != $row->user_id) { ?>
<button class="btn btn-danger btn-sm" hx-delete="<?php echo site_url('user/delete_new/'.$row->user_id);?>"><i class="fas fa-user-minus"></i></button>
<?php } ?>
</td>
</td>
</tr>
<?php $i++;

Wyświetl plik

@ -796,4 +796,13 @@ label {
}
.table-responsive>table .dropdown{position:static;}
.table-responsive>table .dropdown>.dropdown-menu{left:auto !important;top:auto !important;}
.table-responsive>table .dropdown>.dropdown-menu{left:auto !important;top:auto !important;}
tr.htmx-swapping td {
opacity: 0;
transition: opacity 1s ease-out;
}
.error-red-border {
border-color: red;
}

1
assets/js/htmx.min.js vendored 100644

File diff suppressed because one or more lines are too long

Plik diff jest za duży Load Diff

Plik diff jest za duży Load Diff

Wyświetl plik

@ -0,0 +1,8 @@
<html>
<head>
<title>403 Forbidden</title>
</head>
<body>
<p>Directory access is forbidden.</p>
</body>
</html>