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

This commit is contained in:
HB9HIL
2024-08-21 22:07:08 +02:00
71 changed files with 14639 additions and 11139 deletions

View File

@@ -669,4 +669,17 @@ $config['disable_oqrs'] = false;
$config['special_callsign'] = false;
// hides the usermenu; takes action only if "special_callsign" is true
$config['sc_hide_usermenu'] = true;
$config['sc_hide_usermenu'] = true;
/*
|--------------------------------------------------------------------------
| Impersonate
|--------------------------------------------------------------------------
|
| This config switch disables the impersonate feature. This feauture is used to impersonate another user.
| Impersonate is enabled by default. To disable it, set the value to false.
|
*/
$config['disable_impersonate'] = false;

View File

@@ -72,7 +72,6 @@ class Contestcalendar extends CI_Controller {
return $rssData;
}
private function parseTimeRange($string) {
$timeData = array();
@@ -86,7 +85,19 @@ class Contestcalendar extends CI_Controller {
// create proper dateTime
$timeData['start'] = DateTime::createFromFormat('Hi\Z, M d', $start);
if (!$timeData['start']) {
// If the first format didn't match, try the format without the comma
$timeData['start'] = DateTime::createFromFormat('Hi\Z M d', $start);
}
$timeData['end'] = DateTime::createFromFormat('Hi\Z, M d', $end);
if (!$timeData['end']) {
// If the first format didn't match, try the format without the comma
$timeData['end'] = DateTime::createFromFormat('Hi\Z M d', $end);
}
} else {
// split in start and end time
@@ -144,8 +155,8 @@ class Contestcalendar extends CI_Controller {
continue;
}
$start = date('Y-m-d', strtotime($contest['start']->format('Y-m-d')));
$end = date('Y-m-d', strtotime($contest['end']->format('Y-m-d')));
$start = $contest['start'] == '' ? '' : date('Y-m-d', strtotime($contest['start']->format('Y-m-d')));
$end = $contest['end'] == '' ? '' : date('Y-m-d', strtotime($contest['end']->format('Y-m-d')));
if ($start <= $this->today && $end >= $this->today) {
$contestsToday[] = $contest;
@@ -175,8 +186,8 @@ class Contestcalendar extends CI_Controller {
continue;
}
$start = date('Y-m-d', strtotime($contest['start']->format('Y-m-d')));
$end = date('Y-m-d', strtotime($contest['end']->format('Y-m-d')));
$start = $contest['start'] == '' ? '' : date('Y-m-d', strtotime($contest['start']->format('Y-m-d')));
$end = $contest['end'] == '' ? '' : date('Y-m-d', strtotime($contest['end']->format('Y-m-d')));
if ($start >= $nextFriday && $start <= $nextSunday && $start >= $this->today) {
$contestsNextWeekend[] = $contest;

View File

@@ -388,6 +388,7 @@ class eqsl extends CI_Controller {
return $error;
}
session_write_close();
foreach ($images as $image) {
$content = file_get_contents("https://www.eqsl.cc" . $image->getAttribute('src'));
if ($content === false) {

View File

@@ -139,7 +139,7 @@ class Logbook extends CI_Controller {
$return['callsign_name'] = $this->nval($callbook['name'] ?? '', $this->logbook_model->call_name($callsign));
$return['callsign_qra'] = $this->nval($callbook['gridsquare'] ?? '', $this->logbook_model->call_qra($callsign));
$return['callsign_distance'] = $this->distance($return['callsign_qra']);
$return['callsign_distance'] = $this->distance($return['callsign_qra'], $station_id);
$return['callsign_qth'] = $this->nval($callbook['city'] ?? '', $this->logbook_model->call_qth($callsign));
$return['callsign_iota'] = $this->nval($callbook['iota'] ?? '', $this->logbook_model->call_iota($callsign));
$return['qsl_manager'] = $this->nval($callbook['qslmgr'] ?? '', $this->logbook_model->call_qslvia($callsign));

View File

@@ -149,14 +149,14 @@ class Lotw extends CI_Controller {
$this->Lotw_model->store_certificate($this->session->userdata('user_id'), $info['issued_callsign'], $info['dxcc-id'], $info['validFrom'], $info['validTo_Date'], $info['qso-first-date'], $info['qso-end-date'], $info['pem_key'], $info['general_cert']);
// Cert success flash message
$this->session->set_flashdata('Success', $info['issued_callsign'].' Certificate Imported.');
$this->session->set_flashdata('success', $info['issued_callsign'] . ' ' . __("Certificate Imported."));
} else {
// Certificate is in the system time to update
$this->Lotw_model->update_certificate($this->session->userdata('user_id'), $info['issued_callsign'], $info['dxcc-id'], $info['validFrom'], $info['validTo_Date'], $info['qso-first-date'], $info['qso-end-date'], $info['pem_key'], $info['general_cert']);
// Cert success flash message
$this->session->set_flashdata('Success', $info['issued_callsign'].' Certificate Updated.');
$this->session->set_flashdata('success', $info['issued_callsign'] . ' ' . __("Certificate Updated."));
}
@@ -381,9 +381,9 @@ class Lotw extends CI_Controller {
$this->Lotw_model->delete_certificate($this->session->userdata('user_id'), $cert_id);
$this->session->set_flashdata('Success', 'Certificate Deleted.');
$this->session->set_flashdata('success', __("Certificate Deleted."));
redirect('/lotw/');
redirect('lotw');
}
@@ -405,7 +405,14 @@ class Lotw extends CI_Controller {
$filename = file_get_contents('file://'.$file);
$worked = openssl_pkcs12_read($filename, $results, $password);
$data['general_cert'] = $results['cert'];
if ($results['cert']) {
$data['general_cert'] = $results['cert'];
} else {
log_message('error', 'Found no certificate in file '.$file);
unlink($file);
$this->session->set_flashdata('warning', sprintf(__("Found no certificate in file %s. If the filename contains 'key-only' this is typically a certificate request which has not been processed by LoTW yet."), basename($file)));
redirect('lotw');
}
if($worked) {
@@ -422,16 +429,16 @@ class Lotw extends CI_Controller {
log_message('error', openssl_error_string());
// Set warning message redirect to LoTW main page
$this->session->set_flashdata('Warning', openssl_error_string());
redirect('/lotw/');
$this->session->set_flashdata('warning', openssl_error_string());
redirect('lotw');
}
} else {
// Reading p12 failed log error message
log_message('error', openssl_error_string());
// Set warning message redirect to LoTW main page
$this->session->set_flashdata('Warning', openssl_error_string());
redirect('/lotw/');
$this->session->set_flashdata('warning', openssl_error_string());
redirect('lotw');
}
// Read Cert Data
@@ -742,7 +749,7 @@ class Lotw extends CI_Controller {
// TODO: We don't actually see the error message
if ($data['user_lotw_name'] == '' || $data['user_lotw_password'] == '')
{
$this->session->set_flashdata('warning', 'You have not defined your ARRL LoTW credentials!'); redirect('lotw/import');
$this->session->set_flashdata('warning', __("You have not defined your ARRL LoTW credentials!")); redirect('lotw/import');
}
$customDate = $this->input->post('from');
@@ -860,7 +867,7 @@ class Lotw extends CI_Controller {
if ($fields['login'] == '' || $fields['password'] == '')
{
$this->session->set_flashdata('warning', 'You have not defined your ARRL LoTW credentials!'); redirect('lotw/status');
$this->session->set_flashdata('warning', __("You have not defined your ARRL LoTW credentials!")); redirect('lotw/status');
}
// Curl stuff goes here
@@ -905,7 +912,7 @@ class Lotw extends CI_Controller {
$result = curl_exec($ch);
if (stristr($result, "Username/password incorrect"))
{
$this->session->set_flashdata('warning', 'Your ARRL username and/or password is incorrect.'); redirect('lotw/status');
$this->session->set_flashdata('warning', __("Your ARRL username and/or password is incorrect.")); redirect('lotw/status');
}

View File

@@ -23,8 +23,13 @@ class Qrbcalc extends CI_Controller {
}
public function calculate() {
$locator1 = $this->input->post("locator1");
$locator2 = $this->input->post("locator2");
if(!$this->load->is_loaded('Qra')) {
$this->load->library('Qra');
}
$locator1 = strtoupper($this->input->post("locator1", TRUE));
$locator2 = strtoupper($this->input->post("locator2", TRUE));
if ($this->session->userdata('user_measurement_base') == NULL) {
$measurement_base = $this->config->item('measurement_base');
@@ -33,34 +38,39 @@ class Qrbcalc extends CI_Controller {
$measurement_base = $this->session->userdata('user_measurement_base');
}
switch ($measurement_base) {
case 'M':
$var_dist = " miles";
break;
case 'N':
$var_dist = " nautic miles";
break;
case 'K':
$var_dist = " kilometers";
break;
}
if(!$this->load->is_loaded('Qra')) {
$this->load->library('Qra');
}
$data['result'] = $this->qra->bearing($locator1, $locator2, $measurement_base);
$data['distance'] = $this->qra->distance($locator1, $locator2, $measurement_base) . $var_dist;
$data['bearing'] = $this->qra->get_bearing($locator1, $locator2) . "&#186;";
$latlng1 = $this->qra->qra2latlong($locator1);
$latlng2 = $this->qra->qra2latlong($locator2);
$latlng1[0] = number_format((float)$latlng1[0], 3, '.', '');;
$latlng1[1] = number_format((float)$latlng1[1], 3, '.', '');;
$latlng2[0] = number_format((float)$latlng2[0], 3, '.', '');;
$latlng2[1] = number_format((float)$latlng2[1], 3, '.', '');;
$distance = $this->qra->distance($locator1, $locator2, $measurement_base);
$text_latlng1 = $locator1 . ' ' . sprintf(__("Latitude: %s, Longitude: %s"), $latlng1[0], $latlng1[1]);
$text_latlng2 = $locator2 . ' ' . sprintf(__("Latitude: %s, Longitude: %s"), $latlng2[0], $latlng2[1]);
switch ($measurement_base) {
case 'M':
$var_dist = sprintf(_ngettext("The distance between %s and %s is %s mile.", "The distance between %s and %s is %s miles.", intval($distance)), $locator1, $locator2, $distance);
break;
case 'N':
$var_dist = sprintf(_ngettext("The distance between %s and %s is %s nautical mile.", "The distance between %s and %s is %s nautical miles.", intval($distance)), $locator1, $locator2, $distance);
break;
case 'K':
$var_dist = sprintf(_ngettext("The distance between %s and %s is %s kilometer.", "The distance between %s and %s is %s kilometers.", intval($distance)), $locator1, $locator2, $distance);
break;
}
$data['result'] = $this->qra->bearing($locator1, $locator2, $measurement_base);
$data['distance'] = $var_dist;
$data['bearing'] = sprintf(__("The bearing is %s."), $this->qra->get_bearing($locator1, $locator2) . "&#186;");
$data['latlng1'] = $latlng1;
$data['text_latlng1'] = $text_latlng1;
$data['text_latlng2'] = $text_latlng2;
$data['latlng2'] = $latlng2;
$data['latlong_info_text'] = __("Negative latitudes are south of the equator, negative longitudes are west of Greenwich.");
header('Content-Type: application/json');
echo json_encode($data);
}

View File

@@ -147,16 +147,16 @@ class QSO extends CI_Controller {
//change to create_qso function as add and create_qso duplicate functionality
$this->logbook_model->create_qso();
$retuner=[];
$actstation=$this->stations->find_active() ?? '';
$returner['activeStationId'] = $actstation;
$profile_info = $this->stations->profile($actstation)->row();
$returner['activeStationTXPower'] = xss_clean($profile_info->station_power);
$returner['activeStationOP'] = xss_clean($this->session->userdata('operator_callsign'));
$returner=[];
$actstation=$this->stations->find_active() ?? '';
$returner['activeStationId'] = $actstation;
$profile_info = $this->stations->profile($actstation)->row();
$returner['activeStationTXPower'] = xss_clean($profile_info->station_power);
$returner['activeStationOP'] = xss_clean($this->session->userdata('operator_callsign'));
$returner['message']='success';
// Get last 5 qsos
echo json_encode($returner);
echo json_encode($returner);
}
}
@@ -205,13 +205,9 @@ class QSO extends CI_Controller {
$this->load->model('winkey');
// call settings from model winkey
$data['result'] = $this->winkey->settings($this->session->userdata('user_id'), $this->session->userdata('station_profile_id'));
$data['result'] = $this->winkey->settings($this->session->userdata('user_id'), $this->stations->find_active());
if ($data['result'] == false) {
$this->load->view('qso/components/winkeysettings', $data);
} else {
$this->load->view('qso/components/winkeysettings_results', $data);
}
$this->load->view('qso/components/winkeysettings', $data);
}
function cwmacrosave(){
@@ -233,7 +229,7 @@ class QSO extends CI_Controller {
$data = [
'user_id' => $this->session->userdata('user_id'),
'station_location_id' => $this->session->userdata('station_profile_id'),
'station_location_id' => $this->stations->find_active(),
'function1_name' => $function1_name,
'function1_macro' => $function1_macro,
'function2_name' => $function2_name,
@@ -262,7 +258,7 @@ class QSO extends CI_Controller {
header('Content-Type: application/json; charset=utf-8');
// Call settings_json from model winkey
echo $this->winkey->settings_json($this->session->userdata('user_id'), $this->session->userdata('station_profile_id'));
echo $this->winkey->settings_json($this->session->userdata('user_id'), $this->stations->find_active());
}
function edit_ajax() {
@@ -340,20 +336,20 @@ class QSO extends CI_Controller {
function qsl_sent_ajax() {
$id = str_replace('"', "", $this->input->post("id", TRUE));
$method = str_replace('"', "", $this->input->post("method", TRUE));
$this->load->model('logbook_model');
$this->load->model('user_model');
header('Content-Type: application/json');
if(!$this->user_model->authorize(2)) {
echo json_encode(array('message' => 'Error'));
}
else {
// Update Logbook to Mark Paper Card Sent
$this->logbook_model->paperqsl_update_sent($id, $method);
echo json_encode(array('message' => 'OK'));
}
}

View File

@@ -289,7 +289,7 @@ class Update extends CI_Controller {
$this->logbook_model->check_missing_continent();
}
public function update_distances() {
public function update_distances($all = false) {
$this->load->model('user_model');
if (!$this->user_model->authorize(99)) {
$this->session->set_flashdata('error', __("You're not allowed to do that!"));
@@ -297,7 +297,7 @@ class Update extends CI_Controller {
}
$this->load->model('logbook_model');
$this->logbook_model->update_distances();
$this->logbook_model->update_distances($all);
}
public function check_missing_grid($all = false){

View File

@@ -5,14 +5,38 @@ class User extends CI_Controller {
public function index()
{
$this->load->model('user_model');
if (!$this->load->is_loaded('encryption')) {
$this->load->library('encryption');
}
if(!$this->user_model->authorize(99)) { $this->session->set_flashdata('error', __("You're not allowed to do that!")); redirect('dashboard'); }
$data['results'] = $this->user_model->users();
$data['session_uid'] = $this->session->userdata('user_id');
// Check if impersonating is disabled in the config
if ($this->config->item('disable_impersonate')) {
$data['disable_impersonate'] = true;
} else {
$data['disable_impersonate'] = false;
}
// Get Date format
if($this->session->userdata('user_date_format')) {
// If Logged in and session exists
$data['custom_date_format'] = $this->session->userdata('user_date_format');
} else {
// Get Default date format from /config/wavelog.php
$data['custom_date_format'] = $this->config->item('qso_date_format');
}
$data['has_flossie'] = ($this->config->item('encryption_key') == 'flossie1234555541') ? true : false;
$data['page_title'] = __("User Accounts");
$this->load->view('interface_assets/header', $data);
$this->load->view('user/main');
$this->load->view('user/index');
$this->load->view('interface_assets/footer');
}
@@ -1090,8 +1114,7 @@ class User extends CI_Controller {
}
}
function reset_password($reset_code = NULL)
{
function reset_password($reset_code = NULL) {
$data['reset_code'] = $reset_code;
if($reset_code != NULL) {
$this->load->helper(array('form', 'url'));
@@ -1122,38 +1145,118 @@ class User extends CI_Controller {
}
}
function check_locator($grid) {
$grid = $this->input->post('user_locator');
// Allow empty locator
if (preg_match('/^$/', $grid)) return true;
// Allow 6-digit locator
if (preg_match('/^[A-Ra-r]{2}[0-9]{2}[A-Za-z]{2}$/', $grid)) return true;
// Allow 4-digit locator
else if (preg_match('/^[A-Ra-r]{2}[0-9]{2}$/', $grid)) return true;
// Allow 4-digit grid line
else if (preg_match('/^[A-Ra-r]{2}[0-9]{2},[A-Ra-r]{2}[0-9]{2}$/', $grid)) return true;
// Allow 4-digit grid corner
else if (preg_match('/^[A-Ra-r]{2}[0-9]{2},[A-Ra-r]{2}[0-9]{2},[A-Ra-r]{2}[0-9]{2},[A-Ra-r]{2}[0-9]{2}$/', $grid)) return true;
// Allow 2-digit locator
else if (preg_match('/^[A-Ra-r]{2}$/', $grid)) return true;
// Allow 8-digit locator
else if (preg_match('/^[A-Ra-r]{2}[0-9]{2}[A-Za-z]{2}[0-9]{2}$/', $grid)) return true;
else {
$this->form_validation->set_message('check_locator', 'Please check value for grid locator ('.strtoupper($grid).').');
return false;
}
}
function check_locator($grid) {
$grid = $this->input->post('user_locator');
// Allow empty locator
if (preg_match('/^$/', $grid)) return true;
// Allow 6-digit locator
if (preg_match('/^[A-Ra-r]{2}[0-9]{2}[A-Za-z]{2}$/', $grid)) return true;
// Allow 4-digit locator
else if (preg_match('/^[A-Ra-r]{2}[0-9]{2}$/', $grid)) return true;
// Allow 4-digit grid line
else if (preg_match('/^[A-Ra-r]{2}[0-9]{2},[A-Ra-r]{2}[0-9]{2}$/', $grid)) return true;
// Allow 4-digit grid corner
else if (preg_match('/^[A-Ra-r]{2}[0-9]{2},[A-Ra-r]{2}[0-9]{2},[A-Ra-r]{2}[0-9]{2},[A-Ra-r]{2}[0-9]{2}$/', $grid)) return true;
// Allow 2-digit locator
else if (preg_match('/^[A-Ra-r]{2}$/', $grid)) return true;
// Allow 8-digit locator
else if (preg_match('/^[A-Ra-r]{2}[0-9]{2}[A-Za-z]{2}[0-9]{2}$/', $grid)) return true;
else {
$this->form_validation->set_message('check_locator', 'Please check value for grid locator ('.strtoupper($grid).').');
return false;
}
}
function https_check() {
if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on') {
return true;
function https_check() {
if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on') {
return true;
}
if (!empty($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
return true;
}
if (!empty($_SERVER['HTTP_X_FORWARDED_SSL']) && $_SERVER['HTTP_X_FORWARDED_SSL'] === 'on') {
return true;
}
return false;
}
if (!empty($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
return true;
public function impersonate() {
// Check if impersonating is disabled in the config
if ($this->config->item('disable_impersonate')) {
show_404();
}
// Load the encryption library
if (!$this->load->is_loaded('encryption')) {
$this->load->library('encryption');
}
// Load the user model
$this->load->model('user_model');
// Precheck: If the encryption key is still default, we can't impersonate another user for security reasons
if ($this->config->item('encryption_key') == 'flossie1234555541') {
$this->session->set_flashdata('error', __("You currently can't impersonate another user. Please change the encryption_key in your config.php file first!"));
redirect('dashboard');
}
// Prepare the hash
$raw_hash = $this->encryption->decrypt($this->input->post('hash', TRUE) ?? '');
if (!$raw_hash) {
$this->session->set_flashdata('error', __("Invalid Hash"));
redirect('dashboard');
}
$hash_parts = explode('/', $raw_hash);
$source_uid = $hash_parts[0];
$target_uid = $hash_parts[1];
$timestamp = $hash_parts[2];
/**
* Security Checks
*/
// make sure the timestamp is not too old
if (time() - $timestamp > 600) { // 10 minutes
$this->session->set_flashdata('error', __("The impersonation hash is too old. Please try again."));
redirect('dashboard');
}
// is the source user still logged in?
// We fetch the source user from database to also make sure the user exists. We could use source_uid directly, but this is more secure
if ($this->session->userdata('user_id') != $this->user_model->get_by_id($source_uid)->row()->user_id) {
$this->session->set_flashdata('error', __("You can't impersonate another user while you're not logged in as the source user"));
redirect('dashboard');
}
// in addition to the check if the user is logged in, we also can check if the session id matches the cookie
if ($this->session->session_id != $this->input->cookie($this->config->item('sess_cookie_name'), TRUE)) {
$this->session->set_flashdata('error', __("There was a problem with your session. Please try again."));
redirect('dashboard');
}
// make sure the target user exists
$target_user = $this->user_model->get_by_id($target_uid)->row();
if (!$target_user) {
$this->session->set_flashdata('error', __("The requested user to impersonate does not exist"));
redirect('dashboard');
}
// before we can impersonate a user, we need to make sure the current user is an admin
// TODO: authorize from additional datatable 'impersonators' to allow other user types to impersonate
$source_user = $this->user_model->get_by_id($source_uid)->row();
if(!$source_user || !$this->user_model->authorize(99)) {
$this->session->set_flashdata('error', __("You're not allowed to do that!"));
redirect('dashboard');
}
/**
* Impersonate the user
*/
// Update the session with the new user_id
// TODO: Find a solution for sessiondata 'radio', so a user would be able to use e.g. his own radio while impersonating another user
// Due the fact that the user is now impersonating another user, he can't use his default radio anymore
$this->user_model->update_session($target_uid);
// Redirect to the dashboard, the user should now be logged in as the other user
redirect('dashboard');
}
if (!empty($_SERVER['HTTP_X_FORWARDED_SSL']) && $_SERVER['HTTP_X_FORWARDED_SSL'] === 'on') {
return true;
}
return false;
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -21,11 +21,11 @@ class Migration_process_deprecated extends CI_Migration
}
} catch (\Throwable $th) {
log_message("Error","Mig: Error at Mig 210 for txt files. Run manually a git reset.");
log_message("error","Mig: Error at Mig 210 for txt files. Run manually a git reset.");
}
} else {
log_message("Error","Mig: Error at Mig 210 for txt files. Function exec() not usable. Run manually a git reset.");
log_message("info","Mig 210: No .git found. Skipping processing of txt files.");
}
}

View File

@@ -4670,14 +4670,17 @@ function lotw_last_qsl_date($user_id) {
print("$count updated\n");
}
public function update_distances(){
public function update_distances($all){
ini_set('memory_limit', '-1'); // This consumes a much of Memory!
$this->db->trans_start(); // Transaction has to be started here, because otherwise we're trying to update rows which are locked by the select
$this->db->select("COL_PRIMARY_KEY, COL_GRIDSQUARE, station_gridsquare");
$this->db->join('station_profile', 'station_profile.station_id = '.$this->config->item('table_name').'.station_id');
$this->db->where("((COL_DISTANCE is NULL) or (COL_DISTANCE = 0))");
if (!$all) {
$this->db->where("((COL_DISTANCE is NULL) or (COL_DISTANCE = 0))");
}
$this->db->where("COL_GRIDSQUARE is NOT NULL");
$this->db->where("COL_GRIDSQUARE != ''");
$this->db->where("COL_GRIDSQUARE != station_gridsquare");
$this->db->trans_start();
$query = $this->db->get($this->config->item('table_name'));
$count = 0;

View File

@@ -562,16 +562,6 @@ class User_Model extends CI_Model {
}
}
// FUNCTION: bool set($username, $data)
// Updates a user's record in the database
// TODO: This returns TRUE/1 no matter what at the moment - should
// TODO: return TRUE/FALSE or 0/1 depending on success/failure
function set($username, $data) {
$this->db->where('user_name', $username);
$this->db->update($this->config->item('auth_table', $data));
return 1;
}
// FUNCTION: object users()
// Returns a list of users with additional counts
function users() {

View File

@@ -20,13 +20,13 @@ class Winkey extends CI_Model
$this->db->where('user_id', $user_id);
$this->db->where('station_location_id', $station_location_id);
$query = $this->db->get('cwmacros');
if ($query->num_rows() > 0) {
// return $query->row() as json
return json_encode($query->row());
} else {
// return json with status not found
return json_encode(array('status' => 'not found'));
return json_encode(array('status' => 'not found'));
}
}
@@ -46,4 +46,4 @@ class Winkey extends CI_Model
}
}
?>
?>

View File

@@ -21,8 +21,8 @@
<?php foreach ($contests as $contest) { ?>
<tr>
<td><b><?php echo $contest['title']; ?></b></td>
<td><?php echo $contest['start']->format('d M - H:i'); ?></td>
<td><?php echo $contest['end']->format('d M - H:i'); ?></td>
<td><?php echo $contest['start'] == '' ? '' : $contest['start']->format('d M - H:i'); ?></td>
<td><?php echo $contest['end'] == '' ? '' : $contest['end']->format('d M - H:i'); ?></td>
<td><a class='btn btn-secondary btn-sm' href='<?php echo $contest['link']; ?>' target='_blank'><?= __("Show Details"); ?></a></td>
</tr>
<?php } ?>
@@ -63,4 +63,4 @@
</div>
</div>
</div>
</div>
</div>

View File

@@ -34,6 +34,7 @@
var lang_general_word_warning = "<?= __("Warning"); ?>";
var lang_general_word_cancel = "<?= __("Cancel"); ?>";
var lang_general_word_ok = "<?= __("OK"); ?>";
var lang_general_word_search = "<?= __("Search"); ?>";
var lang_qso_delete_warning = "<?= __("Warning! Are you sure you want delete QSO with "); ?>";
var lang_general_word_colors = "<?= __("Colors"); ?>";
var lang_general_word_confirmed = "<?= __("Confirmed"); ?>";
@@ -44,7 +45,9 @@
var lang_admin_save = "<?= __("Save"); ?>";
var lang_admin_clear = "<?= __("Clear"); ?>";
var lang_lotw_propmode_hint = "<?= __("Propagation mode is not supported by LoTW. LoTW QSL fields disabled."); ?>";
var lang_no_states_for_dxcc_available = "<?= __("No states for this DXCC available"); ?>";
var lang_no_states_for_dxcc_available = "<?= html_entity_decode(__("No states for this DXCC available")); ?>";
var lang_qrbcalc_title = '<?= __("Compute QRB and QTF"); ?>';
var lang_qrbcalc_errmsg = '<?= __("Error in locators. Please check."); ?>';
</script>
@@ -690,7 +693,9 @@ $('#dxcc_id').on('change', function() {
return dxcc.adif == dxccadif;
});
$("#stationCQZoneInput").val(dxccinfo[0].cq);
// $("#stationITUZoneInput").val(dxccinfo[0].itu); // Commented out, since we do not have itu data.
if (dxccadif == 0) {
$("#stationITUZoneInput").val(dxccinfo[0].itu); // Only set ITU zone to none if DXCC none is selected. We don't have ITU data for other DXCCs.
}
<?php } ?>
});
</script>

View File

@@ -22,13 +22,9 @@
<div class="alert alert-danger" role="alert">
<?php echo $error; ?>
</div>
<?php } ?>
<?php if(isset($_SESSION['Success'])) { ?>
<div class="alert alert-success" role="alert">
<?php echo $_SESSION['Success']; ?>
</div>
<?php } ?>
<?php } ?>
<?php $this->load->view('layout/messages'); ?>
<?php if ($lotw_cert_results->num_rows() > 0) { ?>

View File

@@ -2,14 +2,14 @@
<div class="mb-3 row">
<div class="col-md-2 control-label" for="input"><?= __("Locator 1"); ?></div>
<div class="col-md-4">
<input class="form-control input-group-sm" id="qrbcalc_locator1" type="text" name="locator1" placeholder="" value="<?php if ($station_locator != "0") echo $station_locator; ?>" aria-label="locator1">
<input class="form-control input-group-sm uppercase" id="qrbcalc_locator1" type="text" name="locator1" placeholder="" value="<?php if ($station_locator != "0") echo $station_locator; ?>" aria-label="locator1">
</div>
</div>
<div class="mb-3 row">
<div class="col-md-2 control-label" for="input"><?= __("Locator 2"); ?></div>
<div class="col-md-4">
<input class="form-control input-group-sm" id="qrbcalc_locator2" type="text" name="locator2" placeholder="" aria-label="locator2">
<input class="form-control input-group-sm uppercase" id="qrbcalc_locator2" type="text" name="locator2" placeholder="" aria-label="locator2">
</div>
</div>

View File

@@ -1,24 +1,15 @@
<div id="modal-backdrop" class="modal-backdrop fade show" style="display:block;"></div>
<div id="modal" class="modal fade show" tabindex="-1" style="display:block;">
<form hx-post="<?php echo base_url();?>index.php/qso/cwmacrosave" hx-target=".modal-body">
<div class="modal-dialog modal-dialog-centered">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title"><?= __("Winkey Macros"); ?></h5>
</div>
<div class="modal-body">
<form>
<div class="mb-3 row">
<label for="function1_name" class="col-sm-5 col-form-label"><?= sprintf(__("Function %d - Name"), 1) ?></label>
<div class="col-sm-7">
<input name="function1_name" type="text" class="form-control" id="function1_name" maxlength="6">
<input name="function1_name" type="text" class="form-control" id="function1_name" maxlength="6" value="<?php echo $result->function1_name ?? ''; ?>">
</div>
</div>
<div class="mb-3 row">
<label for="function1_macro" class="col-sm-5 col-form-label"><?= sprintf(__("Function %d - Macro"), 1) ?></label>
<div class="col-sm-7">
<input name="function1_macro" type="text" class="form-control" id="function1_macro">
<input name="function1_macro" type="text" class="form-control" id="function1_macro" value="<?php echo $result->function1_macro ?? ''; ?>">
</div>
</div>
@@ -27,14 +18,14 @@
<div class="mb-3 row">
<label for="function2_name" class="col-sm-5 col-form-label"><?= sprintf(__("Function %d - Name"), 2) ?></label>
<div class="col-sm-7">
<input name="function2_name" type="text" class="form-control" id="function2_name" maxlength="6">
<input name="function2_name" type="text" class="form-control" id="function2_name" maxlength="6" value="<?php echo $result->function2_name ?? ''; ?>">
</div>
</div>
<div class="mb-3 row">
<label for="function2_macro" class="col-sm-5 col-form-label"><?= sprintf(__("Function %d - Macro"), 2) ?></label>
<div class="col-sm-7">
<input name="function2_macro" type="text" class="form-control" id="function2_macro">
<input name="function2_macro" type="text" class="form-control" id="function2_macro" value="<?php echo $result->function2_macro ?? ''; ?>">
</div>
</div>
@@ -43,14 +34,14 @@
<div class="mb-3 row">
<label for="function3_name" class="col-sm-5 col-form-label"><?= sprintf(__("Function %d - Name"), 3) ?></label>
<div class="col-sm-7">
<input name="function3_name" type="text" class="form-control" id="function3_name" maxlength="6">
<input name="function3_name" type="text" class="form-control" id="function3_name" maxlength="6" value="<?php echo $result->function3_name ?? ''; ?>">
</div>
</div>
<div class="mb-3 row">
<label for="function3_macro" class="col-sm-5 col-form-label"><?= sprintf(__("Function %d - Macro"), 3) ?></label>
<div class="col-sm-7">
<input name="function3_macro" type="text" class="form-control" id="function3_macro">
<input name="function3_macro" type="text" class="form-control" id="function3_macro" value="<?php echo $result->function3_macro ?? ''; ?>">
</div>
</div>
@@ -59,14 +50,14 @@
<div class="mb-3 row">
<label for="function4_name" class="col-sm-5 col-form-label"><?= sprintf(__("Function %d - Name"), 4) ?></label>
<div class="col-sm-7">
<input name="function4_name" type="text" class="form-control" id="function4_name" maxlength="6">
<input name="function4_name" type="text" class="form-control" id="function4_name" maxlength="6" value="<?php echo $result->function4_name ?? ''; ?>">
</div>
</div>
<div class="mb-3 row">
<label for="function4_macro" class="col-sm-5 col-form-label"><?= sprintf(__("Function %d - Macro"), 4) ?></label>
<div class="col-sm-7">
<input name="function4_macro" type="text" class="form-control" id="function4_macro">
<input name="function4_macro" type="text" class="form-control" id="function4_macro" value="<?php echo $result->function4_macro ?? ''; ?>">
</div>
</div>
@@ -75,22 +66,15 @@
<div class="mb-3 row">
<label for="function5_name" class="col-sm-5 col-form-label"><?= sprintf(__("Function %d - Name"), 5) ?></label>
<div class="col-sm-7">
<input name="function5_name" type="text" class="form-control" id="function5_name" maxlength="6">
<input name="function5_name" type="text" class="form-control" id="function5_name" maxlength="6" value="<?php echo $result->function5_name ?? ''; ?>">
</div>
</div>
<div class="mb-3 row">
<label for="function5_macro" class="col-sm-5 col-form-label"><?= sprintf(__("Function %d - Macro"), 5) ?></label>
<div class="col-sm-7">
<input name="function5_macro" type="text" class="form-control" id="function5_macro">
<input name="function5_macro" type="text" class="form-control" id="function5_macro" value="<?php echo $result->function5_macro ?? ''; ?>">
</div>
</div>
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-primary"><?= __("Save"); ?></button>
<button type="button" class="btn btn-secondary" onclick="closeModal()"><?= __("Close"); ?></button>
</div>
</div>
</div>
</form>
</div>
</form>

View File

@@ -1,96 +0,0 @@
<div id="modal-backdrop" class="modal-backdrop fade show" style="display:block;"></div>
<div id="modal" class="modal fade show" tabindex="-1" style="display:block;">
<form hx-post="<?php echo base_url();?>index.php/qso/cwmacrosave" hx-target=".modal-body">
<div class="modal-dialog modal-dialog-centered">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title"><?= __("Winkey Macros"); ?></h5>
</div>
<div class="modal-body">
<div class="mb-3 row">
<label for="function1_name" class="col-sm-5 col-form-label"><?= sprintf(__("Function %d - Name"), 1) ?></label>
<div class="col-sm-7">
<input name="function1_name" type="text" class="form-control" id="function1_name" maxlength="6" value="<?php echo $result->function1_name; ?>">
</div>
</div>
<div class="mb-3 row">
<label for="function1_macro" class="col-sm-5 col-form-label"><?= sprintf(__("Function %d - Macro"), 1) ?></label>
<div class="col-sm-7">
<input name="function1_macro" type="text" class="form-control" id="function1_macro" value="<?php echo $result->function1_macro; ?>">
</div>
</div>
<hr>
<div class="mb-3 row">
<label for="function2_name" class="col-sm-5 col-form-label"><?= sprintf(__("Function %d - Name"), 2) ?></label>
<div class="col-sm-7">
<input name="function2_name" type="text" class="form-control" id="function2_name" maxlength="6" value="<?php echo $result->function2_name; ?>">
</div>
</div>
<div class="mb-3 row">
<label for="function2_macro" class="col-sm-5 col-form-label"><?= sprintf(__("Function %d - Macro"), 2) ?></label>
<div class="col-sm-7">
<input name="function2_macro" type="text" class="form-control" id="function2_macro" value="<?php echo $result->function2_macro; ?>">
</div>
</div>
<hr>
<div class="mb-3 row">
<label for="function3_name" class="col-sm-5 col-form-label"><?= sprintf(__("Function %d - Name"), 3) ?></label>
<div class="col-sm-7">
<input name="function3_name" type="text" class="form-control" id="function3_name" maxlength="6" value="<?php echo $result->function3_name; ?>">
</div>
</div>
<div class="mb-3 row">
<label for="function3_macro" class="col-sm-5 col-form-label"><?= sprintf(__("Function %d - Macro"), 3) ?></label>
<div class="col-sm-7">
<input name="function3_macro" type="text" class="form-control" id="function3_macro" value="<?php echo $result->function3_macro; ?>">
</div>
</div>
<hr>
<div class="mb-3 row">
<label for="function4_name" class="col-sm-5 col-form-label"><?= sprintf(__("Function %d - Name"), 4) ?></label>
<div class="col-sm-7">
<input name="function4_name" type="text" class="form-control" id="function4_name" maxlength="6" value="<?php echo $result->function4_name; ?>">
</div>
</div>
<div class="mb-3 row">
<label for="function4_macro" class="col-sm-5 col-form-label"><?= sprintf(__("Function %d - Macro"), 4) ?></label>
<div class="col-sm-7">
<input name="function4_macro" type="text" class="form-control" id="function4_macro" value="<?php echo $result->function4_macro; ?>">
</div>
</div>
<hr>
<div class="mb-3 row">
<label for="function5_name" class="col-sm-5 col-form-label"><?= sprintf(__("Function %d - Name"), 5) ?></label>
<div class="col-sm-7">
<input name="function5_name" type="text" class="form-control" id="function5_name" maxlength="6" value="<?php echo $result->function5_name; ?>">
</div>
</div>
<div class="mb-3 row">
<label for="function5_macro" class="col-sm-5 col-form-label"><?= sprintf(__("Function %d - Macro"), 5) ?></label>
<div class="col-sm-7">
<input name="function5_macro" type="text" class="form-control" id="function5_macro" value="<?php echo $result->function5_macro; ?>">
</div>
</div>
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-primary"><?= __("Save"); ?></button>
<button type="button" class="btn btn-secondary" onclick="closeModal()"><?= __("Close"); ?></button>
</div>
</div>
</div>
</form>
</div>

View File

@@ -642,29 +642,25 @@
<div id="winkey" class="card winkey-settings" style="margin-bottom: 10px;">
<div class="card-header">
<h4 style="font-size: 16px; font-weight: bold;" class="card-title"><?= __("Winkey"); ?>
<h4 style="font-size: 16px; font-weight: bold;" class="card-title"><?= __("Winkey"); ?>
<button id="connectButton" class="btn btn-primary"><?= __("Connect"); ?></button>
<button id="connectButton" class="btn btn-sm btn-primary"><?= __("Connect"); ?></button>
<button type="button" class="btn btn-secondary"
hx-get="<?php echo base_url(); ?>index.php/qso/winkeysettings"
hx-target="#modals-here"
hx-trigger="click"
class="btn btn-primary"
_="on htmx:afterOnLoad wait 10ms then add .show to #modal then add .show to #modal-backdrop"><i class="fas fa-cog"></i> <?= __("Settings"); ?></button>
</h4>
<button id="winkey_settings" type="button" class="btn-sm btn btn-secondary" class="btn btn-primary"><i class="fas fa-cog"></i> <?= __("Settings"); ?></button>
</h4>
</div>
<div id="modals-here"></div>
<div id="winkey_buttons" class="card-body">
<button id="morsekey_func1" onclick="morsekey_func1()" class="btn btn-warning">F1</button>
<button id="morsekey_func2" onclick="morsekey_func2()" class="btn btn-warning">F2</button>
<button id="morsekey_func3" onclick="morsekey_func3()" class="btn btn-warning">F3</button>
<button id="morsekey_func4" onclick="morsekey_func4()" class="btn btn-warning">F4</button>
<button id="morsekey_func5" onclick="morsekey_func5()" class="btn btn-warning">F5</button>
<br><br>
<input id="sendText" type="text"><input id="sendButton" type="button" value="Send" class="btn btn-success">
<button id="morsekey_func1" onclick="morsekey_func1()" class="btn btn-sm btn-warning mb-1">F1</button>
<button id="morsekey_func2" onclick="morsekey_func2()" class="btn btn-sm btn-warning mb-1">F2</button>
<button id="morsekey_func3" onclick="morsekey_func3()" class="btn btn-sm btn-warning mb-1">F3</button>
<button id="morsekey_func4" onclick="morsekey_func4()" class="btn btn-sm btn-warning mb-1">F4</button>
<button id="morsekey_func5" onclick="morsekey_func5()" class="btn btn-sm btn-warning mb-1">F5</button>
<br>
<input id="sendText" type="text" class="form-control mb-1">
<button id="sendButton" type="button" class="btn btn-sm btn-success"><?= __("Send"); ?></button>
<span id="statusBar"></span><br>

View File

@@ -1,5 +1,12 @@
<script>
var dxccarray = [];
dxccarray.push({
adif: 0,
name: '- None -',
cq: '',
itu: '',
});
<?php
if ($dxcc_list->result() > 0) {

View File

@@ -1,5 +1,11 @@
<script>
var dxccarray = [];
dxccarray.push({
adif: 0,
name: '- None -',
cq: '',
itu: '',
});
<?php
if ($dxcc_list->result() > 0) {
@@ -16,6 +22,7 @@ if ($dxcc_list->result() > 0) {
}
}
?>
</script>
<div class="container" id="create_station_profile">

View File

@@ -58,6 +58,8 @@
<div class="tab-pane fade" id="distanceTab" role="tabpanel" aria-labelledby="distance-tab">
<p class="card-text"><?= __("Here you can update QSOs with missing distance information."); ?></p>
<p><a class="btn btn-primary" hx-get="<?php echo site_url('update/update_distances');?>" hx-target="#distance_results" href="<?php echo site_url('update/update_distances');?>"><?= __("Update distance data"); ?></a></p>
<p class="card-text"><?= __("Use the following button to update the distance information for all your QSOs. Depending on the number of QSOs this might take some time to execute. Please be patient."); ?></p>
<p><a class="btn btn-primary" hx-get="<?php echo site_url('update/update_distances/all');?>" hx-target="#distance_results" href="<?php echo site_url('update/update_distances/all');?>"><?= __("Re-check all QSOs in logbook"); ?></a></p>
<div id="distance_results"></div>
</div>
</div>

View File

@@ -21,7 +21,7 @@
</div>
<?php } ?>
<!-- This Info will be shown by the admin password reset -->
<div class="alert" id="pwd_reset_message" style="display: hide" role="alert"></div>
@@ -51,6 +51,9 @@
<th></th>
<th style="text-align: center; vertical-align: middle;" scope="col"><?= __("Edit"); ?></th>
<th style="text-align: center; vertical-align: middle;" scope="col"><?= __("Password Reset"); ?></th>
<?php if (!$disable_impersonate) { ?>
<th style="text-align: center; vertical-align: middle;" scope="col"><?= __("Impersonate"); ?></th>
<?php } ?>
<th style="text-align: center; vertical-align: middle;" scope="col"><?= __("Delete"); ?></th>
</tr>
</thead>
@@ -65,15 +68,15 @@
<td style="text-align: left; vertical-align: middle;"><?php echo $row->user_callsign; ?></td>
<td style="text-align: left; vertical-align: middle;"><?php echo $row->user_email; ?></td>
<td style="text-align: left; vertical-align: middle;"><?php $l = $this->config->item('auth_level');
echo $l[$row->user_type]; ?></td>
<td style="text-align: left; vertical-align: middle;"><?php
echo $l[$row->user_type]; ?></td>
<td style="text-align: left; vertical-align: middle;"><?php
if ($row->last_seen != null) { // if the user never logged in before the value is null. We can show "never" then.
$lastSeenTimestamp = strtotime($row->last_seen);
$currentTimestamp = time();
if (($currentTimestamp - $lastSeenTimestamp) < 120) {
echo "<a><i style=\"color: green;\" class=\"fas fa-circle\"></i> " . $row->last_seen . "</a>";
echo "<a><i style=\"color: green;\" class=\"fas fa-circle\"></i> " . date($custom_date_format . ' H:i:s', $lastSeenTimestamp) . "</a>";
} else {
echo "<a><i style=\"color: red;\" class=\"fas fa-circle\"></i> " . $row->last_seen . "</a>";
echo "<a><i style=\"color: red;\" class=\"fas fa-circle\"></i> " . date($custom_date_format . ' H:i:s', $lastSeenTimestamp) . "</a>";
}
} else {
echo __("Never");
@@ -92,14 +95,73 @@
<td style="text-align: center; vertical-align: middle;"><a href="<?php echo site_url('user/edit') . "/" . $row->user_id; ?>" class="btn btn-outline-primary btn-sm"><i class="fas fa-user-edit"></i></a>
<td style="text-align: center; vertical-align: middle;">
<?php
if ($_SESSION['user_id'] != $row->user_id) {
if ($session_uid != $row->user_id) {
echo '<a class="btn btn-primary btn-sm ms-1 admin_pwd_reset" data-username="' . $row->user_name . '" data-callsign="' . $row->user_callsign . '" data-userid="' . $row->user_id . '" data-usermail="' . $row->user_email . '"><i class="fas fa-key"></i></a>';
}
?></td>
<?php if (!$disable_impersonate) { ?>
<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>";
if ($session_uid != $row->user_id) { ?>
<button class="btn btn-info btn-sm" data-bs-toggle="modal" data-bs-target="#impersonateModal_<?php echo $i; ?>"><i class="fas fa-people-arrows"></i></button>
<div class="modal fade bg-black bg-opacity-50" id="impersonateModal_<?php echo $i; ?>" tabindex="-1" aria-labelledby="impersonateLabel_<?php echo $i; ?>" aria-hidden="true" data-bs-backdrop="static" data-bs-keyboard="false">
<div class="modal-dialog modal-dialog-centered modal-md">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="impersonateLabel_<?php echo $i; ?>"><?= __("Impersonate User") ?></h5>
</div>
<div class="modal-body" style="text-align: left !important;">
<div class="mb-3">
<?php if(!$has_flossie) { ?>
<p><?= __("You are about to impersonate another user. To return to your admin account, you'll need to logout and log back in as admin."); ?></p>
<p><?= __("Do you want to impersonate this user?"); ?></p>
<br>
<table>
<tr>
<td class="pe-3"><?= __("Username:"); ?></td>
<td><strong><?php echo $row->user_name; ?></strong></td>
</tr>
<tr>
<td class="pe-3"><?= __("Name:"); ?></td>
<td><strong><?php echo $row->user_firstname . ' ' . $row->user_lastname; ?></strong></td>
</tr>
<tr>
<td class="pe-3"><?= __("Callsign:"); ?></td>
<td><strong><?php echo $row->user_callsign; ?></strong></td>
</tr>
<tr>
<td class="pe-3"><?= __("E-Mail:"); ?></td>
<td><strong><a href="mailto:<?php echo $row->user_email; ?>"><?php echo $row->user_email; ?><a></strong></td>
</tr>
<tr>
<td class="pe-3"><?= __("Last Seen:"); ?></td>
<td><strong><?php echo date($custom_date_format . ' H:i:s', strtotime($row->last_seen)); ?></strong></td>
</tr>
</table>
<?php } else { ?>
<div class="alert alert-danger" role="alert">
<?= __("You currently can't impersonate another user. Please change the encryption_key in your config.php file first!"); ?>
</div>
<?php } ?>
</div>
<div class="modal-footer">
<form action="<?php echo site_url('user/impersonate'); ?>" method="post" style="display:inline;">
<input type="hidden" name="hash" value="<?php echo $this->encryption->encrypt($this->session->userdata('user_id') . '/' . $row->user_id . '/' . time()); ?>">
<button type="submit" class="btn btn-success" <?php if ($has_flossie) { echo 'disabled'; } ?>><?= __("Impersonate") ?></i></button>
</form>
<button type="button" class="btn btn-danger" data-bs-dismiss="modal"><?= __("Cancel") ?></button>
</div>
</div>
</div>
</div>
<?php }
?>
</td>
<?php } ?>
<td style="text-align: center; vertical-align: middle;">
<?php
if ($session_uid != $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>
</td>
@@ -109,7 +171,6 @@
</tbody>
</table>
</div>
</div>
</div>
</div>

View File

@@ -1070,4 +1070,19 @@ label {
.btn-group .multiselect-container .multiselect-option input[type="radio"] {
display: none;
}
@media screen and (max-width:991px){
.multiselect-container button.dropdown-item {
pointer-events:none;
}
.multiselect-container span.form-check input {
pointer-events: all;
}
.multiselect-container span.form-check label {
pointer-events: none;
}
.btn-group .multiselect-container .multiselect-option input[type="radio"] {
display: block !important;
}
}

View File

@@ -602,9 +602,9 @@ function spawnQrbCalculator(locator1, locator2) {
type: 'post',
success: function (html) {
BootstrapDialog.show({
title: 'Compute QRB and QTF',
title: lang_qrbcalc_title,
size: BootstrapDialog.SIZE_WIDE,
cssClass: 'lookup-dialog',
cssClass: 'lookup-dialog bg-black bg-opacity-50',
nl2br: false,
message: html,
onshown: function(dialog) {
@@ -666,28 +666,36 @@ function calculateQrb() {
'locator2': locator2},
success: function (html) {
var result = "<h5>Negative latitudes are south of the equator, negative longitudes are west of Greenwich. <br/>";
result += ' ' + locator1.toUpperCase() + ' Latitude = ' + html['latlng1'][0] + ' Longitude = ' + html['latlng1'][1] + '<br/>';
result += ' ' + locator2.toUpperCase() + ' Latitude = ' + html['latlng2'][0] + ' Longitude = ' + html['latlng2'][1] + '<br/>';
result += 'Distance between ' + locator1.toUpperCase() + ' and ' + locator2.toUpperCase() + ' is ' + html['distance'] + '.<br />';
result += 'The bearing is ' + html['bearing'] + '.</h5>';
var result = "<h5>" + html['latlong_info_text'] + "<br><br>";
result += html['text_latlng1'] + '<br>';
result += html['text_latlng2'] + '<br><br>';
result += html['distance'] + ' ';
result += html['bearing'] + '</h5>';
$(".qrbResult").html(result);
newpath(html['latlng1'], html['latlng2'], locator1, locator2);
}
});
} else {
$('.qrbResult').html('<div class="qrbalert alert alert-danger" role="alert">Error in locators. Please check.</div>');
$("#mapqrb").hide();
$('.qrbResult').html('<div class="qrbalert alert alert-danger" role="alert">' + lang_qrbcalc_errmsg + '</div>');
}
}
function validateLocator(locator) {
vucc_gridno = locator.split(",").length;
if(vucc_gridno == 3 || vucc_gridno > 4) {
const regex = /^[A-R]{2}[0-9]{2}([A-X]{2}([0-9]{2}([A-X]{2})?)?)?$/i;
const locators = locator.split(",");
if (locators.length === 3 || locators.length > 4) {
return false;
}
if(locator.length < 4 && !(/^[a-rA-R]{2}[0-9]{2}[a-xA-X]{0,2}[0-9]{0,2}[a-xA-X]{0,2}$/.test(locator))) {
return false;
for (let i = 0; i < locators.length; i++) {
let loc = locators[i].trim();
if (!regex.test(loc)) {
return false;
}
}
return true;

View File

@@ -325,6 +325,7 @@ $(document).ready(function () {
enableFiltering: true,
enableFullValueFiltering: false,
enableCaseInsensitiveFiltering: true,
filterPlaceholder: lang_general_word_search,
numberDisplayed: 1,
inheritClass: true,
buttonWidth: '100%',

View File

@@ -18,6 +18,8 @@ $( document ).ready(function() {
enableFiltering: true,
enableFullValueFiltering: false,
enableCaseInsensitiveFiltering: true,
filterPlaceholder: lang_general_word_search,
widthSynchronizationMode: 'always',
numberDisplayed: 1,
inheritClass: true,
buttonWidth: '100%',

View File

@@ -14,6 +14,8 @@ $(document).ready(function () {
enableFiltering: true,
enableFullValueFiltering: false,
enableCaseInsensitiveFiltering: true,
filterPlaceholder: lang_general_word_search,
widthSynchronizationMode: 'always',
numberDisplayed: 1,
inheritClass: true,
buttonWidth: '100%',

View File

@@ -69,9 +69,8 @@ let connectButton = document.getElementById("connectButton");
let statusBar = document.getElementById("statusBar");
//Couple the elements to the Events
connectButton.addEventListener("click", clickConnect)
sendButton.addEventListener("click", clickSend)
// statusButton.addEventListener("click", clickStatus)
connectButton.addEventListener("click", clickConnect);
sendButton.addEventListener("click", clickSend);
//When the connectButton is pressed
async function clickConnect() {
@@ -92,7 +91,7 @@ navigator.serial.addEventListener('connect', e => {
statusBar.innerText = `Connected to ${e.port}`;
connectButton.innerText = "Disconnect"
});
navigator.serial.addEventListener('disconnect', e => {
statusBar.innerText = `Disconnected`;
connectButton.innerText = "Connect"
@@ -130,7 +129,7 @@ async function connect() {
const encoder = new TextEncoderStream();
outputDone = encoder.readable.pipeTo(port.writable);
outputStream = encoder.writable;
writeToByte("0x00, 0x02");
writeToByte("0x02, 0x00");
@@ -151,7 +150,7 @@ async function connect() {
//Write to the Serial port
async function writeToStream(line) {
var enc = new TextEncoder(); // always utf-8
const writer = outputStream.getWriter();
writer.write(line);
writer.releaseLock();
@@ -190,7 +189,7 @@ async function disconnect() {
function clickSend() {
writeToStream(sendText.value);
writeToStream("\r");
//and clear the input field, so it's clear it has been sent
sendText.value = "";
@@ -249,23 +248,7 @@ async function readLoop() {
}
}
function closeModal() {
var container = document.getElementById("modals-here")
var backdrop = document.getElementById("modal-backdrop")
var modal = document.getElementById("modal")
modal.classList.remove("show")
backdrop.classList.remove("show")
getMacros();
setTimeout(function() {
container.removeChild(backdrop)
container.removeChild(modal)
}, 200)
}
function UpdateMacros(macrotext) {
function UpdateMacros(macrotext) {
// Get the values from the form set to uppercase
let CALL = document.getElementById("callsign").value.toUpperCase();
@@ -303,7 +286,7 @@ function getMacros() {
const morsekey_func3_Button = document.getElementById('morsekey_func3');
morsekey_func3_Button.textContent = 'F3 (' + function3Name + ')';
const morsekey_func4_Button = document.getElementById('morsekey_func4');
morsekey_func4_Button.textContent = 'F4 (' + function4Name + ')';
@@ -311,3 +294,73 @@ function getMacros() {
morsekey_func5_Button.textContent = 'F5 (' + function5Name + ')';
});
}
$('#winkey_settings').click(function (event) {
$.ajax({
url: base_url + 'index.php/qso/winkeysettings',
type: 'post',
success: function (html) {
BootstrapDialog.show({
title: 'Winkey Macros',
size: BootstrapDialog.SIZE_NORMAL,
cssClass: 'options',
nl2br: false,
message: html,
onshown: function(dialog) {
},
buttons: [{
label: 'Save',
cssClass: 'btn-primary btn-sm',
id: 'saveButton',
action: function (dialogItself) {
winkey_macro_save();
dialogItself.close();
}
},
{
label: lang_admin_close,
cssClass: 'btn-sm',
id: 'closeButton',
action: function (dialogItself) {
$('#optionButton').prop("disabled", false);
dialogItself.close();
}
}],
onhide: function(dialogRef){
$('#optionButton').prop("disabled", false);
},
});
}
});
});
function winkey_macro_save() {
$.ajax({
url: base_url + 'index.php/qso/cwmacrosave',
type: 'post',
data: {
function1_name: $('#function1_name').val(),
function1_macro: $('#function1_macro').val(),
function2_name: $('#function2_name').val(),
function2_macro: $('#function2_macro').val(),
function3_name: $('#function3_name').val(),
function3_macro: $('#function3_macro').val(),
function4_name: $('#function4_name').val(),
function4_macro: $('#function4_macro').val(),
function5_name: $('#function5_name').val(),
function5_macro: $('#function5_macro').val(),
},
success: function (html) {
BootstrapDialog.alert({
title: 'INFO',
message: 'Macros were saved.',
type: BootstrapDialog.TYPE_INFO,
closable: false,
draggable: false,
callback: function (result) {
getMacros();
}
});
}
});
}

File diff suppressed because it is too large Load Diff

View File

@@ -269,4 +269,19 @@ div.alert-danger {
--bs-btn-hover-color: inherit !important;
--bs-btn-active-bg: #1b1b1b;
--bs-btn-active-color: inherit !important;
}
@media screen and (max-width:991px){
.multiselect-container button.dropdown-item {
pointer-events:none;
}
.multiselect-container span.form-check input {
pointer-events: all;
}
.multiselect-container span.form-check label {
pointer-events: none;
}
.btn-group .multiselect-container .multiselect-option input[type="radio"] {
display: block !important;
}
}

View File

@@ -669,4 +669,17 @@ $config['disable_oqrs'] = false;
$config['special_callsign'] = false;
// hides the usermenu; takes action only if "special_callsign" is true
$config['sc_hide_usermenu'] = true;
$config['sc_hide_usermenu'] = true;
/*
|--------------------------------------------------------------------------
| Impersonate
|--------------------------------------------------------------------------
|
| This config switch disables the impersonate feature. This feauture is used to impersonate another user.
| Impersonate is enabled by default. To disable it, set the value to false.
|
*/
$config['disable_impersonate'] = false;

View File

@@ -2,155 +2,157 @@
# Copyright (c) 2024 Wavelog by DF2ET, DJ7NT, HB9HIL and LA8AJA.
# This file is distributed under the MIT licence.
#
# "Francisco (F4VSE)" <kikosgc@users.noreply.github.com>, 2024.
msgid ""
msgstr ""
"Report-Msgid-Bugs-To: translations@wavelog.org\n"
"POT-Creation-Date: 2024-08-12 09:45+0000\n"
"PO-Revision-Date: 2024-06-05 15:15+0200\n"
"Last-Translator: \n"
"Language-Team: \n"
"PO-Revision-Date: 2024-08-18 19:11+0000\n"
"Last-Translator: \"Francisco (F4VSE)\" <kikosgc@users.noreply.github.com>\n"
"Language-Team: Spanish <https://translate.wavelog.org/projects/wavelog/"
"installer/es/>\n"
"Language: es_ES\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 3.4.4\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.7\n"
#: install/includes/core/database_class.php:59
msgid "Connection Error: "
msgstr ""
msgstr "Error de conexión: "
#: install/includes/core/database_class.php:63
msgid "Unable to create database: "
msgstr ""
msgstr "No se puede crear la base de datos: "
#: install/includes/core/database_class.php:68
msgid "Unable to select database: "
msgstr ""
msgstr "No se puede seleccionar la base de datos: "
#: install/includes/core/database_class.php:74
msgid "Database is not empty."
msgstr ""
msgstr "La base de datos no está vacía."
#: install/includes/install_config/install_lib.php:123
msgid "not detected"
msgstr ""
msgstr "no detectado"
#: install/includes/interface_assets/footer.php:50
msgid "Albanian"
msgstr ""
msgstr "Albanés"
#: install/includes/interface_assets/footer.php:51
msgid "Bosnian"
msgstr ""
msgstr "Bosnio"
#: install/includes/interface_assets/footer.php:52
msgid "Bulgarian"
msgstr ""
msgstr "Búlgaro"
#: install/includes/interface_assets/footer.php:53
msgid "Chinese (Simplified)"
msgstr ""
msgstr "Chino (Simplificado)"
#: install/includes/interface_assets/footer.php:54
msgid "Croatian"
msgstr ""
msgstr "Croata"
#: install/includes/interface_assets/footer.php:55
msgid "Czech"
msgstr ""
msgstr "Checo"
#: install/includes/interface_assets/footer.php:56
msgid "Dutch"
msgstr ""
msgstr "Holandés"
#: install/includes/interface_assets/footer.php:57
msgid "English"
msgstr ""
msgstr "Inglés"
#: install/includes/interface_assets/footer.php:58
msgid "Finnish"
msgstr ""
msgstr "Finlandés"
#: install/includes/interface_assets/footer.php:59
msgid "French"
msgstr ""
msgstr "Francés"
#: install/includes/interface_assets/footer.php:60
msgid "German"
msgstr ""
msgstr "Alemán"
#: install/includes/interface_assets/footer.php:61
msgid "Greek"
msgstr ""
msgstr "Griego"
#: install/includes/interface_assets/footer.php:62
msgid "Italian"
msgstr ""
msgstr "Italiano"
#: install/includes/interface_assets/footer.php:63
msgid "Montenegrin"
msgstr ""
msgstr "Montenegrino"
#: install/includes/interface_assets/footer.php:64
msgid "Polish"
msgstr ""
msgstr "Polaco"
#: install/includes/interface_assets/footer.php:65
msgid "Portuguese"
msgstr ""
msgstr "Portugués"
#: install/includes/interface_assets/footer.php:66
msgid "Russian"
msgstr ""
msgstr "Ruso"
#: install/includes/interface_assets/footer.php:67
msgid "Serbian"
msgstr ""
msgstr "Serbio"
#: install/includes/interface_assets/footer.php:68
msgid "Spanish"
msgstr ""
msgstr "Español"
#: install/includes/interface_assets/footer.php:69
msgid "Swedish"
msgstr ""
msgstr "Sueco"
#: install/includes/interface_assets/footer.php:70
msgid "Turkish"
msgstr ""
msgstr "Turco"
#: install/includes/interface_assets/header.php:94
msgid "Install | Wavelog"
msgstr ""
msgstr "Instalar | Wavelog"
#: install/index.php:30
msgid "1. Welcome"
msgstr ""
msgstr "1. Bienvenido"
#: install/index.php:33
msgid "2. Pre Checks"
msgstr ""
msgstr "2. Comprobaciones previas"
#: install/index.php:36
msgid "3. Configuration"
msgstr ""
msgstr "3. Configuración"
#: install/index.php:39
msgid "4. Database"
msgstr ""
msgstr "4. Base de datos"
#: install/index.php:42
msgid "5. First User"
msgstr ""
msgstr "5. Primer Usuario"
#: install/index.php:45
msgid "6. Finish"
msgstr ""
msgstr "6. Terminar"
#: install/index.php:62
msgid "Welcome to the Wavelog Installer"
msgstr ""
msgstr "Bienvenido al Instalador de Wavelog"
#: install/index.php:63
msgid ""
@@ -159,10 +161,14 @@ msgid ""
"logging software. Follow the steps in each tab to configure and install "
"Wavelog on your server."
msgstr ""
"Este instalador te guiará a través de los pasos necesarios para la "
"instalación de Wavelog. <br>Wavelog es un potente software de registro de "
"radioaficionados basado en la web. Sigue los pasos en cada pestaña para "
"configurar e instalar Wavelog en tu servidor."
#: install/index.php:64
msgid "Discussions"
msgstr ""
msgstr "Discusiones"
#: install/index.php:64
#, php-format
@@ -170,97 +176,105 @@ msgid ""
"If you encounter any issues or have questions, refer to the documentation "
"(%s) or community forum (%s) on Github for assistance."
msgstr ""
"Si encuentras algún problema o tienes preguntas, consulta la documentación "
"(%s) o el foro de la comunidad (%s) en Github para obtener ayuda."
#: install/index.php:64
msgid "Wiki"
msgstr ""
msgstr "Wiki"
#: install/index.php:65
msgid "Thank you for installing Wavelog!"
msgstr ""
msgstr "¡Gracias por instalar Wavelog!"
#: install/index.php:66 install/index.php:69 install/index.php:1036
msgid "Language"
msgstr ""
msgstr "Idioma"
#: install/index.php:79
msgid "Select a language"
msgstr ""
msgstr "Selecciona un idioma"
#: install/index.php:91 install/index.php:421
msgid "Close"
msgstr ""
msgstr "Cerrar"
#: install/index.php:101
msgid "PHP Modules"
msgstr ""
msgstr "Módulos PHP"
#: install/index.php:108
msgid "Version"
msgstr ""
msgstr "Versión"
#: install/index.php:109
#, php-format
msgctxt "PHP Version"
msgid "min. %s (recommended %s+)"
msgstr ""
msgstr "min. %s (recomendado %s+)"
#: install/index.php:136
msgid "Installed"
msgstr ""
msgstr "Instalado"
#: install/index.php:136
msgid "Not Installed"
msgstr ""
msgstr "No instalado"
#: install/index.php:144
msgid "PHP Settings"
msgstr ""
msgstr "Configuraciones de PHP"
#: install/index.php:234
msgid "Folder Write Permissions"
msgstr ""
msgstr "Permisos de escritura en la carpeta"
#: install/index.php:240 install/index.php:251 install/index.php:262
#: install/index.php:273 install/index.php:284
msgid "Success"
msgstr ""
msgstr "Éxito"
#: install/index.php:243 install/index.php:254 install/index.php:265
#: install/index.php:276 install/index.php:287
msgid "Failed"
msgstr ""
msgstr "Fallido"
#: install/index.php:294
msgid "Web Server"
msgstr ""
msgstr "Servidor web"
#: install/index.php:297
msgid "Version:"
msgstr ""
msgstr "Versión:"
#: install/index.php:304
msgid "Important note for nginx users!"
msgstr ""
msgstr "¡Nota importante para los usuarios de nginx!"
#: install/index.php:305
msgid ""
"Since you are using nginx as web server please make sure that you have made "
"the changes described in the Wiki before continuing."
msgstr ""
"Dado que estás usando nginx como servidor web, asegúrate de haber realizado "
"los cambios descritos en la Wiki antes de continuar."
#: install/index.php:314
msgid "Some Checks have failed!"
msgstr ""
msgstr "¡Algunas verificaciones han fallado!"
#: install/index.php:315
msgid "Check your PHP settings and install missing modules if necessary."
msgstr ""
"Revisa tu configuración de PHP e instala los módulos que falten si es "
"necesario."
#: install/index.php:316
msgid ""
"After that, you have to restart your webserver and start the installer again."
msgstr ""
"Después de eso, tienes que reiniciar tu servidor web y comenzar el "
"instalador de nuevo."
#: install/index.php:317
#, php-format
@@ -268,40 +282,48 @@ msgid ""
"In case of failed 'Folder Write Permissions' check out our Wiki <a href='%s' "
"target='_blank'>here</a>."
msgstr ""
"En caso de fallo en 'Permisos de Escritura de Carpeta', consulta nuestra "
"Wiki <a href='%s' target='_blank'>aquí</a>."
#: install/index.php:323
msgid "You have some warnings!"
msgstr ""
msgstr "¡Tienes algunas advertencias!"
#: install/index.php:324
msgid ""
"Some of the settings are not optimal. You can proceed with the installer but "
"be aware that you could run into problems while using Wavelog."
msgstr ""
"Algunas de las configuraciones no son óptimas. Puedes continuar con el "
"instalador, pero ten en cuenta que podrías tener problemas al usar Wavelog."
#: install/index.php:331
msgid "All Checks are OK. You can continue."
msgstr ""
msgstr "Todas las comprobaciones están bien. Puedes continuar."
#: install/index.php:345
msgid ""
"Configure some basic parameters for your wavelog instance. You can change "
"them later in 'application/config/config.php'"
msgstr ""
"Configura algunos parámetros básicos para tu instancia de wavelog. Puedes "
"cambiarlos más tarde en 'application/config/config.php'"
#: install/index.php:347
msgid "Directory"
msgstr ""
msgstr "Directorio"
#: install/index.php:347
msgid ""
"The 'Directory' is basically your subfolder of the webroot In normal "
"conditions the prefilled value is doing it's job. It also can be empty."
msgstr ""
"El 'Directorio' es básicamente tu subcarpeta de la raíz web. En condiciones "
"normales, el valor prellenado hace su trabajo. También puede estar vacío."
#: install/index.php:352
msgid "No slash before or after the directory. Just the name of the folder."
msgstr ""
msgstr "Sin barra antes o después del directorio. Solo el nombre de la carpeta."
#: install/index.php:357
#, php-format
@@ -311,10 +333,14 @@ msgid ""
"Proxy with SSL you should type in the new URL here (e.g. %s instead of %s). "
"Don't forget to include the directory from above."
msgstr ""
"Esta es la URL completa donde estará disponible tu instancia de Wavelog. Si "
"ejecutas este instalador localmente pero quieres colocar Wavelog detrás de "
"un Proxy Inverso con SSL, debes escribir la nueva URL aquí (por ejemplo, %s "
"en lugar de %s). No olvides incluir el directorio de arriba."
#: install/index.php:357
msgid "Website URL"
msgstr ""
msgstr "URL del sitio web"
#: install/index.php:360
msgid ""
@@ -323,10 +349,14 @@ msgid ""
"\t\t\t\t\t\t\t\t\t\t\t\t\t- have to end with a slash 'example/'<br>\n"
"\t\t\t\t\t\t\t\t\t\t\t\t\t- have to start with 'http'"
msgstr ""
"Este campo<br>\n"
"- no puede estar vacío<br>\n"
"- debe terminar con una barra 'ejemplo/'<br>\n"
"- debe comenzar con 'http'"
#: install/index.php:367
msgid "Optional: Global Callbook Lookup"
msgstr ""
msgstr "Opcional: Búsqueda en el Callbook Global"
#: install/index.php:367
msgid ""
@@ -336,124 +366,142 @@ msgid ""
"credentials for QRZ.com. To also get the Call Locator in QRZ.com you'll need "
"an XML subscription. HamQTH does not always provide the locator information."
msgstr ""
"Esta configuración es opcional. La búsqueda de indicativos estará disponible "
"para todos los usuarios de esta instalación. Puedes elegir entre QRZ.com y "
"HamQTH. Mientras que HamQTH también funciona sin nombre de usuario y "
"contraseña, necesitarás credenciales para QRZ.com. Para obtener también el "
"Localizador de Indicativos en QRZ.com necesitarás una suscripción XML. "
"HamQTH no siempre proporciona la información del localizador."
#: install/index.php:376 install/index.php:453 install/index.php:905
msgid "Username"
msgstr ""
msgstr "Nombre de usuario"
#: install/index.php:379 install/index.php:457 install/index.php:915
msgid "Password"
msgstr ""
msgstr "Contraseña"
#: install/index.php:384
msgid "Callbook Username"
msgstr ""
msgstr "Nombre de usuario del Callbook"
#: install/index.php:387
msgid "Callbook Password"
msgstr ""
msgstr "Contraseña del Callbook"
#: install/index.php:389
#, php-format
msgid "Password can't contain %s or be empty"
msgstr ""
msgstr "La contraseña no puede contener %s ni estar vacía"
#: install/index.php:394 install/index.php:399
msgid "Advanced Settings"
msgstr ""
msgstr "Configuraciones avanzadas"
#: install/index.php:402
msgid "These settings should only be set if you know what you're doing."
msgstr ""
"Estas configuraciones solo deben establecerse si sabes lo que estás haciendo."
#: install/index.php:405
msgid "Error Logs"
msgstr ""
msgstr "Registros de errores"
#: install/index.php:406
msgid ""
"Optional: Enable Error Logging by setting the log threshold bigger then 0. "
"Only enable this if you really need it."
msgstr ""
"Opcional: Habilita el registro de errores configurando el umbral de registro "
"mayor que 0. Solo habilítalo si realmente lo necesitas."
#: install/index.php:411
msgid "0 - No logs"
msgstr ""
msgstr "0 - Sin registros"
#: install/index.php:412
msgid "1 - Error messages"
msgstr ""
msgstr "1 - Mensajes de error"
#: install/index.php:413
msgid "2 - Debug messages"
msgstr ""
msgstr "2 - Mensajes de depuración"
#: install/index.php:414
msgid "3 - Info messages"
msgstr ""
msgstr "3 - Mensajes informativos"
#: install/index.php:415
msgid "4 - All messages"
msgstr ""
msgstr "4 - Todos los mensajes"
#: install/index.php:437
msgid ""
"To properly install Wavelog you already should have setup a mariadb/mysql "
"database. Provide the parameters here."
msgstr ""
"Para instalar correctamente Wavelog, ya deberías haber configurado una base "
"de datos mariadb/mysql. Proporciona los parámetros aquí."
#: install/index.php:441
msgid "Hostname or IP"
msgstr ""
msgstr "Nombre de host o IP"
#: install/index.php:441
msgid ""
"Usually 'localhost'.<br>Optional with '[host]:[port]'. Default port: 3306."
"<br>In a docker compose install type 'wavelog-db'."
msgstr ""
"Normalmente 'localhost'.<br>Opcional con '[host]:[port]'. Puerto "
"predeterminado: 3306.<br>En una instalación de docker compose, escribe "
"'wavelog-db'."
#: install/index.php:447
msgid "Database Name"
msgstr ""
msgstr "Nombre de la base de datos"
#: install/index.php:447
msgid "Name of the Database"
msgstr ""
msgstr "Nombre de la base de datos"
#: install/index.php:453
msgid "Username of the Database User which has full access to the database."
msgstr ""
"Nombre de usuario de la base de datos que tiene acceso completo a la base de "
"datos."
#: install/index.php:457
msgid "Password of the Database User"
msgstr ""
msgstr "Contraseña del Usuario de la Base de Datos"
#: install/index.php:461
msgid "Connection Test"
msgstr ""
msgstr "Prueba de conexión"
#: install/index.php:472
msgid ""
"Now you can create your first user in Wavelog. Fill out all fields and click "
"continue. Make sure you use a safe password."
msgstr ""
"Ahora puedes crear tu primer usuario en Wavelog. Rellena todos los campos y "
"haz clic en continuar. Asegúrate de usar una contraseña segura."
#: install/index.php:473
msgid "All fields are required!"
msgstr ""
msgstr "¡Todos los campos son obligatorios!"
#: install/index.php:481
msgid "First Name"
msgstr ""
msgstr "Nombre"
#: install/index.php:485
msgid "DXCC"
msgstr ""
msgstr "DXCC"
#: install/index.php:487
msgctxt "No DXCC"
msgid "- None -"
msgstr ""
msgstr "- Ninguno -"
#: install/index.php:488 install/index.php:494 install/index.php:518
#: install/index.php:530 install/index.php:533 install/index.php:538
@@ -477,136 +525,142 @@ msgstr ""
#: install/index.php:849 install/index.php:854 install/index.php:880
#: install/index.php:886 install/index.php:888 install/index.php:1700
msgid "Deleted DXCC"
msgstr ""
msgstr "DXCC Eliminado"
#: install/index.php:895
msgid "Last Name"
msgstr ""
msgstr "Apellidos"
#: install/index.php:899
msgid "Callsign"
msgstr ""
msgstr "Indicativo"
#: install/index.php:909
msgid "Gridsquare/Locator"
msgstr ""
msgstr "Cuadrícula/Localizador"
#: install/index.php:919
msgid "City"
msgstr ""
msgstr "Ciudad"
#: install/index.php:925
msgid "Confirm Password"
msgstr ""
msgstr "Confirmar Contraseña"
#: install/index.php:929
msgid "Timezone"
msgstr ""
msgstr "Zona horaria"
#: install/index.php:1032
msgid "E-Mail Address"
msgstr ""
msgstr "Dirección de correo electrónico"
#: install/index.php:1054
msgid "Checklist"
msgstr ""
msgstr "Lista de verificación"
#: install/index.php:1059
msgid "Pre-Checks"
msgstr ""
msgstr "Comprobaciones previas"
#: install/index.php:1068
msgid "Configuration"
msgstr ""
msgstr "Configuración"
#: install/index.php:1077
msgid "Database"
msgstr ""
msgstr "Base de datos"
#: install/index.php:1086
msgid "First User"
msgstr ""
msgstr "Primer Usuario"
#: install/index.php:1096
msgid "Nearly done!"
msgstr ""
msgstr "¡Ya casi está!"
#: install/index.php:1098
msgid "You prepared all neccessary steps."
msgstr ""
msgstr "Has preparado todos los pasos necesarios."
#: install/index.php:1099
msgid "We now can install Wavelog. This process can take a few minutes."
msgstr ""
msgstr "Ahora podemos instalar Wavelog. Este proceso puede tardar unos minutos."
#: install/index.php:1105
msgid "Reset"
msgstr ""
msgstr "Restablecer"
#: install/index.php:1110
msgid "Installer Reset"
msgstr ""
msgstr "Reinicio del instalador"
#: install/index.php:1113
msgid "Do you really want to reset all data and start from scratch?"
msgstr ""
msgstr "¿Realmente quieres restablecer todos los datos y empezar desde cero?"
#: install/index.php:1116
msgid "Yes"
msgstr ""
msgstr ""
#: install/index.php:1117
msgid "No"
msgstr ""
msgstr "No"
#: install/index.php:1127
msgid "Back"
msgstr ""
msgstr "Atrás"
#: install/index.php:1128
msgid "Continue"
msgstr ""
msgstr "Continuar"
#: install/index.php:1206
msgid ""
"You can't continue. Solve the red marked issues, restart the webserver and "
"reload this page."
msgstr ""
"No puedes continuar. Resuelve los problemas marcados en rojo, reinicia el "
"servidor web y recarga esta página."
#: install/index.php:1333
msgid "Password can't contain ' / \\ < >"
msgstr ""
msgstr "La contraseña no puede contener ' / \\ < >"
#: install/index.php:1500
msgid "Error: At least Hostname/IP, Database Name and Username are required."
msgstr ""
"Error: Se requieren al menos el nombre de host/IP, el nombre de la base de "
"datos y el nombre de usuario."
#: install/index.php:1510
msgid "Connecting..."
msgstr ""
msgstr "Conectando..."
#: install/index.php:1534
msgid "Connection was successful and your database should be compatible."
msgstr ""
msgstr "La conexión fue exitosa y tu base de datos debería ser compatible."
#: install/index.php:1538
msgid ""
"Connection was successful but your database seems too old for Wavelog. You "
"can try to continue but you could run into issues."
msgstr ""
"La conexión fue exitosa, pero tu base de datos parece demasiado antigua para "
"Wavelog. Puedes intentar continuar, pero podrías encontrarte con problemas."
#: install/index.php:1538
#, php-format
msgid "The min. version for MySQL is %s, for MariaDB it's %s."
msgstr ""
msgstr "La versión mínima para MySQL es %s, para MariaDB es %s."
#: install/index.php:1653
msgid "Search"
msgstr ""
msgstr "Buscar"
#: install/index.php:1686
msgid "At least one field is empty."
msgstr ""
msgstr "Al menos un campo está vacío."
#: install/index.php:1702
msgid ""
@@ -614,120 +668,129 @@ msgid ""
"Check which DXCC for this particular location is the correct one. If you are "
"sure, ignore this warning."
msgstr ""
"Deténgase aquí un momento. Su DXCC elegido está obsoleto y ya no es válido. "
"Comprueba cuál es el DXCC correcto para esta localización en particular. Si "
"está seguro, ignore esta advertencia."
#: install/index.php:1726
msgid ""
"The locator seems to be not in the correct format. Should look like AA11AA "
"(6-char grid locator)."
msgstr ""
"El localizador parece no estar en el formato correcto. Debería verse como "
"AA11AA (localizador de cuadrícula de 6 caracteres)."
#: install/index.php:1740
msgid ""
"The e-mail adress does not look correct. Make sure it's a valid e-mail "
"address"
msgstr ""
"La dirección de correo electrónico no parece correcta. Asegúrate de que sea "
"una dirección de correo electrónico válida"
#: install/index.php:1767
msgid "Password should be at least 8 characters long"
msgstr ""
msgstr "La contraseña debe tener al menos 8 caracteres de longitud"
#: install/index.php:1776
msgid "Passwords do not match"
msgstr ""
msgstr "Las contraseñas no coinciden"
#: install/index.php:1823
msgid "Install Now"
msgstr ""
msgstr "Instalar ahora"
#: install/index.php:1827
msgid "Install not possible. Checklist incomplete."
msgstr ""
msgstr "Instalación no posible. Lista de verificación incompleta."
#: install/index.php:1943
msgid "PHP Module missing"
msgstr ""
msgstr "Módulo PHP faltante"
#: install/index.php:1945
msgid "The following PHP modules are missing:"
msgstr ""
msgstr "Faltan los siguientes módulos de PHP:"
#: install/index.php:1946
msgid "Without this module the Wavelog Installer does not work!"
msgstr ""
msgstr "¡Sin este módulo, el instalador de Wavelog no funciona!"
#: install/index.php:1947
msgid "Please install the required modules and restart the webserver."
msgstr ""
msgstr "Por favor, instala los módulos necesarios y reinicia el servidor web."
#: install/run.php:10
msgid "Installation"
msgstr ""
msgstr "Instalación"
#: install/run.php:12
msgid "Please wait..."
msgstr ""
msgstr "Por favor espera..."
#: install/run.php:15
msgid "Copy config.php to application/config/"
msgstr ""
msgstr "Copia config.php a application/config/"
#: install/run.php:18
msgid "Copy database.php to application/config/"
msgstr ""
msgstr "Copia database.php a application/config/"
#: install/run.php:21
msgid "Creating database tables"
msgstr ""
msgstr "Creando tablas de base de datos"
#: install/run.php:24
msgid "Running database migrations"
msgstr ""
msgstr "Ejecutando migraciones de base de datos"
#: install/run.php:27
msgid "Updating DXCC data"
msgstr ""
msgstr "Actualizando datos de DXCC"
#: install/run.php:35
msgid "Lock the installer"
msgstr ""
msgstr "Bloquea el instalador"
#: install/run.php:39
#, php-format
msgid "All install steps went through. Redirect to user login in %s seconds..."
msgstr ""
"Todos los pasos de instalación se completaron. Redirigiendo al inicio de "
"sesión del usuario en %s segundos..."
#: install/run.php:42
msgid "Done. Go to the user login ->"
msgstr ""
msgstr "Hecho. Ir al inicio de sesión de usuario ->"
#: install/run.php:46 install/run.php:125
msgid "Show detailled debug log"
msgstr ""
msgstr "Mostrar registro detallado de depuración"
#: install/run.php:127
msgid "Hide detailled debug log"
msgstr ""
msgstr "Ocultar registro de depuración detallado"
#: install/run.php:182
msgid "Could not create application/config/config.php"
msgstr ""
msgstr "No se pudo crear application/config/config.php"
#: install/run.php:217
msgid "Could not create application/config/database.php"
msgstr ""
msgstr "No se pudo crear application/config/database.php"
#: install/run.php:251
msgid "Could not create database tables"
msgstr ""
msgstr "No se pudieron crear las tablas de la base de datos"
#: install/run.php:281
msgid "Could not run database migrations"
msgstr ""
msgstr "No se pudieron ejecutar las migraciones de la base de datos"
#: install/run.php:309
msgid "Could not update DXCC data"
msgstr ""
msgstr "No se pudo actualizar los datos de DXCC"
#: install/run.php:341
msgid "Could not create install/.lock file"
msgstr ""
msgstr "No se pudo crear el archivo install/.lock"

View File

@@ -4,12 +4,13 @@
#
# Byt3 <falko@205er.de>, 2024.
# "Francisco (F4VSE)" <kikosgc@gmail.com>, 2024.
# "Francisco (F4VSE)" <kikosgc@users.noreply.github.com>, 2024.
msgid ""
msgstr ""
"Report-Msgid-Bugs-To: translations@wavelog.org\n"
"POT-Creation-Date: 2024-08-12 09:45+0000\n"
"PO-Revision-Date: 2024-07-22 18:23+0000\n"
"Last-Translator: \"Francisco (F4VSE)\" <kikosgc@gmail.com>\n"
"PO-Revision-Date: 2024-08-18 14:15+0000\n"
"Last-Translator: \"Francisco (F4VSE)\" <kikosgc@users.noreply.github.com>\n"
"Language-Team: French <https://translate.wavelog.org/projects/wavelog/"
"installer/fr/>\n"
"Language: fr_FR\n"
@@ -17,35 +18,35 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Weblate 5.6.2\n"
"X-Generator: Weblate 5.7\n"
#: install/includes/core/database_class.php:59
msgid "Connection Error: "
msgstr ""
msgstr "Erreur de connexion : "
#: install/includes/core/database_class.php:63
msgid "Unable to create database: "
msgstr ""
msgstr "Impossible de créer la base de données : "
#: install/includes/core/database_class.php:68
msgid "Unable to select database: "
msgstr ""
msgstr "Impossible de sélectionner la base de données : "
#: install/includes/core/database_class.php:74
msgid "Database is not empty."
msgstr ""
msgstr "La base de données n'est pas vide."
#: install/includes/install_config/install_lib.php:123
msgid "not detected"
msgstr ""
msgstr "non détecté"
#: install/includes/interface_assets/footer.php:50
msgid "Albanian"
msgstr ""
msgstr "Albanais"
#: install/includes/interface_assets/footer.php:51
msgid "Bosnian"
msgstr ""
msgstr "Bosniaque"
#: install/includes/interface_assets/footer.php:52
msgid "Bulgarian"
@@ -57,7 +58,7 @@ msgstr "Chinois (simplifié)"
#: install/includes/interface_assets/footer.php:54
msgid "Croatian"
msgstr ""
msgstr "Croate"
#: install/includes/interface_assets/footer.php:55
msgid "Czech"
@@ -93,7 +94,7 @@ msgstr "Italien"
#: install/includes/interface_assets/footer.php:63
msgid "Montenegrin"
msgstr ""
msgstr "Monténégrin"
#: install/includes/interface_assets/footer.php:64
msgid "Polish"
@@ -101,7 +102,7 @@ msgstr "Polonais"
#: install/includes/interface_assets/footer.php:65
msgid "Portuguese"
msgstr ""
msgstr "Portugais"
#: install/includes/interface_assets/footer.php:66
msgid "Russian"
@@ -109,7 +110,7 @@ msgstr "Russe"
#: install/includes/interface_assets/footer.php:67
msgid "Serbian"
msgstr ""
msgstr "Serbe"
#: install/includes/interface_assets/footer.php:68
msgid "Spanish"
@@ -213,7 +214,7 @@ msgstr "Version"
#, php-format
msgctxt "PHP Version"
msgid "min. %s (recommended %s+)"
msgstr ""
msgstr "min. %s (recommandé %s+)"
#: install/index.php:136
msgid "Installed"
@@ -229,35 +230,37 @@ msgstr "Paramètres de PHP"
#: install/index.php:234
msgid "Folder Write Permissions"
msgstr ""
msgstr "Autorisations d'écriture de dossier"
#: install/index.php:240 install/index.php:251 install/index.php:262
#: install/index.php:273 install/index.php:284
msgid "Success"
msgstr ""
msgstr "Succès"
#: install/index.php:243 install/index.php:254 install/index.php:265
#: install/index.php:276 install/index.php:287
msgid "Failed"
msgstr ""
msgstr "Échoué"
#: install/index.php:294
msgid "Web Server"
msgstr ""
msgstr "Serveur Web"
#: install/index.php:297
msgid "Version:"
msgstr ""
msgstr "Version :"
#: install/index.php:304
msgid "Important note for nginx users!"
msgstr ""
msgstr "Note importante pour les utilisateurs de nginx !"
#: install/index.php:305
msgid ""
"Since you are using nginx as web server please make sure that you have made "
"the changes described in the Wiki before continuing."
msgstr ""
"Puisque vous utilisez nginx comme serveur web, assurez-vous d'avoir effectué "
"les modifications décrites dans la Wiki avant de continuer."
#: install/index.php:314
msgid "Some Checks have failed!"
@@ -281,6 +284,8 @@ msgid ""
"In case of failed 'Folder Write Permissions' check out our Wiki <a href='%s' "
"target='_blank'>here</a>."
msgstr ""
"En cas d'échec de la vérification des 'Permissions d'écriture du dossier', "
"consultez notre Wiki <a href='%s' target='_blank'>ici</a>."
#: install/index.php:323
msgid "You have some warnings!"
@@ -323,6 +328,7 @@ msgstr ""
#: install/index.php:352
msgid "No slash before or after the directory. Just the name of the folder."
msgstr ""
"Pas de barre oblique avant ou après le répertoire. Juste le nom du dossier."
#: install/index.php:357
#, php-format
@@ -349,6 +355,10 @@ msgid ""
"\t\t\t\t\t\t\t\t\t\t\t\t\t- have to end with a slash 'example/'<br>\n"
"\t\t\t\t\t\t\t\t\t\t\t\t\t- have to start with 'http'"
msgstr ""
"Ce champ<br>\n"
"- ne peut pas être vide<br>\n"
"- doit se terminer par une barre oblique 'exemple/'<br>\n"
"- doit commencer par 'http'"
#: install/index.php:367
msgid "Optional: Global Callbook Lookup"
@@ -389,45 +399,49 @@ msgstr "Mot de passe du carnet"
#: install/index.php:389
#, php-format
msgid "Password can't contain %s or be empty"
msgstr ""
msgstr "Le mot de passe ne peut pas contenir %s ou être vide"
#: install/index.php:394 install/index.php:399
msgid "Advanced Settings"
msgstr ""
msgstr "Paramètres avancés"
#: install/index.php:402
msgid "These settings should only be set if you know what you're doing."
msgstr ""
"Ces paramètres ne doivent être définis que si vous savez ce que vous faites."
#: install/index.php:405
msgid "Error Logs"
msgstr ""
msgstr "Journaux d'erreurs"
#: install/index.php:406
msgid ""
"Optional: Enable Error Logging by setting the log threshold bigger then 0. "
"Only enable this if you really need it."
msgstr ""
"Optionnel : Activer la journalisation des erreurs en définissant le seuil de "
"journalisation supérieur à 0. N'activez cela que si vous en avez vraiment "
"besoin."
#: install/index.php:411
msgid "0 - No logs"
msgstr ""
msgstr "0 - Pas de journaux"
#: install/index.php:412
msgid "1 - Error messages"
msgstr ""
msgstr "1 - Messages d'erreur"
#: install/index.php:413
msgid "2 - Debug messages"
msgstr ""
msgstr "2 - Messages de débogage"
#: install/index.php:414
msgid "3 - Info messages"
msgstr ""
msgstr "3 - Messages d'info"
#: install/index.php:415
msgid "4 - All messages"
msgstr ""
msgstr "4 - Tous les messages"
#: install/index.php:437
msgid ""
@@ -446,6 +460,8 @@ msgid ""
"Usually 'localhost'.<br>Optional with '[host]:[port]'. Default port: 3306."
"<br>In a docker compose install type 'wavelog-db'."
msgstr ""
"Habituellement 'localhost'.<br>Optionnel avec '[host]:[port]'. Port par "
"défaut : 3306.<br>Dans une installation docker compose, tape 'wavelog-db'."
#: install/index.php:447
msgid "Database Name"
@@ -474,10 +490,13 @@ msgid ""
"Now you can create your first user in Wavelog. Fill out all fields and click "
"continue. Make sure you use a safe password."
msgstr ""
"Vous pouvez maintenant créer votre premier utilisateur dans Wavelog. "
"Remplissez tous les champs et cliquez sur continuer.<br>Assurez-vous "
"d'utiliser un mot de passe sécurisé."
#: install/index.php:473
msgid "All fields are required!"
msgstr ""
msgstr "Tous les champs sont obligatoires !"
#: install/index.php:481
msgid "First Name"
@@ -550,7 +569,7 @@ msgstr "Liste de verification"
#: install/index.php:1059
msgid "Pre-Checks"
msgstr ""
msgstr "Vérifications préalables"
#: install/index.php:1068
msgid "Configuration"
@@ -580,23 +599,24 @@ msgstr ""
#: install/index.php:1105
msgid "Reset"
msgstr ""
msgstr "Réinitialiser"
#: install/index.php:1110
msgid "Installer Reset"
msgstr ""
msgstr "Réinitialiser l'installateur"
#: install/index.php:1113
msgid "Do you really want to reset all data and start from scratch?"
msgstr ""
"Voulez-vous vraiment réinitialiser toutes les données et recommencer à zéro ?"
#: install/index.php:1116
msgid "Yes"
msgstr ""
msgstr "Oui"
#: install/index.php:1117
msgid "No"
msgstr ""
msgstr "Non"
#: install/index.php:1127
msgid "Back"
@@ -611,14 +631,18 @@ msgid ""
"You can't continue. Solve the red marked issues, restart the webserver and "
"reload this page."
msgstr ""
"Vous ne pouvez pas continuer. Résolvez les problèmes marqués en rouge, "
"redémarrez le serveur web et rechargez cette page."
#: install/index.php:1333
msgid "Password can't contain ' / \\ < >"
msgstr ""
msgstr "Le mot de passe ne peut pas contenir ' / \\ < >"
#: install/index.php:1500
msgid "Error: At least Hostname/IP, Database Name and Username are required."
msgstr ""
"Erreur : Au moins le nom d'hôte/IP, le nom de la base de données et le nom "
"d'utilisateur sont requis."
#: install/index.php:1510
msgid "Connecting..."
@@ -627,6 +651,7 @@ msgstr "Connection..."
#: install/index.php:1534
msgid "Connection was successful and your database should be compatible."
msgstr ""
"La connexion a été réussie et votre base de données devrait être compatible."
#: install/index.php:1538
msgid ""
@@ -640,15 +665,15 @@ msgstr ""
#: install/index.php:1538
#, php-format
msgid "The min. version for MySQL is %s, for MariaDB it's %s."
msgstr ""
msgstr "La version min. pour MySQL est %s, pour MariaDB c'est %s."
#: install/index.php:1653
msgid "Search"
msgstr ""
msgstr "Chercher"
#: install/index.php:1686
msgid "At least one field is empty."
msgstr ""
msgstr "Au moins un champ est vide."
#: install/index.php:1702
msgid ""
@@ -656,18 +681,25 @@ msgid ""
"Check which DXCC for this particular location is the correct one. If you are "
"sure, ignore this warning."
msgstr ""
"Arrêtez-vous ici un moment. Votre DXCC choisi est obsolète et n'est plus "
"valide. Vérifiez quel DXCC pour cet emplacement particulier est le bon. Si "
"vous êtes sûr, ignorez cet avertissement."
#: install/index.php:1726
msgid ""
"The locator seems to be not in the correct format. Should look like AA11AA "
"(6-char grid locator)."
msgstr ""
"Le locator ne semble pas être au bon format. Il devrait ressembler à AA11AA ("
"locator de grille à 6 caractères)."
#: install/index.php:1740
msgid ""
"The e-mail adress does not look correct. Make sure it's a valid e-mail "
"address"
msgstr ""
"L'adresse e-mail ne semble pas correcte. Assurez-vous qu'il s'agit d'une "
"adresse e-mail valide"
#: install/index.php:1767
msgid "Password should be at least 8 characters long"
@@ -683,96 +715,98 @@ msgstr "Installer maintenant"
#: install/index.php:1827
msgid "Install not possible. Checklist incomplete."
msgstr ""
msgstr "Installation impossible. Liste de verification incomplète."
#: install/index.php:1943
msgid "PHP Module missing"
msgstr ""
msgstr "Module PHP manquant"
#: install/index.php:1945
msgid "The following PHP modules are missing:"
msgstr ""
msgstr "Les modules PHP suivants sont manquants :"
#: install/index.php:1946
msgid "Without this module the Wavelog Installer does not work!"
msgstr ""
msgstr "Sans ce module, l'installateur Wavelog ne fonctionne pas !"
#: install/index.php:1947
msgid "Please install the required modules and restart the webserver."
msgstr ""
msgstr "Veuillez installer les modules requis et redémarrer le serveur web."
#: install/run.php:10
msgid "Installation"
msgstr ""
msgstr "Installation"
#: install/run.php:12
msgid "Please wait..."
msgstr ""
msgstr "Veuillez patienter..."
#: install/run.php:15
msgid "Copy config.php to application/config/"
msgstr ""
msgstr "Copier config.php dans application/config/"
#: install/run.php:18
msgid "Copy database.php to application/config/"
msgstr ""
msgstr "Copier database.php dans application/config/"
#: install/run.php:21
msgid "Creating database tables"
msgstr ""
msgstr "Création de tables de base de données"
#: install/run.php:24
msgid "Running database migrations"
msgstr ""
msgstr "Exécution des migrations de base de données"
#: install/run.php:27
msgid "Updating DXCC data"
msgstr ""
msgstr "Mise à jour des données DXCC"
#: install/run.php:35
msgid "Lock the installer"
msgstr ""
msgstr "Verrouille l'installateur"
#: install/run.php:39
#, php-format
msgid "All install steps went through. Redirect to user login in %s seconds..."
msgstr ""
"Toutes les étapes d'installation ont été effectuées. Redirection vers la "
"connexion utilisateur dans %s secondes..."
#: install/run.php:42
msgid "Done. Go to the user login ->"
msgstr ""
msgstr "Fait. Allez à la connexion utilisateur ->"
#: install/run.php:46 install/run.php:125
msgid "Show detailled debug log"
msgstr ""
msgstr "Afficher le journal de débogage détaillé"
#: install/run.php:127
msgid "Hide detailled debug log"
msgstr ""
msgstr "Masquer le journal de débogage détaillé"
#: install/run.php:182
msgid "Could not create application/config/config.php"
msgstr ""
msgstr "Impossible de créer application/config/config.php"
#: install/run.php:217
msgid "Could not create application/config/database.php"
msgstr ""
msgstr "Impossible de créer application/config/database.php"
#: install/run.php:251
msgid "Could not create database tables"
msgstr ""
msgstr "Impossible de créer les tables de la base de données"
#: install/run.php:281
msgid "Could not run database migrations"
msgstr ""
msgstr "Impossible d'exécuter les migrations de la base de données"
#: install/run.php:309
msgid "Could not update DXCC data"
msgstr ""
msgstr "Impossible de mettre à jour les données DXCC"
#: install/run.php:341
msgid "Could not create install/.lock file"
msgstr ""
msgstr "Impossible de créer le fichier install/.lock"
#~ msgid "On"
#~ msgstr "Allumé"

View File

@@ -3,12 +3,13 @@
# This file is distributed under the MIT licence.
#
# Luca <lucabennati1996@gmail.com>, 2024.
# "Francisco (F4VSE)" <kikosgc@users.noreply.github.com>, 2024.
msgid ""
msgstr ""
"Report-Msgid-Bugs-To: translations@wavelog.org\n"
"POT-Creation-Date: 2024-08-12 09:45+0000\n"
"PO-Revision-Date: 2024-08-09 07:24+0000\n"
"Last-Translator: Luca <lucabennati1996@gmail.com>\n"
"PO-Revision-Date: 2024-08-18 19:11+0000\n"
"Last-Translator: \"Francisco (F4VSE)\" <kikosgc@users.noreply.github.com>\n"
"Language-Team: Italian <https://translate.wavelog.org/projects/wavelog/"
"installer/it/>\n"
"Language: it_IT\n"
@@ -16,143 +17,143 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.6.2\n"
"X-Generator: Weblate 5.7\n"
#: install/includes/core/database_class.php:59
msgid "Connection Error: "
msgstr ""
msgstr "Errore di connessione: "
#: install/includes/core/database_class.php:63
msgid "Unable to create database: "
msgstr ""
msgstr "Impossibile creare il database: "
#: install/includes/core/database_class.php:68
msgid "Unable to select database: "
msgstr ""
msgstr "Impossibile selezionare il database: "
#: install/includes/core/database_class.php:74
msgid "Database is not empty."
msgstr ""
msgstr "Il database non è vuoto."
#: install/includes/install_config/install_lib.php:123
msgid "not detected"
msgstr ""
msgstr "non rilevato"
#: install/includes/interface_assets/footer.php:50
msgid "Albanian"
msgstr ""
msgstr "Albanese"
#: install/includes/interface_assets/footer.php:51
msgid "Bosnian"
msgstr ""
msgstr "Bosniaco"
#: install/includes/interface_assets/footer.php:52
msgid "Bulgarian"
msgstr ""
msgstr "Bulgaro"
#: install/includes/interface_assets/footer.php:53
msgid "Chinese (Simplified)"
msgstr ""
msgstr "Cinese (semplificato)"
#: install/includes/interface_assets/footer.php:54
msgid "Croatian"
msgstr ""
msgstr "Croato"
#: install/includes/interface_assets/footer.php:55
msgid "Czech"
msgstr ""
msgstr "Ceco"
#: install/includes/interface_assets/footer.php:56
msgid "Dutch"
msgstr ""
msgstr "Olandese"
#: install/includes/interface_assets/footer.php:57
msgid "English"
msgstr ""
msgstr "Inglese"
#: install/includes/interface_assets/footer.php:58
msgid "Finnish"
msgstr ""
msgstr "Finlandese"
#: install/includes/interface_assets/footer.php:59
msgid "French"
msgstr ""
msgstr "Francese"
#: install/includes/interface_assets/footer.php:60
msgid "German"
msgstr ""
msgstr "Tedesco"
#: install/includes/interface_assets/footer.php:61
msgid "Greek"
msgstr ""
msgstr "Greco"
#: install/includes/interface_assets/footer.php:62
msgid "Italian"
msgstr ""
msgstr "Italiano"
#: install/includes/interface_assets/footer.php:63
msgid "Montenegrin"
msgstr ""
msgstr "Montenegrino"
#: install/includes/interface_assets/footer.php:64
msgid "Polish"
msgstr ""
msgstr "Polacco"
#: install/includes/interface_assets/footer.php:65
msgid "Portuguese"
msgstr ""
msgstr "Portoghese"
#: install/includes/interface_assets/footer.php:66
msgid "Russian"
msgstr ""
msgstr "Russo"
#: install/includes/interface_assets/footer.php:67
msgid "Serbian"
msgstr ""
msgstr "Serbo"
#: install/includes/interface_assets/footer.php:68
msgid "Spanish"
msgstr ""
msgstr "Spagnolo"
#: install/includes/interface_assets/footer.php:69
msgid "Swedish"
msgstr ""
msgstr "Svedese"
#: install/includes/interface_assets/footer.php:70
msgid "Turkish"
msgstr ""
msgstr "Turco"
#: install/includes/interface_assets/header.php:94
msgid "Install | Wavelog"
msgstr ""
msgstr "Installa | Wavelog"
#: install/index.php:30
msgid "1. Welcome"
msgstr ""
msgstr "1. Benvenuto"
#: install/index.php:33
msgid "2. Pre Checks"
msgstr ""
msgstr "2. Controlli preliminari"
#: install/index.php:36
msgid "3. Configuration"
msgstr ""
msgstr "3. Configurazione"
#: install/index.php:39
msgid "4. Database"
msgstr ""
msgstr "4. Database"
#: install/index.php:42
msgid "5. First User"
msgstr ""
msgstr "5. Primo Utente"
#: install/index.php:45
msgid "6. Finish"
msgstr ""
msgstr "6. Finisci"
#: install/index.php:62
msgid "Welcome to the Wavelog Installer"
msgstr ""
msgstr "Benvenuto nell'installatore di Wavelog"
#: install/index.php:63
msgid ""
@@ -161,10 +162,14 @@ msgid ""
"logging software. Follow the steps in each tab to configure and install "
"Wavelog on your server."
msgstr ""
"Questo programma di installazione ti guiderà attraverso i passaggi necessari "
"per l'installazione di Wavelog. <br>Wavelog è un potente software di "
"registrazione per radioamatori basato sul web. Segui i passaggi in ciascuna "
"scheda per configurare e installare Wavelog sul tuo server."
#: install/index.php:64
msgid "Discussions"
msgstr ""
msgstr "Discussioni"
#: install/index.php:64
#, php-format
@@ -172,97 +177,104 @@ msgid ""
"If you encounter any issues or have questions, refer to the documentation "
"(%s) or community forum (%s) on Github for assistance."
msgstr ""
"Se riscontri problemi o hai domande, consulta la documentazione (%s) o il "
"forum della community (%s) su Github per assistenza."
#: install/index.php:64
msgid "Wiki"
msgstr ""
msgstr "Wiki"
#: install/index.php:65
msgid "Thank you for installing Wavelog!"
msgstr ""
msgstr "Grazie per aver installato Wavelog!"
#: install/index.php:66 install/index.php:69 install/index.php:1036
msgid "Language"
msgstr ""
msgstr "Lingua"
#: install/index.php:79
msgid "Select a language"
msgstr ""
msgstr "Seleziona una lingua"
#: install/index.php:91 install/index.php:421
msgid "Close"
msgstr ""
msgstr "Chiudi"
#: install/index.php:101
msgid "PHP Modules"
msgstr ""
msgstr "Moduli PHP"
#: install/index.php:108
msgid "Version"
msgstr ""
msgstr "Versione"
#: install/index.php:109
#, php-format
msgctxt "PHP Version"
msgid "min. %s (recommended %s+)"
msgstr ""
msgstr "min. %s (consigliato %s+)"
#: install/index.php:136
msgid "Installed"
msgstr ""
msgstr "Installato"
#: install/index.php:136
msgid "Not Installed"
msgstr ""
msgstr "Non installato"
#: install/index.php:144
msgid "PHP Settings"
msgstr ""
msgstr "Impostazioni PHP"
#: install/index.php:234
msgid "Folder Write Permissions"
msgstr ""
msgstr "Autorizzazioni di scrittura della cartella"
#: install/index.php:240 install/index.php:251 install/index.php:262
#: install/index.php:273 install/index.php:284
msgid "Success"
msgstr ""
msgstr "Successo"
#: install/index.php:243 install/index.php:254 install/index.php:265
#: install/index.php:276 install/index.php:287
msgid "Failed"
msgstr ""
msgstr "Fallito"
#: install/index.php:294
msgid "Web Server"
msgstr ""
msgstr "Server Web"
#: install/index.php:297
msgid "Version:"
msgstr ""
msgstr "Versione:"
#: install/index.php:304
msgid "Important note for nginx users!"
msgstr ""
msgstr "Nota importante per gli utenti di nginx!"
#: install/index.php:305
msgid ""
"Since you are using nginx as web server please make sure that you have made "
"the changes described in the Wiki before continuing."
msgstr ""
"Dal momento che stai usando nginx come server web, assicurati di aver "
"apportato le modifiche descritte nel Wiki prima di continuare."
#: install/index.php:314
msgid "Some Checks have failed!"
msgstr ""
msgstr "Alcuni controlli sono falliti!"
#: install/index.php:315
msgid "Check your PHP settings and install missing modules if necessary."
msgstr ""
"Controlla le impostazioni di PHP e installa i moduli mancanti se necessario."
#: install/index.php:316
msgid ""
"After that, you have to restart your webserver and start the installer again."
msgstr ""
"Dopo di che, devi riavviare il tuo server web e avviare di nuovo "
"l'installatore."
#: install/index.php:317
#, php-format
@@ -270,26 +282,33 @@ msgid ""
"In case of failed 'Folder Write Permissions' check out our Wiki <a href='%s' "
"target='_blank'>here</a>."
msgstr ""
"In caso di fallimento del controllo 'Permessi di scrittura della cartella', "
"consulta il nostro Wiki <a href='%s' target='_blank'>qui</a>."
#: install/index.php:323
msgid "You have some warnings!"
msgstr ""
msgstr "Hai degli avvertimenti!"
#: install/index.php:324
msgid ""
"Some of the settings are not optimal. You can proceed with the installer but "
"be aware that you could run into problems while using Wavelog."
msgstr ""
"Alcune delle impostazioni non sono ottimali. Puoi procedere con "
"l'installazione, ma tieni presente che potresti incontrare problemi durante "
"l'uso di Wavelog."
#: install/index.php:331
msgid "All Checks are OK. You can continue."
msgstr ""
msgstr "Tutti i controlli sono OK. Puoi continuare."
#: install/index.php:345
msgid ""
"Configure some basic parameters for your wavelog instance. You can change "
"them later in 'application/config/config.php'"
msgstr ""
"Configura alcuni parametri di base per la tua istanza wavelog. Puoi "
"cambiarli successivamente in 'application/config/config.php'"
#: install/index.php:347
msgid "Directory"

View File

@@ -5,12 +5,13 @@
# Michael Skolsky <r1blh@yandex.ru>, 2024.
# Florian Wolters <wavelog@df2et.de>, 2024.
# Fabian Berg <hb9hil@wavelog.org>, 2024.
# "Francisco (F4VSE)" <kikosgc@users.noreply.github.com>, 2024.
msgid ""
msgstr ""
"Report-Msgid-Bugs-To: translations@wavelog.org\n"
"POT-Creation-Date: 2024-08-12 09:45+0000\n"
"PO-Revision-Date: 2024-08-12 08:57+0000\n"
"Last-Translator: Michael Skolsky <r1blh@yandex.ru>\n"
"PO-Revision-Date: 2024-08-18 19:11+0000\n"
"Last-Translator: \"Francisco (F4VSE)\" <kikosgc@users.noreply.github.com>\n"
"Language-Team: Russian <https://translate.wavelog.org/projects/wavelog/"
"installer/ru/>\n"
"Language: ru_RU\n"
@@ -18,7 +19,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Weblate 5.6.2\n"
"X-Generator: Weblate 5.7\n"
#: install/includes/core/database_class.php:59
msgid "Connection Error: "
@@ -42,11 +43,11 @@ msgstr "не обнаружено"
#: install/includes/interface_assets/footer.php:50
msgid "Albanian"
msgstr ""
msgstr "Албанский"
#: install/includes/interface_assets/footer.php:51
msgid "Bosnian"
msgstr ""
msgstr "Боснийский"
#: install/includes/interface_assets/footer.php:52
msgid "Bulgarian"
@@ -58,7 +59,7 @@ msgstr "Китайский (упрощённый)"
#: install/includes/interface_assets/footer.php:54
msgid "Croatian"
msgstr ""
msgstr "Хорватский"
#: install/includes/interface_assets/footer.php:55
msgid "Czech"
@@ -94,7 +95,7 @@ msgstr "Итальянский"
#: install/includes/interface_assets/footer.php:63
msgid "Montenegrin"
msgstr ""
msgstr "Черногорский"
#: install/includes/interface_assets/footer.php:64
msgid "Polish"
@@ -110,7 +111,7 @@ msgstr "Русский"
#: install/includes/interface_assets/footer.php:67
msgid "Serbian"
msgstr ""
msgstr "Сербский"
#: install/includes/interface_assets/footer.php:68
msgid "Spanish"

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Report-Msgid-Bugs-To: translations@wavelog.org\n"
"POT-Creation-Date: 2024-08-12 09:45+0000\n"
"PO-Revision-Date: 2024-08-13 19:24+0000\n"
"PO-Revision-Date: 2024-08-18 19:11+0000\n"
"Last-Translator: Dragan Đorđević <4o4a.dragan@gmail.com>\n"
"Language-Team: Serbian <https://translate.wavelog.org/projects/wavelog/"
"installer/sr/>\n"
@@ -18,7 +18,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 5.6.2\n"
"X-Generator: Weblate 5.7\n"
#: install/includes/core/database_class.php:59
msgid "Connection Error: "
@@ -299,7 +299,7 @@ msgstr ""
#: install/index.php:331
msgid "All Checks are OK. You can continue."
msgstr "Sve provere su OK. Možete nastaviti."
msgstr "Sve provere su u redu. Možete nastaviti."
#: install/index.php:345
msgid ""