Add composite which uses the BPEL payment component

git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@746500 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
slaws 2009-02-21 13:23:43 +00:00
parent f681828274
commit cbc7baadca
8 changed files with 945 additions and 0 deletions

View file

@ -0,0 +1,116 @@
<!--
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
-->
<project name="scatours-chapter-06-ui-bpel-contribution" default="compile">
<target name="compile">
<mkdir dir="target/classes"/>
<javac destdir="target/classes" debug="on" source="1.5" target="1.5">
<src path="src\main\java"/>
<classpath>
<fileset refid="tuscany.jars"/>
<fileset refid="3rdparty.jars"/>
</classpath>
</javac>
<copy todir="target/classes">
<fileset dir="src\main\resources"/>
<fileset dir="src\main\resources"/>
</copy>
<jar destfile="target/scatours-chapter-06-ui-bpel-contribution.jar" basedir="target/classes">
<manifest>
<attribute name="Main-Class" value="launch.LaunchTutorialAdmin"/>
</manifest>
</jar>
</target>
<target name="package" depends="compile"/>
<target name="run">
<java classname="launch.LaunchTutorialAdmin" fork="true">
<classpath>
<pathelement location="target/scatours-chapter-06-ui-bpel-contribution.jar"/>
<fileset refid="tuscany.jars"/>
<fileset refid="3rdparty.jars"/>
</classpath>
</java>
</target>
<target name="clean">
<delete includeemptydirs="true">
<fileset dir="target"/>
</delete>
</target>
<fileset id="tuscany.jars" dir="../../modules">
<include name="tuscany-assembly-1.5-SNAPSHOT.jar"/>
<include name="tuscany-assembly-xml-1.5-SNAPSHOT.jar"/>
<include name="tuscany-assembly-xsd-1.5-SNAPSHOT.jar"/>
<include name="tuscany-binding-sca-1.5-SNAPSHOT.jar"/>
<include name="tuscany-binding-sca-xml-1.5-SNAPSHOT.jar"/>
<include name="tuscany-contribution-1.5-SNAPSHOT.jar"/>
<include name="tuscany-contribution-impl-1.5-SNAPSHOT.jar"/>
<include name="tuscany-contribution-java-1.5-SNAPSHOT.jar"/>
<include name="tuscany-contribution-namespace-1.5-SNAPSHOT.jar"/>
<include name="tuscany-contribution-xml-1.5-SNAPSHOT.jar"/>
<include name="tuscany-core-1.5-SNAPSHOT.jar"/>
<include name="tuscany-core-databinding-1.5-SNAPSHOT.jar"/>
<include name="tuscany-core-spi-1.5-SNAPSHOT.jar"/>
<include name="tuscany-databinding-1.5-SNAPSHOT.jar"/>
<include name="tuscany-databinding-jaxb-1.5-SNAPSHOT.jar"/>
<include name="tuscany-definitions-1.5-SNAPSHOT.jar"/>
<include name="tuscany-definitions-xml-1.5-SNAPSHOT.jar"/>
<include name="tuscany-endpoint-1.5-SNAPSHOT.jar"/>
<include name="tuscany-extensibility-1.5-SNAPSHOT.jar"/>
<include name="tuscany-host-embedded-1.5-SNAPSHOT.jar"/>
<include name="tuscany-implementation-node-1.5-SNAPSHOT.jar"/>
<include name="tuscany-interface-1.5-SNAPSHOT.jar"/>
<include name="tuscany-interface-java-1.5-SNAPSHOT.jar"/>
<include name="tuscany-interface-java-jaxws-1.5-SNAPSHOT.jar"/>
<include name="tuscany-interface-java-xml-1.5-SNAPSHOT.jar"/>
<include name="tuscany-monitor-1.5-SNAPSHOT.jar"/>
<include name="tuscany-node-api-1.5-SNAPSHOT.jar"/>
<include name="tuscany-node-impl-1.5-SNAPSHOT.jar"/>
<include name="tuscany-policy-1.5-SNAPSHOT.jar"/>
<include name="tuscany-policy-xml-1.5-SNAPSHOT.jar"/>
<include name="tuscany-sca-api-1.5-SNAPSHOT.jar"/>
<include name="tuscany-sca-api-extension-1.5-SNAPSHOT.jar"/>
<include name="tuscany-xsd-1.5-SNAPSHOT.jar"/>
</fileset>
<fileset id="3rdparty.jars" dir="../../lib">
<include name="XmlSchema-1.4.2.jar"/>
<include name="activation-1.1.jar"/>
<include name="asm-all-3.1.jar"/>
<include name="axiom-api-1.2.7.jar"/>
<include name="axiom-impl-1.2.7.jar"/>
<include name="cglib-nodep-2.2.jar"/>
<include name="commons-logging-1.1.1.jar"/>
<include name="geronimo-activation_1.1_spec-1.0.1.jar"/>
<include name="geronimo-javamail_1.4_spec-1.2.jar"/>
<include name="geronimo-stax-api_1.0_spec-1.0.1.jar"/>
<include name="jaxb-api-2.1.jar"/>
<include name="jaxb-impl-2.1.7.jar"/>
<include name="jaxen-1.1.1.jar"/>
<include name="jaxws-api-2.1.jar"/>
<include name="jsr181-api-1.0-MR1.jar"/>
<include name="jsr250-api-1.0.jar"/>
<include name="stax-api-1.0-2.jar"/>
<include name="wstx-asl-3.2.4.jar"/>
</fileset>
</project>

