Форум русской поддержки Joomla!® CMS
04.12.2016, 18:18:01 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Валидация AdsManager

 (Прочитано 333 раз)
0 Пользователей и 1 Гость смотрят эту тему.
starslan
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 5


« : 09.09.2016, 19:02:26 »

Здравствуйте, подскажите пожалуйста где в AdsManager происходит валидация на стороне сервера. Просмотрел ф-ю save() в conеroller.php и что-то не нашел. Просто если убрать валидацию с фронта, у меня добавляются объявления с пустыми обязательными полями.
Записан
moonaway
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 21


« Ответ #1 : 10.11.2016, 03:25:59 »

Сегодня этим  занимался. Менял валидацию на стандартную джумловскую, чтобы лишние скрипты выкинуть. Так вот - на стороне сервера валидации нет.
Записан
starslan
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 5


« Ответ #2 : 10.11.2016, 10:03:30 »

Да я уже понял, что даже платная версия без валидации. А каким образом переделал на джумловскую?
Записан
moonaway
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 21


« Ответ #3 : 11.11.2016, 16:42:25 »

Да я уже понял, что даже платная версия без валидации. А каким образом переделал на джумловскую?

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

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

Репутация: +0/-0
Offline Offline

Сообщений: 5


« Ответ #4 : 11.11.2016, 17:07:52 »

Вот спасибо. Чет не нашел где плюсануть тебе?
Записан
moonaway
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 21


« Ответ #5 : 11.11.2016, 17:38:09 »

Какая у тебя версия? Если 3.1.6 и Bootstrap 3, то могу сразу кинуть функцию, чтобы сам не парился как я часа 4. Там есть нюансы вроде того, чтобы чекбоксы обернуть одним required, а не каждый в отдельности и прочая мелочевка... знак валюты рядом с полем цены и тд. В базе эта страница вообще невероятно кривая на мой взляд.

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

Репутация: +0/-0
Offline Offline

Сообщений: 5


« Ответ #6 : 16.11.2016, 11:07:02 »

3.1.5 Btsr 2
Записан
moonaway
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 21


« Ответ #7 : 16.11.2016, 22: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
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 5


« Ответ #8 : 17.11.2016, 09:46:15 »

Спасибо!
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet