Новости Joomla

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

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

  • Завсегдатай
  • 1005
  • 3 / 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

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

docenttmp

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

Mick_20

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

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

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

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

Mick_20

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

sherza

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

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

Mick_20

  • Завсегдатай
  • 1005
  • 3 / 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

  • Завсегдатай
  • 1005
  • 3 / 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

  • Завсегдатай
  • 1005
  • 3 / 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

  • Гуру
  • 6915
  • 415 / 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

  • Гуру
  • 6915
  • 415 / 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 »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

А-ля корзина для материалов Joomla

Автор Efanych

Ответов: 151
Просмотров: 15444
Последний ответ 02.04.2024, 22:31:42
от barvik
Плагин h2captcha (hcaptcha.com)

Автор voland

Ответов: 3
Просмотров: 1577
Последний ответ 11.03.2024, 08:29:12
от wishlight
Плагин добавления групп для регистрации, регистрация в один клик

Автор Fedor Vlasenko

Ответов: 88
Просмотров: 22294
Последний ответ 19.02.2024, 01:14:58
от wowkarak
WT Eternal admin - плагин &quot;вечный админ&quot; для Joomla

Автор sergeytolkachyov

Ответов: 0
Просмотров: 376
Последний ответ 21.12.2023, 09:25:25
от sergeytolkachyov
WT Content Image gallery контент плагин вставки изображений

Автор sergeytolkachyov

Ответов: 1
Просмотров: 807
Последний ответ 21.12.2023, 09:20:15
от sergeytolkachyov