Новости Joomla

👩‍💻 События плагинов и порядок их срабатывания при работе с пользовательскими полями Joomla и использовании FieldsHelper.

👩‍💻 События плагинов и порядок их срабатывания при работе с пользовательскими полями Joomla и использовании FieldsHelper.

В процессе работы с Joomla бывает необходимо работать с пользовательским интерфейсом более тонко, чем обычно. Все формы Joomla состоят из стандартных полей, содержанием, стилем отображения, состоянием (включено/выключено, доступно для редактирования или нет и т.д.) можно управлять с помощью плагинов. Да и для нестандартных проектов хорошей практикой является создание одного системного или нескольких плагинов групп "под проект", в которых храниться весь "нестандарт".

В этой статье описаны все триггеры, которые вызываются через Event Dispatcher из administrator/components/com_fields/src/Helper/FieldsHelper.php, с привязкой к жизненному циклу (порядку этапов работы запроса), аргументам, изменяемым данным и дальнейшему распространению по Joomla. Это поможет вам работать с Joomla свободнее и не опасаясь при этом потерять изменения при очередном обновлении движка.

Подходы, описанные в статье, полезны в тех случаях, когда вы работаете с данными в com_fields - механизме создания и редактирования пользовательских полей ядра Joomla и при использовании FieldsHelper. Многие сторонние компоненты не используют эту возможность, поэтому данная статья будет полезна лишь частично.

Читать статью на Хабре.

@joomlafeed

🏆 Открыто голосование за Joomla в премии CMS Critic People’s Choice Awards 2025

🏆 Открыто голосование за Joomla в  премии CMS Critic People’s Choice Awards 2025

🗓 Голосование продлится до 27 февраля 2026 года.

👩‍💻 Проголосовать! 👩‍💻

Номинации, в которых можно проголосовать за Joomla:
⭐️ Best Free CMS
⭐️ Best Open Source CMS
⭐️ Best Enterprise CMS

Также в номинации Best e-Commerce Solution участвуют компоненты интернет-магазинов для Joomla:
⭐️ HikaShop
⭐️ Virtuemart

В номинации Best Website Builder оказались:
⭐️ YooTheme
⭐️ SP Page Builder

Что такое CMS Critic Awards?
С 2012 года премия CMS Critic Awards занимает особое место в сообществе систем управления контентом (CMS). Это единственный в своем роде сайт, который составляет рейтинг системы управления контентом и связанных с ними решений на рынке — от малого до крупного и подчеркивает их инновации и услуги.

Каждый год награда CMS Critic Awards присуждается одному победителю в различных отраслевых категориях, таких как: «Лучшая облачная CMS», «Лучший DXP», «Лучшая Headless CMS и других. Затем результаты оглашаются через СМИ вместе с выбором редакции CMS Critic.
В этом году премия вернулась к своим традициям и только TOP-5 движков по количеству номинаций попали в 2-й этап - голосование.

@joomlafeed

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

Lex

  • Завсегдатай
  • 1615
  • 274 / 1
Re: Seminar for Joomla
« Ответ #30 : 17.10.2010, 12:43:07 »
Хм. Интересный компонент. Нах split если нет регулярного выражения. Замени на explode. Не полениться что-ли, поставить Joomla ради посмотреть компонент. Тем более там где то несуществующий индекс в массиве еще запрашивает.

P.S. Стало стыдно. Совесть замучила.  kgb_gold то что ты привел не ошибки, а отладочные сообщения для программиста. На реальном хостинге их не будет видно. Чтобы их отключить на локальной машине нужно изменить файл .htaccess или php.ini как написано здесь
http://joomlaportal.ru/content/view/207/53/ кроме последнего пункта это для Joomla 1.0.x ветки. Хотя по моему непосвященному мнению лучше устранить и сообщения не отключать, ибо потом можно сильно удивляться почему молча не работает.
« Последнее редактирование: 17.10.2010, 12:58:23 от Lex »
Жизнь заставила учиться.
В личке на вопросы не отвечаю.
*

Artyomii

  • Захожу иногда
  • 331
  • 10 / 5
Re: Seminar for Joomla
« Ответ #31 : 17.10.2010, 13:26:47 »
Цитировать
Хотя по моему непосвященному мнению лучше устранить и сообщения не отключать, ибо потом можно сильно удивляться почему молча не работает.
абсолютно согласен, я вот ни когда не выключаю отладку, пусть лучше покажет откуда ноги растут, и не понимаю тех кто выключает, разве это выход из проблемы когда затронута проблема версий php! видимо для них весело когда хостер обновился а у них нечего не работает.
*

kgb_gold

  • Осваиваюсь на форуме
  • 27
  • 0 / 0
Re: Seminar for Joomla
« Ответ #32 : 17.10.2010, 16:58:46 »
P.S. Стало стыдно. Совесть замучила.  kgb_gold то что ты привел не ошибки, а отладочные сообщения для программиста. На реальном хостинге их не будет видно. Чтобы их отключить на локальной машине нужно изменить файл .htaccess или php.ini как написано здесь
http://joomlaportal.ru/content/view/207/53/ кроме последнего пункта это для Joomla 1.0.x ветки. Хотя по моему непосвященному мнению лучше устранить и сообщения не отключать, ибо потом можно сильно удивляться почему молча не работает.

