Новости Joomla

SW JProjects v.2.5.0 - компонент каталога цифровых проектов на Joomla

SW JProjects v.2.5.0 - компонент каталога цифровых проектов на Joomla

👩‍💻 SW JProjects v.2.5.0 - компонент каталога цифровых проектов на Joomla.Компонент - менеджер цифровых проектов для Joomla! CMS. Компонент обеспечивает создание каталога цифровых проектов и предоставляет возможность скачивания, в том числе с использованием лицензионных ключей.👩‍💻 v.2.5.0. Что нового?Схемы структур данных для серверов обновлений. Теперь с SW JProjects вы может создавать сервер обновлений не только для расширений Joomla, но и свои собственные. Например, вам нужно, чтобы структура данных сервера обновлений была другая и формат должен быть, например, не XML, а JSON. Формирование структуры данных для сервера обновлений расширений Joomla вынесено в отдельный плагин. Вы можете создать свой собственный плагин и реализовать в нём нужную вам структуру данных, добавив или наоборот исключив отображаемые данные. Сервер обновлений в компоненте по-прежнему отображает информацию о списке проектов и их версиях, о конкретном проекте и его changelog.Можно выбрать схему данных сервера обновлений глобально для всего компонента, выбрать другую схему данных для категории проектов, а так же выбрать схему в каждом проекте.

Разработчикам в качестве образца можно посмотреть плагин схемы данных для Joomla в составе компонента или же плагин-образец JSON-схемы на GitHub.
Группа плагинов swjprojects. Для нужд компонента создана группа плагинов swjprojects. В частности, в этой группе находится плагин структуры данных Joomla расширений для сервера обновлений.Изменение языковых констант. Изменены некоторые языковые константы в панели администратора. Если вы делали переопределение констант - переопределите их снова.👩‍💻 Joomla 6. Внесены изменения для корректной установки и работы компонента на Joomla 6. Компонент успешно протестирован на Joomla 6-beta2.Минимальная версия Joomla - 5. Подняты минимальные системные требования: Joomla 5.0.0 и PHP 8.1.
- Страница расширения👉 Плагин-образец кастомной JSON-схемы данных для сервера обновлений на GitHub.- GitHub расширения- Документация на GitHub- Joomla Extensions Directory#joomla #расширения

Как триггерить события для плагинов на манер Joomla 5+?В Joomla 6 должны удалить метод...

Как триггерить события для плагинов на манер Joomla 5+?В Joomla 6 должны удалить метод...

👩‍💻 Как триггерить события для плагинов на манер Joomla 5+?В Joomla 6 должны удалить метод triggerEvent(), с помощью которого раньше вызывались события для плагинов. Теперь чтобы в своём коде вызвать событие для плагина и получить от него результаты нужно:- создать объект класса события- передать в него параметры

