Joomla 1.0 Использование JSHttpRequest в модулях

Тема в разделе "Создание расширений для Joomla", создана пользователем Dark Neo, 01.10.2008.

  1. Dark Neo
    Offline

    Dark Neo Недавно здесь

    Регистрация:
    02.08.2008
    Сообщения:
    32
    Симпатии:
    0
    Пол:
    Мужской
    Добрый день.

    При написании модулей обнаружил такую вот, не то, что проблему, больше неудобство.

    Допустим, есть скрипт, интерфейсная часть которого генерируется другим скриптом, например капча генерируется на лету при помощи AJAX и JSHttpRequest. Скрипт, в общем виде выглядит так:

    Основной_файл_скрипта.php

    Код (CODE):
    1. [B]Подключаем JSHttpRequest.js[/B]
    2.  
    3. <script language="JavaScript" type="text/javascript" src="<?php echo $mosConfig_live_site; ?>/modules/mod_smssend/JSHttpRequest.js"></script>
    4. <script language="JavaScript">
    5.  
    6. var is_ie = (/msie/i.test(navigator.userAgent) && !/opera/i.test(navigator.userAgent));
    7.  
    8. [B]Cкрипт генерации капчи на лету[/B]
    9.  
    10. function cap_change()
    11. {
    12.   // генерируем случайное число
    13.   var now = new Date();
    14.   var num = (now.getSeconds())*now;
    15.  
    16.   var nameBlock = 'captcha';
    17.   var req = new JSHttpRequest();
    18.   req.onreadystatechange = function() { if (req.readyState == 4) { GID(nameBlock).innerHTML = req.responseJS.captcha; } }
    19.   req.caching = false;
    20.   req.open('GET', '[B]<?php echo $mosConfig_live_site; ?>/modules/mod_smssend/captcha.php[/B]', true);
    21.   req.send({ code: num });  
    22.  
    23.   //window.alert(num);
    24. }
    25.  
    26. [B]Втыкаем эту капчу в отображаемую часть[/B]
    27.  
    28. <div id="captcha" align="left"></div>


    Здесь вопросов не возникает и все работает на ура.

    Теперь берем непосредственно файл генерации капчи

    Код (CODE):
    1. [B]Здесь подключаем файлы конфигурации Джумлы, чтобы можно было как-то обратно вернуть результат именно туда[/B]
    2.  
    3. include_once("../../configuration.php");
    4. include_once("../../modules/mod_smssend/JSHttpRequest.php");
    5. $JSHttpRequest = new JSHttpRequest("windows-1251");  
    6.  
    7. $code = $_REQUEST['code'];
    8. $code = substr($code, 0, 6);
    9.  
    10. [B]Здесь, соответственно, $mosConfig_live_site уже работает[/B]
    11.  
    12. $result = "<img src=\"".[B]$mosConfig_live_site[/B]."/modules/mod_smssend/captcha_img.php?code=".$code."\" border=\"1\">";


    Неудобство заключается в том, что, допустим, мне в этом скрипте было бы удобно использовать что-то из джумловского API, например, запрос к базе данных сделать, но при попытке сделать запрос через $database->setQuery("....") я получаю ошибку, что класс $database не известен, т.е. заново подключаться к базе данных через mysql_connect неудобно.

    Прикладываю модуль собственной разработки, где я использовал JSHttpRequest.

    Сразу об использовании JSHttpRequest. Кто-нибудь смог решить проблему с использованием его в IE? У меня не работает. Ни в каком виде, уже гугл замучил распросами.
     

    Вложения:

    • mod_smssend.zip
      Размер файла:
      188.3 КБ
      Просмотров:
      5
  2.  
  3. sectus
    Offline

    sectus специалист

    Регистрация:
    19.04.2006
    Сообщения:
    1 210
    Симпатии:
    46
    Пол:
    Мужской
    по первому вопросу
    Код (PHP):
    1. include_once("../../includes/joomla.php");
     
  4. Dark Neo
    Offline

    Dark Neo Недавно здесь

    Регистрация:
    02.08.2008
    Сообщения:
    32
    Симпатии:
    0
    Пол:
    Мужской
    Cпасибо, думаю, самое то. А как на счет использования JSHttpRequest в IE?
     
  5. Dead Krolik
    Offline

    Dead Krolik специалист

    Регистрация:
    13.04.2007
    Сообщения:
    3 688
    Симпатии:
    101
    Пол:
    Мужской
    Никто каптчу через модуль не делает. Для этого есть компоненты, и спец вызов через index2.php и no_html. Почитай документацию, я там обрисовал вроде бы это.

    index2.php?option=com_твой_компонент&no_html=1&task=get_captcha
     
  6. Dark Neo
    Offline

    Dark Neo Недавно здесь

    Регистрация:
    02.08.2008
    Сообщения:
    32
    Симпатии:
    0
    Пол:
    Мужской
    Не пашет. Нарываюсь на собственный обработчик.
     
    Последнее редактирование: 03.10.2008

Поделиться этой страницей

Загрузка...