-';
+ $page->content['title'] = 'DMV';
+ $page->content['reports'] = array(
+ array('link'=>'../api/v1/dmv?fmt=csv&filter=year eq current&no_logo', 'title'=>'Big Spreadsheet of Everything')
+ );
+ $page->content['endpoint'] = 'dmv';
+ $page->content['editUri'] = '../artCar_reg.php';
}
-$page->print_page();
+$page->printPage();
// vim: set tabstop=4 shiftwidth=4 expandtab:
diff --git a/_admin/evt.php b/_admin/evt.php
index d6534bb..a4346c4 100644
--- a/_admin/evt.php
+++ b/_admin/evt.php
@@ -3,47 +3,28 @@
error_reporting(E_ALL);
require_once('class.RegisterAdminPage.php');
$page = new RegisterAdminPage('Burning Flipside - Events');
-
-$page->addWellKnownJS(JS_DATATABLE, false);
-$page->addWellKnownCSS(CSS_DATATABLE, false);
-$page->addWellKnownJS(JS_BOOTBOX);
-$page->addJSByURI('js/evt.js');
+$page->setTemplateName('@Register/reg-admin.html');
if(!$page->is_event_admin)
{
+ $page->setTemplateName('admin.html');
$page->body .= '
Not an Event admin!
/div>';
}
else
{
- $page->body .= '
-
-
-
-';
+ $page->content['title'] = 'Events';
+ $page->content['reports'] = array(
+ array('link'=>'../api/v1/event?fmt=csv&filter=year eq current&no_logo', 'title'=>'Big Spreadsheet of Everything'),
+ array('link'=>'../api/v1/event?fmt=csv&filter=year eq current and Thursday eq true&no_logo', 'title'=>'Thursday'),
+ array('link'=>'../api/v1/event?fmt=csv&filter=year eq current and Friday eq true&no_logo', 'title'=>'Friday'),
+ array('link'=>'../api/v1/event?fmt=csv&filter=year eq current and Saturday eq true&no_logo', 'title'=>'Saturday'),
+ array('link'=>'../api/v1/event?fmt=csv&filter=year eq current and Sunday eq true&no_logo', 'title'=>'Sunday'),
+ array('link'=>'../api/v1/event?fmt=csv&filter=year eq current and Monday eq true&no_logo', 'title'=>'Monday')
+ );
+ $page->content['endpoint'] = 'event';
+ $page->content['editUri'] = '../event_reg.php';
}
-$page->print_page();
+$page->printPage();
// vim: set tabstop=4 shiftwidth=4 expandtab:
diff --git a/_admin/js/admin.js b/_admin/js/admin.js
index e69de29..6c41812 100644
--- a/_admin/js/admin.js
+++ b/_admin/js/admin.js
@@ -0,0 +1,115 @@
+function getAPICall()
+{
+ var finished = getParameterByName('finished');
+ var filter = '';
+ if(finished !== null)
+ {
+ filter = '&$filter=final eq true and year eq current';
+ }
+ return '../api/v1/'+$('#listTable').data('source')+'?no_logo=1&fmt=json-ss'+filter;
+}
+
+function getEditPage()
+{
+ return $('#listTable').data('editor');
+}
+
+function renderName(data, type, row)
+{
+ return '
'+data+'';
+}
+
+var renderers = [
+ {'name': renderName}
+];
+
+function dataObtained(data)
+{
+ if(data.length === 0) return;
+ var columns = [{
+ 'data': null,
+ 'defaultContent': '
'
+ }];
+ var toggles = $('#coltoggle');
+ var idIndex = -1;
+ var nameIndex = -1;
+ for(var_name in data[0])
+ {
+ var col = {};
+ col.title = var_name;
+ for(i = 0; i < renderers.length; i++)
+ {
+ if(renderers[i][var_name] !== undefined)
+ {
+ col.render = renderers[i][var_name];
+ }
+ }
+ if($.inArray(var_name, hidden) !== -1)
+ {
+ col.visible=false;
+ }
+ var len = columns.push(col);
+ if(col.title === 'name')
+ {
+ nameIndex = len-1;
+ }
+ else if(col.title === '_id')
+ {
+ idIndex = len-1;
+ }
+ toggles.append('
'+var_name+' | ');
+ }
+ $.fn.dataTable.ext.errMode = 'none';
+ $('#listTable').dataTable({
+ 'colReorder': true,
+ 'data': [],
+ 'columns': columns
+ });
+ var table = $('#listTable').DataTable();
+ for(i = 0; i < data.length; i++)
+ {
+ var obj = data[i];
+ var arr = [];
+ for(j = 0; j < columns.length; j++)
+ {
+ if(obj[columns[j].title] !== undefined)
+ {
+ arr.push(obj[columns[j].title]);
+ }
+ else
+ {
+ arr.push(null);
+ }
+ }
+ table.row.add(arr);
+ }
+ table.colReorder.move(idIndex, 1);
+ table.colReorder.move(nameIndex, 2);
+ table.order([2, 'desc']);
+ table.draw(false);
+ $('a.toggle-vis').on('click', function (e){
+ e.preventDefault();
+ // Get the column API object
+ var column = table.column(":contains("+$(this).attr('data-column')+")");
+ // Toggle the visibility
+ column.visible( ! column.visible() );
+ });
+}
+
+function changeDLType()
+{
+ var format = $('#dlFormat').val();
+ var links = $('.dl_link').each(function(){
+ this.href = this.href.replace(/(fmt=)[^\&]+/, '$1'+format);
+ });
+}
+
+function initPage()
+{
+ $.ajax({
+ url: getAPICall(),
+ success: dataObtained
+ });
+}
+
+$(initPage);
diff --git a/_admin/js/tc.js b/_admin/js/tc.js
index 8779790..4757b7e 100644
--- a/_admin/js/tc.js
+++ b/_admin/js/tc.js
@@ -11,14 +11,6 @@ var hidden = [
'_id'
];
-function changeDLType()
-{
- var format = $('#dlFormat').val();
- var links = $('.dl_link').each(function(){
- this.href = this.href.replace(/(fmt=)[^\&]+/, '$1'+format);
- });
-}
-
function get_id_for_event(trigger)
{
var tr = $(trigger).closest('tr');
@@ -143,5 +135,3 @@ function tc_page_loaded()
$('#tc tbody').on('click', 'button[name="unlock"]', unlockObject);
$('#tc tbody').on('click', 'button[name="structs"]', getStructs);
}
-
-$(tc_page_loaded);
diff --git a/_admin/tc.php b/_admin/tc.php
index b412643..b16b45a 100644
--- a/_admin/tc.php
+++ b/_admin/tc.php
@@ -2,49 +2,30 @@
ini_set('display_errors', 1);
error_reporting(E_ALL);
require_once('class.RegisterAdminPage.php');
-$page = new RegisterAdminPage('Burning Flipside - Tickets');
-
-$page->addWellKnownJS(JS_DATATABLE_ODATA, false);
-$page->addWellKnownJS(JS_DATATABLE, false);
-$page->addWellKnownCSS(CSS_DATATABLE);
-$page->addWellKnownJS(JS_BOOTBOX);
-$page->addJSByURI('js/tc.js', false);
+$page = new RegisterAdminPage('Burning Flipside - Registration');
+$page->setTemplateName('@Register/reg-admin.html');
if(!$page->is_tc_admin)
{
+ $page->setTemplateName('admin.html');
$page->body .= '
Not a theme camp admin!
/div>';
}
else
{
- $page->body .= '
-
-
-
-';
+ $page->content['title'] = 'Theme Camps';
+ $page->content['reports'] = array(
+ array('link'=>'../api/v1/camps?fmt=csv&filter=year eq current&no_logo', 'title'=>'Big Spreadsheet of Everything'),
+ array('link'=>'../api/v1/camps/*/campLead?fmt=csv&filter=year eq current', 'title'=>'Camp Leads'),
+ array('link'=>'../api/v1/camps/*/soundLead?fmt=csv&filter=year eq current', 'title'=>'Sound Leads'),
+ array('link'=>'../api/v1/camps/*/safetyLead?fmt=csv&filter=year eq current', 'title'=>'Safety Leads'),
+ array('link'=>'../api/v1/camps/*/volunteering?fmt=csv&filter=year eq current', 'title'=>'Volunteering Leads'),
+ array('link'=>'../api/v1/camps/*/cleanupLead?fmt=csv&filter=year eq current', 'title'=>'Cleanup Leads'),
+ array('link'=>'../api/v1/camps/*/doStructView?fmt=csv&filter=year eq current', 'title'=>'Structs')
+ );
+ $page->content['endpoint'] = 'camps';
+ $page->content['editUri'] = '../tc_reg.php';
}
-$page->print_page();
+$page->printPage();
?>
diff --git a/_admin/vars.php b/_admin/vars.php
index d0bd796..c56144d 100644
--- a/_admin/vars.php
+++ b/_admin/vars.php
@@ -4,9 +4,6 @@
require_once('class.RegisterAdminPage.php');
$page = new RegisterAdminPage('Burning Flipside - Registration Variables');
-$page->addWellKnownJS(JS_BOOTBOX);
-$page->addJSByURI('js/vars.js');
-
if(!$page->is_admin)
{
$page->body .= '
Not a registration admin!
/div>';
@@ -28,6 +25,6 @@
';
}
-$page->print_page();
+$page->printPage();
// vim: set tabstop=4 shiftwidth=4 expandtab:
diff --git a/add.php b/add.php
index 0208e20..92ae4eb 100644
--- a/add.php
+++ b/add.php
@@ -14,6 +14,7 @@
$evtDates = array();
$now = time();
+$secsInDay = 86399;
$data_set = DataSetFactory::getDataSetByName('registration');
$vars_data_table = $data_set['vars'];
@@ -24,25 +25,25 @@
$vars = $vars_data_table->read(new \Data\Filter('name eq tcRegDates'));
$tcDates = $vars[0]['value'];
$tcStart = strtotime($tcDates['start']);
-$tcEnd = strtotime($tcDates['end']);
+$tcEnd = strtotime($tcDates['end'])+$secsInDay;
$tcRegClosed = $now < $tcStart || $now > $tcEnd;
$vars = $vars_data_table->read(new \Data\Filter('name eq artRegDates'));
$artDates = $vars[0]['value'];
$artStart = strtotime($artDates['start']);
-$artEnd = strtotime($artDates['end']);
+$artEnd = strtotime($artDates['end'])+$secsInDay;
$artRegClosed = $now < $artStart || $now > $artEnd;
$vars = $vars_data_table->read(new \Data\Filter('name eq dmvRegDates'));
$dmvDates = $vars[0]['value'];
$dmvStart = strtotime($dmvDates['start']);
-$dmvEnd = strtotime($dmvDates['end']);
+$dmvEnd = strtotime($dmvDates['end'])+$secsInDay;
$dmvRegClosed = $now < $dmvStart || $now > $dmvEnd;
$vars = $vars_data_table->read(new \Data\Filter('name eq eventRegDates'));
$evtDates = $vars[0]['value'];
$evtStart = strtotime($evtDates['start']);
-$evtEnd = strtotime($evtDates['end']);
+$evtEnd = strtotime($evtDates['end'])+$secsInDay;
$evtRegClosed = $now < $evtStart || $now > $evtEnd;
if($page->user)
@@ -66,10 +67,10 @@
-$manage_camp = '
Register a Theme Camp';
+$manage_camp = '
Register a Theme Camp<';
if($tcRegClosed)
{
- $manage_camp = '
Theme Camp Registration is Closed';
+ $manage_camp = '
Theme Camp Registration is Closed';
}
if($camps_count > 0)
{
@@ -89,10 +90,10 @@
}
-$manage_art = '
Register an Art Project';
+$manage_art = '
Register an Art Project';
if($artRegClosed)
{
- $manage_art = '
Art Registration is Closed';
+ $manage_art = '
Art Registration is Closed';
}
if($arts_count > 0)
{
@@ -112,10 +113,10 @@
}
-$manage_car = '
Register an Art Car';
+$manage_car = '
Register an Art Car';
if($dmvRegClosed)
{
- $manage_car = '
Art Car Registration is Closed';
+ $manage_car = '
Art Car Registration is Closed';
}
if($cars_count > 0)
{
@@ -135,10 +136,10 @@
}
-$manage_event = '
Register an Event';
+$manage_event = '
Register an Event';
if($evtRegClosed)
{
- $manage_event = '
Event Registration is Closed';
+ $manage_event = '
Event Registration is Closed';
}
if($events_count > 0)
{
@@ -162,12 +163,10 @@
Welcome to the Burning Flipside Registration System
What would you like register?
-
- '.$manage_camp.'
- '.$manage_art.'
- '.$manage_car.'
+ '.$manage_camp.'
+ '.$manage_art.'
+ '.$manage_car.'
'.$manage_event.'
-
';
$page->printPage();
diff --git a/api/v1/class.RegistrationAPI.php b/api/v1/class.RegistrationAPI.php
index 7382943..37b9ef3 100644
--- a/api/v1/class.RegistrationAPI.php
+++ b/api/v1/class.RegistrationAPI.php
@@ -330,7 +330,7 @@ public function readEntryField($request, $response, $args)
$odata = $request->getAttribute('odata', new \ODataParams(array()));
$odata->select = array($args['field']);
$request = $request->withAttribute('odata', $odata);
- return parent::readEntry($request, $response, $args);
+ return $this->readEntry($request, $response, $args);
}
$field = $args['field'];
if($this->canRead($request) === false)
@@ -358,6 +358,7 @@ public function readEntryField($request, $response, $args)
array_push($res, $objs[$i][$field]);
}
}
+ $params = $request->getParams();
return $response->withJson($res);
}
diff --git a/class.RegisterWizardPage.php b/class.RegisterWizardPage.php
index 4d76f98..fc3c0fb 100644
--- a/class.RegisterWizardPage.php
+++ b/class.RegisterWizardPage.php
@@ -9,6 +9,8 @@ class RegisterWizardPage extends SecureLoginRequiredPage
function __construct($reg_type_long, $reg_type_short = FALSE)
{
parent::__construct('Burning Flipside - '.$reg_type_long.' Registration', true);
+ $this->addTemplateDir(dirname(__FILE__).'/templates', 'Register');
+ $this->setTemplateName('@Register/reg.html');
if($reg_type_short == FALSE)
{
$this->reg_type_short = $reg_type_long;
@@ -63,7 +65,7 @@ function __construct($reg_type_long, $reg_type_short = FALSE)
function add_script()
{
$this->addWellKnownJS(JS_BOOTBOX, false);
- $this->addJSByURI('js/reg.js', false);
+ $this->addJS('js/reg.js', false);
}
function add_wizard_step($name, $id = FALSE)
@@ -173,11 +175,7 @@ function print_tabs()
$max = count($this->steps);
for($i = 0; $i < $max; $i++)
{
- $ret.='
steps[$i]['id']))
{
$ret.=' id="'.$this->steps[$i]['id'].'"';
@@ -398,15 +396,16 @@ function print_content()
return $ret;
}
- function print_page($header=true)
+ function printPage()
{
+ $this->content['steps'] = $this->steps;
+/*
$this->body = '
-
'.$this->print_content().'
@@ -425,9 +424,8 @@ function print_page($header=true)
Save and Continue →
-
-
';
- parent::printPage($header);
+ ';*/
+ parent::printPage();
}
static function camelize($value)
diff --git a/class.ViewListPage.php b/class.ViewListPage.php
new file mode 100644
index 0000000..68a0911
--- /dev/null
+++ b/class.ViewListPage.php
@@ -0,0 +1,11 @@
+addTemplateDir('./templates', 'Register');
+ $this->setTemplateName('@Register/view-list.html');
+ }
+}
diff --git a/js/reg.js b/js/reg.js
index 3d0582d..825341c 100644
--- a/js/reg.js
+++ b/js/reg.js
@@ -665,7 +665,7 @@ function populate_prior_data()
function wizard_init()
{
- _id = getParameterByName('_id');
+ _id = getParameterByName('id');
$('[title]').tooltip();
$('input[data-tabcontrol]').change(tabcontrol_change);
$('input[data-groupcontrol]').change(groupcontrol_change);
diff --git a/js/view_events.js b/js/view_events.js
new file mode 100644
index 0000000..0ebbcfc
--- /dev/null
+++ b/js/view_events.js
@@ -0,0 +1,82 @@
+function getEndpoint()
+{
+ return 'api/v1/event';
+}
+
+function renderLogo(data, type, row)
+{
+ return '
+'/'+data+'/logo)
';
+}
+
+function nukeImage(img)
+{
+ delete img.onerror;
+ jQuery(img).hide();
+}
+
+function rowClicked()
+{
+ var table = $(this).closest('table');
+ table = table.DataTable();
+ var row = table.row(this);
+ var data = row.data();
+ window.location = 'view_event.php?id='+data['_id'];
+}
+
+function initPage()
+{
+ $('#ThursdayTable').dataTable({
+ 'ajax': getEndpoint()+'?$filter=Thursday eq true and year eq current&fmt=data-table&$select=_id,name,teaser',
+ 'order': [[ 1, 'desc' ]],
+ 'columns': [
+ {'data': '_id', 'render': renderLogo},
+ {'data': 'name'},
+ {'data': 'teaser'}
+ ],
+ 'deferRender': true
+ });
+ $('#FridayTable').dataTable({
+ 'ajax': getEndpoint()+'?$filter=Friday eq true and year eq current&fmt=data-table&$select=_id,name,teaser',
+ 'order': [[ 1, 'desc' ]],
+ 'columns': [
+ {'data': '_id', 'render': renderLogo},
+ {'data': 'name'},
+ {'data': 'teaser'}
+ ],
+ 'deferRender': true
+ });
+ $('#SaturdayTable').dataTable({
+ 'ajax': getEndpoint()+'?$filter=Saturday eq true and year eq current&fmt=data-table&$select=_id,name,teaser',
+ 'order': [[ 1, 'desc' ]],
+ 'columns': [
+ {'data': '_id', 'render': renderLogo},
+ {'data': 'name'},
+ {'data': 'teaser'}
+ ],
+ 'deferRender': true
+ });
+ $('#SundayTable').dataTable({
+ 'ajax': getEndpoint()+'?$filter=Sunday eq true and year eq current&fmt=data-table&$select=_id,name,teaser',
+ 'order': [[ 1, 'desc' ]],
+ 'columns': [
+ {'data': '_id', 'render': renderLogo},
+ {'data': 'name'},
+ {'data': 'teaser'}
+ ],
+ 'deferRender': true
+ });
+ $('#MondayTable').dataTable({
+ 'ajax': getEndpoint()+'?$filter=Monday eq true and year eq current&fmt=data-table&$select=_id,name,teaser',
+ 'order': [[ 1, 'desc' ]],
+ 'columns': [
+ {'data': '_id', 'render': renderLogo},
+ {'data': 'name'},
+ {'data': 'teaser'}
+ ],
+ 'deferRender': true
+ });
+ $('table tbody').on('click', 'tr', rowClicked);
+ $('table tbody').css( 'cursor', 'pointer' );
+}
+
+$(initPage);
diff --git a/js/view_list.js b/js/view_list.js
new file mode 100644
index 0000000..50b755c
--- /dev/null
+++ b/js/view_list.js
@@ -0,0 +1,42 @@
+
+function getEndpoint()
+{
+ return 'api/v1/'+$('#listTable').data('endpoint');
+}
+
+function renderLogo(data, type, row)
+{
+ return '
+'/'+data+'/logo)
';
+}
+
+function nukeImage(img)
+{
+ delete img.onerror;
+ jQuery(img).hide();
+}
+
+function rowClicked()
+{
+ var table = $('#listTable').DataTable();
+ var row = table.row(this);
+ var data = row.data();
+ window.location = $('#listTable').data('viewpage')+'?id='+data['_id'];
+}
+
+function initPage()
+{
+ var table = $('#listTable').dataTable({
+ 'ajax': getEndpoint()+'?fmt=data-table&$select=_id,name,teaser',
+ 'order': [[ 1, 'desc' ]],
+ 'columns': [
+ {'data': '_id', 'render': renderLogo},
+ {'data': 'name'},
+ {'data': 'teaser'}
+ ],
+ 'deferRender': true
+ });
+ $('#listTable tbody').on('click', 'tr', rowClicked);
+ $('#listTable tbody').css( 'cursor', 'pointer' );
+}
+
+$(initPage);
diff --git a/templates/reg-admin.html b/templates/reg-admin.html
new file mode 100644
index 0000000..fa3e9f0
--- /dev/null
+++ b/templates/reg-admin.html
@@ -0,0 +1,41 @@
+{% extends "admin.html" %}
+
+{% block headBlock %}
+ {% if useCDN == null or useCND %}
+ {{ include('@Register/view-list-cdn.html') }}
+ {% else %}
+ {{ include('@Register/view-list-local.html') }}
+ {% endif %}
+
+{% endblock %}
+
+{% block contentTop %}
+
+
+ {% for report in reports %}
+
{{ report.title }}
+ {% if loop.last == false %}
+ |
+ {% endif %}
+ {% endfor %}
+ Format Preference:
+
+
+
+
+
+
+{% endblock %}
diff --git a/templates/reg.html b/templates/reg.html
new file mode 100644
index 0000000..8c71ebc
--- /dev/null
+++ b/templates/reg.html
@@ -0,0 +1,57 @@
+{% extends "@Secure/main.html" %}
+
+{% set css = ["#{root}css/secure.css"] %}
+
+{% block headBlock %}
+
+ {% if useCDN == null or useCND %}
+ {{ include('@Register/view-list-cdn.html') }}
+ {% else %}
+ {{ include('@Register/view-list-local.html') }}
+ {% endif %}
+{% endblock %}
+
+
+{% block content %}
+
+
+ {% for step in steps %}
+ {% if loop.first %}
+
+ {% else %}
+
+ {% endif %}
+ {% for tag in step.content %}
+ {% if tag.type == 'form-group' %}
+
+ {% elseif tag.type == 'spacer' %}
+
+ {% elseif tag.type == 'raw' %}
+ {{ tag.html|raw }}
+ {% else %}
+ {{ tag|json_encode() }}
+ {% endif %}
+ {% endfor %}
+
+ {% endfor %}
+
+{% endblock %}
diff --git a/templates/view-event-list.html b/templates/view-event-list.html
new file mode 100644
index 0000000..9deadbd
--- /dev/null
+++ b/templates/view-event-list.html
@@ -0,0 +1,47 @@
+{% extends "@Secure/main.html" %}
+
+{% set css = ["#{root}css/secure.css"] %}
+{% set days = ['Thursday', 'Friday', 'Saturday', 'Sunday', 'Monday'] %}
+
+{% block headBlock %}
+ {% if useCDN == null or useCND %}
+ {{ include('@Register/view-list-cdn.html') }}
+ {% else %}
+ {{ include('@Register/view-list-local.html') }}
+ {% endif %}
+{% endblock %}
+
+
+{% block content %}
+
+ {% for day in days %}
+ -
+ {% if loop.first %}
+ {{ day }}
+ {% else %}
+ {{ day }}
+ {% endif %}
+
+ {% endfor %}
+
+
+ {% for day in days %}
+ {% if loop.first %}
+
+ {% else %}
+
+ {% endif %}
+
+
+
+ Logo |
+ Name |
+ Teaser |
+
+
+
+
+
+ {% endfor %}
+
+{% endblock %}
diff --git a/templates/view-list-cdn.html b/templates/view-list-cdn.html
new file mode 100644
index 0000000..9e0169c
--- /dev/null
+++ b/templates/view-list-cdn.html
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/templates/view-list.html b/templates/view-list.html
new file mode 100644
index 0000000..b74d8fb
--- /dev/null
+++ b/templates/view-list.html
@@ -0,0 +1,26 @@
+{% extends "@Secure/main.html" %}
+
+{% set css = ["#{root}css/secure.css"] %}
+
+{% block headBlock %}
+
+ {% if useCDN == null or useCND %}
+ {{ include('@Register/view-list-cdn.html') }}
+ {% else %}
+ {{ include('@Register/view-list-local.html') }}
+ {% endif %}
+{% endblock %}
+
+
+{% block content %}
+
+
+
+ Logo |
+ Name |
+ Teaser |
+
+
+
+
+{% endblock %}
diff --git a/view.php b/view.php
index 713182c..c44f5a7 100644
--- a/view.php
+++ b/view.php
@@ -8,6 +8,13 @@
$page->addWellKnownJS(JS_DATATABLE_ODATA, false);
$page->addWellKnownCSS(CSS_DATATABLE);
+$page->body .= '
';
+/*
$page->body .= '
-';
+';*/
$page->printPage();
diff --git a/view_arts.php b/view_arts.php
new file mode 100644
index 0000000..671c573
--- /dev/null
+++ b/view_arts.php
@@ -0,0 +1,10 @@
+content['endpoint'] = 'art';
+$page->content['viewpage'] = 'view_art.php';
+
+$page->printPage();
diff --git a/view_dmvs.php b/view_dmvs.php
new file mode 100644
index 0000000..3ea7db2
--- /dev/null
+++ b/view_dmvs.php
@@ -0,0 +1,10 @@
+content['endpoint'] = 'dmv';
+$page->content['viewpage'] = 'view_dmv.php';
+
+$page->printPage();
diff --git a/view_events.php b/view_events.php
new file mode 100644
index 0000000..8aef95e
--- /dev/null
+++ b/view_events.php
@@ -0,0 +1,8 @@
+setTemplateName('@Register/view-event-list.html');
+
+$page->printPage();
diff --git a/view_tc.php b/view_tc.php
index 6f111bb..ead72a2 100644
--- a/view_tc.php
+++ b/view_tc.php
@@ -7,7 +7,6 @@
$page->addJS('js/view_obj.js');
$page->body .= '
-
-
';
$page->printPage();
diff --git a/view_tcs.php b/view_tcs.php
new file mode 100644
index 0000000..6af7d73
--- /dev/null
+++ b/view_tcs.php
@@ -0,0 +1,10 @@
+content['endpoint'] = 'camps';
+$page->content['viewpage'] = 'view_tc.php';
+
+$page->printPage();