diff --git a/application/config/migration.php b/application/config/migration.php
index c194c1fd..c9bfbe95 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'] = 107;
+$config['migration_version'] = 108;
/*
|--------------------------------------------------------------------------
diff --git a/application/controllers/Awards.php b/application/controllers/Awards.php
index 53c9dcc0..dabdced0 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/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/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/qso_lang.php b/application/language/english/qso_lang.php
index dad4ee33..83b9a2d3 100644
--- a/application/language/english/qso_lang.php
+++ b/application/language/english/qso_lang.php
@@ -14,8 +14,8 @@ $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_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/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/qso_lang.php b/application/language/german/qso_lang.php
index b6227d09..0e02cd4e 100644
--- a/application/language/german/qso_lang.php
+++ b/application/language/german/qso_lang.php
@@ -14,8 +14,8 @@ $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_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/libraries/AdifHelper.php b/application/libraries/AdifHelper.php
index 926f7ee4..cc936f08 100644
--- a/application/libraries/AdifHelper.php
+++ b/application/libraries/AdifHelper.php
@@ -88,6 +88,7 @@ class AdifHelper {
'SKCC',
'SOTA_REF',
'WWFF_REF',
+ 'POTA_REF',
'SRX',
'SRX_STRING',
'STATE',
@@ -191,6 +192,8 @@ class AdifHelper {
$line .= $this->getAdifFieldLine("MY_WWFF_REF", $qso->station_wwff);
+ $line .= $this->getAdifFieldLine("MY_POTA_REF", $qso->station_pota);
+
$line .= $this->getAdifFieldLine("MY_CQ_ZONE", $qso->station_cq);
$line .= $this->getAdifFieldLine("MY_ITU_ZONE", $qso->station_itu);
diff --git a/application/migrations/108_add_pota_columns.php b/application/migrations/108_add_pota_columns.php
new file mode 100644
index 00000000..1bb206a4
--- /dev/null
+++ b/application/migrations/108_add_pota_columns.php
@@ -0,0 +1,68 @@
+db->field_exists('COL_POTA_REF', 'TABLE_HRD_CONTACTS_V01')) {
+ $fields = array(
+ 'COL_POTA_REF VARCHAR(30) DEFAULT NULL',
+ 'COL_MY_POTA_REF VARCHAR(50) DEFAULT NULL',
+ );
+ $this->dbforge->add_column('TABLE_HRD_CONTACTS_V01', $fields, 'COL_VUCC_GRIDS');
+
+ // Now copy over data from SIG_INFO fields and remove COL_SIG and COL_SIG_INFO only if COL_SIG is POTA
+ // This cannot be reverted on downgrade to prevent overwriting of other COL_SIG information
+ $this->db->set('COL_POTA_REF', 'COL_SIG_INFO', FALSE);
+ $this->db->set('COL_SIG_INFO', '');
+ $this->db->set('COL_SIG', '');
+ $this->db->where('COL_SIG', 'POTA');
+ $this->db->update('TABLE_HRD_CONTACTS_V01');
+
+ }
+ if (!$this->db->field_exists('station_pota', 'station_profile')) {
+ // Add MY_POTA_REF to station profile
+ $fields = array(
+ 'station_pota varchar(50) DEFAULT NULL',
+ );
+ $this->dbforge->add_column('station_profile', $fields);
+ }
+ if (!$this->db->field_exists('pota', 'bandxuser')) {
+ $fields = array(
+ 'pota' => array(
+ 'type' => 'INT',
+ 'constraint' => 20,
+ 'unsigned' => TRUE,
+ ),
+ );
+ $this->dbforge->add_column('bandxuser', $fields);
+ $this->db->query("update bandxuser set pota = 1");
+ }
+ }
+
+ public function down()
+ {
+ if ($this->db->field_exists('COL_POTA_REF', 'TABLE_HRD_CONTACTS_V01')) {
+ $this->dbforge->drop_column('TABLE_HRD_CONTACTS_V01', 'COL_POTA_REF');
+ }
+ if ($this->db->field_exists('COL_MY_POTA_REF', 'TABLE_HRD_CONTACTS_V01')) {
+ $this->dbforge->drop_column('TABLE_HRD_CONTACTS_V01', 'COL_MY_POTA_REF');
+ }
+ if ($this->db->field_exists('station_pota', 'station_profile')) {
+ $this->dbforge->drop_column('station_profile', 'station_pota');
+ }
+ if ($this->db->field_exists('pota', 'bandxuser')) {
+ $this->dbforge->drop_column('bandxuser', 'pota');
+ }
+ }
+}
diff --git a/application/models/Bands.php b/application/models/Bands.php
index f8eee324..574620bb 100644
--- a/application/models/Bands.php
+++ b/application/models/Bands.php
@@ -247,6 +247,7 @@ class Bands extends CI_Model {
'dok' => $band['dok'] == "true" ? '1' : '0',
'dxcc' => $band['dxcc'] == "true" ? '1' : '0',
'iota' => $band['iota'] == "true" ? '1' : '0',
+ 'pota' => $band['pota'] == "true" ? '1' : '0',
'sig' => $band['sig'] == "true" ? '1' : '0',
'sota' => $band['sota'] == "true" ? '1' : '0',
'uscounties' => $band['uscounties'] == "true" ? '1' : '0',
@@ -291,8 +292,8 @@ class Bands extends CI_Model {
$this->db->insert('bands', $data);
}
- $this->db->query("insert into bandxuser (bandid, userid, active, cq, dok, dxcc, iota, sig, sota, uscounties, was, wwff, vucc)
- select bands.id, " . $this->session->userdata('user_id') . ", 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 from bands where band ='".$data['band']."' and not exists (select 1 from bandxuser where userid = " . $this->session->userdata('user_id') . " and bandid = bands.id);");
+ $this->db->query("insert into bandxuser (bandid, userid, active, cq, dok, dxcc, iota, pota, sig, sota, uscounties, was, wwff, vucc)
+ select bands.id, " . $this->session->userdata('user_id') . ", 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 from bands where band ='".$data['band']."' and not exists (select 1 from bandxuser where userid = " . $this->session->userdata('user_id') . " and bandid = bands.id);");
}
function getband($id) {
@@ -317,4 +318,4 @@ class Bands extends CI_Model {
}
}
-?>
\ No newline at end of file
+?>
diff --git a/application/models/Logbook_model.php b/application/models/Logbook_model.php
index eefd50ed..437e79b3 100755
--- a/application/models/Logbook_model.php
+++ b/application/models/Logbook_model.php
@@ -178,6 +178,7 @@ class Logbook_model extends CI_Model {
'COL_CNTY' => $clean_county_input,
'COL_SOTA_REF' => trim($this->input->post('sota_ref')),
'COL_WWFF_REF' => trim($this->input->post('wwff_ref')),
+ 'COL_POTA_REF' => trim($this->input->post('pota_ref')),
'COL_SIG' => trim($this->input->post('sig')),
'COL_SIG_INFO' => trim($this->input->post('sig_info')),
'COL_DARC_DOK' => strtoupper(trim($darc_dok)),
@@ -211,6 +212,7 @@ class Logbook_model extends CI_Model {
$data['COL_MY_IOTA'] = strtoupper(trim($station['station_iota']));
$data['COL_MY_SOTA_REF'] = strtoupper(trim($station['station_sota']));
$data['COL_MY_WWFF_REF'] = strtoupper(trim($station['station_wwff']));
+ $data['COL_MY_POTA_REF'] = strtoupper(trim($station['station_pota']));
$data['COL_STATION_CALLSIGN'] = strtoupper(trim($station['station_callsign']));
$data['COL_MY_DXCC'] = strtoupper(trim($station['station_dxcc']));
@@ -287,6 +289,9 @@ class Logbook_model extends CI_Model {
case 'WWFF':
$this->db->where('COL_WWFF_REF', $searchphrase);
break;
+ case 'POTA':
+ $this->db->where('COL_POTA_REF', $searchphrase);
+ break;
}
$this->db->where_in($this->config->item('table_name').'.station_id', $logbooks_locations_array);
@@ -723,6 +728,7 @@ class Logbook_model extends CI_Model {
'COL_IOTA' => $this->input->post('iota_ref'),
'COL_SOTA_REF' => $this->input->post('sota_ref'),
'COL_WWFF_REF' => $this->input->post('wwff_ref'),
+ 'COL_POTA_REF' => $this->input->post('pota_ref'),
'COL_TX_PWR' => $txpower,
'COL_SIG' => $this->input->post('sig'),
'COL_SIG_INFO' => $this->input->post('sig_info'),
@@ -2680,6 +2686,7 @@ class Logbook_model extends CI_Model {
'COL_MY_SIG_INTL' => (!empty($record['my_sig_intl'])) ? $record['my_sig_intl'] : '',
'COL_MY_SOTA_REF' => (!empty($record['my_sota_ref'])) ? $record['my_sota_ref'] : '',
'COL_MY_WWFF_REF' => (!empty($record['my_wwff_ref'])) ? $record['my_wwff_ref'] : '',
+ 'COL_MY_POTA_REF' => (!empty($record['my_pota_ref'])) ? $record['my_pota_ref'] : '',
'COL_MY_STATE' => (!empty($record['my_state'])) ? $record['my_state'] : '',
'COL_MY_STREET' => (!empty($record['my_street'])) ? $record['my_street'] : '',
'COL_MY_STREET_INTL' => (!empty($record['my_street_intl'])) ? $record['my_street_intl'] : '',
@@ -2729,12 +2736,13 @@ class Logbook_model extends CI_Model {
'COL_SKCC' => (!empty($record['skcc'])) ? $record['skcc'] : '',
'COL_SOTA_REF' => (!empty($record['sota_ref'])) ? $record['sota_ref'] : '',
'COL_WWFF_REF' => (!empty($record['wwff_ref'])) ? $record['wwff_ref'] : '',
+ 'COL_POTA_REF' => (!empty($record['pota_ref'])) ? $record['pota_ref'] : '',
'COL_SRX' => (!empty($record['srx'])) ? (int)$record['srx'] : null,
- //convert to integer to make sure no invalid entries are imported
- 'COL_SRX_STRING' => (!empty($record['srx_string'])) ? $record['srx_string'] : '',
+ //convert to integer to make sure no invalid entries are imported
+ 'COL_SRX_STRING' => (!empty($record['srx_string'])) ? $record['srx_string'] : '',
'COL_STATE' => (!empty($record['state'])) ? strtoupper($record['state']) : '',
'COL_STATION_CALLSIGN' => (!empty($record['station_callsign'])) ? $record['station_callsign'] : '',
- //convert to integer to make sure no invalid entries are imported
+ //convert to integer to make sure no invalid entries are imported
'COL_STX' => (!empty($record['stx'])) ? (int)$record['stx'] : null,
'COL_STX_STRING' => (!empty($record['stx_string'])) ? $record['stx_string'] : '',
'COL_SUBMODE' => $input_submode,
@@ -2769,6 +2777,7 @@ class Logbook_model extends CI_Model {
$data['COL_MY_IOTA'] = strtoupper(trim($row['station_iota']));
$data['COL_MY_SOTA_REF'] = strtoupper(trim($row['station_sota']));
$data['COL_MY_WWFF_REF'] = strtoupper(trim($row['station_wwff']));
+ $data['COL_MY_POTA_REF'] = strtoupper(trim($row['station_pota']));
$data['COL_STATION_CALLSIGN'] = strtoupper(trim($row['station_callsign']));
$data['COL_MY_DXCC'] = strtoupper(trim($row['station_dxcc']));
diff --git a/application/models/Pota.php b/application/models/Pota.php
new file mode 100644
index 00000000..117a8c42
--- /dev/null
+++ b/application/models/Pota.php
@@ -0,0 +1,27 @@
+load->model('logbooks_model');
+ $logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
+
+ if (!$logbooks_locations_array) {
+ return null;
+ }
+
+ $this->load->model('bands');
+
+ $bandslots = $this->bands->get_worked_bands('pota');
+
+ $this->db->where_in("station_id", $logbooks_locations_array);
+ $this->db->where_in("col_band", $bandslots);
+ $this->db->order_by("COL_POTA_REF", "ASC");
+ $this->db->where('COL_POTA_REF !=', '');
+
+ return $this->db->get($this->config->item('table_name'));
+ }
+}
+
+?>
diff --git a/application/models/Stations.php b/application/models/Stations.php
index 53d1ab0c..23100f39 100644
--- a/application/models/Stations.php
+++ b/application/models/Stations.php
@@ -65,6 +65,7 @@ class Stations extends CI_Model {
'station_iota' => xss_clean(strtoupper($this->input->post('iota', true))),
'station_sota' => xss_clean(strtoupper($this->input->post('sota', true))),
'station_wwff' => xss_clean(strtoupper($this->input->post('wwff', true))),
+ 'station_pota' => xss_clean(strtoupper($this->input->post('pota', true))),
'station_sig' => xss_clean(strtoupper($this->input->post('sig', true))),
'station_sig_info' => xss_clean(strtoupper($this->input->post('sig_info', true))),
'station_callsign' => xss_clean($this->input->post('station_callsign', true)),
@@ -91,6 +92,7 @@ class Stations extends CI_Model {
'station_iota' => xss_clean($this->input->post('iota', true)),
'station_sota' => xss_clean($this->input->post('sota', true)),
'station_wwff' => xss_clean($this->input->post('wwff', true)),
+ 'station_pota' => xss_clean($this->input->post('pota', true)),
'station_sig' => xss_clean($this->input->post('sig', true)),
'station_sig_info' => xss_clean($this->input->post('sig_info', true)),
'station_callsign' => xss_clean($this->input->post('station_callsign', true)),
@@ -267,6 +269,10 @@ class Stations extends CI_Model {
$this->db->where('COL_MY_WWFF_REF', $row->station_wwff);
}
+ if($row->station_pota != "") {
+ $this->db->where('COL_MY_POTA_REF', $row->station_pota);
+ }
+
if($row->station_sig != "") {
$this->db->where('COL_MY_SIG', $row->station_sig);
}
diff --git a/application/models/User_model.php b/application/models/User_model.php
index 384a42b0..278eb53e 100644
--- a/application/models/User_model.php
+++ b/application/models/User_model.php
@@ -156,7 +156,7 @@ class User_Model extends CI_Model {
// Add user and insert bandsettings for user
$this->db->insert($this->config->item('auth_table'), $data);
$insert_id = $this->db->insert_id();
- $this->db->query("insert into bandxuser (bandid, userid, active, cq, dok, dxcc, iota, sig, sota, uscounties, was, wwff, vucc) select bands.id, " . $insert_id . ", 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 from bands;");
+ $this->db->query("insert into bandxuser (bandid, userid, active, cq, dok, dxcc, iota, pota, sig, sota, uscounties, was, wwff, vucc) select bands.id, " . $insert_id . ", 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 from bands;");
return OK;
} else {
return EUSERNAMEEXISTS;
diff --git a/application/views/awards/pota/index.php b/application/views/awards/pota/index.php
new file mode 100644
index 00000000..65d4abe8
--- /dev/null
+++ b/application/views/awards/pota/index.php
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+ | Reference |
+ Date/Time |
+ Callsign |
+ Band |
+ RST Sent |
+ RST Received |
+
+
+ num_rows() > 0) {
+ foreach ($pota_all->result() as $row) {
+ ?>
+
+
+ |
+ COL_POTA_REF; ?>
+ |
+ COL_TIME_ON); echo date('d/m/y', $timestamp); ?> - COL_TIME_ON); echo date('H:i', $timestamp); ?> |
+ COL_CALL; ?> |
+ COL_BAND; ?> |
+ COL_RST_SENT; ?> |
+ COL_RST_RCVD; ?> |
+
+
+
+
+
×Nothing found!
';
+ }?>
+
diff --git a/application/views/bands/index.php b/application/views/bands/index.php
index 0edaa541..f93e3a5c 100644
--- a/application/views/bands/index.php
+++ b/application/views/bands/index.php
@@ -44,6 +44,7 @@ $wwff = 0;
DOK |
DXCC |
IOTA |
+ POTA |
SIG |
SOTA |
US Counties |
@@ -69,6 +70,7 @@ $wwff = 0;
dok == 1) {echo 'checked'; $dok++;}?>> |
dxcc == 1) {echo 'checked'; $dxcc++;}?>> |
iota == 1) {echo 'checked'; $iota++;}?>> |
+ pota == 1) {echo 'checked';}?>> |
sig == 1) {echo 'checked'; $sig++;}?>> |
sota == 1) {echo 'checked'; $sota++;}?>> |
uscounties == 1) {echo 'checked'; $uscounties++;}?>> |
diff --git a/application/views/dashboard/index.php b/application/views/dashboard/index.php
index 0e1b93a9..8b37b3d6 100644
--- a/application/views/dashboard/index.php
+++ b/application/views/dashboard/index.php
@@ -8,6 +8,7 @@ function echo_table_header_col($ctx, $name) {
case 'IOTA': echo ''.$ctx->lang->line('gen_hamradio_iota').' | '; break;
case 'SOTA': echo ''.$ctx->lang->line('gen_hamradio_sota').' | '; break;
case 'WWFF': echo ''.$ctx->lang->line('gen_hamradio_wwff').' | '; break;
+ case 'POTA': echo ''.$ctx->lang->line('gen_hamradio_pota').' | '; break;
case 'State': echo ''.$ctx->lang->line('gen_hamradio_state').' | '; break;
case 'Grid': echo ''.$ctx->lang->line('gen_hamradio_gridsquare').' | '; break;
case 'Band': echo ''.$ctx->lang->line('gen_hamradio_band').' | '; break;
@@ -24,6 +25,7 @@ function echo_table_col($row, $name) {
case 'IOTA': echo '' . ($row->COL_IOTA) . ' | '; break;
case 'SOTA': echo '' . ($row->COL_SOTA_REF) . ' | '; break;
case 'WWFF': echo '' . ($row->COL_WWFF_REF) . ' | '; break;
+ case 'POTA': echo '' . ($row->COL_POTA_REF) . ' | '; break;
case 'Grid': echo ''; echoQrbCalcLink($row->station_gridsquare, $row->COL_VUCC_GRIDS, $row->COL_GRIDSQUARE); echo ' | '; break;
case 'Band': echo ''; if($row->COL_SAT_NAME != null) { echo ''.$row->COL_SAT_NAME.' | '; } else { echo strtolower($row->COL_BAND); } echo ''; break;
case 'State': echo '' . ($row->COL_STATE) . ' | '; break;
diff --git a/application/views/interface_assets/footer.php b/application/views/interface_assets/footer.php
index 5eb8d9a3..e4569699 100644
--- a/application/views/interface_assets/footer.php
+++ b/application/views/interface_assets/footer.php
@@ -2164,6 +2164,34 @@ $(document).ready(function(){
}
});
+ $('#pota_ref_edit').selectize({
+ maxItems: 1,
+ closeAfterSelect: true,
+ loadThrottle: 250,
+ valueField: 'name',
+ labelField: 'name',
+ searchField: 'name',
+ options: [],
+ create: false,
+ load: function(query, callback) {
+ if (!query || query.length < 3) return callback(); // Only trigger if 3 or more characters are entered
+ $.ajax({
+ url: baseURL+'index.php/qso/get_pota',
+ type: 'GET',
+ dataType: 'json',
+ data: {
+ query: query,
+ },
+ error: function() {
+ callback();
+ },
+ success: function(res) {
+ callback(res);
+ }
+ });
+ }
+ });
+
$('#darc_dok_edit').selectize({
maxItems: 1,
closeAfterSelect: true,
diff --git a/application/views/interface_assets/header.php b/application/views/interface_assets/header.php
index 7f55ea71..0918e572 100644
--- a/application/views/interface_assets/header.php
+++ b/application/views/interface_assets/header.php
@@ -116,6 +116,8 @@
DXCC
IOTA
+
+ POTA
SIG
diff --git a/application/views/qslcard/searchresult.php b/application/views/qslcard/searchresult.php
index 6fcb6e69..451999ed 100644
--- a/application/views/qslcard/searchresult.php
+++ b/application/views/qslcard/searchresult.php
@@ -107,6 +107,7 @@
case 'IOTA': echo '' . ($row->COL_IOTA); break;
case 'SOTA': echo ' | ' . ($row->COL_SOTA_REF); break;
case 'WWFF': echo ' | ' . ($row->COL_WWFF_REF); break;
+ case 'POTA': echo ' | ' . ($row->COL_POTA_REF); break;
case 'Grid': echo ' | '; echo strlen($row->COL_GRIDSQUARE)==0?$row->COL_VUCC_GRIDS:$row->COL_GRIDSQUARE; break;
case 'Band': echo ' | '; if($row->COL_SAT_NAME != null) { echo $row->COL_SAT_NAME; } else { echo strtolower($row->COL_BAND); }; break;
case 'State': echo ' | ' . ($row->COL_STATE); break;
@@ -121,6 +122,7 @@
case 'IOTA': echo ' | ' . ($row->COL_IOTA); break;
case 'SOTA': echo ' | ' . ($row->COL_SOTA_REF); break;
case 'WWFF': echo ' | ' . ($row->COL_WWFF_REF); break;
+ case 'POTA': echo ' | ' . ($row->COL_POTA_REF); break;
case 'Grid': echo ' | '; echo strlen($row->COL_GRIDSQUARE)==0?$row->COL_VUCC_GRIDS:$row->COL_GRIDSQUARE; break;
case 'Band': echo ' | '; if($row->COL_SAT_NAME != null) { echo $row->COL_SAT_NAME; } else { echo strtolower($row->COL_BAND); }; break;
case 'State': echo ' | ' . ($row->COL_STATE); break;
@@ -136,6 +138,7 @@
case 'IOTA': echo ' | ' . ($row->COL_IOTA); break;
case 'SOTA': echo ' | ' . ($row->COL_SOTA_REF); break;
case 'WWFF': echo ' | ' . ($row->COL_WWFF_REF); break;
+ case 'POTA': echo ' | ' . ($row->COL_POTA_REF); break;
case 'Grid': echo ' | '; echo strlen($row->COL_GRIDSQUARE)==0?$row->COL_VUCC_GRIDS:$row->COL_GRIDSQUARE; break;
case 'Band': echo ' | '; if($row->COL_SAT_NAME != null) { echo $row->COL_SAT_NAME; } else { echo strtolower($row->COL_BAND); }; break;
case 'State': echo ' | ' . ($row->COL_STATE); break;
@@ -150,6 +153,7 @@
case 'IOTA': echo ' | ' . ($row->COL_IOTA); break;
case 'SOTA': echo ' | ' . ($row->COL_SOTA_REF); break;
case 'WWFF': echo ' | ' . ($row->COL_WWFF_REF); break;
+ case 'POTA': echo ' | ' . ($row->COL_POTA_REF); break;
case 'Grid': echo ' | '; echo strlen($row->COL_GRIDSQUARE)==0?$row->COL_VUCC_GRIDS:$row->COL_GRIDSQUARE; break;
case 'Band': echo ' | '; if($row->COL_SAT_NAME != null) { echo $row->COL_SAT_NAME; } else { echo strtolower($row->COL_BAND); }; break;
case 'State': echo ' | ' . ($row->COL_STATE); break;
@@ -164,6 +168,7 @@
case 'IOTA': echo ' | ' . ($row->COL_IOTA); break;
case 'SOTA': echo ' | ' . ($row->COL_SOTA_REF); break;
case 'WWFF': echo ' | ' . ($row->COL_WWFF_REF); break;
+ case 'POTA': echo ' | ' . ($row->COL_POTA_REF); break;
case 'Grid': echo ' | '; echo strlen($row->COL_GRIDSQUARE)==0?$row->COL_VUCC_GRIDS:$row->COL_GRIDSQUARE; break;
case 'Band': echo ' | '; if($row->COL_SAT_NAME != null) { echo $row->COL_SAT_NAME; } else { echo strtolower($row->COL_BAND); }; break;
case 'State': echo ' | ' . ($row->COL_STATE); break;
diff --git a/application/views/qso/edit_ajax.php b/application/views/qso/edit_ajax.php
index 41a42f06..00e7cf76 100644
--- a/application/views/qso/edit_ajax.php
+++ b/application/views/qso/edit_ajax.php
@@ -358,6 +358,11 @@
+
+
+
+
+
diff --git a/application/views/qso/index.php b/application/views/qso/index.php
index 42dc5070..7f3683b6 100755
--- a/application/views/qso/index.php
+++ b/application/views/qso/index.php
@@ -357,6 +357,17 @@
+
+
diff --git a/application/views/search/search_result_ajax.php b/application/views/search/search_result_ajax.php
index 08a656f7..30c053b1 100644
--- a/application/views/search/search_result_ajax.php
+++ b/application/views/search/search_result_ajax.php
@@ -125,6 +125,7 @@
case 'IOTA': echo ' ' . ($row->COL_IOTA); break;
case 'SOTA': echo ' | ' . ($row->COL_SOTA_REF); break;
case 'WWFF': echo ' | ' . ($row->COL_WWFF_REF); break;
+ case 'POTA': echo ' | ' . ($row->COL_POTA_REF); break;
case 'Grid': echo ' | '; echo strlen($row->COL_GRIDSQUARE)==0?$row->COL_VUCC_GRIDS:$row->COL_GRIDSQUARE; break;
case 'Band': echo ' | '; if($row->COL_SAT_NAME != null) { echo $row->COL_SAT_NAME; } else { echo strtolower($row->COL_BAND); }; break;
case 'State': echo ' | ' . ($row->COL_STATE); break;
@@ -139,6 +140,7 @@
case 'IOTA': echo ' | ' . ($row->COL_IOTA); break;
case 'SOTA': echo ' | ' . ($row->COL_SOTA_REF); break;
case 'WWFF': echo ' | ' . ($row->COL_WWFF_REF); break;
+ case 'POTA': echo ' | ' . ($row->COL_POTA_REF); break;
case 'Grid': echo ' | '; echo strlen($row->COL_GRIDSQUARE)==0?$row->COL_VUCC_GRIDS:$row->COL_GRIDSQUARE; break;
case 'Band': echo ' | '; if($row->COL_SAT_NAME != null) { echo $row->COL_SAT_NAME; } else { echo strtolower($row->COL_BAND); }; break;
case 'State': echo ' | ' . ($row->COL_STATE); break;
@@ -154,6 +156,7 @@
case 'IOTA': echo ' | ' . ($row->COL_IOTA); break;
case 'SOTA': echo ' | ' . ($row->COL_SOTA_REF); break;
case 'WWFF': echo ' | ' . ($row->COL_WWFF_REF); break;
+ case 'POTA': echo ' | ' . ($row->COL_POTA_REF); break;
case 'Grid': echo ' | '; echo strlen($row->COL_GRIDSQUARE)==0?$row->COL_VUCC_GRIDS:$row->COL_GRIDSQUARE; break;
case 'Band': echo ' | '; if($row->COL_SAT_NAME != null) { echo $row->COL_SAT_NAME; } else { echo strtolower($row->COL_BAND); }; break;
case 'State': echo ' | ' . ($row->COL_STATE); break;
@@ -168,6 +171,7 @@
case 'IOTA': echo ' | ' . ($row->COL_IOTA); break;
case 'SOTA': echo ' | ' . ($row->COL_SOTA_REF); break;
case 'WWFF': echo ' | ' . ($row->COL_WWFF_REF); break;
+ case 'POTA': echo ' | ' . ($row->COL_POTA_REF); break;
case 'Grid': echo ' | '; echo strlen($row->COL_GRIDSQUARE)==0?$row->COL_VUCC_GRIDS:$row->COL_GRIDSQUARE; break;
case 'Band': echo ' | '; if($row->COL_SAT_NAME != null) { echo $row->COL_SAT_NAME; } else { echo strtolower($row->COL_BAND); }; break;
case 'State': echo ' | ' . ($row->COL_STATE); break;
@@ -182,6 +186,7 @@
case 'IOTA': echo ' | ' . ($row->COL_IOTA); break;
case 'SOTA': echo ' | ' . ($row->COL_SOTA_REF); break;
case 'WWFF': echo ' | ' . ($row->COL_WWFF_REF); break;
+ case 'POTA': echo ' | ' . ($row->COL_POTA_REF); break;
case 'Grid': echo ' | '; echo strlen($row->COL_GRIDSQUARE)==0?$row->COL_VUCC_GRIDS:$row->COL_GRIDSQUARE; break;
case 'Band': echo ' | '; if($row->COL_SAT_NAME != null) { echo $row->COL_SAT_NAME; } else { echo strtolower($row->COL_BAND); }; break;
case 'State': echo ' | ' . ($row->COL_STATE); break;
diff --git a/application/views/station_profile/create.php b/application/views/station_profile/create.php
index 1d67d84e..f166952f 100644
--- a/application/views/station_profile/create.php
+++ b/application/views/station_profile/create.php
@@ -198,16 +198,22 @@
Station WWFF reference (e.g. DLFF-0069).
+
+
+
+ Station POTA reference (e.g. PA-0150).
+
+
- Station Signature (e.g. POTA).
+ Station Signature (e.g. GMA).
- Station Signature Info (e.g. PA-0150).
+ Station Signature Info (e.g. DA/NW-357).
diff --git a/application/views/station_profile/edit.php b/application/views/station_profile/edit.php
index 38ae078f..cbbc3ba6 100644
--- a/application/views/station_profile/edit.php
+++ b/application/views/station_profile/edit.php
@@ -286,6 +286,20 @@
+
+
+
+
+
+
+ station_pota; } ?>">
+ Station POTA reference.
+
+
+
+
+
+
diff --git a/application/views/user/edit.php b/application/views/user/edit.php
index 1ebfac9d..8bb9e659 100644
--- a/application/views/user/edit.php
+++ b/application/views/user/edit.php
@@ -357,6 +357,7 @@
+
@@ -374,6 +375,7 @@
+
@@ -391,6 +393,7 @@
+
@@ -408,6 +411,7 @@
+
@@ -424,6 +428,7 @@
+
diff --git a/application/views/view_log/partial/log_ajax.php b/application/views/view_log/partial/log_ajax.php
index c61585ee..c880ed97 100644
--- a/application/views/view_log/partial/log_ajax.php
+++ b/application/views/view_log/partial/log_ajax.php
@@ -8,6 +8,7 @@ function echo_table_header_col($ctx, $name) {
case 'IOTA': echo ' '.$ctx->lang->line('gen_hamradio_iota').' | '; break;
case 'SOTA': echo ' '.$ctx->lang->line('gen_hamradio_sota').' | '; break;
case 'WWFF': echo ' '.$ctx->lang->line('gen_hamradio_wwff').' | '; break;
+ case 'POTA': echo ' '.$ctx->lang->line('gen_hamradio_pota').' | '; break;
case 'State': echo ' '.$ctx->lang->line('gen_hamradio_state').' | '; break;
case 'Grid': echo ' '.$ctx->lang->line('gen_hamradio_gridsquare').' | '; break;
case 'Band': echo ' '.$ctx->lang->line('gen_hamradio_band').' | '; break;
@@ -25,6 +26,7 @@ function echo_table_col($row, $name) {
case 'IOTA': echo ' ' . ($row->COL_IOTA) . ' | '; break;
case 'SOTA': echo ' ' . ($row->COL_SOTA_REF) . ' | '; break;
case 'WWFF': echo ' ' . ($row->COL_WWFF_REF) . ' | '; break;
+ case 'POTA': echo ' ' . ($row->COL_POTA_REF) . ' | '; break;
case 'Grid': echo ' '; echoQrbCalcLink($row->station_gridsquare, $row->COL_VUCC_GRIDS, $row->COL_GRIDSQUARE); echo ' | '; break;
case 'Band': echo ' '; if($row->COL_SAT_NAME != null) { echo ''.$row->COL_SAT_NAME.' | '; } else { echo strtolower($row->COL_BAND); } echo ' | '; break;
case 'State': echo ' ' . ($row->COL_STATE) . ' | '; break;
diff --git a/application/views/view_log/qso.php b/application/views/view_log/qso.php
index bc7654a1..7694e955 100644
--- a/application/views/view_log/qso.php
+++ b/application/views/view_log/qso.php
@@ -216,6 +216,13 @@
+ COL_POTA_REF != null) { ?>
+
+ | lang->line('gen_hamradio_pota_reference'); ?> |
+ COL_POTA_REF; ?> |
+
+
+
COL_SIG != null) { ?>
| lang->line('gen_hamradio_sig'); ?> |
@@ -234,12 +241,6 @@
case "MQC":
echo "COL_SIG_INFO."\" target=\"_blank\">".$row->COL_SIG_INFO." | ";
break;
- case "WWFF":
- echo "COL_SIG_INFO."\" target=\"_blank\">".$row->COL_SIG_INFO." | ";
- break;
- case "POTA":
- echo "COL_SIG_INFO."\" target=\"_blank\">".$row->COL_SIG_INFO." | ";
- break;
default:
echo "".$row->COL_SIG_INFO." | ";
break;
@@ -391,6 +392,13 @@
COL_MY_WWFF_REF; ?> |
+
+ COL_MY_POTA_REF) { ?>
+
+ | Station POTA Reference |
+ COL_MY_POTA_REF; ?> |
+
+
diff --git a/application/views/visitor/index.php b/application/views/visitor/index.php
index ade2a8e7..ddc4cb2b 100644
--- a/application/views/visitor/index.php
+++ b/application/views/visitor/index.php
@@ -23,6 +23,7 @@ function echo_table_col($row, $name) {
case 'IOTA': echo ' | ' . ($row->COL_IOTA) . ' | '; break;
case 'SOTA': echo '' . ($row->COL_SOTA_REF) . ' | '; break;
case 'WWFF': echo '' . ($row->COL_WWFF_REF) . ' | '; break;
+ case 'POTA': echo '' . ($row->COL_POTA_REF) . ' | '; break;
case 'Grid': echo ''; echoQrbCalcLink($row->station_gridsquare, $row->COL_VUCC_GRIDS, $row->COL_GRIDSQUARE); echo ' | '; break;
case 'Band': echo ''; if($row->COL_SAT_NAME != null) { echo ''.$row->COL_SAT_NAME.' | '; } else { echo strtolower($row->COL_BAND); } echo ''; break;
case 'State': echo '' . ($row->COL_STATE) . ' | '; break;
diff --git a/assets/css/general.css b/assets/css/general.css
index cc24b104..cd44917a 100644
--- a/assets/css/general.css
+++ b/assets/css/general.css
@@ -87,6 +87,10 @@ thead > tr > td {
text-transform: uppercase;
}
+.qso_panel #pota_ref-selectized {
+ text-transform: uppercase;
+}
+
.qso_panel #darc_dok-selectized {
text-transform: uppercase;
}
@@ -111,6 +115,10 @@ thead > tr > td {
text-transform: uppercase;
}
+.card-body #pota_ref_edit-selectized {
+ text-transform: uppercase;
+}
+
.card-body #darc_dok_edit-selectized {
text-transform: uppercase;
}
diff --git a/assets/js/sections/bands.js b/assets/js/sections/bands.js
index 28591992..9f502efb 100644
--- a/assets/js/sections/bands.js
+++ b/assets/js/sections/bands.js
@@ -208,6 +208,7 @@ function saveBand(id) {
'dok': $(".dok_"+id+" input[type='checkbox']").is(":checked"),
'dxcc': $(".dxcc_"+id+" input[type='checkbox']").is(":checked"),
'iota': $(".iota_"+id+" input[type='checkbox']").is(":checked"),
+ 'pota': $(".pota_"+id+" input[type='checkbox']").is(":checked"),
'sig': $(".sig_"+id+" input[type='checkbox']").is(":checked"),
'sota': $(".sota_"+id+" input[type='checkbox']").is(":checked"),
'uscounties': $(".uscounties_"+id+" input[type='checkbox']").is(":checked"),
@@ -218,4 +219,4 @@ function saveBand(id) {
success: function (html) {
}
});
-}
\ No newline at end of file
+}
diff --git a/assets/js/sections/qso.js b/assets/js/sections/qso.js
index c72c8f53..8e009414 100644
--- a/assets/js/sections/qso.js
+++ b/assets/js/sections/qso.js
@@ -126,6 +126,39 @@ $( document ).ready(function() {
$('#wwff_info').attr('title', 'Lookup '+$('#wwff_ref').val()+' reference info on cqgma.org');
});
+ $('#pota_ref').selectize({
+ maxItems: 1,
+ closeAfterSelect: true,
+ loadThrottle: 250,
+ valueField: 'name',
+ labelField: 'name',
+ searchField: 'name',
+ options: [],
+ create: false,
+ load: function(query, callback) {
+ if (!query || query.length < 3) return callback(); // Only trigger if 3 or more characters are entered
+ $.ajax({
+ url: base_url+'index.php/qso/get_pota',
+ type: 'GET',
+ dataType: 'json',
+ data: {
+ query: query,
+ },
+ error: function() {
+ callback();
+ },
+ success: function(res) {
+ callback(res);
+ }
+ });
+ }
+ });
+
+ $('#pota_ref').change(function(){
+ $('#pota_info').html('
');
+ $('#pota_info').attr('title', 'Lookup '+$('#pota_ref').val()+' reference info on pota.co');
+ });
+
$('#darc_dok').selectize({
maxItems: 1,
closeAfterSelect: true,
@@ -322,6 +355,9 @@ function reset_fields() {
var $select = $('#wwff_ref').selectize();
var selectize = $select[0].selectize;
selectize.clear();
+ var $select = $('#pota_ref').selectize();
+ var selectize = $select[0].selectize;
+ selectize.clear();
var $select = $('#darc_dok').selectize();
var selectize = $select[0].selectize;
selectize.clear();
diff --git a/images/icons/pota.app.png b/images/icons/pota.app.png
new file mode 100644
index 00000000..e53e399b
Binary files /dev/null and b/images/icons/pota.app.png differ