Подойдёт. лови. Поля со стилями BS3 и классами валидации под JHtml::_('behavior.formvalidator')
function showFieldForm($field,$content,$default) {
$return = "";
$strtitle = TText::_($field->title);
$strtitle = htmlspecialchars($strtitle);
$name = $field->name;
$fieldname = $field->name;
$value = @$content->$fieldname;
if (is_string($value)) {
$value = TText::_($value);
}
if (($value == "")&&(isset($default)))
{
$default = (object) $default;
$value = @$default->$fieldname;
$value = TText::_($value);
}
$disabled="";
$read_only="";
$options = $field->options;
//We initialize the placeholder if they exist, if not we let it empty
if(isset($options->placeholder_form) && $options->placeholder_form != ""){
$placeholder = JText::_(htmlspecialchars($options->placeholder_form));
} else {
$placeholder = "";
}
$values = array();
if ((!isset($options))||
(!isset($options->select_values_storage_type))||
($options->select_values_storage_type == "internal")) {
if (@$this->field_values[$field->fieldid]) {
$values = $this->field_values[$field->fieldid];
}
} else if ($options->select_values_storage_type == "db") {
$dbname = $options->select_db_storage_db_name;
$_name = $options->select_db_storage_column_name;
$_value = $options->select_db_storage_column_value;
//$parent = $options->select_db_storage_column_parent_value;
$sql = "SELECT `$_name` as fieldtitle,`$_value` as fieldvalue FROM $dbname";
$this->_db->setQuery($sql);
$values = $this->_db->loadObjectList();
}
foreach($values as $key => $val) {
$values[$key]->fieldtitle = htmlspecialchars(TText::_($val->fieldtitle));
}
switch($field->type)
{
case 'checkbox':
if ($field->required == 1) {
$mosReq = "required";
$mosReqClass = "required";
} else {
$mosReq = "";
$mosReqClass = "";
}
if ($value == 1)
$return .= "<input type='checkbox' $mosReq class='$mosReqClass' checked='checked' id='$name' name='$name' value='1' />\n";
else
$return .= "<input type='checkbox' $mosReq class='$mosReqClass' name='$name' id='$name' value='1' />\n";
break;
case 'multicheckbox':
case 'multicheckboximage':
if ($field->required == 1) {
$mosReq = "required";
$mosReqClass = "required";
} else {
$mosReq = "";
$mosReqClass = "";
}
$return .= "<fieldset id='f".$field->name."' $mosReq class='checkboxes $mosReqClass'>";
for ($i=0 ; $i < count($values); $i++) {
$fieldvalue = @$values[$i]->fieldvalue;
$fieldtitle = @$values[$i]->fieldtitle;
$fieldvalueid = @$values[$i]->fieldvalueid;
if ($field->type == 'multicheckbox') {
if (isset($fieldtitle))
$fieldtitle=TText::_($fieldtitle);
} else {
$fieldtitle = "<img src=\"{$this->baseurl}images/com_adsmanager/fields/$fieldtitle\" alt=\"$fieldtitle\" />";
}
if (isset($values[$i]->fieldtitle)) {
if (is_array($value)) {
$value = ",".implode(',',$value).",";
}
$return .= "<div class=\"checkbox\">\n";
if ((strpos($value, ",".$fieldvalue.",") === false) &&
(strpos($value, $fieldtitle."|*|") === false) &&
(strpos($value, "|*|".$fieldtitle) === false) &&
($value != $fieldtitle)) {
$return .= "<input type='checkbox' id='f".$name.$fieldvalueid."' name='".$name."[]' value=\"".htmlspecialchars($fieldvalue)."\" />\n";
$return .= "<label for='f".$field->name.$fieldvalueid."'>$fieldtitle</label>";
} else {
$return .= "<input type='checkbox' id='f".$name.$fieldvalueid."' checked='checked' name='".$name."[]' value=\"".htmlspecialchars($fieldvalue)."\" />\n";
$return .= "<label for='f".$field->name.$fieldvalueid."'>$fieldtitle</label>";
}
$return .= "</div>";
}
}
$return .= "</fieldset>";
break;
case 'date':
$options = array();
$options['size'] = 25;
$options['maxlength'] = 19;
if ($field->required == 1) {
$options['class'] = 'required';
$options['mosReq'] = '1';
$options['required'] = '1';
$options['mosLabel'] = "$strtitle";
} else {
$options['class'] = 'adsmanager';
}
$return .= JHTML::_('behavior.calendar');
/*if ($value != "") {
if (function_exists("strptime")) {
$a = strptime($value, TText::_('ADSMANAGER_DATE_FORMAT_LC'));
$timestamp = mktime(0, 0, 0, $a['tm_mon']+1, $a['tm_mday'], $a['tm_year']+1900);
} else {
$timestamp = strtotime($value);
}
if ($timestamp != null)
$value = date("Y-m-d",$timestamp);
else
$value = "";
}*/
$return .= JHTML::_('calendar', "", "$field->name", "$field->name", TText::_('ADSMANAGER_DATE_FORMAT_LC'), $options);
$return .= "<script type='text/javascript'>jQ(document).ready(function() {jQ('#".$field->name."').val(".json_encode($value).");});</script>";
//$return = "<input $class type='text' name='$field->name' id='$field->name' size='25' maxlength='19' value='$value' readonly=true/>";
//$return .= "<input name='reset' type='reset' class='button' onclick=\"return showCalendar('$field->name', '%y-%m-%d');\" value='...' />";
//$return .= $return;
break;
case 'editor':
$editor = JFactory::getEditor();
$return .= $editor->display($field->name, $value, '', '', $field->cols, $field->rows);
break;
case 'select':
if ($field->editable == 0)
$disabled = "disabled=true";
else
$disabled = "";
if ($field->required == 1)
$return .= "<select id='f$name' name='$name' required class='required form-control' $disabled>\n";
else
$return .= "<select id='f$name' name='$name' class='form-control' $disabled>\n";
if (($field->required == 0)||($value=="")) {
$return .= "<option value=''>".$placeholder."</option>\n";
}
foreach($values as $v) {
$ftitle = $v->fieldtitle;
if (($value == $v->fieldvalue)||($value == $ftitle))
$return .= "<option value=\"".htmlspecialchars($v->fieldvalue)."\" selected='selected' >".$ftitle."</option>\n";
else
$return .= "<option value=\"".htmlspecialchars($v->fieldvalue)."\" >".$ftitle."</option>\n";
}
$return .= "</select>";
break;
case 'multiselect':
if ($field->editable == 0)
$disabled = "disabled=true";
else
$disabled = "";
if ($field->required == 1) {
$mosReq = "required";
$mosReqClass = "required";
} else {
$mosReq = "";
$mosReqClass = "";
}
$return .= "<select id=\"f".$name."\" name=\"".$name."[]\" $mosReq multiple='multiple' size='$field->size' class='$mosReqClass form-control' $disabled>";
if (($field->required == 0)||($value=="")) {
$return .= "<option value=''>".$placeholder."</option>\n";
}
foreach($values as $v) {
$ftitle = $v->fieldtitle;
if ($field->required == 1) {
$mosReq = "required";
$mosReqClass = "required";
} else {
$mosReq = "";
$mosReqClass = "";
}
if ((strpos($value, ",".$v->fieldvalue.",") === false) &&
(strpos($value, $ftitle."|*|") === false) &&
(strpos($value, "|*|".$ftitle) === false) &&
($value != $ftitle))
$return .= "<option value=\"".htmlspecialchars($v->fieldvalue)."\" >$ftitle</option>\n";
else
$return .= "<option value=\"".htmlspecialchars($v->fieldvalue)."\" selected='selected' >$ftitle</option>\n";
}
$return .= "</select>";
break;
case 'textarea':
if ($field->editable == 0)
$read_only = "readonly=true";
else
$read_only = "";
if ($field->required == 1) {
$mosReq = "required";
$mosReqClass = "required";
} else {
$mosReq = "";
$mosReqClass = "";
}
$return .= "<textarea class='$mosReqClass form-control' $mosReq id='f$name' name='$name' cols='".$field->cols."' rows='".$field->rows."' wrap='VIRTUAL' placeholder=\"$placeholder\" onkeypress='CaracMax(this, $field->maxlength) ;' onBlur='CaracMax(this, $field->maxlength) ;' $read_only>".htmlspecialchars($value)."</textarea>\n";
break;
case 'url':
if ($field->editable == 0)
$recontent_only = "readonly=true";
else
$recontent_only = "";
if(!isset($options->display_prefix) || $options->display_prefix == 1){
$return .= "<span class=\"url-prefix\">http://</span>";
}
if ($field->required == 1) {
$mosReq = "required";
$mosReqClass = "required";
} else {
$mosReq = "";
$mosReqClass = "";
}
$return .= "<input class='$mosReqClass form-control' $mosReq id='f$field->name' type='text' name='$field->name' size='$field->size' maxlength='$field->maxlength' $recontent_only value=\"".htmlspecialchars($value)."\" placeholder=\"$placeholder\" />\n";
break;
case 'number':
if ($field->editable == 0)
$read_only = "readonly=true";
else
$read_only = "";
if ($field->required == 1) {
$mosReq = "required";
$mosReqClass = "required validate-numeric";
} else {
$mosReq = "";
$mosReqClass = "";
}
$return .= "<input class='$mosReqClass form-control' $mosReq id='f$name' type='number' test='number' name='$name' size='$field->size' maxlength='$field->maxlength' $read_only value=\"$value\" placeholder=\"$placeholder\" />\n";
break;
case 'price':
if ($field->editable == 0)
$read_only = "readonly=true";
else
$read_only = "";
if ($field->required == 1) {
$mosReq = "required";
$mosReqClass = "required";
} else {
$mosReq = "";
$mosReqClass = "";
}
$input = "<input class='form-control $mosReqClass' $mosReq id='f$name' type='number' test='number' name='$name' size='$field->size' maxlength='$field->maxlength' $read_only value=\"$value\" placeholder=\"$placeholder\" />\n";
if(isset($options->currency_symbol) && $options->currency_symbol != '') {
$currency = "<div class=\"input-group-addon\">".$options->currency_symbol."</div>";
if($options->currency_position == 'before') {
if(!isset($options->currency_display_in_form) || $options->currency_display_in_form == 1){
$return .= '<div class="input-group">';
$return .= $currency;
$return .= $input;
$return .= '</div>';
} else {
$return .= $this->formatPrice(false, $options);
$return .= $input;
}
} else {
if(!isset($options->currency_display_in_form) || $options->currency_display_in_form == 1){
$return .= '<div class="input-group">';
$return .= $input;
$return .= $currency;
$return .= '</div>';
} else {
$return .= $input;
$return .= $this->formatPrice(false, $options);
}
}
} else {
$return .= $input;
}
break;
case 'emailaddress':
if ($field->editable == 0)
$read_only = "readonly=true";
else
$read_only = "";
if ($field->required == 1)
$return .= "<input class='required validate-email form-control' required id='f$name' type='email' test='emailaddress' name=\"$name\" size='$field->size' maxlength='$field->maxlength' $read_only value=\"".htmlspecialchars($value)."\" placeholder=\"$placeholder\" />\n";
else
$return .= "<input class='form-control' id='f$name' type='email' test='emailaddress' name=\"$name\" size='$field->size' maxlength='$field->maxlength' $read_only value=\"".htmlspecialchars($value)."\" $placeholder />\n";
break;
case 'text':
if ($field->editable == 0)
$read_only = "readonly=true";
else
$read_only = "";
if ($field->required == 1)
$return .= "<input class='required form-control' required id='f$name' type='text' name='$name' size='$field->size' maxlength='$field->maxlength' $read_only value=\"".htmlspecialchars($value)."\" placeholder=\"$placeholder\" />\n";
else
$return .= "<input class='form-control' id='f$name' type='text' name='$name' size='$field->size' maxlength='$field->maxlength' $read_only value=\"".htmlspecialchars($value)."\" placeholder=\"$placeholder\" />\n";
break;
case 'radio':
case 'radioimage':
if ($field->required == 1) {
$mosReq = "required";
$mosReqClass = "required";
} else {
$mosReq = "";
$mosReqClass = "";
}
$return .= "<fieldset id='f".$field->name."' $mosReq class='radioboxes $mosReqClass'>";
for ($i=0 ; $i < count($values); $i++) {
$fieldvalue = @$values[$i]->fieldvalue;
$fieldtitle = @$values[$i]->fieldtitle;
$fieldvalueid = @$values[$i]->fieldvalueid;
if ($field->type == 'radio') {
if (isset($fieldtitle))
$fieldtitle=TText::_($fieldtitle);
} else {
$fieldtitle = "<img src=\"{$this->baseurl}images/com_adsmanager/fields/$fieldtitle\" alt=\"$fieldtitle\" />";
}
if (isset($values[$i]->fieldtitle)) {
if (is_array($value)) {
$value = ",".implode(',',$value).",";
}
$return .= "<div class=\"radio\">\n";
if ((strpos($value, ",".$fieldvalue.",") === false) &&
(strpos($value, $fieldtitle."|*|") === false) &&
(strpos($value, "|*|".$fieldtitle) === false) &&
($value != $fieldtitle)) {
$return .= "<input type='radio' id='f".$name.$fieldvalueid."' name='".$name."[]' value=\"".htmlspecialchars($fieldvalue)."\" />\n";
$return .= "<label for='f".$field->name.$fieldvalueid."'>$fieldtitle</label>";
} else {
$return .= "<input type='radio' id='f".$name.$fieldvalueid."' checked='checked' name='".$name."[]' value=\"".htmlspecialchars($fieldvalue)."\" />\n";
$return .= "<label for='f".$field->name.$fieldvalueid."'>$fieldtitle</label>";
}
$return .= "</div>";
}
}
$return .= "</fieldset>";
break;
case 'file':
if ($field->required == 1) {
$mosReq = "required";
$mosReqClass = "required";
} else {
$mosReq = "";
$mosReqClass = "";
}
$return .= "<input id='f$name' $mosReq class='$mosReqClass' type='file' name='$name' placeholder=\"$placeholder\" />";
if (isset($value)&&($value != "")) {
$return .= "<br/><a href='{$this->baseurl}images/com_adsmanager/files/$value' target='_blank'>".TText::_('ADSMANAGER_DOWNLOAD_FILE')."</a>";
$return .= "<br/><input type='hidden' name='delete_$name' value='0'>";
$return .= "<input style='vertical-align:middle' type='checkbox' name='delete_$name' value='1'> ".TText::_('ADSMANAGER_DELETE_FILE');
}
break;
default:
if(isset($this->plugins[$field->type])) {
if ($content == null) {
$content = new stdClass();
}
if (!isset($content->id))
$content->id = 0;
$result = $this->plugins[$field->type]->getFormDisplay($content,$field,$default );
if ($result != "")
$return .= $result;
else
return "";
}
}
if (function_exists("checkPaidField")) {
$return .= checkPaidField($field);
}
return $return;
}