View file

@ -0,0 +1,88 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
-->
<project>
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.apache.tuscany.sca</groupId>
<artifactId>tuscany-sca</artifactId>
<version>1.5-SNAPSHOT</version>
<!--relativePath>../../pom.xml</relativePath-->
</parent>
<artifactId>scatours-chapter-06-ui-bpel-contribution</artifactId>
<name>Apache Tuscany SCA Tours Chapter 06 User Interface Contribution</name>
<dependencies>
<dependency>
<groupId>org.apache.tuscany.sca</groupId>
<artifactId>tuscany-host-embedded</artifactId>
<version>1.5-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.tuscany.sca</groupId>
<artifactId>tuscany-implementation-java-runtime</artifactId>
<version>1.5-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.tuscany.sca</groupId>
<artifactId>tuscany-binding-ws-axis2</artifactId>
<version>1.5-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.tuscany.sca</groupId>
<artifactId>tuscany-host-tomcat</artifactId>
<version>1.5-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.5</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<finalName>${artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.apache.tuscany.sca</groupId>
<artifactId>tuscany-maven-ant-generator</artifactId>
<version>1.5-SNAPSHOT</version>
<executions>
<execution>
<configuration>
<mainClass>launch.LaunchTutorialAdmin</mainClass>
</configuration>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

View file

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
-->
<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"
xmlns:scatours="http://scatours">
<deployable composite="scatours:scatours"/>
<import.java package="scatours.common"/>
<import.java package="scatours.currencyconverter"/>
<import.java package="scatours.hotel"/>
<import.java package="scatours.flight"/>
<import.java package="scatours.car"/>
<import.java package="scatours.trip"/>
<import.java package="scatours.tripbooking"/>
<import.java package="scatours.travelcatalog"/>
<import.java package="payment.creditcard"/>
<import.java package="scatours.emailgateway"/>
<import.java package="scatours.shoppingcart"/>
<import.java package="scatours"/>
<import namespace="http://www.tuscanyscatours.com/Payment"/>
<import namespace="http://www.tuscanyscatours.com/Payment/"/>
</contribution>

View file

@ -0,0 +1,178 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
-->
<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
targetNamespace="http://scatours"
xmlns:scatours="http://scatours"
xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0"
xmlns:pp="http://www.tuscanyscatours.com/Payment"
name="scatours">
<component name="UserInterfaceComponent">
<tuscany:implementation.widget location="scatours.html"/>
<service name="Widget">
<tuscany:binding.http uri="/scatours"/>
</service>
<reference name="scaToursCatalog" target="SCAToursComponent/SCAToursSearch">
<tuscany:binding.jsonrpc/>
</reference>
<reference name="scaToursBooking" target="SCAToursComponent/SCAToursBooking">
<tuscany:binding.jsonrpc/>
</reference>
<reference name="scaToursCart" target="SCAToursComponent/SCAToursCart">
<tuscany:binding.jsonrpc/>
</reference>
</component>
<component name="SCAToursComponent">
<implementation.java class="scatours.SCAToursImpl"/>
<service name="SCAToursSearch">
<tuscany:binding.jsonrpc/>
</service>
<service name="SCAToursBooking">
<tuscany:binding.jsonrpc/>
</service>
<service name="SCAToursCart">
<tuscany:binding.jsonrpc/>
</service>
<reference name="travelCatalogSearch" target="TravelCatalogComponent/TravelCatalogSearch"/>
<reference name="tripBooking" target="TripBookingComponent/TripBooking"/>
<reference name="shoppingCart" target="ShoppingCartComponent/ShoppingCart"/>
</component>
<component name="TravelCatalogComponent">
<implementation.java class="scatours.travelcatalog.TravelCatalogImpl"/>
<service name="TravelCatalogSearch"/>
<reference name="hotelSearch" target="HotelComponent/Search">
<binding.sca/>
</reference>
<reference name="flightSearch">
<interface.java interface="scatours.common.Search"
callbackInterface="scatours.common.SearchCallback"/>
<binding.ws uri="http://localhost:8080/Flight/Search"/>
<callback>
<binding.ws uri="http://localhost:8080/Flight/SearchCallback"/>
</callback>
</reference>
<reference name="carSearch" target="CarComponent/Search">
<binding.sca/>
</reference>
<reference name="tripSearch" target="TripComponent/Search">
<binding.sca/>
</reference>
<reference name="currencyConverter" target="CurrencyConverterComponent">
</reference>
<property name="quoteCurrencyCode">GBP</property>
</component>
<component name="TripBookingComponent">
<implementation.java class="scatours.tripbooking.TripBookingImpl"/>
<service name="TripBooking"/>
<reference name="hotelBook" target="HotelComponent/Book"/>
<reference name="flightBook" target="TripComponent/Book"/>
<reference name="carBook" target="CarComponent/Book"/>
<reference name="tripBook" target="TripComponent/Book"/>
<reference name="shoppingCart" target="ShoppingCartComponent/ShoppingCart"/>
</component>
<component name="HotelComponent">
<implementation.java class="scatours.hotel.HotelImpl"/>
<service name="Search">
<binding.sca/>
<tuscany:binding.jsonrpc/>
</service>
<service name="Book"/>
</component>
<component name="FlightComponent">
<implementation.java class="scatours.flight.FlightImpl"/>
<service name="Search">
<interface.java interface="scatours.common.Search"
callbackInterface="scatours.common.SearchCallback"/>
<binding.ws uri="http://localhost:8080/Flight/Search"/>
<tuscany:binding.jsonrpc/>
<callback>
<binding.ws uri="http://localhost:8080/Flight/SearchCallback"/>
</callback>
</service>
<service name="Book"/>
</component>
<component name="CarComponent">
<implementation.java class="scatours.car.CarImpl"/>
<service name="Search">
<binding.sca/>
<tuscany:binding.jsonrpc/>
</service>
<service name="Book"/>
</component>
<component name="TripComponent">
<implementation.java class="scatours.trip.TripImpl"/>
<service name="Search">
<binding.sca/>
<tuscany:binding.jsonrpc/>
</service>
<service name="Book"/>
</component>
<component name="CurrencyConverterComponent">
<implementation.java class="scatours.currencyconverter.CurrencyConverterImpl"/>
<service name="CurrencyConverter">
</service>
</component>
<component name="ShoppingCartComponent">
<implementation.java class="scatours.shoppingcart.ShoppingCartImpl"/>
<service name="ShoppingCart">
</service>
<reference name="payment">
<binding.ws uri="http://localhost:8080/Payment" />
</reference>
</component>
<component name="PaymentComponent">
<implementation.bpel process="pp:Payment"/>
<service name="paymentPartnerLink">
<interface.wsdl interface="http://www.tuscanyscatours.com/Payment/#wsdl.interface(Payment)" />
<binding.ws uri="http://localhost:8080/Payment" wsdlElement="http://www.tuscanyscatours.com/Payment/#wsdl.service(PaymentService)"/>
</service>
<reference name="creditCardPaymentPartnerLink">
<binding.ws uri="http://localhost:8081/CreditCardPayment"/>
</reference>
<reference name="emailGatewayPartnerLink">
<binding.ws uri="http://localhost:8082/EmailGateway"/>
</reference>
</component>
<component name="CreditCardPayment">
<implementation.java class="payment.creditcard.CreditCardPaymentImpl" />
<service name="CreditCardPayment">
<binding.ws uri="http://localhost:8081/CreditCardPayment" />
</service>
</component>
<component name="EmailGateway">
<implementation.java class="scatours.emailgateway.EmailGatewayImpl" />
<service name="EmailGateway">
<binding.ws uri="http://localhost:8082/EmailGateway" />
</service>
</component>
</composite>

View file

@ -0,0 +1,391 @@
<!--
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
-->
<html>
<head>
<title>SCA Tours</title>
<link rel="stylesheet" type="text/css" href="style.css" />
<script type="text/javascript" src="scatours.js"></script>
<script language="JavaScript">
//@Reference
var scaToursCatalog = new Reference("scaToursCatalog");
//@Reference
var scaToursBooking = new Reference("scaToursBooking");
//@Reference
var scaToursCart = new Reference("scaToursCart");
//local state
var packagedItems;
var bespokeItems;
var cartId;
//the constructor for trip leg beans
function TripLegType(id,
fromLocation,
toLocation,
fromDate,
toDate,
noOfPeople) {
this.id = id;
this.fromLocation = fromLocation;
this.toLocation = toLocation;
this.fromDate = fromDate;
this.toDate = toDate;
this.noOfPeople = noOfPeople;
}
function getTripLeg(){
return new TripLegType(cartId,
document.searchForm.fromLocation.value,
document.searchForm.toLocation.value,
document.searchForm.fromDate.value,
document.searchForm.toDate.value,
document.searchForm.noOfPeople.value);
}
//the constructor for bespoke trip beans
function TripType() {
this.id = cartId;
this.type = "Bespoke";
this.tripItems = new Array();
// json databinding can't tolerate having a class hint set as the
// databinding transformer is not in the right classloader to load
// the class pointed to by the hint
//this.javaClass = "scatours.common.TripItem";
}
function getTrip(){
return new TripType();
}
// remove class hint from the trip object
// can also be used to limit the amount of
// data returned to the server
function copyTrip(trip){
var tripCopy = new TripType();
tripCopy.id = trip.id;
tripCopy.tripId = trip.tripId;
tripCopy.type = trip.type;
tripCopy.name = trip.name;
tripCopy.description = trip.description;
tripCopy.location = trip.location;
tripCopy.fromDate = trip.fromDate;
tripCopy.toDate = trip.toDate;
tripCopy.price = trip.price;
tripCopy.currency = trip.currency;
tripCopy.link = trip.link;
return tripCopy;
}
function init() {
try {
newCart();
}
catch(e) {
alert(e);
}
}
function reset() {
document.getElementById('packagedTripItems').innerHTML = "";
document.getElementById('bespokeTripItems').innerHTML = "";
document.getElementById('cartItems').innerHTML = "";
document.getElementById('cartPrice').innerHTML = "";
packagedItems = new Array();
bespokeItems = new Array();
}
function newCart() {
scaToursCart.newCart(newCart_response);
reset();
}
function newCart_response(newCartId, exception) {
if(exception){
alert(exception.javaStack);
return;
}
cartId = newCartId
}
function searchTravelCatalog() {
scaToursCatalog.search(getTripLeg(), search_response);
}
function search_response(items, exception) {
if(exception){
alert(exception.javaStack);
return;
}
var packagedHTML = '<h3>Packaged Trip Items</h3>';
packagedHTML += '<table border="0">';
packagedHTML += '<tr>';
packagedHTML += '<td>Select</td><td>Name</td><td>Description</td><td>Location</td><td>From - To</td><td>Price</td>';
packagedHTML += '</tr>';
var bespokeHTML = '<h3>Bespoke Trip Items</h3>';
bespokeHTML += '<table border="0">';
bespokeHTML += '<tr>';
bespokeHTML += '<td>Select</td><td>Name</td><td>Description</td><td>Location</td><td>From - To</td><td>Price</td>';
bespokeHTML += '</tr>';
for (var i=0; i<items.length; i++) {
if (items[i].type == "Trip") {
packagedHTML += '<tr>';
packagedHTML += '<td><input onClick="processPackagedSelection()" name="packagedTripItemSelection" type="checkbox" value="' + items[i].id + '"></td>'
packagedHTML += '<td>' + items[i].name + '</td>';
packagedHTML += '<td>' + items[i].description + '</td>';
packagedHTML += '<td>' + items[i].location + '</td>';
packagedHTML += '<td>' + items[i].fromDate + ' - ' + items[i].toDate +'</td>';
packagedHTML += '<td>' + items[i].price + ' ' + items[i].currency + '</td>';
packagedHTML += '</tr>';
packagedItems.push(items[i]);
} else {
bespokeHTML += '<tr>';
bespokeHTML += '<td><input onClick="processBespokeSelection()" name="bespokeTripItemSelection" type="checkbox" value="' + items[i].id + '"></td>'
bespokeHTML += '<td>' + items[i].name + '</td>';
bespokeHTML += '<td>' + items[i].description + '</td>';
bespokeHTML += '<td>' + items[i].location + '</td>';
bespokeHTML += '<td>' + items[i].fromDate + ' - ' + items[i].toDate +'</td>';
bespokeHTML += '<td>' + items[i].price + ' ' + items[i].currency + '</td>';
bespokeHTML += '</tr>';
bespokeItems.push(items[i]);
}
}
packagedHTML += '</table>';
packagedHTML += '<input type="button" onClick="bookPackagedTrip()" value="Book Packaged Trip">';
bespokeHTML += '<tr><td/><td/><td>Total Price</td><td/><td/><td><div id="bespokeTripPrice"></div> </td></tr>';
bespokeHTML += '</table>';
bespokeHTML += '<input type="button" onClick="bookBespokeTrip()" value="Book Bespoke Trip">';
if (packagedItems.length > 0){
document.getElementById('packagedTripItems').innerHTML = packagedHTML;
}
if (bespokeItems.length > 0){
document.getElementById('bespokeTripItems').innerHTML = bespokeHTML;
}
}
function processPackagedSelection() {
// do nothing at the moment
}
function processBespokeSelection() {
// calculate total price
var items = document.getElementsByName("bespokeTripItemSelection");
var totalPrice = 0.0;
for (var i=0; i<items.length; i++) {
// find the items that are checked
if (items[i].checked == true) {
totalPrice = totalPrice + bespokeItems[i].price;
}
}
document.getElementById('bespokeTripPrice').innerHTML = totalPrice + ' ' + bespokeItems[0]. currency;
}
function bookPackagedTrip() {
// find first selected trip item
var trip = null;
var items = document.getElementsByName("packagedTripItemSelection");
for (var i=0; i<items.length; i++) {
// find the items that are checked
if (items[i].checked == true) {
trip = copyTrip(packagedItems[i]);
break;
}
}
if (trip != null) {
// book trip
scaToursBooking.bookTrip(cartId, trip);
// reset the display
reset();
// re-populate the cart with all entries
getCartTrips();
} else {
alert ("Please select a trip")
}
}
function bookBespokeTrip() {
// create a trip object
var trip = getTrip();
// add selected trip items to trip
var items = document.getElementsByName("bespokeTripItemSelection");
for (var i=0; i<items.length; i++) {
// find the items that are checked
if (items[i].checked == true) {
trip.tripItems.push(copyTrip(bespokeItems[i]));
}
}
if (trip.tripItems.length > 0) {
// book trip
scaToursBooking.bookTrip(cartId, trip);
// reset the display
reset();
// re-populate the cart with all entries
getCartTrips();
} else {
alert ("Please select some trip items!")
}
}
function getCartTrips() {
scaToursCart.getTrips(cartId, getCartTrips_response);
}
function getCartTrips_response(trips, exception) {
if(exception){
alert(exception.javaStack);
return;
}
var itemsHTML = '';
var totalPrice = 0.0;
for (var x=0; x<trips.length; x++){
itemsHTML += '<h3>Trip - ' + trips[x].id + '</h3>';
itemsHTML += '<table border="0">';
itemsHTML += '<tr>';
itemsHTML += '<td>Booking Ref</td><td>Name</td><td>Description</td><td>Location</td><td>From - To</td><td>Price</td>';
itemsHTML += '</tr>';
if (trips[x].type == "Trip") {
itemsHTML += '<tr>';
itemsHTML += '<td>' + trips[x].bookingCode + '</td>';
itemsHTML += '<td>' + trips[x].name + '</td>';
itemsHTML += '<td>' + trips[x].description + '</td>';
itemsHTML += '<td>' + trips[x].location + '</td>';
itemsHTML += '<td>' + trips[x].fromDate + ' - ' + trips[x].toDate +'</td>';
itemsHTML += '<td>' + trips[x].price + ' ' + trips[x].currency + '</td>';
itemsHTML += '</tr>';
totalPrice = totalPrice + trips[x].price;
} else {
var tripItems = trips[x].tripItems;
for (var i=0; i<tripItems.length; i++) {
itemsHTML += '<tr>';
itemsHTML += '<td>' + tripItems[i].bookingCode + '</td>';
itemsHTML += '<td>' + tripItems[i].name + '</td>';
itemsHTML += '<td>' + tripItems[i].description + '</td>';
itemsHTML += '<td>' + tripItems[i].location + '</td>';
itemsHTML += '<td>' + tripItems[i].fromDate + ' - ' + tripItems[i].toDate +'</td>';
itemsHTML += '<td>' + tripItems[i].price + ' ' + tripItems[i].currency + '</td>';
itemsHTML += '</tr>';
totalPrice = totalPrice + tripItems[i].price;
}
}
itemsHTML += '</table>';
}
document.getElementById('cartItems').innerHTML = itemsHTML;
document.getElementById('cartPrice').innerHTML = totalPrice + ' ' + trips[0].currency;
}
function checkout() {
scaToursCart.checkout(cartId);
document.getElementById('packagedTripItems').innerHTML = "";
document.getElementById('bespokeTripItems').innerHTML = "";
document.getElementById('cartItems').innerHTML = "Thank you for shopping with SCA Tours";
document.getElementById('cartPrice').innerHTML = "";
searchResponseItems = null;
tripItems = null;
}
function purchase() {
}
</script>
</head>
<body onload="init()" background="">
<img src="scatours.png" border="0" />
<div id="scatours">
<form name="searchForm">
<h3>Search for trips, hotels, flights and cars</h3>
<br/>
<table border="0">
<tr>
<td>From Location:</td>
<td><input type="text" name="fromLocation" value="LGW"></td>
<td>To Location:</td>
<td><input type="text" name="toLocation" value="FLR"></td>
</tr>
<tr>
<td>Start Date:</td>
<td><input type="text" name="fromDate" value="06/12/09"></td>
<td>End Date:</td>
<td><input type="text" name="toDate" value="13/12/09"></td>
</tr>
<tr>
<td>Number of people:</td>
<td><select name="noOfPeople">
<option>1
<option selected>2
<option>3
<option>4
</select></td>
<td/>
<td/>
</tr>
</table>
<br/>
<input type="button" onClick="searchTravelCatalog()" value="Search">
</form>
<form name="packagedTripForm">
<div id="packagedTripItems"></div>
</form>
<form name="bespokeTripForm">
<div id="bespokeTripItems"></div>
</form>
<form name="cartForm">
<h3>Shopping Cart</h3>
<div id="cartItems"></div>
<br/>
Total Price: <div id="cartPrice"></div>
<br/>
<input type="button" onClick="checkout()" value="Checkout">
</form>
</div>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View file

@ -0,0 +1,135 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
/*******************************************/
p,table,li,h1,h2,h3
{
font-family: verdana, arial, 'sans serif';
}
p, h1, h2, h3, table, li, hr
{
margin-left: 10pt;
}
table
{
border-color: black;
border-collapse: separate;
border-spacing: 0px 1px;
margin-right: 10pt;
margin-left: 10pt;
width: 800px;
}
.sourceDetailsTable
{
width: 600px;
}
tr, td
{
margin-left: 0pt;
margin-right: 0pt;
padding-left: 10pt;
font-size: 90%;
}
p,li,th
{
font-size: 90%;
margin-left: 10pt;
}
pre
{
margin-left: 10pt;
}
body
{
#ffffff;
}
h1,h2,h3,hr
{
color: firebrick;
}
a:link {COLOR: firebrick;}
a:visited {COLOR: firebrick;}
a:active {COLOR: navy;}
.link
{
COLOR: firebrick;
text-decoration: underline;
}
.clickable
{
cursor: pointer
}
.unread_title
{
font-weight: bold;
}
.read_title
{
font-weight: normal;
}
.summary
{
color: DimGrey;
}
.hidden
{
display: none;
}
.source_name
{
width: 600px;
}
.alert_text
{
width: 600px;
}
.alert_data
{
margin-left: 10px;
width: 800px;
height: 800px;
}
.source_0
{
background-color: LightGreen;
}