BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 23 май 2024, 11:25

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 36 ]  На страницу 1, 2  След.
Автор Сообщение
СообщениеДобавлено: 15 июн 2010, 23:41 
Не в сети
Клиент

Зарегистрирован: 02 окт 2008, 17:52
Сообщения: 530
Карма: 27
Доброе время суток

Хочется при определенном action выводить пользователю html-форму с определенными полями и через них получать данные для дальнейшей обработки.

С первой частью все нормально. Добавил action в "Дополнительные действия", далее открывается форма с нужными полями.

Далее непонятно =)

Есть ли какая-то возможность для обработки этих данных?
Как перехватить данные ?

Вариант с переносом данных в параметры договора через личный кабинет (описанный в вики) не подходит.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16 июн 2010, 07:03 
Не в сети
Клиент

Зарегистрирован: 27 окт 2009, 16:17
Сообщения: 319
Откуда: Иркутск
Карма: 18
На html страничке разместить форму к форме привязать action, который и будет делать дальнейшую обработку.
На форме поля. Их будет заполнять клиент и значения этих полей будет передаваться в action через параметры запроса при нажатии на кнопочку.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16 июн 2010, 07:25 
Не в сети
Клиент

Зарегистрирован: 02 окт 2008, 17:52
Сообщения: 530
Карма: 27
focus писал(а):
На html страничке разместить форму к форме привязать action, который и будет делать дальнейшую обработку.
На форме поля. Их будет заполнять клиент и значения этих полей будет передаваться в action через параметры запроса при нажатии на кнопочку.


Это не вызывает проблем.

Как в классе нового action указать принимать определенные http параметры? (ведь API определяет определенный набор http параметров, а мне нужно перехватить свои).
Если ставить form action (в форме html) на сторонний url-ресурс - то все просто, но надо сделать в рамках ЛК.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16 июн 2010, 09:46 
Не в сети
Клиент

Зарегистрирован: 27 окт 2009, 16:17
Сообщения: 319
Откуда: Иркутск
Карма: 18
Насколько удалось разобраться в BG, то все action должны быть унаследованы от класса bitel.billing.server.ActionBase
А в этом классе есть такие функции
getParam(String name)
где name и есть имя параметра в запросе.
+ есть ещё функции getIntParameter, getBooleanParameter, getBooleanParameter
+ ещё доступен объект HttpServletRequest request.

P.S Если я не прав - поправьте меня.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16 июн 2010, 09:51 
Не в сети
Клиент

Зарегистрирован: 02 окт 2008, 17:52
Сообщения: 530
Карма: 27
focus, спасибо
буду разбираться..


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16 июн 2010, 10:05 
Не в сети
Клиент

Зарегистрирован: 27 окт 2009, 16:17
Сообщения: 319
Откуда: Иркутск
Карма: 18
Да и твой класс, который будет в качестве action выступать должен быть в
package bitel.billing.server.[module]
я делал у меня он был в bitel.billing.server.contract


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16 июн 2010, 10:10 
Не в сети
Клиент

Зарегистрирован: 02 окт 2008, 17:52
Сообщения: 530
Карма: 27
ок, благодарю :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16 июн 2010, 11:21 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
focus писал(а):
Да и твой класс, который будет в качестве action выступать должен быть в
package bitel.billing.server.[module]
я делал у меня он был в bitel.billing.server.contract
ну, это устаревшая схема, можно и так, но лучше в ru.bitel.bgbilling.modules.[module].server.action а вебовские в ru.bitel.bgbilling.modules.[module].server.action.web, но ищется сначала всё равно там, где указано в БД в таблице installed_modules, то есть если вы пользуете готовое строковое наименование модуля (т.е. не создаёте новый свой), то лучше взять тот, который используется для этого модуля.

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16 июн 2010, 16:40 
Не в сети
Клиент

Зарегистрирован: 02 окт 2008, 17:52
Сообщения: 530
Карма: 27
dimOn писал(а):
ну, это устаревшая схема, можно и так, но лучше в ru.bitel.bgbilling.modules.[module].server.action а вебовские в ru.bitel.bgbilling.modules.[module].server.action.web, но ищется сначала всё равно там, где указано в БД в таблице installed_modules, то есть если вы пользуете готовое строковое наименование модуля (т.е. не создаёте новый свой), то лучше взять тот, который используется для этого модуля.


спасибо за совет, dimOn
но у меня версия биллинга 4.6 и нет пакетов ru.bitel.bgbilling.modules.*


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16 июн 2010, 17:01 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
А, ну да, верно, для 4.6 не так актуально. В 4.6 мало модулей там располагалось (assist,drweb итд). Тем более, что там было более жёсткое размещение и все пути были прописаны в БД. Т.е. можно в своём модуле разместить пакеты где угодно, главное прописать их в таблицы. А если расширяете виртуальный модуль "contract", то в 4.6 (!) классы должны лежать в bitel.billing.server.contract.action и называться ActionНазваниеЭкшена или для веба лежать в bitel.billing.server.contract и называться WebAction_НазваниеЭкшена.


