<?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:r="http://www.whitemagicsoftware.com/software/recipe" xmlns:string="http://symphony-cms.com/functions" xmlns:str="http://exslt.org/strings" exclude-result-prefixes="r str string"> <xsl:import href="../../common/xsl/main.xsl"/> <xsl:param name="editable">false</xsl:param> <xsl:param name="account-id">0</xsl:param> <xsl:param name="account-label"><xsl:value-of select="$DEFAULT_USER_NAME" /></xsl:param> <xsl:param name="cookie"></xsl:param> <xsl:template match="//recipe-books"> <form name="recipe-book" id="recipe-book" method="post" enctype="multipart/form-data" class="input-book"> <input type="hidden" id="downloadToken" name="downloadToken" value="0" /> <!-- Values are filled in during StripeCheckout's token callback. --> <input type="hidden" id="purchaseId" name="purchaseId" value="" /> <input type="hidden" id="purchaseEmail" name="purchaseEmail" value="" /> <input type="hidden" id="purchaseAmount" name="purchaseAmount" value="" /> <!-- Value is changed to "purchase-book" during purchase. --> <input type="hidden" id="command" name="command" value="create-book" /> <xsl:if test="$editable"> <xsl:apply-templates select="recipes" /> <xsl:apply-templates select="books" /> </xsl:if> </form> </xsl:template> <xsl:template name="page-title">Book</xsl:template> <xsl:template match="recipes"> <div id="book-recipe-list"> <fieldset> <legend> <span class="enumeration-numeral">1</span><xsl:text> </xsl:text> <span class="enumeration-text">Choose Recipes</span> </legend> <select name="recipe-list[]" id="recipes" class="recipe-select" multiple="multiple" size="15" tabindex="1"> <xsl:apply-templates /> </select> <p class="tip"> <b>Tip:</b> Use ctrl+click to deselect a recipe. </p> </fieldset> </div> </xsl:template> <xsl:template match="recipe"> <!-- Ignore recipes entitled 'Recipe Name': they are incomplete. --> <xsl:if test="title!='Recipe Name'"> <option value="{@id}" title="{title}" selected="selected"><xsl:apply-templates select="title" /></option> </xsl:if> </xsl:template> <xsl:template match="books"> <div id="book-settings"> <fieldset> <legend> <span class="enumeration-numeral">2</span> <xsl:text> </xsl:text> <span class="enumeration-text">Apply Features</span> </legend> <label> <span class="enumeration-text">Author</span><br /> <input type="text" name="book-author" value="" autofocus="autofocus" autocomplete="on" tabindex="2" /> </label> <br /> <label> <span class="enumeration-text">Title</span><br /> <input type="text" name="book-title" value="" autocomplete="on" tabindex="3" /> </label> <br /> <xsl:apply-templates select="/recipe-books/themes" /> <br /> <label> <span class="enumeration-text">Cover (optional)</span><br /> <input type="file" name="cover-image" id="cover-image" size="25" tabindex="4" /> </label> </fieldset> </div> <div id="book-create"> <fieldset> <legend> <span class="enumeration-numeral">3</span> <xsl:text> </xsl:text> <span class="enumeration-text">Preview Book</span> </legend> <button title="Preview Book" type="submit" id="create-book" class="create-button"><img alt="Preview Book" width="60" height="60" src="{$BASE_ICON}book/create.png" /></button> </fieldset> </div> <div id="book-purchase"> <fieldset> <legend> <span class="enumeration-numeral">4</span> <xsl:text> </xsl:text> <span class="enumeration-text">Purchase Book</span> </legend> <button title="Purchase Book" type="submit" id="purchase-book" class="purchase-button"><img alt="Purchase Book" width="60" height="60" src="{$BASE_ICON}book/create.png" /></button> </fieldset> </div> </xsl:template> <xsl:template match="book"> <option value="{@id}"> <xsl:attribute name="value"><xsl:value-of select="@id" /></xsl:attribute> <xsl:apply-templates select="title" /> </option> </xsl:template> <!-- | Truncates the title to avoid pushing steps 3 and 4 to the bottom. +--> <xsl:template match="title"> <xsl:variable name="title"> <xsl:choose> <xsl:when test="string-length(.) > 35"> <xsl:value-of select="substring(.,1,35)" />... </xsl:when> <xsl:otherwise><xsl:value-of select="." /></xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:value-of select="normalize-space($title)" /> </xsl:template> <xsl:template match="themes"> <label><span class="enumeration-text">Theme</span><br /> <select name="book-theme" id="book-theme" tabindex="5"> <xsl:apply-templates /> </select> </label> </xsl:template> <xsl:template match="theme"> <option value="{@id}"><xsl:apply-templates /></option> </xsl:template> <xsl:template name="purchase"> <script> function purchaseBook( e ) { var handler = StripeCheckout.configure({ key: '<xsl:value-of select="$PURCHASE_KEY_PUBLIC" />', image: '', name: 'Recipe Fiddle', description: 'Electronic Recipe Book', billingAddress: false, shippingAddress: false, allowRememberMe: false, email: '<xsl:value-of select="//recipe-books/contact/email" />', token: function(token, args) { $('#purchaseId').val( token.id ); $('#purchaseEmail').val( token.email ); $('#purchaseAmount').val( amountCalculate() ); $('#command').val( 'purchase-book' ); createDownloadToken(); $('#recipe-book').submit(); createBook(); }, closed: function() { // Allow payment after closing the payment dialog. attachBookHandlers(); }, }); handler.open({ name: 'Recipe Fiddle', description: 'Recipe Book', panelLabel: 'Purchase for {{amount}}', amount: amountCalculate(), }); e.preventDefault(); } </script> </xsl:template> <xsl:template name="html-head"> <link rel="stylesheet" type="text/css" href="{$BASE_CSS_APP}book.css" /> </xsl:template> <xsl:template name="body-app-footer"> <xsl:call-template name="include-client-framework" /> <script type="text/javascript" src="{$BASE_JAVASCRIPT}rz.book.min.js" charset="utf-8"></script> <script src="//checkout.stripe.com/checkout.js"></script> <xsl:call-template name="purchase" /> </xsl:template> </xsl:stylesheet>