コード例 #1
0
 function showCustomField($field, $selected = array(), $editable = true, $department_id = 0)
 {
     if (empty($field) || empty($field->type)) {
         return false;
     }
     $return = array();
     $return[0] = JText::_($field->label);
     if ($field->required) {
         $return[0] .= ' <span class="rst_required">(*)</span>';
     }
     $return[1] = '';
     $return[2] = $field->description;
     switch ($field->type) {
         // freetext, textbox, textarea, select, multipleselect, checkbox, radio, calendar, calendartime
         case 'freetext':
             $field->values = RSTicketsProHelper::isCode($field->values);
             $return[1] = $field->values;
             break;
         case 'textbox':
             if (isset($selected[$field->name])) {
                 $field->values = $selected[$field->name];
             } else {
                 $field->values = RSTicketsProHelper::isCode($field->values);
             }
             $name = 'rst_custom_fields[' . $field->name . ']';
             if (!empty($department_id)) {
                 $name = 'rst_custom_fields[department_' . $department_id . '][' . $field->name . ']';
             }
             $return[1] = '<input type="text" class="rst_textbox" name="' . $name . '" value="' . RSTicketsProHelper::htmlEscape($field->values) . '" ' . $field->additional . ' />';
             if (!$editable) {
                 $return[1] = RSTicketsProHelper::htmlEscape($field->values);
             }
             break;
         case 'textarea':
             if (isset($selected[$field->name])) {
                 $field->values = $selected[$field->name];
             } else {
                 $field->values = RSTicketsProHelper::isCode($field->values);
             }
             $name = 'rst_custom_fields[' . $field->name . ']';
             if (!empty($department_id)) {
                 $name = 'rst_custom_fields[department_' . $department_id . '][' . $field->name . ']';
             }
             $return[1] = '<textarea class="rst_textarea" name="' . $name . '" ' . $field->additional . '>' . RSTicketsProHelper::htmlEscape($field->values) . '</textarea>';
             if (!$editable) {
                 $return[1] = nl2br(RSTicketsProHelper::htmlEscape($field->values));
             }
             break;
         case 'select':
         case 'multipleselect':
             $field->values = RSTicketsProHelper::isCode($field->values);
             $field->values = str_replace("\r\n", "\n", $field->values);
             $field->values = explode("\n", $field->values);
             $multiple = $field->type == 'multipleselect' ? 'multiple="multiple"' : '';
             $name = 'rst_custom_fields[' . $field->name . '][]';
             if (!empty($department_id)) {
                 $name = 'rst_custom_fields[department_' . $department_id . '][' . $field->name . '][]';
             }
             $return[1] = '<select ' . $multiple . ' class="rst_select" name="' . $name . '" ' . $field->additional . '>';
             foreach ($field->values as $value) {
                 $tmp = explode('|', $value, 2);
                 if (count($tmp) == 2) {
                     $value = $tmp[0];
                     $text = $tmp[1];
                 } else {
                     $value = $tmp[0];
                     $text = $tmp[0];
                 }
                 $found_checked = false;
                 if (preg_match('/\\[c\\]/', $value) || preg_match('/\\[c\\]/', $text)) {
                     $value = str_replace('[c]', '', $value);
                     $text = str_replace('[c]', '', $text);
                     $found_checked = true;
                 }
                 $checked = '';
                 if (isset($selected[$field->name]) && in_array($value, $selected[$field->name])) {
                     $checked = 'selected="selected"';
                 } elseif (!isset($selected[$field->name]) && $found_checked) {
                     $checked = 'selected="selected"';
                 }
                 $return[1] .= '<option ' . $checked . ' value="' . RSTicketsProHelper::htmlEscape($value) . '">' . RSTicketsProHelper::htmlEscape($value) . '</option>';
             }
             $return[1] .= '</select>';
             if (!$editable) {
                 $return[1] = '';
                 if (isset($selected[$field->name])) {
                     if (is_array($selected[$field->name])) {
                         $return[1] = nl2br(RSTicketsProHelper::htmlEscape(implode("\n", $selected[$field->name])));
                     } else {
                         $return[1] = RSTicketsProHelper::htmlEscape($selected[$field->name]);
                     }
                 }
             }
             break;
         case 'checkbox':
             $field->values = RSTicketsProHelper::isCode($field->values);
             $field->values = str_replace("\r\n", "\n", $field->values);
             $field->values = explode("\n", $field->values);
             foreach ($field->values as $i => $value) {
                 $tmp = explode('|', $value, 2);
                 if (count($tmp) == 2) {
                     $value = $tmp[0];
                     $text = $tmp[1];
                 } else {
                     $value = $tmp[0];
                     $text = $tmp[0];
                 }
                 $found_checked = false;
                 if (preg_match('/\\[c\\]/', $value) || preg_match('/\\[c\\]/', $text)) {
                     $value = str_replace('[c]', '', $value);
                     $text = str_replace('[c]', '', $text);
                     $found_checked = true;
                 }
                 $checked = '';
                 if (isset($selected[$field->name]) && in_array($value, $selected[$field->name])) {
                     $checked = 'checked="checked"';
                 } elseif (!isset($selected[$field->name]) && $found_checked) {
                     $checked = 'selected="selected"';
                 }
                 $name = 'rst_custom_fields[' . $field->name . '][]';
                 if (!empty($department_id)) {
                     $name = 'rst_custom_fields[department_' . $department_id . '][' . $field->name . '][]';
                 }
                 $return[1] .= '<input ' . $checked . ' type="checkbox" name="' . $name . '" value="' . RSTicketsProHelper::htmlEscape($value) . '" id="rst_custom_field_' . $field->id . '_' . $i . '" ' . $field->additional . ' /> <label for="rst_custom_field_' . $field->id . '_' . $i . '">' . $text . '</label>';
             }
             if (!$editable) {
                 $return[1] = '';
                 if (isset($selected[$field->name])) {
                     if (is_array($selected[$field->name])) {
                         $return[1] = nl2br(RSTicketsProHelper::htmlEscape(implode("\n", $selected[$field->name])));
                     } else {
                         $return[1] = RSTicketsProHelper::htmlEscape($selected[$field->name]);
                     }
                 }
             }
             break;
         case 'radio':
             $field->values = RSTicketsProHelper::isCode($field->values);
             $field->values = str_replace("\r\n", "\n", $field->values);
             $field->values = explode("\n", $field->values);
             foreach ($field->values as $i => $value) {
                 $tmp = explode('|', $value, 2);
                 if (count($tmp) == 2) {
                     $value = $tmp[0];
                     $text = $tmp[1];
                 } else {
                     $value = $tmp[0];
                     $text = $tmp[0];
                 }
                 $found_checked = false;
                 if (preg_match('/\\[c\\]/', $value) || preg_match('/\\[c\\]/', $text)) {
                     $value = str_replace('[c]', '', $value);
                     $text = str_replace('[c]', '', $text);
                     $found_checked = true;
                 }
                 $checked = '';
                 if (isset($selected[$field->name]) && $selected[$field->name] == $value) {
                     $checked = 'checked="checked"';
                 } elseif (!isset($selected[$field->name]) && $found_checked) {
                     $checked = 'checked="checked"';
                 }
                 $name = 'rst_custom_fields[' . $field->name . ']';
                 if (!empty($department_id)) {
                     $name = 'rst_custom_fields[department_' . $department_id . '][' . $field->name . ']';
                 }
                 $return[1] .= '<input ' . $checked . ' type="radio" name="' . $name . '" value="' . RSTicketsProHelper::htmlEscape($value) . '" id="rst_custom_field_' . $field->id . '_' . $i . '" ' . $field->additional . ' /> <label for="rst_custom_field_' . $field->id . '_' . $i . '">' . $text . '</label>';
             }
             if (!$editable) {
                 $return[1] = RSTicketsProHelper::htmlEscape(@$selected[$field->name]);
             }
             break;
         case 'calendar':
         case 'calendartime':
             if (isset($selected[$field->name])) {
                 $field->values = $selected[$field->name];
             } else {
                 $field->values = RSTicketsProHelper::isCode($field->values);
             }
             $name = 'rst_custom_fields[' . $field->name . ']';
             if (!empty($department_id)) {
                 $name = 'rst_custom_fields[department_' . $department_id . '][' . $field->name . ']';
             }
             $format = $field->type == 'calendartime' ? RSTicketsProHelper::getConfig('date_format') : RSTicketsProHelper::getConfig('date_format_notime');
             $format = RSTicketsProHelper::getCalendarFormat($format);
             $show_time = $field->type == 'calendartime';
             if (!$editable) {
                 $return[1] = RSTicketsProHelper::htmlEscape($field->values);
             } else {
                 $return[1] = JHTML::_('rsticketsprocalendar.calendar', $show_time, $field->values, $name, 'rst_custom_field_' . $field->id, $format, $field->additional);
             }
             break;
     }
     return $return;
 }