upd. з.ы. Если положить их наоборот соответственно в bitel.billing.server.contract и в bitel.billing.server.contract.action то тоже будет работать. Там поиск класса делается по куче мест, исторически сложилось так.

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16 июн 2010, 17:05 
Не в сети
Клиент

Зарегистрирован: 02 окт 2008, 17:52
Сообщения: 530
Карма: 27
Да, так и буду делать
dimOn, еще вопрос:
если я обновлю BG до версии 5.0, надо ли будет менять свой класс и его положение в иерархии пакетов?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16 июн 2010, 18:36 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
До 5.0 - вряд ли что-либо поменяется.
До 5.1 - очень возможно понадобится поменять его реализацию (другие там классы для Page, Period используются итд итп), в иерархии (скорее всего) тоже надо будет переместить его в обязательную подпапку action и action.web для вебовских (и убрать префикс "WebAction_").

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16 июн 2010, 20:13 
Не в сети
Клиент

Зарегистрирован: 02 окт 2008, 17:52
Сообщения: 530
Карма: 27
ок, спасибо за помощь


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 17 июн 2010, 10:25 
Не в сети
Клиент

Зарегистрирован: 27 окт 2009, 16:17
Сообщения: 319
Откуда: Иркутск
Карма: 18
Спасибо за информацию. Будем иметь ввиду для 5.1


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 июн 2010, 19:56 
Не в сети
Клиент

Зарегистрирован: 02 окт 2008, 17:52
Сообщения: 530
Карма: 27
по ходу дела у меня возникла пара вопросов:

1) в скрипте формирующем форму создается таблица с 2-мя полями в которые пользователь вводит данные
Цитата:
event.addReport( "<html><body><form action=\"https://bill.server.com:8443/bgbilling/webexecuter?action=MyAction\">"
+ "<input type=\"hidden\" name=\"param_0\" value=\"1\"></input>"
+ "<dl><table cellspacing=\"1\"><thead><tr><center><td>Параметр 1</td>"
+ "</center><td>Параметр 2</td></tr></thead><tbody>"
+ "<tr><td class=\"comment\"><input type=\"text\" name=\"param_1\"></input></td>"
+ "<td class=\"comment\"><input type=\"text\" name=\"param_2\"></input></td></tr>"
+ "</tbody></table></dl><dl><input type=\"submit\" value=\"Выполнить\"></input></dl></form></body></html>" );


form action должен отправлять данные при нажатии на кнопку "Выполнить" - но этого не происходит
что нужно сделать чтоб корректно передать данные на указанный в URL action?

2) Как вывести сообщение на страницу ЛК при определенном событии из своего экшена?
И надо ли что-то делать с шаблонами xsl в таком случае?


пробовал addReport() как в скриптах поведения
Код:
AdditionalActionEvent lk = new AdditionalActionEvent(cid,aid);
lk.addReport("любой текст");


но сообщение не выдается


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 21 июн 2010, 10:43 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
Чтобы вывести в 4.6 сообщение в рамочке, надо вызвать
Код:
setErrorStatus( "Ошибка" );
или
Код:
setMsg( String msg );
На странице в xsl должен быть вставлен
Код:
<xsl:call-template name="error"/>

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 21 июн 2010, 15:23 
Не в сети
Клиент

Зарегистрирован: 27 окт 2009, 16:17
Сообщения: 319
Откуда: Иркутск
Карма: 18
Цитата:
form action должен отправлять данные при нажатии на кнопку "Выполнить" - но этого не происходит
что нужно сделать чтоб корректно передать данные на указанный в URL action?

Как определяете, что этого не происходит. приведите код WebAction_MyAction.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 21 июн 2010, 16:41 
Не в сети
Клиент

Зарегистрирован: 02 окт 2008, 17:52
Сообщения: 530
Карма: 27
dimOn, спасибо за информацию

focus, форму создаю из скрипта поведения с помощью event.addReport()

1) в скрипте, создающем форму, отображается таблица с 2-мя полями в которые пользователь вводит данные
Цитата:
event.addReport( "<html><body><form action=\"https://bill.server.com:8443/bgbilling/webexecuter?action=MyAction\">"
+ "<input type=\"hidden\" name=\"param_0\" value=\"1\"></input>"
+ "<dl><table cellspacing=\"1\"><thead><tr><center><td>Параметр 1</td>"
+ "</center><td>Параметр 2</td></tr></thead><tbody>"
+ "<tr><td class=\"comment\"><input type=\"text\" name=\"param_1\"></input></td>"
+ "<td class=\"comment\"><input type=\"text\" name=\"param_2\"></input></td></tr>"
+ "</tbody></table></dl><dl><input type=\"submit\" value=\"Выполнить\"></input></dl></form></body></html>" );


а в своем экшене уже перехватываю параметры

когда я руками в строке браузера выполняю bill.server.com:8080/bgbilling/webexecuter?action=MyAction&param_0=1&param_1=1&param_2=2
то параметры нормально перехватываются

а при нажатии "выполнить" на форме из скрипта этого не происходит, на сервере через анализатор пакетов вижу что аргументы передаются не так как хотелось бы
(смотрю через ettercap на порт 8080) прилетают такие параметры

