При решении этого вопроса использовал статью http://gandjustas.blogspot.com/2012/03/sharepoint-1.html
все хорошо и доступно описано. я сделал свою веб-часть в VS положил на страницу.
Хотело что бы отображались фото пользователей и дни рождения, но этого не было. Вот тогда я решил доработать веб-часть.
для этого:
1. изменяем веб-часть.
2. В свойствах веб-части разворачиваем блок "Отображать свойства" и снимаем галочку "Использовать визуализацию расположения"
4. Вставляем свойства в блокнот (или другой текстовый редактор).
Копируем одно из свойств к примеру <Column Name="BaseOfficeLocation" HitHighLight="true"/>, вставляем ниже и меняем на <Column Name="Birthday" HitHighLight="true"/>.
Копируем весь полученный текст и вставляем обратно в свойства веб-части.
5. В свойствах веб-части нажимаем "Редактор XSL..."
6. Копируем текст в открывшемся окне и вставляем в блокнот (можно конечно и там редактировать)
7. В тексте находим строчку <xsl:variable name="haswph" select="string-length(workphone) > 0"/>
копируем ее и вставляем ниже.
меняем скопированную строку на <xsl:variable name="hasbirthday" select="string-length(birthday) > 0"/>
8. Далее находим строчку <xsl:if test="$haswph"> и копируем весь тег и вставляем ниже. меняем скопированный тег на
<xsl:if test="$hasbirthday">
<li id="BirthdayFild"><xsl:value-of select="ddwrt:FormatDateTime(string(birthday) ,1049 ,'dd MMMM ')" />
</li>
</xsl:if>
9. Копируем полученный текст и вставляем в свойства веб-части.
Сохраняем веб-часть. и у нас получается вот такое:
10. При желании можно добавить слово "День рождения", для этого добавляем <strong>День рождения: </strong> в код, который мы добавляли в пункте 8.
вот должно получится:
<xsl:if test="$hasbirthday">
<li id="BirthdayFild"><strong>День рождения: </strong>
<xsl:value-of select="ddwrt:FormatDateTime(string(birthday) ,1049 ,'dd MMMM ')" />
</li>
</xsl:if>
11. При таком выведении даты "День рождения" мы сталкиваемся с проблемой описаной в статье Bug With SharePoint 2010 XSLT DateFormat Function
12. Решение:
меняем строку
<xsl:value-of select="ddwrt:FormatDateTime(string(birthday) ,1049 ,'dd MMMM ')" />
на
<xsl:call-template name="FormatBirthdayDate">
<xsl:with-param name="dateValue" select="birthday"/><xsl:with-param name="monthFormat">MMMM</xsl:with-param>
</xsl:call-template>
вот что получается:
<xsl:if test="$hasbirthday">
<li id="BirthdayFild"><strong>День рождения: </strong>
<xsl:call-template name="FormatBirthdayDate">
<xsl:with-param name="dateValue" select="birthday"/>
<xsl:with-param name="monthFormat">MMMM</xsl:with-param>
</xsl:call-template>
</li>
</xsl:if>
еще нужно добавить темплейт:
<xsl:template name="FormatBirthdayDate" >
<!-- Template Parameters --><xsl:param name="dateValue" />
<xsl:param name="monthFormat" />
<!-- Split Date -->
<xsl:variable name="day" select="substring-before($dateValue, '.')" />
<xsl:variable name="month" select="substring(substring-after($dateValue, '.'), 1, 2)" />
<xsl:variable name="year" select="substring(substring-after(substring-after($dateValue, '.'), '.'), 1, 4)" />
<!-- Create US Date Format -->
<xsl:variable name="USDate">
<xsl:value-of select="$month" />/<xsl:value-of select="$day" />/<xsl:value-of select="$year" />
</xsl:variable>
<!-- Month Notation -->
<xsl:variable name="monthString">
<xsl:choose>
<xsl:when test="$monthFormat='MM'">
<xsl:value-of select="$month" />
</xsl:when>
<xsl:when test="$monthFormat='MMM'">
<xsl:value-of select="ddwrt:FormatDateTime($USDate, 1049, 'MMM')" />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="ddwrt:FormatDateTime($USDate, 1049, 'MMMM')" />
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!-- Create Date -->
<xsl:choose>
<xsl:when test="string-length($day) = 1">0</xsl:when>
</xsl:choose>
<xsl:value-of select="$monthString" /><xsl:text> </xsl:text> <xsl:value-of select="$day" />
</xsl:template>
для этого находим строку: <xsl:template name="ActionBarTemplate"> и перед ней вставляем код написанный выше.
Очень надеюсь что данная статья будет Вам полезна...
Релевантные ссылки:
Дни рождения пользователей - SharePoint 2013 (Part 1)
Комментариев нет:
Отправить комментарий