public static function showForm($formId, $val = array(), $validation = array()) { $mainframe = JFactory::getApplication(); $formId = (int) $formId; $db = JFactory::getDBO(); $doc = JFactory::getDocument(); $db->setQuery("SELECT `FormId`, `FormLayoutName`, `FormLayout`, `ScriptDisplay`, `ErrorMessage`, `FormTitle`, `CSS`, `JS`, `CSSClass`, `CSSId`, `CSSName`, `CSSAction`, `CSSAdditionalAttributes`, `AjaxValidation`, `ThemeParams` FROM #__rsform_forms WHERE FormId='" . $formId . "' AND `Published`='1'"); $form = $db->loadObject(); $lang = RSFormProHelper::getCurrentLanguage(); $translations = RSFormProHelper::getTranslations('forms', $form->FormId, $lang); if ($translations) { foreach ($translations as $field => $value) { if (isset($form->{$field})) { $form->{$field} = $value; } } } if ($form->JS) { $doc->addCustomTag($form->JS); } if ($form->CSS) { $doc->addCustomTag($form->CSS); } if ($form->ThemeParams) { RSFormProHelper::loadTheme($form); } $doc->addStyleSheet(JURI::root(true) . '/components/com_rsform/assets/css/front.css'); if ($doc->getDirection() == 'rtl') { $doc->addStyleSheet(JURI::root(true) . '/components/com_rsform/assets/css/front-rtl.css'); } $doc->addScript(JURI::root(true) . '/components/com_rsform/assets/js/script.js?v=' . _RSFORM_REVISION); $calendars = RSFormProHelper::componentExists($formId, 6); //6 is the componentTypeId for calendar if (!empty($calendars)) { $doc->addStyleSheet(JURI::root(true) . '/components/com_rsform/assets/calendar/calendar.css'); $hidden = JRequest::getVar('hidden'); $all_data = RSFormProHelper::getComponentProperties($calendars); foreach ($calendars as $i => $calendarComponentId) { $data = $all_data[$calendarComponentId]; $calendars['CALENDARLAYOUT'][$i] = $data['CALENDARLAYOUT']; $calendars['DATEFORMAT'][$i] = $data['DATEFORMAT']; $calendars['VALUES'][$i] = ''; $calendars['EXTRA'][$i] = array(); if (!empty($hidden[$data['NAME']])) { $calendars['VALUES'][$i] = preg_replace('#[^0-9\\/]+#i', '', $hidden[$data['NAME']]); } if (isset($data['MINDATE'])) { $data['MINDATE'] = RSFormProHelper::isCode($data['MINDATE']); } if (isset($data['MAXDATE'])) { $data['MAXDATE'] = RSFormProHelper::isCode($data['MAXDATE']); } if (!empty($data['MINDATE'])) { $calendars['EXTRA'][$i][] = "'mindate': '" . $data['MINDATE'] . "'"; } if (!empty($data['MAXDATE'])) { $calendars['EXTRA'][$i][] = "'maxdate': '" . $data['MAXDATE'] . "'"; } if (!empty($data['VALIDATIONCALENDAR'])) { list($rule, $otherCalendar) = explode(' ', $data['VALIDATIONCALENDAR']); if (isset($all_data[$otherCalendar])) { $calendars['EXTRA'][$i][] = "'rule': '" . $rule . '|' . $all_data[$otherCalendar]['NAME'] . "'"; } } $calendars['EXTRA'][$i] = '{' . implode(', ', $calendars['EXTRA'][$i]) . '}'; } unset($all_data); $calendarsLayout = "'" . implode("','", $calendars['CALENDARLAYOUT']) . "'"; $calendarsFormat = "'" . implode("','", $calendars['DATEFORMAT']) . "'"; $calendarsValues = "'" . implode("','", $calendars['VALUES']) . "'"; $calendarsExtra = implode(',', $calendars['EXTRA']); } $formLayout = $form->FormLayout; unset($form->FormLayout); $errorMessage = $form->ErrorMessage; unset($form->ErrorMessage); $db->setQuery("SELECT p.PropertyValue AS name, c.ComponentId, c.ComponentTypeId, ct.ComponentTypeName, c.Order FROM #__rsform_properties p LEFT JOIN #__rsform_components c ON (c.ComponentId=p.ComponentId) LEFT JOIN #__rsform_component_types ct ON (ct.ComponentTypeId=c.ComponentTypeId) WHERE c.FormId='" . $formId . "' AND p.PropertyName='NAME' AND c.Published='1' ORDER BY c.Order"); $components = $db->loadObjectList(); $pages = array(); $page_progress = array(); $submits = array(); foreach ($components as $component) { if ($component->ComponentTypeId == 41) { $pages[] = $component->ComponentId; } elseif ($component->ComponentTypeId == 13) { $submits[] = $component->ComponentId; } } $start_page = 0; if (!empty($validation)) { foreach ($components as $component) { if (in_array($component->ComponentId, $validation)) { break; } if ($component->ComponentTypeId == 41) { $start_page++; } } } $find = array(); $replace = array(); $all_data = RSFormProHelper::getComponentProperties($components); foreach ($components as $component) { $data = $all_data[$component->ComponentId]; $data['componentTypeId'] = $component->ComponentTypeId; $data['ComponentTypeName'] = $component->ComponentTypeName; $data['Order'] = $component->Order; // Pagination if ($component->ComponentTypeId == 41) { $data['PAGES'] = $pages; $page_progress[] = array('show' => @$data['DISPLAYPROGRESS'] == 'YES', 'text' => @$data['DISPLAYPROGRESSMSG']); } elseif ($component->ComponentTypeId == 13) { $data['SUBMITS'] = $submits; if ($component->ComponentId == end($submits)) { $page_progress[] = array('show' => @$data['DISPLAYPROGRESS'] == 'YES', 'text' => @$data['DISPLAYPROGRESSMSG']); } } // Caption $find[] = '{' . $component->name . ':caption}'; $caption = ''; if (isset($data['SHOW']) && $data['SHOW'] == 'NO') { $caption = ''; } elseif (isset($data['CAPTION'])) { $caption = $data['CAPTION']; } $replace[] = $caption; // Body $find[] = '{' . $component->name . ':body}'; $replace[] = RSFormProHelper::getFrontComponentBody($formId, $component->ComponentId, $data, $val, in_array($component->ComponentId, $validation), $form->FormLayoutName); // Description $find[] = '{' . $component->name . ':description}'; $description = ''; if (isset($data['SHOW']) && $data['SHOW'] == 'NO') { $description = ''; } elseif (isset($data['DESCRIPTION'])) { $descrtmp = $data['DESCRIPTION']; } if (trim($descrtmp) != '') { $description = '<a data-placement="top" rel="clickover" data-original-title="info" data-content="' . $descrtmp . '" class="btn btn-small btn-link">info</a>'; } else { $description = ''; } $replace[] = $description; // Validation message $find[] = '{' . $component->name . ':validation}'; $validationMessage = ''; if (isset($data['SHOW']) && $data['SHOW'] == 'NO') { $validationMessage = ''; } elseif (isset($data['VALIDATIONMESSAGE'])) { if (!empty($validation) && in_array($component->ComponentId, $validation)) { $validationMessage = '<span id="component' . $component->ComponentId . '" class="formError">' . $data['VALIDATIONMESSAGE'] . '</span>'; } else { $validationMessage = '<span id="component' . $component->ComponentId . '" class="formNoError">' . $data['VALIDATIONMESSAGE'] . '</span>'; } } $replace[] = $validationMessage; } unset($all_data); $u = RSFormProHelper::getURL(); //Trigger Event - onInitFormDisplay $mainframe->triggerEvent('rsfp_f_onInitFormDisplay', array(array('find' => &$find, 'replace' => &$replace, 'formLayout' => &$formLayout))); $user = JFactory::getUser(); $jconfig = JFactory::getConfig(); array_push($find, '{global:formtitle}', '{global:username}', '{global:userip}', '{global:userid}', '{global:useremail}', '{global:fullname}', '{global:sitename}', '{global:siteurl}'); array_push($replace, $form->FormTitle, $user->get('username'), isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '', $user->get('id'), $user->get('email'), $user->get('name'), $jconfig->get('sitename'), JURI::root()); $formLayout = str_replace($find, $replace, $formLayout); if (strpos($formLayout, 'class="formError"') !== false) { $formLayout = str_replace('{error}', $errorMessage, $formLayout); } elseif ($form->AjaxValidation) { $formLayout = str_replace('{error}', '<div id="rsform_error_' . $formId . '" style="display: none;">' . $errorMessage . '</div>', $formLayout); } else { $formLayout = str_replace('{error}', '', $formLayout); } $formLayout .= '<input type="hidden" name="form[formId]" value="' . $formId . '"/>'; if ($form->FormLayoutName == 'responsive') { $form->CSSClass .= ' formResponsive'; if (RSFormProHelper::getConfig('auto_responsive')) { $doc->addCustomTag('<meta name="viewport" content="width=device-width, initial-scale=1.0">'); $mainframe->registerEvent('onAfterRender', '_modifyResponsiveTemplate'); } } if ($form->FormLayoutName == 'bootstrap-horizontal') { $form->CSSClass .= ' form-horizontal'; } if ($form->FormLayoutName == 'bootstrap-vertical') { $form->CSSClass .= ' form-vertical'; } $CSSClass = $form->CSSClass ? ' class="' . RSFormProHelper::htmlEscape(trim($form->CSSClass)) . '"' : ''; $CSSId = $form->CSSId ? ' id="' . RSFormProHelper::htmlEscape(trim($form->CSSId)) . '"' : ''; $CSSName = $form->CSSName ? ' name="' . RSFormProHelper::htmlEscape(trim($form->CSSName)) . '"' : ''; $u = $form->CSSAction ? RSFormProHelper::htmlEscape($form->CSSAction) : $u; $CSSAdditionalAttributes = $form->CSSAdditionalAttributes ? ' ' . trim($form->CSSAdditionalAttributes) : ''; if (!empty($pages)) { $total_pages = count($pages) + 1; $step = floor(100 / $total_pages); $replace_progress = array('{page}', '{total}', '{percent}'); $with_progress = array(1, $total_pages, $step * 1); $progress = reset($page_progress); $progress_script = ''; $formLayout = '<div id="rsform_progress_' . $formId . '" class="rsformProgress">' . ($progress['show'] ? str_replace($replace_progress, $with_progress, $progress['text']) : '') . '</div>' . "\n" . $formLayout; foreach ($page_progress as $p => $progress) { $progress['text'] = str_replace(array("\r", "\n"), array('', '\\n'), addcslashes($progress['text'], "'")); $replace_progress = array('{page}', '{total}', '{percent}'); $with_progress = array($p + 1, $total_pages, $p + 1 == $total_pages ? 100 : $step * ($p + 1)); $progress_script .= "if (page == " . $p . ") document.getElementById('rsform_progress_" . $formId . "').innerHTML = '" . ($progress['show'] ? str_replace($replace_progress, $with_progress, $progress['text']) : '') . "';"; } $formLayout .= "\n" . '<script type="text/javascript">' . "\n" . 'function rsfp_showProgress_' . $formId . '(page) {' . "\n" . $progress_script . "\n" . '}' . "\n" . '</script>'; } $formLayout = '<form method="post" ' . $CSSId . $CSSClass . $CSSName . $CSSAdditionalAttributes . ' enctype="multipart/form-data" action="' . RSFormProHelper::htmlEscape($u) . '">' . $formLayout . '</form>'; if ($prices = self::$prices) { $formLayout .= "\n" . '<script type="text/javascript">' . "\n" . implode("\n", $prices) . "\n" . '</script>' . "\n"; } if (!empty($calendars)) { $formLayout .= "\n" . '<script type="text/javascript" src="' . JURI::root(true) . '/components/com_rsform/assets/calendar/cal.js?v=' . _RSFORM_REVISION . '"></script>' . "\n"; $formLayout .= '<script type="text/javascript">' . RSFormProHelper::getCalendarJS() . '</script>' . "\n"; $formLayout .= '<script type="text/javascript" defer="defer">rsf_CALENDAR.util.Event.addListener(window, "load", rsfp_init(' . $formId . ',{ layouts: Array(' . $calendarsLayout . '), formats: Array(' . $calendarsFormat . '), values: Array(' . $calendarsValues . '), extra: Array(' . $calendarsExtra . ') }));</script>' . "\n"; } if (!empty($pages)) { $formLayout .= '<script type="text/javascript" src="' . JURI::root(true) . '/components/com_rsform/assets/js/pages.js?v=' . _RSFORM_REVISION . '"></script>' . "\n"; $formLayout .= '<script type="text/javascript">rsfp_changePage(' . $formId . ', ' . $start_page . ', ' . count($pages) . ');</script>' . "\n"; } if ($form->AjaxValidation || !empty($pages)) { $formLayout .= '<script type="text/javascript">var rsfp_ajax_root = \'' . addslashes(JURI::root(true)) . '\';</script>'; } if ($form->AjaxValidation) { $formLayout .= '<script type="text/javascript">rsfp_addEvent(window, \'load\', function(){var form = rsfp_getForm(' . $formId . '); form.onsubmit = ajaxValidation;});</script>'; } $ajaxScript = ''; $mainframe->triggerEvent('rsfp_f_onAJAXScriptCreate', array(array('script' => &$ajaxScript, 'formId' => $formId))); $formLayout .= '<script type="text/javascript">'; $formLayout .= 'ajaxExtraValidationScript[' . $formId . '] = function(task, formId, data) {'; $formLayout .= 'var formComponents = {};'; foreach ($components as $component) { if (in_array($component->ComponentTypeId, array(7, 9, 10, 11, 12, 13, 15, 41))) { continue; } $formLayout .= "formComponents[" . $component->ComponentId . "]='" . $component->name . "';"; } $formLayout .= "if (task == 'afterSend') {"; $formLayout .= "\r\n\t\tvar ids = data.response[0].split(',');\r\n\t\tfor (var i=0; i<ids.length; i++) {\r\n\t\t\tvar id = parseInt(ids[i]);\r\n\t\t\tif (!isNaN(id) && typeof formComponents[id] != 'undefined') {\r\n\t\t\t\tvar formComponent = rsfp_getFieldsByName(formId, formComponents[id]);\r\n\t\t\t\tif (formComponent && formComponent.length > 0) {\r\n\t\t\t\t\tfor (var j=0; j<formComponent.length; j++) {\r\n\t\t\t\t\t\tif (formComponent[j]) {\r\n\t\t\t\t\t\t\tformComponent[j].className = formComponent[j].className.replace(' rsform-error', '');\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tvar ids = data.response[1].split(',');\r\n\t\tfor (var i=0; i<ids.length; i++) {\r\n\t\t\tvar id = parseInt(ids[i]);\r\n\t\t\tif (!isNaN(id) && typeof formComponents[id] != 'undefined') {\r\n\t\t\t\tvar formComponent = rsfp_getFieldsByName(formId, formComponents[id]);\r\n\t\t\t\tif (formComponent && formComponent.length > 0) {\r\n\t\t\t\t\tfor (var j=0; j<formComponent.length; j++) {\r\n\t\t\t\t\t\tif (formComponent[j]) {\r\n\t\t\t\t\t\t\tformComponent[j].className = formComponent[j].className.replace(' rsform-error', '') + ' rsform-error';\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t"; $formLayout .= "}\n"; // has this been modified? if ($ajaxScript) { $formLayout .= $ajaxScript; } $formLayout .= '}'; $formLayout .= '</script>'; if ($conditions = RSFormProHelper::getConditions($formId)) { $formLayout .= '<script type="text/javascript">'; foreach ($conditions as $condition) { $formLayout .= "\n" . 'function rsfp_runCondition' . $condition->id . '(){'; if ($condition->details) { $condition_vars = array(); foreach ($condition->details as $detail) { $formLayout .= "\n" . "isChecked = rsfp_verifyChecked(" . $formId . ", '" . addslashes($detail->ComponentName) . "', '" . addslashes($detail->value) . "');"; $formLayout .= "\n" . "condition" . $detail->id . " = isChecked == " . ($detail->operator == 'is' ? 'true' : 'false') . ";"; $condition_vars[] = "condition" . $detail->id; } if ($condition->block) { $block = JFilterOutput::stringURLSafe($condition->ComponentName); $formLayout .= "\n" . "items = rsfp_getBlock(" . $formId . ", '" . addslashes($block) . "');"; } else { $formLayout .= "\n" . "items = rsfp_getFieldsByName(" . $formId . ", '" . addslashes($condition->ComponentName) . "');"; } $formLayout .= "\n" . "if (items) {"; $formLayout .= "\n" . "if (" . implode($condition->condition == 'all' ? '&&' : '||', $condition_vars) . ")"; $formLayout .= "\n" . "rsfp_setDisplay(items, '" . ($condition->action == 'show' ? '' : 'none') . "');"; $formLayout .= "\n" . 'else'; $formLayout .= "\n" . "rsfp_setDisplay(items, '" . ($condition->action == 'show' ? 'none' : '') . "');"; $formLayout .= "\n" . "}"; } $formLayout .= "\n" . '}'; $formLayout .= "\n" . 'rsfp_runCondition' . $condition->id . '();'; if ($condition->details) { foreach ($condition->details as $detail) { $formLayout .= "\n" . "rsfp_addCondition(" . $formId . ", '" . addslashes($detail->ComponentName) . "', rsfp_runCondition" . $condition->id . ");"; } } } $formLayout .= "\n" . '</script>'; } if ($calculations = RSFormProHelper::getCalculations($formId)) { require_once dirname(__FILE__) . '/calculations.php'; $formLayout .= "\n" . '<script type="text/javascript">'; $formLayout .= "\n" . 'function rsfp_Calculations' . $formId . '(){'; foreach ($calculations as $calculation) { $expression = RSFormProCalculations::expression($calculation, $formId); $formLayout .= "\n" . $expression . "\n"; } $formLayout .= "\n" . '}'; $formLayout .= "\n" . 'rsfp_Calculations' . $formId . '();'; $formLayout .= RSFormProCalculations::getFields($calculations, $formId); $formLayout .= "\n" . 'rsfp_setCalculationsEvents(' . $formId . ',rsfpCalculationFields' . $formId . ');'; $formLayout .= "\n" . '</script>'; } $maps = RSFormProHelper::componentExists($formId, 212); //212 is the componentTypeId for maps if (!empty($maps)) { $formLayout .= "\n" . '<script type="text/javascript">'; foreach ($maps as $map) { $formLayout .= RSFormProHelper::generateMap($map, $validation); } $formLayout .= "\n" . '</script>'; } $RSadapter = RSFormProHelper::getLegacyAdapter(); eval($form->ScriptDisplay); //Trigger Event - onBeforeFormDisplay $mainframe->triggerEvent('rsfp_f_onBeforeFormDisplay', array(array('formLayout' => &$formLayout, 'formId' => $formId))); return $formLayout; }
function showForm($formId, $val = '', $validation = array()) { $mainframe =& JFactory::getApplication(); $formId = (int) $formId; $db = JFactory::getDBO(); $doc =& JFactory::getDocument(); $db->setQuery("SELECT `FormId`, `FormLayout`, `ScriptDisplay`, `ErrorMessage`, `FormTitle`, `CSS`, `JS`, `CSSClass`, `CSSId`, `CSSName`, `CSSAction`, `CSSAdditionalAttributes`, `AjaxValidation`, `ThemeParams` FROM #__rsform_forms WHERE FormId='" . $formId . "' AND `Published`='1'"); $form = $db->loadObject(); $lang = RSFormProHelper::getCurrentLanguage(); $translations = RSFormProHelper::getTranslations('forms', $form->FormId, $lang); if ($translations) { foreach ($translations as $field => $value) { if (isset($form->{$field})) { $form->{$field} = $value; } } } if ($form->JS) { $doc->addCustomTag($form->JS); } if ($form->CSS) { $doc->addCustomTag($form->CSS); } if ($form->ThemeParams) { RSFormProHelper::loadTheme($form); } $doc->addStyleSheet(JURI::root(true) . '/components/com_rsform/assets/css/front.css?v=42'); if ($doc->getDirection() == 'rtl') { $doc->addStyleSheet(JURI::root(true) . '/components/com_rsform/assets/css/front-rtl.css?v=42'); } $doc->addScript(JURI::root(true) . '/components/com_rsform/assets/js/script.js?v=42'); $calendars = RSFormProHelper::componentExists($formId, 6); //6 is the componentTypeId for calendar if (!empty($calendars)) { $doc->addStyleSheet(JURI::root(true) . '/components/com_rsform/assets/calendar/calendar.css?v=42'); $hidden = JRequest::getVar('hidden'); $all_data = RSFormProHelper::getComponentProperties($calendars); foreach ($calendars as $i => $calendarComponentId) { $data = $all_data[$calendarComponentId]; $calendars['CALENDARLAYOUT'][$i] = $data['CALENDARLAYOUT']; $calendars['DATEFORMAT'][$i] = $data['DATEFORMAT']; $calendars['VALUES'][$i] = ''; $calendars['EXTRA'][$i] = array(); if (!empty($hidden[$data['NAME']])) { $calendars['VALUES'][$i] = preg_replace('#[^0-9\\/]+#i', '', $hidden[$data['NAME']]); } if (!empty($data['MINDATE'])) { $calendars['EXTRA'][$i][] = "'mindate': '" . $data['MINDATE'] . "'"; } if (!empty($data['MAXDATE'])) { $calendars['EXTRA'][$i][] = "'maxdate': '" . $data['MAXDATE'] . "'"; } $calendars['EXTRA'][$i] = '{' . implode(', ', $calendars['EXTRA'][$i]) . '}'; } unset($all_data); $calendarsLayout = "'" . implode("','", $calendars['CALENDARLAYOUT']) . "'"; $calendarsFormat = "'" . implode("','", $calendars['DATEFORMAT']) . "'"; $calendarsValues = "'" . implode("','", $calendars['VALUES']) . "'"; $calendarsExtra = implode(',', $calendars['EXTRA']); } $formLayout = $form->FormLayout; unset($form->FormLayout); $errorMessage = $form->ErrorMessage; unset($form->ErrorMessage); $db->setQuery("SELECT p.PropertyValue AS name, c.ComponentId, c.ComponentTypeId, ct.ComponentTypeName, c.Order FROM #__rsform_properties p LEFT JOIN #__rsform_components c ON (c.ComponentId=p.ComponentId) LEFT JOIN #__rsform_component_types ct ON (ct.ComponentTypeId=c.ComponentTypeId) WHERE c.FormId='" . $formId . "' AND p.PropertyName='NAME' AND c.Published='1' ORDER BY c.Order"); $components = $db->loadObjectList(); $pages = array(); $page_progress = array(); $submits = array(); foreach ($components as $component) { if ($component->ComponentTypeId == 41) { $pages[] = $component->ComponentId; } elseif ($component->ComponentTypeId == 13) { $submits[] = $component->ComponentId; } } $start_page = 0; if (!empty($validation)) { foreach ($components as $component) { if (in_array($component->ComponentId, $validation)) { break; } if ($component->ComponentTypeId == 41) { $start_page++; } } } $find = array(); $replace = array(); $all_data = RSFormProHelper::getComponentProperties($components); foreach ($components as $component) { $data = $all_data[$component->ComponentId]; $data['componentTypeId'] = $component->ComponentTypeId; $data['ComponentTypeName'] = $component->ComponentTypeName; $data['Order'] = $component->Order; // Pagination if ($component->ComponentTypeId == 41) { $data['PAGES'] = $pages; $page_progress[] = array('show' => @$data['DISPLAYPROGRESS'] == 'YES', 'text' => @$data['DISPLAYPROGRESSMSG']); } elseif ($component->ComponentTypeId == 13) { $data['SUBMITS'] = $submits; if ($component->ComponentId == end($submits)) { $page_progress[] = array('show' => @$data['DISPLAYPROGRESS'] == 'YES', 'text' => @$data['DISPLAYPROGRESSMSG']); } } // Caption $find[] = '{' . $component->name . ':caption}'; $caption = ''; if (isset($data['SHOW']) && $data['SHOW'] == 'NO') { $caption = ''; } elseif (isset($data['CAPTION'])) { $caption = $data['CAPTION']; } $replace[] = $caption; // Body $find[] = '{' . $component->name . ':body}'; $replace[] = RSFormProHelper::getFrontComponentBody($formId, $component->ComponentId, $data, $val, in_array($component->ComponentId, $validation)); // Description $find[] = '{' . $component->name . ':description}'; $description = ''; if (isset($data['SHOW']) && $data['SHOW'] == 'NO') { $description = ''; } elseif (isset($data['DESCRIPTION'])) { $description = $data['DESCRIPTION']; } $replace[] = $description; // Validation message $find[] = '{' . $component->name . ':validation}'; $validationMessage = ''; if (isset($data['SHOW']) && $data['SHOW'] == 'NO') { $validationMessage = ''; } elseif (isset($data['VALIDATIONMESSAGE'])) { if (!empty($validation) && in_array($component->ComponentId, $validation)) { $validationMessage = '<span id="component' . $component->ComponentId . '" class="formError">' . $data['VALIDATIONMESSAGE'] . '</span>'; } else { $validationMessage = '<span id="component' . $component->ComponentId . '" class="formNoError">' . $data['VALIDATIONMESSAGE'] . '</span>'; } } $replace[] = $validationMessage; } unset($all_data); $u = RSFormProHelper::getURL(); //Trigger Event - onInitFormDisplay $mainframe->triggerEvent('rsfp_f_onInitFormDisplay', array(array('find' => &$find, 'replace' => &$replace, 'formLayout' => &$formLayout))); $user = JFactory::getUser(); $jconfig = JFactory::getConfig(); array_push($find, '{global:formtitle}', '{global:username}', '{global:userip}', '{global:userid}', '{global:useremail}', '{global:fullname}', '{global:sitename}', '{global:siteurl}'); array_push($replace, $form->FormTitle, $user->get('username'), isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '', $user->get('id'), $user->get('email'), $user->get('name'), $jconfig->getValue('config.sitename'), JURI::root()); $formLayout = str_replace($find, $replace, $formLayout); if (strpos($formLayout, 'class="formError"') !== false) { $formLayout = str_replace('{error}', $errorMessage, $formLayout); } elseif ($form->AjaxValidation) { $formLayout = str_replace('{error}', '<div id="rsform_error_' . $formId . '" style="display: none;">' . $errorMessage . '</div>', $formLayout); } else { $formLayout = str_replace('{error}', '', $formLayout); } $formLayout .= '<input type="hidden" name="form[formId]" value="' . $formId . '"/>'; $CSSClass = $form->CSSClass ? ' class="' . RSFormProHelper::htmlEscape($form->CSSClass) . '"' : ''; $CSSId = $form->CSSId ? ' id="' . RSFormProHelper::htmlEscape($form->CSSId) . '"' : ''; $CSSName = $form->CSSName ? ' name="' . RSFormProHelper::htmlEscape($form->CSSName) . '"' : ''; $u = $form->CSSAction ? RSFormProHelper::htmlEscape($form->CSSAction) : $u; $CSSAdditionalAttributes = $form->CSSAdditionalAttributes ? ' ' . trim($form->CSSAdditionalAttributes) : ''; if (!empty($pages)) { $total_pages = count($pages) + 1; $step = floor(100 / $total_pages); $replace_progress = array('{page}', '{total}', '{percent}'); $with_progress = array(1, $total_pages, $step * 1); $progress = reset($page_progress); $progress_script = ''; $formLayout = '<div id="rsform_progress_' . $formId . '" class="rsformProgress">' . ($progress['show'] ? str_replace($replace_progress, $with_progress, $progress['text']) : '') . '</div>' . "\n" . $formLayout; foreach ($page_progress as $p => $progress) { $progress['text'] = str_replace(array("\r", "\n"), array('', '\\n'), addcslashes($progress['text'], "'")); $replace_progress = array('{page}', '{total}', '{percent}'); $with_progress = array($p + 1, $total_pages, $p + 1 == $total_pages ? 100 : $step * ($p + 1)); $progress_script .= "if (page == " . $p . ") document.getElementById('rsform_progress_" . $formId . "').innerHTML = '" . ($progress['show'] ? str_replace($replace_progress, $with_progress, $progress['text']) : '') . "';"; } $formLayout .= "\n" . '<script type="text/javascript">' . "\n" . 'function rsfp_showProgress_' . $formId . '(page) {' . "\n" . $progress_script . "\n" . '}' . "\n" . '</script>'; } $formLayout = '<form method="post" ' . $CSSId . $CSSClass . $CSSName . $CSSAdditionalAttributes . ' enctype="multipart/form-data" action="' . RSFormProHelper::htmlEscape($u) . '">' . $formLayout . '</form>'; if (!empty($calendars)) { $formLayout .= "\n" . '<script type="text/javascript" src="' . JURI::root(true) . '/components/com_rsform/assets/calendar/cal.js?v=42"></script>' . "\n"; $formLayout .= '<script type="text/javascript">' . RSFormProHelper::getCalendarJS() . '</script>' . "\n"; $formLayout .= '<script type="text/javascript" defer="defer">rsf_CALENDAR.util.Event.addListener(window, "load", rsfp_init(' . $formId . ',{ layouts: Array(' . $calendarsLayout . '), formats: Array(' . $calendarsFormat . '), values: Array(' . $calendarsValues . '), extra: Array(' . $calendarsExtra . ') }));</script>' . "\n"; } if (!empty($pages)) { $formLayout .= '<script type="text/javascript" src="' . JURI::root(true) . '/components/com_rsform/assets/js/pages.js?v=42"></script>' . "\n"; $formLayout .= '<script type="text/javascript">rsfp_changePage(' . $formId . ', ' . $start_page . ', ' . count($pages) . ')</script>' . "\n"; } if ($form->AjaxValidation) { $formLayout .= '<script type="text/javascript">rsfp_addEvent(window, \'load\', function(){var form = rsfp_getForm(' . $formId . '); form.onsubmit = ajaxValidation;});</script>'; } $RSadapter = RSFormProHelper::getLegacyAdapter(); eval($form->ScriptDisplay); //Trigger Event - onBeforeFormDisplay $mainframe->triggerEvent('rsfp_f_onBeforeFormDisplay', array(array('formLayout' => &$formLayout, 'formId' => $formId))); return $formLayout; }