/** * show the form to be submitted * * @param array $page page db row * @param array $vars page meta data * @param array $errors any errors that need to be shown * @param array form_fields list of fields in the form * * @return HTML of the form */ function Form_showForm($page, $vars, $errors, $form_fields) { if (!isset($_SESSION['forms'])) { $_SESSION['forms'] = array(); } $c = '<form action="' . $_SERVER['REQUEST_URI'] . '" method="post" ' . 'class="ww_form" enctype="multipart/form-data">'; if (count($errors)) { $c .= '<div class="errorbox">' . join('<br />', $errors) . '</div>'; } switch (@$vars['forms_htmltype']) { case 'div': // { $vals_wrapper_start = ''; $vals_field_start = '<div><span class="__" lang-context="core">'; $vals_field_middle = '</span>'; $vals_field_end = '</div>'; $vals_2col_start = '<div>'; $vals_2col_end = '</div>'; $vals_wrapper_end = ''; break; // } // } default: // { $vals_wrapper_start = '<table class="forms-table">'; $vals_field_start = '<tr><th class="__" lang-context="core">'; $vals_field_middle = '</th><td>'; $vals_field_end = '</td></tr>'; $vals_2col_start = '<tr><td colspan="2">'; $vals_2col_end = '</td></tr>'; $vals_wrapper_end = '</table>'; // } } if (@$vars['forms_template'] && strpos($vars['forms_template'], '{{') === false) { $vars['forms_template'] = ''; } // }} if (!@$vars['forms_template'] || $vars['forms_template'] == ' ') { $c .= '<div>' . $vals_wrapper_start; } $required = array(); $cnt = 0; $has_date = false; $has_ccdate = false; foreach ($form_fields as $r2) { if ($r2['type'] == 'hidden') { continue; } $name = preg_replace('/[^a-zA-Z0-9_]/', '', $r2['name']); $help = @$r2['help']; if ($help != '') { $help = ' title="' . htmlspecialchars($help, ENT_QUOTES) . '"'; } $class = ''; if ($r2['isrequired']) { $required[] = $name . ',' . $r2['type']; $class = ' required'; } if (isset($_REQUEST[$name])) { $_SESSION['forms'][$name] = $_REQUEST[$name]; } $val = Form_valueDefault($name); if (!isset($_REQUEST[$name])) { $_REQUEST[$name] = ''; } $table_break = 0; switch ($r2['type']) { case 'checkbox': // { $d = '<input type="checkbox" id="' . $name . '" name="' . $name . '"' . $help; if ($_REQUEST[$name]) { $d .= ' checked="' . $_REQUEST[$name] . '"'; } $d .= ' class="' . $class . ' checkbox" />'; break; // } // } case 'ccdate': // { if ($_REQUEST[$name] == '') { $_REQUEST[$name] = date('Y-m'); } $d = '<input name="' . $name . '" value="' . $_REQUEST[$name] . '" class="ccdate"' . $help . '/>'; $has_ccdate = true; break; // } // } case 'date': // { if ($_REQUEST[$name] == '') { $_REQUEST[$name] = date('Y-m-d'); } $d = '<input name="' . $name . '" value="' . $_REQUEST[$name] . '"' . $help . ' class="date" placeholder="yyyy-mm-dd" ' . 'metadata="' . addslashes($r2['extra']) . '"/>'; $has_date = true; break; // } // } case 'email': // { if ($r2['extra']) { $class .= ' verify'; $verify = '<input style="display:none" class="email-verification" ' . 'name="' . $name . '_verify" value="" placeholder="verification code"' . $help . '/>'; $_SESSION['form_input_email_verify_' . $name] = rand(10000, 99999); } else { $verify = ''; } $d = '<input type="email" id="' . $name . '" name="' . $name . '" value="' . $val . '" class="email' . $class . ' text"' . $help . '/>' . $verify; break; // } // } case 'file': // { WW_addScript('/j/swfobject.js'); WW_addScript('/j/jquery.uploadify/jquery.uploadify.min.js'); $opts = isset($r2['extra']) ? explode(':', $r2['extra']) : array(); if (!isset($opts[0]) || !isset($opts[1])) { $opts = array('off', '*;'); } $multi = $opts[0] == 'on' ? 'true' : 'false'; $script = ' $(function(){ $("#' . $name . '").uploadify({ "uploader":"/j/jquery.uploadify/uploadify.swf", "script":"/ww.plugins/forms/frontend/file-upload.php", "cancelImg":"/ww.plugins/forms/j/cancel.png", "multi":' . $multi . ', "removeCompleted":false, "fileDataName":"file-upload", "scriptData":{ "PHPSESSID":"' . session_id() . '" }, "onComplete":function(event,ID,fileObj,response,data){ if(response=="deleted"){ alert("You have uploaded too many large files. These files' . ' have been deleted to conserve space. Please reload the ' . 'page and try again with less or smaller files."); } }, "onAllComplete":function(){ $("input[type=submit]").attr("disabled",false); }, "onSelect":function(){ $("input[type=submit]").attr("disabled","disabled"); }, "fileExt":"' . $opts[1] . '", "fileDesc":" ", "auto":true }); });'; WW_addInlineScript($script); $d = '<div id="upload">'; $d .= '<input type="file" id="' . $name . '" name="file-upload"' . $help . '/>'; $d .= '</div>'; // { add existing files $dir = USERBASE . '/f/.files/forms/' . session_id(); if (is_dir($dir)) { $files = array(); $uploads = new DirectoryIterator($dir); foreach ($uploads as $upload) { if ($upload->isDot() || $upload->isDir()) { continue; } $bytes = $upload->getSize(); $kb = round($bytes / 1024, 2); $d .= '<div class="uploadifyQueueItem completed">' . '<div class="cancel"><a class="download-delete-item" ' . 'href="javascript:;" id="' . $upload->getFileName() . '">' . '<img border="0" src="/ww.plugins/forms/j/cancel.png"></a>' . '</div>' . '<span class="fileName">' . $upload->getFileName() . ' (' . $kb . ' KB)</span>' . '<span class="percentage"> - Completed</span>' . '</div>'; } } // } break; // } // } case 'hidden': // { $d = '<textarea id="' . $name . '" name="' . $name . '" class="' . $class . ' hidden"' . $help . '>' . htmlspecialchars($r2['extra']) . '</textarea>'; break; // } // } case 'html-block': // { $d = $r2['extra']; $table_break = true; break; // } // } case 'page-next': // { $d = '<a href="javascript:;" class="form-page-next">Next</a>'; $table_break = true; break; // } // } case 'page-previous': // { $d = '<a href="javascript:;" class="form-page-previous">Previous</a>'; $table_break = true; break; // } // } case 'page-break': // { $d = '</div><div style="display:none">'; $table_break = true; break; // } // } case 'selectbox': // { $d = '<select id="' . $name . '" name="' . $name . '"' . $help . '>'; $arr = explode("\n", htmlspecialchars($r2['extra'])); foreach ($arr as $li) { if ($_REQUEST[$name] == $li) { $d .= '<option selected="selected">' . rtrim($li) . '</option>'; } else { $d .= '<option>' . rtrim($li) . '</option>'; } } $d .= '</select>'; break; // } // } case 'signature': // { $d = '<div class="signature-wrapper">' . '<canvas class="signature-pad" width="300" height="150">' . '</canvas>' . '<a href="#" class="signature-clear">clear</a>' . '<input type="hidden" name="' . $name . '"/>' . '</div>'; WW_addScript('forms/j/jquery.signaturepad.js'); WW_addScript('forms/j/field-type-signature.js'); break; // } // } case 'textarea': // { if (!$r2['extra']) { $r2['extra'] = '0,0'; } list($max, $softmax) = explode(',', $r2['extra']); $maxlength = $max ? 'maxlength="' . $max . '" ' : ''; $d = '<textarea ' . $maxlength . ' softmaxlength="' . $softmax . '"' . $help . ' id="' . $name . '" name="' . $name . '" class="' . $class . '">' . $_REQUEST[$name] . '</textarea>'; break; // } // } default: // { # input boxes, and anything which was not handled already $d = '<input id="' . $name . '" name="' . $name . '" value="' . $val . '" class="' . $class . ' text"' . $help . '/>'; // } } if (@$vars['forms_template'] && $vars['forms_template'] != ' ') { $vars['forms_template'] = str_replace('{{$' . $cnt . '}}', $d, $vars['forms_template']); $vars['forms_template'] = str_replace('{{$' . htmlspecialchars($r2['name']) . '}}', $d, $vars['forms_template']); } else { if ($table_break) { $c .= $vals_wrapper_end . $d . $vals_wrapper_start; } else { $c .= $vals_field_start . $r2['name']; if ($r2['isrequired']) { $c .= '<sup>*</sup>'; } $c .= $vals_field_middle . $d . $vals_field_end; } } $cnt++; } if (@$vars['forms_captcha_required']) { require_once SCRIPTBASE . 'ww.incs/recaptcha.php'; $row = $vals_2col_start . Recaptcha_getHTML() . $vals_2col_end; if (isset($vars['forms_template']) && $vars['forms_template']) { $vars['forms_template'] .= $vals_wrapper_start . $row . $vals_wrapper_end; } else { $c .= $row; } } if (@$vars['forms_template'] && $vars['forms_template'] != ' ') { $c .= $vars['forms_template']; } else { $c .= $vals_2col_start; } $c .= '<button class="submit __" lang-context="core">Submit Form</button>' . '<input type="hidden" name="funcFormInput" value="submit" />' . '<input type="hidden" name="requiredFields" value="' . join(',', $required) . '" />'; if (count($required)) { $c .= '<br /><span>' . __('* indicates required fields', 'core') . '</span>'; } if (!@$vars['forms_template'] || @$vars['forms_template'] == ' ') { $c .= $vals_2col_end . $vals_wrapper_end . '</div>'; $c = str_replace('<table></table>', '', $c); WW_addInlineScript('var form_rules=' . json_encode(Form_getValidationRules($vars, $form_fields)) . ';'); WW_addScript('forms/frontend/show.js'); $c .= '<script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/' . 'jquery.validate.min.js"></script>'; } $helpType = (int) @$vars['forms_helpType']; $helpSelector = @$vars['forms_helpSelector']; $verifiedEmails = isset($_SESSION['forms_verified_emails']) ? json_encode($_SESSION['forms_verified_emails']) : '[]'; $c .= '<script defer="defer">var forms_helpType=' . $helpType . ',forms_helpSelector="' . $helpSelector . '",forms_verifiedEmails=' . $verifiedEmails . ';</script></form>'; if ($has_ccdate) { WW_addInlineScript('$("input.ccdate").datepicker({"dateFormat":"yy-mm"});'); } WW_addCSS('/ww.plugins/forms/forms.css'); return $c; }
/** * get a readonly version of the form (for sending as email) * * @param array $page_id page db row * @param array &$vars page meta data * @param array &$form_fields array of fields * * @return HTML of the form */ function Form_readonly($page_id, &$vars, &$form_fields) { if (!isset($_SESSION['forms'])) { $_SESSION['forms'] = array(); } $c = ''; // { set up delimiters $vals_wrapper_start = '<table>'; $vals_field_start = '<tr><th>'; $vals_field_middle = '</th><td>'; $vals_field_end = '</td></tr>'; $vals_2col_start = '<tr><td colspan="2">'; $vals_2col_end = '</td></tr>'; $vals_wrapper_end = '</table>'; // } if (@$vars['forms_template'] && @strpos($vars['forms_template'], '{{') === false) { @($vars['forms_template'] = ''); } // }} if (!@$vars['forms_template'] || @$vars['forms_template'] == ' ') { $c .= '<div>' . $vals_wrapper_start; } $required = array(); $cnt = 0; foreach ($form_fields as $r2) { $name = preg_replace('/[^a-zA-Z0-9_]/', '', $r2['name']); $class = ''; if ($r2['isrequired']) { $required[] = $name . ',' . $r2['type']; $class = ' required'; } if (isset($_REQUEST[$name])) { $_SESSION['forms'][$name] = $_REQUEST[$name]; } $val = Form_valueDefault($name); if (!isset($_REQUEST[$name])) { $_REQUEST[$name] = ''; } switch ($r2['type']) { case 'ccdate': // { if ($_REQUEST[$name] == '') { $_REQUEST[$name] = date('Y-m'); } $d = preg_replace('#.* ([a-zA-Z]*, [0-9]+)#', "\$1", Core_dateM2H($_REQUEST[$name])); break; // } // } case 'date': // { if ($_REQUEST[$name] == '') { $_REQUEST[$name] = date('Y-m-d'); } $d = Core_dateM2H($_REQUEST[$name]); break; // } // } case 'file': // { $d = __('If there are any files, they are attached to this email'); break; // } // } case 'hidden': // { $d = htmlspecialchars($r2['extra']); break; // } // } case 'html-block': case 'page-next': case 'page-previous': case 'page-break': // { $d = ''; break; // } // } default: // { # input boxes, and anything which was not handled already $d = nl2br(htmlspecialchars($_REQUEST[$name])); // } } if (@$vars['forms_template'] && @$vars['forms_template'] != ' ') { @($vars['forms_template'] = str_replace('{{$' . $cnt . '}}', $d, @$vars['forms_template'])); @($vars['forms_template'] = str_replace('{{$' . htmlspecialchars($r2['name']) . '}}', $d, $vars['forms_template'])); } elseif ($d != '') { $c .= $vals_field_start . htmlspecialchars($r2['name']); $c .= $vals_field_middle . $d . $vals_field_end; } $cnt++; } if (@$vars['forms_template'] && @$vars['forms_template'] != ' ') { $c .= $vars['forms_template']; } else { $c .= $vals_2col_start; } return $c; }