public static function showPreview($formId, $componentId, $data) { $mainframe = JFactory::getApplication(); $formId = (int) $formId; $componentId = (int) $componentId; // Legacy $r = array(); $r['ComponentTypeName'] = $data['ComponentTypeName']; $out = ''; //Trigger Event - rsfp_bk_onBeforeCreateComponentPreview $mainframe->triggerEvent('rsfp_bk_onBeforeCreateComponentPreview', array(array('out' => &$out, 'formId' => $formId, 'componentId' => $componentId, 'ComponentTypeName' => $r['ComponentTypeName'], 'data' => $data))); static $passedPageBreak; $codeIcon = ''; switch ($r['ComponentTypeName']) { case 'textBox': $defaultValue = $data['DEFAULTVALUE']; if (RSFormProHelper::hasCode($defaultValue)) { $defaultValue = JText::_('RSFP_PHP_CODE_PLACEHOLDER'); $codeIcon = self::getIcon('php'); } $out .= '<td>' . $data['CAPTION'] . '</td>' . '<td>' . $codeIcon . '<input type="text" value="' . RSFormProHelper::htmlEscape($defaultValue) . '" size="' . $data['SIZE'] . '" /></td>'; break; case 'textArea': $defaultValue = $data['DEFAULTVALUE']; if (RSFormProHelper::hasCode($defaultValue)) { $defaultValue = JText::_('RSFP_PHP_CODE_PLACEHOLDER'); $codeIcon = self::getIcon('php'); } $out .= '<td>' . $data['CAPTION'] . '</td>' . '<td>' . $codeIcon . '<textarea cols="' . $data['COLS'] . '" rows="' . $data['ROWS'] . '">' . RSFormProHelper::htmlEscape($defaultValue) . '</textarea></td>'; break; case 'selectList': $out .= '<td>' . $data['CAPTION'] . '</td>'; $items = $data['ITEMS']; if (RSFormProHelper::hasCode($items)) { $items = JText::_('RSFP_PHP_CODE_PLACEHOLDER'); $codeIcon = self::getIcon('php'); } $out .= '<td>' . $codeIcon . '<select ' . ($data['MULTIPLE'] == 'YES' ? 'multiple="multiple"' : '') . ' size="' . $data['SIZE'] . '">'; $items = str_replace(array("\r\n", "\r"), "\n", $items); $items = explode("\n", $items); $special = array('[c]', '[g]', '[d]'); foreach ($items as $item) { $item = preg_replace('#\\[p(.*?)\\]#is', '', $item); @(list($val, $txt) = @explode('|', str_replace($special, '', $item), 2)); if (is_null($txt)) { $txt = $val; } // <optgroup> if (strpos($item, '[g]') !== false) { $out .= '<optgroup label="' . RSFormProHelper::htmlEscape($val) . '">'; continue; } // </optgroup> if (strpos($item, '[/g]') !== false) { $out .= '</optgroup>'; continue; } $additional = ''; // selected if (strpos($item, '[c]') !== false) { $additional .= 'selected="selected"'; } // disabled if (strpos($item, '[d]') !== false) { $additional .= 'disabled="disabled"'; } $out .= '<option ' . $additional . ' value="' . RSFormProHelper::htmlEscape($val) . '">' . RSFormProHelper::htmlEscape($txt) . '</option>'; } $out .= '</select></td>'; break; case 'checkboxGroup': $out .= '<td>' . $data['CAPTION'] . '</td>' . '<td>'; $items = $data['ITEMS']; if (RSFormProHelper::hasCode($items)) { $items = JText::_('RSFP_PHP_CODE_PLACEHOLDER'); $codeIcon = self::getIcon('php'); $out .= $codeIcon; } $items = str_replace(array("\r\n", "\r"), "\n", $items); $items = explode("\n", $items); $special = array('[c]', '[d]'); $i = 0; foreach ($items as $item) { $item = preg_replace('#\\[p(.*?)\\]#is', '', $item); @(list($val, $txt) = @explode('|', str_replace($special, '', $item), 2)); if (is_null($txt)) { $txt = $val; } $additional = ''; // checked if (strpos($item, '[c]') !== false) { $additional .= 'checked="checked"'; } // disabled if (strpos($item, '[d]') !== false) { $additional .= 'disabled="disabled"'; } $out .= '<input type="checkbox" ' . $additional . ' value="' . RSFormProHelper::htmlEscape($val) . '" id="' . $data['NAME'] . $i . '"/><label for="' . $data['NAME'] . $i . '">' . $txt . '</label>'; if ($data['FLOW'] == 'VERTICAL') { $out .= '<br/>'; } $i++; } $out .= '</td>'; break; case 'radioGroup': $out .= '<td>' . $data['CAPTION'] . '</td>' . '<td>'; $items = $data['ITEMS']; if (RSFormProHelper::hasCode($items)) { $items = JText::_('RSFP_PHP_CODE_PLACEHOLDER'); $codeIcon = self::getIcon('php'); $out .= $codeIcon; } $items = str_replace(array("\r\n", "\r"), "\n", $items); $items = explode("\n", $items); $special = array('[c]', '[d]'); $i = 0; foreach ($items as $item) { $item = preg_replace('#\\[p(.*?)\\]#is', '', $item); @(list($val, $txt) = @explode('|', str_replace($special, '', $item), 2)); if (is_null($txt)) { $txt = $val; } $additional = ''; // checked if (strpos($item, '[c]') !== false) { $additional .= 'checked="checked"'; } // disabled if (strpos($item, '[d]') !== false) { $additional .= 'disabled="disabled"'; } $out .= '<input type="radio" ' . $additional . ' value="' . RSFormProHelper::htmlEscape($val) . '" id="' . $data['NAME'] . $i . '"/><label for="' . $data['NAME'] . $i . '">' . $txt . '</label>'; if ($data['FLOW'] == 'VERTICAL') { $out .= '<br/>'; } $i++; } $out .= '</td>'; break; case 'calendar': $out .= '<td>' . $data['CAPTION'] . '</td>'; $out .= '<td>' . self::getIcon('calendar') . ' ' . JText::_('RSFP_COMP_FVALUE_' . $data['CALENDARLAYOUT']) . '</td>'; break; case 'captcha': $out .= '<td>' . $data['CAPTION'] . '</td>'; $out .= '<td>'; switch (@$data['IMAGETYPE']) { default: case 'FREETYPE': case 'NOFREETYPE': $out .= '<img src="index.php?option=com_rsform&task=captcha&componentId=' . $componentId . '&tmpl=component&sid=' . mt_rand() . '" id="captcha' . $componentId . '" alt="' . $data['CAPTION'] . '"/>'; $out .= $data['FLOW'] == 'HORIZONTAL' ? '' : '<br/>'; $out .= '<input type="text" value="" id="captchaTxt' . $componentId . '" ' . $data['ADDITIONALATTRIBUTES'] . ' />'; $out .= $data['SHOWREFRESH'] == 'YES' ? ' <a href="" onclick="refreshCaptcha(' . $componentId . ',\'index.php?option=com_rsform&task=captcha&componentId=' . $componentId . '&tmpl=component\'); return false;">' . $data['REFRESHTEXT'] . '</a>' : ''; break; case 'INVISIBLE': $out .= '{hidden captcha}'; break; } $out .= '</td>'; break; case 'fileUpload': $out .= '<td>' . $data['CAPTION'] . '</td>'; $out .= '<td><input type="file" /></td>'; break; case 'freeText': $out .= '<td> </td>'; $out .= '<td>' . $data['TEXT'] . '</td>'; break; case 'hidden': $out .= '<td> </td>'; $out .= '<td>' . self::getIcon('hidden') . JText::_('RSFP_HIDDEN_FIELD_PLACEHOLDER') . '</td>'; break; case 'imageButton': $out .= '<td>' . $data['CAPTION'] . '</td>'; $out .= '<td>'; $out .= '<input type="image" src="' . RSFormProHelper::htmlEscape($data['IMAGEBUTTON']) . '"/>'; if ($data['RESET'] == 'YES') { $out .= ' <input type="image" src="' . RSFormProHelper::htmlEscape($data['IMAGERESET']) . '"/>'; } $out .= '</td>'; break; case 'button': case 'submitButton': $out .= '<td>' . $data['CAPTION'] . '</td>'; if (isset($data['BUTTONTYPE']) && $data['BUTTONTYPE'] == 'TYPEBUTTON') { $out .= '<td><button type="button">' . RSFormProHelper::htmlEscape($data['LABEL']) . '</button>'; } else { $out .= '<td><input type="button" value="' . RSFormProHelper::htmlEscape($data['LABEL']) . '" />'; } if ($data['RESET'] == 'YES') { if (isset($data['BUTTONTYPE']) && $data['BUTTONTYPE'] == 'TYPEBUTTON') { $out .= ' <button type="reset">' . RSFormProHelper::htmlEscape($data['RESETLABEL']) . '</button>'; } else { $out .= ' <input type="reset" value="' . RSFormProHelper::htmlEscape($data['RESETLABEL']) . '"/>'; } } $out .= '</td>'; break; case 'password': $out .= '<td>' . $data['CAPTION'] . '</td>'; $out .= '<td><input type="password" value="' . RSFormProHelper::htmlEscape($data['DEFAULTVALUE']) . '" size="' . $data['SIZE'] . '"/></td>'; break; case 'ticket': $out .= '<td> </td>'; $out .= '<td>' . self::getIcon('support') . RSFormProHelper::generateString($data['LENGTH'], $data['CHARACTERS']) . '</td>'; break; case 'pageBreak': $out .= '<td> </td>'; $out .= '<td>' . ($passedPageBreak ? '<input type="button" value="' . RSFormProHelper::htmlEscape($data['PREVBUTTON']) . '" />' : '') . ' <input type="button" value="' . RSFormProHelper::htmlEscape($data['NEXTBUTTON']) . '" /></td>'; $passedPageBreak = true; break; case 'rseprotickets': $out .= '<td>' . $data['CAPTION'] . '</td>'; $out .= '<td>' . JText::_('RSFP_RSEVENTSPRO_TICKETS') . '</td>'; break; case 'birthDay': $out .= '<td>' . $data['CAPTION'] . '</td>'; $out .= '<td>'; $day = strpos($data['DATEORDERING'], 'D'); $month = strpos($data['DATEORDERING'], 'M'); $year = strpos($data['DATEORDERING'], 'Y'); $items = array(); if ($data['SHOWDAY'] == 'YES') { $item = '<select>'; if (strlen($data['SHOWDAYPLEASE']) > 0) { $item .= '<option>' . self::htmlEscape($data['SHOWDAYPLEASE']) . '</option>'; } for ($i = 1; $i <= 31; $i++) { switch ($data['SHOWDAYTYPE']) { default: case 'DAY_TYPE_1': $val = $i; break; case 'DAY_TYPE_01': $val = str_pad($i, 2, '0', STR_PAD_LEFT); break; } $item .= '<option>' . $val . '</option>'; } $item .= '</select>'; $items[$day] = $item; } if ($data['SHOWMONTH'] == 'YES') { $lang = JFactory::getLanguage(); $lang->load('com_rsform', JPATH_SITE); $item = '<select>'; if (strlen($data['SHOWMONTHPLEASE']) > 0) { $item .= '<option>' . self::htmlEscape($data['SHOWMONTHPLEASE']) . '</option>'; } for ($i = 1; $i <= 12; $i++) { switch ($data['SHOWMONTHTYPE']) { default: case 'MONTH_TYPE_1': $val = $i; break; case 'MONTH_TYPE_01': $val = str_pad($i, 2, '0', STR_PAD_LEFT); break; case 'MONTH_TYPE_TEXT_SHORT': $val = JText::_('RSFP_CALENDAR_MONTHS_SHORT_' . $i); break; case 'MONTH_TYPE_TEXT_LONG': $val = JText::_('RSFP_CALENDAR_MONTHS_LONG_' . $i); break; } $item .= '<option>' . $val . '</option>'; } $item .= '</select>'; $items[$month] = $item; } if ($data['SHOWYEAR'] == 'YES') { $item = '<select>'; if (strlen($data['SHOWYEARPLEASE']) > 0) { $item .= '<option>' . self::htmlEscape($data['SHOWYEARPLEASE']) . '</option>'; } $start = (int) $data['STARTYEAR']; $end = (int) $data['ENDYEAR']; if ($start < $end) { for ($i = $start; $i <= $end; $i++) { $item .= '<option>' . $i . '</option>'; } } else { for ($i = $start; $i >= $end; $i--) { $item .= '<option>' . $i . '</option>'; } } $item .= '</select>'; $items[$year] = $item; } ksort($items); $out .= implode($data['DATESEPARATOR'], $items); $out .= '</td>'; break; case 'gmaps': $out .= '<td>' . $data['CAPTION'] . '</td>'; $out .= '<td>' . self::getIcon('gmaps') . '</td>'; break; default: $out = '<td colspan="2" style="color:#333333"><em>' . JText::_('RSFP_COMP_PREVIEW_NOT_AVAILABLE') . '</em></td>'; break; } //Trigger Event - rsfp_bk_onAfterCreateComponentPreview $mainframe->triggerEvent('rsfp_bk_onAfterCreateComponentPreview', array(array('out' => &$out, 'formId' => $formId, 'componentId' => $componentId, 'ComponentTypeName' => $r['ComponentTypeName'], 'data' => $data))); return $out; }