Lex, , мне совсем не стыдно, я совсем не програмист и к этому никакого к сожалению к програмированию не имею, я просто хороший пользователь как в винде так и в линухе. Но с виндой я покончил ещё в 2001году и перешёл на линух и польностью отдался ему. Вот самостоятельно пытаюсь разобраться в этой мудрённой joomle и в этом модуле. Меня заинтересовал даный модуль и пытаюсь с помощью сообщества в нём разобраться. Надеюсь с вашей помощью и других добрых людей я его доканаю до нормального вида.
Всех зараннее благодарю за помощь.
*

Lex

  • Завсегдатай
  • 1615
  • 274 / 1
Re: Seminar for Joomla
« Ответ #33 : 17.10.2010, 17:21:00 »
Ну ладно, зато моя совесть теперь чиста.
Замени на explode
Это работает?
Жизнь заставила учиться.
В личке на вопросы не отвечаю.
*

kgb_gold

  • Осваиваюсь на форуме
  • 27
  • 0 / 0
Re: Seminar for Joomla
« Ответ #34 : 17.10.2010, 17:34:59 »
Ну ладно, зато моя совесть теперь чиста. Это работает?


Ты имеешь ввиду заменить везде split на explode?
*

Lex

  • Завсегдатай
  • 1615
  • 274 / 1
Re: Seminar for Joomla
« Ответ #35 : 17.10.2010, 17:36:55 »
Для начала в тех строках где на preg_split менял.
Жизнь заставила учиться.
В личке на вопросы не отвечаю.
*

kgb_gold

  • Осваиваюсь на форуме
  • 27
  • 0 / 0
Re: Seminar for Joomla
« Ответ #36 : 17.10.2010, 18:08:42 »
Для начала в тех строках где на preg_split менял.

Ещё одного зверя победили, заменил, ошибок не наблюдается, осталась последняя
Notice: Undefined offset: 7 in /opt/lampp/htdocs/www/smr_1/components/com_seminar/seminar.class.php on line 806
*

Artyomii

  • Захожу иногда
  • 331
  • 10 / 5
Re: Seminar for Joomla
« Ответ #37 : 17.10.2010, 18:14:57 »
встряну задав вопрос, а почему не обновлять все то на что жалуемся?
*

Lex

  • Завсегдатай
  • 1615
  • 274 / 1
Re: Seminar for Joomla
« Ответ #38 : 17.10.2010, 18:17:11 »
Notice: Undefined offset: 7 in /opt/lampp/htdocs/www/smr_1/components/com_seminar/seminar.class.php on line 806
Тут проблемней. Вызывается индекс которого нету в наборе. Код смотреть надо. Давай сюда 806 строку.
Жизнь заставила учиться.
В личке на вопросы не отвечаю.
*

Artyomii

  • Захожу иногда
  • 331
  • 10 / 5
Re: Seminar for Joomla
« Ответ #39 : 17.10.2010, 18:22:11 »
на скидку мне кажется что неправильный вызов идет изи того что у аппонента на локалке это
*

Lex

  • Завсегдатай
  • 1615
  • 274 / 1
Re: Seminar for Joomla
« Ответ #40 : 17.10.2010, 18:23:38 »
Ну не дай бог, если он набор из сети тянет.
Жизнь заставила учиться.
В личке на вопросы не отвечаю.
*

kgb_gold

  • Осваиваюсь на форуме
  • 27
  • 0 / 0
