Новости Joomla

Astroid обновился до версии 3.3.7!

Astroid обновился до версии 3.3.7!

Astroid — это мощный фреймворк для дизайнеров и разработчиков, позволяющий создавать адаптивные, быстрые и надежные веб-сайты и шаблоны на базе Joomla.

Главное в новой версии:

-   Исправлена загрузка файлов макетов

В предыдущем крупном релизе Astroid 3.3.6 были сделаны важные улучшения:

Основные моменты:

  • Улучшенный UI/UX в ключевых областях конфигурации
  • Повышенная стабильность и согласованность в Layout Builder и Form Builder
  • Исправления ошибок на основе отзывов сообщества
  • Улучшенная обработка визуальных эффектов, границ и шрифтов

Улучшения:

  • Обновленный UX Layout Builder
  • Улучшенный эффект предзагрузчика
  • Улучшенный стиль границ
  • Улучшенный UI/UX вкладки «Layout» в Template Options

Исправления ошибок:

  • Решены проблемы с некорректными динамическими значениями
  • Исправлен Color Transform при прокрутке
  • Устранены проблемы с работой Form Builder в Article Layout и Module Layout Builder
  • Исправлена проблема с созданием ненужных временных файлов при обработке шрифтов

Скачать: https://github.com/templaza/astroid-framework/releases/tag/v3.3.7

Как тестировать Joomla PHP-разработчику? Компонент Patch tester.

👩‍💻 Как тестировать Joomla PHP-разработчику? Компонент Patch tester.Joomla - open source PHP-фреймворк с готовой админкой. Его основная разработка ведётся на GitHub. Для того, чтобы международному сообществу разработчиков было удобнее тестировать Pull Requests был создан компонент Patch Tester, который позволяет "накатить" на текущую установку Joomla именно те изменения, которые необходимо протестировать. На стороне инфраструктуры Joomla для каждого PR собираются готовые пакеты, в которых находится ядро + предложенные изменения. В каждом PR обычно находятся инструкции по тестированию: куда зайти, что нажать, ожидаемый результат. Тестировщики могут предположить дополнительные сценарии, исходя из своего опыта и найти баги, о которых сообщить разработчику. Или не найти, и тогда улучшение или исправление ошибки быстрее войдёт в ядро Joomla. Напомню, что для того, чтобы PR вошёл в ядро Joomla нужны минимум 2 положительных теста от 2 участников сообщества, кроме автора. Видео на YouTubeВидео на VK ВидеоВидео на RuTubeКомпонент на GitHub https://github.com/joomla-extensions/patchtester@joomlafeed#joomla #php #webdev #community

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

sherza

  • Захожу иногда
  • 226
  • 90 / 1
Несколько лет назад я написала плагин hkm_profile, позволяющий генерировать поля расширенного профиля cms Joomla. Сейчас хочу поделиться с вами его развитием - zygo_profile. Точнее, уже тремя расширениями.



ОПИСАНИЕ И СКРИНШОТЫ:
Более подробное описание со ссылками на скачивание расширений находится здесь:
http://www.psytronica.ru/2015/10/joomla-3x-zygoprofile-hkmprofile.html

В двух словах: пользователь получает возможность заполнить в своем профиле при регистрации/правке профиля дополнительные поля расширенного профиля (например: загрузить аватар, добавить личную подпись, выбрать день рождения, свой пол из выпадающего списка.... Состав полей не является определенным, пользователь создает его сам, как конструктор). Данные поля настраиваются в админ-панели плагина Zygo Profile - определяется их состав, тип, названия, required и прочие свойства. Поля могут быть разных типов: текстовые, списки, радиокнопки, аватар, дата.  Затем при помощи плагина  Zygo Profile Content можно вывести информацию из этих полей в материалы Joomla (отобразить аватар блоггера, вывести его подпись).

Ссылки на GitHub:  

Zygo Profile - Плагин расширенного профиля пользователя:
GitHub: https://github.com/psytronica/zygoprofile

Ветка "Development" : https://github.com/psytronica/zygoprofile/tree/development

Zygo Profile Content - Плагин вывода полей расширенного профиля в материалы Joomla
GitHub: https://github.com/psytronica/plg_content_zygo_profile

Zygo Online - Модуль "кто на сайте" с выводом аватаров пользователей из расширенного профиля
GitHub: https://github.com/psytronica/mod_zygo_online

