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 @@ +
+ +

+ + + + + + + + + + + + + + + num_rows() > 0) { + foreach ($pota_all->result() as $row) { + ?> + + + + + + + + + + + +
ReferenceDate/TimeCallsignBandRST SentRST Received
+ 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 @@
+
+
+ + + lang->line('qso_pota_ref_helptext'); ?> +
+
+ +
+
+
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 @@
+
+
+
POTA
+
+
+ + station_pota; } ?>"> + Station POTA reference. +
+
+
+
+ +
@@ -294,13 +308,13 @@
station_sig; } ?>"> - Station Signature (e.g. WWFF).. + Station Signature (e.g. GMA)..
station_sig_info; } ?>"> - Station Signature Info (e.g. DLFF-0029). + Station Signature Info (e.g. DA/NW-357).
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