BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 23 июн 2025, 01:04

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




Начать новую тему Ответить на тему  [ Сообщений: 18 ] 
Автор Сообщение
СообщениеДобавлено: 17 дек 2007, 15:16 
Подскажите как на страницу пользователя вывести произвольные данные из параметров договора, например, есть в базе таблица contract_parameter_type_7_values с полем title, нужно выбрать из данные из поля title для текущего пользователя и вставить на страницу открытую пользователем.

Что править в layout.xsl не понятно как и где идет запрос к базе.
Вот например верхняя часть на web странице пользователя.

<td width="100%"><strong>Абонентский договор № <xsl:value-of select="$contractTitle"/></strong>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<xsl:value-of select="$contract_comment"/>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;</td>


Предлагаю сделать отдельную ветку на форуме посвященную встроенному web серверу.


Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: 17 дек 2007, 16:22 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
Запрос в базу сделать там нельзя, а чтобы передавались параметры, установите в конфигурации сервера опцию:
Код:
#добавление в XML на странице статистике детальной информации по договору - 1
web.add.contract=1

посмотреть XML дерево можно, передав в строке браузера ct=xml и просмотрев исходный код HTML страницы.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 17 дек 2007, 16:28 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
для вывода параметра в xls будет что то вроде
<xsl:value-of select="/data/contract_data/paramters/parameter[@pt='1']/@value"/>


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 17 дек 2007, 18:11 
Администратор писал(а):
Запрос в базу сделать там нельзя, а чтобы передавались параметры, установите в конфигурации сервера опцию:
Код:
#добавление в XML на странице статистике детальной информации по договору - 1
web.add.contract=1

посмотреть XML дерево можно, передав в строке браузера ct=xml и просмотрев исходный код HTML страницы.


web.add.contract=1 было включено


Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: 17 дек 2007, 18:14 
Amir писал(а):
для вывода параметра в xls будет что то вроде
<xsl:value-of select="/data/contract_data/paramters/parameter[@pt='1']/@value"/>



не фурычит :cry:

да и после перехода с 4.2 на 4.3 не выводится Просмотр сессий Dialup


Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: 17 дек 2007, 18:37 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
Покажите XML ку из браузера


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 18 дек 2007, 04:46 
Администратор писал(а):
Покажите XML ку из браузера


Спасибо за сапорт! Нашел.

Но вот так правильно:
<xsl:value-of select="/data/contract_data/parameters/parameter[@pt='7']/@value"/></
ошибка в parameters

Тема закрыта.


Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: 22 янв 2008, 18:34 
Не в сети

Зарегистрирован: 14 янв 2008, 04:34
Сообщения: 68
Карма: 0
подробнее плз что и где заполнить/исправить


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 22 янв 2008, 18:37 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
Задача какая?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 23 янв 2008, 11:49 
Не в сети

Зарегистрирован: 14 янв 2008, 04:34
Сообщения: 68
Карма: 0
вывести параметры договора типа ФИО, и др данные, записанные в нём, пользователю на веб страницу


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 23 янв 2008, 13:22 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
Заходите на страницу пользователя, добавляете в URL ct=XML, затем делаете просмотр исходной страницы и получаете XML документ вида:
Код:
<?xml version="1.0" encoding="windows-1251"?>
<?xml-stylesheet type="text/xsl" href="http://127.0.0.1:8080/bgbilling/xsl/main.xsl"?>
<data action="menu" balance_mode="0" comment="Иванов Петр Сидорович"
    contract="x0000" fc="0" id="455" mid="contract" module="contract" title="x0000">
    <menu>
        <item action="Account" mid="1" module="email" title="Управление ящиками"/>