Zygo Jcomments - Плагин для отображения аватара из Zygo Profile в jComments (автор docenttmp):
GitHub: https://github.com/docenttmp/plg_jcomments_zygo_avatar
docenttmp также сделал возможность отображения online/offline в комментариях. Инструкции в настройках плагина

Zygo Kunena Avatars - Плагин для отображения аватара из Zygo Profile в форуме Kunena
GitHub: https://github.com/psytronica/Zygo-Kunena-Avatars

ДЕМО-ПЕСОЧНИЦА:

http://psytronica.getenjoyment.net/
Весь дополнительный функционал - аватары, любимые цвета, выводится посредством плагина Zygo Profile Content
Место вывода полей, количество, и т.д. настраивается в админ-панели плагина

Плагин Zygo Profile  содержит API, позволяющий выводит информацию расширенных полей пользователей (напр. аватары, дни рождения и т.д.) в произвольном месте и использоваться для интеграций с другими расширениями

На данный момент доступна только русская локализация. В дальнейшем думаю выложить английскую и испанскую. Если кто-то вдруг захочет присоединиться к локализации - буду только рада)

Буду рада вашим вопросам, советам по улучшению приложения и конструктивной критике
*

sherza

  • Захожу иногда
  • 226
  • 90 / 1
Поля изначально НЕ должны быть обязательно для заполнения, как вы и просили:
Код
Т.е. мне не надо чтобы все эти поля были обязательны, но если уж начал заполнять, то все поля в адресе укажи.

Если фрагмент кода не заработал, то надо посмотреть firebug'ом сайт на предмет javascript'овых ошибок, которые могли препятствовать выполнению данного скрипта. На развернутой Joomla "из коробки" это работает. Если и это не поможет, то вам надо будет оставить ссылку на ваш сайт
*

Mick_20

  • Завсегдатай
  • 1030
  • 13 / 0
  • Что тут писать?
Поля изначально НЕ должны быть обязательно для заполнения, как вы и просили:
Код
Т.е. мне не надо чтобы все эти поля были обязательны, но если уж начал заполнять, то все поля в адресе укажи.

Если фрагмент кода не заработал, то надо посмотреть firebug'ом сайт на предмет javascript'овых ошибок, которые могли препятствовать выполнению данного скрипта. На развернутой Joomla "из коробки" это работает. Если и это не поможет, то вам надо будет оставить ссылку на ваш сайт


Ошибок нет в консоли хрома. Форма просто сохраняет данные.

Я применил группировку полей и данный скрипт валидации для редактирования профиля. Думаю сути это не меняет.

Спойлер
[свернуть]
Мой сайт про корабли
*

sherza

  • Захожу иногда
  • 226
  • 90 / 1
Mick_20, вы не обратили внимание: в новом коде, который я вам скинула, есть изменения, в частности:
Код: html4strict
<fieldset class="zygo_fieldset">
По наличию этого класса скрипт отличает те филдсеты, поля которых обрабатывать
*

docenttmp

  • Осваиваюсь на форуме
  • 37
  • 13 / 0
Спасибо, за замечательный плагин. Обнаружил ошибочку, версия последняя с github :
в файле avatar_showform.php нужно заменить :
<meta http-equiv="Content-Type" content="text/html; utf-8" />
на
<meta http-equiv="Content-Type" content="text/html" charset="utf-8"/>
иначе в Firefox кракозябры в полях :
PLG_USER_ZYGO_PROFILE_SELECT_AVATAR
PLG_USER_ZYGO_PROFILE_SAVE_AVATAR
PLG_USER_ZYGO_PROFILE_CANCEL
« Последнее редактирование: 16.12.2016, 08:06:46 от docenttmp »
*

Mick_20

  • Завсегдатай
  • 1030
  • 13 / 0
  • Что тут писать?
Кстати да с кракозябрами что-то такое было. Кодировку помню правил.
Мой сайт про корабли
*

docenttmp

  • Осваиваюсь на форуме
  • 37
  • 13 / 0
Есть небольшие три улучшения или правки:
1. Добавить в плагине "размер файла загружаемого" файла (можно или нельзя)
а сервак
б юзер
2. Добавить выбор файла формата img png bmp (можно или нельзя)
3. Выбор произвольной папки сохранения аватаров ( к примеру /images/zprofile ) в media они не уместны.
Немножко перепишу, выложу правки через пару недель.
PS загружен немного.
*

