0 Пользователей и 1 Гость просматривают эту тему.
  • 8 Ответов
  • 1199 Просмотров
*

starslan

  • Новичок
  • 8
  • 0 / 0
Валидация AdsManager
« : 09.09.2016, 18:02:26 »
Здравствуйте, подскажите пожалуйста где в AdsManager происходит валидация на стороне сервера. Просмотрел ф-ю save() в conеroller.php и что-то не нашел. Просто если убрать валидацию с фронта, у меня добавляются объявления с пустыми обязательными полями.
*

moonaway

  • Осваиваюсь на форуме
  • 26
  • 0 / 0
Re: Валидация AdsManager
« Ответ #1 : 10.11.2016, 02:25:59 »
Сегодня этим  занимался. Менял валидацию на стандартную джумловскую, чтобы лишние скрипты выкинуть. Так вот - на стороне сервера валидации нет.
*

starslan

  • Новичок
  • 8
  • 0 / 0
Re: Валидация AdsManager
« Ответ #2 : 10.11.2016, 09:03:30 »
Да я уже понял, что даже платная версия без валидации. А каким образом переделал на джумловскую?
*

moonaway

  • Осваиваюсь на форуме
  • 26
  • 0 / 0
Re: Валидация AdsManager
« Ответ #3 : 11.11.2016, 15:42:25 »
Да я уже понял, что даже платная версия без валидации. А каким образом переделал на джумловскую?

Удалил со страницы шаблона сторонний скрипт валидации, подгрузил стандартный джумловский JHtml::_('behavior.formvalidator'); и изменил поля в функции showFieldForm (components/com_adsmanager/helpers/field.php) чтобы прописывались стандартные классы required. Вышло даже лучше стандартной в AdsManager - все ошибки выводятся не криво-косо под полями, а стандартно в поле вывода ошибок Joomla.

Получилось так
« Последнее редактирование: 11.11.2016, 16:41:49 от moonaway »
*

starslan

  • Новичок
  • 8
  • 0 / 0
Re: Валидация AdsManager
« Ответ #4 : 11.11.2016, 16:07:52 »
Вот спасибо. Чет не нашел где плюсануть тебе?
*

moonaway

  • Осваиваюсь на форуме
  • 26
  • 0 / 0
Re: Валидация AdsManager
« Ответ #5 : 11.11.2016, 16:38:09 »
Какая у тебя версия? Если 3.1.6 и Bootstrap 3, то могу сразу кинуть функцию, чтобы сам не парился как я часа 4. Там есть нюансы вроде того, чтобы чекбоксы обернуть одним required, а не каждый в отдельности и прочая мелочевка... знак валюты рядом с полем цены и тд. В базе эта страница вообще невероятно кривая на мой взляд.

PS. Да где-то есть, вроде, где поставить в карму)
« Последнее редактирование: 11.11.2016, 16:43:52 от moonaway »
*

starslan

  • Новичок
  • 8
  • 0 / 0
Re: Валидация AdsManager
« Ответ #6 : 16.11.2016, 10:07:02 »
3.1.5 Btsr 2
*

moonaway

  • Осваиваюсь на форуме
  • 26
  • 0 / 0
Re: Валидация AdsManager
« Ответ #7 : 16.11.2016, 21:05:15 »
3.1.5 Btsr 2
Подойдёт. лови. Поля со стилями 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'>&nbsp;".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;
}
*

starslan

  • Новичок
  • 8
  • 0 / 0
Re: Валидация AdsManager
« Ответ #8 : 17.11.2016, 08:46:15 »
Спасибо!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

AdsManager вывод нужных полей по отдельности

Автор klekovkinandrey

Ответов: 2
Просмотров: 12606
Последний ответ 06.04.2024, 09:54:15
от Rinat abzyi
AdsManager загрузка файлов

Автор FlexNL

Ответов: 1
Просмотров: 1445
Последний ответ 21.10.2021, 17:20:09
от khan-alex
AdsManager 2.9.13 Есть ли возможность добавить функцию снять с публикации по мимо редактировать и уд

Автор murovoz

Ответов: 11
Просмотров: 11619
Последний ответ 27.03.2020, 22:39:23
от Pavel
Два компонента AdsManager в одном движке

Автор kaman62

Ответов: 12
Просмотров: 26779
Последний ответ 27.03.2020, 22:32:04
от Pavel
Onlinestatus CB в AdsManager

Автор Den JW

Ответов: 1
Просмотров: 9218
Последний ответ 17.02.2020, 23:37:52
от Den JW