Новости Joomla

Совет по Joomla: несколько значений по умолчанию в XML-формах для стандартных полей типа list

👩‍💻 Совет по Joomla: несколько значений по умолчанию в XML-формах для стандартных полей типа list.При работе над плагином возникла необходимость указать стандартный набор из нескольких элементов стандартного поля списка. И хотелось указать их в стандартном же атрибуте default для полей. Когда это нужно?Когда Ваши пользователи устанавливают плагин и НЕ заходят в настройки - в коде вы можете использовать значения по умолчанию с помощью класса Registry (писал об этом ранее) и всегда быть уверенным, что хоть какие-то жизненно необходимые параметры к вам придут всегда. 🧐 Но как сделать то же самое для интерфейса админки?Пользователя нужно направлять, предлагать очевидный работоспособный сценарий для начала, а дальше он уже сам разберется. Когда человек заходит в параметры свежеустановленного плагина в Form ещё нет данных и параметры по умолчанию выставляются из атрибутов default в xml-полях.
<field name="showdesc" type="radio"                       label="PLG_CFI_PARAM_SHOWDESC"                       class="btn-group btn-group-yesno"                       default="1">                    <option value="0">JNO</option>                    <option value="1">JYES</option>                </field>
Здесь по умолчанию будет включено "Да". И если пользователь не переключит параметр, то при сохранении мы ожидаемо получим "да" в params плагина.Для поля списков type=&quot;list&quot; можно указать значение по умолчанию и многие знают, что его можно указать только одно.
<field type="list"                       name="article_fields"                       label="article_fields"                       description="article_fields_desc"                       layout="joomla.form.field.list-fancy-select"                       multiple="true"                       default="id"                >                    <option value="id">id</option>                    <option value="title">title</option>                    <option value="alias">alias</option>                    <option value="introtext">introtext</option>                    <option value="fulltext">fulltext</option>                    <option value="state">state</option></field>
Но у нас поле с множественным выбором (атрибут multiple) и хотелось бы указать несколько значений по умолчанию...Оказывается, так можно сделать. Для этого в атрибуте default нужно указать json с нужными параметрами в виде {int}key : {string} value.Например, default='{"0":"id","1":"title"}'.
<field type="list"                       name="article_fields"                       label="article_fields"                       description="article_fields_desc"                       layout="joomla.form.field.list-fancy-select"                       multiple="true"                       default='{"0":"id","1":"title"}'                >                    <option value="id">id</option>                    <option value="title">title</option>                    <option value="alias">alias</option>                    <option value="introtext">introtext</option>                    <option value="fulltext">fulltext</option>                    <option value="state">state</option></field>
⚠️ Обратите внимание на кавычки! Поскольку json_decode не понимает одинарные кавычки собственно json нужно писать с двойными, а значение для атрибута default писать в одинарные.🙏 За подсказанное решение огромное спасибо участникам нашего сообщества - разработчикам Дмитрию Васюкову (@fictionlabs) и Игорю Бердичевскому (@septdir).@joomlafeed#joomla #разработка #webdev #development

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

Sulpher

  • Живу я здесь
  • 2130
  • 402 / 16
  • Шаблоны и расширения Joomla
*

Zombeee

  • Захожу иногда
  • 328
  • 55 / 3
Zombeee, не возражаешь если данный рецепт опубликую на официальном форуме JomSocial? ;)

а почему нет?:) хотя у них там более активно обсуждалась возможность ресайза на флеш загрузчике, который я тоже реализовал в другой теме :)
*

Sulpher

  • Живу я здесь
  • 2130
  • 402 / 16
  • Шаблоны и расширения Joomla
Окей, сегодня выложу у них на форуме с ссылкой на этот топик :)

Опробовал твое решение - все замечательно работает!
*

Zombeee

  • Захожу иногда
  • 328
  • 55 / 3
Окей, сегодня выложу у них на форуме с ссылкой на этот топик :)