Mick_20

  • Завсегдатай
  • 1030
  • 13 / 0
  • Что тут писать?
Заменила, благодарю вас обоих.
Mick_20, у вас получилось со скриптом?
пока не получилось. разбираюсь.

добавил класс zygo_fieldset к тегам fieldset, но все равно когда поля в них пустые сохраняется.

я уже писал что пытаюсь применить к странице редактирования профиля:
Спойлер
[свернуть]

И еще сгенерированная форма тут:
Спойлер
[свернуть]
« Последнее редактирование: 17.12.2016, 19:05:20 от Mick_20 »
Мой сайт про корабли
*

Mick_20

  • Завсегдатай
  • 1030
  • 13 / 0
  • Что тут писать?
а можете к скрипту валидации написать комментарии подробные?
я в нем много чего не понимаю. а пойму как он работает так уже адаптирую под свой случай.
Мой сайт про корабли
*

sherza

  • Захожу иногда
  • 226
  • 90 / 1
docenttmp, круто! Полезные вещи вы сделали.

Mick_20, конечно, могу. Может, проще, если я посмотрю ваш сайт и попытаюсь понять, в чем проблема? Не хотите здесь - пишите на почту
*

Mick_20

  • Завсегдатай
  • 1030
  • 13 / 0
  • Что тут писать?
Mick_20, конечно, могу. Может, проще, если я посмотрю ваш сайт и попытаюсь понять, в чем проблема? Не хотите здесь - пишите на почту
да давайте пока комментарии гляну.
Мой сайт про корабли
*

sherza

  • Захожу иногда
  • 226
  • 90 / 1
Цитировать
добавил класс zygo_fieldset к тегам fieldset, но все равно когда поля в них пустые сохраняется.

Если все поля в филдсете пустые, то сохраняется без валидации. Но стоит заполнить хотя бы одно поле филдсета, ругань валидатора происходит до тех пор, пока не заполнятся все поля филдсета. Как вы и просили:

Цитировать
Т.е. мне не надо чтобы все эти поля были обязательны, но если уж начал заполнять, то все поля в адресе укажи.

Данный скрипт применяется только к текстовым полям input.

Код: javascript
	jQuery(document).ready(function($) {
 
  // определяем 3 события в инпуте филдсета, по которым производим валидацию всех инпутов филдсета:
  // 1. click по инпуту (удобно, в частности если человек копипастит откуда-то данные)
  // 2, 3. keypress, keyup в инпуте. В принципе, уже можно обходиться одним keyup.  keypress я оставила только потому, что некоторые старые браузеры раньше с keyup немного глюкавили.

$(".zygo_fieldset .controls>input").click(function(){
  zygo_validate(this);
}).keypress(function(){
  zygo_validate(this);
}).keyup(function(){
  zygo_validate(this);
});
 
  // функция, вызываемая по событиям в инпутах филдсета
  // self - инпут, в котором произошло событие (по нему щелкнули мышкой/ввели какой-то текст)
function zygo_validate(self){
 
  // филдсет, являющийся родительским для текущего инпута
var zygo_fset = $(self).closest(".zygo_fieldset");

// все инпуты в родительском филдсете
var zygo_inputs = zygo_fset.find(".controls>input[type=\'text\']");

// все лейблы в родительском филдсете
var zygo_labels = zygo_fset.find(".control-label label");
 
  // если текущий инпут не пустой
if(self.value){

// для всех инпутов филдсета добавляем валидацию:
// добавляем всем инпутам филдсета класс required и приведенные ниже аттрибуты
zygo_inputs.addClass("required").attr(
{"aria-required": true, "required" : "" });
 
  // добавляем всем лейблам класс required
zygo_labels.addClass("required");
 
  // если внутри первого по счету лейбла нет элемента, содержащего класс star
  // нам достаточно знать, есть ли звездочка хотя бы в одном элементе, поскольку изначально все поля являются необязательными
if(!zygo_labels.find(".star")[0]){

// добавляем во все лейблы такой элемент (отображение звездочки рядом с полем, которое необходимо заполнить)
zygo_labels.append("<span class=\'star\'> *</span>");
}
 
  // прячем все элементы с текстом "не обязательно" в данном филдсете
zygo_fset.find(".control-label .optional").hide();

// если текущий инпут пустой
}else{

// определяем переменную, обозначающую, что все остальные инпуты в филдсете - тоже пустые. По умолчанию - true
var other_inputs_clean = true;
 
  // определяем, есть ли в филдсете не пустые инпуты
zygo_inputs.each(function(index, el){
if(el.value){
other_inputs_clean = false;
return;
}
});
 
  // если в филдсете все инпуты пусты, можно позволить пользователю не заполнять инпуты филдсета и отправить форму

if(other_inputs_clean){
 
// из всех инпутов филдсета убираем класс required, invalid (если таковой создался) и приведенные аттрибуты
zygo_inputs.removeClass("required").removeClass("invalid").removeAttr( "aria-required" )
.removeAttr( "required" );
 
  // убираем из всех лейблов филдсета классы required и invalid
zygo_labels.removeClass("required").removeClass("invalid");
zygo_labels.find(".star").remove();
 
  // отображаем все элементы в филдсете с текстом "не обязательно"
zygo_fset.find(".control-label .optional").show();
 
 
}
}
}
 
});
*

