136 lines
4.2 KiB
XML
136 lines
4.2 KiB
XML
|
<?xml version="1.0"?>
|
||
|
|
||
|
<!--
|
||
|
|
||
|
This XSLT file is based on the default XSL stylesheet generated by MSN
|
||
|
Messenger, and unlike the rest of the application, is probably(?) not
|
||
|
covered under the AGPL.
|
||
|
|
||
|
The file was originally retrieved from this project:
|
||
|
|
||
|
https://github.com/jerecui/MSNChatHistoryCombiner
|
||
|
|
||
|
-->
|
||
|
|
||
|
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
||
|
<!-- localized strings -->
|
||
|
<xsl:variable name='ColumnHeader_Date'>Date</xsl:variable>
|
||
|
<xsl:variable name='ColumnHeader_Time'>Time</xsl:variable>
|
||
|
<xsl:variable name='ColumnHeader_From'>From</xsl:variable>
|
||
|
<xsl:variable name='ColumnHeader_Message'>Message</xsl:variable>
|
||
|
|
||
|
<!-- variables -->
|
||
|
<xsl:variable name='UseZebraStripe'>1</xsl:variable>
|
||
|
<xsl:variable name='ZebraStripeStyle'>background-color:#e0edff</xsl:variable>
|
||
|
<xsl:variable name='MostRecentSessionFirst'>0</xsl:variable>
|
||
|
|
||
|
<xsl:template match="Log">
|
||
|
<table id='BodyTable' class="table">
|
||
|
<thead>
|
||
|
<tr>
|
||
|
<th class="d-lg-none message-mobile-date-time">
|
||
|
<!-- for mobile date/time -->
|
||
|
</th>
|
||
|
<th class="d-none d-lg-table-cell">
|
||
|
<xsl:value-of select="$ColumnHeader_Date"/>
|
||
|
</th>
|
||
|
<th class="d-none d-lg-table-cell">
|
||
|
<xsl:value-of select="$ColumnHeader_Time"/>
|
||
|
</th>
|
||
|
<th class="message-from-user">
|
||
|
<xsl:value-of select="$ColumnHeader_From"/>
|
||
|
</th>
|
||
|
<th>
|
||
|
<xsl:value-of select="$ColumnHeader_Message"/>
|
||
|
</th>
|
||
|
</tr>
|
||
|
</thead>
|
||
|
|
||
|
<tbody class="table-group-divider">
|
||
|
<xsl:choose>
|
||
|
<!-- newest session first -->
|
||
|
<xsl:when test="$MostRecentSessionFirst = 1">
|
||
|
<xsl:apply-templates>
|
||
|
<xsl:sort select='@SessionID' order='descending' data-type='number'/>
|
||
|
<xsl:sort select='@DateTime' order='ascending'/>
|
||
|
</xsl:apply-templates>
|
||
|
</xsl:when>
|
||
|
|
||
|
<!-- oldest session first -->
|
||
|
<xsl:otherwise>
|
||
|
<xsl:apply-templates>
|
||
|
<xsl:sort select='@SessionID' order='ascending' data-type='number'/>
|
||
|
<xsl:sort select='@DateTime' order='ascending'/>
|
||
|
</xsl:apply-templates>
|
||
|
</xsl:otherwise>
|
||
|
</xsl:choose>
|
||
|
</tbody>
|
||
|
</table>
|
||
|
</xsl:template>
|
||
|
|
||
|
|
||
|
<xsl:template match="Message">
|
||
|
<tr>
|
||
|
<xsl:call-template name="CommonMessageProcessing" />
|
||
|
|
||
|
<td class="message-from-user"><xsl:apply-templates select="From/User"/> </td>
|
||
|
<td class="message-content">
|
||
|
<div class="overflow-y-auto overflow-x-hidden">
|
||
|
<xsl:value-of select="Text"/>
|
||
|
</div>
|
||
|
</td>
|
||
|
</tr>
|
||
|
</xsl:template>
|
||
|
|
||
|
|
||
|
<xsl:template match="Invitation|InvitationResponse|Join|Leave">
|
||
|
<tr>
|
||
|
<xsl:call-template name="CommonMessageProcessing" />
|
||
|
|
||
|
<td>
|
||
|
<span>
|
||
|
<xsl:value-of select="Text"/>
|
||
|
</span>
|
||
|
</td>
|
||
|
</tr>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="From/User">
|
||
|
<span
|
||
|
data-bs-container="body" data-bs-toggle="popover"
|
||
|
data-bs-placement="bottom" data-bs-title="Username">
|
||
|
<xsl:attribute name="data-bs-content">
|
||
|
<xsl:value-of select="@FriendlyName"/>
|
||
|
</xsl:attribute>
|
||
|
<xsl:value-of select="@FriendlyName"/>
|
||
|
</span>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template name="CommonMessageProcessing">
|
||
|
<!-- zebra-stripe the sessions -->
|
||
|
<xsl:if test="$UseZebraStripe = 1">
|
||
|
<xsl:if test="(@SessionID mod 2) = 1">
|
||
|
<xsl:attribute name="style">
|
||
|
<xsl:value-of select="$ZebraStripeStyle"/>
|
||
|
</xsl:attribute>
|
||
|
</xsl:if>
|
||
|
</xsl:if>
|
||
|
|
||
|
<!-- mobile shows a popover span for date/time -->
|
||
|
<td class="d-lg-none message-mobile-date-time">
|
||
|
<span
|
||
|
data-bs-container="body" data-bs-toggle="popover"
|
||
|
data-bs-placement="right" data-bs-title="Date/Time">
|
||
|
<xsl:attribute name="data-bs-content">
|
||
|
<xsl:value-of select="@Date"/> <xsl:value-of select="@Time"/>
|
||
|
</xsl:attribute>
|
||
|
#
|
||
|
</span>
|
||
|
</td>
|
||
|
<td class="d-none d-lg-table-cell message-date"> <xsl:value-of select="@Date"/> </td>
|
||
|
<td class="d-none d-lg-table-cell message-time"> <xsl:value-of select="@Time"/> </td>
|
||
|
</xsl:template>
|
||
|
|
||
|
|
||
|
</xsl:stylesheet>
|