Опробовал твое решение - все замечательно работает!

ты лучше попробуй флеш аплоэдер, вот это реально круто :)
*

vdr

  • Захожу иногда
  • 196
  • 17 / 0
  • Всё есть в тебе. Реализовывайся.
Попробовал сегодня посмотреть под Opera 10.50 - не работает.
Flash player последний.
Посмотрел на сайте Zombeee - тоже не работает...

Опера, если смотреть в консоли ошибок, выдает:
Код
JavaScript - http://test.ru/community/Damir/photos/uploader.html?albumid=6

Uncaught exception: TypeError: 'SWFUpload' is not a constructor
Error thrown at line 63, column 2 in <anonymous function>() in http://test.ru/community/Damir/photos/uploader.html?albumid=6:
    uploader = new SWFUpload(settings);
called from line 21, column 41127 in <anonymous function: ready>() in http://test.ru/components/com_community/assets/jquery-1.3.2.pack.js:
    this.call(document,o)
called via Function.prototype.call() from line 14, column 15656 in <anonymous function: each>(G, K, F) in http://test.ru/components/com_community/assets/jquery-1.3.2.pack.js:
    for(var J=G[0];H<I&&K.call(J,H,J)!==false;J=G[++H])
called via Function.prototype.call() from line 21, column 41021 in <anonymous function: ready>() in http://test.ru/components/com_community/assets/jquery-1.3.2.pack.js:
    o.each(o.readyList,function(){this.call(document,o)});
called from line 21, column 41623 in <anonymous function>() in http://test.ru/components/com_community/assets/jquery-1.3.2.pack.js:
    o.ready()
Всё есть в тебе. Реализовывайся.
*

Zombeee

  • Захожу иногда
  • 328
  • 55 / 3
Попробовал сегодня посмотреть под Opera 10.50 - не работает.
Flash player последний.
Посмотрел на сайте Zombeee - тоже не работает...

Опера, если смотреть в консоли ошибок, выдает:
Код
JavaScript - http://test.ru/community/Damir/photos/uploader.html?albumid=6

Uncaught exception: TypeError: 'SWFUpload' is not a constructor
Error thrown at line 63, column 2 in <anonymous function>() in http://test.ru/community/Damir/photos/uploader.html?albumid=6:
    uploader = new SWFUpload(settings);
called from line 21, column 41127 in <anonymous function: ready>() in http://test.ru/components/com_community/assets/jquery-1.3.2.pack.js:
    this.call(document,o)
called via Function.prototype.call() from line 14, column 15656 in <anonymous function: each>(G, K, F) in http://test.ru/components/com_community/assets/jquery-1.3.2.pack.js:
    for(var J=G[0];H<I&&K.call(J,H,J)!==false;J=G[++H])
called via Function.prototype.call() from line 21, column 41021 in <anonymous function: ready>() in http://test.ru/components/com_community/assets/jquery-1.3.2.pack.js:
    o.each(o.readyList,function(){this.call(document,o)});
called from line 21, column 41623 in <anonymous function>() in http://test.ru/components/com_community/assets/jquery-1.3.2.pack.js:
    o.ready()

только что проверил, Opera 10.10 всё работает на ура :) видимо глюк версии... что-то опера последнее время часто в обновлениях делает больше багов, чем было до этого

P.S. проверил обновления оперы, на что она мне написала, что я использую последнюю версию и мол никакой 10.50 не существует :) Ты, наверное, пользуешься китайской подделкой оперы :)
« Последнее редактирование: 19.03.2010, 22:17:07 от Zombeee »
*

vdr

  • Захожу иногда
  • 196
  • 17 / 0
  • Всё есть в тебе. Реализовывайся.
Офф сайт:


Сейчас попробую на 10.10, отпишусь.
Всё есть в тебе. Реализовывайся.
*

vdr

  • Захожу иногда
  • 196
  • 17 / 0
  • Всё есть в тебе. Реализовывайся.
На 10.10 все работает!
Что-то они с 10.50 намудрили...

В связи с этим предложение. Может пользователям дать выбор?
Например по умолчанию стоит flash загрузка, у кого она не идет, выбирает обычную.
Всё есть в тебе. Реализовывайся.
*

Zombeee

  • Захожу иногда
  • 328
  • 55 / 3
На 10.10 все работает!
Что-то они с 10.50 намудрили...

В связи с этим предложение. Может пользователям дать выбор?
Например по умолчанию стоит flash загрузка, у кого она не идет, выбирает обычную.

чисто теоретически так было бы правильно, конечно. Попробую реализовать.
*

Sergeych

  • Захожу иногда
  • 161
  • 25 / 0
со второго файла и дальше ругается на "Ошибка безопасности" (первый файл тоже не грузит по факту)
Скрин во вложении в архиве...

...как-то связано с сервером на хостинге ибо на денвере всё нормально.

[вложение удалено Администратором]
*

Escalade

  • Захожу иногда
  • 193
  • 27 / 0
хорошо бы сам swfupload прикрутить...Было бы как вконтакте загрузка фоток)
...
*

Zombeee

  • Захожу иногда
  • 328
  • 55 / 3
хорошо бы сам swfupload прикрутить...Было бы как вконтакте загрузка фоток)

А я по-вашему что тут прикручивал? o_O
*

Escalade

  • Захожу иногда
  • 193
  • 27 / 0
...
*

Zombeee

  • Захожу иногда
  • 328
  • 55 / 3
Вот блин спутал swfupload с fancyupload - http://digitarald.de/project/fancyupload/3-0/showcase/photoqueue/

это AJAX загрузчик, который и так присутствует в стандартной сборке ДжомСоциал (ну, может не точно такой, но похожий). Смысл же Флеш загрузчика не просто красиво оформить процесс загрузки, но ещё и экономия ресурсов пользователя и хостинга
*

bigmus

  • Захожу иногда
  • 55
  • 4 / 1
зайди ко мне на сайт http://38irk.ru тестовый аккаунт там есть, логин и пароль tester, посмотри как работает закачка фотографий и увидишь как это должно выглядеть у тебя. Когда я говорил про флеш плеер, естественно я имел в виду твой компьютер, ведь если ты читал мой опус выше, то должен был читать про то, что флеш выполняется на стороне клиента, т.е. у тебя на компе
Странно. У меня вообще флеш загрузчик не появляется.
виднеются в поле где он должен быть только две вот эти надписи

Ожидание загрузки
0 Файлы загружены

Может где то в шаблоне ошибка зкралась? Просто на скольок я помню там у меня и раньше как то подобно все выглядело, поэтому и не использовал его.
подскажи решил ты эту проблему или нет и как? спасибо
*

bigmus

  • Захожу иногда
  • 55
  • 4 / 1
ВНИМАНИЕ! Для слабых хостеров, которые не допускают закачку больших файлов или не хватает ресурсов для ресайза фотографий рекомендую включить в настройках JomSocial загрузку с помощью Flash-аполадера и воспользоваться рецептом, который описан в этом топике http://joomlaforum.ru/index.php/topic,103851.0.html для автоматического изменения размера изображения на стороне пользователя и закачки на сервер уже сжатых изображений.

Думаю, для многих наболевшая тема, поэтому без прелюдий. Изменения производил на версии 1.6.284 (на других не проверял)

Нам нужен файлик ../com_community/controllers/photos.php начиная со строки 125, там должна начинаться функция _storeOriginal

function _storeOriginal($tmpPath$destPath$albumId 0)

полностью заменяем эту функцию следующим кодом:

	
function 
_storeOriginal($tmpPath$destPath$albumId 0)
	
{
	
	
jimport('joomla.filesystem.file');
	
	
jimport('joomla.utilities.utility');
	
	

	
	
// First we try to get the user object.
	
	
$my
	
	
	
CFactory::getUser();
	
	

	
	
CFactory::load('helpers''image');
	

	
	
$info
	
	
getimagesize$tmpPath );
	
	
$imgType
	