docenttmp

  • Осваиваюсь на форуме
  • 37
  • 13 / 0
Добавляем опцию "Максимальный размер загружаемого файла":

1. Добавляем в файл ru-RU.plg_user_zygo_profile.ini строку :
   PLG_USER_ZYGO_PROFILE_LABEL_MAX_FILE = "Максимальный размер файла (MB)"

2. Добавляем в файл zygo_profile.xml
   после :
   <fieldset name="advanced">
   строки :
   <field name="max_file" type="text"
   label="PLG_USER_ZYGO_PROFILE_LABEL_MAX_FILE" default="2"
   />

3. Изменяем в файле avatar_process.php (строка 79):
  $max_file = "10";
  на
  $max_file = $pluginParams->get('max_file', 2);

Дефолтное значение в 10мб заменено на 2мб ибо жирно.


*

Mick_20

  • Завсегдатай
  • 1030
  • 13 / 0
  • Что тут писать?
Подскажите а в обычном php файле хелпер плагина должен работать?
Вот так не вывел ничего:

Код: php
$user_id = $_POST['uid']; //id прихоидт

include_once ("../../../../plugins/user/zygo_profile/zygo_helper.php");

echo $home_street = ZygoHelper::getFieldData(2, $user_id);
echo $home_street = ZygoHelper::getFieldData(3, $user_id);
Мой сайт про корабли
*

sherza

  • Захожу иногда
  • 226
  • 90 / 1
Mick_20, в таком виде использовать нельзя, поскольку ZygoHelper использует фреймворк Joomla. Для решения вашей задачи для начала вам необходимо подключить фреймворк (создать "точку входа"). Подключить его можно подобным образом, как это делается в корневом index.php (скопировать себе текст, который идет до $app->execute();), только при этом необходимо заменить пути к файлам на свои (вместо (file_exists(__DIR__ . '/defines.php')) ваш путь до defines.php и т.п.)

Вопрос чисто из любопытства - с javascript'ом получилось?
*

Mick_20

  • Завсегдатай
  • 1030
  • 13 / 0
  • Что тут писать?
Вопрос чисто из любопытства - с javascript'ом получилось?

отложил пока вопрос. но потом обязательно к нему вернусь.
делаю пока самое важное. не успеваю никак до НГ)
Мой сайт про корабли
*

docenttmp

  • Осваиваюсь на форуме
  • 37
  • 13 / 0
Меням опцию "Выбор директории":
1.Заменяем строки в ru-RU.plg_user_zygo_profile.ini
первая строка:
  PLG_USER_ZYGO_PROFILE_LABEL_AVATAR_DIR ="Выберите директорию, в которой будет создана директория с аватарами plg_zygo_profile."
на:
  PLG_USER_ZYGO_PROFILE_LABEL_AVATAR_DIR ="Выберите директорию, в которой будет создана директория с аватарами <strong>/</strong>"
вторая строка :
  PLG_USER_ZYGO_PROFILE_DESC_AVATAR_DIR ="'По умолчанию' будет означать, что директория с аватарами создастся в директории media"
на:
  PLG_USER_ZYGO_PROFILE_DESC_AVATAR_DIR ="'По умолчанию' будет означать, что директория с аватарами создастся в директории images. Первый и последний <strong>'/'</strong> ставить не нужно."

