forum.bitel.ru http://forum.bitel.ru/ |
|
Обновление с 4.6 до 5.0, вопросы по API http://forum.bitel.ru/viewtopic.php?f=19&t=4557 |
Страница 1 из 2 |
Автор: | jack7 [ 16 сен 2010, 16:50 ] |
Заголовок сообщения: | Обновление с 4.6 до 5.0, вопросы по API |
Обновился на тестовом биллинге с 4.6 до 5.0 Перестал корректно работать метод setErrorStatus() в моем классе, то есть вместо сообщений выводится пустой лист. В layout.xsl template "error" остался прежним, или в 5.0 поменялся механизм вывода сообщений пользователю в кабинет? |
Автор: | skn [ 16 сен 2010, 18:13 ] |
Заголовок сообщения: | Re: Обновление с 4.6 до 5.0, вопросы по API |
сравните xml ответов в 4.6. и 5.0 |
Автор: | jack7 [ 16 сен 2010, 19:05 ] |
Заголовок сообщения: | Re: Обновление с 4.6 до 5.0, вопросы по API |
Ответы выглядят одинаково: Цитата: <data action="Mail" balance_mode="1" comment="Иванов Иван Иванович" contract="343" fc="0" id="3119" mid="contract" module="contract" status="error" title="343"> <menu> <item action="ShowSessions" mid="2" module="dialup" title="Просмотр Ваших соединений"/> <item action="ShowLoginsBalance" mid="2" module="dialup" title="Затраты на Интернет"/> <item action="ChangeLoginPassword" mid="2" module="dialup" title="Cмена пароля для соединения"/> <item action="TrayInfo" mid="5" module="trayinfo" title="Параметры программы просмотра баланса"/> <item action="MPS" mid="9" module="mps" title="Платежные системы"/> <item action="WM" mid="10" module="wm" title="Оплата через WebMoney"/> <item action="HelpDeskTable" mid="0" module="ru.bitel.bgbilling.plugins.helpdesk" title="HelpDesk"/> <item action="DocumentsTable" mid="0" module="ru.bitel.bgbilling.plugins.documents" title="Документы"/> </menu>Имя ящика 'testtest' уже занято, пожалуйста, выберите другое имя.<contract_data> <contract balance_rest="111.00" cid="3119" comment="Иванов Иван Иванович" date1="24.03.2009" date2="" fc="0" firm="1" gr="1" limit="0.00" mode="1" param_group="2" pswd="pass" status="0" status_date="" time="16.09.2010 18:59" title="343"> <tariff date1="24.03.2009" date2="" tariff_plan="Сотрудник" tpid="16"/> </contract> В 5.0 надписи которая выделена красным не видно в кабинете пользователя. Это сообщение выводится методом setErrorStatus() в исключительной ситуации. |
Автор: | skn [ 16 сен 2010, 20:16 ] |
Заголовок сообщения: | Re: Обновление с 4.6 до 5.0, вопросы по API |
попробуйте сравнить xsl-файлы |
Автор: | jack7 [ 16 сен 2010, 20:21 ] |
Заголовок сообщения: | Re: Обновление с 4.6 до 5.0, вопросы по API |
какой именно xsl-файл посоветуете смотреть? через какой template выводятся сообщения метода setErrorStatus() ? ps есть патчи, сделанные через diff |
Автор: | dimOn [ 17 сен 2010, 13:01 ] |
Заголовок сообщения: | Re: Обновление с 4.6 до 5.0, вопросы по API |
через то же шаблон error и выводится... |
Автор: | dimOn [ 17 сен 2010, 13:01 ] |
Заголовок сообщения: | Re: Обновление с 4.6 до 5.0, вопросы по API |
Цитата: какой именно xsl-файл посоветуете смотреть? ваш шаблон, где вы ожидаете вывод получить. он у вас собственный или как? давайте его сюда покажите...
|
Автор: | jack7 [ 17 сен 2010, 14:26 ] |
Заголовок сообщения: | Re: Обновление с 4.6 до 5.0, вопросы по API |
вот код из класса при исключительной ситуации Код: if((mail_login.length() < 5) || (mail_login.length() > 20)) { System.out.print("Ошибка: длина логина неверна, " + mail_login.length() + " символов (допускается от 5 до 20)."); setErrorStatus("Ошибка: длина логина неверна, " + mail_login.length() + " символов (допускается от 5 до 20)."); return; } вот код шаблона Код: <xsl:template name="chacc"> <form method='post' action='{$WEBEXECUTER}'> <xsl:call-template name="error"/> <input type="hidden" name="action" value="AstraMail"/> <input type="hidden" name="param_add" value="1"/> <div class="report"> <table cellspacing='1'> <col class="col1"/> <col class="col2"/> <tbody> <tr> <th>Имя ящика:</th> <td><input type='edit' name='param_login' size='20' maxlength='20'/></td> </tr> <tr> <th>Пароль:</th> <td><input type='edit' name='param_pass' size='20' maxlength='20'/></td> </tr> </tbody> <tfoot> <tr><td colspan='2'> <xsl:call-template name="submit"> <xsl:with-param name="title" select="'Создать почтовый ящик'"/> </xsl:call-template> </td></tr> </tfoot> </table> </div> </form> </xsl:template> Так вот при исключительной ситуации в логах запись вижу, а в кабинете белый лист (на версии 4.6 все норм) еще раз повторюсь что template "error" в файле layout.xsl в 4.6 и в 5.0 одинаков, xml-ответы тоже |
Автор: | skn [ 17 сен 2010, 14:39 ] |
Заголовок сообщения: | Re: Обновление с 4.6 до 5.0, вопросы по API |
если белый лист, значит ошибка при трансформации xml в html, см. логи на предмет ошибок |
Автор: | jack7 [ 17 сен 2010, 15:11 ] |
Заголовок сообщения: | Re: Обновление с 4.6 до 5.0, вопросы по API |
1) Поиск в xsl, находясь в webroot/xsl версии 5.0 Цитата: bill xsl # grep 'xsl:template name="error"' /usr/local/BGBillingServer.old/webroot/xsl/* | grep -v bak | grep -v orig | grep -v new /usr/local/BGBillingServer.old/webroot/xsl/layout.xsl: <xsl:template name="error"> /usr/local/BGBillingServer.old/webroot/xsl/ru.bitel.bgbilling.plugins.helpdesk.xsl: <xsl:template name="error"> bill xsl # grep 'xsl:template name="error"' * | grep -v bak | grep -v orig | grep -v new layout.xsl: <xsl:template name="error"> ru.bitel.bgbilling.plugins.helpdesk.xsl: <xsl:template name="error"> 2) при включенном DEBUG в log4 server.error.log пустой вот строки после выполнения action server.log писал(а): 09-17/15:12:17 DEBUG [http-8443-4] server - Web auth modes: 09-17/15:12:17 DEBUG [http-8443-4] server - 0 => 1 09-17/15:12:17 DEBUG [http-8443-4] server - 5 => 1 09-17/15:12:17 DEBUG [http-8443-4] server - clid=39 09-17/15:12:17 INFO [http-8443-4] LoggingPrintStream - Ошибка: длина логина неверна, 1 символов (допускается от 5 до 20). то есть System.out.print срабатывает может есть возможность заменить метод setErrorStatus() на какой-нибудь подобный? |
Автор: | dimOn [ 17 сен 2010, 16:00 ] |
Заголовок сообщения: | Re: Обновление с 4.6 до 5.0, вопросы по API |
да не, если вас белый лист то причём тут шаблон error? это что-то с xsl у вас, при попытке трансформации он падает. |
Автор: | jack7 [ 17 сен 2010, 16:34 ] |
Заголовок сообщения: | Re: Обновление с 4.6 до 5.0, вопросы по API |
dimOn писал(а): да не, если вас белый лист то причём тут шаблон error? это что-то с xsl у вас, при попытке трансформации он падает. после обновления в файлы xsl я внес изменения, то есть добавил свой template в main.xsl но не выводится текстовое сообщение методом setErrorStatus() если сделать ошибку, допустим в смене пароля через кабинет статистики, то ошибка выводится нормально в красной рамке, но тогда почему не выводится ошибочное сообщение с моем классе (код темплейта выложен ранее)? |
Автор: | dimOn [ 17 сен 2010, 16:43 ] |
Заголовок сообщения: | Re: Обновление с 4.6 до 5.0, вопросы по API |
я не понял что вы там сделали. что, куда и зачем добавили. зачем в main.xsl нужен этот template? он в лаяуте был всегда. короче, ничего не понятно что было, что стало и что именно не работает. |
Автор: | jack7 [ 17 сен 2010, 16:59 ] |
Заголовок сообщения: | Re: Обновление с 4.6 до 5.0, вопросы по API |
ок давайте по порядку какой template и из какого файла xsl выдает сообщение метода setErrorStatus()? |
Автор: | jack7 [ 18 сен 2010, 21:31 ] |
Заголовок сообщения: | Re: Обновление с 4.6 до 5.0, вопросы по API |
Итак проблема в следующем: После обновления с 4.6 на 5.0 не видны сообщения в кабинете, отправляемые методом setErrorStatus() из класса, находящегося в bitel/billing/server/contract. Вместо сообщения белый лист. XML-ответы одинаковы для 4.6 и 5.0 (&ct=xml), то есть в исходниках XML-ответа сообщение видно. Шаблоны "error" в файлах layout.xsl одинаковы. Мои шаблоны работают корректно. Код класса работает корректно, определяя исключительную ситуацию Код: if((mail_login.length() < 5) || (mail_login.length() > 20)) { System.out.print("Ошибка: длина логина неверна, " + mail_login.length() + " символов (допускается от 5 до 20)."); setErrorStatus("Ошибка: длина логина неверна, " + mail_login.length() + " символов (допускается от 5 до 20)."); return; } Сообщение от System.out.print вижу в логе. Сообщение от setErrorStatus вижу в XML-ответе, но не в html-ответе. В чем решение? |
Автор: | skn [ 19 сен 2010, 22:17 ] |
Заголовок сообщения: | Re: Обновление с 4.6 до 5.0, вопросы по API |
попробуйте откатить xsl на оригинальные, при них ошибку выводит? то что у вас белый лист говорит о том что происходит сбой при трансформации, а в трансформации не только темплейт error участвует, возможно другая темплейт виноват. |
Автор: | jack7 [ 19 сен 2010, 23:51 ] |
Заголовок сообщения: | Re: Обновление с 4.6 до 5.0, вопросы по API |
ок попробую - завтра отпишусь |
Автор: | jack7 [ 20 сен 2010, 11:10 ] |
Заголовок сообщения: | Re: Обновление с 4.6 до 5.0, вопросы по API |
поднял бекап директории BGBillingServer версии 4.6 обновил согласно документации до 5.0 результат тот же, даже без добавления моих шаблонов создал тестовый класс WebAction_TTT Код: package bitel.billing.server.contract; import bitel.billing.server.contract.action.ActionBase; public final class WebAction_TTT extends ActionBase { public void doAction() { System.out.print("Test: тест"); setErrorStatus("Test: тест"); } }; скомпилировал его как bitel/billing/server/contract/WebAction_TTT.class упаковал в ttt.jar и закинул его в lib/ перезапустил BG обратился напрямую по адресу https ://bill.server.com:8443/bgbilling/webexecuter?action=TTT&ct=xml в xml-ответе Цитата: <data action="TTT" balance_mode="1" comment="test" contract="111" fc="0" id="39" mid="contract" module="contract" status="error" title="111"> <menu> <item action="ShowSessions" mid="2" module="dialup" title="Просмотр Ваших соединений"/> <item action="ShowLoginsBalance" mid="2" module="dialup" title="Затраты на Интернет"/> <item action="ChangeLoginPassword" mid="2" module="dialup" title="Cмена пароля для соединения"/> <item action="TrayInfo" mid="5" module="trayinfo" title="Параметры программы просмотра баланса"/> <item action="MPS" mid="9" module="mps" title="Платежные системы"/> <item action="WM" mid="10" module="wm" title="Оплата через WebMoney"/> <item action="Card" mid="11" module="card" title="Оплата по картам"/> <item action="HelpDeskTable" mid="0" module="ru.bitel.bgbilling.plugins.helpdesk" title="HelpDesk"/> <item action="DocumentsTable" mid="0" module="ru.bitel.bgbilling.plugins.documents" title="Документы"/> </menu>Test: тест<contract_data> <contract balance_rest="40.00" cid="39" comment="test" date1="11.01.2009" date2="" fc="0" firm="1" gr="1" limit="0.00" mode="1" param_group="2" pswd="rrrr" status="0" status_date="" time="20.09.2010 10:58" title="111"> <tariff date1="01.12.2008" date2="" tariff_plan="Сотрудник" tpid="16"/> </contract> в html так же белый лист осталось сравнить через diff все xls файлы из бекапа и из обновленной директории webroot/xsl, после сравнения опишусь |
Автор: | jack7 [ 20 сен 2010, 16:28 ] |
Заголовок сообщения: | Re: Обновление с 4.6 до 5.0, вопросы по API |
Вот разница шаблонов (не вывел только register_print_task_order.xsl.patch, думаю он не играет важной роли) common.xsl писал(а): --- /tmp/common.xsl.old 2010-09-20 16:09:00.000000000 +0600 +++ /tmp/common.xsl.new 2010-09-20 16:09:00.000000000 +0600 @@ -35,15 +35,15 @@ </xsl:if> <tr> <th><img src="img/strelki.gif"/></th> - <td><a href="?action=AdditionalAction&mid=contract">Дополнительные действия</a></td> - </tr> + <td><a href="?action=ContractStatus&mid=contract">Управление статусом</a></td> + </tr> <tr> <th><img src="img/strelki.gif"/></th> - <td><a href="?action=MemoTable&mid=contract">Примечания</a></td> + <td><a href="?action=AdditionalAction&mid=contract">Дополнительные действия</a></td> </tr> <tr> <th><img src="img/strelki.gif"/></th> - <td><a href="?action=AstraMail_main">Почта</a></td> + <td><a href="?action=MemoTable&mid=contract">Примечания</a></td> </tr> </xsl:template> <!-- @@ -312,7 +312,8 @@ <xsl:variable name="selected"> <xsl:choose> <xsl:when test="/data/date/@month"><xsl:value-of select="/data/date/@month"/></xsl:when> - <!-- новый --><xsl:when test="/data/common:result/attributes/item[@key='date1']/value/@month"><xsl:value-of select="/data/common:result/attributes/item[@key='date1']/value/@month"/></xsl:when> + <!-- новый <xsl:when test="/data/common:result/attributes/item[@key='date1']/value/@month"><xsl:value-of select="/data/common:result/attributes/item[@key='date1']/value/@month"/></xsl:when>--> + <!-- новый --><xsl:when test="/data/common:result/attributes/item[@key='date1']/value"><xsl:value-of select="/data/common:result/attributes/item[@key='date1']/value/text()"/></xsl:when> <xsl:when test="/data/date/@selected_month"><xsl:value-of select="number(/data/date/@selected_month)+1"/></xsl:when> <xsl:otherwise><xsl:value-of select="number(/data/date/@curr_month)+1"/></xsl:otherwise> </xsl:choose> @@ -440,4 +441,4 @@ </xsl:for-each> </xsl:template> -</xsl:stylesheet> +</xsl:stylesheet> dialup.xsl писал(а): --- /tmp/dialup.xsl.old 2010-09-20 16:09:00.000000000 +0600 +++ /tmp/dialup.xsl.new 2010-09-20 16:09:00.000000000 +0600 @@ -12,7 +12,7 @@ <xsl:when test="data/@action = 'DispatchDirect'">Рассылка отчета по направлениям</xsl:when> <xsl:when test="data/@action = 'ShowPeriods'">Учетные периоды</xsl:when> <xsl:when test="data/@action = 'DynDnsChange'">Управление динамическим ДНС</xsl:when> - <xsl:when test="data/@action = 'test'">TEST</xsl:when> + </xsl:choose> </xsl:template> @@ -42,9 +42,7 @@ <xsl:when test="@action = 'DynDnsChange'"> <xsl:call-template name="DynDnsChange"/> </xsl:when> - <xsl:when test="@action = 'test'"> - <xsl:call-template name="Test"/> - </xsl:when> + </xsl:choose> </xsl:template> @@ -712,15 +710,6 @@ </xsl:template> -<xsl:template name="Test"> - <select name="test"> - <option value="-1">---</option> - <xsl:for-each select="/data/test/table/row"> - <option value="{@id}"><xsl:value-of select="@title"/></option> - </xsl:for-each> - </select> -</xsl:template> - <xsl:template name="AddReportReferences"> <div id="idDivPhoneReportSave"> Отчет в виде: @@ -730,4 +719,4 @@ <a title="HTML/ZIP" href="{$WEBEXECUTER}?module=dialup&mid={/data/@mid}&action=ShowSessions&login={/data/logins/@id}&month={/data/date/@month}&year={/data/date/@year}&day_from={/data/date/@day_from}&day_to={/data/date/@day_to}&file=1&output=html&zip=1">HTML/ZIP</a>(После изменения фильтра сначала нажмите "Вывести") </div> </xsl:template> -</xsl:stylesheet> +</xsl:stylesheet> ipn.xsl писал(а): --- /tmp/ipn.xsl.old 2010-09-20 16:09:00.000000000 +0600 +++ /tmp/ipn.xsl.new 2010-09-20 16:09:00.000000000 +0600 @@ -29,7 +29,25 @@ <table class="filter" cellpadding="0" cellspacing="0"> <tr> <td colspan="2"> - <xsl:call-template name="dayFilterForm"/> + <table> + <tr> + <td> + <table> + <tr> + <th>Ед. измерения </th> + <td> + <select name='unit'> + <xsl:call-template name="unit_list"/> + </select> + </td> + </tr> + </table> + </td> + <td> + <xsl:call-template name="dayFilterForm"/> + </td> + </tr> + </table> </td> </tr> <tr> @@ -94,35 +112,45 @@ </tfoot> </table> - + <xsl:variable name="unit" select="/data/unit/@unit"/> <!-- нижняя табличка --> - <strong>Итого: <xsl:value-of select="format-number( stat/@all, '### ### ### ##0', 'summa')"/> ( <xsl:value-of select="format-number( stat/@all div 1048576, '### ### ### ##0', 'summa')"/> Мбайт )</strong> + <strong>Итого: <xsl:value-of select="format-number( stat/@all div $unit, '### ### ### ##0.#', 'summa')"/> +   + <xsl:call-template name="unit_title"> + <xsl:with-param name="unit" select="$unit"/> + </xsl:call-template> + </strong> <table id="idIpnStatTable" cellspacing="1" class="table"> <tbody> <xsl:call-template name="addStatRow"> <xsl:with-param name="from_pos" select="0"/> <xsl:with-param name="to_pos" select="7"/> + <xsl:with-param name="unit" select="$unit"/> </xsl:call-template> <xsl:call-template name="addStatRow"> <xsl:with-param name="from_pos" select="6"/> <xsl:with-param name="to_pos" select="13"/> + <xsl:with-param name="unit" select="$unit"/> </xsl:call-template> <xsl:call-template name="addStatRow"> <xsl:with-param name="from_pos" select="12"/> <xsl:with-param name="to_pos" select="19"/> + <xsl:with-param name="unit" select="$unit"/> </xsl:call-template> <xsl:call-template name="addStatRow"> <xsl:with-param name="from_pos" select="18"/> <xsl:with-param name="to_pos" select="25"/> + <xsl:with-param name="unit" select="$unit"/> </xsl:call-template> <xsl:call-template name="addStatRow"> <xsl:with-param name="from_pos" select="24"/> <xsl:with-param name="to_pos" select="31"/> + <xsl:with-param name="unit" select="$unit"/> </xsl:call-template> <xsl:for-each select="labels/label"> @@ -311,6 +339,7 @@ <xsl:template name="addStatRow"> <xsl:param name="to_pos"/> <xsl:param name="from_pos"/> +<xsl:param name="unit"/> <tr> <xsl:for-each select="labels/label"> <xsl:if test='position() < $to_pos and position() > $from_pos'> @@ -324,7 +353,7 @@ <xsl:variable name="id" select="@id"/> <xsl:variable name="value" select="/data/stat/item[@id = $id]/@value"/> <td> - <xsl:if test="$value"><xsl:value-of select="format-number( $value, '### ### ### ##0', 'summa')"/></xsl:if> + <xsl:if test="$value"><xsl:value-of select="format-number( $value div $unit, '### ### ### ##0.#', 'summa')"/></xsl:if> <xsl:if test="not( $value )">0</xsl:if> </td> </xsl:if> layout.xsl писал(а): --- /tmp/layout.xsl.old 2010-09-20 16:09:00.000000000 +0600 +++ /tmp/layout.xsl.new 2010-09-20 16:09:00.000000000 +0600 @@ -191,7 +191,7 @@ <td class="line"><div></div></td> </tr> <tr> - <td height="45" align="right" id="idTdFooter">© 2007-2009 <a href="http://www.bitel.ru/" style="color: white;">BiTel, Ltd.</a></td> + <td height="45" align="right" id="idTdFooter">© 2007-2010 <a href="http://www.bitel.ru/" style="color: white;">BiTel, Ltd.</a></td> </tr> </table> </body> @@ -206,7 +206,8 @@ <xsl:choose> <xsl:when test="$text"><div class="errorMessage"><xsl:value-of select="$text"/></div></xsl:when> <xsl:when test="@status = 'error'"> - <div class="errorMessage"><b>Ошибка:</b> <xsl:value-of select="/data/text()"/></div> + <!-- <div class="errorMessage"><b>Ошибка:</b> <xsl:value-of select="/data/text()"/></div> --> + <div class="errorMessage"><b>Ошибка:</b> <pre><xsl:value-of select="/data/text()"/></pre></div> </xsl:when> <!-- Это неверный способ передачи сообщения об ошибке. Постепенно убрать везде где используется в Web акшенах. --> <xsl:otherwise> @@ -559,4 +560,37 @@ <xsl:template name="head"> </xsl:template> + + <xsl:template name="unit_list"> + <option> + <xsl:if test="/data/unit/@unit='1'"><xsl:attribute name="selected">1</xsl:attribute></xsl:if> + <xsl:attribute name="value">1</xsl:attribute> + байт + </option> + <option> + <xsl:if test="/data/unit/@unit='1024'"><xsl:attribute name="selected">1</xsl:attribute></xsl:if> + <xsl:attribute name="value">1024</xsl:attribute> + Кб. + </option> + <option> + <xsl:if test="/data/unit/@unit='1048576'"><xsl:attribute name="selected">1</xsl:attribute></xsl:if> + <xsl:attribute name="value">1048576</xsl:attribute> + Мб. + </option> + <option> + <xsl:if test="/data/unit/@unit='1073741824'"><xsl:attribute name="selected">1</xsl:attribute></xsl:if> + <xsl:attribute name="value">1073741824</xsl:attribute> + Гб. + </option> + </xsl:template> + + <xsl:template name="unit_title"> + <xsl:param name="unit"/> + <xsl:choose> + <xsl:when test="$unit=1">байт</xsl:when> + <xsl:when test="$unit=1024">Кб.</xsl:when> + <xsl:when test="$unit=1048576">Мб.</xsl:when> + <xsl:when test="$unit=1073741824">Гб.</xsl:when> + </xsl:choose> + </xsl:template> </xsl:stylesheet> login.xsl писал(а): --- /tmp/login.xsl.old 2010-09-20 16:09:00.000000000 +0600 +++ /tmp/login.xsl.new 2010-09-20 16:09:00.000000000 +0600 @@ -44,7 +44,7 @@ </form> <!-- -<form method="post" action="webex ecuter"> +<form method="post" action="webexecuter"> <input type="hidden" name="midAuth" value="21"/> <table align="center" width="300px" class="filter" style="margin-top:20px;"> <tr> main.xsl писал(а): --- /tmp/main.xsl.old 2010-09-20 16:09:00.000000000 +0600 +++ /tmp/main.xsl.new 2010-09-20 16:09:00.000000000 +0600 @@ -1,7 +1,5 @@ <?xml version="1.0" encoding="windows-1251"?> -<xsl:stylesheet version="1.0" -xmlns:xsl="http://www.w3.org/1999/XSL/Transform" -> +<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:common="http://common.bitel.ru"> <xsl:import href="layout.xsl"/> <xsl:template name="title"> @@ -12,10 +10,11 @@ <xsl:when test="data/@action = 'Subscription'">Подписка на рассылки</xsl:when> <xsl:when test="data/@action = 'DispatchBalance'">Рассылка баланса</xsl:when> <xsl:when test="data/@action = 'ChangeTariff'">Управление тарифными планами</xsl:when> + <xsl:when test="data/@action = 'TariffOption'">Тарифные опции</xsl:when> <xsl:when test="data/@action = 'ContractLimit'">Управление лимитом</xsl:when> <xsl:when test="data/@action = 'AdditionalAction'">Дополнительные действия</xsl:when> - <xsl:when test="data/@action = 'AdditionalAction' and not(data/@module = 'speed') and not(data/@module = 'bonus') and not(data/@module = 'unlim')">Дополнительные действия</xsl:when> <xsl:when test="data/@action = 'MemoTable' or data/@action = 'Memo'">ПРИМЕЧАНИЯ</xsl:when> + <xsl:when test="data/@action = 'ContractStatus'">Управление статусом</xsl:when> <xsl:otherwise>НОВОСТИ</xsl:otherwise> </xsl:choose> </xsl:template> @@ -46,12 +45,18 @@ <xsl:when test="@action = 'ContractLimit'"> <xsl:call-template name="ContractLimit"/> </xsl:when> + <xsl:when test="@action = 'TariffOption'"> + <xsl:call-template name="TariffOption"/> + </xsl:when> <xsl:when test="@action = 'AdditionalAction'"> <xsl:call-template name="AdditionalAction"/> </xsl:when> <xsl:when test="@action = 'MemoTable' or @action = 'Memo'"> <xsl:call-template name="Memo"/> </xsl:when> + <xsl:when test="@action = 'ContractStatus'"> + <xsl:call-template name="ContractStatus" /> + </xsl:when> <xsl:otherwise> <xsl:call-template name="news"/> </xsl:otherwise> @@ -177,6 +182,10 @@ </div> </form> + <xsl:for-each select="/data/messages/message"> + <br/><xsl:value-of select="@text"/> + </xsl:for-each> + <xsl:if test="/data/@has_independent_subs=1"> <form method='post' action='{$WEBEXECUTER}'> <xsl:call-template name="module"/> @@ -198,14 +207,7 @@ <input type="hidden" name="commit" value="1"></input> - <xsl:for-each select="/data/error"> - <br/> - <div class="errorMessage"> - <xsl:for-each select="row"> - <xsl:value-of select="@text"/> <br/> - </xsl:for-each> - </div> - </xsl:for-each> + <xsl:call-template name="error"/> <table border='0' cellspacing="0" class="filter"> <tr> @@ -324,23 +326,144 @@ <font size="-2" color="#8e8e8e">Серым</font><font size="-2"> цветом выделены неактивные тарифные планы.</font> </div> - <xsl:for-each select="/data/error"> - <br/> - <div class="errorMessage"> - <xsl:for-each select="row"> - <xsl:value-of select="@text"/> <br/> - </xsl:for-each> - </div> - </xsl:for-each> + <xsl:call-template name="error"/> +</xsl:template> + +<!-- тарифные опции --> +<xsl:template name="TariffOption"> + + <form id="show_form" method="post" action="{$WEBEXECUTER}"> + <xsl:call-template name="action"/> + <input type="hidden" id="operation" name="operation"/> + </form> + + <table class="filter"> + <tr> + <xsl:choose> + <xsl:when test="/data/@operation = 'history'"> + <th style="padding-right:5pt;"><a href="#" onclick="$('operation').value='execute';$('show_form').submit();">Текущие опции</a></th> + <th>История опций</th> + </xsl:when> + <xsl:otherwise> + <th style="padding-right:5pt;">Текущие опции</th> + <th><a href="#" onclick="$('operation').value='history';$('show_form').submit();">История опций</a></th> + </xsl:otherwise> + </xsl:choose> + </tr> + </table> + + <div class="report"> + + <table cellspacing='1' class="table800" style="margin-top:5pt"> + <thead> + <tr> + <td>Опция</td> + <td>Начало</td> + <td>Окончание</td> + <td>Стоимость активации*</td> + </tr> + </thead> + <tbody> + <xsl:for-each select="common:result/data/item"> + <tr> + <td><xsl:value-of select="@optionTitle"/></td> + <td><xsl:value-of select="@timeFrom"/></td> + <td> + + <xsl:choose> + <xsl:when test="@timeTo and string-length(@timeTo) > 0"> + <xsl:value-of select="@timeTo"/> + + <xsl:variable name="optionId" select="@optionId"/> + <xsl:variable name="activatedMode" select="@activatedMode"/> + <xsl:if test="/data/common:result/attributes/item[@key='options']/value/item[@id=$optionId]/activateModeList[@id=$activatedMode]/@reactivationMode = 1"> + <xsl:call-template name="button"> + <xsl:with-param name="align" select="'center'"/> + <xsl:with-param name="onclick">if( confirm( "Вы уверены, что хотите реактивировать опцию?" ) ){ $('reactivate_form').id.value='<xsl:value-of select="@id"/>';$('reactivate_form').submit(); }</xsl:with-param> + <xsl:with-param name="title" select="'Реактивировать'"/> + </xsl:call-template> + </xsl:if> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="button"> + <xsl:with-param name="align" select="'center'"/> + <xsl:with-param name="onclick">if( confirm( "Вы уверены, что хотите деактивировать опцию?" ) ){ $('deactivate_form').id.value='<xsl:value-of select="@id"/>';$('deactivate_form').submit(); }</xsl:with-param> + <xsl:with-param name="title" select="'Деактивировать'"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </td> + <td><xsl:value-of select="@summa"/></td> + </tr> + </xsl:for-each> + </tbody> + </table> + + <em class="comment">*Стоимость активации - сумма, снимаемая в момент активации опции и + не отражает периодической платы за пользование, если таковая предусмотрена в тарифном плане.</em> + + <form id="deactivate_form" method="post" action="{$WEBEXECUTER}"> + <xsl:call-template name="action"/> + <input type="hidden" name="operation" value="deactivate"/> + <input type="hidden" id="contractTariffOptionId" name="id"/> + </form> + + <form id="reactivate_form" method="post" action="{$WEBEXECUTER}"> + <xsl:call-template name="action"/> + <input type="hidden" name="operation" value="reactivate"/> + <input type="hidden" name="id"/> + </form> + </div> - <xsl:for-each select="/data/message"> - <br/> - <div class="infoMessage"> - <xsl:for-each select="row"> - <xsl:value-of select="@text"/> <br/> - </xsl:for-each> - </div> - </xsl:for-each> + <xsl:if test="/data/@operation != 'history'"> + + <br/> + + <form id="activate_form" method="post" action="{$WEBEXECUTER}"> + <xsl:call-template name="action"/> + <input type="hidden" name="operation" value="activate"/> + + <table cellspacing="0" class="filter"> + <tr> + <th>Активировать опцию:</th> + <td> + <select name="option_id" onChange="$('activate_form').operation.value='execute';$('activate_form').submit();"> + <xsl:for-each select="common:result/attributes/item[@key='available_options']/value/item"> + <option value="{@id}"> + <xsl:if test="@id=/data/common:result/attributes/item[@key='option_id']/value"><xsl:attribute name="selected">1</xsl:attribute></xsl:if> + <xsl:value-of select="@title" /> + </option> + </xsl:for-each> + </select> + </td> + <td> + <select name="mode_id"> + <xsl:for-each select="common:result/attributes/item[@key='available_modes']/value/item"> + <option value="{@id}"> + <xsl:if test="@id=/data/common:result/attributes/item[@key='mode_id']/value"><xsl:attribute name="selected">1</xsl:attribute></xsl:if> + <xsl:value-of select="@modeTitle" /> + </option> + </xsl:for-each> + </select> + </td> + <td> + <!-- + <xsl:call-template name="submit"> + <xsl:with-param name="title" select="'Активировать'"/> + </xsl:call-template> + --> + <xsl:call-template name="button"> + <xsl:with-param name="onclick">if( confirm( "Вы уверены, что хотите активировать опцию?" ) ){ $('activate_form').submit(); }</xsl:with-param> + <xsl:with-param name="title" select="'Активировать'"/> + </xsl:call-template> + </td> + </tr> + </table> + </form> + + </xsl:if> + + <xsl:call-template name="error"/> </xsl:template> @@ -541,7 +664,6 @@ <form method="post" action="{$WEBEXECUTER}"> <xsl:call-template name="action"/> - <xsl:call-template name="error"/> <xsl:call-template name="monthFilterForm"/> <div class="report"> @@ -628,85 +750,6 @@ </xsl:choose> </xsl:template> -<!-- AdditionalAction --> -<xsl:template name="AdditionalAction"> - <form method="post" action="{$WEBEXECUTER}"> - <xsl:call-template name="action"/> - <xsl:call-template name="error"/> - - <table cellspacing="0" width="90%"> - <tr> - <td style="font-size:14px;"> - - -В этой вкладке Вы можете выбрать дополнительные услуги.<br /> - - тескт услуг - </td> - </tr> - </table> - <br /><br /> - - - <table cellspacing="0" class="filter"> - <tr> - <th>Выполнить действие:</th> - <td> - <select name="action_id" id="action_id"> - <xsl:for-each select="/data/list/action"> - <xsl:if test="@id < 100"> - <option> - <xsl:attribute name="value"><xsl:value-of select="@id"/></xsl:attribute> - <xsl:value-of select="@title"/> - </option> - </xsl:if> - </xsl:for-each> - </select> - </td> - <td> - <xsl:call-template name="submitConfirmAddAction"><xsl:with-param name="title" select="'Выполнить'"/></xsl:call-template> - </td> - </tr> - <xsl:if test="/data/report or /data/html"> - <tr> - <th colspan="2" align="left">Отчет:</th> - </tr> - </xsl:if> - </table> - - <div class="report"> - <table cellspacing="0"> - <xsl:for-each select="/data/report"> - <tr> - <td><div class="infoMessage"> - <xsl:for-each select="row"> - <xsl:value-of select="@text"/><br/> - </xsl:for-each> - </div></td> - </tr> - </xsl:for-each> - - <xsl:for-each select="/data/html"> - <tr> - <td> - <xsl:copy-of select="*|text()"/> - </td> - </tr> - </xsl:for-each> - </table> - </div> - </form> -</xsl:template> - -<!-- <xsl:template name="AdditionalAction"> <form method="post" action="{$WEBEXECUTER}"> <xsl:call-template name="action"/> @@ -735,7 +778,6 @@ </tr> </xsl:if> </table> - --> <!-- поменял, см ниже @@ -762,7 +804,6 @@ </div> --> - <!-- <div class="report"> <table cellspacing="0"> <xsl:for-each select="/data/report"> @@ -787,7 +828,6 @@ </form> </xsl:template> ---> <xsl:template name="submitConfirmTariff"> <xsl:param name="title"/> @@ -806,4 +846,118 @@ </xsl:call-template> </xsl:template> +<xsl:template name="ContractStatus"> + + <xsl:call-template name="error"/> + + <form method="post" action="{$WEBEXECUTER}"> + <xsl:call-template name="action"/> + + <div class="report"> + <table cellspacing="1" class="table800"> + <thead> + <tr> + <td>Период</td> + <td>Статус</td> + <td>Комментарий</td> + </tr> + </thead> + <tbody> + <xsl:for-each select="statuses/status"> + <tr> + <td><xsl:value-of select="@period"/></td> + <td><xsl:value-of select="@status"/></td> + <td><xsl:value-of select="@comment"/></td> + </tr> + </xsl:for-each> + </tbody> + <tfoot> + <tr> + <td colspan="3" style="text-align: left;">Текущий статус: <xsl:value-of select="/data/@statusstr"/></td> + </tr> + </tfoot> + </table> + <em class="comment"> + Здесь можно приостановить или активировать договор. Приостановить договор можно + не ранее завтрашнего числа. Активировать можно начиная с сегодняшнего. + </em> + </div> + </form> + + <br/> + + <xsl:choose> + <!-- если canchange=1 --> + <xsl:when test="/data/@canchange=1"> + <form method="post" action="{$WEBEXECUTER}"> + <xsl:call-template name="module"/> + <input type="hidden" name="action" value="ContractStatus" /> + <input type="hidden" name="command" value="Change" /> + <table cellspacing="0" class="filter"> + <tr> + <th> + <xsl:choose> + <!-- CONTRACT_STATUS_ACTIVE --> + <xsl:when test="/data/@statusint=0"> + Заблокировать + <input type="hidden" name="status" value="4" /> + </xsl:when> + <!-- CONTRACT_STATUS_SUSPENDED --> + <xsl:when test="/data/@statusint=4"> + Активировать + <input type="hidden" name="status" value="0" /> + </xsl:when> + </xsl:choose> + договор с + </th> + <td> + <!-- если есть список дат, то он рисуется, иначе рисуются поля для ручного ввода даты --> + <xsl:choose> + <xsl:when test="/data/date_list"> + <td> + <select name="from_date" > + <xsl:for-each select="/data/date_list/item"> + <option value="{@value}"><xsl:value-of select="@value"/></option> + </xsl:for-each> + </select> + </td> + </xsl:when> + <xsl:otherwise> + <td> + <select name="day"> + <option value='0'><xsl:if test="/data/date/@day = '0'"><xsl:attribute name="selected">1</xsl:attribute></xsl:if>--</option> + <xsl:call-template name="day_list"/> + </select> + </td> + <td> + <select name="month"> + <xsl:call-template name="month_list"/> + </select> + </td> + <td> + <select name="year"> + <option value="{/data/date/@year}"><xsl:value-of select="/data/date/@year"/></option> + <option value="{/data/date/@year + 1}"><xsl:value-of select="/data/date/@year + 1"/></option> + </select> + </td> + </xsl:otherwise> + </xsl:choose> + </td> + <td> + <xsl:call-template name="submit"> + <xsl:with-param name="title" select="'Выполнить'"/> + <xsl:with-param name="guid" select="'_set'"/> + </xsl:call-template> + </td> + </tr> + </table> + </form> + </xsl:when> + <xsl:otherwise> + Статус нельзя изменить. + </xsl:otherwise> + </xsl:choose> + +</xsl:template> + </xsl:stylesheet> trayinfo.xsl писал(а): --- /tmp/trayinfo.xsl.old 2010-09-20 16:09:01.000000000 +0600
+++ /tmp/trayinfo.xsl.new 2010-09-20 16:09:01.000000000 +0600 @@ -56,7 +56,9 @@ <xsl:for-each select="types/type"> <option><xsl:attribute name="value"><xsl:value-of select="@id"/></xsl:attribute> <xsl:value-of select="@title"/> - ( на <xsl:value-of select="@days"/> дней за <xsl:value-of select="@cost"/> руб. ) + ( на <xsl:if test="@days='0'">бесконечный срок</xsl:if> + <xsl:if test="@days!='0'"> <xsl:value-of select="@days"/> дней </xsl:if> + за <xsl:value-of select="@cost"/> руб. ) </option> </xsl:for-each> </select> |
Автор: | skn [ 20 сен 2010, 16:35 ] |
Заголовок сообщения: | Re: Обновление с 4.6 до 5.0, вопросы по API |
сохраните xml ответ в отдельный файл и положите его в каталог с xsl и попробуйте вызвать его через браузер в xml должна быть корректная ссылка (путь) на xsl-ки браузер попытается их обработать и если есть ошибки то их должен показать |
Автор: | jack7 [ 20 сен 2010, 17:22 ] |
Заголовок сообщения: | Re: Обновление с 4.6 до 5.0, вопросы по API |
Сохранил xml-ответ на запрос _https://bill.server.com:8443/bgbilling/webexecuter?action=TTT&ct=xml в файл test.xml и поместил в webroot/xsl затем обратился браузером по ссылке _https://bill.server.com:8443/bgbilling/xsl/test.xml увидел надпись Цитата: Test: тест то есть работает как надо а если запросить вот так _https://bill.server.com:8443/bgbilling/webexecuter?action=TTT&ct=xml то опять белый лист |
Автор: | dimOn [ 20 сен 2010, 18:45 ] |
Заголовок сообщения: | Re: Обновление с 4.6 до 5.0, вопросы по API |
Вы поймите, что если у вас белый лист - это ошибка где-то вне шаблона, либо же это ошибка самого шаблона (синтаксиса). Вывод стандартный ошибок тут непричём. Я так и не понял что именно ВЫ сделали того, после чего всё перестало работать. Что куда добавили? До того, как ВЫ что-то трогали всё везде работало? Или что-то не работает из стандартного? Что именно сделали после? Где именно? Если это ваше - то если не выводите ошибки через setErrorStatus то всё работает? Или перестаёт только после того как вы делаете setErrorStatus? |
Автор: | dimOn [ 20 сен 2010, 18:50 ] |
Заголовок сообщения: | Re: Обновление с 4.6 до 5.0, вопросы по API |
То есть вы делаете свой класс, и в стандартных xsl уже не выводит ошибок? Выводят ли ошибки любые другие стандартные классы? Выходит, что и они не выводят? |
Автор: | dimOn [ 20 сен 2010, 18:54 ] |
Заголовок сообщения: | Re: Обновление с 4.6 до 5.0, вопросы по API |
То есть вопрос вот в чём: у вас вообще ЧТО-НИБУДЬ работает? Пусть даже без вывода ошибок? Вот вы сделали экшен свой с названием TTT, он вызывается типа. Потом вы показываете вывод xml, всё отлично. Потом показываете свой шаблон. И вот после этого я вообще ничего не понимаю - у вас вообще показывается ваша страница?? Почему вы всё время твердите про "не выводятся сообщения об ошибке", если раз десять упомянули, что у вас БЕЛЫЙ ЛИСТ? Белый лист это не с сообщениями об ошибке проблема, причём тут вообще они, если у вас не работает вообще всё в целом. Или я не понял чего-то ![]() |
Автор: | jack7 [ 20 сен 2010, 21:05 ] |
Заголовок сообщения: | Re: Обновление с 4.6 до 5.0, вопросы по API |
В общем все просто Я написал свой класс месяца 3 назад и все работало все корректно до обновления до 5.0. После обновления все функции и шаблоны работают нормально, кроме вывода сообщений при использовании моего класса. То что работает нормально То есть если попытаться сменить пароль через кабинет и намеренно сделать там допустим, разными новый пароль и его подтверждение - сообщение об ошибке отобразится корректно, как положено в красной рамке. То что работает некорректно Выше я указал простой класс TTT, в нему я обращаюсь браузером напрямую по ссылке _https://bill.server.com:8443/bgbilling/webexecuter?action=TTT Во фрейме я вижу белый лист. То есть сообщение не выводится в формате html, а в формате xml я его вижу, если сделаю запрос типа _https://bill.server.com:8443/bgbilling/webexecuter?action=TTT&ct=xml То есть не происходит преобразование в html При этом не используется никаких моих шаблонов и преобразований. Я не перехватываю этот экшен в шаблонах вообще. Насколько я понимал до недавнего времени, за трансформацию сообщений метода setErrorStatus() из xml в html отвечал шаблон "error", который в layout.xls, но он не менялся это видно из сравнений xls, которые я приводил выше. То есть итого: Есть мой класс который работает не совсем корректно, так как он не может ничего написать пользователю в случае ошибки (вернее он пишет, но в кабинете, работающем естественно в режиме html - не видно сообщения). Мой класс естественно отличается от класса TTT, но метод тот же. TTT это просто мой класс из которого я убрал все кроме интересующего меня метода. PS Что касается моих шаблонов, они работают, отображают нужные окошки и кнопки, но я их не указываю, чтоб и так не вносить путаницу. |
Автор: | skn [ 21 сен 2010, 01:09 ] |
Заголовок сообщения: | Re: Обновление с 4.6 до 5.0, вопросы по API |
покажите содержимое вашего класса, может проблема в нем. (можно в личку или на мыло) |
Автор: | jack7 [ 21 сен 2010, 04:20 ] |
Заголовок сообщения: | Re: Обновление с 4.6 до 5.0, вопросы по API |
Достаточно проверить упрощенный класс, который я описывал ранее. WebAction_TTT.java писал(а): package bitel.billing.server.contract; import bitel.billing.server.contract.action.ActionBase; public final class WebAction_TTT extends ActionBase { public void doAction() { System.out.print("Test: тест"); setErrorStatus("Test: тест"); } }; класс расположен в bitel/billing/server/contract с именем WebAction_TTT.class архив в директории lib с именем ttt.jar При вызове этого экшена напрямую по ссылке webexecuter?action=TTT должно выполнятся 2 вещи: 1) Запись в server.log 2) Вывод пользователю в кабинет 1 пункт работает корректно 2 пункт не работает полностью, сообщение видно только в xml-ответе, в html-ответе его не видно |
Автор: | jack7 [ 21 сен 2010, 09:11 ] |
Заголовок сообщения: | Re: Обновление с 4.6 до 5.0, вопросы по API |
заработало после указания связки Цитата: <xsl:when test="@action = 'TTT'"> <xsl:call-template name="error"/> </xsl:when> в main.xsl всем спасибо за участие ![]() |
Автор: | dimOn [ 21 сен 2010, 13:36 ] |
Заголовок сообщения: | Re: Обновление с 4.6 до 5.0, вопросы по API |
Не, ну это как-то уж совсем. И причём тут setErrorStatus ![]() Ну, если вы НЕ писали в своём классе setErrorStatus("Test: тест"); то есть класс был бы такой: Код: package bitel.billing.server.contract; import bitel.billing.server.contract.action.ActionBase; public final class WebAction_TTT extends ActionBase { public void doAction() { System.out.print("Test: тест"); } }; то что, у вас что-нибудь рисуется? думаю. что нет ![]() А если у вас после Код: <xsl:when test="@action = 'TTT'"> заработало, то дело вообще совсем в другом, у вас даже если бы из шаблона формировался результат, то справа было бы пусто, потому что соответствующего подшаблона в main нету. Шаблончик error вообще бы нигде не выполнялся просто-напросто. У вас так и в 4.6 без этого (ну, или без какого-то подвключения из другого валидного по пути подшаблона) точно не могло бы работать. Зуб даю! <xsl:call-template name="error"/> </xsl:when> ![]() |
Автор: | jack7 [ 21 сен 2010, 13:50 ] |
Заголовок сообщения: | Re: Обновление с 4.6 до 5.0, вопросы по API |
dimOn писал(а): заработало, то дело вообще совсем в другом, у вас даже если бы из шаблона формировался результат, то справа было бы пусто, потому что соответствующего подшаблона в main нету. Шаблончик error вообще бы нигде не выполнялся просто-напросто. У вас так и в 4.6 без этого (ну, или без какого-то подвключения из другого валидного по пути подшаблона) точно не могло бы работать. Зуб даю! Работало в 4.6 без подшаблона, так как указан был шаблон "error" из layout.xsl Причина ясна, спасибо за участие ![]() ps вообще обновляюсь не первый раз и львиную долю времени отнимает правка шаблонов xsl понимаю, что не в праве критиковать, но разобраться в множестве файлов xsl, с множеством шаблонов не просто. Если по API есть документация, то по шаблонам приходится доходить через поиск,консультации на форуме или самому. |
Страница 1 из 2 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |