Новости Joomla

Вышли релизы Joomla 6.1 и Joomla 5.4.5: новые возможности и стабильность

Релиз Joomla 6.1.0

Проект Joomla! объявил о доступности Joomla 6.1 [Nyota] — новой минорной версии шестой серии, а также о выпуске релиза исправлений ошибок Joomla 5.4.5. Релиз 6.1 приносит ряд долгожданных функций, повышающих удобство управления контентом и защиту от спама.

👩‍💻 Компонент "CS Афиши" для Joomla.

👩‍💻 Компонент "CS Афиши" для Joomla.

Расширение "CS Афиши" позволяет выводить список мероприятий, фильтровать их по датам, поиск по заголовкам и описанию.

В состав пакета расширений входят:
- Компонент "CS Афиши"
- Модуль "Календарь событий"
- Модуль "Предстоящие события"
- Библиотека "ImgResize"

Расширение "CS Афиши" позволяет выводить список мероприятий, фильтровать их по датам, поиск по заголовкам и описанию.

Модуль "Календарь событий" отображает предстоящие и прошедшие мероприятие на календаре, с отображением мероприятий на конкретную дату во всплывающем окне.

Модуль "Предстоящие события" показывает список предстоящий событий по порядку их наступления.

P.S. Расширение платное, но плата символическая, чисто для отработки приема платежей. Ключи без ограничения по времени, купившие сейчас - смогут обновляться без ограничений.

Разработчик - участник нашего сообщества Дмитрий Денисов (@codersite).

Страница расширения
Демо

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

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 »
Спасибо!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

[Решено]Дублирования ссылки "объвления" в breadcrumb, в компоненте AdsManager

Автор nicklas

Ответов: 4
Просмотров: 7042
Последний ответ 25.04.2024, 23:13:18
от Rinat abzyi
AdsManager вывод нужных полей по отдельности

Автор klekovkinandrey

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

Автор FlexNL

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

Автор murovoz

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

Автор kaman62

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