добавляем строки:
PLG_USER_ZYGO_PROFILE_AVATAR_DIR_ERROR_CHANGED ="Изменения запрещены. Пожалуйста удалите текущий аватар и загрузите новый."
PLG_USER_ZYGO_PROFILE_AVATAR_DIR_ERROR_BLOCKED ="Изменения запрещены. В настройках указана системная папка для аватаров."

2.Заменяем строку в zygo_profile.xml
  <field name="avatarfolder" type="folderlist" default="" label="PLG_USER_ZYGO_PROFILE_LABEL_AVATAR_DIR" description="PLG_USER_ZYGO_PROFILE_DESC_AVATAR_DIR" directory="media" filter="" exclude="" hide_none="1" stripext="" />
на
  <field name="avatarfolder" type="text" default="images/zyprofile" label="PLG_USER_ZYGO_PROFILE_LABEL_AVATAR_DIR" description="PLG_USER_ZYGO_PROFILE_DESC_AVATAR_DIR" />

3.Заменяем строки в zygo_profile.php (начиная с 600)
   $avFolder = JPATH_ROOT."/media";
                  if ($this->params->get('avatarfolder')) {$avFolder .= "/".$this->params->get('avatarfolder');
                  }

                  $avFolder .= "/plg_zygo_profile/".$userId;
на:
  $avFolder = JPATH_ROOT."/".$this->params->get('avatarfolder').'/'.$userId;

4.Заменяем строки в avatar_process.php (начиная с 600)
   $av_folder = JPATH_ROOT."/media";
   if($pluginParams->get('avatarfolder')) $av_folder.="/".$pluginParams->get('avatarfolder');
   $av_folder .= "/plg_zygo_profile";
   if(!is_dir($av_folder)) mkdir($av_folder);

   $upload_dir = $av_folder.'/'.$userid;   
    if(!is_dir($upload_dir)) mkdir($upload_dir);
на

  $av_folder = JPATH_ROOT."/".$pluginParams->get('avatarfolder', zyprofile);
  if(!is_dir($av_folder)) mkdir($av_folder,0755,true);
  $upload_dir = $av_folder.'/'.$userid;   
  if(!is_dir($upload_dir)) mkdir($upload_dir,0755,true);

5.Заменяем строки в avatar_showform.php
$app = JFactory::getApplication();
$user = JFactory::getUser();

$avatar = $app->input->get('avatar', "", "raw");

if(!$app->isAdmin()){
    
    $usid = 0;
    if($avatar){
    
        $avarr = explode("/", $avatar);

        foreach($avarr as $k => $seg){
            if($seg == "plg_zygo_profile" && ($k+1 < sizeof($avarr))
                    && is_numeric($avarr[$k+1])){

               $usid = (int)$avarr[$k+1];
            }
        }
    }else if($app->input->getInt('id')){
        $usid = $app->input->getInt('id');
    }
    
   $canEdit = $user->authorise('core.edit', 'com_users');
    if($user->id!=$usid && !$canEdit){
      echo "ACCESS DENIED";
      $app->close();
    }
}


$plugin = JPluginHelper::getPlugin('user', 'zygo_profile');
$pluginParams = new JRegistry();
$pluginParams->loadString($plugin->params);

на

$app = JFactory::getApplication();
$user = JFactory::getUser();
$plugin = JPluginHelper::getPlugin('user', 'zygo_profile');
$pluginParams = new JRegistry();
$pluginParams->loadString($plugin->params);
$avatar = $app->input->get('avatar', "", "raw");
$avatar_pathinfo = pathinfo($avatar,PATHINFO_DIRNAME);
$av_folder_current = $pluginParams->get('avatarfolder', zyprofile).'/'.$user->id;
$av_folder_current_dirs = array(current(explode('/', $pluginParams->get('avatarfolder'))));
$av_folder_blocked_dirs = array('administrator','bin','cache','cli','components','includes','language','layouts','libraries','logs','modules','plugins','tmp');
$av_folder_blocked_check = array_intersect($av_folder_current_dirs, $av_folder_blocked_dirs);
if (!empty($av_folder_blocked_check))
{
   echo '<meta charset="utf-8"/>'.JText::_('PLG_USER_ZYGO_PROFILE_AVATAR_DIR_ERROR_BLOCKED');
   $app->close();   
}
if($avatar == ''){}
elseif($avatar_pathinfo != $av_folder_current)
{
   echo '<meta charset="utf-8"/>'.JText::_('PLG_USER_ZYGO_PROFILE_AVATAR_DIR_ERROR_CHANGED');   
   $app->close();
}

