示例#1
0
 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&amp;task=captcha&amp;componentId=' . $componentId . '&amp;tmpl=component&amp;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' ? '&nbsp;&nbsp;<a href="" onclick="refreshCaptcha(' . $componentId . ',\'index.php?option=com_rsform&amp;task=captcha&amp;componentId=' . $componentId . '&amp;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>&nbsp;</td>';
             $out .= '<td>' . $data['TEXT'] . '</td>';
             break;
         case 'hidden':
             $out .= '<td>&nbsp;</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 .= '&nbsp;&nbsp;<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 .= '&nbsp;&nbsp;<button type="reset">' . RSFormProHelper::htmlEscape($data['RESETLABEL']) . '</button>';
                 } else {
                     $out .= '&nbsp;&nbsp;<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>&nbsp;</td>';
             $out .= '<td>' . self::getIcon('support') . RSFormProHelper::generateString($data['LENGTH'], $data['CHARACTERS']) . '</td>';
             break;
         case 'pageBreak':
             $out .= '<td>&nbsp;</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;
 }