Re: Seminar for Joomla
« Ответ #41 : 17.10.2010, 18:24:45 »
switch( $var1[$l] ) {
Notice: Undefined offset: 7 in /opt/lampp/htdocs/www/smr_1/components/com_seminar/seminar.class.php on line 806
Тут проблемней. Вызывается индекс которого нету в наборе. Код смотреть надо. Давай сюда 806 строку.

Вот она заразная:
line 806 - switch( $var1[$l] ) {
*

kgb_gold

  • Осваиваюсь на форуме
  • 27
  • 0 / 0
Re: Seminar for Joomla
« Ответ #42 : 17.10.2010, 18:25:41 »
Ну не дай бог, если он набор из сети тянет.


На локалке стоит.
*

Lex

  • Завсегдатай
  • 1615
  • 274 / 1
Re: Seminar for Joomla
« Ответ #43 : 17.10.2010, 18:26:57 »
$var1[$l] ниче не дает. Давай еще по 10 строк выше и ниже.
Жизнь заставила учиться.
В личке на вопросы не отвечаю.
*

Artyomii

  • Захожу иногда
  • 331
  • 10 / 5
Re: Seminar for Joomla
« Ответ #44 : 17.10.2010, 18:28:37 »
прикрепи весь файлик
*

kgb_gold

  • Осваиваюсь на форуме
  • 27
  • 0 / 0
Re: Seminar for Joomla
« Ответ #45 : 17.10.2010, 18:32:13 »
встряну задав вопрос, а почему не обновлять все то на что жалуемся?

если бы знал как обновлять, обновил бы уже, а вот   ireland вообще пишет, что назад нужно вернуться до версии php 5.2, у меня сейчас стоит php 5.3.3-0.1.1
*

Artyomii

  • Захожу иногда
  • 331
  • 10 / 5
Re: Seminar for Joomla
« Ответ #46 : 17.10.2010, 18:35:48 »
поймите что смысла переходить назад нет это раз и два что данная ошибка говорит что массива нет которого он ищет
*

Lex

  • Завсегдатай
  • 1615
  • 274 / 1
Re: Seminar for Joomla
« Ответ #47 : 17.10.2010, 18:37:03 »
Правильно пишет. Deprecated вылезали из-за php 5.3
Нотис в 806 останется.
Жизнь заставила учиться.
В личке на вопросы не отвечаю.
*

Artyomii

  • Захожу иногда
  • 331
  • 10 / 5
Re: Seminar for Joomla
« Ответ #48 : 17.10.2010, 18:39:52 »
Правильно пишет. Deprecated вылезали из-за php 5.3
Нотис в 806 останется.
скажи а что ему делать потом?
*

kgb_gold

  • Осваиваюсь на форуме
  • 27
  • 0 / 0
Re: Seminar for Joomla
« Ответ #49 : 17.10.2010, 18:40:11 »
прикрепи весь файлик

не нашёл как здесь прикрепить файл.

начинается на line 733

// ++++++++++++++++++++++++++++++++++++++
// +++ Tabellenzelle ausgeben
// ++++++++++++++++++++++++++++++++++++++
// sem_f022(text,art,align,width,class,colspan)

function sem_f022() {
  $args = func_get_args();
  $html = "\n<t".$args[1];
  if(count($args)>4) {
  if($args[4]!="") {
    $html .= " class=\"".$args[4]."\"";
  }}
  if(count($args)>2) {
  if($args[2]!="") {
    $html .= " style=\"text-align:";
    switch($args[2]) {
      case "l":
        $html .= "left";
        break;
      case "r":
        $html .= "right";
        break;
      case "c":
        $html .= "center";
        break;
    }
    $html .= ";\"";
  }}
  if(count($args)>3) {
  if($args[3]!="") {
    $html .= " width=\"".$args[3]."\"";
  }}
  if(count($args)>5) {
  if($args[5]) {
    $html .= " colspan=\"".$args[5]."\"";
  }}
  $html .= ">".$args[0]."</t".$args[1].">";
  return $html;
}

// ++++++++++++++++++++++++++++++++++++++
// +++ Tabellenkopf ausgeben
// ++++++++++++++++++++++++++++++++++++++

function sem_f023() {
  $args = func_get_args();
  if(is_numeric($args[0])) {
    $html = "\n<table cellpadding=\"".$args[0]."\" cellspacing=\"0\" border=\"0\"";
    if(count($args)==2) {
      $html .= " class=\"".$args[1]."\"";
    }
    $html .= " width=\"100%\">";
  } else {
    $html = "\n</table>";
  }
  return $html;
}

// +++++++++++++++++++++++++++++++++++++++
// +++ Ausgabe einer Tabellenzeile     +++
// +++++++++++++++++++++++++++++++++++++++

  function sem_f024($art,$var1,$var2,$werte,$klasse) {
    $zurueck = "<tr";
     if( $klasse <> "") {
       $zurueck .= " class=\"".$klasse."\"";
     }
    $zurueck .= ">";

    $n = count($werte);
    for ($l=0, $n; $l < $n; $l++) {
      $format1 = "";
      if(is_array($var1)) {
        switch( $var1[$l] ) {
          case "c2":
            $format1 .= " colspan=\"2\"";
            break;
          case "nw":
            $format1 .= " nowrap=\"nowrap\"";
            break;
          case "l":
            $format1 .= " style=\"text-align:left;\"";
            break;
          case "r":
            $format1 .= " style=\"text-align:right;\"";
            break;
          case "c":
            $format1 .= " style=\"text-align:center;\"";
            break;
        }
      }
      $format2 = "";
      if(is_array($var2)) {
        switch( $var2[$l] ) {
          case "c2":
            $format1 .= " colspan=\"2\"";
            break;
          case "nw":
            $format1 .= " nowrap=\"nowrap\"";
            break;
          case "l":
            $format1 .= " style=\"text-align:left;\"";
            break;
          case "r":
            $format1 .= " style=\"text-align:right;\"";
            break;
          case "c":
            $format1 .= " style=\"text-align:center;\"";
            break;
        }
      }
      $zurueck .= "<".$art.$format1.$format2.">".$werte[$l]."</".$art.">";
    }

    $zurueck .= "</tr>";
    return $zurueck;
  }

// ++++++++++++++++++++++++++++++++++++++
// +++ Fensterstatus loeschen
// ++++++++++++++++++++++++++++++++++++++

function sem_f025($status) {
  return "onmouseover=\"window.status='".$status."';return true;\" onmouseout=\"window.status='';return true;\"";
}

// ++++++++++++++++++++++++++++++++++++++
// +++ Formularstart ausgeben
// ++++++++++++++++++++++++++++++++++++++

function sem_f026($art) {
  $htxt = "FrontForm";
  if($art==2 OR $art == 4) {
    $htxt = "adminForm";
  }
  $type = "";
  if($art>2) {
    $type = " enctype=\"multipart/form-data\"";
  }
  echo "<form action=\"\" method=\"post\" name=\"".$htxt."\" id=\"".$htxt."\"".$type.">";
}

заканчивается на line 874

*

Lex

  • Завсегдатай
  • 1615
  • 274 / 1
Re: Seminar for Joomla
« Ответ #50 : 17.10.2010, 18:49:09 »
Ну дак. Счетчик цикла идет по одному массиву, а разбирается другой.
 if(is_array($var1)) {
замени на
if(is_array($var1) && $var1[$l]) {
Жизнь заставила учиться.
В личке на вопросы не отвечаю.
*

Artyomii

  • Захожу иногда
  • 331
  • 10 / 5
Re: Seminar for Joomla
« Ответ #51 : 17.10.2010, 18:54:01 »
 switch( $var1[$l] ) бакс уберите или обьявите такую переменную
*

kgb_gold

  • Осваиваюсь на форуме
  • 27
  • 0 / 0
Re: Seminar for Joomla
« Ответ #52 : 17.10.2010, 19:02:18 »
Ну дак. Счетчик цикла идет по одному массиву, а разбирается другой.
 if(is_array($var1)) {
замени на
if(is_array($var1) && $var1[$l]) {


Заменил line 805 ошибка осталась неизменной.
*

Artyomii

  • Захожу иногда
  • 331
  • 10 / 5
Re: Seminar for Joomla
« Ответ #53 : 17.10.2010, 19:11:03 »
УШЕЛ БУХАТЬ СПРОСИ У ЛЕКСА ИЛИ КИНЬ НА ПОЧТУ ПОТОМ ГЛЯНУ
*

kgb_gold

  • Осваиваюсь на форуме
  • 27
  • 0 / 0
Re: Seminar for Joomla
« Ответ #54 : 17.10.2010, 19:14:41 »
switch( $var1[$l] ) бакс уберите или обьявите такую переменную

Извени, не понял, убрать баксовые значки?
Что означает "или обьявите такую переменную"?
*

Lex

  • Завсегдатай
  • 1615
  • 274 / 1
Re: Seminar for Joomla
« Ответ #55 : 17.10.2010, 19:25:17 »
Вот так всегда. Как надо помочь так ушел бухать.
Вот так попробуй
if(is_array($var1) && $l < count($var1)) {
Жизнь заставила учиться.
В личке на вопросы не отвечаю.
*

kgb_gold

  • Осваиваюсь на форуме
  • 27
  • 0 / 0
Re: Seminar for Joomla
« Ответ #56 : 17.10.2010, 19:38:26 »
Вот так всегда. Как надо помочь так ушел бухать.
Вот так попробуй
if(is_array($var1) && $l < count($var1)) {

Заменил, вроде больше никаких ошибок не выдает. Буду тестировать далее.
Огромное тебе спасибо за потраченное время. Надеюсь более ничего не вылезит, хотя кто его знает. Был бы не так далеко, выпивон был за мной. Ещё раз спасибо.
*

kgb_gold

  • Осваиваюсь на форуме
  • 27
  • 0 / 0
Re: Seminar for Joomla
« Ответ #57 : 18.10.2010, 04:47:47 »
Привет, не долго пришлось тестировать.
При создании нового мероприятия появились новые ошибки
Deprecated: Function eregi() is deprecated in /opt/lampp/htdocs/www/smr_1/components/com_seminar/seminar.class.php on line 260
Notice: Undefined index: wh in /opt/lampp/htdocs/www/smr_1/components/com_seminar/seminar.gmap.php on line 18
Notice: Undefined index: ht in /opt/lampp/htdocs/www/smr_1/components/com_seminar/seminar.gmap.php on line 22
« Последнее редактирование: 18.10.2010, 05:30:57 от kgb_gold »
*

Lex

  • Завсегдатай
  • 1615
  • 274 / 1
Re: Seminar for Joomla
« Ответ #58 : 18.10.2010, 06:52:35 »
eregi замени на preg_match если конечно eregi не через ж опять применялась. Если будет ошибка выложи строку кода.
О Undefined index понятия не имею. Судя по именам файлов это для карты Google только не понятно о какой карте речь. Это метки на географической карте или генерация XML файла карты для поисковика.
« Последнее редактирование: 18.10.2010, 06:58:15 от Lex »
Жизнь заставила учиться.
В личке на вопросы не отвечаю.
*

kgb_gold

  • Осваиваюсь на форуме
  • 27
  • 0 / 0
Re: Seminar for Joomla
« Ответ #59 : 18.10.2010, 13:05:33 »
eregi замени на preg_match если конечно eregi не через ж опять применялась. Если будет ошибка выложи строку кода.

Заменил, вот что получилось
Warning: preg_match() [function.preg-match]: Delimiter must not be alphanumeric or backslash in /opt/lampp/htdocs/www/smr_1/components/com_seminar/seminar.class.php on line 260


начало line 194

// Anmeldeschluss
  $htxt = JHTML::_('calendar',$row->booked_date,'_booked_date','_booked_date','%Y-%m-%d',array('class'=>'inputbox','size'=>'12','maxlength'=>'10'));
  $htxt .= JHTML::_('select.integerlist', 0, 23, 1, '_booked_hour','class="sem_inputbox" size="1"', $row->booked_hour, "%02d" );
  $htxt .= JHTML::_('select.integerlist', 0, 55, 5, '_booked_minute','class="sem_inputbox" size="1"', $row->booked_minute, "%02d" );
  $htxt .= $reqfield." - ".JTEXT::_('SEM_0121')." ".JHTML::_('select.radiolist',$radios,'showbooked','class="sem_inputbox"','value','text',$row->showbooked);
  $html .= "<tr>".sem_f022(JTEXT::_('SEM_0011').':'.sem_f055(JTEXT::_('SEM_0145')),'d','r','20%','sem_edit').sem_f022($htxt,'d','l','80%','sem_edit')."</tr>";

// Kurzbeschreibung
  $html .= "<tr>".sem_f022(JTEXT::_('SEM_0013').':'.sem_f055(JTEXT::_('SEM_0115')),'d','r','20%','sem_edit').sem_f022("<textarea class=\"sem_inputbox\" cols=\"50\" rows=\"3\" name=\"shortdesc\" style=\"width:500px\" width=\"500\">".$row->shortdesc."</textarea>".$reqfield,'d','l','80%','sem_edit')."</tr>";

// Veranstaltungsort
  $html .= "<tr>".sem_f022(JTEXT::_('SEM_0015').':','d','r','20%','sem_edit').sem_f022("<textarea class=\"sem_inputbox\" cols=\"50\" rows=\"3\" name=\"place\" style=\"width:500px\" width=\"500\">".$row->place."</textarea>".$reqfield,'d','l','80%','sem_edit')."</tr>";

// Veranstalter
  if($reglevel>5 AND $art!=3) {
    $html .= "<tr>".sem_f022(JTEXT::_('SEM_0094').':'.sem_f055(JTEXT::_('SEM_0159')),'d','r','20%','sem_edit').sem_f022(sem_f009($row->publisher).$reqfield,'d','l','80%','sem_edit')."</tr>";
  }

// Plätze
  $htxt = "<input class=\"sem_inputbox\" type=\"text\" name=\"maxpupil\" size=\"3\" maxlength=\"5\" value=\"".$row->maxpupil."\" /> - ".JTEXT::_('SEM_0024').": ";
  $radios = array();
  $radios[] = JHTML::_('select.option',0,JTEXT::_('SEM_0025'));
  $radios[] = JHTML::_('select.option',1,JTEXT::_('SEM_0070'));
  $radios[] = JHTML::_('select.option',2,JTEXT::_('SEM_0139'));
  $htxt .= JHTML::_('select.genericlist',$radios,'stopbooking','class="sem_inputbox" ','value','text',$row->stopbooking);
  $html .= "<tr>".sem_f022(JTEXT::_('SEM_0020').':','d','r','20%','sem_edit').sem_f022($htxt.$reqfield,'d','l','80%','sem_edit')."</tr>";

// max. Buchung
  $html .= "<tr>".sem_f022(JTEXT::_('SEM_0021').':'.sem_f055(JTEXT::_('SEM_0138')),'d','r','20%','sem_edit');
  if($config->get('sem_p023','')>0){
    $htxt = "<input class=\"sem_inputbox\" type=\"text\" name=\"nrbooked\" size=\"3\" maxlength=\"3\" value=\"".$row->nrbooked."\" />";
  } else {
    $radios = array();
    $radios[] = JHTML::_('select.option',0,"0");
    $radios[] = JHTML::_('select.option',1,"1");
    $htxt = JHTML::_('select.genericlist',$radios,'nrbooked','class="sem_inputbox" ','value','text',$row->nrbooked);
  }
  $html .= sem_f022($htxt.$reqfield,'d','l','80%','sem_edit')."</tr>";
  $html .= "</table>";
  $html .= $pane->endPanel() ;

// ### Panel 2 ###

  $html .= $pane->startPanel(JTEXT::_('SEM_0128'),'panel2');
  $html .= "<table>";
  $html .= "<tr>".sem_f022(JTEXT::_('SEM_0114'),'d','l','100%','sem_edit',2)."</tr>";
     
// Beschreibung
  $name = "editor1";
  $htxt = $editor->display("description",$row->description,"500","300","50","5");
  $html .= "<tr>".sem_f022(JTEXT::_('SEM_0014').':','d','r','20%','sem_edit').sem_f022(JTEXT::_('SEM_0163').$htxt,'d','l','80%','sem_edit')."</tr>";

// Veranstaltungsbild
  if($config->get('sem_p032','')==1) {
    jimport( 'joomla.filesystem.folder' );
    $htxt = "";
    if($config->get('sem_p033','')!="") {
      $htxt = trim($config->get('sem_p033',''),"/")."/";
    }
    $htxt = JPATH_SITE."/images/stories/".$htxt;
    if(!is_dir($htxt)) {
      mkdir($htxt,0755);
    }
    $imageFiles = JFolder::files($htxt);
    $images = array(JHTML::_('select.option','','- '.JText::_('SEM_0096').' -'));
    foreach ($imageFiles as $file) {
      if (preg_match("gif|jpg|png", $file)) {
        $images[]=JHTML::_('select.option',$file);
      }
    }
    $imagelist = JHTML::_('select.genericlist', $images,'image','class="sem_inputbox" size="1" ','value','text',$row->image);
    $htxt = "<span style=\"position:absolute;display:none;border:3px solid #FF9900;background-color:#FFFFFF;\" id=\"1\"><img id=\"toolbild\" src=\"images/stories/".$row->image."\" \></span><span style=\"position:absolute;display:none;border:3px solid #FF9900;background-color:#FFFFFF;\" id=\"2\"><img src=\"".sem_f006()."2601.png\" \></span>";
    $htxt .= $imagelist."&nbsp;<img src=\"".sem_f006()."2116.png\" border=\"0\" onmouseover=\"showSemTip('1');\" onmouseout=\"hideSemTip();\" />";
    $html .= "<tr>".sem_f022(JTEXT::_('SEM_0093').':','d','r','20%','sem_edit').sem_f022($htxt,'d','l','80%','sem_edit')."</tr>";
  }

// Google-Map
  if($config->get('sem_p012','')!= "") {
    $htxt = "<input class=\"sem_inputbox\" type=\"text\" name=\"gmaploc\" size=\"50\" maxlength=\"250\" value=\"".$row->gmaploc."\" /> ";
    $actform = "FrontForm";
    $gmaphref = JURI::BASE();
    if(strstr($gmaphref,"/administrator")) {
      $actform = "adminForm";
    }
    $htxt .= "<a href=\"\" title=\"".JTEXT::_('SEM_0017')."\" class=\"modal\" onclick=\"href='".sem_f005()."/seminar.gmap.php?key=".$config->get('sem_p012','')."&amp;iw=".$config->get('sem_p013',1)."&amp;ziel=' + unescape(document.".$actform.".gmaploc.value) + '&amp;ort=' + unescape(document.".$actform.".place.value.replace(/\\n/gi, '<br />'));\" rel=\"{handler: 'iframe', size: {x: 500, y: 350}}\">".JTEXT::_('SEM_0017')."</a>";
    $html .= "<tr>".sem_f022(JTEXT::_('SEM_0016').':','d','r','20%','sem_edit').sem_f022($htxt,'d','l','80%','sem_edit')."</tr>";
  }

// Leitung
  $html .= "<tr>".sem_f022(JTEXT::_('SEM_0019').':','d','r','20%','sem_edit').sem_f022("<input class=\"sem_inputbox\" type=\"text\" name=\"teacher\" size=\"50\" maxlength=\"250\" value=\"".$row->teacher."\" />",'d','l','80%','sem_edit')."</tr>";

// Zielgruppe
  $html .= "<tr>".sem_f022(JTEXT::_('SEM_0012').':','d','r','20%','sem_edit').sem_f022("<input class=\"sem_inputbox\" type=\"text\" name=\"target\" size=\"50\" maxlength=\"500\" value=\"".$row->target."\" />",'d','l','80%','sem_edit')."</tr>";

// Gebuehr
  $htxt = $config->get('sem_p017',JTEXT::_('SEM_0165'))."&nbsp;<input class=\"sem_inputbox\" type=\"text\" name=\"fees\" size=\"8\" maxlength=\"10\" value=\"".$row->fees."\" />";
  if($config->get('sem_p023',0)>0) {
    $htxt .= " ".JTEXT::_('SEM_0085');
  }
  $html .= "<tr>".sem_f022(JTEXT::_('SEM_0022').':','d','r','20%','sem_edit').sem_f022($htxt,'d','l','80%','sem_edit')."</tr>";
  $html .= "</table>";
  $html .= $pane->endPanel() ;

// ### Panel 3 ###

  $html .= $pane->startPanel(JTEXT::_('SEM_0129'),'panel3');
  $html .= "<table>";
  $html .= "<tr>".sem_f022(JTEXT::_('SEM_0156')."<br />&nbsp;<br />".JTEXT::_('SEM_0158')."<br />&nbsp;<br />".JTEXT::_('SEM_0162')."<br />&nbsp;<br />",'d','l','100%','sem_edit',2)."</tr>";

// Zusatzfelder
  $zusfeld = sem_f017($row);
  for($i=0;$i<count($zusfeld[0]);$i++) {
    $html .= "<tr>".sem_f022(JTEXT::_('SEM_0023')." ".($i+1).":",'d','r','20%','sem_edit');
    $htxt = "<input class=\"sem_inputbox\" type=\"text\" name=\"zusatz".($i+1)."\" size=\"50\" value=\"".$zusfeld[0][$i]."\" />";
    $html .= sem_f022($htxt,'d','l','80%','sem_edit')."</tr>";
    $html .= "<tr>".sem_f022("&nbsp;",'d','r','20%','sem_edit');
    $htxt = JTEXT::_('SEM_0112').": <input class=\"sem_inputbox\" type=\"text\" name=\"zusatz".($i+1)."hint\" size=\"50\" maxlength=\"120\" value=\"".$zusfeld[1][$i]."\" />";
    $html .= sem_f022($htxt,'d','l','80%','sem_edit')."</tr>";
    $html .= "<tr>".sem_f022("&nbsp;",'d','r','20%','sem_edit');
    $radios = array();     
    $radios[] = JHTML::_('select.option',1,JTEXT::_('SEM_0005'));
    $radios[] = JHTML::_('select.option',0,JTEXT::_('SEM_0006'));
    $htxt = str_replace("SEM_FNUM",$i+1,JTEXT::_('SEM_0117'));
    $htxt = $htxt." ".JHTML::_('select.radiolist', $radios,'zusatz'.($i+1).'show', 'class="sem_inputbox" ','value','text',$zusfeld[2][$i]);
    $html .= sem_f022($htxt,'d','l','80%','sem_edit')."</tr>";
  }
  $html .= "</table>";
  $html .= $pane->endPanel() ;

// ### Panel 5 ###
  if($config->get('sem_p056',200)>0) {
    $html .= $pane->startPanel(JTEXT::_('SEM_0131'),'panel4');
    $htxt = str_replace("SEM_FILESIZE",$config->get('sem_p056',200),JTEXT::_('SEM_0143'));
    $htxt = str_replace("SEM_FILETYPES",strtoupper($config->get('sem_p057','txt zip pdf')),$htxt);
    $html .= "<table>";
    $html .= "<tr>".sem_f022($htxt,'d','l','100%','sem_edit',2)."</tr>";
    $datfeld = sem_f060($row);
    $select = array();     
    $select[] = JHTML::_('select.option',0,JTEXT::_('SEM_0135'));
    $select[] = JHTML::_('select.option',1,JTEXT::_('SEM_0136'));
    $select[] = JHTML::_('select.option',2,JTEXT::_('SEM_0137'));
    $select[] = JHTML::_('select.option',3,JTEXT::_('SEM_0140'));
    for($i=0;$i<count($datfeld[0]);$i++) {
      $html .= "<tr>".sem_f022(JTEXT::_('SEM_0132')." ".($i+1).":",'d','r','20%','sem_edit');
      if($datfeld[0][$i]!="") {
        $htxt = "<b>".$datfeld[0][$i]."</b> - <input class=\"sem_inputbox\" type=\"checkbox\" name=\"deldatei".($i+1)."\" value=\"1\" onClick=\"if(this.checked==true) {datei".($i+1).".disabled=true;} else {datei".($i+1).".disabled=false;}\"> ".JTEXT::_('SEM_0144');
        $html .= sem_f022($htxt,'d','l','80%','sem_edit')."</tr>";
// Kurzbeschreibung
  $html .= "<tr>".sem_f022(JTEXT::_('SEM_0013').':'.sem_f055(JTEXT::_('SEM_0115')),'d','r','20%','sem_edit').sem_f022("<textarea class=\"sem_inputbox\" cols=\"50\" rows=\"3\" name=\"shortdesc\" style=\"width:500px\" width=\"500\">".$row->shortdesc."</textarea>".$reqfield,'d','l','80%','sem_edit')."</tr>";

// Veranstaltungsort
  $html .= "<tr>".sem_f022(JTEXT::_('SEM_0015').':','d','r','20%','sem_edit').sem_f022("<textarea class=\"sem_inputbox\" cols=\"50\" rows=\"3\" name=\"place\" style=\"width:500px\" width=\"500\">".$row->place."</textarea>".$reqfield,'d','l','80%','sem_edit')."</tr>";

// Veranstalter
  if($reglevel>5 AND $art!=3) {
    $html .= "<tr>".sem_f022(JTEXT::_('SEM_0094').':'.sem_f055(JTEXT::_('SEM_0159')),'d','r','20%','sem_edit').sem_f022(sem_f009($row->publisher).$reqfield,'d','l','80%','sem_edit')."</tr>";
  }

// Plätze
  $htxt = "<input class=\"sem_inputbox\" type=\"text\" name=\"maxpupil\" size=\"3\" maxlength=\"5\" value=\"".$row->maxpupil."\" /> - ".JTEXT::_('SEM_0024').": ";
  $radios = array();
  $radios[] = JHTML::_('select.option',0,JTEXT::_('SEM_0025'));
  $radios[] = JHTML::_('select.option',1,JTEXT::_('SEM_0070'));
  $radios[] = JHTML::_('select.option',2,JTEXT::_('SEM_0139'));
  $htxt .= JHTML::_('select.genericlist',$radios,'stopbooking','class="sem_inputbox" ','value','text',$row->stopbooking);
  $html .= "<tr>".sem_f022(JTEXT::_('SEM_0020').':','d','r','20%','sem_edit').sem_f022($htxt.$reqfield,'d','l','80%','sem_edit')."</tr>";

// max. Buchung
  $html .= "<tr>".sem_f022(JTEXT::_('SEM_0021').':'.sem_f055(JTEXT::_('SEM_0138')),'d','r','20%','sem_edit');
  if($config->get('sem_p023','')>0){
    $htxt = "<input class=\"sem_inputbox\" type=\"text\" name=\"nrbooked\" size=\"3\" maxlength=\"3\" value=\"".$row->nrbooked."\" />";
  } else {
    $radios = array();
    $radios[] = JHTML::_('select.option',0,"0");
    $radios[] = JHTML::_('select.option',1,"1");
    $htxt = JHTML::_('select.genericlist',$radios,'nrbooked','class="sem_inputbox" ','value','text',$row->nrbooked);
  }
  $html .= sem_f022($htxt.$reqfield,'d','l','80%','sem_edit')."</tr>";
  $html .= "</table>";
  $html .= $pane->endPanel() ;

// ### Panel 2 ###

  $html .= $pane->startPanel(JTEXT::_('SEM_0128'),'panel2');
  $html .= "<table>";
  $html .= "<tr>".sem_f022(JTEXT::_('SEM_0114'),'d','l','100%','sem_edit',2)."</tr>";
     
// Beschreibung
  $name = "editor1";
  $htxt = $editor->display("description",$row->description,"500","300","50","5");
  $html .= "<tr>".sem_f022(JTEXT::_('SEM_0014').':','d','r','20%','sem_edit').sem_f022(JTEXT::_('SEM_0163').$htxt,'d','l','80%','sem_edit')."</tr>";

// Veranstaltungsbild
  if($config->get('sem_p032','')==1) {
    jimport( 'joomla.filesystem.folder' );
    $htxt = "";
    if($config->get('sem_p033','')!="") {
      $htxt = trim($config->get('sem_p033',''),"/")."/";
    }
    $htxt = JPATH_SITE."/images/stories/".$htxt;
    if(!is_dir($htxt)) {        $html .= "<tr>".sem_f022("&nbsp;",'d','r','20%','sem_edit');
      }
      $htxt = "<input class=\"sem_inputbox\" name=\"datei".($i+1)."\" type=\"file\">";
      $html .= sem_f022($htxt,'d','l','80%','sem_edit')."</tr>";
      $html .= "<tr>".sem_f022("&nbsp;",'d','r','20%','sem_edit');
      $htxt = JTEXT::_('SEM_0014').": <input class=\"sem_inputbox\" type=\"text\" name=\"file".($i+1)."desc\" size=\"50\" maxlength=\"255\" value=\"".$datfeld[1][$i]."\" />";
      $html .= sem_f022($htxt,'d','l','80%','sem_edit')."</tr>";
      $html .= "<tr>".sem_f022("&nbsp;",'d','r','20%','sem_edit');
      $htxt = JHTML::_('select.genericlist', $select,'file'.($i+1).'down', 'class="sem_inputbox" ','value','text',$datfeld[2][$i]);
      $html .= sem_f022(JTEXT::_('SEM_0134')." ".$htxt,'d','l','80%','sem_edit')."</tr>";
    }
    $html .= "</table>";
    $html .= $pane->endPanel() ;
  }

  $html .= $pane->endPane() ;
  $html .= "\n</td></tr><tr>".sem_f022("&nbsp;* ".JTEXT::_('SEM_0118'),'d','r','100%','sem_nav',2);

// Benutzer informieren
//   if($art!=3) {
//     $html .= "</tr></td></tr>";
//     $radios = array();
//     $radios[] = JHTML::_('select.option',1,JTEXT::_('SEM_0005'));
//     $radios[] = JHTML::_('select.option',0,JTEXT::_('SEM_0006'));
//     $htx2 .= "<br />".JHTML::_('select.radiolist',$radios,'inform','class="sem_inputbox"','value','text',0);
//     $htx2 .= "<br />".JTEXT::_('SEM_0108').": <input class=\"sem_inputbox\" type=\"text\" name=\"infotext\" id=\"infotext\" size=\"70\" value=\"".$htx3."\" />";
//     $html .= "\n<tr>".sem_f022($htx2,'d','c','100%','sem_nav',2);
//   }

  return $html;
}
// ++++++++++++++++++++++++++++++++++++++
// +++ Veranstalterliste ausgeben     +++
// ++++++++++++++++++++++++++++++++++++++

function sem_f009($pub) {
  $config = &JComponentHelper::getParams('com_seminar');
  $publevel = $config->get('sem_p001',3);
  $database = &JFactory::getDBO();
  $publevel = $config->get('sem_p001',3);
  $where = array();
  $where [] = "usertype<>'Registered'";
  if($publevel>3) {
    $where [] = "usertype<>'Author'";
  } else if($publevel>4) {
    $where [] = "usertype<>'Editor'";
  } else if($publevel>5) {
    $where [] = "usertype<>'Publisher'";
  } else if($publevel>6) {
    $where [] = "usertype<>'Manager'";
  } else if($publevel>7) {
    $where [] = "usertype<>'Administrator'";
  }
  $database->setQuery( "SELECT id AS value, name AS text FROM #__users"
    . (count( $where )? "\nWHERE " . implode( ' AND ', $where ) : "")
  . "\nORDER BY name"
  );
  $benutzer = $database->loadObjectList();
  return JHTML::_('select.genericlist', array_merge($benutzer), 'publisher', 'class="sem_inputbox" size="1"', 'value', 'text', $pub);
}

заканчивается на line 453
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Импорт YML в Joomla 4

Автор Вадим НН

Ответов: 6
Просмотров: 4656
Последний ответ 11.07.2022, 11:35:15
от Вадим НН
Систему биллинга для Joomla

Автор timofe

Ответов: 0
Просмотров: 4383
Последний ответ 23.03.2021, 14:00:52
от timofe
Магазин на чистой Joomla, можно ли и как?

Автор x1

Ответов: 6
Просмотров: 5026
Последний ответ 19.01.2021, 18:45:21
от v42bis
общая инфа по магазам (joomla VirtueMart. presta shop, open cart)

Автор dmitriy010101

Ответов: 3
Просмотров: 6029
Последний ответ 30.11.2020, 16:26:51
от x1
Com-Property v5 - Компонент недвижимости для Joomla 2.5

Автор alex_a_k

Ответов: 991
Просмотров: 163727
Последний ответ 21.11.2019, 22:07:12
от optimist