JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
metaform: php refactor, opt_public_*
authorJason Woofenden <jason@jasonwoof.com>
Mon, 18 Apr 2011 08:30:30 +0000 (04:30 -0400)
committerJason Woofenden <jason@jasonwoof.com>
Mon, 18 Apr 2011 08:30:30 +0000 (04:30 -0400)
metaform.php
metaform/main.html
metaform/preview.html
metaform/template.html
metaform/template.php

index cee8033..6ad925c 100644 (file)
@@ -70,6 +70,7 @@ function list_available_types() {
 function tem_set_globals(&$tem) {
        $vars = array(
                'file_name',
+               'public_file_name',
                'table_name',
                'plural',
                'singular');
@@ -84,7 +85,8 @@ function tem_set_globals(&$tem) {
                'opt_display',
                'opt_pass',
                'opt_public_form',
-               'opt_public_display');
+               'opt_public_display',
+               'opt_public_something');
        foreach($bools as $bool) {
                if($GLOBALS[$bool]) {
                        $tem->set($bool);
@@ -111,6 +113,12 @@ function metaform() {
                $GLOBALS['opt_public_form'] = format_bool($_REQUEST['opt_public_form']);
                $GLOBALS['opt_public_display'] = format_bool($_REQUEST['opt_public_display']);
 
+               $GLOBALS['public_file_name'] = $GLOBALS['file_name'];
+               if($GLOBALS['opt_public_form'] || $GLOBALS['opt_public_display']) {
+                       $GLOBALS['opt_public_something'] = 1;
+                       $GLOBALS['file_name'] = $GLOBALS['file_name'] . _admin;
+               }
+
                tem_init();
                tem_set_globals($GLOBALS['wfpl_template']);
        }
@@ -537,22 +545,27 @@ function preview() {
 }
 
 function download_tar() {
-       $name = $GLOBALS['file_name'];
-       $data = array(
+       $admin_name = $GLOBALS['file_name'];
+       $nice_name = $GLOBALS['public_file_name'];
+       $files = array(
                "INSTALL" => read_whole_file('code/wfpl/metaform/INSTALL'),
                ".htaccess" => make_htaccess(),
-               #"run.php ->" => 'code/wfpl/run.php',
+               "run.php ->" => 'code/wfpl/run.php',
                "style.less" => read_whole_file('code/wfpl/metaform/style.less'),
                "template.html" => read_whole_file('code/wfpl/metaform/site-template.html'),
-               "$name.html" => make_html(),
-               "$name.php" => make_php());
+               "$admin_name.html" => make_html(),
+               "$admin_name.php" => make_php());
+       if($GLOBALS['opt_public_something']) {
+               $files["$nice_name.html ->"] = "$admin_name.html";
+               $files["$nice_name.php ->"] = "$admin_name.php";
+       }
        if($GLOBALS['opt_db']) {
-               $data["$name.sql"] = make_sql();
+               $files["$nice_name.sql"] = make_sql();
        }
        if($GLOBALS['opt_email']) {
-               $data["$name.email.txt"] = make_email();
+               $files["$nice_name.email.txt"] = make_email();
        }
-       make_tar($name, $data);
+       make_tar($nice_name, $files);
 }
 
 
index f168fc5..ef68b63 100644 (file)
@@ -11,7 +11,7 @@
   <form action="~metaform_name~" method="get">
     <p>The form name should not contain any capitals or symbols (besides underscore)</p>
 
-    <p>File name: <input type="text" name="file_name" value="~file_name attr~" autofocus>.html</p>
+    <p>File name: <input type="text" name="file_name" value="~public_file_name attr~" autofocus>.html</p>
 
     <p>DB table: <input type="text" name="table_name" value="~table_name attr~"></p>
 
@@ -31,8 +31,8 @@
     <p><input type="checkbox" name="opt_display~opt_display checked~" value="Yes"> Provide a "Display" page.</p>
 
     <p><input type="checkbox" name="opt_pass~opt_pass checked~" value="Yes"> Password protect this form.<br>
-       &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="checkbox" name="opt_public_form~opt_public_form checked~" value="Yes"> But with publically accessible entry form<br>
-       &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="checkbox" name="opt_public_display~opt_public_display checked~" value="Yes"> But with publically accessible view page.</p>
+       &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="checkbox" name="opt_public_form~opt_public_form checked~" value="Yes"> But with publicly accessible submission form<br>
+       &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="checkbox" name="opt_public_display~opt_public_display checked~" value="Yes"> But with publicly accessible view page.</p>
 
        <p>Below, specify the fields you'd like in your form, one field per line. After each field name, put at least one space, then the field type. The following field types are available: <!--~types {~--><!--~types_sep {~-->, <!--~}~-->~type html~<!--~}~-->.</p>
 
index 09e0c4e..5e1d237 100644 (file)
   <h1 class="first">PREVIEW</h1>
 ~preview~
   </div>
-    <p><form action="~file_name~.tgz" method="get">~hiddens~<input type="submit" name="download_tar" value="Download tarball"></form></p>
+    <p><form action="~public_file_name~.tgz" method="get">~hiddens~<input type="submit" name="download_tar" value="Download tarball"></form></p>
 
   <form action="~metaform_name~" method="get">
-    <p><!--~hiddens {~--><input type="hidden" name="file_name" value="~file_name attr~"><input type="hidden" name="table_name" value="~table_name attr~"><input type="hidden" name="singular" value="~singular attr~"><input type="hidden" name="plural" value="~plural attr~"><input type="hidden" name="opt_email" value="~opt_email yesno~"><input type="hidden" name="opt_db" value="~opt_db yesno~"><input type="hidden" name="opt_listing" value="~opt_listing yesno~"><input type="hidden" name="opt_display" value="~opt_display yesno~"><input type="hidden" name="opt_pass" value="~opt_pass yesno~"><input type="hidden" name="opt_public_form" value="~opt_public_form yesno~"><input type="hidden" name="opt_public_display" value="~opt_public_display yesno~"><input type="hidden" name="fields" value="~fields attr~"><!--~}~--><input type="submit" name="edit" value="Back to editing"></p>
+    <p><!--~hiddens {~--><input type="hidden" name="file_name" value="~public_file_name attr~"><input type="hidden" name="table_name" value="~table_name attr~"><input type="hidden" name="singular" value="~singular attr~"><input type="hidden" name="plural" value="~plural attr~"><input type="hidden" name="opt_email" value="~opt_email yesno~"><input type="hidden" name="opt_db" value="~opt_db yesno~"><input type="hidden" name="opt_listing" value="~opt_listing yesno~"><input type="hidden" name="opt_display" value="~opt_display yesno~"><input type="hidden" name="opt_pass" value="~opt_pass yesno~"><input type="hidden" name="opt_public_form" value="~opt_public_form yesno~"><input type="hidden" name="opt_public_display" value="~opt_public_display yesno~"><input type="hidden" name="fields" value="~fields attr~"><!--~}~--><input type="submit" name="edit" value="Back to editing"></p>
 
     <p><input type="submit" name="view_sql" value="View SQL"></p>
 
index 33ea178..8827bfe 100644 (file)
 <body>
 <!--~~main_body show {~~--><!--~opt_display {~-->
        <!--~~display {~~-->
-               <h2>~singular cap~ details</h2><!--~opt_listing {~-->
+               <h2>~singular cap~ details</h2>
 
-               <p><a href="~file_name~?~file_name~_new=1">Add another ~singular attr~</a></p>
+               <!--~~admin_privs {~~--><!--~opt_listing {~-->
+                       <p><a href="~file_name~?~file_name~_new=1">Add another ~singular attr~</a></p>
 
-               <p><a href="~file_name~">Back to ~plural attr~</a></p><!--~}~-->
-
-               <p><a href="~file_name~?~file_name~_edit_id=~~id attr~~">Edit</a></p>
+                       <p><a href="~file_name~">Back to ~plural attr~</a></p>
+<!--~}~-->
+                       <p><a href="~file_name~?~file_name~_edit_id=~~id attr~~">Edit</a></p>
+               <!--~~}~~-->
 
                <table border="0" cellpadding="3" cellspacing="0" summary="">
 <!--~display_fields {~--><!--~image {~-->
 <!--~}~--><!--~textarea {~-->
                        <tr><td class="caption">~caption html~:</td><td>~~~name~ htmlbrtab~~</td></tr>
 <!--~}~--><!--~}~-->
-               </table><!--~opt_listing {~-->
+               </table>
 
-               <p><a href="~file_name~">Back to ~plural attr~</a></p><!--~}~-->
-
-               <p><a href="~file_name~?~file_name~_edit_id=~~id attr~~">Edit</a></p>
+               <!--~~admin_privs {~~--><!--~opt_listing {~-->
+                       <p><a href="~file_name~">Back to ~plural attr~</a></p>
+<!--~}~-->
+                       <p><a href="~file_name~?~file_name~_edit_id=~~id attr~~">Edit</a></p>
+               <!--~~}~~-->
        <!--~~}~~--><!--~}~-->
 
        <!--~~form {~~--><!--~form {~-->
                <h2><!--~opt_db {~--><!--~~new_msg {~~-->Add a new ~singular~<!--~~}~~--><!--~~edit_msg {~~-->Edit ~singular~ "~~~always_field~ html~~"<!--~~}~~--><!--~}~--><!--~opt_db unset {~-->Submit a ~singular~<!--~}~--></h2>
 
-               <form action="~file_name~" method="post~enctype_attr~"><!--~opt_db {~--><!--~~editing {~~--><div style="display: none"><input type="hidden" name="~file_name~_edit_id" value="~~~file_name~_edit_id attr~~"></div><!--~~}~~--><!--~}~--><!--~uploads {~--><input type="hidden" name="MAX_FILE_SIZE" value="~~upload_max_filesize~~"><!--~}~--><!--~hidden_fields {~--><!--~ first {~-->
+               <form action="~~wfpl_basename~~" method="post~enctype_attr~"><!--~opt_db {~--><!--~~editing {~~--><div style="display: none"><input type="hidden" name="~file_name~_edit_id" value="~~~file_name~_edit_id attr~~"></div><!--~~}~~--><!--~}~--><!--~uploads {~--><input type="hidden" name="MAX_FILE_SIZE" value="~~upload_max_filesize~~"><!--~}~--><!--~hidden_fields {~--><!--~ first {~-->
                        <div style="display: none"><!--~}~--><input type="hidden" name="~name~" value="~~~name~ attr~~"><!--~ last {~--></div><!--~}~--><!--~}~-->
 <!--~visible_fields {~--><!--~fieldset {~-->
                        <fieldset><legend>~caption html~</legend><!--~}~--><!--~end_fieldset {~-->
index aea7bd6..c35534c 100644 (file)
@@ -42,89 +42,120 @@ require_once('code/wfpl/upload.php');<!--~}~-->
 function ~file_name~_get_fields() {
        $data = array();
 <!--~formats {~-->
-       $data['~name~'] = format_~format~($_REQUEST['~name~']<!--~pulldown_format_extra {~-->, '~name~'<!--~}~-->);<!--~}~--><!--~image_upload {~-->
+       $data['~name~'] = format_~format~(_REQUEST_cut('~name~')<!--~pulldown_format_extra {~-->, '~name~'<!--~}~-->);<!--~}~--><!--~image_upload {~-->
+
        if($_FILES['~name~'] && $_FILES['~name~']['error'] == 0) {
                $data['~name~'] = convert_uploaded_image('~name~', $GLOBALS['upload_directory'] . $GLOBALS['~name~_file_name'], $GLOBALS['~name~_max_width'], $GLOBALS['~name~_max_height']<!--~thumb_upload_params {~-->, $GLOBALS['~name~_thumb_max_width'], $GLOBALS['~name~_thumb_max_height']<!--~}~-->);
        } else {
-               if($_REQUEST['delete_~name~'] == 'Yes') {
+               if(_REQUEST_cut('delete_~name~') == 'Yes') {
                        $data['~name~'] = '';
                } else {
-                       $data['~name~'] = format_image_w_h<!--~thumb_w_h {~-->_thumb_w_h<!--~}~-->($_REQUEST['old_~name~']);
+                       $data['~name~'] = format_image_w_h<!--~thumb_w_h {~-->_thumb_w_h<!--~}~-->(_REQUEST_cut('old_~name~'));
                }
-       }<!--~}~--><!--~file_upload {~-->
+       }
+       unset($_FILES['~name~']);<!--~}~--><!--~file_upload {~-->
+
        $~name~_filename_tmp = $GLOBALS['~name~_file_name'];
        if(!$~name~_filename_tmp) {
-               $~name~_filename_tmp = format_filename($_REQUEST['~name~']);
+               $~name~_filename_tmp = format_filename(_REQUEST_cut('~name~'));
        }
        if($_FILES['~name~'] && $_FILES['~name~']['error'] == 0) {
                $data['~name~'] = save_uploaded_file('~name~', $GLOBALS['upload_directory'] . $~name~_filename_tmp);
        } else {
-               if($_REQUEST['delete_~name~'] == 'Yes') {
+               if(_REQUEST_cut('delete_~name~') == 'Yes') {
                        $data['~name~'] = '';
                } else {
-                       $data['~name~'] = format_path($_REQUEST['old_~name~']);
+                       $data['~name~'] = format_path(_REQUEST_cut('old_~name~'));
                }
-       }<!--~}~-->
+       }
+       unset($_FILES['~name~']);<!--~}~-->
 
        return $data;
-}
+}<!--~opt_public_something {~-->
 
 
-function ~file_name~_main() {<!--~opt_pass {~-->
-       if(!logged_in_as_admin()) {
+function ~public_file_name~_main() {<!--~opt_public_display {~-->
+       $id = _REQUEST_cut('~public_file_name~_id');
+       if($id) {
+               return ~file_name~_main_display($id);<!--~opt_public_form unset {~-->
+       } else {
+               message("Error: Broken Link (~singular cap~ #$id not found)");
+               return './'; # FIXME where should this go?<!--~}~-->
+       }<!--~}~--><!--~opt_public_form {~-->
+       return ~file_name~_main_form();<!--~}~-->
+}<!--~}~-->
+
+
+function ~file_name~_main(<!--~opt_display unset {~--><!--~opt_public_form {~-->$new_only = false<!--~}~--><!--~}~-->) {<!--~opt_pass {~-->
+       if(logged_in_as_admin()) {
+               tem_set('admin_privs');
+       } else {
                $_REQUEST['url'] = this_url();
                return 'admin_login';
        }
-<!--~}~--><!--~opt_display {~-->
-       if(isset($_REQUEST['~file_name~_id'])) {
-               return ~file_name~_display_main();
-       } else {
-               return ~file_name~_edit_main();
+<!--~}~--><!--~opt_db {~-->
+       $id = _REQUEST_cut('~file_name~_edit_id');
+       if($id) {
+               return ~file_name~_main_form($id);
        }
-}
 
-function ~file_name~_display_main() {
-       $id = format_int($_REQUEST['~file_name~_id']);
-       unset($_REQUEST['~file_name~_id']);
-       if(!$id) {
-               message('Error: Broken link');
-               return './~file_name~';
+       $id = _REQUEST_cut('~file_name~_delete_id');
+       if($id) {
+               return ~file_name~_main_delete($id);
+       }
+
+       if(_REQUEST_cut('~file_name~_new')) {
+               return ~file_name~_main_form();
+       }
+<!--~}~--><!--~opt_listing {~-->
+       if(_REQUEST_cut('~file_name~_list')) {
+               return ~file_name~_main_listing();
+       }
+<!--~}~--><!--~opt_display {~-->
+       $id = _REQUEST_cut('~file_name~_id');
+       if($id) {
+               return ~file_name~_main_display($id);
        }
+<!--~}~--><!--~opt_listing {~-->
+       if(isset($_POST['~always_field~'])) {
+               return ~file_name~_main_form();
+       }
+
+       # default action:
+       return ~file_name~_main_listing();<!--~}~--><!--~opt_listing unset {~-->
+       return ~file_name~_main_form();<!--~}~-->
+}<!--~opt_display {~-->
+
+function ~file_name~_main_display($id) {
        $data = db_get_assoc('~table_name~', 'id,'.~file_name upper~_DB_FIELDS, 'where id=%i', $id);
        if(!$data) {
-               message('Error: ~singular cap~ not found');
-               return './~file_name~';
+               message("Error: Broken Link (~singular cap~ #$id not found)");<!--~opt_public_something {~-->
+               return './' . $GLOBALS['wfpl_basename'];<!--~}~--><!--~opt_public_something unset {~-->
+               return './~file_name~';<!--~}~-->
        }
        tem_set('display', $data);
-}
+}<!--~}~--><!--~opt_db {~-->
 
-function ~file_name~_edit_main() {<!--~}~--><!--~pulldowns {~-->
-       pulldown('~name~', ~pulldown_options~);<!--~}~--><!--~opt_db {~-->
-       $edit_id = format_int($_REQUEST['~file_name~_edit_id']);
-       unset($_REQUEST['~file_name~_edit_id']);
-       if($edit_id) {
+function ~file_name~_main_delete($id) {
+       db_delete('~table_name~', 'where id=%i', $id);
+       message('~singular cap~ deleted.');
+       return './~file_name~';
+}<!--~}~--><!--~opt_listing {~-->
+
+function ~file_name~_main_listing() {
+       $listing_rows = db_get_assocs('~table_name~', 'id<!--~listing_fields_1 {~-->,~name~<!--~}~-->', 'order by ~always_field~ limit 100');
+       tem_set('listings', $listing_rows);
+}<!--~}~-->
+
+function ~file_name~_main_form($id = false) {<!--~pulldowns {~-->
+       pulldown('~name~', ~pulldown_options~);<!--~}~--><!--~pulldowns once_if {~-->
+<!--~}~--><!--~opt_db {~-->
+       if($id) {
                # add hidden field for database id of row we're editing
-               tem_set('~file_name~_edit_id', $edit_id);
+               tem_set('~file_name~_edit_id', $id);
                tem_set('editing');
                tem_set('edit_msg');
-       }
-
-       $delete_id = format_int($_REQUEST['~file_name~_delete_id']);
-       unset($_REQUEST['~file_name~_delete_id']);
-       if($delete_id) {
-               db_delete('~table_name~', 'where id=%i', $delete_id);
-               message('~singular cap~ deleted.');
-
-               return './~file_name~';
-       }
-
-       if(!$edit_id) {<!--~opt_listing {~-->
-               if(!isset($_REQUEST['~file_name~_new']) && !isset($_REQUEST['~always_field~'])) {
-                       $listing_rows = db_get_assocs('~table_name~', 'id<!--~listing_fields_1 {~-->,~name~<!--~}~-->', 'order by ~always_field~ limit 100');
-                       tem_set('listings', $listing_rows);
-                       return;
-               }
-<!--~}~-->
+       } else {
                tem_set('new_msg');
        }
 <!--~}~-->
@@ -132,8 +163,8 @@ function ~file_name~_edit_main() {<!--~}~--><!--~pulldowns {~-->
                $data = ~file_name~_get_fields();
 
                if("you're happy with the POSTed values") {<!--~opt_db {~-->
-                       if($edit_id) {
-                               db_update_assoc('~table_name~', $data, 'where id=%i', $edit_id);
+                       if($id) {
+                               db_update_assoc('~table_name~', $data, 'where id=%i', $id);
                                message('~singular cap~ updated.');
                        } else {
                                db_insert_assoc('~table_name~', $data);
@@ -163,17 +194,24 @@ function ~file_name~_edit_main() {<!--~}~--><!--~pulldowns {~-->
                                        message('Message sent');
                                }
                        }<!--~}~-->
-                       if($error !== true) {
-                               return './~file_name~'; # FIXME is this the page you want to go to after successful form submission?
+                       if($error !== true) {<!--~opt_public_something {~-->
+                               if($GLOBALS['wfpl_basename'] == '~file_name~') {
+                                       return './~file_name~';
+                               } else {
+                                       # FIXME create this page or change this to go elsewhere
+                                       return './~public_file_name~_thanks';
+                               }<!--~}~--><!--~opt_public_something unset {~--><!--~opt_db unset {~-->
+                               # FIXME create this page or change this to go elsewhere<!--~}~-->
+                               return './~file_name~<!--~opt_db unset {~-->_thanks<!--~}~-->';<!--~}~-->
                        }
                }
                # otherwise, we display the form again. ~file_name~_get_fields() has
                # already put the posted values back into the template engine, so they will
                # show up in the form fields. You should add some message asking people to
                # fix their entry in whatever way you require.<!--~opt_db {~-->
-       } elseif($edit_id) {
+       } elseif($id) {
                # we've recieved an edit id, but no data. So we grab the values to be edited from the database
-               $data = db_get_assoc('~table_name~', ~file_name upper~_DB_FIELDS, 'where id=%i', $edit_id);<!--~}~-->
+               $data = db_get_assoc('~table_name~', ~file_name upper~_DB_FIELDS, 'where id=%i', $id);<!--~}~-->
        } else {
                # form not submitted, you can set default values like so:
                #$data = array('~always_field~' => 'Yes');
@@ -185,5 +223,3 @@ function ~file_name~_edit_main() {<!--~}~--><!--~pulldowns {~-->
        tem_set('form', $data);<!--~show_extra_headers {~-->
        tem_set('extra_headers');<!--~}~-->
 }
-
-?>