UPD. Добавлена блокировка на сохранения в системные папки.
« Последнее редактирование: 29.12.2016, 14:34:36 от docenttmp »
*

sherza

  • Захожу иногда
  • 226
  • 90 / 1
docenttmp, очень здорово!
Один момент: ранее вы говорили о произвольной директории для сохранения аватаров. В вашем нынешнем коде я вижу привязку к директории images. В некоторых случаях может быть неудобно хранить аватары в images.
Цитировать
$avFolder = JPATH_ROOT."/images/".$this->params->get('avatarfolder').'/'.$userId;
Может, правда, лучше сделать директорию произвольной, как считаете?

И еще, честно говоря, мне не вполне нравится идея давать пользователям вводить название директории руками:
Цитировать
  <field name="avatarfolder" type="text" default="zyprofile" label="PLG_USER_ZYGO_PROFILE_LABEL_AVATAR_DIR" description="PLG_USER_ZYGO_PROFILE_DESC_AVATAR_DIR" />
Я раньше думала над этим моментом, здесь хорошо вообще бы давать выбрать из дерева директорий, просто руки не доходили. Но это уже мелочи.
*

docenttmp

  • Осваиваюсь на форуме
  • 37
  • 13 / 0
Да немножко сыро получилось, в продакшн пока пускать не нужно.Есть несколько моментов.
1.Вдруг пользователю захочется сохранять в папку administrator картинки, сохраняться будет, это плохо. Ну на свой страх и риск.
2.Выбор директории менюшкой красиво, но эту директорию с начала надо создать, нужно подгружать файлменеджер и создавать все равно эту/эти директории т.к выбор идет только в созданные директории. Ручками написал и мороки меньше, быстро и красиво.
3.Проверка $app->isAdmin и ниже, её нужно переписывать в любом случае, тк разделитель explode "/" режет не то.
Мой вывод тк проверку менять все равно нужно, а точнее удалить текущую и более простую накалякать (идея есть осталось реализовать в две строчки проверку на папку админ и current_avatar_folder, и avatarfolder, и avatar, и пустое поле когда еще ничего не загружено) в итоге получим при произвольной смене каталога с аватарами т.е к примеру отображаться будут как и раньше в Jcomments, но при изменении в настройках каталога будет уже просить чтоб обновили и новый создастся в новой папке. Если пользователь случайно "нажмакал" путь поменял, старое работает, новое в новую папку.
Изменил на абсолютно произвольную директорию (пост выше) )), но без пары проверок, пока работать не будет, или же удаляем пока всю эту проверку полностью и раз вписал каталог и не трогай ибо ошибки.
*

docenttmp

  • Осваиваюсь на форуме
  • 37
  • 13 / 0
« Последнее редактирование: 25.12.2016, 00:54:29 от docenttmp »
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
хорошо вообще бы давать выбрать из дерева директорий, просто руки не доходили. Но это уже мелочи.
у меня есть тип поля выбора файла или папки, выбор привязан к корню сайта, а не images, можно даже указать /../../folder  для выбора папки за пределами сайта (хотя в случае с картинками это не катит =) ), показывает файлы не только в указанной папке, но и в подпапках (скрин с одного из проектов), можно задействовать в этом шикарном плагине для аватаров )

минус 1: не реализовано указание файлов по маске, но если в указанной папке будут только картинки-авки, то это не проблема вообще
минус 2: если файл уже был указан ранее, при раскрытии дерева курсор на указанном файле не позиционируется, мне было ни к чему, желающие под себя доработают

Код: xml
<field 
name
label
class
type="fileselect"
folder="foldername"       /* default 'images' */
folderonly="true|false"   /* show directories only (val 'true') or directories && files (val 'false'), default 'false' */
showroot="true|false"     /* show root directori no tree (val 'true'), default 'false' */
/>
*

sherza

  • Захожу иногда
  • 226
  • 90 / 1
AlekVolsk, большое вам спасибо, за то, что поделились полем выбора файла/директории! Обязательно пригодится.

docenttmp, AlekVolsk, после праздников все скомпоную и закоммичу