Цитата:
module=contract&mid=contract&action=AdditionalAction&action_id=0&action=MyAction&param_0=1&param_1=1&param_2=2


как видно параметр action прилетает 2 раза и принимается только первый со значением AdditionalAction
скорее всего такой способ предачи параметров не подходит


2) как в своем экшене создать форму?
просто передать html код в метод setErrorStatus() не приводит к желаемому результату, так как на выводе получается чистый html код


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 21 июн 2010, 16:49 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
зачем в экшене форму создавать? только в xsl у нас всегда создаётся. что именно вам надо там создавать?

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 21 июн 2010, 16:54 
Не в сети
Клиент

Зарегистрирован: 02 окт 2008, 17:52
Сообщения: 530
Карма: 27
нужно создать таблицу с двумя редактируемыми полями и при нажатии кнопки "выполнить" отправить данные из этих полей (на свой экшен)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 21 июн 2010, 18:29 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
ну так таблица должна быть в xsl, нет? И поля там же. Зачем её создавать динамически?

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 21 июн 2010, 18:39 
Не в сети
Клиент

Зарегистрирован: 02 окт 2008, 17:52
Сообщения: 530
Карма: 27
да :)
в сторону xsl что-то не подумал
сделал форму как надо
спасибо !


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 29 июн 2010, 20:56 
Не в сети
Клиент

Зарегистрирован: 02 окт 2008, 17:52
Сообщения: 530
Карма: 27
еще небольшой вопрос

можно ли с помощью xsl выбрать значения параметров договора по pid и показать их пользователю в личном кабинете?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 30 июн 2010, 05:23 
Не в сети
Клиент

Зарегистрирован: 27 окт 2009, 16:17
Сообщения: 319
Откуда: Иркутск
Карма: 18
если правильно вас понял, то добавьте к запросу в браузере &ct=xml.
Будет ответ в виде xml. Смотрим как называется параметр и по имени к параметру обращаемся.

Если именно по pid тогда наверное нужно свой Java класс сделать и дергать его из xslt. Или же из xslt брать значение из БД с помощью SQL. На wiki у Бител есть такие примеры.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 30 июн 2010, 05:31 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
Можно.
Чтобы параметры выдавались в xml, нужно в конфигурации биллинга указать:
Код:
#добавление в XML на странице статистике детальной информации по договору - 1
web.add.contract=1


Пример получения значения спискового параметра в xsl:
Код:
<xsl:if test="/data/contract_data/parameters/parameter[@pid=58]">
    <xsl:value-of select="/data/contract_data/parameters/parameter[@pid=58]/@value"/>
</xsl:if>


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 30 июн 2010, 06:38 
Не в сети
Клиент

Зарегистрирован: 02 окт 2008, 17:52
Сообщения: 530
Карма: 27
Cromeshnic, спасибо!
это то что надо


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16 июл 2010, 08:39 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
jack7 А поделитесь данными, как реализовали добавление каких либо данных с личного кабинета пользователем в параметры договора

Cromeshnic У меня информация выводиться, но куда ее запихать? тоесть чтоб она выводилась в менюшке как все остальное??

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16 июл 2010, 10:32 
Не в сети
Клиент

Зарегистрирован: 12 фев 2008, 18:10
Сообщения: 3951
Карма: 249
skyb писал(а):
У меня информация выводиться, но куда ее запихать? тоесть чтоб она выводилась в менюшке как все остальное??

в какой менюшке то? что именно надо сделать? форму с выводом текущих данных и возможностью изменения (примерно об этом тут выше как раз и речь) или просто вывод данных (это решается простой правкой шаблонов)?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16 июл 2010, 11:54 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
Пример показан как вытянуть парамтр договора
1-в какое место в каком файле это все вставлять чтоб получилась менюшка (тоесть слева, где новости и тд) чтоб была типо - параметры договра, после нажатия на нее выводились некоторые данные по полям
2-да хотелось бы ещё 1 менюшку - ввод параметров договора, при нажатии на нее вылетали несколько полей для заполнения чтоб они потом передавались и записывались в параметры договора

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16 июл 2010, 12:53 
Не в сети
Клиент

Зарегистрирован: 12 фев 2008, 18:10
Сообщения: 3951
Карма: 249
skyb писал(а):
1-в какое место в каком файле это все вставлять чтоб получилась менюшка (тоесть слева, где новости и тд) чтоб была типо - параметры договра, после нажатия на нее выводились некоторые данные по полям

в common.xsl, в <xsl:template name="standart_menu"> вставить
Код:
<tr>
   <th><img src="img/strelki.gif"/></th>
   <td><a href="link_to_pagre">Параметры договора</a></td>
</tr>

вместо link_to_pagre вставить ссылку на ту страницу где будешь это все вытягивать их из XML, хоть убей - не помню где именно выводятся параметры но ЕМНИМС на всех страницах (читай - не зависит от модуля), так что можно даже ссылку на новости для этого использовать (правда от ссылки них придется отказаться наверное) - надо только их не рисовать на своей "страничке" и все ...


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 36 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
POWERED_BY
Русская поддержка phpBB
[ Time : 0.074s | 78 Queries | GZIP : On ]