Created
September 5, 2017 23:25
-
-
Save yevrah/532d9d29ba991fe1a07564ca8949185c to your computer and use it in GitHub Desktop.
Perl: App.pm Example
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env perl | |
# Sane defaults | |
require 5.004; | |
use strict 'vars'; | |
use warnings; | |
use diagnostics; | |
use CGI::Carp qw(fatalsToBrowser); | |
# Stadard libaries | |
use CGI; | |
use Data::Dumper; | |
# Setup local library path | |
use File::Basename; | |
use lib dirname( __FILE__ ) . '/lib/'; | |
use lib dirname( __FILE__ ) . '/lib/External/'; | |
## | |
## This file is by design verbose for the purpose of instruction, | |
## any line with double comments can be removed with the following command: | |
## | |
## grep -iv '##' my_verbose_file > my_terse_file | |
## | |
## Post Copy - Search and replace the string _crud_template with the new filename | |
## | |
## Viewing this file can be done at: http://www.yourcover.com.au/proClaim/_crud_template | |
## _ | |
## / \ _ __ _ __ | |
## / _ \ | '_ \| '_ \ | |
## / ___ \| |_) | |_) | | |
## /_/ \_\ .__/| .__/ | |
## |_| |_| | |
## | |
## The App object is the primary helper library providing a few helpful | |
## utilities. These Include | |
## | |
## $App::Stash - A very handy hash | |
## ==================================== | |
## | |
## By Default app stash will automatically initalised to certain submitted values | |
## | |
## Crud Helpers | Template Toolkit | Maps to | |
## -----------------------------+-----------------------------+---------------------------- | |
## $App::Stash->{ID} | [% App.ID %] | $cgi->param('id') | |
## $App::Stash->{Mode} | [% App.Mode %] | $cgi->param('mode') | |
## $App::Stash->{Action} | [% App.Action %] | $cgi->param('action') | |
## | |
## Params Helper | Template Toolkit | Maps To | |
## --------------------------------+--------------------------+---------------------------- | |
## App::Param('my_var') | [% App.Params.my_var %] | $cgi->param('my_var') | |
## | |
## Authentication Properties | Template Toolkit | Maps to DB | |
## -----------------------------+-----------------------------+----------------------------- | |
## Username | [% App.Username %] | users.user_user | |
## UserID | [% App.UserID %] | users.user_ID | |
## IsAdmin | [% App.IsAdmin %] | users.user_IsAppAdmin | |
## IsDev | [% App.IsDev %] | users.user_IsAppDeveloper | |
## IsAuthenticated | [% App.IsAuthenticated %] | 'yes', 'no' depending if logged in | |
## | |
## Add Custom Stash Values | |
## | |
## $App::Stash->{MyVar} = 'abc'; # Access from Template toolkit with [% MyVar %] | |
## | |
use App; | |
&main(); | |
# | |
# Main Entry Point | |
# | |
sub main { | |
# Main Controllers | |
&auth_check( $App::Stash ) | |
# Main DB Ops - Basic CRUD Ops | |
&db_delete( $App::Stash ); | |
&db_add( $App::Stash ); | |
&db_update( $App::Stash ); | |
&db_get_all( $App::Stash ); | |
&db_get( $App::Stash ); | |
# Render Page | |
&render( $App::Stash ); | |
&render_email( $App::Stash ) | |
} | |
# | |
# Primary Controllers | |
# | |
sub auth_check { | |
## Basic Check - Will spew out authentication request if not logged in without | |
## redirecting away from current page | |
App::RequiresAuth(); | |
## Feel free to add custom auth logic here | |
if( $App::Stash->{IsAdmin} eq 'yes' ) {} ## | |
if( $App::Stash->{IsDev} eq 'yes' ) {} ## | |
if( $App::Stash->{IsAuthenticated} eq 'yes' ) {} ## | |
if( $App::Stash->{UserID} eq '-1' ) {} ## | |
} | |
# | |
# Primary Data Queries | |
# | |
## | |
## _ ____ _ _ | |
## / \ _ __ _ __ _ _ | _ \ / \ | | | |
## / _ \ | '_ \| '_ \ (_) (_) | | | |/ _ \ | | | |
## / ___ \| |_) | |_) | _ _ | |_| / ___ \| |___ | |
## /_/ \_\ .__/| .__/ (_) (_) |____/_/ \_\_____| | |
## |_| |_| | |
## | |
## App::DAL - Easy Database Access, by example | |
## ============================================ | |
## | |
## App::DAL::empty() - When you expect no results | |
## App::DAL::empty('DELETE FROM Users WHERE user_ID = ?', $id); | |
## App::DAL::empty('INSERT INTO Users (user_username, user_password) VALUES (?, ?)', $user, $pass); | |
## | |
## App::DAL::single() - When one is enough | |
## my $cCount = App::DAL::single('SELECT COUNT(*) FROM Users WHERE user_ID < ?', 100); | |
## | |
## App::DAL::hash() - Only expect one row of data | |
## my $usr = App::DAL::hash('SELECT * FROM Users WHERE user_ID = ?', $id); | |
## print $usr->{user_email}; | |
## | |
## $App::Stash->{User} = $usr; | |
## # From template, [% User.user_email %] | |
## | |
## App::DAL::hashes() - When only many will do | |
## my $users = App::DAL::hashes('SELECT * FROM Users'); | |
## $App::Stash->{Users} = $users; | |
## | |
## # From template | |
## [% FOREACH user in Users %] | |
## Hello [% user.user_fullname %] | |
## [% END %] | |
sub db_get_all { | |
my $stash = shift; | |
my @data = App::DAL::hashes("SELECT * FROM Organisations ORDER BY org_name"); | |
$stash->{DefaultList} = \@data; | |
} | |
sub db_get { | |
my $stash = shift; | |
unless( $stash->{App}->{ID} ) { return; } | |
$stash->{Default} = App::DAL::hash("SELECT * FROM Organisations WHERE org_ID = ?", $stash->{App}->{ID} ); | |
}; | |
sub db_add { | |
my $stash = shift; | |
if( $stash->{App}->{ID} ) { return; } | |
unless( $stash->{App}->{Action} eq 'add' ) { return; } | |
$stash->{NewID} = App::DAL::empty(" | |
INSERT INTO Organisations ( | |
org_name , # 1 | |
org_abbrev , # 2 | |
org_address1 , # 3 | |
org_address2 , # 4 | |
org_state , # 5 | |
org_postcode , # 6 | |
org_country , # 7 | |
org_telephone , # 8 | |
org_fax , # 9 | |
org_contactName # 10 | |
) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) ", | |
App::Param('name') || '', | |
App::Param('abbreviation') || '', | |
App::Param('address01') || '', | |
App::Param('address02') || '', | |
App::Param('state') || '', | |
App::Param('postcode') || '', | |
App::Param('country') || '', | |
App::Param('telephone') || '', | |
App::Param('fax') || '', | |
App::Param('contactname') || '' | |
); | |
}; | |
sub db_update { | |
my $stash = shift; | |
unless( $stash->{App}->{ID} ) { return; } | |
unless( $stash->{App}->{Action} eq 'update' ) { return; } | |
( $stash->{NewID}, $stash->{RowsUpdated} ) = App::DAL::empty(" | |
UPDATE Organisations | |
SET org_name = ?, # 1 | |
org_abbrev = ?, # 2 | |
org_address1 = ?, # 3 | |
org_address2 = ?, # 4 | |
org_state = ?, # 5 | |
org_postcode = ?, # 6 | |
org_country = ?, # 7 | |
org_telephone = ?, # 8 | |
org_fax = ?, # 9 | |
org_contactName = ? # 10 | |
WHERE org_ID = ? ", | |
App::Param('name') || '', | |
App::Param('abbreviation') || '', | |
App::Param('address01') || '', | |
App::Param('address02') || '', | |
App::Param('state') || '', | |
App::Param('postcode') || '', | |
App::Param('country') || '', | |
App::Param('telephone') || '', | |
App::Param('fax') || '', | |
App::Param('contactname') || '', | |
$stash->{App}->{ID} | |
); | |
}; | |
sub db_delete { | |
my $stash = shift; | |
unless( $stash->{App}->{Action} eq 'delete' ) { return; } | |
App::DAL::empty("DELETE FROM Organisations WHERE org_ID = ?", $stash->{App}->{ID}); | |
# Remember to remoce this item from the stash | |
$stash->{App}->{ID} = ""; | |
}; | |
# | |
# Render Methods | |
# | |
## _ ____ _ | |
## / \ _ __ _ __ _ _ | _ \ ___ _ __ __| | ___ _ __ | |
## / _ \ | '_ \| '_ \ (_) (_) | |_) / _ \ '_ \ / _` |/ _ \ '__| | |
## / ___ \| |_) | |_) | _ _ | _ < __/ | | | (_| | __/ | | |
## /_/ \_\ .__/| .__/ (_) (_) |_| \_\___|_| |_|\__,_|\___|_| | |
## |_| |_| | |
## | |
## Render to the browser, email, or json | |
## ===================================== | |
## App::RenderPage() - Spit out to the browser | |
## App::RenderPage(*DATA); # Render html below the __DATA__ section using $App::Stash | |
## App::RenderPage('my_template.tt') # Render from file | |
## App::RenderPage('Hello [% name %]', {name=>'John'}); # Render from string | |
## | |
## App::RenderEmail() - Render and send an email | |
## App::RenderEmail(to=>'[email protected]', template=>'my_templte.tt') | |
## App::RenderEmail( | |
## to => qw( [email protected] [email protected] [email protected] ) , | |
## cc => qw( [email protected] [email protected]) , | |
## bcc => qw( [email protected] [email protected] ) , | |
## from => '[email protected]' , | |
## subject => 'Here you go..' , | |
## attachments => qw( file01.xls file02.csv ) , | |
## | |
## template => 'email.tt' , | |
## stash => {data=>'123'} , | |
## | |
## ) | |
## | |
## App::RenderRedirect() - Just render redirect headers and exit | |
## App::RenderRedirect('/proClaim/claimClaimant?id=10'): | |
## | |
## App::Render() - Just give me the string, dont send anywhere | |
## App::Render('template.tt'); | |
sub render { | |
my $stash = shift; | |
my $template = *DATA; | |
#if( $stash->{App}->{Action} eq 'sign_in' ) { $template=''; } | |
App::RenderPage($template); | |
} | |
sub render_email { | |
# TODO: Flesh This Out | |
} | |
__DATA__ | |
[% WRAPPER layout_default.tt | |
title='Home' | |
breadcrumb='_crud_template' | |
%] | |
<div class="row"> | |
<article class="col-sm-12 col-md-12 col-lg-12"> | |
<!-- Datatable --> | |
<section id="widget-grid" class=""> | |
<div class="row"> | |
<article class="col-xs-12 col-sm-12 col-md-12 col-lg-12"> | |
<div class="jarviswidget jarviswidget-color-darken jarviswidget-sortable" id="wid-id-organisations" | |
data-widget-deletebutton="false" | |
data-widget-editbutton="false" | |
data-widget-colorbutton="false" | |
> | |
<!-- Additional properties | |
data-widget-collapsed="false" | |
data-widget-editbutton="false" | |
data-widget-togglebutton="true" | |
data-widget-fullscreenbutton="false" | |
data-widget-custombutton="false" | |
data-widget-sortable="false" | |
--> | |
<header> | |
<span class="widget-icon"> <i class="fa fa-table"></i> </span> | |
<h2>_crud_template</h2> | |
</header> | |
<!-- widget div--> | |
<div> | |
<!-- widget edit box --> | |
<div class="jarviswidget-editbox"> | |
<!-- This area used as dropdown edit box --> | |
</div> | |
<!-- end widget edit box --> | |
<!-- widget content --> | |
<div class="widget-body"> | |
<div class="table-responsive"> | |
<table iq-datatable id="datatable_tabletools" class="table table-striped table-bordered table-hover render_me_as_datatable" width="100%"> | |
<thead> | |
<tr role="row"> | |
<th data-hide="phone" class="sorting_asc" tabindex="0" aria-controls="datatable_tabletools" rowspan="1" colspan="1" aria-sort="ascending" aria-label="ID: activate to sort column ascending" style="width: 17px;">ID</th> | |
<th data-class="expand" class="sorting" tabindex="0" aria-controls="datatable_tabletools" rowspan="1" colspan="1" aria-label="Name: activate to sort column ascending" style="width: 57px;">Name</th> | |
<th class="sorting" tabindex="0" aria-controls="datatable_tabletools" rowspan="1" colspan="1" aria-label="Phone: activate to sort column ascending" style="width: 91px;">Abbreviation</th> | |
<th data-hide="phone" class="sorting" tabindex="0" aria-controls="datatable_tabletools" rowspan="1" colspan="1" aria-label="Company: activate to sort column ascending" style="width: 255px;">State</th> | |
<th data-hide="phone,tablet" class="sorting" tabindex="0" aria-controls="datatable_tabletools" rowspan="1" colspan="1" aria-label="Zip: activate to sort column ascending" style="width: 60px;">Country</th> | |
<th data-hide="phone,tablet" class="sorting" tabindex="0" aria-controls="datatable_tabletools" rowspan="1" colspan="1" aria-label="City: activate to sort column ascending" style="width: 50px;">Name</th> | |
<th data-hide="phone,tablet" class="sorting" tabindex="0" aria-controls="datatable_tabletools" rowspan="1" colspan="1" aria-label="Date: activate to sort column ascending" style="width: 50px;"> </th> | |
</tr> | |
</thead> | |
<tbody> | |
[% FOREACH item IN DefaultList %] | |
<tr role="row" class="odd"> | |
<td class="sorting_1">[% item.org_ID %]</td> | |
<td>[% item.org_name %]</td> | |
<td>[% item.org_abbrev %]</td> | |
<td>[% item.org_state %]</td> | |
<td>[% item.org_country %]</td> | |
<td>[% item.org_contactName %]</td> | |
<td> | |
<a href="/proClaim/organisations?id=[% item.org_ID %]"> <i class="fa fa-edit"></i> Edit </a> | |
</td> | |
</tr> | |
[% END %] | |
</tbody> | |
</table> | |
</div> | |
<!-- end widget content --> | |
</div> | |
<!-- end widget div --> | |
</div> | |
</article> | |
</div> | |
<!-- Full Form Example --> | |
<div class="row"> | |
<article class="col-sm-12 col-md-12 col-lg-12"> | |
<div class="jarviswidget" id="wid-id-1" data-widget-colorbutton="false" data-widget-editbutton="false" data-widget-custombutton="false" data-widget-deletebutton="false"> | |
<header> | |
<span class="widget-icon"> <i class="fa fa-edit"></i> </span> | |
<h2>[% IF App.ID %] Edit [% ELSE %] Add [% END %] Organisation</h2> | |
</header> | |
<div> | |
<div class="widget-body no-padding"> | |
<form class="smart-form" action="/proClaim/organisations" method="POST"> | |
<input type="hidden" name="id" value="[% App.ID %]"/> | |
[% IF App.ID %] | |
<input type="hidden" name="action" value="update"> | |
[% ELSE %] | |
<input type="hidden" name="action" value="add"> | |
[% END %] | |
<fieldset> | |
<legend>Organisation Details</legend> | |
<section> | |
<label class="label">Organisation Name</label> | |
<span class="input"> | |
<input type="text" name="name" id="inputName" class="form-control" value="[% Default.org_name %]" required="required" pattern="" title="Name"> | |
</span> | |
<section> | |
<label class="label">Abbreviation</label> | |
<label class="input"> | |
<input type="text" class="gc" name="abbreviation" value="[% Default.org_abbrev %]"> | |
</label> | |
</section> | |
<section> | |
<label class="label">Contact name</label> | |
<label class="input"> | |
<input type="text" class="input-sm" name="contactname" value="[% Default.org_contactName %]"> | |
</label> | |
</section> | |
</fieldset> | |
<fieldset> | |
<legend>Address</legend> | |
<section> | |
<label class="label">Address Line 1</label> | |
<label class="input"> | |
<input type="text" class="gc" name="address01" value="[% Default.org_address1 %]"> | |
</label> | |
</section> | |
<section> | |
<label class="label">Address Line 2</label> | |
<label class="input"> | |
<input type="text" class="gc" name="address02" value="[% Default.org_address2 %]"> | |
</label> | |
</section> | |
<div class="row"> | |
<section class="col col-5"> | |
<label class="label">State</label> | |
<label class="input"> | |
<input type="text" list="list" name="state" value="[% Default.org_state %]"> | |
<datalist id="list"> | |
<option value="ACT">Australian Capital Territory</option> | |
<option value="NSW">New South Wales</option> | |
<option value="NT ">Northern Territory</option> | |
<option value="QLD">Queensland</option> | |
<option value="SA ">South Australia</option> | |
<option value="TAS">Tasmania</option> | |
<option value="VIC">Victoria</option> | |
<option value="WA ">Western Australia</option> | |
<option value="NFK">Norfolk Island</option> | |
<option value="HRD">Heard and McDonald Islands</option> | |
<option value="N/A">Offshore</option> | |
</datalist> </label> | |
</section> | |
<section class="col col-5"> | |
<label class="label">Country</label> | |
<label class="input"> | |
<input type="text" list="list" name="country" value="[% Default.org_country || 'Australia' %]"> | |
<datalist id="list"> | |
<option value="United States">United States</option> | |
<option value="United Kingdom">United Kingdom</option> | |
<option value="Afghanistan">Afghanistan</option> | |
<option value="Albania">Albania</option> | |
<option value="Algeria">Algeria</option> | |
<option value="American Samoa">American Samoa</option> | |
<option value="Andorra">Andorra</option> | |
<option value="Angola">Angola</option> | |
<option value="Anguilla">Anguilla</option> | |
<option value="Antarctica">Antarctica</option> | |
<option value="Antigua and Barbuda">Antigua and Barbuda</option> | |
<option value="Argentina">Argentina</option> | |
<option value="Armenia">Armenia</option> | |
<option value="Aruba">Aruba</option> | |
<option value="Australia">Australia</option> | |
<option value="Austria">Austria</option> | |
<option value="Azerbaijan">Azerbaijan</option> | |
<option value="Bahamas">Bahamas</option> | |
<option value="Bahrain">Bahrain</option> | |
<option value="Bangladesh">Bangladesh</option> | |
<option value="Barbados">Barbados</option> | |
<option value="Belarus">Belarus</option> | |
<option value="Belgium">Belgium</option> | |
<option value="Belize">Belize</option> | |
<option value="Benin">Benin</option> | |
<option value="Bermuda">Bermuda</option> | |
<option value="Bhutan">Bhutan</option> | |
<option value="Bolivia">Bolivia</option> | |
<option value="Bosnia and Herzegovina">Bosnia and Herzegovina</option> | |
<option value="Botswana">Botswana</option> | |
<option value="Bouvet Island">Bouvet Island</option> | |
<option value="Brazil">Brazil</option> | |
<option value="British Indian Ocean Territory">British Indian Ocean Territory</option> | |
<option value="Brunei Darussalam">Brunei Darussalam</option> | |
<option value="Bulgaria">Bulgaria</option> | |
<option value="Burkina Faso">Burkina Faso</option> | |
<option value="Burundi">Burundi</option> | |
<option value="Cambodia">Cambodia</option> | |
<option value="Cameroon">Cameroon</option> | |
<option value="Canada">Canada</option> | |
<option value="Cape Verde">Cape Verde</option> | |
<option value="Cayman Islands">Cayman Islands</option> | |
<option value="Central African Republic">Central African Republic</option> | |
<option value="Chad">Chad</option> | |
<option value="Chile">Chile</option> | |
<option value="China">China</option> | |
<option value="Christmas Island">Christmas Island</option> | |
<option value="Cocos (Keeling) Islands">Cocos (Keeling) Islands</option> | |
<option value="Colombia">Colombia</option> | |
<option value="Comoros">Comoros</option> | |
<option value="Congo">Congo</option> | |
<option value="Congo, The Democratic Republic of The">Congo, The Democratic Republic of The</option> | |
<option value="Cook Islands">Cook Islands</option> | |
<option value="Costa Rica">Costa Rica</option> | |
<option value="Cote D'ivoire">Cote D'ivoire</option> | |
<option value="Croatia">Croatia</option> | |
<option value="Cuba">Cuba</option> | |
<option value="Cyprus">Cyprus</option> | |
<option value="Czech Republic">Czech Republic</option> | |
<option value="Denmark">Denmark</option> | |
<option value="Djibouti">Djibouti</option> | |
<option value="Dominica">Dominica</option> | |
<option value="Dominican Republic">Dominican Republic</option> | |
<option value="Ecuador">Ecuador</option> | |
<option value="Egypt">Egypt</option> | |
<option value="El Salvador">El Salvador</option> | |
<option value="Equatorial Guinea">Equatorial Guinea</option> | |
<option value="Eritrea">Eritrea</option> | |
<option value="Estonia">Estonia</option> | |
<option value="Ethiopia">Ethiopia</option> | |
<option value="Falkland Islands (Malvinas)">Falkland Islands (Malvinas)</option> | |
<option value="Faroe Islands">Faroe Islands</option> | |
<option value="Fiji">Fiji</option> | |
<option value="Finland">Finland</option> | |
<option value="France">France</option> | |
<option value="French Guiana">French Guiana</option> | |
<option value="French Polynesia">French Polynesia</option> | |
<option value="French Southern Territories">French Southern Territories</option> | |
<option value="Gabon">Gabon</option> | |
<option value="Gambia">Gambia</option> | |
<option value="Georgia">Georgia</option> | |
<option value="Germany">Germany</option> | |
<option value="Ghana">Ghana</option> | |
<option value="Gibraltar">Gibraltar</option> | |
<option value="Greece">Greece</option> | |
<option value="Greenland">Greenland</option> | |
<option value="Grenada">Grenada</option> | |
<option value="Guadeloupe">Guadeloupe</option> | |
<option value="Guam">Guam</option> | |
<option value="Guatemala">Guatemala</option> | |
<option value="Guinea">Guinea</option> | |
<option value="Guinea-bissau">Guinea-bissau</option> | |
<option value="Guyana">Guyana</option> | |
<option value="Haiti">Haiti</option> | |
<option value="Heard Island and Mcdonald Islands">Heard Island and Mcdonald Islands</option> | |
<option value="Holy See (Vatican City State)">Holy See (Vatican City State)</option> | |
<option value="Honduras">Honduras</option> | |
<option value="Hong Kong">Hong Kong</option> | |
<option value="Hungary">Hungary</option> | |
<option value="Iceland">Iceland</option> | |
<option value="India">India</option> | |
<option value="Indonesia">Indonesia</option> | |
<option value="Iran, Islamic Republic of">Iran, Islamic Republic of</option> | |
<option value="Iraq">Iraq</option> | |
<option value="Ireland">Ireland</option> | |
<option value="Israel">Israel</option> | |
<option value="Italy">Italy</option> | |
<option value="Jamaica">Jamaica</option> | |
<option value="Japan">Japan</option> | |
<option value="Jordan">Jordan</option> | |
<option value="Kazakhstan">Kazakhstan</option> | |
<option value="Kenya">Kenya</option> | |
<option value="Kiribati">Kiribati</option> | |
<option value="Korea, Democratic People's Republic of">Korea, Democratic People's Republic of</option> | |
<option value="Korea, Republic of">Korea, Republic of</option> | |
<option value="Kuwait">Kuwait</option> | |
<option value="Kyrgyzstan">Kyrgyzstan</option> | |
<option value="Lao People's Democratic Republic">Lao People's Democratic Republic</option> | |
<option value="Latvia">Latvia</option> | |
<option value="Lebanon">Lebanon</option> | |
<option value="Lesotho">Lesotho</option> | |
<option value="Liberia">Liberia</option> | |
<option value="Libyan Arab Jamahiriya">Libyan Arab Jamahiriya</option> | |
<option value="Liechtenstein">Liechtenstein</option> | |
<option value="Lithuania">Lithuania</option> | |
<option value="Luxembourg">Luxembourg</option> | |
<option value="Macao">Macao</option> | |
<option value="Macedonia, The Former Yugoslav Republic of">Macedonia, The Former Yugoslav Republic of</option> | |
<option value="Madagascar">Madagascar</option> | |
<option value="Malawi">Malawi</option> | |
<option value="Malaysia">Malaysia</option> | |
<option value="Maldives">Maldives</option> | |
<option value="Mali">Mali</option> | |
<option value="Malta">Malta</option> | |
<option value="Marshall Islands">Marshall Islands</option> | |
<option value="Martinique">Martinique</option> | |
<option value="Mauritania">Mauritania</option> | |
<option value="Mauritius">Mauritius</option> | |
<option value="Mayotte">Mayotte</option> | |
<option value="Mexico">Mexico</option> | |
<option value="Micronesia, Federated States of">Micronesia, Federated States of</option> | |
<option value="Moldova, Republic of">Moldova, Republic of</option> | |
<option value="Monaco">Monaco</option> | |
<option value="Mongolia">Mongolia</option> | |
<option value="Montserrat">Montserrat</option> | |
<option value="Morocco">Morocco</option> | |
<option value="Mozambique">Mozambique</option> | |
<option value="Myanmar">Myanmar</option> | |
<option value="Namibia">Namibia</option> | |
<option value="Nauru">Nauru</option> | |
<option value="Nepal">Nepal</option> | |
<option value="Netherlands">Netherlands</option> | |
<option value="Netherlands Antilles">Netherlands Antilles</option> | |
<option value="New Caledonia">New Caledonia</option> | |
<option value="New Zealand">New Zealand</option> | |
<option value="Nicaragua">Nicaragua</option> | |
<option value="Niger">Niger</option> | |
<option value="Nigeria">Nigeria</option> | |
<option value="Niue">Niue</option> | |
<option value="Norfolk Island">Norfolk Island</option> | |
<option value="Northern Mariana Islands">Northern Mariana Islands</option> | |
<option value="Norway">Norway</option> | |
<option value="Oman">Oman</option> | |
<option value="Pakistan">Pakistan</option> | |
<option value="Palau">Palau</option> | |
<option value="Palestinian Territory, Occupied">Palestinian Territory, Occupied</option> | |
<option value="Panama">Panama</option> | |
<option value="Papua New Guinea">Papua New Guinea</option> | |
<option value="Paraguay">Paraguay</option> | |
<option value="Peru">Peru</option> | |
<option value="Philippines">Philippines</option> | |
<option value="Pitcairn">Pitcairn</option> | |
<option value="Poland">Poland</option> | |
<option value="Portugal">Portugal</option> | |
<option value="Puerto Rico">Puerto Rico</option> | |
<option value="Qatar">Qatar</option> | |
<option value="Reunion">Reunion</option> | |
<option value="Romania">Romania</option> | |
<option value="Russian Federation">Russian Federation</option> | |
<option value="Rwanda">Rwanda</option> | |
<option value="Saint Helena">Saint Helena</option> | |
<option value="Saint Kitts and Nevis">Saint Kitts and Nevis</option> | |
<option value="Saint Lucia">Saint Lucia</option> | |
<option value="Saint Pierre and Miquelon">Saint Pierre and Miquelon</option> | |
<option value="Saint Vincent and The Grenadines">Saint Vincent and The Grenadines</option> | |
<option value="Samoa">Samoa</option> | |
<option value="San Marino">San Marino</option> | |
<option value="Sao Tome and Principe">Sao Tome and Principe</option> | |
<option value="Saudi Arabia">Saudi Arabia</option> | |
<option value="Senegal">Senegal</option> | |
<option value="Serbia and Montenegro">Serbia and Montenegro</option> | |
<option value="Seychelles">Seychelles</option> | |
<option value="Sierra Leone">Sierra Leone</option> | |
<option value="Singapore">Singapore</option> | |
<option value="Slovakia">Slovakia</option> | |
<option value="Slovenia">Slovenia</option> | |
<option value="Solomon Islands">Solomon Islands</option> | |
<option value="Somalia">Somalia</option> | |
<option value="South Africa">South Africa</option> | |
<option value="South Georgia and The South Sandwich Islands">South Georgia and The South Sandwich Islands</option> | |
<option value="Spain">Spain</option> | |
<option value="Sri Lanka">Sri Lanka</option> | |
<option value="Sudan">Sudan</option> | |
<option value="Suriname">Suriname</option> | |
<option value="Svalbard and Jan Mayen">Svalbard and Jan Mayen</option> | |
<option value="Swaziland">Swaziland</option> | |
<option value="Sweden">Sweden</option> | |
<option value="Switzerland">Switzerland</option> | |
<option value="Syrian Arab Republic">Syrian Arab Republic</option> | |
<option value="Taiwan, Province of China">Taiwan, Province of China</option> | |
<option value="Tajikistan">Tajikistan</option> | |
<option value="Tanzania, United Republic of">Tanzania, United Republic of</option> | |
<option value="Thailand">Thailand</option> | |
<option value="Timor-leste">Timor-leste</option> | |
<option value="Togo">Togo</option> | |
<option value="Tokelau">Tokelau</option> | |
<option value="Tonga">Tonga</option> | |
<option value="Trinidad and Tobago">Trinidad and Tobago</option> | |
<option value="Tunisia">Tunisia</option> | |
<option value="Turkey">Turkey</option> | |
<option value="Turkmenistan">Turkmenistan</option> | |
<option value="Turks and Caicos Islands">Turks and Caicos Islands</option> | |
<option value="Tuvalu">Tuvalu</option> | |
<option value="Uganda">Uganda</option> | |
<option value="Ukraine">Ukraine</option> | |
<option value="United Arab Emirates">United Arab Emirates</option> | |
<option value="United Kingdom">United Kingdom</option> | |
<option value="United States">United States</option> | |
<option value="United States Minor Outlying Islands">United States Minor Outlying Islands</option> | |
<option value="Uruguay">Uruguay</option> | |
<option value="Uzbekistan">Uzbekistan</option> | |
<option value="Vanuatu">Vanuatu</option> | |
<option value="Venezuela">Venezuela</option> | |
<option value="Viet Nam">Viet Nam</option> | |
<option value="Virgin Islands, British">Virgin Islands, British</option> | |
<option value="Virgin Islands, U.S.">Virgin Islands, U.S.</option> | |
<option value="Wallis and Futuna">Wallis and Futuna</option> | |
<option value="Western Sahara">Western Sahara</option> | |
<option value="Yemen">Yemen</option> | |
<option value="Zambia">Zambia</option> | |
<option value="Zimbabwe">Zimbabwe</option> | |
</datalist> </label> | |
</section> | |
<section class="col col-2"> | |
<label class="label">Postcode</label> | |
<label class="input"> | |
<input type="text" class="input-sm" name="postcode" value="[% Default.org_postcode %]"> | |
</label> | |
</section> | |
</div> | |
</fieldset> | |
<fieldset> | |
<legend>Phone</legend> | |
<div class="row"> | |
<section class="col col-6"> | |
<label class="label">Phone</label> | |
<label class="input"> | |
<input type="text" class="input-sm" name="phone" value="[% Default.org_telephone %]"> | |
</label> | |
</section> | |
<section class="col col-6"> | |
<label class="label">Fax</label> | |
<label class="input"> | |
<input type="text" class="input-sm" name="fax" value="[% Default.org_fax %]"> | |
</label> | |
</section> | |
</div> | |
</fieldset> | |
<footer> | |
<button type="submit" class="btn btn-primary"> | |
Submit | |
</button> | |
<a href="/proClaim/organisations" class="btn btn-default"> Cancel </a> | |
[% IF App.ID %]<a href="/proClaim/organisations?id=[% App.ID %]&action=delete" class="btn btn-warning pull-left" onclick="return confirm('Are you sure want to delete?')"> Delete </a>[% END %] | |
</footer> | |
</form> | |
</div> | |
</div> | |
</div> | |
</article> | |
</div> | |
[% | |
# END WRAPPER layout.tt | |
END | |
%] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment