diff options
Diffstat (limited to 'src/frontend_blog')
-rw-r--r-- | src/frontend_blog/essay_contract.php | 6 | ||||
-rw-r--r-- | src/frontend_blog/essay_offer.php | 62 | ||||
-rw-r--r-- | src/frontend_blog/index.html | 141 |
3 files changed, 47 insertions, 162 deletions
diff --git a/src/frontend_blog/essay_contract.php b/src/frontend_blog/essay_contract.php index ca6f9f11..d963c317 100644 --- a/src/frontend_blog/essay_contract.php +++ b/src/frontend_blog/essay_contract.php @@ -25,6 +25,7 @@ */ include("../frontend_lib/merchants.php"); include("../frontend_lib/util.php"); +include("../frontend_lib/config.php"); include("./blog_lib.php"); session_start(); $article = get($_GET['article']); @@ -41,10 +42,9 @@ $now = new DateTime('now'); $teaser = get_teaser($article); $amount_value = 0; $amount_fraction = 50000; -$currency = "EUR"; $teatax = array ('value' => 1, 'fraction' => 0, - 'currency' => $currency); + 'currency' => $MERCHANT_CURRENCY); $transaction_id = rand(0, 1001); // Include all information so we can // restore the contract without storing it @@ -53,7 +53,7 @@ $fulfillment_url = url_rel("essay_fulfillment.php") //file_put_contents("/tmp/debg1", $fulfillment_url); $contract_json = generate_contract($amount_value, $amount_fraction, - $currency, + $MERCHANT_CURRENCY, $transaction_id, trim($teaser->nodeValue), $p_id, diff --git a/src/frontend_blog/essay_offer.php b/src/frontend_blog/essay_offer.php index 7377a4b3..f7e20a05 100644 --- a/src/frontend_blog/essay_offer.php +++ b/src/frontend_blog/essay_offer.php @@ -1,13 +1,30 @@ <!DOCTYPE html> <html> -<head> -<script type="text/javascript"> +<body onload="signal_taler_wallet_onload()"> +<?php + include("../frontend_lib/merchants.php"); + include("../frontend_lib/util.php"); + include("./blog_lib.php"); + session_start(); + $article = get($_GET['article']); + if (null == $article){ + echo "Please land here just to buy articles"; + die(); + } + echo "<h3>No Taler installed</h3>"; + echo "<p>activate it or pay by <a href='/cc_payment.php?article=$article'>credit card</a></p>"; + echo "<p id=article-name style='display: none;'>$article</input>"; +?> +</body> +<script type="text/javascript"> + function handle_contract(json_contract) { var cEvent = new CustomEvent('taler-contract', {detail: json_contract}); document.dispatchEvent(cEvent); }; + function get_contract(article) { var contract_request = new XMLHttpRequest(); @@ -32,22 +49,29 @@ + contract_request.statusText); }; contract_request.send(); -} -</script> -</head> -<body> -<?php + } + + function has_taler_wallet_cb(aEvent) + { + var article = document.getElementById('article-name'); + get_contract(article.firstChild.nodeValue); + }; - include("../frontend_lib/merchants.php"); - include("../frontend_lib/util.php"); - include("./blog_lib.php"); - session_start(); - $article = get($_GET['article']); - if (null == $article){ - echo "Please land here just to buy articles"; - die(); - } - echo "<script>get_contract('$article');</script>" -?> -</body> + function signal_taler_wallet_onload() + { + var eve = new Event('taler-probe'); + document.dispatchEvent(eve); + }; + + document.addEventListener("taler-wallet-present", + has_taler_wallet_cb, + false); + + // Register event to be triggered by the wallet when it gets enabled while + // the user is on the payment page + document.addEventListener("taler-load", + signal_taler_wallet_onload, + false); + +</script> </html> diff --git a/src/frontend_blog/index.html b/src/frontend_blog/index.html index 5815038e..03297a00 100644 --- a/src/frontend_blog/index.html +++ b/src/frontend_blog/index.html @@ -40,7 +40,7 @@ <article class="articles"> <ul style="list-style-type:none"> <li> - <a href="/cc_payment.php?article=fs-essay" class="read-more" id="fs-essay"> + <a href="/essay_offer.php?article=fs-essay" class="read-more" id="fs-essay"> <div class="teasers_item"> <h3>What is Free Software</h3> <p> @@ -57,144 +57,5 @@ </section> </section> </body> -<script type="text/javascript"> -/* @licstart The following is the entire license notice for the - JavaScript code in this page. - Copyright (C) 2015 GNUnet e.V. - - The JavaScript code in this page is free software: you can - redistribute it and/or modify it under the terms of the GNU - Lesser General Public License (GNU LGPL) as published by the Free Software - Foundation, either version 2.1 of the License, or (at your option) - any later version. The code is distributed WITHOUT ANY WARRANTY; - without even the implied warranty of MERCHANTABILITY or FITNESS - FOR A PARTICULAR PURPOSE. See the GNU LGPL for more details. - - As additional permission under GNU LGPL version 2.1 section 7, you - may distribute non-source (e.g., minimized or compacted) forms of - that code without the copy of the GNU LGPL normally required by - section 4, provided you include this license notice and a URL - through which recipients can access the Corresponding Source. - - @licend The above is the entire license notice - for the JavaScript code in this page. - */ - -/* This function is called from "taler_pay" after - we downloaded the JSON contract from the merchant. - We now need to pass it to the extension. */ -function handle_contract(json_contract) -{ - var cEvent = new CustomEvent('taler-contract', { detail: json_contract }); - - document.dispatchEvent(cEvent); -}; - -function taler_pay(article) -{ - var contract_request = new XMLHttpRequest(); - - /* Note that the URL we give here is specific to the Demo-shop - and not required by the protocol: each web shop can - have its own way of generating and transmitting the - contract, there just must be a way to get the contract - and to pass it to the wallet when the user selects 'Pay'. */ - contract_request.open("GET", "essay_contract.php?article=" + article, true); - contract_request.onload = function (e) - { - if (contract_request.readyState == 4) - { - if (contract_request.status == 200) - { - /* display contract_requestificate (i.e. it sends the JSON string - to the extension) alert (contract_request.responseText); */ - console.log("contract here"); - console.log("response text:", contract_request.responseText); - handle_contract(contract_request.responseText); - } - else - { - /* There was an error obtaining the contract from the merchant, - obviously this should not happen. To keep it simple, we just - alert the user to the error. */ - alert("Failure to download contract from merchant " + - "(" + contract_request.status + "):\n" + - contract_request.responseText); - } - } - }; - contract_request.onerror = function (e) - { - /* There was an error obtaining the contract from the merchant, - obviously this should not happen. To keep it simple, we just - alert the user to the error. */ - alert("Failure requesting the contract:\n" + contract_request.statusText); - }; - contract_request.send(null); -} - -/* The following event gets fired whenever a customer has a Taler - wallet installed in his browser. In that case, the webmaster can decide - whether or not to display/enable Taler as a payment option in the dialog. */ -function has_taler_wallet_cb(aEvent) -{ - console.log("has taler wallet"); - // make "read more" trigger Taler payment - var articles_links = document.getElementsByClassName("read-more"); - for(var i=0; i < articles_links.length; i++) - //console.log(link); - articles_links[i].setAttribute("href", "/essay_offer.php?article=" + articles_links[i].id); -}; - -/* Function called when the Taler extension was unloaded; - here we disable the Taler option and check "Lisa", as - some "valid" option should always be selected. */ -function taler_wallet_unload_cb(aEvent) -{ - var rm = document.getElementById("read-more"); - rm.setAttribute("href", "cc_payment.html"); -}; - - -/* The merchant signals its taler-friendlyness to the wallet, - thereby causing the wallet to make itself more visible in the menu. - This function should be called both when the page is loaded - (i.e. via body's onload) and when we receive a "taler-load" signal - (as the extension may be loaded/enabled after the page was loaded) */ -function signal_taler_wallet_onload() -{ - var eve = new Event('taler-probe'); - document.dispatchEvent(eve); -}; - - -// function included to be run to test the page despite a -// wallet not being present in the browser. Enables the -// Taler option. NOT needed in real deployments. -function test_without_wallet(){ - var tbutton = document.getElementById("taler-radio-button-id"); - tbutton.removeAttribute("disabled"); -}; - - -// /////////////// Main logic run first //////////////////////// - -// Register event to be triggered by the wallet as a response to our -// first event -document.addEventListener("taler-wallet-present", - has_taler_wallet_cb, - false); - -// Register event to be triggered by the wallet when it gets enabled while -// the user is on the payment page -document.addEventListener("taler-load", - signal_taler_wallet_onload, - false); - -// Register event to be triggered by the wallet when it is unloaded -document.addEventListener("taler-unload", - taler_wallet_unload_cb, - false); -</script> </html> |