чтобы сессии логина выглядели так:

а наработка по логинам выглядела так:

надо:
- распаковать
dialup_web_add.zip в корень веба
- в dialup.xsl изменить шаблон ShowSessions приведя его к виду:
Код:
<!-- сессии логина -->
<xsl:template name="ShowSessions">
<form method="post" action="{$WEBEXECUTER}#idDivReport" name="sessions">
<xsl:variable name="module" select="/data/@module" />
<xsl:call-template name="action" />
<xsl:call-template name="error" />
<xsl:call-template name="sessionFilter" />
</form>
<form method="post" action="{$WEBEXECUTER}">
<xsl:call-template name="action" />
<input type="hidden" name="createDetail" id="createDetailId" value="0" />
<div style="display:none">
<xsl:call-template name="sessionFilter" />
</div>
<xsl:call-template name="AddReportReferences" />
<xsl:call-template name="report">
<xsl:with-param name="node" select="sessions" />
<xsl:with-param name="data">
<script language="JavaScript" type="text/javascript" src="./sorttable.js"></script>
<table cellspacing="1" id="idTableDialUpSessions" class="sortable">
<col class="col2" />
<col class="col3" />
<col class="col4" />
<col class="col5" />
<xsl:call-template name="split_col">
<xsl:with-param name="list"><xsl:value-of select="sessions/@traffics_title" /></xsl:with-param>
<xsl:with-param name="delimiter">/</xsl:with-param>
</xsl:call-template>
<col class="col7" />
<thead>
<tr>
<td>Время входа</td>
<td>Время выхода</td>
<td>Длительность</td>
<td>Сумма, руб.</td>
<xsl:call-template name="split_td">
<xsl:with-param name="list"><xsl:value-of select="sessions/@traffics_title" /></xsl:with-param>
<xsl:with-param name="delimiter">/</xsl:with-param>
<xsl:with-param name="text">, MB</xsl:with-param>
</xsl:call-template>
<td style="background-color: #ffffff;" class="sorttable_nosort"></td>
</tr>
</thead>
<tbody>
<xsl:for-each select="sessions/row">
<tr style="text-align: right;">
<td style="text-align: left;"><xsl:value-of select="@f0" /></td>
<td style="text-align: left;"><xsl:value-of select="@f1" /></td>
<td><xsl:value-of select="normalize-space(substring-before(@f2, '['))" /></td>
<td><xsl:value-of select="format-number(translate(@f3, ' ', ''), '#0.00')" /></td>
<xsl:for-each select="traffic">
<td><xsl:value-of select="format-number((. div 1048576), '#0.000')" /></td>
</xsl:for-each>
<td style="text-align: center;"><input type="radio" name="session_id" value="{@id}" style="margin:0px; padding:0px;" /></td>
</tr>
</xsl:for-each>
</tbody>
<tfoot>
<tr style="text-align: right;">
<td colspan="2" style="text-align: center;">Итого:</td>
<td><xsl:value-of select="normalize-space(substring-before(sessions/@time_amount, '['))" /></td>
<td><xsl:value-of select="format-number(sessions/@money_amount, '#0.00')" /></td>
<xsl:for-each select="sessions/traffic">
<td><xsl:value-of select="format-number((. div 1048576), '#0.000')" /></td>
</xsl:for-each>
<td></td>
</tr>
</tfoot>
</table>
</xsl:with-param>
</xsl:call-template>
<xsl:choose>
<xsl:when test="not(sessions/row)"></xsl:when>
<xsl:when test="createDetail/@created='1'">
<table cellspacing="0" class="filter">
<tr>
<th>Отправка детализации поставлена в очередь.</th>
</tr>
</table>
</xsl:when>
<xsl:otherwise>
<table cellspacing="0" class="filter" id="idTableDialupCreateDetail">
<tr>
<th>Выслать детализацию для выбранной сессии на e-mail: <input name="mail" type="text" size="30"></input></th>
<th>
<xsl:call-template name="button">
<xsl:with-param name="title">Выслать</xsl:with-param>
<xsl:with-param name="onclick">document.getElementById("createDetailId").value=1; setPage(<xsl:value-of select="sessions/@pageIndex" />, this);</xsl:with-param>
</xsl:call-template>
</th>
</tr>
</table>
</xsl:otherwise>
</xsl:choose>
</form>
</xsl:template>
для сессий и изменить шаблон ShowLoginsBalance приведя его к виду:
Код:
<!-- наработка по логинам -->
<xsl:template name="ShowLoginsBalance">
<form method="post" action="{$WEBEXECUTER}#idDivReport" name="sessions">
<xsl:variable name="module" select="/data/@module" />
<xsl:call-template name="action" />
<input type="hidden" name="pageIndex" value="1" />
<xsl:call-template name="periodFilter" />
<script language="JavaScript" type="text/javascript" src="./sorttable.js"></script>
<div class="report" id="idDivReportTable">
<table cellspacing="1" id="idTableDialUpLoginsBalance" class="sortable">
<thead>
<tr>
<td>Логин</td>
<td>Количество сессий</td>
<td>Время</td>
<td>Стоимость</td>
<xsl:if test="$module='dialup'">
<xsl:call-template name="split_td">
<xsl:with-param name="list"><xsl:value-of select="amounts/@traffics_title" /></xsl:with-param>
<xsl:with-param name="delimiter">/</xsl:with-param>
<xsl:with-param name="text">, MB</xsl:with-param>
</xsl:call-template>
</xsl:if>
</tr>
</thead>
<tbody>
<xsl:for-each select="amounts/row">
<tr style="text-align: right;">
<td style="text-align: left;"><xsl:value-of select="normalize-space(substring-before(substring-after(@f0, '['), ']'))" /></td>
<td><xsl:value-of select="@f1" /></td>
<td><xsl:value-of select="normalize-space(substring-before(@f2, '['))" /></td>
<td><xsl:value-of select="@f3" /></td>
<xsl:if test="$module='dialup'">
<xsl:for-each select="traffic">
<td><xsl:value-of select="format-number((. div 1048576), '#0.000')" /></td>
</xsl:for-each>
</xsl:if>
</tr>
</xsl:for-each>
</tbody>
<tfoot>
<tr style="text-align: right;">
<td>Итого:</td>
<td><xsl:value-of select="amounts/@count_amount" /></td>
<td><xsl:value-of select="normalize-space(substring-before(amounts/@time_amount, '['))" /></td>
<td><xsl:value-of select="amounts/@money_amount" /></td>
<xsl:if test="$module='dialup'">
<xsl:for-each select="amounts/traffic">
<td><xsl:value-of select="format-number((. div 1048576), '#0.000')" /></td>
</xsl:for-each>
</xsl:if>
</tr>
</tfoot>
</table>
</div>
</form>
</xsl:template>
для нарабоки ...
основной момент всего этого безобразия - это
Код:
<xsl:call-template name="split_col">
<xsl:with-param name="list"><xsl:value-of select="sessions/@traffics_title" /></xsl:with-param>
<xsl:with-param name="delimiter">/</xsl:with-param>
</xsl:call-template>
рисующее тег "<col />", тобишь колонку для трафиков, и
Код:
<xsl:call-template name="split_td">
<xsl:with-param name="list"><xsl:value-of select="sessions/@traffics_title" /></xsl:with-param>
<xsl:with-param name="delimiter">/</xsl:with-param>
<xsl:with-param name="text">, MB</xsl:with-param>
</xsl:call-template>
рисующее тег "<td>данные</td>", тобишь ячейку таблицы с собсно данными о трафике
конструкция:
Код:
<xsl:value-of select="normalize-space(substring-before(@f2, '['))" />
используется для того чтобы не рисовать время в секундах при выводе времени, т.е. будут видны только часы:минуты:секунды, а конструкция
Код:
<xsl:value-of select="normalize-space(substring-before(substring-after(@f0, '['), ']'))" />
используется чтобы не выводить, на мой взгляд не нужный пользователю, ID логина, т.е. пользовтель видит только свой алиас
строчка
Код:
<script language="JavaScript" type="text/javascript" src="./sorttable.js"></script>
служит для того чтобы выводимые данные можно было сортировать нажимая на заголовок, т.е. пользователь жмет на любой заголовок и вся таблица сортируется по выбранному заголовку
BTW, это все работает в 4.6, но под 5.х переделать не составит особого труда ... жаль только что этого нет в стандартной поставке
