diff --git a/application/config/config.sample.php b/application/config/config.sample.php
index fd619c4b..c783c0de 100644
--- a/application/config/config.sample.php
+++ b/application/config/config.sample.php
@@ -14,7 +14,7 @@ defined('BASEPATH') OR exit('No direct script access allowed');
*/
$config['app_name'] = "Cloudlog";
-$config['app_version'] = "1.7";
+$config['app_version'] = "2.1";
$config['directory'] = "logbook";
$config['callbook'] = "hamqth"; // Options are hamqth or qrz
diff --git a/application/config/migration.php b/application/config/migration.php
index 4082bbf7..bb486284 100644
--- a/application/config/migration.php
+++ b/application/config/migration.php
@@ -21,7 +21,7 @@ $config['migration_enabled'] = TRUE;
| be upgraded / downgraded to.
|
*/
-$config['migration_version'] = 105;
+$config['migration_version'] = 109;
/*
|--------------------------------------------------------------------------
diff --git a/application/config/mimes.php b/application/config/mimes.php
index 86486228..c3a1de5a 100644
--- a/application/config/mimes.php
+++ b/application/config/mimes.php
@@ -117,7 +117,7 @@ return array(
'json' => array('application/json', 'text/json'),
'pem' => array('application/x-x509-user-cert', 'application/x-pem-file', 'application/octet-stream'),
'p10' => array('application/x-pkcs10', 'application/pkcs10'),
- 'p12' => 'application/octet-stream',
+ 'p12' => array('application/octet-stream', 'application/x-pkcs12'),
'p7a' => 'application/x-pkcs7-signature',
'p7c' => array('application/pkcs7-mime', 'application/x-pkcs7-mime'),
'p7m' => array('application/pkcs7-mime', 'application/x-pkcs7-mime'),
diff --git a/application/controllers/Awards.php b/application/controllers/Awards.php
index 8f24a371..512d84c4 100644
--- a/application/controllers/Awards.php
+++ b/application/controllers/Awards.php
@@ -257,6 +257,23 @@ class Awards extends CI_Controller {
$this->load->view('interface_assets/footer');
}
+ /*
+ Handles showing worked POTAs
+ Comment field - POTA:#
+ */
+ public function pota() {
+
+ // Grab all worked pota stations
+ $this->load->model('pota');
+ $data['pota_all'] = $this->pota->get_all();
+
+ // Render page
+ $data['page_title'] = "Awards - POTA";
+ $this->load->view('interface_assets/header', $data);
+ $this->load->view('awards/pota/index');
+ $this->load->view('interface_assets/footer');
+ }
+
public function cq() {
$CI =& get_instance();
$CI->load->model('logbooks_model');
diff --git a/application/controllers/Eqsl.php b/application/controllers/Eqsl.php
index 121d3582..18f6f7aa 100644
--- a/application/controllers/Eqsl.php
+++ b/application/controllers/Eqsl.php
@@ -103,6 +103,7 @@ class eqsl extends CI_Controller {
$this->load->model('logbook_model');
$data['page_title'] = "eQSL QSO Upload";
+ $custom_date_format = $this->session->userdata('user_date_format');
if ($this->input->post('eqslexport') == "export")
{
@@ -122,9 +123,10 @@ class eqsl extends CI_Controller {
// perform an HTTP get on each one, and grab the status back
$qslsnotsent = $this->logbook_model->eqsl_not_yet_sent();
- $table = "
";
+ $table = "";
$table .= "";
$table .= "| Date | ";
+ $table .= "Time | ";
$table .= "Call | ";
$table .= "Mode | ";
$table .= "Submode | ";
@@ -336,6 +338,7 @@ class eqsl extends CI_Controller {
$result = curl_exec($ch);
$chi = curl_getinfo($ch);
curl_close($ch);
+
/* Time for some error handling
Things we might get back
@@ -401,7 +404,9 @@ class eqsl extends CI_Controller {
}
}
$table .= "
";
- $table .= "| ".$qsl['COL_TIME_ON']." | ";
+ $timestamp = strtotime($qsl['COL_TIME_ON']);
+ $table .= "".date($custom_date_format, $timestamp)." | ";
+ $table .= "".date('H:i', $timestamp)." | ";
$table .= "".str_replace("0","Ø",$qsl['COL_CALL'])." | ";
$table .= "".$qsl['COL_MODE']." | ";
if(isset($qsl['COL_SUBMODE'])) {
@@ -428,6 +433,7 @@ class eqsl extends CI_Controller {
$table = "";
$table .= "";
$table .= "| Date | ";
+ $table .= "Time | ";
$table .= "Call | ";
$table .= "Mode | ";
$table .= "Submode | ";
@@ -438,7 +444,9 @@ class eqsl extends CI_Controller {
foreach ($qslsnotsent->result_array() as $qsl)
{
$table .= "
";
- $table .= "| ".$qsl['COL_TIME_ON']." | ";
+ $timestamp = strtotime($qsl['COL_TIME_ON']);
+ $table .= "".date($custom_date_format, $timestamp)." | ";
+ $table .= "".date('H:i', $timestamp)." | ";
$table .= "" . str_replace("0","Ø",strtoupper($qsl['COL_CALL'])) . " | ";
$table .= "".$qsl['COL_MODE']." | ";
diff --git a/application/controllers/Logbook.php b/application/controllers/Logbook.php
index 86ce804c..1470c924 100644
--- a/application/controllers/Logbook.php
+++ b/application/controllers/Logbook.php
@@ -124,6 +124,7 @@ class Logbook extends CI_Controller {
$this->load->model('logbook_model');
$return = [
+ "callsign" => strtoupper($callsign),
"dxcc" => false,
"callsign_name" => "",
"callsign_qra" => "",
@@ -533,7 +534,20 @@ class Logbook extends CI_Controller {
$html .= "RST (R) | ";
$html .= "Band | ";
$html .= "Mode | ";
- $html .= "QSL | ";
+ switch($this->session->userdata('user_previous_qsl_type')) {
+ case 0:
+ $html .= "".$this->lang->line('gen_hamradio_qsl')." | ";
+ break;
+ case 1:
+ $html .= "".$this->lang->line('lotw_short')." | ";
+ break;
+ case 2:
+ $html .= "".$this->lang->line('eqsl_short')." | ";
+ break;
+ default:
+ $html .= "".$this->lang->line('gen_hamradio_qsl')." | ";
+ break;
+ }
$html .= " | ";
$html .= "
";
@@ -565,44 +579,88 @@ class Logbook extends CI_Controller {
$html .= "".$row->COL_MODE." | ";
else
$html .= "".$row->COL_SUBMODE." | ";
- $html .= "";
- $html .= "COL_QSL_SENT) {
- case "Y":
- $html .= "green";
- break;
- case "Q":
- $html .= "yellow";
- break;
- case "R":
- $html .= "yellow";
- break;
- case "I":
- $html .= "grey";
- break;
- default:
- $html .= "red";
+ if ($this->session->userdata('user_previous_qsl_type') == 1) {
+ $html .= " | ";
+ $html .= "COL_LOTW_QSL_SENT) {
+ case "Y":
+ $html .= "green";
+ break;
+ default:
+ $html .= "red";
+ }
+ $html .= "\">▲";
+ $html .= "COL_LOTW_QSL_RCVD) {
+ case "Y":
+ $html .= "green";
+ break;
+ default:
+ $html .= "red";
+ }
+ $html .= "\">▼";
+ $html .= " | ";
+ } else if ($this->session->userdata('user_previous_qsl_type') == 2) {
+ $html .= "";
+ $html .= "COL_EQSL_QSL_SENT) {
+ case "Y":
+ $html .= "green";
+ break;
+ default:
+ $html .= "red";
+ }
+ $html .= "\">▲";
+ $html .= "COL_EQSL_QSL_RCVD) {
+ case "Y":
+ $html .= "green";
+ break;
+ default:
+ $html .= "red";
+ }
+ $html .= "\">▼";
+ $html .= " | ";
+ } else {
+ $html .= "";
+ $html .= "COL_QSL_SENT) {
+ case "Y":
+ $html .= "green";
+ break;
+ case "Q":
+ $html .= "yellow";
+ break;
+ case "R":
+ $html .= "yellow";
+ break;
+ case "I":
+ $html .= "grey";
+ break;
+ default:
+ $html .= "red";
+ }
+ $html .= "\">▲";
+ $html .= "COL_QSL_RCVD) {
+ case "Y":
+ $html .= "green";
+ break;
+ case "Q":
+ $html .= "yellow";
+ break;
+ case "R":
+ $html .= "yellow";
+ break;
+ case "I":
+ $html .= "grey";
+ break;
+ default:
+ $html .= "red";
+ }
+ $html .= "\">▼";
+ $html .= " | ";
}
- $html .= "\">▲";
- $html .= "COL_QSL_RCVD) {
- case "Y":
- $html .= "green";
- break;
- case "Q":
- $html .= "yellow";
- break;
- case "R":
- $html .= "yellow";
- break;
- case "I":
- $html .= "grey";
- break;
- default:
- $html .= "red";
- }
- $html .= "\">▼";
- $html .= "";
$html .= "".$row->station_callsign." | ";
$html .= "";
}
diff --git a/application/controllers/Lotw.php b/application/controllers/Lotw.php
index 5505a045..16d2636e 100644
--- a/application/controllers/Lotw.php
+++ b/application/controllers/Lotw.php
@@ -121,6 +121,9 @@ class Lotw extends CI_Controller {
// Upload of P12 Failed
$error = array('error' => $this->upload->display_errors());
+ // Load DXCC Countrys List
+ $data['dxcc_list'] = $this->dxcc->list();
+
// Set Page Title
$data['page_title'] = "Logbook of the World";
@@ -932,6 +935,7 @@ class Lotw extends CI_Controller {
"AISAT1" => "AISAT-1",
'UVSQ' => "UVSQ-SAT",
'CAS-3H' => "LILACSAT-2",
+ 'IO-117' => "GREENCUBE",
);
return array_search(strtoupper($satname),$arr,true);
diff --git a/application/controllers/Qso.php b/application/controllers/Qso.php
index 9301bedc..227e5c2c 100755
--- a/application/controllers/Qso.php
+++ b/application/controllers/Qso.php
@@ -369,6 +369,35 @@ class QSO extends CI_Controller {
echo json_encode($json);
}
+ public function get_pota() {
+ $json = [];
+
+ if(!empty($this->input->get("query"))) {
+ $query = isset($_GET['query']) ? $_GET['query'] : FALSE;
+ $pota = strtoupper($query);
+
+ $file = 'assets/json/pota.txt';
+
+ if (is_readable($file)) {
+ $lines = file($file, FILE_IGNORE_NEW_LINES);
+ $input = preg_quote($pota, '~');
+ $reg = '~^'. $input .'(.*)$~';
+ $result = preg_grep($reg, $lines);
+ $json = [];
+ $i = 0;
+ foreach ($result as &$value) {
+ // Limit to 100 as to not slowdown browser too much
+ if (count($json) <= 100) {
+ $json[] = ["name"=>$value];
+ }
+ }
+ }
+ }
+
+ header('Content-Type: application/json');
+ echo json_encode($json);
+ }
+
/*
* Function is used for autocompletion of DOK in the QSO entry form
*/
diff --git a/application/controllers/Update.php b/application/controllers/Update.php
index 0133ba4c..243ff104 100644
--- a/application/controllers/Update.php
+++ b/application/controllers/Update.php
@@ -417,6 +417,43 @@ class Update extends CI_Controller {
}
}
+ public function update_pota() {
+ $csvfile = 'https://pota.app/all_parks.csv';
+
+ $potafile = './assets/json/pota.txt';
+
+ $ch = curl_init();
+ curl_setopt($ch, CURLOPT_URL, $csvfile);
+ curl_setopt($ch, CURLOPT_HEADER, false);
+ curl_setopt($ch, CURLOPT_USERAGENT, 'Cloudlog Updater');
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+ $csv = curl_exec($ch);
+ curl_close($ch);
+
+ $potafilehandle = fopen($potafile, 'w');
+ $data = str_getcsv($csv,"\n");
+ foreach ($data as $idx => $row) {
+ if ($idx == 0) continue; // Skip line we are not interested in
+ $row = str_getcsv($row, ',');
+ if ($row[0]) {
+ fwrite($potafilehandle, $row[0].PHP_EOL);
+ }
+ }
+
+ fclose($potafilehandle);
+ if (file_exists($potafile))
+ {
+ $nCount = count(file($potafile));
+ if ($nCount > 0)
+ {
+ echo "DONE: " . number_format($nCount) . " POTA's saved";
+ } else {
+ echo"FAILED: Empty file";
+ }
+ } else {
+ echo"FAILED: Could not create pota.txt file locally";
+ }
+ }
}
?>
diff --git a/application/controllers/User.php b/application/controllers/User.php
index 7128e97f..c323bdb9 100644
--- a/application/controllers/User.php
+++ b/application/controllers/User.php
@@ -9,6 +9,8 @@ class User extends CI_Controller {
// Load language files
$this->lang->load(array(
'account',
+ 'lotw',
+ 'eqsl',
));
}
@@ -78,6 +80,7 @@ class User extends CI_Controller {
$data['user_column4'] = $this->input->post('user_column4');
$data['user_column5'] = $this->input->post('user_column5');
$data['user_show_profile_image'] = $this->input->post('user_show_profile_image');
+ $data['user_previous_qsl_type'] = $this->input->post('user_previous_qsl_type');
$this->load->view('user/add', $data);
} else {
$this->load->view('user/add', $data);
@@ -107,7 +110,8 @@ class User extends CI_Controller {
$this->input->post('user_column3'),
$this->input->post('user_column4'),
$this->input->post('user_column5'),
- $this->input->post('user_show_profile_image'))) {
+ $this->input->post('user_show_profile_image'),
+ $this->input->post('user_previous_qsl_type'))) {
// Check for errors
case EUSERNAMEEXISTS:
$data['username_error'] = 'Username '.$this->input->post('user_name').' already in use!';
@@ -147,6 +151,7 @@ class User extends CI_Controller {
$data['user_column4'] = $this->input->post('user_column4');
$data['user_column5'] = $this->input->post('user_column5');
$data['user_show_profile_image'] = $this->input->post('user_show_profile_image');
+ $data['user_previous_qsl_type'] = $this->input->post('user_previous_qsl_type');
$this->load->view('user/add', $data);
$this->load->view('interface_assets/footer');
}
@@ -336,6 +341,12 @@ class User extends CI_Controller {
$data['user_show_profile_image'] = $q->user_show_profile_image;
}
+ if($this->input->post('user_previous_qsl_type')) {
+ $data['user_previous_qsl_type'] = $this->input->post('user_previous_qsl_type', false);
+ } else {
+ $data['user_previous_qsl_type'] = $q->user_previous_qsl_type;
+ }
+
if($this->input->post('user_column1')) {
$data['user_column1'] = $this->input->post('user_column1', true);
} else {
@@ -418,6 +429,7 @@ class User extends CI_Controller {
$data['user_column4'] = $this->input->post('user_column4');
$data['user_column5'] = $this->input->post('user_column5');
$data['user_show_profile_image'] = $this->input->post('user_show_profile_image');
+ $data['user_previous_qsl_type'] = $this->input->post('user_previous_qsl_type');
$this->load->view('user/edit');
$this->load->view('interface_assets/footer');
}
diff --git a/application/language/bulgarian/qso_lang.php b/application/language/bulgarian/qso_lang.php
index 7e25aaf4..7af103f8 100644
--- a/application/language/bulgarian/qso_lang.php
+++ b/application/language/bulgarian/qso_lang.php
@@ -5,15 +5,15 @@ defined('BASEPATH') OR exit('Не е разрешен директен дост
// Tiles
$lang['qso_title_qso_map'] = 'Карта на QSO';
$lang['qso_title_suggestions'] = 'Предложения';
-$lang['qso_title_pervious_contacts'] = 'Предишни контакти';
+$lang['qso_title_previous_contacts'] = 'Предишни контакти';
// Input Help Text on the /QSO Display
$lang['qso_transmit_power_helptext'] = 'Посочете стойността на мощността във ватове. Въведете само цифри.';
$lang['qso_sota_ref_helptext'] = 'Например: GM/NS-001.';
-$lang['qso_sig_helptext'] = 'Например: WWFF или POTA';
-$lang['qso_sig_info_helptext'] = 'Например: DLFF-0029';
+$lang['qso_sig_helptext'] = 'Например: GMA';
+$lang['qso_sig_info_helptext'] = 'Например: DA/NW-357';
$lang['qso_dok_helptext'] = 'Например: Q03';
diff --git a/application/language/chinese_simplified/qso_lang.php b/application/language/chinese_simplified/qso_lang.php
index e19987ec..eb225d19 100644
--- a/application/language/chinese_simplified/qso_lang.php
+++ b/application/language/chinese_simplified/qso_lang.php
@@ -5,15 +5,15 @@ defined('BASEPATH') OR exit('No direct script access allowed');
// Tiles
$lang['qso_title_qso_map'] = 'QSO 地图';
$lang['qso_title_suggestions'] = '建议';
-$lang['qso_title_pervious_contacts'] = '先前通联';
+$lang['qso_title_previous_contacts'] = '先前通联';
// Input Help Text on the /QSO Display
$lang['qso_transmit_power_helptext'] = '以瓦特为单位设置功率值。在输入中仅填写数值。';
$lang['qso_sota_ref_helptext'] = '例如: GM/NS-001.';
-$lang['qso_sig_helptext'] = '例如: WWFF or POTA';
-$lang['qso_sig_info_helptext'] = '例如: DLFF-0029';
+$lang['qso_sig_helptext'] = '例如: GMA';
+$lang['qso_sig_info_helptext'] = '例如: DA/NW-357';
$lang['qso_dok_helptext'] = '例如: Q03';
diff --git a/application/language/czech/qso_lang.php b/application/language/czech/qso_lang.php
index e0746e56..375e5233 100644
--- a/application/language/czech/qso_lang.php
+++ b/application/language/czech/qso_lang.php
@@ -5,15 +5,15 @@ defined('BASEPATH') OR exit('No direct script access allowed');
// Tiles
$lang['qso_title_qso_map'] = 'Mapa spojení';
$lang['qso_title_suggestions'] = 'Návrhy';
-$lang['qso_title_pervious_contacts'] = 'Předchozí spojení';
+$lang['qso_title_previous_contacts'] = 'Předchozí spojení';
// Input Help Text on the /QSO Display
$lang['qso_transmit_power_helptext'] = 'Zadej výkon ve Wattech. Jsou povolen pouz čísla';
$lang['qso_sota_ref_helptext'] = 'Příklad: GM/NS-001.';
-$lang['qso_sig_helptext'] = 'Příklad: WWFF or POTA';
-$lang['qso_sig_info_helptext'] = 'Příklad: DLFF-0029';
+$lang['qso_sig_helptext'] = 'Příklad: GMA';
+$lang['qso_sig_info_helptext'] = 'Příklad: DA/NW-357';
$lang['qso_dok_helptext'] = 'Příklad: Q03';
diff --git a/application/language/dutch/qso_lang.php b/application/language/dutch/qso_lang.php
index dc0f3f5b..65b25f5f 100644
--- a/application/language/dutch/qso_lang.php
+++ b/application/language/dutch/qso_lang.php
@@ -5,15 +5,15 @@ defined('BASEPATH') OR exit('Directe toegang tot scripts is niet toegestaan');
// Tiles
$lang['qso_title_qso_map'] = 'QSO Kaart';
$lang['qso_title_suggestions'] = 'Suggesties';
-$lang['qso_title_pervious_contacts'] = 'Eerdere verbindingen';
+$lang['qso_title_previous_contacts'] = 'Eerdere verbindingen';
// Input Help Text on the /QSO Display
$lang['qso_transmit_power_helptext'] = 'Geef vermogen in Watt. Vermeld alleen cijfers.';
$lang['qso_sota_ref_helptext'] = 'Bijvoorbeeld: GM/NS-001.';
-$lang['qso_sig_helptext'] = 'Bijvoorbeeld: WWFF of POTA';
-$lang['qso_sig_info_helptext'] = 'Bijvoorbeeld: DLFF-0029';
+$lang['qso_sig_helptext'] = 'Bijvoorbeeld: GMA';
+$lang['qso_sig_info_helptext'] = 'Bijvoorbeeld: DA/NW-357';
$lang['qso_dok_helptext'] = 'Bijvoorbeeld: Q03';
@@ -22,4 +22,4 @@ $lang['qso_notes_helptext'] = 'Notities worden alleen in Cloudlog gebruikt en wo
// Button Text on /qso Display
$lang['qso_btn_reset_qso'] = 'Wis QSO';
-$lang['qso_btn_save_qso'] = 'Bewaar QSO';
\ No newline at end of file
+$lang['qso_btn_save_qso'] = 'Bewaar QSO';
diff --git a/application/language/english/general_words_lang.php b/application/language/english/general_words_lang.php
index 3a221be3..e5dc1512 100644
--- a/application/language/english/general_words_lang.php
+++ b/application/language/english/general_words_lang.php
@@ -99,11 +99,13 @@ $lang['gen_hamradio_county_reference'] = 'USA County';
$lang['gen_hamradio_iota_reference'] = 'IOTA Reference';
$lang['gen_hamradio_sota_reference'] = 'SOTA Reference';
$lang['gen_hamradio_wwff_reference'] = 'WWFF Reference';
+$lang['gen_hamradio_pota_reference'] = 'POTA Reference';
$lang['gen_hamradio_dok'] = 'DOK';
$lang['gen_hamradio_state'] = 'State';
$lang['gen_hamradio_iota'] = 'IOTA';
$lang['gen_hamradio_sota'] = 'SOTA';
$lang['gen_hamradio_wwff'] = 'WWFF';
+$lang['gen_hamradio_pota'] = 'POTA';
$lang['gen_hamradio_gridsquare'] = 'Gridsquare';
$lang['gen_hamradio_operator'] = 'Operator';
diff --git a/application/language/english/qslcard_lang.php b/application/language/english/qslcard_lang.php
index b83b793f..f3806dab 100644
--- a/application/language/english/qslcard_lang.php
+++ b/application/language/english/qslcard_lang.php
@@ -7,10 +7,16 @@ $lang['qslcard_string_your_are_using'] = 'You are using';
$lang['qslcard_string_disk_space'] = 'of disk space to store QSL Card assets';
$lang['qslcard_info'] = 'QSL Info';
+$lang['qslcard_sent'] = 'QSL Card has been sent on';
$lang['qslcard_sent_bureau'] = 'QSL Card has been sent via the bureau on';
$lang['qslcard_sent_direct'] = 'QSL Card has been sent via direct on';
+$lang['qslcard_sent_electronic'] = 'QSL Card has been sent electronically on';
+$lang['qslcard_sent_manager'] = 'QSL Card has been sent via manager on';
+$lang['qslcard_rcvd'] = 'QSL Card has been received on';
$lang['qslcard_rcvd_bureau'] = 'QSL Card has been received via the bureau on';
$lang['qslcard_rcvd_direct'] = 'QSL Card has been received via direct on';
+$lang['qslcard_rcvd_electronic'] = 'QSL Card has been received electronically on';
+$lang['qslcard_rcvd_manager'] = 'QSL Card has been received via manager on';
$lang['qslcard_upload_front'] = 'Uploaded QSL Card front image';
$lang['qslcard_upload_back'] = 'Uploaded QSL Card back image';
diff --git a/application/language/english/qso_lang.php b/application/language/english/qso_lang.php
index e3613182..3b27929f 100644
--- a/application/language/english/qso_lang.php
+++ b/application/language/english/qso_lang.php
@@ -5,7 +5,7 @@ defined('BASEPATH') OR exit('No direct script access allowed');
// Tiles
$lang['qso_title_qso_map'] = 'QSO Map';
$lang['qso_title_suggestions'] = 'Suggestions';
-$lang['qso_title_pervious_contacts'] = 'Previous Contacts';
+$lang['qso_title_previous_contacts'] = 'Previous Contacts';
$lang['qso_title_image'] = 'Profile Picture';
// Input Help Text on the /QSO Display
@@ -13,9 +13,10 @@ $lang['qso_transmit_power_helptext'] = 'Give power value in Watts. Include only
$lang['qso_sota_ref_helptext'] = 'For example: GM/NS-001.';
$lang['qso_wwff_ref_helptext'] = 'For example: DLFF-0069.';
+$lang['qso_pota_ref_helptext'] = 'For example: PA-0150.';
-$lang['qso_sig_helptext'] = 'For example: POTA';
-$lang['qso_sig_info_helptext'] = 'For example: PA-0150';
+$lang['qso_sig_helptext'] = 'For example: GMA';
+$lang['qso_sig_info_helptext'] = 'For example: DA/NW-357';
$lang['qso_dok_helptext'] = 'For example: Q03';
diff --git a/application/language/finnish/qso_lang.php b/application/language/finnish/qso_lang.php
index 1587628f..72e2ec81 100644
--- a/application/language/finnish/qso_lang.php
+++ b/application/language/finnish/qso_lang.php
@@ -5,15 +5,15 @@ defined('BASEPATH') OR exit('No direct script access allowed');
// Tiles
$lang['qso_title_qso_map'] = 'Vasta-aseman sijainti kartalla';
$lang['qso_title_suggestions'] = 'Kutsumerkkiehdotukset';
-$lang['qso_title_pervious_contacts'] = 'Edelliset yhteydet';
+$lang['qso_title_previous_contacts'] = 'Edelliset yhteydet';
// Input Help Text on the /QSO Display
$lang['qso_transmit_power_helptext'] = 'Anna teholukema Watteina käyttäen vain numeroita.';
$lang['qso_sota_ref_helptext'] = 'Esimerkiksi: OH/JS-004.';
-$lang['qso_sig_helptext'] = 'Esimerkiksi: WWFF tai POTA';
-$lang['qso_sig_info_helptext'] = 'Esimerkiksi: OHFF-0029';
+$lang['qso_sig_helptext'] = 'Esimerkiksi: GMA';
+$lang['qso_sig_info_helptext'] = 'Esimerkiksi: DA/NW-357';
$lang['qso_dok_helptext'] = 'Esimerkiksi: Q03';
diff --git a/application/language/french/qso_lang.php b/application/language/french/qso_lang.php
index 63927bd3..bbed0738 100644
--- a/application/language/french/qso_lang.php
+++ b/application/language/french/qso_lang.php
@@ -5,15 +5,15 @@ defined('BASEPATH') OR exit('No direct script access allowed');
// Tiles
$lang['qso_title_qso_map'] = 'Carte QSO';
$lang['qso_title_suggestions'] = 'Suggestions';
-$lang['qso_title_pervious_contacts'] = 'Contacts précédents';
+$lang['qso_title_previous_contacts'] = 'Contacts précédents';
// Input Help Text on the /QSO Display
$lang['qso_transmit_power_helptext'] = 'Saisissez la ouissance en Watts en utilisant uniquement des chiffres.';
$lang['qso_sota_ref_helptext'] = 'Par exemple: GM/NS-001.';
-$lang['qso_sig_helptext'] = 'Par exemple: WWFF or POTA';
-$lang['qso_sig_info_helptext'] = 'Par exemple: DLFF-0029';
+$lang['qso_sig_helptext'] = 'Par exemple: GMA';
+$lang['qso_sig_info_helptext'] = 'Par exemple: DA/NW-357';
$lang['qso_dok_helptext'] = 'Par exemple: Q03';
diff --git a/application/language/german/general_words_lang.php b/application/language/german/general_words_lang.php
index 5e76a4c8..caf948f7 100644
--- a/application/language/german/general_words_lang.php
+++ b/application/language/german/general_words_lang.php
@@ -99,10 +99,13 @@ $lang['gen_hamradio_county_reference'] = 'USA County';
$lang['gen_hamradio_iota_reference'] = 'IOTA Referenznummer';
$lang['gen_hamradio_sota_reference'] = 'SOTA Referenznummer';
$lang['gen_hamradio_wwff_reference'] = 'WWFF Referenznummer';
+$lang['gen_hamradio_pota_reference'] = 'POTA Referenznummer';
$lang['gen_hamradio_dok'] = 'DOK';
$lang['gen_hamradio_state'] = 'Staat';
$lang['gen_hamradio_iota'] = 'IOTA';
$lang['gen_hamradio_sota'] = 'SOTA';
+$lang['gen_hamradio_wwff'] = 'WWFF';
+$lang['gen_hamradio_pota'] = 'POTA';
$lang['gen_hamradio_gridsquare'] = 'Planquadrat';
$lang['gen_hamradio_operator'] = 'Operator';
diff --git a/application/language/german/qslcard_lang.php b/application/language/german/qslcard_lang.php
index d6c9f59e..ae55a90e 100644
--- a/application/language/german/qslcard_lang.php
+++ b/application/language/german/qslcard_lang.php
@@ -6,10 +6,16 @@ defined('BASEPATH') OR exit('Direkter Zugriff auf Skripte ist nicht erlaubt');
$lang['qslcard_string_your_are_using'] = 'Du benutzt';
$lang['qslcard_string_disk_space'] = 'an Speicherplatz, um QSL-Karteninformationen zu speichern';
$lang['qslcard_info'] = 'QSL Info';
+$lang['qslcard_sent'] = 'QSL Karte wurde gesendet am';
$lang['qslcard_sent_bureau'] = 'QSL Karte wurde via Büro gesendet am';
$lang['qslcard_sent_direct'] = 'QSL Karte wurde direkt gesendet am';
+$lang['qslcard_sent_electronic'] = 'QSL Karte wurde elektronisch gesendet am';
+$lang['qslcard_sent_manager'] = 'QSL Karte wurde via Manager gesendet am';
+$lang['qslcard_rcvd'] = 'QSL Karte wurde empfangen am';
$lang['qslcard_rcvd_bureau'] = 'QSL Karte wurde via Büro empfangen am';
$lang['qslcard_rcvd_direct'] = 'QSL Karte wurde direkt empfangen am';
+$lang['qslcard_rcvd_electronic'] = 'QSL Karte wurde elektronisch empfangen am';
+$lang['qslcard_rcvd_manager'] = 'QSL Karte wurde via Manager empfangen am';
$lang['qslcard_upload_front'] = 'QSL Kartenfront hochgeladen';
$lang['qslcard_upload_back'] = 'QSL Kartenrückseite hochgeladen';
diff --git a/application/language/german/qso_lang.php b/application/language/german/qso_lang.php
index 0c655db4..0f1b0949 100644
--- a/application/language/german/qso_lang.php
+++ b/application/language/german/qso_lang.php
@@ -5,7 +5,7 @@ defined('BASEPATH') OR exit('Direkter Zugriff auf Skripte ist nicht erlaubt');
// Tiles
$lang['qso_title_qso_map'] = 'QSO-Karte';
$lang['qso_title_suggestions'] = 'Vorschläge';
-$lang['qso_title_pervious_contacts'] = 'Vorherige Kontakte';
+$lang['qso_title_previous_contacts'] = 'Vorherige Kontakte';
$lang['qso_title_image'] = 'Profilbild';
// Input Help Text on the /QSO Display
@@ -13,9 +13,10 @@ $lang['qso_transmit_power_helptext'] = 'Gib die Ausgangsleistung in Watt an. Erf
$lang['qso_sota_ref_helptext'] = 'Zum Beispiel: GM/NS-001.';
$lang['qso_wwff_ref_helptext'] = 'Zum Beispiel: DLFF-0069.';
+$lang['qso_pota_ref_helptext'] = 'Zum Beispiel: PA-0150.';
-$lang['qso_sig_helptext'] = 'Zum Beispiel: POTA';
-$lang['qso_sig_info_helptext'] = 'Zum Beispiel: PA-0150';
+$lang['qso_sig_helptext'] = 'Zum Beispiel: GMA';
+$lang['qso_sig_info_helptext'] = 'Zum Beispiel: DA/NW-357';
$lang['qso_dok_helptext'] = 'Zum Beispiel: Q03';
diff --git a/application/language/italian/qso_lang.php b/application/language/italian/qso_lang.php
index cb6d3653..8aebb73d 100644
--- a/application/language/italian/qso_lang.php
+++ b/application/language/italian/qso_lang.php
@@ -5,7 +5,7 @@ defined('BASEPATH') OR exit('Non è permesso l\'accesso diretto allo script');
// Tiles
$lang['qso_title_qso_map'] = 'Mappa QSO';
$lang['qso_title_suggestions'] = 'Suggerimenti';
-$lang['qso_title_pervious_contacts'] = 'Contatti Precedenti';
+$lang['qso_title_previous_contacts'] = 'Contatti Precedenti';
$lang['qso_title_image'] = 'Immagine Profilo';
// Input Help Text on the /QSO Display
@@ -13,9 +13,10 @@ $lang['qso_transmit_power_helptext'] = 'Dare valore di potenza in Watt. Includer
$lang['qso_sota_ref_helptext'] = 'Per esempio: GM/NS-001.';
$lang['qso_wwff_ref_helptext'] = 'Per esempio: DLFF-0069.';
+$lang['qso_pota_ref_helptext'] = 'Per esempio: PA-0150.';
-$lang['qso_sig_helptext'] = 'Per esempio: POTA';
-$lang['qso_sig_info_helptext'] = 'Per esempio: PA-0150';
+$lang['qso_sig_helptext'] = 'Per esempio: GMA';
+$lang['qso_sig_info_helptext'] = 'Per esempio: DA/NW-357';
$lang['qso_dok_helptext'] = 'Per esempio: Q03';
diff --git a/application/language/polish/qso_lang.php b/application/language/polish/qso_lang.php
index ea1f4087..03a8cf35 100644
--- a/application/language/polish/qso_lang.php
+++ b/application/language/polish/qso_lang.php
@@ -5,15 +5,15 @@ defined('BASEPATH') OR exit('No direct script access allowed');
// Tiles
$lang['qso_title_qso_map'] = 'Mapa łączności';
$lang['qso_title_suggestions'] = 'Sugestie';
-$lang['qso_title_pervious_contacts'] = 'Poprzednie łączności';
+$lang['qso_title_previous_contacts'] = 'Poprzednie łączności';
// Input Help Text on the /QSO Display
$lang['qso_transmit_power_helptext'] = 'Wpisz wartość mocy w watach. W polu podaj same cyfry.';
$lang['qso_sota_ref_helptext'] = 'Na przykład: GM/NS-001.';
-$lang['qso_sig_helptext'] = 'Na przykład: WWFF lub POTA';
-$lang['qso_sig_info_helptext'] = 'Na przykład: SPFF-0029';
+$lang['qso_sig_helptext'] = 'Na przykład: GMA';
+$lang['qso_sig_info_helptext'] = 'Na przykład: DA/NW-357';
$lang['qso_dok_helptext'] = 'Na przykład: Q03';
diff --git a/application/language/russian/account_lang.php b/application/language/russian/account_lang.php
new file mode 100644
index 00000000..d639fbfe
--- /dev/null
+++ b/application/language/russian/account_lang.php
@@ -0,0 +1,10 @@
+
+
+ 403 Forbidden
+
+
+
+Directory access is forbidden.
+
+
+