docenttmp, насчет проверки $app->isAdmin, вы правы, заодно поправлю и этот момент. Благодарю, что переправили на произвольную директорию

Цитировать
Вдруг пользователю захочется сохранять в папку administrator картинки, сохраняться будет, это плохо. Ну на свой страх и риск.
Да, я согласна, это не здорово, но  директорию administrator можно будет исключить из отображения в файловом дереве, созданном AlekVolsk. Кстати, не только administrator...

Цитировать
Выбор директории менюшкой красиво, но эту директорию с начала надо создать, нужно подгружать файлменеджер и создавать все равно эту/эти директории т.к выбор идет только в созданные директории
Да, согласна, здесь, как руки у меня дойдут, смогу прикрутить возможность создавать/удалять директории прямо из плагина

*

docenttmp

  • Осваиваюсь на форуме
  • 37
  • 13 / 0
Меняем опцию "Выбор директории"
UPD. Проблема решена, инструкция обновлена ( пост выше ), багов не обнаружено. Смотрим, пробуем, отписываемся.
А пока займусь выбором расширений файлов. Потом думаю "причесать" плагин, не все строки локализированы и есть небольшие/некритические ошибки в локализации, да и не плохо бы на английский перевести . Есть идея но не знаю только когда руки дойдут и надо ли вообще реализовывать, суть такая - в Jcomments показывать на профиле точечку red/green - offline/online пользователь.
« Последнее редактирование: 25.12.2016, 23:07:29 от docenttmp »
*

sherza

  • Захожу иногда
  • 226
  • 90 / 1
Кстати Olg уже делал английскую локализацию, хорошо, что вы напомнили. Хотела включить, и честно скажу, забыла. Olg, еще раз спасибо!
http://eltsov.net/docs/en-GB.zip

Я сама могу сделать испанскую локализацию. Надо ли, как думаете?

Код
Есть идея но не знаю только когда руки дойдут и надо ли вообще реализовывать, суть такая - в Jcomments показывать на профиле точечку red/green - offline/online пользователь.
Я на одном ресурсе делала в комментариях и чате, где использую zygoprofile, правда не для jComments. Там пригодилось

Цитировать
Смотрим, пробуем, отписываемся.
docenttmp, обязательно попробую и отпишу после праздников

*

djumfan

  • Захожу иногда
  • 243
  • 13 / 0
Есть идея но не знаю только когда руки дойдут и надо ли вообще реализовывать, суть такая - в Jcomments показывать на профиле точечку red/green - offline/online пользователь.
Отличная идея! Было бы просто супер, если бы в комментах показывать кто находится онлайн. Мне этого функционала очень не хватает.
*

docenttmp

  • Осваиваюсь на форуме
  • 37
  • 13 / 0
Отличная идея! Было бы просто супер, если бы в комментах показывать кто находится онлайн. Мне этого функционала очень не хватает.
Почему под большим вопросом и стоит ли? Это серьёзный удар под дых в БД, да по запросам как даст.

Цитировать
Я сама могу сделать испанскую локализацию. Надо ли, как думаете?
Ну тут дело хозяйское, я испанский в глаза не знаю.

Опция расширений файлов готова, но уже утром или после работы выложу + небольшой фикс. Спать пора.
« Последнее редактирование: 27.12.2016, 00:47:43 от docenttmp »
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Я сама могу сделать испанскую локализацию. Надо ли, как думаете?
если имеете возможность продвигать расширение в европе, то очень даже надо: более миллиарда населения планеты на испанском и его диалектах разговаривают

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

docenttmp

  • Осваиваюсь на форуме
  • 37
  • 13 / 0
Опция расширений файлов + небольшой фикс (все в одном).

1.Добавляем строки в ru-RU.plg_user_zygo_profile.ini
PLG_USER_ZYGO_PROFILE_MAX_FILE_ERROR = "Размер файла превышает допустимый, не более "
PLG_USER_ZYGO_PROFILE_ALLOWED_IMAGE_EXTENSIONS_LABEL = "Разрешенные типы файлов"
PLG_USER_ZYGO_PROFILE_ALLOWED_IMAGE_EXTENSIONS_DESC = "Расширения типов файлов должны быть разделены запятой. По умолчанию : <strong>bmp,gif,jpg,png</strong>"
PLG_USER_ZYGO_PROFILE_ALLOWED_IMAGE_EXTENSIONS_ERROR = "Только следующие типы файлов разрешены для загрузки "
PLG_USER_ZYGO_PROFILE_DIS_ALLOWED_IMAGE_EXTENSIONS_ERROR = "В настройках присутствуют запрещенные типы файлов "

