diff options
author | Kelly Rauchenberger <fefferburbia@gmail.com> | 2008-08-15 13:32:35 +0000 |
---|---|---|
committer | Kelly Rauchenberger <fefferburbia@gmail.com> | 2008-08-15 13:32:35 +0000 |
commit | 77bc692bb7694aa635be1ca3752894e976477ebb (patch) | |
tree | af4a392f30298339f511c60dcc4df8ce25941ec9 /central/trunk | |
parent | 68878a057b30f338eda7cacfe5f93cd850e8aaa1 (diff) | |
download | instadisc-77bc692bb7694aa635be1ca3752894e976477ebb.tar.gz instadisc-77bc692bb7694aa635be1ca3752894e976477ebb.tar.bz2 instadisc-77bc692bb7694aa635be1ca3752894e976477ebb.zip |
Central: Moved over to Four Island Templating system
Borrowed the Four Island templating system code so as to ease the creation of frontends. index.php and activate.php have already been converted, and install.php will not be converted (because it would be too difficult, and who would want to skin it anyway?) NOTICE: The Four Island Templating system source code is copyrighted by Starla Insigna (c) 2008. All rights reserved. Use of this code in part or in whole apart from the InstaDisc Central Server is a direct violation of copyright law. You have been warned. Refs #25
Diffstat (limited to 'central/trunk')
-rw-r--r-- | central/trunk/activate.php | 81 | ||||
-rw-r--r-- | central/trunk/index.php | 24 | ||||
-rw-r--r-- | central/trunk/template.php | 160 | ||||
-rw-r--r-- | central/trunk/theme/activate.tpl | 62 | ||||
-rw-r--r-- | central/trunk/theme/activated.tpl | 14 | ||||
-rw-r--r-- | central/trunk/theme/index.tpl | 19 |
6 files changed, 288 insertions, 72 deletions
diff --git a/central/trunk/activate.php b/central/trunk/activate.php index c8d4aa0..7b319b5 100644 --- a/central/trunk/activate.php +++ b/central/trunk/activate.php | |||
@@ -3,6 +3,7 @@ | |||
3 | /* InstaDisc Server - A Four Island Project */ | 3 | /* InstaDisc Server - A Four Island Project */ |
4 | 4 | ||
5 | include('instadisc.php'); | 5 | include('instadisc.php'); |
6 | include('template.php'); | ||
6 | 7 | ||
7 | if (!isset($_GET['submit'])) | 8 | if (!isset($_GET['submit'])) |
8 | { | 9 | { |
@@ -27,21 +28,9 @@ if (!isset($_GET['submit'])) | |||
27 | { | 28 | { |
28 | if (instaDisc_activateAccount($_POST['username'], $_POST['code'])) | 29 | if (instaDisc_activateAccount($_POST['username'], $_POST['code'])) |
29 | { | 30 | { |
30 | ?> | 31 | $template = new FITemplate('activated'); |
31 | <HTML> | 32 | $template->add('SITENAME', instaDisc_getConfig('siteName')); |
32 | <HEAD> | 33 | $template->display(); |
33 | <TITLE><?php echo(instaDisc_getConfig('siteName')); ?> InstaDisc Central Server</TITLE> | ||
34 | </HEAD> | ||
35 | <BODY> | ||
36 | <CENTER> | ||
37 | <H1>InstaDisc Activation</H1> | ||
38 | |||
39 | <P>Thank you for activating! You've now been signed up for the InstaDisc service. | ||
40 | You will recieve an email with the information to input into your InstaDisc client. | ||
41 | </CENTER> | ||
42 | </BODY> | ||
43 | </HTML> | ||
44 | <?php | ||
45 | } else { | 34 | } else { |
46 | addError($numOfErrors, $errors, '', 'The email could not be sent'); | 35 | addError($numOfErrors, $errors, '', 'The email could not be sent'); |
47 | showForm($_POST['username'], $_POST['code'], $errors); | 36 | showForm($_POST['username'], $_POST['code'], $errors); |
@@ -54,46 +43,30 @@ if (!isset($_GET['submit'])) | |||
54 | 43 | ||
55 | function showForm($username, $code, $errors) | 44 | function showForm($username, $code, $errors) |
56 | { | 45 | { |
57 | ?> | 46 | $template = new FITemplate('activate'); |
58 | <HTML> | 47 | $template->add('SITENAME', instaDisc_getConfig('siteName')); |
59 | <HEAD> | 48 | |
60 | <TITLE><?php echo(instaDisc_getConfig('siteName')); ?> InstaDisc Central Server</TITLE> | ||
61 | <LINK REL="stylesheet" TYPE="text/css" HREF="uniform.css"> | ||
62 | </HEAD> | ||
63 | <BODY> | ||
64 | <CENTER> | ||
65 | <H1>InstaDisc Activation</H1> | ||
66 | |||
67 | <P>If you've already registered and an activation email has been sent to your address, please fill in the form below. | ||
68 | </CENTER> | ||
69 | |||
70 | <FORM CLASS="uniform" ACTION="./activate.php?submit=" METHOD="POST"> | ||
71 | <?php | ||
72 | if (isset($errors[1])) | 49 | if (isset($errors[1])) |
73 | { | 50 | { |
74 | ?><DIV ID="errorMsg">Uh oh! Validation errors!<P> | 51 | $template->adds('ERROR', array('ex'=>'1')); |
75 | <OL><?php | 52 | |
76 | foreach ($errors as $name => $value) | 53 | foreach ($errors as $name => $value) |
77 | { | 54 | { |
78 | ?><LI><A HREF="#error<?php echo($name); ?>"><?php echo($value['msg']); ?></A></LI><?php | 55 | $template->adds('ERRORS', array( 'NAME' => $name, |
56 | 'MSG' => $value['msg'])); | ||
79 | } | 57 | } |
80 | ?></OL></DIV><?php | ||
81 | } | 58 | } |
82 | ?> | 59 | |
83 | <FIELDSET CLASS="inlineLabels"><LEGEND>User Details</LEGEND> | 60 | $template->add('USERNAME_ERR', ifErrors($errors, 'username')); |
84 | <DIV CLASS="ctrlHolder<?php ifErrors($errors, 'username'); ?>"> | 61 | $template->add('CODE_ERR', ifErrors($errors, 'code')); |
85 | <?php doErrors($errors, 'username'); ?> <LABEL FOR="username"><EM>*</EM> Username: </LABEL> | 62 | |
86 | <INPUT TYPE="text" ID="username" NAME="username" CLASS="textInput" VALUE="<?php echo($username); ?>"> | 63 | doErrors($template, $errors, 'username'); |
87 | </DIV> | 64 | doErrors($template, $errors, 'code'); |
88 | <DIV CLASS="ctrlHolder<?php ifErrors($errors, 'code'); ?>"> | 65 | |
89 | <?php doErrors($errors, 'code'); ?> <LABEL FOR="code"><EM>*</EM> Activation Code: </LABEL> | 66 | $template->add('USERNAME', $username); |
90 | <INPUT TYPE="text" ID="code" NAME="code" CLASS="textInput" VALUE="<?php echo($code); ?>"> | 67 | $template->add('CODE', $code); |
91 | </DIV> | 68 | |
92 | </FIELDSET> | 69 | $template->display(); |
93 | <DIV CLASS="buttonHolder"> | ||
94 | <INPUT TYPE="submit" NAME="submit" VALUE="Verify"> | ||
95 | <INPUT TYPE="submit" NAME="submit" VALUE="Delete"> | ||
96 | </DIV></FORM><?php | ||
97 | } | 70 | } |
98 | 71 | ||
99 | function ifErrors($errors, $id) | 72 | function ifErrors($errors, $id) |
@@ -102,19 +75,21 @@ function ifErrors($errors, $id) | |||
102 | { | 75 | { |
103 | if ($value['field'] == $id) | 76 | if ($value['field'] == $id) |
104 | { | 77 | { |
105 | echo(' error'); | 78 | return ' error'; |
106 | return; | ||
107 | } | 79 | } |
108 | } | 80 | } |
81 | |||
82 | return ''; | ||
109 | } | 83 | } |
110 | 84 | ||
111 | function doErrors($errors, $id) | 85 | function doErrors($template, $errors, $id) |
112 | { | 86 | { |
113 | foreach ($errors as $name => $value) | 87 | foreach ($errors as $name => $value) |
114 | { | 88 | { |
115 | if ($value['field'] == $id) | 89 | if ($value['field'] == $id) |
116 | { | 90 | { |
117 | ?> <P ID="error<?php echo($name); ?>" CLASS="errorField"><EM>*</EM> <?php echo($value['msg']); ?></P><?php echo("\n"); | 91 | $template->adds(strtoupper($id) . '_ERRS', array( 'NAME' => $name, |
92 | 'VALUE' => $value['msg'])); | ||
118 | } | 93 | } |
119 | } | 94 | } |
120 | } | 95 | } |
diff --git a/central/trunk/index.php b/central/trunk/index.php index ce71def..1ef9c9d 100644 --- a/central/trunk/index.php +++ b/central/trunk/index.php | |||
@@ -3,24 +3,10 @@ | |||
3 | /* InstaDisc Server - A Four Island Project */ | 3 | /* InstaDisc Server - A Four Island Project */ |
4 | 4 | ||
5 | include('instadisc.php'); | 5 | include('instadisc.php'); |
6 | include('template.php'); | ||
6 | 7 | ||
7 | ?> | 8 | $template = new FITemplate('index'); |
8 | <HTML> | 9 | $template->add('SITENAME', instaDisc_getConfig('siteName')); |
9 | <HEAD> | 10 | $template->display(); |
10 | <TITLE>Four Island InstaDisc Central Server</TITLE> | ||
11 | </HEAD> | ||
12 | <BODY> | ||
13 | <CENTER> | ||
14 | <H1><?php echo(instaDisc_getConfig('siteName')); ?> InstaDisc</H1> | ||
15 | 11 | ||
16 | <P>Welcome to <?php instaDisc_getConfig('siteName')); ?>'s InstaDisc Central Server! | 12 | ?> |
17 | <P>InstaDisc is a wonderful productivity-increasing notification program. For more information about the project itself, see | ||
18 | <A HREF="http://fourisland.com/projects/instadisc/">its project site</A>.<P>An InstaDisc "Central Server" is where you can | ||
19 | register for the InstaDisc service. There are many Central Servers around the world, you generally pick the one that is | ||
20 | closest to you. If you would like to choose <?php echo(instaDisc_getConfig('siteName')); ?>'s, why not register now? | ||
21 | <P><A HREF="register.php">Register</A> | ||
22 | <BR><A HREF="login.php">Login</A> | ||
23 | <BR><A HREF="activate.php">Activation page</A> | ||
24 | </CENTER> | ||
25 | </BODY> | ||
26 | </HTML> | ||
diff --git a/central/trunk/template.php b/central/trunk/template.php new file mode 100644 index 0000000..b4ec16b --- /dev/null +++ b/central/trunk/template.php | |||
@@ -0,0 +1,160 @@ | |||
1 | <?php | ||
2 | /* | ||
3 | 444444444 | ||
4 | 4::::::::4 | ||
5 | 4:::::::::4 | ||
6 | 4::::44::::4 | ||
7 | 4::::4 4::::4 Four Island | ||
8 | 4::::4 4::::4 | ||
9 | 4::::4 4::::4 Written and maintained by Starla Insigna | ||
10 | 4::::444444::::444 | ||
11 | 4::::::::::::::::4 includes/template.php | ||
12 | 4444444444:::::444 | ||
13 | 4::::4 Please do not use, reproduce or steal the | ||
14 | 4::::4 contents of this file without explicit | ||
15 | 4::::4 permission from Hatkirby. | ||
16 | 44::::::44 | ||
17 | 4::::::::4 | ||
18 | 4444444444 | ||
19 | */ | ||
20 | |||
21 | class FITemplate | ||
22 | { | ||
23 | |||
24 | var $file; | ||
25 | var $tags; | ||
26 | var $blocks; | ||
27 | var $refs; | ||
28 | |||
29 | function FITemplate($filename) | ||
30 | { | ||
31 | $tfn = 'theme/' . $filename . '.tpl'; | ||
32 | if (file_exists($tfn)) | ||
33 | { | ||
34 | $this->file = $tfn; | ||
35 | } else { | ||
36 | throw new Exception($tfn . ' does not exist'); | ||
37 | } | ||
38 | } | ||
39 | |||
40 | function add($name, $value) | ||
41 | { | ||
42 | $this->tags[$name] = $value; | ||
43 | } | ||
44 | |||
45 | function adds($tagarr) | ||
46 | { | ||
47 | foreach ($tagarr as $name => $value) | ||
48 | { | ||
49 | $this->add($name,$value); | ||
50 | } | ||
51 | } | ||
52 | |||
53 | function adds_block($block, $tagarr) | ||
54 | { | ||
55 | if (!isset($this->blocks[$block])) | ||
56 | { | ||
57 | $this->blocks[$block] = array('count' => 1); | ||
58 | } | ||
59 | foreach ($tagarr as $name => $value) | ||
60 | { | ||
61 | $this->blocks[$block][$this->blocks[$block]['count']][$name] = $value; | ||
62 | } | ||
63 | $this->blocks[$block]['count']++; | ||
64 | } | ||
65 | |||
66 | function add_ref($id, $block, $tagarr) | ||
67 | { | ||
68 | $this->adds_block($block,$tagarr); | ||
69 | $this->refs[$id] = &$this->blocks[$block][$this->blocks[$block]['count']-1];//'$this->blocks[\'' . $block . '\'][' . ($this->blocks[$block]['count']-1) . ']'; | ||
70 | } | ||
71 | |||
72 | function adds_ref($id, $tagarr) | ||
73 | { | ||
74 | foreach ($tagarr as $name => $value) | ||
75 | { | ||
76 | $this->refs[$id][$name] = $value; | ||
77 | } | ||
78 | } | ||
79 | |||
80 | function adds_ref_sub($id, $block, $tagarr) | ||
81 | { | ||
82 | if (!isset($this->refs[$id][$block])) | ||
83 | { | ||
84 | $this->refs[$id][$block] = array('count' => 1); | ||
85 | } | ||
86 | foreach ($tagarr as $name => $value) | ||
87 | { | ||
88 | $this->refs[$id][$block][$this->refs[$id][$block]['count']][$name] = $value; | ||
89 | } | ||
90 | $this->refs[$id][$block]['count']++; | ||
91 | } | ||
92 | |||
93 | function display() | ||
94 | { | ||
95 | $template = file_get_contents($this->file); | ||
96 | while (preg_match('/<!--INCLUDE ([^>]*)-->/',$template) == 1) | ||
97 | { | ||
98 | preg_match('/<!--INCLUDE ([^>]*)-->/',$template,$mat); | ||
99 | $fname = $mat[1]; | ||
100 | $itmp = new FITemplate($fname); | ||
101 | $template = str_replace('<!--INCLUDE ' . $fname . '-->',file_get_contents($itmp->file),$template); | ||
102 | } | ||
103 | if (isset($this->tags)) | ||
104 | { | ||
105 | foreach ($this->tags as $name => $value) | ||
106 | { | ||
107 | $template = str_replace('<!--' . $name . '-->',$value,$template); | ||
108 | } | ||
109 | } | ||
110 | if (isset($this->blocks)) | ||
111 | { | ||
112 | foreach ($this->blocks as $bname => $block) | ||
113 | { | ||
114 | $this->parseBlock($template, $bname, $block); | ||
115 | } | ||
116 | } | ||
117 | while (preg_match('/<!--BEGIN ([^>]*)-->/',$template) == 1) | ||
118 | { | ||
119 | preg_match('/<!--BEGIN ([^>]*)-->/',$template,$mat); | ||
120 | $bname = $mat[1]; | ||
121 | $start = strpos($template,'<!--BEGIN ' . $bname . '-->'); | ||
122 | $end = strpos($template,'<!--END ' . $bname . '-->'); | ||
123 | $template = str_replace(substr($template,$start,$end-$start+strlen($bname)+11),'',$template); | ||
124 | } | ||
125 | $template = preg_replace('/<!--([^>]*)-->/','',$template); | ||
126 | echo($template); | ||
127 | } | ||
128 | |||
129 | function parseBlock(&$template, $bname, $block) | ||
130 | { | ||
131 | while (strpos($template,'<!--BEGIN ' . $bname . '-->') !== FALSE) | ||
132 | { | ||
133 | $start = strpos($template,'<!--BEGIN ' . $bname . '-->'); | ||
134 | $end = strpos($template,'<!--END ' . $bname . '-->'); | ||
135 | $gencont = substr($template,$start+strlen($bname)+13,$end-$start-strlen($bname)-13); | ||
136 | $blockcont = ''; | ||
137 | foreach ($block as $lname => $blocktags) | ||
138 | { | ||
139 | if ($lname != 'count') | ||
140 | { | ||
141 | $scrcont = $gencont; | ||
142 | foreach ($blocktags as $name => $value) | ||
143 | { | ||
144 | if (!is_array($value)) | ||
145 | { | ||
146 | $scrcont = str_replace('<!--' . $bname . '.' . $name . '-->',$value,$scrcont); | ||
147 | } else { | ||
148 | $this->parseBlock($scrcont, $bname . '.' . $name, $value); | ||
149 | } | ||
150 | } | ||
151 | $blockcont .= $scrcont; | ||
152 | } | ||
153 | } | ||
154 | $template = str_replace(substr($template,$start,$end-$start+strlen($bname)+11),$blockcont,$template); | ||
155 | } | ||
156 | } | ||
157 | |||
158 | } | ||
159 | |||
160 | ?> | ||
diff --git a/central/trunk/theme/activate.tpl b/central/trunk/theme/activate.tpl new file mode 100644 index 0000000..caf8da6 --- /dev/null +++ b/central/trunk/theme/activate.tpl | |||
@@ -0,0 +1,62 @@ | |||
1 | <HTML> | ||
2 | <HEAD> | ||
3 | <TITLE><!--SITENAME--> InstaDisc Central Server</TITLE> | ||
4 | <LINK REL="stylesheet" TYPE="text/css" HREF="uniform.css"> | ||
5 | </HEAD> | ||
6 | |||
7 | <BODY> | ||
8 | <CENTER> | ||
9 | <H1>InstaDisc Activation</H1> | ||
10 | |||
11 | <P>If you've already registered and an activation email has been sent to your address, please fill in the form below. | ||
12 | </CENTER> | ||
13 | |||
14 | <FORM CLASS="uniform" ACTION="./activate.php?submit=" METHOD="POST"> | ||
15 | |||
16 | <!--BEGIN ERROR--> | ||
17 | <DIV ID="errorMsg">Uh oh! Validation errors!<P> | ||
18 | <OL> | ||
19 | <!--END ERROR--> | ||
20 | |||
21 | <!--BEGIN ERRORS--> | ||
22 | <LI><A HREF="#error<!--ERRORS.NAME-->"><!--ERRORS.MSG--></A></LI> | ||
23 | <!--END ERRORS--> | ||
24 | |||
25 | <!--BEGIN ERROR--> | ||
26 | </OL> | ||
27 | </DIV> | ||
28 | <!--END ERROR--> | ||
29 | |||
30 | <FIELDSET CLASS="inlineLabels"> | ||
31 | <LEGEND>User Details</LEGEND> | ||
32 | |||
33 | <DIV CLASS="ctrlHolder<!--USERNAME_ERR-->"> | ||
34 | <!--BEGIN USERNAME_ERRS--> | ||
35 | <P ID="error<!--USERNAME_ERRS.NAME-->" CLASS="errorField"><EM>*</EM> | ||
36 | <!--USERNAME_ERRS.MSG--> | ||
37 | </P> | ||
38 | <!--END USERNAME_ERRS--> | ||
39 | |||
40 | <LABEL FOR="username"><EM>*</EM> Username: </LABEL> | ||
41 | <INPUT TYPE="text" ID="username" NAME="username" CLASS="textInput" VALUE="<!--USERNAME-->"> | ||
42 | </DIV> | ||
43 | |||
44 | <DIV CLASS="ctrlHolder<!--CODE_ERR-->"> | ||
45 | <!--BEGIN CODE_ERRS--> | ||
46 | <P ID="error<!--CODE_ERRS.NAME-->" CLASS="errorField"><EM>*</EM> | ||
47 | <!--CODE_ERRS.MSG--> | ||
48 | </P> | ||
49 | <!--END CODE_ERRS--> | ||
50 | |||
51 | <LABEL FOR="code"><EM>*</EM> Activation Code: </LABEL> | ||
52 | <INPUT TYPE="text" ID="code" NAME="code" CLASS="textInput" VALUE="<!--CODE-->"> | ||
53 | </DIV> | ||
54 | </FIELDSET> | ||
55 | |||
56 | <DIV CLASS="buttonHolder"> | ||
57 | <INPUT TYPE="submit" NAME="submit" VALUE="Verify"> | ||
58 | <INPUT TYPE="submit" NAME="submit" VALUE="Delete"> | ||
59 | </DIV> | ||
60 | </FORM> | ||
61 | </BODY> | ||
62 | </HTML> | ||
diff --git a/central/trunk/theme/activated.tpl b/central/trunk/theme/activated.tpl new file mode 100644 index 0000000..43c716f --- /dev/null +++ b/central/trunk/theme/activated.tpl | |||
@@ -0,0 +1,14 @@ | |||
1 | <HTML> | ||
2 | <HEAD> | ||
3 | <TITLE><!--SITENAME--> InstaDisc Central Server</TITLE> | ||
4 | </HEAD> | ||
5 | <BODY> | ||
6 | <CENTER> | ||
7 | <H1>InstaDisc Activation</H1> | ||
8 | |||
9 | <P>Thank you for activating! You've now been signed up for the InstaDisc service. | ||
10 | You will recieve an email with the information to input into your InstaDisc client. | ||
11 | </CENTER> | ||
12 | </BODY> | ||
13 | </HTML> | ||
14 | |||
diff --git a/central/trunk/theme/index.tpl b/central/trunk/theme/index.tpl new file mode 100644 index 0000000..789928b --- /dev/null +++ b/central/trunk/theme/index.tpl | |||
@@ -0,0 +1,19 @@ | |||
1 | <HTML> | ||
2 | <HEAD> | ||
3 | <TITLE><!--SITENAME--> InstaDisc Central Server</TITLE> | ||
4 | </HEAD> | ||
5 | <BODY> | ||
6 | <CENTER> | ||
7 | <H1><!--SITENAME--> InstaDisc</H1> | ||
8 | |||
9 | <P>Welcome to <!--SITENAME-->'s InstaDisc Central Server! | ||
10 | <P>InstaDisc is a wonderful productivity-increasing notification program. For more information about the project itself, see | ||
11 | <A HREF="http://fourisland.com/projects/instadisc/">its project site</A>.<P>An InstaDisc "Central Server" is where you can | ||
12 | register for the InstaDisc service. There are many Central Servers around the world, you generally pick the one that is | ||
13 | closest to you. If you would like to choose <!--SITENAME-->'s, why not register now? | ||
14 | <P><A HREF="register.php">Register</A> | ||
15 | <BR><A HREF="login.php">Login</A> | ||
16 | <BR><A HREF="activate.php">Activation page</A> | ||
17 | </CENTER> | ||
18 | </BODY> | ||
19 | </HTML> | ||