Create a page edit form on frontend using PW API and fields from the template of the page
<?php | |
// get a page | |
$editpage = $pages->get("/editme/"); | |
$ignorefields = array("isOld","language_published"); | |
$form = $modules->get("InputfieldForm"); | |
$form->method = 'post'; | |
$form->action = './'; | |
// get the collection of inputs that can populate this page's fields | |
$inputfields = $editpage->getInputfields(); | |
// make all the fields required and add them to the form | |
foreach($inputfields as $inputfield) { | |
if(in_array($inputfield->name, $ignorefields)) continue; | |
$form->add($inputfield); | |
} | |
// the inputfields don't already have a submit button, so we'll add one. | |
$submit = $modules->get("InputfieldSubmit"); | |
$submit->name = "submit"; | |
$submit->value = 'Submit'; | |
// add the submit button the the form | |
$form->add($submit); | |
$out = ''; | |
// process the form | |
if($this->input->post->submit) { | |
// now we assume the form has been submitted. | |
// tell the form to process input frmo the post vars. | |
$form->processInput($this->input->post); | |
// see if any errors occurred | |
if( count( $form->getErrors() )) { | |
// re-render the form, it will include the error messages | |
$out .= $form->render(); | |
} else { | |
// successful form submission, so populate the page with the new values. | |
$editpage->setOutputFormatting(false); | |
foreach($form as $field) { | |
$editpage->set($field->name, $field->value); | |
} | |
// save it | |
$editpage->save(); | |
$out .= "Page saved."; | |
$out .= $form->render(); | |
} | |
} else { | |
$out .= $form->render(); | |
} | |
include("head.inc"); // where scripts are added needed by the form | |
echo $out; |
<script> | |
<?php | |
$jsConfig = $config->js(); | |
$jsConfig['urls'] = array( | |
'root' => $config->urls->root, | |
'admin' => $config->urls->admin, | |
'modules' => $config->urls->modules, | |
'core' => $config->urls->core, | |
'files' => $config->urls->files, | |
'templates' => $config->urls->templates, | |
'adminTemplates' => $config->urls->adminTemplates, | |
'adminTemplates' => $config->urls->adminTemplates, | |
); | |
?> | |
var config = <?php echo json_encode($jsConfig); ?>; | |
</script> | |
<?php | |
$config->styles->prepend($config->urls->adminTemplates . "styles/main.css?v=2"); | |
$config->styles->append($config->urls->adminTemplates . "styles/inputfields.css"); | |
$config->styles->append($config->urls->adminTemplates . "styles/ui.css?v=2"); | |
$config->scripts->append($config->urls->JqueryUI . "JqueryUI.js"); | |
$config->scripts->prepend($config->urls->JqueryCore . "JqueryCore.js"); | |
$config->scripts->append($config->urls->adminTemplates . "scripts/inputfields.js"); | |
foreach($config->styles->unique() as $file) echo "\n\t<link type='text/css' href='$file' rel='stylesheet' />"; | |
foreach($config->scripts->unique() as $file) echo "\n\t<script type='text/javascript' src='$file'></script>"; | |
?> |
This comment has been minimized.
This comment has been minimized.
@modifiedcontent ye you can it's nothing weird. The shorthand wasn't intentional (edited). |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This comment has been minimized.
Weird mix of js + php in head.php. Can you do that?
Shorthand <? instead of <?php can cause problems.