2.Добавляем строки в zygo_profile.xml
после
<field name="max_file" type="text" label="PLG_USER_ZYGO_PROFILE_LABEL_MAX_FILE" default="2"/>

добавляем
<field name="allowed_image_types" type="text" default="bmp,gif,jpg,png" label="PLG_USER_ZYGO_PROFILE_ALLOWED_IMAGE_EXTENSIONS_LABEL" description="PLG_USER_ZYGO_PROFILE_ALLOWED_IMAGE_EXTENSIONS_DESC"/>

3.Меняем строки в avatar_process.php
эти
$allowed_image_types = array('image/pjpeg'=>"jpg",'image/jpeg'=>"jpg",'image/jpg'=>"jpg",'image/png'=>"png",'image/x-png'=>"png",'image/gif'=>"gif");
$allowed_image_ext = array_unique($allowed_image_types); // Do not change this
$image_ext = "";
foreach ($allowed_image_ext as $mime_type => $ext) {
    $image_ext.= strtoupper($ext)." ";
}

меняем на эти
$allowed_image_types = array_map('trim', explode(',', $pluginParams->get('allowed_image_types', 'bmp','gif','jpg','png')));
$dis_allowed_image_types = array('php','js','exe','phtml','java','perl','py','dll','bat','cmd','com','cpl','hta','sys');
$image_ext = "";
foreach ($allowed_image_types as $mime_type => $ext) {
    $image_ext.= strtoupper($ext)." ";
}

эти
foreach ($allowed_image_types as $mime_type => $ext) {
         //loop through the specified image types and if they match the extension then break out
         //everything is ok so go and check file size
         if($file_ext==$ext && $userfile_type==$mime_type){
            $error = "";
            break;
         }else{
            $error = "Only <strong>".$image_ext."</strong> images accepted for upload<br />";
         }
      }

меняем на эти
$dis_allowed_check = array_intersect($allowed_image_types, $dis_allowed_image_types);
if (!empty($dis_allowed_check))
   {
      $error = JText::_('PLG_USER_ZYGO_PROFILE_DIS_ALLOWED_IMAGE_EXTENSIONS_ERROR').$image_ext;            
   }
if (!in_array($file_ext, $allowed_image_types))
   {
      $error = JText::_('PLG_USER_ZYGO_PROFILE_ALLOWED_IMAGE_EXTENSIONS_ERROR').$image_ext;            
   }

эту
$error.= "Images must be under ".$max_file."MB in size";

меняем на эту
$error.= JText::_('PLG_USER_ZYGO_PROFILE_MAX_FILE_ERROR').$max_file." MB";


Приторможу пока с изменениями в "опции выбора директории", то уже надумал опять малёха кой чё где поменять, буду ждать вердикта и отзывов. Теперь фиксами займусь.

UPD.Чисто косметические правки в псевдонимах. Ну больно не красиво смотрелись.
« Последнее редактирование: 27.12.2016, 15:11:58 от docenttmp »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

JL Like - Социальные кнопки для Joomla (новый взгляд)

Автор zikkuratvk

Ответов: 638
Просмотров: 109933
Последний ответ 24.12.2025, 15:58:50
от wishlight
А-ля корзина для материалов Joomla

Автор Efanych

Ответов: 152
Просмотров: 21774
Последний ответ 23.12.2025, 18:15:39
от zikkuratvk
WT Amo CRM library - простая PHP библиотека для Joomla 4+ (для разработчиков)

Автор sergeytolkachyov

Ответов: 3
Просмотров: 3940
Последний ответ 29.11.2025, 10:56:40
от sergeytolkachyov
SW JProjects - Менеджер цифровых проектов для Joomla! CMS™

Автор Septdir

Ответов: 61
Просмотров: 18694
Последний ответ 19.11.2025, 09:49:12
от sergeytolkachyov
SM FAQ - компонент Вопрос-Ответ для Joomla 2.5+

Автор SmokerMan

Ответов: 682
Просмотров: 157349
Последний ответ 11.10.2025, 12:43:44
от wishlight