recipe-index.xsl 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. <?xml version="1.0"?>
  2. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  3. xmlns:eat="http://msqr.us/xsd/ieat"
  4. xmlns:xweb="http://msqr.us/xsd/jaxb-web"
  5. exclude-result-prefixes="eat xweb">
  6. <!-- imports -->
  7. <xsl:import href="tmpl/default-layout.xsl"/>
  8. <!-- layout variables -->
  9. <xsl:variable name="layout.global.nav.page" select="'index'"/>
  10. <xsl:template match="xweb:x-data" mode="page-title">
  11. <xsl:value-of select="key('i18n','recipe-index.title')"/>
  12. </xsl:template>
  13. <xsl:template match="xweb:x-data" mode="page-head-content">
  14. <link rel="stylesheet" type="text/css" href="{$web-context}/css/recipe-forms.css" media="screen"/>
  15. <script type="text/javascript" xml:space="preserve">
  16. <xsl:comment>
  17. var W3CDOM = (document.getElementById &amp;&amp; true);
  18. function handlePaginationChange(event) {
  19. if ( event.target.form) {
  20. event.target.form.submit();
  21. }
  22. }
  23. function init() {
  24. if ( !W3CDOM ) {
  25. alert("Your browser does not support DOM");
  26. return;
  27. }
  28. var pageSelect = document.getElementById("pagination-select");
  29. if ( pageSelect ) {
  30. pageSelect.onchange = handlePaginationChange;
  31. }
  32. }
  33. window.onload = init;
  34. //</xsl:comment>
  35. </script>
  36. </xsl:template>
  37. <xsl:template match="xweb:x-data" mode="page-body">
  38. <xsl:apply-templates select="xweb:x-model/eat:search-results"/>
  39. </xsl:template>
  40. <xsl:template match="eat:search-results">
  41. <xsl:call-template name="render-ui-index">
  42. <xsl:with-param name="ui-index" select="eat:ui-index"/>
  43. <xsl:with-param name="link" select="'/index.do'"/>
  44. </xsl:call-template>
  45. <xsl:variable name="total-count" select="eat:ui-index/eat:index-section[@selected]/@count"/>
  46. <xsl:if test="@pageSize &gt; 0 and $total-count &gt; @pageSize">
  47. <div class="page-navigation">
  48. <xsl:value-of select="key('i18n','recipe-index.pages.displayName')"/>
  49. <xsl:text>: </xsl:text>
  50. <xsl:call-template name="render-index-navigation">
  51. <xsl:with-param name="search-results" select="."/>
  52. <xsl:with-param name="max-page" select="ceiling($total-count div @pageSize)"/>
  53. <xsl:with-param name="link" select="'/index.do'"/>
  54. </xsl:call-template>
  55. </div>
  56. </xsl:if>
  57. <!-- Render <select> menu for pagination support -->
  58. <xsl:apply-templates select="." mode="render-index-pagination-menu"/>
  59. <ol class="recipe-index" start="{(@pageStart * @pageSize) + 1}">
  60. <xsl:apply-templates select="eat:recipe"/>
  61. </ol>
  62. </xsl:template>
  63. <xsl:template match="eat:search-results/eat:recipe">
  64. <li>
  65. <span class="recipe-title">
  66. <a class="go">
  67. <xsl:attribute name="href">
  68. <xsl:value-of select="$web-context"/>
  69. <xsl:text>/recipe.do?recipeId=</xsl:text>
  70. <xsl:value-of select="@recipeId"/>
  71. <xsl:text>&amp;index.displaySection=</xsl:text>
  72. <xsl:value-of select="../eat:ui-index/eat:index-section[@selected='true']/@index-key"/>
  73. <xsl:if test="../@pageSize">
  74. <xsl:text>&amp;index.pageSize=</xsl:text>
  75. <xsl:value-of select="../@pageSize"/>
  76. </xsl:if>
  77. <xsl:if test="../@pageStart">
  78. <xsl:text>&amp;index.pageStart=</xsl:text>
  79. <xsl:value-of select="../@pageStart"/>
  80. </xsl:if>
  81. </xsl:attribute>
  82. <xsl:value-of select="eat:name"/>
  83. </a>
  84. </span>
  85. <p class="excerpt">
  86. <xsl:value-of select="eat:excerpt"/>
  87. </p>
  88. </li>
  89. </xsl:template>
  90. </xsl:stylesheet>