taylor 2004/04/09 00:55:56
Modified: tutorial/xdocs/2 index.xml
tutorial/xdocs/1 index.xml
tutorial/xdocs navigation.xml
Added: tutorial/xdocs/3 anonymous.xml references.xml
authenticated.xml panes.xml deploy.xml
navigations.xml menus.xml layout.xml index.xml
tutorial/xdocs/images image003-4.jpg image003-3.jpg
image003-2.jpg image003-1.jpg
Log:
chapter 3 of tutorial converted to xdocs
PR:
Obtained from:
Submitted by:
Reviewed by:
CVS: ----------------------------------------------------------------------
CVS: PR:
CVS: If this change addresses a PR in the problem report tracking
CVS: database, then enter the PR number(s) here.
CVS: Obtained from:
CVS: If this change has been taken from another system, such as NCSA,
CVS: then name the system in this line, otherwise delete it.
CVS: Submitted by:
CVS: If this code has been contributed to Apache by someone else; i.e.,
CVS: they sent us a patch or a new module, then include their name/email
CVS: address here. If this is your work then delete this line.
CVS: Reviewed by:
CVS: If we are doing pre-commit code reviews and someone else has
CVS: reviewed your changes, include their name(s) here.
CVS: If you have not had it reviewed then delete this line.
Revision Changes Path
1.1 jakarta-jetspeed/tutorial/xdocs/3/anonymous.xml
Index: anonymous.xml
===================================================================
<?xml version="1.0"?>
<!--
Copyright 2004 The Apache Software Foundation
Licensed 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.
-->
<document>
<properties>
<author email="[EMAIL PROTECTED]">David Sean Taylor</author>
<title>Anonymous User</title>
</properties>
<body>
<section name="Anonymous User">
<p>
Anonymous users are users who have not been authenticated.
The anonymous user interface is the default user interface displayed to users who
have not yet signed on.
</p>
<p>
Some sites do not allow anonymous users to see anything on the site.
Perhaps you only want to display a single portlet, or perhaps a portlet with static
company information,
a Signup portlet, and a Returning-User logon portlet. It all depends on your
requirements.
</p>
<p>
The requirements for JPortal Tutorial are very simple: its a tutorial.
We want to show all the tutorial portlets to everyone.
We also want to show off some of the portlets that come with Jetspeed out of the
box.
It would be confusing to put all the portlets on one page all at once, so lets group
together the
portlets based on categories such as "Basic tutorials", "Advanced tutorials",
"Jetspeed portlets",
and "Referenced portlets". It would be nice to group these four categories into a
manageable user interface components.
Here are our four menu choices:
</p>
<p>
<ul>
<li>Basic Tutorials</li>
<li>Advanced Tutorials</li>
<li>Jetspeed Portlets</li>
<li>Referenced Portlets</li>
</ul>
</p>
</section>
</body>
</document>
1.1 jakarta-jetspeed/tutorial/xdocs/3/references.xml
Index: references.xml
===================================================================
<?xml version="1.0"?>
<!--
Copyright 2004 The Apache Software Foundation
Licensed 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.
-->
<document>
<properties>
<author email="[EMAIL PROTECTED]">David Sean Taylor</author>
<title>PSML References</title>
</properties>
<body>
<section name="PSML References">
<p>
For this is example, 3 of the panes are empty. The fourth pane contains PSML
References.
</p>
<p>
<a href='http://portals.apache.org/jetspeed-1/psml.html#PSML%20Locator'>PSML
References</a>
are used to include an entire PSML resource into another PSML resource.
This is useful for defining groups of markup once, and then sharing that markup in
one or more PSML resources.
The reference path is called a PSML resource locator.
In our example, we reference two shared group resources as the content of the fourth
pane.
</p>
<source>
<![CDATA[
<portlets id="104">
<controller name="OneColumn"/>
<metainfo>
<title>Referenced Portlets</title>
</metainfo>
<reference path="group/apache/media-type/html/page/default"/>
<reference path="group/Jetspeed/media-type/html/page/default"/>
</portlets>
]]>
</source>
<p>
These two PSML resources are included with the Jetspeed distribution.
In the first case, the locator specifies that it is a group resource,
for the media type HTML, and the name of the resource page is default.
Shared PSML resources are useful for defining common layout definitions
that can be used by all users of the system.
</p>
</section>
</body>
</document>
1.1 jakarta-jetspeed/tutorial/xdocs/3/authenticated.xml
Index: authenticated.xml
===================================================================
<?xml version="1.0"?>
<!--
Copyright 2004 The Apache Software Foundation
Licensed 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.
-->
<document>
<properties>
<author email="[EMAIL PROTECTED]">David Sean Taylor</author>
<title>Authenticated User</title>
</properties>
<body>
<section name="Authenticated User">
<p>
When a user logs on, the portal displays content customized specific to the user.
</p>
<p>
Logon as username <b>turbine</b>, with the password = turbine.
You will see basically the same panes as defined for the anonymous user.
However, this time we use a menu that is displayed on the left-side of the page.
</p>
<source>
<![CDATA[
<control name="MenuControl"/>
<controller name="CardPortletController"/>
]]>
</source>
</section>
</body>
</document>
1.1 jakarta-jetspeed/tutorial/xdocs/3/panes.xml
Index: panes.xml
===================================================================
<?xml version="1.0"?>
<!--
Copyright 2004 The Apache Software Foundation
Licensed 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.
-->
<document>
<properties>
<author email="[EMAIL PROTECTED]">David Sean Taylor</author>
<title>Customizing Panes with the Customizer</title>
</properties>
<body>
<section name="Customizing Panes with the Customizer">
<p>
When customizing panes, you manipulate the layout of portlets (or references) on the
pane.
</p>
<p>
Here is a screen shot of the Jetspeed Portlets pane from the Turbine user page,
containing four portlets:
</p>
<img border='0' width='553' height='283' src="../images/image003-2.jpg"/>
<p>
And here is the customizer for that pane:
</p>
<img border='0' width='553' height='300' src="../images/image003-3.jpg"/>
<p>
Clicking the add portlet button allows you to select a portlet from the Portlet
Browser.
(we will cover the Portlet browser in tutorial 5).
The layout can be one of the controllers described above (Single Column, Single
Row, Two Column, Three Column).
</p>
<p>
The position of portlet entries can be moved up or down.
Portlets may also be deleted from the pane.
The pane may have a different skin assigned to it.
You can change the control associated with each portlet entry.
</p>
</section>
</body>
</document>
1.1 jakarta-jetspeed/tutorial/xdocs/3/deploy.xml
Index: deploy.xml
===================================================================
<?xml version="1.0"?>
<!--
Copyright 2004 The Apache Software Foundation
Licensed 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.
-->
<document>
<properties>
<author email="[EMAIL PROTECTED]">David Sean Taylor</author>
<title>Deploy</title>
</properties>
<body>
<section name="Deploy">
<p>
To deploy the system type:
</p>
<source>
maven deploy
-- or --
maven hotdeploy
</source>
<p>
Use hotdeploy if you have already deployed the system once.
This simply saves some time in packaging the JPortal deployment.
Next point your browser at:
</p>
<p>
<a
href='http://localhost:8080/jportal/portal'>http://localhost:8080/jportal/portal</a>
</p>
<p>
You should see the new site menus for the anonymous user:
</p>
<p>
<img border='0' width='554' height='89' src="../images/image003-4.jpg"/>
</p>
</section>
</body>
</document>
1.1 jakarta-jetspeed/tutorial/xdocs/3/navigations.xml
Index: navigations.xml
===================================================================
<?xml version="1.0"?>
<!--
Copyright 2004 The Apache Software Foundation
Licensed 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.
-->
<document>
<properties>
<author email="[EMAIL PROTECTED]">David Sean Taylor</author>
<title>PSML Navigational Components</title>
</properties>
<body>
<section name="PSML Navigational Components">
<p>
Jetspeed provides layout components for defining the layout of a portal page.
In this tutorial we will concentrate on components used to create navigational
menus.
Components are defined by editing the PSML file with a text editor,
or using the Jetspeed Customizer, which makes portal layout much easier.
</p>
<p>
Before seeing how easy it is with the customizer, look at the PSML file for the
anonymous user.
</p>
<source>
<![CDATA[
<?xml version="1.0" encoding="iso-8859-1"?>
<portlets id="100" xmlns="http://xml.apache.org/jetspeed/2000/psml">
<metainfo>
<title>Welcome Page</title>
</metainfo>
<control name="TabControl"/>
<controller name="CardPortletController"/>
<portlets id="101">
<metainfo>
<title>Basic Tutorials</title>
</metainfo>
</portlets>
<portlets id="102">
<metainfo>
<title>Advanced Tutorials</title>
</metainfo>
</portlets>
<portlets id="103">
<metainfo>
<title>Jetspeed Portlets</title>
</metainfo>
</portlets>
<portlets id="104">
<controller name="OneColumn"/>
<metainfo>
<title>Referenced Portlets</title>
</metainfo>
<reference path="group/apache/media-type/html/page/default"/>
<reference path="group/Jetspeed/media-type/html/page/default"/>
</portlets>
</portlets>
]]>
</source>
<p>
There are several types of elements in the layout of a PSML file.
Here are the common navigational components:
</p>
<source>
<![CDATA[
<portlets> defines a pane
<controller> defines the type of layout. Must be a card controller for menus
<control> defines the type of menu . Must be used with a card controller
]]>
</source>
<p>
For each menu option, we specify a pane. <b>Panes</b> hold collections of portlets.
The portlets on a pane have their own layout.
We will discuss that in the next section.
A pane is specified like this:
</p>
<source>
<![CDATA[
<portlets id="101">
<metainfo>
<title>Basic Tutorials</title>
</metainfo>
</portlets>
]]>
</source>
<p>
The <b>title</b> tag is used as the menu option text.
</p>
<p>
<b>Panes</b> are a special kind of a controller.
There is one important difference between a pane (PanedPortletController) and other
controllers:
the pane does not render all of its managed portlets at the same time.
That is why it needs to be used with a menu control,
allowing us to navigate to the appropriate pane while hiding the other panes.
</p>
<p>
<b>Controls</b> are decorators around a pane or portlet.
In the case of a pane, it is always used in combination with a portlet controller.
There are two types of controls for panes:
</p>
<source>
<![CDATA[
1. TabControl - puts menu options across the top of the page
2. MenuControl - puts menu options on the left-side of the page
]]>
</source>
<p>
Here is the PSML for a Tab Control and Card Controller (layout):
</p>
<source>
<![CDATA[
<control name="TabControl"/>
<controller name="CardPortletController"/>
]]>
</source>
<p>
Controls are sometimes used in combination with controllers.
<b>Controllers</b> define the layout of a pane, such as the number of columns and
rows.
When defining menus, you must select the CardPortletController,
which enables collections of portlets to occupy the same page,
and is used in combination with the a TabControl or MenuControl to create menu
components.
These collections of portlets are called <b>panes</b>.
</p>
<p>
Each of the four menu options correspond to a pane.
A pane is configured in PSML using the <b>portlets</b> tag.
The <b>metainfo</b> tag defines the title of the pane which is displayed in the menu.
</p>
</section>
</body>
</document>
1.1 jakarta-jetspeed/tutorial/xdocs/3/menus.xml
Index: menus.xml
===================================================================
<?xml version="1.0"?>
<!--
Copyright 2004 The Apache Software Foundation
Licensed 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.
-->
<document>
<properties>
<author email="[EMAIL PROTECTED]">David Sean Taylor</author>
<title>Customizing Menus with the Customizer</title>
</properties>
<body>
<section name="Customizing Menus with the Customizer">
<p>
The customizer is a lot easier to use. Lets look at a screen shot of the customizer.
Here we customizing the Turbine user page. You can see the four menu options
listed.
</p>
<p>
When customizing menus, you can add panes to the menu.
</p>
<p>
Clicking the add pane button adds another menu option.
The layout has MenuPane selected, which could be switched to
TabPane (combination of TabControl + CardPortletController).
With the Customizer, menu options can be moved up or down, added and deleted.
</p>
<img border='0' width='553' height='186' src="../images/image003-1.jpg"/>
<p>
Once the menus and panes are defined, you can then move on to placing portlets on
the
panes by clicking on the specific menu option, which will then bring up a
pane customizer for placing portlets. But first, lets have a look at site security.
</p>
</section>
</body>
</document>
1.1 jakarta-jetspeed/tutorial/xdocs/3/layout.xml
Index: layout.xml
===================================================================
<?xml version="1.0"?>
<!--
Copyright 2004 The Apache Software Foundation
Licensed 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.
-->
<document>
<properties>
<author email="[EMAIL PROTECTED]">David Sean Taylor</author>
<title>Layout PSML Components for Portlets</title>
</properties>
<body>
<section name="Layout PSML Components for Portlets">
<p>
We saw how menus and panes define the navigational layout of a site.
Here we will look at how to layout portlets on a particular pane.
A pane is the container for portlets.
Inside this container we have the choice of laying out portlets in a number of
designs.
This is accomplished using portlet <b>controllers</b>.
In Tutorial 3, we only define portlets in the third pane <b>Jetspeed Portlets</b>.
</p>
<p>
There are a fair number of controllers available for portlets:
</p>
<source>
<![CDATA[
1. One Column - All portlets flow down a single column on the pane
2. Single Row - All portlets flow across the pane in a single row
3. Three Column - The portlets flow down 3 columns, given column width percentages:
a. 25/50/25
b. 33/33/33
4. Two Column - The portlets flow down 2 columns, given column width percentages:
a. 50/50
b. 25/75
c. 75/25
]]>
</source>
<p>
Lets look at the pane definition for the Turbine default resource.
Here we define four portlets to occupy this pane using a TwoColumns controller:
</p>
<source>
<![CDATA[
<portlets id="103">
<metainfo>
<title>Jetspeed Portlets</title>
</metainfo>
<controller name="TwoColumns"/>
<entry parent="BBCFrontPage">
<layout>
<property name="column" value="0"/>
<property name="row" value="0"/>
</layout>
</entry>
<entry parent="WeatherPortlet">
<layout>
<property name="column" value="0"/>
<property name="row" value="1"/>
</layout>
<parameter name="weather_city_info" value="US/AZ/Phoenix"/>
<parameter name="weather_style" value="infobox"/>
</entry>
<entry parent="StockQuote">
<layout>
<property name="column" value="1"/>
<property name="row" value="0"/>
</layout>
</entry>
<entry parent="DatabaseBrowserTest">
<layout>
<property name="column" value="1"/>
<property name="row" value="1"/>
</layout>
<parameter name="sql" value="select * from coffees"/>
<parameter name="windowSize" value="10"/>
</entry>
</portlets>
]]>
</source>
<p>
Notice that you can specify the location of the portlet using the <b>layout</b>
element and the column and row properties.
This is a task that is normally better handled by the customizer:
</p>
<source>
<![CDATA[
<layout>
<property name="column" value="1"/>
<property name="row" value="0"/>
</layout>
]]>
</source>
<p>
If its not already obvious, the <b>entry</b> element is used to reference a portlet.
We will have a closer look at the entry tag in tutorial 5.
</p>
<p>
There are controls that can be applied to portlet entries as decorators.
When applied to a portlet entry, controls define the window around the portlet.
Here are some typical controls:
</p>
<source>
<![CDATA[
1. Boxed Title Control draws a box around the portlet, adds a title bar and action
icons.
2. Clear Portlet Control draws no decorators
3. Simple Titled Control adds a title bar and action icons, but no box
]]>
</source>
<p>
Finally there are default settings for controls, controllers and skins which are
defined
in <b>JetspeedResources.properties.merge</b>.
</p>
<source>
<![CDATA[
services.PortalToolkit.default.control = TitlePortletControl
services.PortalToolkit.default.controller = OneColumn
services.PortalToolkit.default.skin = orangegrey
]]>
</source>
<p>
Portlet entries which do not have a control specified will use the default control.
In the default Jetspeed deployment, this is the control described as '3.' above, the
Simple Title Control.
</p>
</section>
</body>
</document>
1.1 jakarta-jetspeed/tutorial/xdocs/3/index.xml
Index: index.xml
===================================================================
<?xml version="1.0"?>
<!--
Copyright 2004 The Apache Software Foundation
Licensed 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.
-->
<document>
<properties>
<author email="[EMAIL PROTECTED]">David Sean Taylor</author>
<title>Site Map</title>
</properties>
<body>
<section name="Site Map - Getting Started">
<p>
The next step is for us to layout the portal site map.
We do this using a specialized portal XML-derivative called <a
href='http://portals.apache.org/jetspeed-1/psml.html'>PSML</a>
(Portlet Structure Mark-up Language).
</p>
<p>
When designing your portal, you should consider how users will navigate around your
site.
In our example portal, we will allow for anonymous users to access the site,
and also for authenticated users to access areas of the site where they are
authorized
(more on Site Security in the next tutorial).
</p>
<p>
In this tutorial, we will:
</p>
<p>
<ul>
<li>1. <a href='anonymous.html'>Create the anonymous PSML resource with a Tab
control</a></li>
<li>2. <a href='navigations.html'>Learn about PSML navigational components</a></li>
<li>3. <a href='references.html'>PSML References</a></li>
<li>4. <a href='authenticated.html'>Create an authenticated user PSML resource with
a Menu control</a></li>
<li>5. <a href='layout.html'>Learn about PSML layout components for portlets</a></li>
<li>6. <a href='menus.html'>Customize Menus with the Customizer</a></li>
<li>7. <a href='panes.html'>Customize Panes with the Customizer</a></li>
<li>8. <a href='deploy.html'>Deploy</a></li>
</ul>
</p>
<p>
Lets get started. From the JPortal /tutorial distribution root directory, type:
</p>
<hr/>
<code>
maven -Dtutorial=3 jetspeed:war
</code>
<hr/>
<p>
Recommend bringing up these configuration files in your editor:
</p>
<p>
<hr/>
<code>
<ul>
<li>1. tutorials/3/anon/html/default.psml</li>
<li>2. tutorials/3/turbine/html/default.psml</li>
</ul>
</code>
<hr/>
</p>
<p>
since we will reference them in tutorial 3.
</p>
</section>
</body>
</document>
1.4 +1 -1 jakarta-jetspeed/tutorial/xdocs/2/index.xml
Index: index.xml
===================================================================
RCS file: /home/cvs/jakarta-jetspeed/tutorial/xdocs/2/index.xml,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- index.xml 9 Apr 2004 05:42:47 -0000 1.3
+++ index.xml 9 Apr 2004 07:55:55 -0000 1.4
@@ -43,7 +43,7 @@
</ul>
</p>
<p>
-Lets get started. From the JPortal distribution root directory, type:
+Lets get started. From the JPortal /tutorial distribution root directory, type:
</p>
<hr/>
<code>
1.7 +1 -1 jakarta-jetspeed/tutorial/xdocs/1/index.xml
Index: index.xml
===================================================================
RCS file: /home/cvs/jakarta-jetspeed/tutorial/xdocs/1/index.xml,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- index.xml 9 Apr 2004 05:42:47 -0000 1.6
+++ index.xml 9 Apr 2004 07:55:55 -0000 1.7
@@ -43,7 +43,7 @@
</ul>
</p>
<p>
-Lets get started. From the JPortal distribution root directory, type:
+Lets get started. From the JPortal /tutorial distribution root directory, type:
</p>
<hr/>
<code>
1.1 jakarta-jetspeed/tutorial/xdocs/images/image003-4.jpg
<<Binary file>>
1.1 jakarta-jetspeed/tutorial/xdocs/images/image003-3.jpg
<<Binary file>>
1.1 jakarta-jetspeed/tutorial/xdocs/images/image003-2.jpg
<<Binary file>>
1.1 jakarta-jetspeed/tutorial/xdocs/images/image003-1.jpg
<<Binary file>>
1.10 +2 -2 jakarta-jetspeed/tutorial/xdocs/navigation.xml
Index: navigation.xml
===================================================================
RCS file: /home/cvs/jakarta-jetspeed/tutorial/xdocs/navigation.xml,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- navigation.xml 9 Apr 2004 05:42:48 -0000 1.9
+++ navigation.xml 9 Apr 2004 07:55:56 -0000 1.10
@@ -56,8 +56,8 @@
<menu name="3. Site Map">
<item name="Intro" href="/3/index.html"/>
<item name="Anonymous User" href="/3/anonymous.html"/>
- <item name="PSML Navigation" href="/3/psml-nav.html"/>
- <item name="PSML References" href="/3/psml-refs.html"/>
+ <item name="PSML Navigation" href="/3/navigations.html"/>
+ <item name="PSML References" href="/3/references.html"/>
<item name="Authenticated User" href="/3/authenticated.html"/>
<item name="Layout Components" href="/3/layout.html"/>
<item name="Customizing Menus" href="/3/menus.html"/>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]