[Contesting] Contests can be added/edited/deleted inside Cloudlog. Used for choosing Contest in Contest Logging
这个提交包含在:
父节点
405c9da68a
当前提交
adaa7f3f8a
共有 9 个文件被更改,包括 538 次插入 和 302 次删除
|
|
@ -21,7 +21,7 @@ $config['migration_enabled'] = TRUE;
|
|||
| be upgraded / downgraded to.
|
||||
|
|
||||
*/
|
||||
$config['migration_version'] = 62;
|
||||
$config['migration_version'] = 63;
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -26,13 +26,14 @@ class Contesting extends CI_Controller {
|
|||
$this->load->model('logbook_model');
|
||||
$this->load->model('user_model');
|
||||
$this->load->model('modes');
|
||||
$this->load->model('contesting_model');
|
||||
|
||||
$data['active_station_profile'] = $this->stations->find_active();
|
||||
$data['notice'] = false;
|
||||
$data['stations'] = $this->stations->all();
|
||||
$data['radios'] = $this->cat->radios();
|
||||
$data['dxcc'] = $this->logbook_model->fetchDxcc();
|
||||
$data['modes'] = $this->modes->active();
|
||||
$data['contestnames'] = $this->contesting_model->getActivecontests();
|
||||
|
||||
|
||||
$this->load->library('form_validation');
|
||||
|
|
@ -71,4 +72,90 @@ class Contesting extends CI_Controller {
|
|||
|
||||
return json_encode($data);
|
||||
}
|
||||
|
||||
public function create()
|
||||
{
|
||||
$this->load->model('Contesting_model');
|
||||
$this->load->library('form_validation');
|
||||
|
||||
$this->form_validation->set_rules('name', 'Contest Name', 'required');
|
||||
$this->form_validation->set_rules('adifname', 'Contest Adif Name', 'required');
|
||||
|
||||
if ($this->form_validation->run() == FALSE)
|
||||
{
|
||||
$data['page_title'] = "Create Mode";
|
||||
$this->load->view('contesting/create', $data);
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->Contesting_model->add();
|
||||
}
|
||||
}
|
||||
|
||||
public function add() {
|
||||
$this->load->model('Contesting_model');
|
||||
|
||||
$data['contests'] = $this->Contesting_model->getAllContests();
|
||||
|
||||
// Render Page
|
||||
$data['page_title'] = "Contests";
|
||||
$this->load->view('interface_assets/header', $data);
|
||||
$this->load->view('contesting/add');
|
||||
$this->load->view('interface_assets/footer');
|
||||
}
|
||||
|
||||
public function edit($id)
|
||||
{
|
||||
$this->load->library('form_validation');
|
||||
|
||||
$this->load->model('Contesting_model');
|
||||
|
||||
$item_id_clean = $this->security->xss_clean($id);
|
||||
|
||||
$data['contest'] = $this->Contesting_model->contest($item_id_clean);
|
||||
|
||||
$data['page_title'] = "Edit Contest";
|
||||
|
||||
$this->form_validation->set_rules('name', 'Contest Name', 'required');
|
||||
$this->form_validation->set_rules('adifname', 'Adif Contest Name', 'required');
|
||||
|
||||
if ($this->form_validation->run() == FALSE)
|
||||
{
|
||||
$this->load->view('interface_assets/header', $data);
|
||||
$this->load->view('contesting/edit');
|
||||
$this->load->view('interface_assets/footer');
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->Contesting_model->edit($item_id_clean);
|
||||
|
||||
$data['notice'] = "Contest ".$this->security->xss_clean($this->input->post('name', true))." Updated";
|
||||
|
||||
redirect('contesting/add');
|
||||
}
|
||||
}
|
||||
|
||||
public function delete() {
|
||||
$id = $this->input->post('id');
|
||||
$this->load->model('Contesting_model');
|
||||
$this->Contesting_model->delete($id);
|
||||
}
|
||||
|
||||
public function activate() {
|
||||
$id = $this->input->post('id');
|
||||
$this->load->model('Contesting_model');
|
||||
$this->Contesting_model->activate($id);
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(array('message' => 'OK'));
|
||||
return;
|
||||
}
|
||||
|
||||
public function deactivate() {
|
||||
$id = $this->input->post('id');
|
||||
$this->load->model('Contesting_model');
|
||||
$this->Contesting_model->deactivate($id);
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(array('message' => 'OK'));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
|
@ -32,4 +32,91 @@ class Contesting_model extends CI_Model {
|
|||
header('Content-Type: application/json');
|
||||
echo json_encode($data->result());
|
||||
}
|
||||
|
||||
function getActivecontests() {
|
||||
|
||||
$sql = "SELECT name, adifname FROM contest WHERE active = 1 ORDER BY name ASC";
|
||||
|
||||
$data = $this->db->query($sql);
|
||||
|
||||
return($data->result_array());
|
||||
}
|
||||
|
||||
function getAllContests() {
|
||||
|
||||
$sql = "SELECT id, name, adifname, active FROM contest ORDER BY name ASC";
|
||||
|
||||
$data = $this->db->query($sql);
|
||||
|
||||
return($data->result_array());
|
||||
}
|
||||
|
||||
function delete($id) {
|
||||
// Clean ID
|
||||
$clean_id = $this->security->xss_clean($id);
|
||||
|
||||
// Delete Contest
|
||||
$this->db->delete('contest', array('id' => $clean_id));
|
||||
}
|
||||
|
||||
function activate($id) {
|
||||
// Clean ID
|
||||
$clean_id = $this->security->xss_clean($id);
|
||||
|
||||
$data = array(
|
||||
'active' => '1',
|
||||
);
|
||||
|
||||
$this->db->where('id', $clean_id);
|
||||
|
||||
$this->db->update('contest', $data);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
function deactivate($id) {
|
||||
// Clean ID
|
||||
$clean_id = $this->security->xss_clean($id);
|
||||
|
||||
$data = array(
|
||||
'active' => '0',
|
||||
);
|
||||
|
||||
$this->db->where('id', $clean_id);
|
||||
|
||||
$this->db->update('contest', $data);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
function add() {
|
||||
$data = array(
|
||||
'name' => xss_clean($this->input->post('name', true)),
|
||||
'adifname' => xss_clean($this->input->post('adifname', true)),
|
||||
);
|
||||
|
||||
$this->db->insert('contest', $data);
|
||||
}
|
||||
|
||||
function contest($id) {
|
||||
// Clean ID
|
||||
$clean_id = $this->security->xss_clean($id);
|
||||
|
||||
$sql = "SELECT id, name, adifname, active FROM contest where id =" . $clean_id;
|
||||
|
||||
$data = $this->db->query($sql);
|
||||
|
||||
return ($data->row());
|
||||
}
|
||||
|
||||
function edit($id) {
|
||||
$data = array(
|
||||
'name' => xss_clean($this->input->post('name', true)),
|
||||
'adifname' => xss_clean($this->input->post('adifname', true)),
|
||||
'active' => xss_clean($this->input->post('active', true)),
|
||||
);
|
||||
|
||||
$this->db->where('id', $id);
|
||||
$this->db->update('contest', $data);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,64 @@
|
|||
<div class="container">
|
||||
|
||||
<br>
|
||||
<?php if($this->session->flashdata('message')) { ?>
|
||||
<!-- Display Message -->
|
||||
<div class="alert-message error">
|
||||
<p><?php echo $this->session->flashdata('message'); ?></p>
|
||||
</div>
|
||||
<?php } ?>
|
||||
|
||||
<h2><?php echo $page_title; ?></h2>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
Contests
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<p class="card-text">
|
||||
Using the contest list, you can control which Contests are shown when logging QSOs in a contest.
|
||||
</p>
|
||||
<p class="card-text">
|
||||
Active contests will be shown in the Contest Name drop-down, while inactive contests will be hidden and cannot be selected.
|
||||
</p>
|
||||
<div class="table-responsive">
|
||||
<table style="width:100%" class="contesttable table table-sm table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">Name</th>
|
||||
<th scope="col">Adif mode</th>
|
||||
<th scope="col">Active</th>
|
||||
<th scope="col"></th>
|
||||
<th scope="col"></th>
|
||||
<th scope="col"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach ($contests as $row) { ?>
|
||||
<tr>
|
||||
<td><?php echo $row['name'];?></td>
|
||||
<td><?php echo $row['adifname'];?></td>
|
||||
<td class='contest_<?php echo $row['id'] ?>'><?php if ($row['active'] == 1) { echo "active";} else { echo "not active";};?></td>
|
||||
<td style="text-align: center">
|
||||
<?php if ($row['active'] == 1) {
|
||||
echo "<button onclick='javascript:deactivateContest(". $row['id'] . ")' class='btn_" . $row['id'] . " btn btn-secondary btn-sm'>Deactivate</button>";
|
||||
} else {
|
||||
echo "<button onclick='javascript:activateContest(". $row['id'] . ")' class='btn_" . $row['id'] . " btn btn-primary btn-sm'>Activate</button>";
|
||||
};?>
|
||||
</td>
|
||||
<td>
|
||||
<a href="<?php echo site_url('contesting/edit')."/".$row['id']; ?>" class="btn btn-outline-primary btn-sm"><i class="fas fa-edit"></i> Edit</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="javascript:deleteContest('<?php echo $row['id']; ?>', '<?php echo $row['name']; ?>');" class="btn btn-danger btn-sm" ><i class="fas fa-trash-alt"></i> Delete</a>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<?php } ?>
|
||||
</tbody>
|
||||
<table>
|
||||
</div>
|
||||
<br/>
|
||||
<p><button onclick="createContestDialog();" class="btn btn-primary btn-sm"><i class="fas fa-plus"></i> Add a Contest</button></p>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
|
||||
<div class="container" id="create_contest">
|
||||
|
||||
<br>
|
||||
<?php if($this->session->flashdata('message')) { ?>
|
||||
<!-- Display Message -->
|
||||
<div class="alert-message error">
|
||||
<p><?php echo $this->session->flashdata('message'); ?></p>
|
||||
</div>
|
||||
<?php } ?>
|
||||
|
||||
<?php if($this->session->flashdata('notice')) { ?>
|
||||
<div id="message" >
|
||||
<?php echo $this->session->flashdata('notice'); ?>
|
||||
</div>
|
||||
<?php } ?>
|
||||
|
||||
<?php $this->load->helper('form'); ?>
|
||||
|
||||
<?php echo validation_errors(); ?>
|
||||
|
||||
<form method="post" name="create_profile">
|
||||
<div class="form-group">
|
||||
<label for="contestInput">Contest Name</label>
|
||||
<input type="text" class="form-control" name="contestname" id="contestInput" aria-describedby="contestInputHelp" required>
|
||||
<small id="contestInputHelp" class="form-text text-muted">Name of Contest</small>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="adifcontestInput">Contest ADIF Name</label>
|
||||
<input type="text" class="form-control" name="adifcontestname" id="adifcontestInput" aria-describedby="adifcontestInputHelp">
|
||||
<small id="adifcontestInputHelp" class="form-text text-muted">Name of Contest in ADIF-specification</small>
|
||||
</div>
|
||||
|
||||
<button onclick="createContest(this.form);" class="btn btn-primary btn-sm"><i class="fas fa-plus-square"></i> Create Contest</button>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,61 @@
|
|||
|
||||
<div class="container">
|
||||
|
||||
<br>
|
||||
<?php if($this->session->flashdata('message')) { ?>
|
||||
<!-- Display Message -->
|
||||
<div class="alert-message error">
|
||||
<p><?php echo $this->session->flashdata('message'); ?></p>
|
||||
</div>
|
||||
<?php } ?>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<?php echo $page_title; ?>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<h5 class="card-title"></h5>
|
||||
<p class="card-text"></p>
|
||||
<?php if($this->session->flashdata('notice')) { ?>
|
||||
<div id="message" >
|
||||
<?php echo $this->session->flashdata('notice'); ?>
|
||||
</div>
|
||||
<?php } ?>
|
||||
|
||||
<?php $this->load->helper('form'); ?>
|
||||
|
||||
<?php echo validation_errors(); ?>
|
||||
|
||||
<form method="post" action="<?php echo site_url('contesting/edit/'); ?><?php echo $contest->id; ?>" name="edit_contest">
|
||||
<div class="form-group">
|
||||
<label for="contestnameInput">Contest Name</label>
|
||||
<input type="text" class="form-control" name="name" id="nameInput" aria-describedby="contestnameInputHelp" value="<?php if(set_value('name') != "") { echo set_value('name'); } else { echo $contest->name; } ?>" required>
|
||||
<small id="contestnameInputHelp" class="form-text text-muted">Name of Contest</small>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="adifnameInput">ADIF Contest Name</label>
|
||||
<input type="text" class="form-control" name="adifname" id="adifnameInput" aria-describedby="adifnameInputHelp" value="<?php if(set_value('adifname') != "") { echo set_value('adifname'); } else { echo $contest->adifname; } ?>">
|
||||
<small id="adifnameInputHelp" class="form-text text-muted">Name of Contest in ADIF-specification</small>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="activeInput">Active</label>
|
||||
<select id="activeInput" class="form-control mode form-control-sm" name="active">
|
||||
<?php
|
||||
printf("<option value=\"1\" %s>active</option>", $contest->active==1?"selected=\"selected\"":"");
|
||||
printf("<option value=\"0\" %s>not active</option>", $contest->active==0?"selected=\"selected\"":"");
|
||||
?>
|
||||
</select>
|
||||
<small id="activeInputHelp" class="form-text text-muted">Set to active if to be listed in Contest-list</small>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn btn-primary btn-sm"><i class="fas fa-plus-square"></i> Update Contest</button>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
</div>
|
||||
|
|
@ -26,233 +26,9 @@
|
|||
|
||||
<div class="col-auto">
|
||||
<select class="form-control-sm" id="contestname" name="contestname">
|
||||
<option value="Other" selected="selected">Other</option>
|
||||
<option value="070-160M-SPRINT">PODXS Great Pumpkin Sprint</option>
|
||||
<option value="070-3-DAY">PODXS Three Day Weekend</option>
|
||||
<option value="070-31-FLAVORS">PODXS 31 Flavors</option>
|
||||
<option value="070-40M-SPRINT">PODXS 40m Firecracker Sprint</option>
|
||||
<option value="070-80M-SPRINT">PODXS 80m Jay Hudak Memorial Sprint</option>
|
||||
<option value="070-PSKFEST">PODXS PSKFest</option>
|
||||
<option value="070-ST-PATS-DAY">PODXS St. Patricks Day</option>
|
||||
<option value="070-VALENTINE-SPRINT">PODXS Valentine Sprint</option>
|
||||
<option value="10-RTTY">Ten-Meter RTTY Contest (2011 onwards)</option>
|
||||
<option value="1010-OPEN-SEASON">Open Season Ten Meter QSO Party</option>
|
||||
<option value="7QP">7th-Area QSO Party</option>
|
||||
<option value="AL-QSO-PARTY">Alabama QSO Party</option>
|
||||
<option value="ALL-ASIAN-DX-CW">JARL All Asian DX Contest (CW)</option>
|
||||
<option value="ALL-ASIAN-DX-PHONE">JARL All Asian DX Contest (PHONE)</option>
|
||||
<option value="ANARTS-RTTY">ANARTS WW RTTY</option>
|
||||
<option value="ANATOLIAN-RTTY">Anatolian WW RTTY</option>
|
||||
<option value="AP-SPRINT">Asia - Pacific Sprint</option>
|
||||
<option value="AR-QSO-PARTY">Arkansas QSO Party</option>
|
||||
<option value="ARI-DX">ARI DX Contest</option>
|
||||
<option value="ARRL-10">ARRL 10 Meter Contest</option>
|
||||
<option value="ARRL-10-GHZ">ARRL 10 GHz and Up Contest</option>
|
||||
<option value="ARRL-160">ARRL 160 Meter Contest</option>
|
||||
<option value="ARRL-222">ARRL 222 MHz and Up Distance Contest</option>
|
||||
<option value="ARRL-DX-CW">ARRL International DX Contest (CW)</option>
|
||||
<option value="ARRL-DX-SSB">ARRL International DX Contest (Phone)</option>
|
||||
<option value="ARRL-EME">ARRL EME contest</option>
|
||||
<option value="ARRL-FIELD-DAY">ARRL Field Day</option>
|
||||
<option value="ARRL-RR-CW">ARRL Rookie Roundup (CW)</option>
|
||||
<option value="ARRL-RR-RTTY">ARRL Rookie Roundup (RTTY)</option>
|
||||
<option value="ARRL-RR-SSB">ARRL Rookie Roundup (Phone)</option>
|
||||
<option value="ARRL-RTTY">ARRL RTTY Round-Up</option>
|
||||
<option value="ARRL-SCR">ARRL School Club Roundup</option>
|
||||
<option value="ARRL-SS-CW">ARRL November Sweepstakes (CW)</option>
|
||||
<option value="ARRL-SS-SSB">ARRL November Sweepstakes (Phone)</option>
|
||||
<option value="ARRL-UHF-AUG">ARRL August UHF Contest</option>
|
||||
<option value="ARRL-VHF-JAN">ARRL January VHF Sweepstakes</option>
|
||||
<option value="ARRL-VHF-JUN">ARRL June VHF QSO Party</option>
|
||||
<option value="ARRL-VHF-SEP">ARRL September VHF QSO Party</option>
|
||||
<option value="AZ-QSO-PARTY">Arizona QSO Party</option>
|
||||
<option value="BARTG-RTTY">BARTG Spring RTTY Contest</option>
|
||||
<option value="BARTG-SPRINT">BARTG Sprint Contest</option>
|
||||
<option value="BC-QSO-PARTY">British Columbia QSO Party</option>
|
||||
<option value="CA-QSO-PARTY">California QSO Party</option>
|
||||
<option value="CIS-DX">CIS DX Contest</option>
|
||||
<option value="CO-QSO-PARTY">Colorado QSO Party</option>
|
||||
<option value="CQ-160-CW">CQ WW 160 Meter DX Contest (CW)</option>
|
||||
<option value="CQ-160-SSB">CQ WW 160 Meter DX Contest (SSB)</option>
|
||||
<option value="CQ-M">CQ-M International DX Contest</option>
|
||||
<option value="CQ-VHF">CQ World-Wide VHF Contest</option>
|
||||
<option value="CQ-WPX-CW">CQ WW WPX Contest (CW)</option>
|
||||
<option value="CQ-WPX-RTTY">CQ/RJ WW RTTY WPX Contest</option>
|
||||
<option value="CQ-WPX-SSB">CQ WW WPX Contest (SSB)</option>
|
||||
<option value="CQ-WW-CW">CQ WW DX Contest (CW)</option>
|
||||
<option value="CQ-WW-RTTY">CQ/RJ WW RTTY DX Contest</option>
|
||||
<option value="CQ-WW-SSB">CQ WW DX Contest (SSB)</option>
|
||||
<option value="CT-QSO-PARTY">Connecticut QSO Party</option>
|
||||
<option value="CVA-DX-CW">Concurso Verde e Amarelo DX CW Contest</option>
|
||||
<option value="CVA-DX-SSB">Concurso Verde e Amarelo DX SSB Contest</option>
|
||||
<option value="CWOPS-CW-OPEN">CWops CW Open Competition</option>
|
||||
<option value="CWOPS-CWT">CWops Mini-CWT Test</option>
|
||||
<option value="DARC-WAEDC-CW">WAE DX Contest (CW)</option>
|
||||
<option value="DARC-WAEDC-RTTY">WAE DX Contest (RTTY)</option>
|
||||
<option value="DARC-WAEDC-SSB">WAE DX Contest (SSB)</option>
|
||||
<option value="DARC-WAG">DARC Worked All Germany</option>
|
||||
<option value="DE-QSO-PARTY">Delaware QSO Party</option>
|
||||
<option value="DL-DX-RTTY">DL-DX RTTY Contest</option>
|
||||
<option value="DMC-RTTY">DMC RTTY Contest</option>
|
||||
<option value="EA-CNCW">Concurso Nacional de Telegrafía</option>
|
||||
<option value="EA-DME">Municipios Españoles</option>
|
||||
<option value="EA-PSK63">EA PSK63</option>
|
||||
<option value="EA-RTTY (import-only)">Unión de Radioaficionados Españoles RTTY Contest</option>
|
||||
<option value="EA-SMRE-CW">Su Majestad El Rey de España - CW</option>
|
||||
<option value="EA-SMRE-SSB">Su Majestad El Rey de España - SSB</option>
|
||||
<option value="EA-VHF-ATLANTIC">Atlántico V-UHF</option>
|
||||
<option value="EA-VHF-COM">Combinado de V-UHF</option>
|
||||
<option value="EA-VHF-COSTA-SOL">Costa del Sol V-UHF</option>
|
||||
<option value="EA-VHF-EA">Nacional VHF</option>
|
||||
<option value="EA-VHF-EA1RCS">Segovia EA1RCS V-UHF</option>
|
||||
<option value="EA-VHF-QSL">QSL V-UHF & 50MHz</option>
|
||||
<option value="EA-VHF-SADURNI">Sant Sadurni V-UHF</option>
|
||||
<option value="EA-WW-RTTY">Unión de Radioaficionados Españoles RTTY Contest</option>
|
||||
<option value="EPC-PSK63">PSK63 QSO Party</option>
|
||||
<option value="EU Sprint">EU Sprint</option>
|
||||
<option value="EU-HF">EU HF Championship</option>
|
||||
<option value="EU-PSK-DX">EU PSK DX Contest</option>
|
||||
<option value="EUCW160M">European CW Association 160m CW Party</option>
|
||||
<option value="FALL SPRINT">FISTS Fall Sprint</option>
|
||||
<option value="FL-QSO-PARTY">Florida QSO Party</option>
|
||||
<option value="GA-QSO-PARTY">Georgia QSO Party</option>
|
||||
<option value="HA-DX">Hungarian DX Contest</option>
|
||||
<option value="HELVETIA">Helvetia Contest</option>
|
||||
<option value="HI-QSO-PARTY">Hawaiian QSO Party</option>
|
||||
<option value="HOLYLAND">IARC Holyland Contest</option>
|
||||
<option value="IA-QSO-PARTY">Iowa QSO Party</option>
|
||||
<option value="IARU-FIELD-DAY">DARC IARU Region 1 Field Day</option>
|
||||
<option value="IARU-HF">IARU HF World Championship</option>
|
||||
<option value="ID-QSO-PARTY">Idaho QSO Party</option>
|
||||
<option value="IL QSO Party">Illinois QSO Party</option>
|
||||
<option value="IN-QSO-PARTY">Indiana QSO Party</option>
|
||||
<option value="JARTS-WW-RTTY">JARTS WW RTTY</option>
|
||||
<option value="JIDX-CW">Japan International DX Contest (CW)</option>
|
||||
<option value="JIDX-SSB">Japan International DX Contest (SSB)</option>
|
||||
<option value="JT-DX-RTTY">Mongolian RTTY DX Contest</option>
|
||||
<option value="KS-QSO-PARTY">Kansas QSO Party</option>
|
||||
<option value="KY-QSO-PARTY">Kentucky QSO Party</option>
|
||||
<option value="LA-QSO-PARTY">Louisiana QSO Party</option>
|
||||
<option value="LDC-RTTY">DRCG Long Distance Contest (RTTY)</option>
|
||||
<option value="LZ DX">LZ DX Contest</option>
|
||||
<option value="MAR-QSO-PARTY">Maritimes QSO Party</option>
|
||||
<option value="MD-QSO-PARTY">Maryland QSO Party</option>
|
||||
<option value="ME-QSO-PARTY">Maine QSO Party</option>
|
||||
<option value="MI-QSO-PARTY">Michigan QSO Party</option>
|
||||
<option value="MIDATLANTIC-QSO-PARTY">Mid-Atlantic QSO Party</option>
|
||||
<option value="MN-QSO-PARTY">Minnesota QSO Party</option>
|
||||
<option value="MO-QSO-PARTY">Missouri QSO Party</option>
|
||||
<option value="MS-QSO-PARTY">Mississippi QSO Party</option>
|
||||
<option value="MT-QSO-PARTY">Montana QSO Party</option>
|
||||
<option value="NA-SPRINT-CW">North America Sprint (CW)</option>
|
||||
<option value="NA-SPRINT-RTTY">North America Sprint (RTTY)</option>
|
||||
<option value="NA-SPRINT-SSB">North America Sprint (Phone)</option>
|
||||
<option value="NAQP-CW">North America QSO Party (CW)</option>
|
||||
<option value="NAQP-RTTY">North America QSO Party (RTTY)</option>
|
||||
<option value="NAQP-SSB">North America QSO Party (Phone)</option>
|
||||
<option value="NC-QSO-PARTY">North Carolina QSO Party</option>
|
||||
<option value="ND-QSO-PARTY">North Dakota QSO Party</option>
|
||||
<option value="NE-QSO-PARTY">Nebraska QSO Party</option>
|
||||
<option value="NEQP">New England QSO Party</option>
|
||||
<option value="NH-QSO-PARTY">New Hampshire QSO Party</option>
|
||||
<option value="NJ-QSO-PARTY">New Jersey QSO Party</option>
|
||||
<option value="NM-QSO-PARTY">New Mexico QSO Party</option>
|
||||
<option value="NRAU-BALTIC-CW">NRAU-Baltic Contest (CW)</option>
|
||||
<option value="NRAU-BALTIC-SSB">NRAU-Baltic Contest (SSB)</option>
|
||||
<option value="NV-QSO-PARTY">Nevada QSO Party</option>
|
||||
<option value="NY-QSO-PARTY">New York QSO Party</option>
|
||||
<option value="OCEANIA-DX-CW">Oceania DX Contest (CW)</option>
|
||||
<option value="OCEANIA-DX-SSB">Oceania DX Contest (SSB)</option>
|
||||
<option value="OH-QSO-PARTY">Ohio QSO Party</option>
|
||||
<option value="OK-DX-RTTY">Czech Radio Club OK DX Contest</option>
|
||||
<option value="OK-OM-DX">Czech Radio Club OK-OM DX Contest</option>
|
||||
<option value="OK-QSO-PARTY">Oklahoma QSO Party</option>
|
||||
<option value="OMISS-QSO-PARTY">Old Man International Sideband Society QSO Party</option>
|
||||
<option value="ON-QSO-PARTY">Ontario QSO Party</option>
|
||||
<option value="OR-QSO-PARTY">Oregon QSO Party</option>
|
||||
<option value="PA-QSO-PARTY">Pennsylvania QSO Party</option>
|
||||
<option value="PACC">Dutch PACC Contest</option>
|
||||
<option value="PSK-DEATHMATCH">MDXA PSK DeathMatch (2005-2010)</option>
|
||||
<option value="QC-QSO-PARTY">Quebec QSO Party</option>
|
||||
<option value="RAC (import-only)">Canadian Amateur Radio Society Contest</option>
|
||||
<option value="RAC-CANADA-DAY">RAC Canada Day Contest</option>
|
||||
<option value="RAC-CANADA-WINTER">RAC Canada Winter Contest</option>
|
||||
<option value="RDAC">Russian District Award Contest</option>
|
||||
<option value="RDXC">Russian DX Contest</option>
|
||||
<option value="REF-160M">Reseau des Emetteurs Francais 160m Contest</option>
|
||||
<option value="REF-CW">Reseau des Emetteurs Francais Contest (CW)</option>
|
||||
<option value="REF-SSB">Reseau des Emetteurs Francais Contest (SSB)</option>
|
||||
<option value="REP-PORTUGAL-DAY-HF">Rede dos Emissores Portugueses Portugal Day HF Contest</option>
|
||||
<option value="RI-QSO-PARTY">Rhode Island QSO Party</option>
|
||||
<option value="RSGB-160">1.8MHz Contest</option>
|
||||
<option value="RSGB-21/28-CW">21/28 MHz Contest (CW)</option>
|
||||
<option value="RSGB-21/28-SSB">21/28 MHz Contest (SSB)</option>
|
||||
<option value="RSGB-80M-CC">80m Club Championships</option>
|
||||
<option value="RSGB-AFS-CW">Affiliated Societies Team Contest (CW)</option>
|
||||
<option value="RSGB-AFS-SSB">Affiliated Societies Team Contest (SSB)</option>
|
||||
<option value="RSGB-CLUB-CALLS">Club Calls</option>
|
||||
<option value="RSGB-COMMONWEALTH">Commonwealth Contest</option>
|
||||
<option value="RSGB-IOTA">IOTA Contest</option>
|
||||
<option value="RSGB-LOW-POWER">Low Power Field Day</option>
|
||||
<option value="RSGB-NFD">National Field Day</option>
|
||||
<option value="RSGB-ROPOCO">RoPoCo</option>
|
||||
<option value="RSGB-SSB-FD">SSB Field Day</option>
|
||||
<option value="RUSSIAN-RTTY">Russian Radio RTTY Worldwide Contest</option>
|
||||
<option value="SAC-CW">Scandinavian Activity Contest (CW)</option>
|
||||
<option value="SAC-SSB">Scandinavian Activity Contest (SSB)</option>
|
||||
<option value="SARTG-RTTY">SARTG WW RTTY</option>
|
||||
<option value="SC-QSO-PARTY">South Carolina QSO Party</option>
|
||||
<option value="SCC-RTTY">SCC RTTY Championship</option>
|
||||
<option value="SD-QSO-PARTY">South Dakota QSO Party</option>
|
||||
<option value="SMP-AUG">SSA Portabeltest</option>
|
||||
<option value="SMP-MAY">SSA Portabeltest</option>
|
||||
<option value="SP-DX-RTTY">PRC SPDX Contest (RTTY)</option>
|
||||
<option value="SPAR-WINTER-FD">SPAR Winter Field Day</option>
|
||||
<option value="SPDXContest">SP DX Contest</option>
|
||||
<option value="SPRING SPRINT">FISTS Spring Sprint</option>
|
||||
<option value="SR-MARATHON">Scottish-Russian Marathon</option>
|
||||
<option value="STEW-PERRY">Stew Perry Topband Distance Challenge</option>
|
||||
<option value="SUMMER SPRINT">FISTS Summer Sprint</option>
|
||||
<option value="TARA-GRID-DIP">TARA Grid Dip PSK-RTTY Shindig</option>
|
||||
<option value="TARA-RTTY">TARA RTTY Mêlée</option>
|
||||
<option value="TARA-RUMBLE">TARA Rumble PSK Contest</option>
|
||||
<option value="TARA-SKIRMISH">TARA Skirmish Digital Prefix Contest</option>
|
||||
<option value="TEN-RTTY">Ten-Meter RTTY Contest (before 2011)</option>
|
||||
<option value="TMC-RTTY">The Makrothen Contest</option>
|
||||
<option value="TN-QSO-PARTY">Tennessee QSO Party</option>
|
||||
<option value="TX-QSO-PARTY">Texas QSO Party</option>
|
||||
<option value="UBA-DX-CW">UBA Contest (CW)</option>
|
||||
<option value="UBA-DX-SSB">UBA Contest (SSB)</option>
|
||||
<option value="UK-DX-BPSK63">European PSK Club BPSK63 Contest</option>
|
||||
<option value="UK-DX-RTTY">UK DX RTTY Contest</option>
|
||||
<option value="UKR-CHAMP-RTTY">Open Ukraine RTTY Championship</option>
|
||||
<option value="UKRAINIAN DX">Ukrainian DX</option>
|
||||
<option value="UKSMG-6M-MARATHON">UKSMG 6m Marathon</option>
|
||||
<option value="UKSMG-SUMMER-ES">UKSMG Summer Es Contest</option>
|
||||
<option value="URE-DX (import-only)">Ukrainian DX Contest</option>
|
||||
<option value="US-COUNTIES-QSO">Mobile Amateur Awards Club</option>
|
||||
<option value="UT-QSO-PARTY">Utah QSO Party</option>
|
||||
<option value="VA-QSO-PARTY">Virginia QSO Party</option>
|
||||
<option value="VENEZ-IND-DAY">RCV Venezuelan Independence Day Contest</option>
|
||||
<option value="VIRGINIA QSO PARTY (import-only)">Virginia QSO Party</option>
|
||||
<option value="VOLTA-RTTY">Alessandro Volta RTTY DX Contest</option>
|
||||
<option value="WA-QSO-PARTY">Washington QSO Party</option>
|
||||
<option value="WI-QSO-PARTY">Wisconsin QSO Party</option>
|
||||
<option value="WIA-HARRY ANGEL">WIA Harry Angel Memorial 80m Sprint</option>
|
||||
<option value="WIA-JMMFD">WIA John Moyle Memorial Field Day</option>
|
||||
<option value="WIA-OCDX">WIA Oceania DX (OCDX) Contest</option>
|
||||
<option value="WIA-REMEMBRANCE">WIA Remembrance Day</option>
|
||||
<option value="WIA-ROSS HULL">WIA Ross Hull Memorial VHF/UHF Contest</option>
|
||||
<option value="WIA-TRANS TASMAN">WIA Trans Tasman Low Bands Challenge</option>
|
||||
<option value="WIA-VHF/UHF FD">WIA VHF UHF Field Days</option>
|
||||
<option value="WIA-VK SHIRES">WIA VK Shires</option>
|
||||
<option value="WINTER SPRINT">FISTS Winter Sprint</option>
|
||||
<option value="WV-QSO-PARTY">West Virginia QSO Party</option>
|
||||
<option value="WW-DIGI">World Wide Digi DX Contest</option>
|
||||
<option value="WY-QSO-PARTY">Wyoming QSO Party</option>
|
||||
<option value="XE-INTL-RTTY">Mexico International Contest (RTTY)</option>
|
||||
<option value="YOHFDX">YODX HF contest</option>
|
||||
<option value="YUDXC">YU DX Contest</option>
|
||||
<?php foreach($contestnames as $contest) {
|
||||
echo "<option value='" . $contest['adifname'] . "'>" . $contest['name'] . "</option>";
|
||||
} ?>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -2978,6 +2978,125 @@ function deleteQsl(id) {
|
|||
});
|
||||
}
|
||||
</script>
|
||||
<?php } ?>
|
||||
|
||||
<?php if ($this->uri->segment(1) == "contesting" && $this->uri->segment(2) == "add") { ?>
|
||||
<script>
|
||||
|
||||
$('.contesttable').DataTable({
|
||||
"pageLength": 25,
|
||||
responsive: false,
|
||||
ordering: false,
|
||||
"scrollY": "400px",
|
||||
"scrollCollapse": true,
|
||||
"paging": false,
|
||||
"scrollX": true,
|
||||
dom: 'Bfrtip',
|
||||
buttons: [
|
||||
'csv'
|
||||
]
|
||||
});
|
||||
|
||||
// using this to change color of csv-button if dark mode is chosen
|
||||
var background = $('body').css( "background-color");
|
||||
|
||||
if (background != ('rgb(255, 255, 255)')) {
|
||||
$(".buttons-csv").css("color", "white");
|
||||
}
|
||||
|
||||
function createContestDialog() {
|
||||
var baseURL= "<?php echo base_url();?>";
|
||||
$.ajax({
|
||||
url: baseURL + 'index.php/contesting/create',
|
||||
type: 'post',
|
||||
success: function(html) {
|
||||
BootstrapDialog.show({
|
||||
title: 'Add Contest',
|
||||
size: BootstrapDialog.SIZE_WIDE,
|
||||
cssClass: 'create-contest-dialog',
|
||||
nl2br: false,
|
||||
message: html,
|
||||
buttons: [{
|
||||
label: 'Close',
|
||||
action: function (dialogItself) {
|
||||
dialogItself.close();
|
||||
}
|
||||
}]
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function createContest(form) {
|
||||
var baseURL= "<?php echo base_url();?>";
|
||||
if (form.contestname.value != '') {
|
||||
$.ajax({
|
||||
url: baseURL + 'index.php/contesting/create',
|
||||
type: 'post',
|
||||
data: {'name': form.contestname.value,
|
||||
'adifname': form.adifcontestname.value},
|
||||
success: function(html) {
|
||||
location.reload();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function deactivateContest(contestid) {
|
||||
var baseURL= "<?php echo base_url();?>";
|
||||
$.ajax({
|
||||
url: baseURL + 'index.php/contesting/deactivate',
|
||||
type: 'post',
|
||||
data: {'id': contestid },
|
||||
success: function(html) {
|
||||
$(".contest_" + contestid).text('not active');
|
||||
$('.btn_'+contestid).html('Activate');
|
||||
$('.btn_'+contestid).attr('onclick', 'activateContest('+contestid+')')
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function activateContest(contestid) {
|
||||
var baseURL= "<?php echo base_url();?>";
|
||||
$.ajax({
|
||||
url: baseURL + 'index.php/contesting/activate',
|
||||
type: 'post',
|
||||
data: {'id': contestid },
|
||||
success: function(html) {
|
||||
$('.contest_'+contestid).text('active');
|
||||
$('.btn_'+contestid).html('Deactivate');
|
||||
$('.btn_'+contestid).attr('onclick', 'deactivateContest('+contestid+')')
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function deleteContest(id, contest) {
|
||||
BootstrapDialog.confirm({
|
||||
title: 'DANGER',
|
||||
message: 'Warning! Are you sure you want to delete the following contest: ' + contest + '?' ,
|
||||
type: BootstrapDialog.TYPE_DANGER,
|
||||
closable: true,
|
||||
draggable: true,
|
||||
btnOKClass: 'btn-danger',
|
||||
callback: function(result) {
|
||||
if(result) {
|
||||
var baseURL= "<?php echo base_url();?>";
|
||||
$.ajax({
|
||||
url: baseURL + 'index.php/contesting/delete',
|
||||
type: 'post',
|
||||
data: {'id': id
|
||||
},
|
||||
success: function(data) {
|
||||
$(".contest_" + id).parent("tr:first").remove(); // removes mode from table
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<?php } ?>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -178,6 +178,10 @@
|
|||
<div class="dropdown-divider"></div>
|
||||
|
||||
<a class="dropdown-item" href="<?php echo site_url('kml');?>" title="KML Export for Google Earth"><i class="fas fa-sync"></i> KML Export</a>
|
||||
|
||||
<div class="dropdown-divider"></div>
|
||||
|
||||
<a class="dropdown-item" href="<?php echo site_url('contesting/add');?>" title="Manage Contest names"><i class="fas fa-broadcast-tower"></i> Contests</a>
|
||||
</div>
|
||||
</li>
|
||||
<?php } ?>
|
||||
|
|
|
|||
正在加载…
在新工单中引用