Отображение пакетов трафика на странице Тарифные опции личного кабинета

Материал из BiTel WiKi

Версия от 13:32, 5 февраля 2014; Amir (Обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Назад

Отчет по диапазонам модуля

С версии 6.0 в личном кабинете доступен отчет по Диапазонам трафиков. Чтобы диапазон отображался в отчете, нужно в конфигурации модуля добавить "метку"

tariffication.tariff.label.3.title=Пакет трафика

далее в тарифе нужно редактировать ветку "диапазон", по которому должен отображаться отчет и указать эту числовую метку (в этом примере 3).

После этого в личном кабинете должен появиться отчет по данному диапазону. Отчет не появится, пока в диапазон не попадет хотя бы один байт.

Тарифные опции

Также можно добавить отображение кол-ва на странице Тарифных опций, если в диапазоне указана тарифная опция, от которой он зависит. Не гарантируется что это будет работать всегда, для этого нужно изменить шаблон webroot/xsl/main.xsl, изменения сделаны так, чтобы были минимальными.

При обновлении main.xsl перезаписывается из сборки. Для предотвращения перетирания файла при обновлении вы можете перед его модификацией создать копию с именем <file_name>.orig (например, style.css.orig). При установке пакета инсталлятор будет проверять перед записью каждого файла наличие файла с таким же именем в текущей установке. Если файл существует, но отличается от того, что в пакете, предпринимается попытка найти файл <file_name>.orig.

После

<!-- тарифные опции -->
<xsl:template name="TariffOption">
 
<xsl:call-template name="nav"/>

добавить, изменив 179 на id модуля Inet

<script>
	mid = 179;
	optionRanges = null;
 
	showRangeValue = function( report, tariffOptionId, contractTariffOptionId )
	{
	   if( !report || !report.detailValueList ) return;
 
	   for( var j in report.detailValueList ) {
	   var detailValue = report.detailValueList[j];
	   if( detailValue.contractTariffOption &amp;&amp; detailValue.contractTariffOption.id==contractTariffOptionId ) {
	    var r = $("option" + contractTariffOptionId + "Range");
	    r.innerHTML = (Math.round((detailValue.amount*1000)/1024/1024)/1000) + " из " + (Math.round((detailValue.maxAmount*1000)/1024/1024)/1000) + "MB" ;
	    r.href = "webexecuter?module=inet&amp;mid=" + mid + "&amp;action=TrafficRangeReport&amp;tariffOptionId=" + tariffOptionId;
	    r.setAttribute('style', 'display: inline');
	    break;
	   } 
	  }
	}
 
	getRangeValue = function( tariffOptionId, contractTariffOptionId ) {
	    var report = optionRanges;
	    if( report!=null ) {
	     showRangeValue( report, tariffOptionId, contractTariffOptionId );
	     return;
	    }
 
		jQuery.get( "webexecuter", { action: 'TrafficRangeReport', module: "inet", mid: mid, ct: 'json' }, function( data )
		{
			for( var i in data.result ) {
			 var report = data.result[i];
			  showRangeValue( report, tariffOptionId, contractTariffOptionId );
			  optionRanges = report;
			}
		} );
	}
	</script>

далее после

<td>Стоимость активации*</td>
добавить
<xsl:if test="/data/@operation = 'execute'"><td>Пакет</td></xsl:if>

и ниже, перед

</tr> 
</xsl:for-each> 
</tbody> 
</table>
 
<em class="comment">*Стоимость активации - сумма, снимаемая в момент активации опции и
не отражает периодической платы за пользование,<br/> если таковая предусмотрена в тарифном плане.</em>

добавить, изменив НОНЕ на none (строчка не проходит спам-фильтр wiki)

<td><xsl:value-of select="@summa"/></td>
<xsl:if test="/data/@operation = 'execute'">
<td style="width: 100px;">
<a id="option{@id}Range" href="#" style="display: НОНЕ"></a>
<script>
getRangeValue( <xsl:value-of select="@optionId"/>, <xsl:value-of select="@id"/> );
</script>
</td>
</xsl:if>
Личные инструменты