<?xml version="1.0"?>

<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
	<map:components>
		<map:generators default="file">
			<map:generator name="auth" src="test.AuthGen"/>
		</map:generators>
		<map:transformers default="xslt"/>
		<map:readers default="resource">
		<map:reader name="databasereader" src="org.apache.cocoon.reading.DatabaseReader"> 
		<use-connection>postgresql</use-connection> 
		</map:reader> 
		</map:readers>
		<map:serializers default="html">
		 <map:serializer logger="sitemap.serializer.svgxml" mime-type="image/svg+xml" name="svgxml" src="org.apache.cocoon.serialization.XMLSerializer">
			<doctype-public>-//W3C//DTD SVG 1.0//EN</doctype-public>
			<doctype-system>http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd</doctype-system>
		  </map:serializer>
		  <map:serializer name="svg2jpeg" mime-type="image/jpeg" src="org.apache.cocoon.serialization.SVGSerializer">
			  <parameter name="transcoder" value="org.apache.batik.transcoder.image.JPEGTranscoder"/>
			  <parameter name="background_color" type="color" value="#00FF00"/>
			  <parameter name="quality" type="float" value="0.9"/>
		  </map:serializer>
		</map:serializers>
		<map:selectors default="browser"/>
		<map:matchers default="wildcard"/>
		<map:actions>
			<map:action name="session-validator" src="org.apache.cocoon.acting.SessionValidatorAction" />
			<map:action name="session-invalidator" src="org.apache.cocoon.acting.SessionInvalidatorAction" />
			<map:action name="authenticator" src="org.apache.cocoon.acting.DatabaseAuthenticatorAction" />
			<map:action name="validator" logger="sitemap.Action.validator" src="org.apache.cocoon.acting.FormValidatorAction" />
			<map:action name="request" logger="sitemap.Action.request" src="org.apache.cocoon.acting.RequestParamAction" />
			<map:action name="session" src="org.apache.cocoon.webapps.session.acting.SessionAction"/>
			<map:action name="session-form" src="org.apache.cocoon.webapps.session.acting.SessionFormAction"/>
			<map:action name="auth-protect" src="org.apache.cocoon.webapps.authentication.acting.AuthAction"/>
			<map:action name="auth-login" src="org.apache.cocoon.webapps.authentication.acting.LoginAction"/>
			<map:action name="auth-logout" src="org.apache.cocoon.webapps.authentication.acting.LogoutAction"/>
			<map:action name="auth-loggedIn" src="org.apache.cocoon.webapps.authentication.acting.LoggedInAction"/>
		</map:actions>
	</map:components>

	<map:pipelines>
	
		<map:component-configurations>
			<authentication-manager>
				<handlers>
					<handler name="beyarecords">
						<redirect-to uri="cocoon:/login.html"/>
							<authentication uri="cocoon:raw:/authenticate"/>
					</handler>
				</handlers>
			</authentication-manager>
		</map:component-configurations>
		
		<map:pipeline  type="caching">
		
			<!-- ================= -->
			<!-- Document types -->
			<!-- ================= -->
			<map:match pattern="*.css">
				<map:read mine-type="text/css" src="style/{1}.css" />
			</map:match>
			
			<map:match pattern="frame/*.css">
				<map:read mine-type="text/css" src="style/{1}.css" />
			</map:match>
			
			<map:match pattern="*.gif">
				<map:read mine-type="text/gif" src="images/{1}.gif" />
			</map:match>
			
			<map:match pattern="frame/*.gif">
				<map:read mine-type="text/gif" src="images/{1}.gif" />
			</map:match>
			
			<map:match pattern="*.jpg">
				<map:read mine-type="text/jpeg" src="images/{1}.jpg" />
			</map:match>
			
			<map:match pattern="unframe/*.jpg">
				<map:generate type="serverpages" src="xsp/artist-details.xsp" />
				<map:serialize type="svg2jpeg"/>
			</map:match>
			
			<map:match pattern="frame/*.jpg">
				<map:generate type="serverpages" src="xsp/artist-details.xsp" />
				<map:serialize type="svg2jpeg"/>
			</map:match>
				
			
			<!-- ================= -->
			<!-- Simple login page -->
			<!-- ================= -->
			<map:match pattern="login.html">
				<map:act type="auth-loggedIn">
					<map:parameter name="handler" value="beyarecords"/> 
						<map:redirect-to uri="main"/>
				</map:act> 
				<!--<map:read mime-type="text/html" src="content/login.html" />-->
				<map:redirect-to uri="un-protected"/>
			</map:match>
			
			<map:match pattern="un-protected">
				<map:aggregate element="unhome">
					<map:part src="cocoon:/unsupport/beya-menu" />
						<map:part src="cocoon:/unsupport/contract-summary" />
							<map:part src="context://beyarecords/content/adv-xyz-01.xml" />
								<map:part src="cocoon:/unsupport/banner" />
				</map:aggregate>
				
				<map:transform type="xslt" src="style/unhome-page.xsl" />
			<map:serialize type="html" />
			</map:match>
			
			<map:match pattern="unsupport/banner">
				<map:generate type="serverpages" src="xsp/unbanner.xsp"/>
					<map:serialize type="html"/>
			</map:match>
			
			<map:match pattern="unsupport/beya-menu">
				<map:generate type="serverpages" src="xsp/unbeya-menu2.xsp"/>
					<map:serialize type="html"/>
			</map:match>
			
			<map:match pattern="unsupport/contract-summary">
						<map:generate type="serverpages" src="xsp/contract-summary.xsp" />
							<map:serialize type="xml"/>
			</map:match>
			
			<!-- ===================== -->
			<!-- pages for the frame   -->
			<!-- ===================== -->
			<map:match pattern="unframe/*">
						<map:generate type="serverpages" src="xsp/{/1}.xsp" />
							<map:serialize type="html"/>
			</map:match>
			
			<!-- ========================================= -->
			<!-- Form target which performs auth service   -->
			<!-- ========================================= -->
			<map:match pattern="login">
				<map:act type="auth-login">
					<map:parameter name="handler" value="beyarecords"/>
						<map:parameter name="parameter_name" value="{request-param:user}"/>
							<map:parameter name="parameter_password" value="{request-param:pass}"/>
								<map:redirect-to uri="main" />
				</map:act>
				<!-- authentication failed: -->
				<map:redirect-to uri="login.html" />
			</map:match>
			
			<!-- ====================== -->
			<!-- Register new user page -->
			<!-- ====================== -->
			
			<map:match pattern="register_newUser.xsp">
				<map:act type="validator">
					<map:parameter name="descriptor" value="context://beyarecords/content/def/form_validation-def.xml"/>
						<map:parameter name="validate-set" value="newUser" />
							<map:generate type="serverpages" src="xsp/register_newUser.xsp">
								<map:parameter name="fname" value="{request-param:fname}" />
								<map:parameter name="lname" value="{request-param:lname}" />	
								<map:parameter name="address1" value="{request-param:address1}" />
								<map:parameter name="address2" value="{request-param:address2}" />	
								<map:parameter name="address3" value="{request-param:address3}" />	
								<map:parameter name="postcode" value="{request-param:postcode}" />
								<map:parameter name="country" value="{request-param:country}" />
								<map:parameter name="email" value="{request-param:email}" />
								<map:parameter name="hphone" value="{request-param:hphone}" />
								<map:parameter name="mphone" value="{request-param:mphone}" />
								<map:parameter name="user" value="{request-param:user}" />
								<map:parameter name="pass" value="{request-param:pass}" />
								<map:parameter name="newUser" value="true" />	
							</map:generate>
					<map:serialize type="html"/>
				</map:act>
				<map:generate type="serverpages" src="xsp/register_newUser.xsp">
					<map:parameter name="fname" value="{request-param:fname}" />
					<map:parameter name="lname" value="{request-param:lname}" />	
					<map:parameter name="address1" value="{request-param:address1}" />
					<map:parameter name="address2" value="{request-param:address2}" />	
					<map:parameter name="address3" value="{request-param:address3}" />	
					<map:parameter name="postcode" value="{request-param:postcode}" />
					<map:parameter name="country" value="{request-param:country}" />
					<map:parameter name="email" value="{request-param:email}" />
					<map:parameter name="hphone" value="{request-param:hphone}" />
					<map:parameter name="mphone" value="{request-param:mphone}" />
					<map:parameter name="user" value="{request-param:user}" />
					<map:parameter name="pass" value="{request-param:pass}" />
					<map:parameter name="newUser" value="false" />	
				</map:generate>
					<map:serialize type="html"/>
			</map:match>
			
			<!-- ================ -->
			<!-- Protected area   -->
			<!-- ================ -->
			<map:match pattern="main">
				<map:act type="auth-protect">
					<map:parameter name="handler" value="beyarecords"/> 
						<map:aggregate element="home">
							<map:part src="cocoon:/support/beya-menu" />
								<map:part src="cocoon:/support/contract-summary" />
									<map:part src="context://beyarecords/content/adv-xyz-01.xml" />
										<map:part src="cocoon:/support/banner" />
						</map:aggregate>
						
						<map:transform type="xslt" src="style/home-page.xsl" />
					<map:serialize type="html" />
				</map:act>
			</map:match>
				
			<map:match pattern="support/beya-menu">
				<map:act type="auth-protect">
					<map:parameter name="handler" value="beyarecords"/> 
						<map:generate type="serverpages" src="xsp/beya-menu2.xsp"/>
							<map:serialize type="html"/>
				</map:act>
			</map:match>
			
			<map:match pattern="support/contract-summary">
				<map:act type="auth-protect">
					<map:parameter name="handler" value="beyarecords"/> 
						<map:generate type="serverpages" src="xsp/contract-summary2.xsp" />
							<map:serialize type="xml"/>
				</map:act>
			</map:match>
			
			<!-- ===================== -->
			<!-- pages for the frame   -->
			<!-- ===================== -->
			<map:match pattern="frame/*/*">
				<map:act type="auth-protect">
					<map:parameter name="handler" value="beyarecords"/> 
						<map:generate type="serverpages" src="xsp/{../1}.xsp" />
							<map:transform type="xslt" src="style/{../2}.xsl" />
								<map:serialize type="xml"/>
				</map:act>
			</map:match>
			
			<map:match pattern="support/banner">
				<map:act type="auth-protect">
					<map:parameter name="handler" value="beyarecords"/> 
						<map:generate type="serverpages" src="xsp/banner.xsp"/>
							<map:serialize type="html"/>
				</map:act>
			</map:match>
			
			
			<!-- ========================================= -->
			<!-- Logout link which invalidates the session -->
			<!-- ========================================= -->
			<map:match pattern="logout">
				<map:act type="auth-protect">
					<map:parameter name="handler" value="beyarecords"/> 
						<map:act type="auth-logout"/>
				</map:act>
			<map:redirect-to uri="login.html"/>
			</map:match>
			
			<!-- for testing purposes only -->
			<map:match pattern="test">
				<map:generate type="serverpages" src="content/test.xml"/>
				<map:serialize/> 
			</map:match>
			
		</map:pipeline>
		
		<!-- ========================================= -->
		<!--			Authentication				   -->
		<!-- ========================================= -->
		<map:pipeline internal-only="true">
		<!-- This is the authentication resource -->
			<map:match pattern="authenticate">
				<map:generate type="auth" src=""/>
					<map:serialize type="xml"/>
			</map:match>
			
		</map:pipeline>
		
	</map:pipelines>
</map:sitemap>