use Joomla\CMS\Event\AbstractEvent;use Joomla\CMS\Factory;use Joomla\CMS\Plugin\PluginHelper;// Грузим плагины нужных группPluginHelper::importPlugin('system');// Создаём объект события$event = AbstractEvent::create('onAfterInitUniverse', [    'subject' => $this,    'data'    => $data, // какие-то данные    'article' => $article, // ещё материал вдовесок    'product' => $product, // и товаров подвезли]);// Триггерим событиеFactory::getApplication()->getDispatcher()->dispatch(    $event->getName(), // Тут можно строку передать 'onAfterInitUniverse'    $event);// Получаем результаты// В случае с AbstractEvent это может быть не 'result',// а что-то ещё - куда сами отдадите данные.// 2-й аргумент - значение по умолчанию, // если не получены результаты$results = $event->getArgument('result', []);
Плюсы такого подхода - вам не нужно запоминать порядок аргументов и проверять их наличие. Если вы написали свой класс события, то в плагине можно получать аргументы с помощью методов $event->getArticle(), $event->getData(), $event->getProduct() и подобными - реализуете сами под свои нужды. Если такой класс события написали, то создаёте экземпляр своего класса события и укажите его явно в аргументе eventClass
use Joomla\Component\MyComponent\Administrator\Event\MyCoolEvent;$event = MyCoolEvent::create('onAfterInitUniverse', [    'subject'    => $this,    'eventClass' => MyCoolEvent::class, // ваш класс события    'data'       => $data, // какие-то данные    'article'    => $article, // ещё материал вдовесок    'product'    => $product, // и товаров подвезли]);
Ожидаемо, что класс вашего события будет расширять AbsractEvent или другие классы событий Joomla.🙁 Есть неприятный нюанс - нельзя просто так вызывать событие и ничего не передать в аргументы. Аргумент subject обязательный. Но если вы всё-таки не хотите туда ничего передавать - передайте туда пустой stdClass или объект Joomla\registry\Registry.
@joomlafeed#joomla #php #webdev

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

20dollars

  • Захожу иногда
  • 235
  • 4 / 2
Кодировка email
« : 14.10.2013, 15:10:38 »
использую вот такое решение обратной связи для Быстрого заказа:
это в код страницы html:
Код
<script src="/components/com_jshopping/js/contactform.js" type="text/javascript"></script>
<a href="#contactForm"><input type="button" value="Быстрый заказ">
<form id="contactForm" action="/processForm.php" method="post">
  <span>Быстрый заказ</span>
  <ul>
    <li>
      <label for="senderName">Имя</label>
      <input type="text" name="senderName" id="senderName" placeholder="Введите ваше имя" required="required" maxlength="40" />
    </li>
    <li>
      <label for="senderName">Телефон</label>
      <input type="text" name="senderPhone" id="senderPhone" placeholder="Введите контактный телефон" required="required" maxlength="40" />
    </li>    <li>
      <label for="senderEmail">E-mail</label>
      <input type="email" name="senderEmail" id="senderEmail" placeholder="Введите ваш e-mail адрес" required="required" maxlength="50" />
    </li>
    <li>
      <label for="message" style="padding-top: .5em;">Комментарий</label>
      <textarea name="message" id="message" placeholder="Ваш комментарий к заявке" required="required" cols="80" rows="10" maxlength="10000"></textarea>
    </li>
  </ul>
   <input name="url" style="display:none" required="required" value="<?php echo "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];?>"/>
   <input name="urlName" style="display:none" required="required" value="<?php print $this->product->name?>"/>
  <div id="formButtons">
    <input type="submit" id="sendMessage" name="sendMessage" value="Отправить" />
    <input type="button" id="cancel" name="cancel" value="Отмена" />
  </div>
</form>
<div id="sendingMessage" class="statusMessage"><p>Выполняется отправка. Пожалуйста подождите...</p></div>
<div id="successMessage" class="statusMessage"><p>Спасибо за заявку! Мы свяжемся с Вами, в ближайшее время</p></div>
<div id="failureMessage" class="statusMessage"><p>Возникли неполадки. Попробуйте снова.</p></div>
<div id="incompleteMessage" class="statusMessage"><p>Пожалуйста, заполните все поля формы перед отправкой.</p></div>
<div id="window"></div>
это файл contactform.js
Код
var messageDelay = 2000;
jQuery( init );

function init() {
jQuery('#contactForm').hide().submit( submitForm ).addClass( 'positioned' );
jQuery('a[href="#contactForm"]').click( function() {
jQuery('#window').fadeTo( 'slow', .8 );
jQuery('#contactForm').fadeIn( 'slow', function() {
jQuery('#senderName').focus();
} )
return false;
} );
jQuery('#cancel').click( function() {
jQuery('#contactForm').fadeOut();
jQuery('#window').fadeOut();
} );
jQuery('#contactForm').keydown( function( event ) {
if ( event.which == 27 ) {
jQuery('#contactForm').fadeOut();
jQuery('#window').fadeOut();
}
} );
}

function submitForm() {
var contactForm = jQuery(this);
if ( !jQuery('#senderName').val() || !jQuery('#senderEmail').val() || !jQuery('#message').val() ) {
jQuery('#incompleteMessage').fadeIn().delay(messageDelay).fadeOut();
contactForm.fadeOut().delay(messageDelay).fadeIn();
} else {
jQuery('#sendingMessage').fadeIn();
contactForm.fadeOut();
jQuery.ajax( {
url: contactForm.attr( 'action' ) + "?ajax=true",
type: contactForm.attr( 'method' ),
data: contactForm.serialize(),
success: submitFinished
} );
}
return false;
}

function submitFinished( response ) {
response = jQuery.trim( response );
jQuery('#sendingMessage').fadeOut();
if ( response == "success" ) {
jQuery('#successMessage').fadeIn().delay(messageDelay).fadeOut();
jQuery('#senderName').val( "" );
jQuery('#senderEmail').val( "" );
jQuery('#message').val( "" );
jQuery('#window').delay(messageDelay+510).fadeOut();
} else {
jQuery('#failureMessage').fadeIn().delay(messageDelay).fadeOut();
jQuery('#contactForm').delay(messageDelay+500).fadeIn();
jQuery('#window').delay(messageDelay+510).fadeOut();
}
}
и processForm.php
Код
<?php
// Определение констант
define( "RECIPIENT_NAME", "citename" ); //Кому адресовано письмо
define( "RECIPIENT_EMAIL", "mail@gmail.com" ); //Куда отправить письмо
define( "EMAIL_SUBJECT", "Быстрый заказ" ); //Тема письма

// Считывание данных из формы
$success = false;
$senderName = $_POST['senderName'];
$senderPhone = $_POST['senderPhone'];
$senderEmail = isset( $_POST['senderEmail'] )? preg_replace( "/[^\.\-\_\@a-zA-Z0-9]/", "", $_POST['senderEmail'] ) : "";
$message = isset( $_POST['message'] )? preg_replace( "/(From:|To:|BCC:|CC:|Subject:|Content-Type:)/", "", $_POST['message'] ) : "";
$url = $_POST['url'];
$urlName = $_POST['urlName'];

// Проверка заполнения полей
if ( $senderName && $senderEmail && $senderPhone ) {
  $recipient = RECIPIENT_NAME . " <" . RECIPIENT_EMAIL . ">";
  $headers = "From: " . $senderName . " <" . $senderEmail . ">";
  $subject = EMAIL_SUBJECT;
   $message = "
На странице: $url

Задали вопрос по $urlName

Спрашивает: $senderName

E mail: $senderEmail

Контактный телефон: $senderPhone

Вопрос: $message";

  $success = mail( $recipient, $subject, $message, $headers );
}

// Возвращение ответа в браузер
if ( isset($_GET["ajax"]) ) {
  echo $success ? "success" : "error";
} else {
?>
<html>
  <head>
    <title>Thanks!</title>
  </head>
  <body>
  <?php if ( $success ) echo "<p>Thanks for sending your message! We'll get back to you shortly.</p>" ?>
  <?php if ( !$success ) echo "<p>There was a problem sending your message. Please try again.</p>" ?>
  <p>Click your browser's Back button to return to the page.</p>
  </body>
</html>
<?php
}
?>
Письмо приходит такого вида:
Спойлер
[свернуть]
Как отсылать его в правильной кодировке?
*

SANR

  • Осваиваюсь на форуме
  • 23
  • 7 / 0
Re: Кодировка email
« Ответ #1 : 14.10.2013, 21:09:51 »
Какая кодировка на сервере?
В какой кодировке текста? Какая кодировка страницы на которой размещен форма?
Какая кодировка в служебном заголовке письма?
В какой кодировке файл processForm.php?
Если processForm.php не utf-8 (Без BOM) преобразуйте в utf-8 (Без BOM) и сохраните.
Также добавите кодировку в processForm.php  в заголовок письма.
Как куда что писать Google php mail $headers посмотрите примеры разберетесь.
*

20dollars

  • Захожу иногда
  • 235
  • 4 / 2
Re: Кодировка email
« Ответ #2 : 15.10.2013, 00:24:57 »
кодировка сервера utf-8, все файлы пересохранял как utf-8 (Без BOM)
а оно все равно черти как приходит.
*

SANR

  • Осваиваюсь на форуме
  • 23
  • 7 / 0
Re: Кодировка email
« Ответ #3 : 15.10.2013, 02:31:06 »
Народ научитесь пользоваться поиском....
Уже ключи пишешь и все равно. В гугал не ногой...
Google
php mail $headers
Второй сайт
В самом конце смотри пример Отправка сложной email.
*

dokado64

  • Новичок
  • 1
  • 0 / 0
Re: Кодировка email
« Ответ #4 : 20.05.2014, 22:09:47 »
использую вот такое решение обратной связи для Быстрого заказа:


большое спасибо за код...

Мне надо было в Cronoforms форме чтобы отправлялось на почту страница с которой заполненна форма,

(обыскал весь интернет нигде нет, тут чисто случайно нашел, полюбому комуто поможет!)
Сделал так:


В хроноформс создал скрытое поле - hidden box

в валуе запихал - <?php echo 'http://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];?>

и в обработчик который отсылает на почту обновил..и все ...сроботало...


сейчас добалю статью в свой блог - докадо точка ру..кому надо там много интересного с чем я столкнулся
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться