forum.bitel.ru
http://forum.bitel.ru/

Произвольные данные на web интерфейсе клиента.
http://forum.bitel.ru/viewtopic.php?f=22&t=619
Страница 1 из 1

Автор:  Tester [ 17 дек 2007, 15:16 ]
Заголовок сообщения:  Произвольные данные на web интерфейсе клиента.

Подскажите как на страницу пользователя вывести произвольные данные из параметров договора, например, есть в базе таблица 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 ]
Заголовок сообщения: 

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

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

Автор:  Amir [ 17 дек 2007, 16:28 ]
Заголовок сообщения: 

для вывода параметра в xls будет что то вроде
<xsl:value-of select="/data/contract_data/paramters/parameter[@pt='1']/@value"/>

Автор:  Tester [ 17 дек 2007, 18:11 ]
Заголовок сообщения: 

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

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


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

Автор:  Tester [ 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 ]
Заголовок сообщения: 

Покажите XML ку из браузера

Автор:  Tester [ 18 дек 2007, 04:46 ]
Заголовок сообщения: 

Администратор писал(а):
Покажите XML ку из браузера


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

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

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

Автор:  duh [ 22 янв 2008, 18:34 ]
Заголовок сообщения: 

подробнее плз что и где заполнить/исправить

Автор:  Администратор [ 22 янв 2008, 18:37 ]
Заголовок сообщения: 

Задача какая?

Автор:  duh [ 23 янв 2008, 11:49 ]
Заголовок сообщения: 

вывести параметры договора типа ФИО, и др данные, записанные в нём, пользователю на веб страницу

Автор:  Администратор [ 23 янв 2008, 13:22 ]
Заголовок сообщения: 

Заходите на страницу пользователя, добавляете в 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, но вы можете и в интернете найти.

Автор:  Cromeshnic [ 12 апр 2010, 07:41 ]
Заголовок сообщения:  Re: Произвольные данные на web интерфейсе клиента.

Заметил, что данные например в /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. Может быть тоже стоит сделать флажок для такой возможности?

Автор:  dimOn [ 12 апр 2010, 12:24 ]
Заголовок сообщения:  Re: Произвольные данные на web интерфейсе клиента.

А что небезопасного в xml?

Автор:  Администратор [ 12 апр 2010, 12:27 ]
Заголовок сообщения:  Re: Произвольные данные на web интерфейсе клиента.

Можете SQL запросом дёргать: http://wiki.bgbilling.ru/index.php/XSLT ... 0.BE.D1.81

Автор:  Cromeshnic [ 12 апр 2010, 12:37 ]
Заголовок сообщения:  Re: Произвольные данные на web интерфейсе клиента.

Цитата:
А что небезопасного в xml?

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

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

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

Автор:  Администратор [ 12 апр 2010, 13:29 ]
Заголовок сообщения:  Re: Произвольные данные на web интерфейсе клиента.

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

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

Автор:  Cromeshnic [ 12 апр 2010, 13:34 ]
Заголовок сообщения:  Re: Произвольные данные на web интерфейсе клиента.

Тогда ладно, переживём :)

Автор:  Cromeshnic [ 21 июл 2010, 15:22 ]
Заголовок сообщения:  Re: Произвольные данные на web интерфейсе клиента.

На каждую хитрую гайку... :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.
Все просто :)
Главное, не сбрасывать этот параметр когда не нужно, т.к. процедура получения этих данных довольно большая - для договора выгребается вообще всё, что можно.

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/