image_type_to_mime_type($info[2]);
	
	
$maxWidth
	
640// ЗНАЧЕНИЕ МАКСИМАЛЬНОЙ ШИРИНЫ, ДО КОТОРОЙ СЖИМАЕМ ОРИГИНАЛ
	
	
$maxHeight
	
480// ЗНАЧЕНИЕ МАКСИМАЛЬНОЙ ВЫСОТЫ, ДО КОТОРОЙ СЖИМАЕМ ОРИГИНАЛ
	
	
$rWidth
	
	
0
	
	
$rHeight
	
0
	

	
	
// Then test if the user id is still 0 as this might be
	
	
// caused by the flash uploader.
	
	
if( 
$my->id == )
	
	
{
	
	
	
$tokenId
	
JRequest::getVar'token' '' 'REQUEST' );
	
	
	
$userId
	
	
JRequest::getVar'userid' '' 'REQUEST' );

	
	
	
$my
	
	
	
CFactory::getUserFromTokenId$tokenId $userId );
	
	
}
	
	
$config =& CFactory::getConfig(); 
	
	
 
	
	
// @todo: We assume now that the config is using the relative path to the
	
	
// default images folder in Joomla.
	
	
// @todo:  this folder creation should really be in its own function
	
	
$albumPath
	
	
	
= (
$albumId == 0)? '' DS $albumId;
	
	
$originalPathFolder
	
JPATH_ROOT DS 'images' DS JPath::clean$config->get('originalphotopath') );
	
	
$originalPathFolder
	
$originalPathFolder DS $my->id $albumPath;
	
	

	
	
if( !
JFile::exists$originalPathFolder ) )
	
	
{
	
	
	
JFolder::create$originalPathFolder, (int) octdec$config->get('folderpermissionsphoto') ) );
	
	
}
	
	
$imageSize
	
	
cImageGetSize$tmpPath ); 
	
	

	
	
if (
$imageSize->width $maxWidth || $imageSize->height $maxHeight) {
	
	
	
if (
$imageSize->width $imageSize->height || $imageSize->height <= $maxHeight) {
	
	
	
	
$rWidth $maxWidth;
	
	
	
	
$rHeight 0;
	
	
	
}
	
	
	
else {
	
	
	
	
$rHeight $maxHeight;
	
	
	
	
$rWidth 0;
	
	
	
}
	
	
}
	
	

	
	
if (
$rWidth || $rHeight 0) {
	
	
	
if(!
cImageResizePropotional$tmpPath$destPath$imgType$rWidth$rHeight ) )
	
	
	
{
	
	
	
	
JError::raiseWarning(21JText::sprintf('CC ERROR MOVING UPLOADED FILE' $destPath));
	
	
	
}
	
	
}
	
	
else {
	
	
	
if(!
JFile::copy$tmpPath$destPath ) )
	
	
	
{
	
	
	
	
JError::raiseWarning(21JText::sprintf('CC ERROR MOVING UPLOADED FILE' $destPath));
	
	
	
}
	
	

	
	
}
	
}


сохраняем файлик, проверяем... ВУАЛЯ... изображения уменьшаются!


P.S. запасайтесь плюсиками :)

UPDATE 03.02.2010:
[FIX] Изображения меньше максимального размера растягивались до максимального размера, теперь всё ОК, маленькие останутся маленькими, большие уменьшатся
[ADD] Теперь при уменьшении изображения изменения происходят по наибольшей величине, т.е. если высота больше ширины, то изображение будет уменьшено по высоте и наоборот. Для тех, кто хочет изменять только по ширине, просто поставьте значение maxHeight очень большим, тогда картинки будут изменяться только по ширине.


в версии Version: 1.5.248 тоже отлично работает
*