XSL шаблон на основании этих данных создает HTML страницу, при ct=xml браузеру передается XML документ и он сам собирает себе HTML.
Теперь нужно поправить шаблон (имя шаблона указано в начале XML документа, см. выше).
Данные по параметрам располагаются в дереве в узле: contract_data/parameters.
Чтобы данные по договору добавлялись в дерево, добавьте web.add.contract=1 в конфигурацию сервера биллинга.
Ну и теперь лезем в mail.xsl, и например в новости:
Код:
<xsl:template name="news">
<xsl:if test="/data/news/item">
<div id="idDivNews">
   <xsl:for-each select="/data/news/item">
      <span class="date"><xsl:value-of select="@date"/></span><strong class="newsTitle"><xsl:value-of select="@title"/></strong><br/>
      <xsl:choose>
        <xsl:when test="data"><xsl:for-each select="data"><xsl:copy-of select="*|text()"/></xsl:for-each></xsl:when>
        <xsl:otherwise><xsl:for-each select="div"><xsl:value-of select="."/><br/></xsl:for-each></xsl:otherwise>
      </xsl:choose>
      <br/>
   </xsl:for-each>
</div>
</xsl:if>
</xsl:template>

Добавим:
Код:
E-Mail: <xsl:value-of select="/data/contract_data/parameters/parameter[@pid='8']/@value"/>
после
Код:
<div id="idDivNews">

Что означает: выбрать узел parameter c атрибутом pid равным 8 и из него получить атрибут @value. У вас код параметра будет свой, конечно.
Вот примерно так и можно все делать :) в ближайшее время постараемся сделать документацию кратенькую хоть по XSLT, но вы можете и в интернете найти.


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

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
Заметил, что данные например в /data/contract_data/contract/@balance_rest не меняются, пока не перелогинишься. При этом в разделе "Просмотр баланса" данные отображаются в реальном времени.

Может в биллинге сделать настройку:
web.add.contract.cache ?
Или часть данных всегда обновлять динамически.

Мой конфиг:

reports.cache=0
xslt.cache=0
web.mode=html
web.add.contract=1

Цель - отображать сразу в заголовке текущий баланс клиента.

И, кстати, кажется небезопасной возможность при web.mode=html клиенту посмотреть xml через параметр ct=xml. Может быть тоже стоит сделать флажок для такой возможности?


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

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
А что небезопасного в xml?

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 12 апр 2010, 12:27 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
Можете SQL запросом дёргать: http://wiki.bgbilling.ru/index.php/XSLT ... 0.BE.D1.81


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

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
Цитата:
А что небезопасного в xml?

Ну, там может быть инфа, которую клиенту знать необязательно. Какие-нибудь внутренние параметры, примечания договора.

Цитата:
Можете SQL запросом дёргать

Можно конечно. Но зачем тогда вообще нужен этот узел в xml?


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

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
Цитата:
Можно конечно. Но зачем тогда вообще нужен этот узел в xml?

Да там функции генерации этой XML ки универсальная. Например, для какой-нибудь карточки договора нужен, где нет кэширования.


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

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
Тогда ладно, переживём :)


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

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
На каждую хитрую гайку... :D

Cromeshnic писал(а):
Заметил, что данные например в /data/contract_data/contract/@balance_rest не меняются, пока не перелогинишься. При этом в разделе "Просмотр баланса" данные отображаются в реальном времени.

Может в биллинге сделать настройку:
web.add.contract.cache ?
Или часть данных всегда обновлять динамически.


Администратор писал(а):
Да там функции генерации этой XML ки универсальная. Например, для какой-нибудь карточки договора нужен, где нет кэширования.


v5.0
Как выяснилось, данные узла contract_data получаются однажды для сессии и хранятся в request.getSession().getAttribute("contract_data");

Писал свой вебэкшн, который меняет баланс. Чтобы обновить информацию о балансе, достаточно в вебэкшене сбросить этот атрибут:

Код:
this.request.getSession().setAttribute("contract_data", null);


Тогда webexecuter сам заново получит все данные по договору, в т.ч. и balance_rest.
Все просто :)
Главное, не сбрасывать этот параметр когда не нужно, т.к. процедура получения этих данных довольно большая - для договора выгребается вообще всё, что можно.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 18 ] 

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


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

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


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

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