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>        <xsl:value-of select="$contract_comment"/>         </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"/> не фурычит ![]() да и после перехода с 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. У вас код параметра будет свой, конечно. Вот примерно так и можно все делать ![]() |
Автор: | 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 интерфейсе клиента. |
На каждую хитрую гайку... ![]() 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/ |