uZzbek

  • Осваиваюсь на форуме
  • 17
  • 0 / 0
ЗОМБИ ОГРОМНЫЙ РЕСПЕКТ!
*

Zombeee

  • Захожу иногда
  • 328
  • 55 / 3
подскажи решил ты эту проблему или нет и как? спасибо

Где-то конфликт ява-скриптов идет... в каждом конкретном случае надо смотреть отдельно
*

muginec05

  • Осваиваюсь на форуме
  • 22
  • 0 / 0
При попытке загрузки ругается "ошибка защиты"
*

fad-dmitrij

  • Осваиваюсь на форуме
  • 39
  • 0 / 0
При попытке загрузки ругается "ошибка защиты"
Тоже самое как решить проблемку?
*

SibPartizan

  • Захожу иногда
  • 66
  • 1 / 0
Zombeee
как всегда просто суппер..
*

muginec05

  • Осваиваюсь на форуме
  • 22
  • 0 / 0
сделал как все написано,работает шикарно и в стандартном режиме и с флешем,но возникла одна проблемка,не загружает фотки с разрешением больше указанного в скрипте(640х480)
*

Zombeee

  • Захожу иногда
  • 328
  • 55 / 3
*

Zombeee

  • Захожу иногда
  • 328
  • 55 / 3
я же писал вначале этой темы:

Цитировать
"ВНИМАНИЕ! Для слабых хостеров, которые не допускают закачку больших файлов или не хватает ресурсов для ресайза фотографий рекомендую включить в настройках JomSocial загрузку с помощью Flash-аполадера и воспользоваться рецептом, который описан в этом топике http://joomlaforum.ru/index.php/topic,103851.0.html для автоматического изменения размера изображения на стороне пользователя и закачки на сервер уже сжатых изображений."
*

DeToN

  • Осваиваюсь на форуме
  • 22
  • 3 / 0
При загрузки группы фотографий, изменяется размер до 640x480 только первой фотографии, остальные заливаются в оригинале! Если грузить по одной, то  всё нормально! Пробовал пока только на локальном сервере! был ещё у кого-нибудь такой глюк?
*

DeToN

  • Осваиваюсь на форуме
  • 22
  • 3 / 0
обновил JomSocial с версии 1.6.288 до 1.8.2, проделал заново все изменения, и теперь всё отлично загружается! ))
*

kostaru

  • Осваиваюсь на форуме
  • 13
  • 2 / 0
Все отлично работает! Спасибо за понятный и подробный мануал! С первого раза пошло!
*

Darknemo

  • Захожу иногда
  • 223
  • 2 / 0
РЕСПЕКТ! :) все летает..
*

DeToN

  • Осваиваюсь на форуме
  • 22
  • 3 / 0
отлично всё работает! но вот превьюхи квадратные не обрезаются, а растягиваются, искажается изображение ((
*

tigr04

  • Захожу иногда
  • 119
  • 0 / 0
А как сменить дизайн кнопки "обзор", на дизайн темы. и у кнопки отмена убрать обводку.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

502 ошибка при загрузке изображений - решено

Автор Vikitos

Ответов: 2
Просмотров: 4381
Последний ответ 24.12.2013, 00:05:58
от Vikitos
[Решено] Плагин JG Casino v.1.0

Автор 321

Ответов: 1
Просмотров: 2264
Последний ответ 11.06.2012, 12:03:43
от 321
[Решено] Как сделать блок с видео справа?

Автор 321

Ответов: 0
Просмотров: 2003
Последний ответ 10.05.2012, 20:56:44
от 321
[Решено] Плагин "Latest Video" не отображает превью картинок

Автор 321

Ответов: 1
Просмотров: 1885
Последний ответ 12.04.2012, 17:07:57
от 321
[Решено] длинные сообщения в ленте активности (включая статус)

Автор bfox

Ответов: 50
Просмотров: 11155
Последний ответ 26.12.2011, 23:20:10
от Annaweb