Index: /WAeUP_CMS/branches/waeup_cms_sandbox/Extensions/Install.py
===================================================================
--- /WAeUP_CMS/branches/waeup_cms_sandbox/Extensions/Install.py	(revision 275)
+++ /WAeUP_CMS/branches/waeup_cms_sandbox/Extensions/Install.py	(revision 275)
@@ -0,0 +1,57 @@
+#  WAeUP CMS Product
+#  Archetypes based content types for the West African e-University Project web portal
+#  Copyright (c) 2005 WAeUP
+#
+#  This program is free software; you can redistribute it and/or modify
+#  it under the terms of the GNU General Public License as published by
+#  the Free Software Foundation; either version 2 of the License, or
+#  (at your option) any later version.
+#
+#  This program is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#  GNU General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License
+#  along with this program; if not, write to the Free Software
+#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+#
+"""
+
+$Id: $
+"""
+__author__  = ''
+__docformat__ = 'restructuredtext'
+
+from StringIO import StringIO
+
+from Products.waeup_cms.config import PROJECTNAME, GLOBALS
+
+from Products.Archetypes import listTypes
+from Products.Archetypes.Extensions.utils import installTypes
+from Products.Archetypes.Extensions.utils import install_subskin
+from Products.CMFCore.utils import getToolByName
+
+def install(self):
+    out = StringIO()
+
+    typeInfo = listTypes(PROJECTNAME)
+    installTypes(self, out,
+                 typeInfo,
+                 PROJECTNAME)
+
+    install_subskin(self, out, GLOBALS)
+    registerStylesheets(self, out)
+
+
+
+
+    print >> out, 'Successfully installed %s' % PROJECTNAME
+
+    return out.getvalue()
+
+def registerStylesheets(self, out):
+    csstool = getToolByName(self, 'portal_css')
+    csstool.registerStylesheet('waeup.css', media="all", rendering='import')
+    print >> out, 'installed the Plone additional styles'
+
Index: /WAeUP_CMS/branches/waeup_cms_sandbox/Extensions/__init__.py
===================================================================
--- /WAeUP_CMS/branches/waeup_cms_sandbox/Extensions/__init__.py	(revision 275)
+++ /WAeUP_CMS/branches/waeup_cms_sandbox/Extensions/__init__.py	(revision 275)
@@ -0,0 +1,25 @@
+#  WAeUP CMS Product
+#  Archetypes based content types for the West African e-University Project web portal
+#  Copyright (c) 2005 WAeUP
+#
+#  This program is free software; you can redistribute it and/or modify
+#  it under the terms of the GNU General Public License as published by
+#  the Free Software Foundation; either version 2 of the License, or
+#  (at your option) any later version.
+#
+#  This program is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#  GNU General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License
+#  along with this program; if not, write to the Free Software
+#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+#
+"""
+
+$Id: $
+"""
+__author__  = ''
+__docformat__ = 'restructuredtext'
+
Index: /WAeUP_CMS/branches/waeup_cms_sandbox/Extensions/changeuseractions.py
===================================================================
--- /WAeUP_CMS/branches/waeup_cms_sandbox/Extensions/changeuseractions.py	(revision 275)
+++ /WAeUP_CMS/branches/waeup_cms_sandbox/Extensions/changeuseractions.py	(revision 275)
@@ -0,0 +1,112 @@
+#  WAeUP CMS Product
+#  Archetypes based content types for the West African e-University Project web portal
+#  Copyright (c) 2005 WAeUP
+#
+#  This program is free software; you can redistribute it and/or modify
+#  it under the terms of the GNU General Public License as published by
+#  the Free Software Foundation; either version 2 of the License, or
+#  (at your option) any later version.
+#
+#  This program is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#  GNU General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License
+#  along with this program; if not, write to the Free Software
+#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+#
+
+from Products.CMFCore.utils import getToolByName
+
+def modifyMTool(self):
+    mt=getToolByName(self, 'portal_membership')
+
+    acts=list(mt.listActions())
+    selection=[acts.index(a) for a in acts]
+    mt.deleteActions(selection)
+
+    mt.addAction('mystuff'
+                ,'My Folder'
+                ,'string:${portal/portal_membership/getHomeUrl}/folder_contents'
+                ,'python: member and portal.portal_membership.getHomeFolder()'
+                ,'View'
+                ,'user'
+                , visible=1)
+    mt.addAction('preferences'
+                ,'My Preferences'
+                ,'string:${portal_url}/plone_memberprefs_panel'
+                ,'member'
+                ,'View'
+                ,'user'
+                , visible=1)
+    mt.addAction('login'
+                ,'Secure Login'
+                ,'python:portal_url.replace("http:","https:")+"/login_form"'
+                ,'not: member'
+                ,'View'
+                ,'user'
+                , visible=1)
+    mt.addAction('login'
+                ,'Unsecure Login'
+                ,'python:portal_url.replace("https:","http:")+"/login_form"'
+                ,'not: member'
+                ,'View'
+                ,'user'
+                , visible=1)
+    mt.addAction('plone_setup'
+                ,'Site Setup'
+                ,'string:${portal_url}/plone_control_panel'
+                ,''
+                ,'Manage portal'
+                ,'user'
+                , visible=1)
+    mt.addAction('svnrepos'
+                ,'SVN Repositories'
+                ,'string:https://svn.waeup.org/repos/'
+                ,'member'
+                ,'View'
+                ,'user'
+                , visible=0)
+    mt.addAction('svninter'
+                ,'SVN Web Interface'
+                ,'string:https://svn.waeup.org/'
+                ,'member'
+                ,'View'
+                ,'user'
+                , visible=1)
+    mt.addAction('usermanagement'
+                ,'User Management System'
+                ,'string:https://waeup.org:20000/'
+                ,'member'
+                ,'View'
+                ,'user'
+                , visible=1)
+    mt.addAction('ldap'
+                ,'LDAP Server'
+                ,'string:https://ldap.waeup.org/'
+                ,'member'
+                ,'View'
+                ,'user'
+                , visible=1)
+    mt.addAction('orgmail'
+                ,'Org Mailing List'
+                ,'string:http://lists.waeup.org/mailman/listinfo/org'
+                ,''
+                ,'View'
+                ,'user'
+                , visible=1)
+    mt.addAction('webmail'
+                ,'Webmail'
+                ,'string:https://mail.waeup.org'
+                ,'member'
+                ,'View'
+                ,'user'
+                , visible=1)
+    mt.addAction('logout'
+                ,'Log out'
+                ,'python:portal_url.replace("https:","http:")+"/logout"'
+                ,'member'
+                ,'View'
+                ,'user'
+                , visible=1)
Index: /WAeUP_CMS/branches/waeup_cms_sandbox/LICENSE.GPL
===================================================================
--- /WAeUP_CMS/branches/waeup_cms_sandbox/LICENSE.GPL	(revision 275)
+++ /WAeUP_CMS/branches/waeup_cms_sandbox/LICENSE.GPL	(revision 275)
@@ -0,0 +1,225 @@
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
Index: /WAeUP_CMS/branches/waeup_cms_sandbox/__init__.py
===================================================================
--- /WAeUP_CMS/branches/waeup_cms_sandbox/__init__.py	(revision 275)
+++ /WAeUP_CMS/branches/waeup_cms_sandbox/__init__.py	(revision 275)
@@ -0,0 +1,55 @@
+#  WAeUP CMS Product
+#  Archetypes based content types for the West African e-University Project web portal
+#  Copyright (c) 2005 WAeUP
+#
+#  This program is free software; you can redistribute it and/or modify
+#  it under the terms of the GNU General Public License as published by
+#  the Free Software Foundation; either version 2 of the License, or
+#  (at your option) any later version.
+#
+#  This program is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#  GNU General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License
+#  along with this program; if not, write to the Free Software
+#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+#
+"""
+
+$Id: $
+"""
+__author__  = ''
+__docformat__ = 'restructuredtext'
+
+from Products.waeup_cms.config import SKINS_DIR
+from Products.waeup_cms.config import GLOBALS
+from Products.waeup_cms.config import PROJECTNAME
+
+from Globals import package_home
+from Products.CMFCore import utils
+from Products.CMFCore.DirectoryView import registerDirectory
+from Products.Archetypes.public import listTypes
+from Products.Archetypes.public import process_types
+
+import Products.waeup_cms.contents
+
+registerDirectory(SKINS_DIR, GLOBALS)
+
+def initialize(context):
+
+
+    listOfTypes = listTypes(PROJECTNAME)
+
+    content_types, constructors, ftis = process_types(
+        listOfTypes,
+        PROJECTNAME)
+
+    # other
+    utils.ContentInit(
+        PROJECTNAME + ' Content',
+        content_types = content_types,
+        extra_constructors = constructors,
+        fti = ftis,
+        ).initialize(context)
Index: /WAeUP_CMS/branches/waeup_cms_sandbox/config.py
===================================================================
--- /WAeUP_CMS/branches/waeup_cms_sandbox/config.py	(revision 275)
+++ /WAeUP_CMS/branches/waeup_cms_sandbox/config.py	(revision 275)
@@ -0,0 +1,35 @@
+#  WAeUP CMS Product
+#  Archetypes based content types for the West African e-University Project web portal
+#  Copyright (c) 2005 WAeUP
+#
+#  This program is free software; you can redistribute it and/or modify
+#  it under the terms of the GNU General Public License as published by
+#  the Free Software Foundation; either version 2 of the License, or
+#  (at your option) any later version.
+#
+#  This program is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#  GNU General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License
+#  along with this program; if not, write to the Free Software
+#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+#
+"""configuration file
+
+$Id: $
+"""
+__author__  = ''
+__docformat__ = 'restructuredtext'
+
+
+from Products.CMFCore import CMFCorePermissions
+from Products.Archetypes.public import DisplayList
+
+PROJECTNAME = "WAEUP"
+SKINS_DIR = 'skins'
+
+GLOBALS = globals()
+
+
Index: /WAeUP_CMS/branches/waeup_cms_sandbox/contents/__init__.py
===================================================================
--- /WAeUP_CMS/branches/waeup_cms_sandbox/contents/__init__.py	(revision 275)
+++ /WAeUP_CMS/branches/waeup_cms_sandbox/contents/__init__.py	(revision 275)
@@ -0,0 +1,25 @@
+#  WAeUP CMS Product
+#  Archetypes based content types for the West African e-University Project web portal
+#  Copyright (c) 2005 WAeUP
+#
+#  This program is free software; you can redistribute it and/or modify
+#  it under the terms of the GNU General Public License as published by
+#  the Free Software Foundation; either version 2 of the License, or
+#  (at your option) any later version.
+#
+#  This program is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#  GNU General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License
+#  along with this program; if not, write to the Free Software
+#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+#
+"""
+
+$Id: $
+"""
+__author__  = ''
+__docformat__ = 'restructuredtext'
+
Index: /WAeUP_CMS/branches/waeup_cms_sandbox/interfaces/__init__.py
===================================================================
--- /WAeUP_CMS/branches/waeup_cms_sandbox/interfaces/__init__.py	(revision 275)
+++ /WAeUP_CMS/branches/waeup_cms_sandbox/interfaces/__init__.py	(revision 275)
@@ -0,0 +1,25 @@
+#  WAeUP CMS Product
+#  Archetypes based content types for the West African e-University Project web portal
+#  Copyright (c) 2005 WAeUP
+#
+#  This program is free software; you can redistribute it and/or modify
+#  it under the terms of the GNU General Public License as published by
+#  the Free Software Foundation; either version 2 of the License, or
+#  (at your option) any later version.
+#
+#  This program is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#  GNU General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License
+#  along with this program; if not, write to the Free Software
+#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+#
+"""
+
+$Id: $
+"""
+__author__  = ''
+__docformat__ = 'restructuredtext'
+
Index: /WAeUP_CMS/branches/waeup_cms_sandbox/skins/WAEUP/base_properties.props
===================================================================
--- /WAeUP_CMS/branches/waeup_cms_sandbox/skins/WAEUP/base_properties.props	(revision 275)
+++ /WAeUP_CMS/branches/waeup_cms_sandbox/skins/WAEUP/base_properties.props	(revision 275)
@@ -0,0 +1,32 @@
+backgroundColor:string=White
+borderStyle:string=solid
+borderStyleAnnotations:string=dashed
+borderWidth:string=1px
+columnOneWidth:string=16em
+columnTwoWidth:string=16em
+contentViewBackgroundColor:string=#FF8989
+contentViewBorderColor:string=#5A5A5A
+contentViewFontColor:string=black
+discreetColor:string=#76797c
+evenRowBackgroundColor:string=#E6E6E6
+fontBaseSize:string=69%
+fontColor:string=Black
+fontFamily:string="Lucida Grande", Verdana, Lucida, Helvetica, Arial, sans-serif
+fontSmallSize:string=85%
+globalBackgroundColor:string=white
+globalBorderColor:string=#5A5A5A
+globalFontColor:string=black
+headingFontFamily:string="Lucida Grande", Verdana, Lucida, Helvetica, Arial, sans-serif
+helpBackgroundColor:string=#ffffe1
+inputFontColor:string=Black
+linkActiveColor:string=Red
+linkColor:string=#00097C
+linkVisitedColor:string=#00097C
+logoName:string=logo.jpg
+notifyBackgroundColor:string=#ffce7b
+notifyBorderColor:string=#ffa500
+oddRowBackgroundColor:string=transparent
+plone_skin:string=Plone Default
+portalMinWidth:string=70em
+textTransform:string=none
+title:string=Plone's color, font, logo and border defaults
Index: /WAeUP_CMS/branches/waeup_cms_sandbox/skins/WAEUP/footer.pt
===================================================================
--- /WAeUP_CMS/branches/waeup_cms_sandbox/skins/WAEUP/footer.pt	(revision 275)
+++ /WAeUP_CMS/branches/waeup_cms_sandbox/skins/WAEUP/footer.pt	(revision 275)
@@ -0,0 +1,24 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US"
+      i18n:domain="plone">
+
+<body>
+
+<div id="portal-footer" metal:define-macro="portal_footer" i18n:domain="plone"
+     tal:define="portal_url here/portal_url">
+		 
+
+  <table summary="" width="100%" tal:define="now modules/DateTime/DateTime">
+    <tr>
+     <td align="left">
+        <a href="copyright">&copy; Copyright <span tal:content="string:${now/year} ${portal_title}">Copyright</span></a>
+     </td>
+     <td align="right">
+        <a href="#" tal:attributes="href string:${portal_url}/poweredby">Powered by ...</a>
+     </td>
+    </tr>
+  </table>
+
+</div>
+
+</body>
+</html>
Index: /WAeUP_CMS/branches/waeup_cms_sandbox/skins/WAEUP/login_success.pt
===================================================================
--- /WAeUP_CMS/branches/waeup_cms_sandbox/skins/WAEUP/login_success.pt	(revision 275)
+++ /WAeUP_CMS/branches/waeup_cms_sandbox/skins/WAEUP/login_success.pt	(revision 275)
@@ -0,0 +1,74 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
+      lang="en"
+      metal:use-macro="here/main_template/macros/master"
+      i18n:domain="plone">
+
+<head>
+    <metal:block fill-slot="top_slot"
+                 tal:define="dummy python:request.set('disable_border',1)" />
+</head>
+
+<body>
+
+<tal:block tal:condition="exists: here/portal_skins | nothing"
+           tal:replace="nothing">
+    <tal:block tal:condition="here/portal_skins/updateSkinCookie | nothing"
+               tal:define="dummy here/setupCurrentSkin" />
+</tal:block>
+
+<div metal:fill-slot="main">
+  <div tal:condition="not:isAnon">
+    <div tal:define="came_from request/came_from|nothing;
+                     DateTime python:modules['DateTime'].DateTime;
+                     Batch python:modules['Products.CMFPlone'].Batch;
+                     login_time python:member.getProperty('login_time', DateTime());
+                     begin_time python:here.ZopeTime('2000/01/01');
+                     validate_email portal_object/validate_email;">
+
+      <h1 i18n:translate="heading_you_are_now_logged_in">You are now logged in</h1>
+
+      <p tal:condition="came_from">
+        <a href="" tal:attributes="href came_from" i18n:translate="login_came_from">
+          Click here to continue to the page from which you came.</a>
+      </p>
+
+      <p i18n:translate="description_logged_in_explain">
+         Notice that the name portlet has changed. It now
+         contains several personalized items. Use these items
+         to control your personal area and your settings on the various servers.
+      </p>
+
+      <p i18n:translate="description_newbie_pointers">
+        You might want to head over to
+        <span i18n:name="your_folder">
+           <a href=""
+              i18n:translate="description_newbie_pointers_yourfolder_link"
+              tal:define="mystuff python:[a['url'] for a in actions['user'] if a['id']=='mystuff']"
+              tal:condition="mystuff" tal:attributes="href python:mystuff.pop()"
+           >your folder</a>
+        </span>
+        and add some content, or
+        <span i18n:name="set_up_your_preferences">
+           <a href=""
+              i18n:translate="description_newbie_pointers_preferences_link"
+              tal:define="prefs python:[a['url'] for a in actions['user'] if a['id']=='preferences']"
+              tal:condition="prefs" tal:attributes="href python:prefs.pop()"
+           >set up your Preferences</a></span>.
+      </p>
+
+      <div tal:condition="python:request.get('js_enabled','1')=='0'">
+         <br />
+         <p>Note: If you do not remain logged in after leaving this page, it is because
+         you need to <a href="enabling_cookies">enable cookies</a> in your browser.</p>
+      </div>
+
+    </div>
+  </div>
+  <div tal:condition="isAnon">
+    <div metal:use-macro="here/login_failed/macros/login_failed" />
+  </div>
+</div>
+
+</body>
+</html>
+
Index: /WAeUP_CMS/branches/waeup_cms_sandbox/skins/WAEUP/login_success.pt.metadata
===================================================================
--- /WAeUP_CMS/branches/waeup_cms_sandbox/skins/WAEUP/login_success.pt.metadata	(revision 275)
+++ /WAeUP_CMS/branches/waeup_cms_sandbox/skins/WAEUP/login_success.pt.metadata	(revision 275)
@@ -0,0 +1,3 @@
+[default]
+title=Login successful
+border=None
Index: /WAeUP_CMS/branches/waeup_cms_sandbox/skins/WAEUP/main_template.pt
===================================================================
--- /WAeUP_CMS/branches/waeup_cms_sandbox/skins/WAEUP/main_template.pt	(revision 275)
+++ /WAeUP_CMS/branches/waeup_cms_sandbox/skins/WAEUP/main_template.pt	(revision 275)
@@ -0,0 +1,188 @@
+<metal:page define-macro="master"><metal:doctype define-slot="doctype"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"></metal:doctype>
+<metal:block define-slot="top_slot" />
+<metal:block use-macro="here/global_defines/macros/defines" />
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xml:lang="en"
+      lang="en"
+      tal:attributes="lang language;
+                      xml:lang language">
+
+  <head metal:use-macro="here/header/macros/html_header">
+
+    <metal:fillbase fill-slot="base">
+      <metal:baseslot define-slot="base">
+        <base href="" tal:attributes="href here/renderBase" />
+      </metal:baseslot>
+    </metal:fillbase>
+
+    <metal:headslot fill-slot="head_slot"
+                    tal:define="lang language;
+                                charset site_properties/default_charset|string:utf-8">
+
+      <metal:cache use-macro="here/global_cache_settings/macros/cacheheaders">
+        Get the global cache headers located in global_cache_settings.
+      </metal:cache>
+
+      <metal:headslot define-slot="head_slot" />
+      <tal:comment replace="nothing"> A slot where you can insert elements in the header from a template </tal:comment>
+    </metal:headslot>
+
+    <metal:cssslot fill-slot="css_slot">
+      <tal:comment replace="nothing"> A slot where you can insert CSS in the header from a template </tal:comment>
+      <metal:cssslot define-slot="css_slot" />
+    </metal:cssslot>
+
+    <metal:javascriptslot fill-slot="javascript_head_slot">
+      <tal:comment replace="nothing"> A slot where you can insert javascript in the header from a template </tal:comment>
+      <metal:javascriptslot define-slot="javascript_head_slot" />
+    </metal:javascriptslot>
+  </head>
+
+  <body tal:attributes="class here/getSectionFromURL;
+                        dir python:test(isRTL, 'rtl', 'ltr')">
+    <div id="visual-portal-wrapper">
+
+      <div id="portal-top" i18n:domain="plone">
+
+        <div id="portal-header">
+          <a class="hiddenStructure"
+             accesskey="2"
+             tal:attributes="href string:${request/ACTUAL_URL}#documentContent"
+             i18n:translate="label_skiptocontent">Skip to content</a>
+
+          <a class="hiddenStructure"
+             accesskey="6"
+             tal:attributes="href string:${request/ACTUAL_URL}#portlet-navigation-tree"
+             i18n:translate="label_skiptonavigation">Skip to navigation</a>
+
+             <div metal:use-macro="here/global_siteactions/macros/site_actions">
+               Site-wide actions (Contact, Sitemap, Help, Style Switcher etc)
+             </div>
+
+             <div metal:use-macro="here/global_searchbox/macros/quick_search">
+               The quicksearch box, normally placed at the top right
+             </div>
+
+             <a metal:use-macro="here/global_logo/macros/portal_logo">
+               The portal logo, linked to the portal root
+             </a>
+
+          </div>
+
+           <div metal:use-macro="here/global_pathbar/macros/path_bar">
+             The breadcrumb navigation ("you are here")
+           </div>
+      </div>
+
+      <div class="visualClear"><!-- --></div>
+
+      <tal:comment replace="nothing">
+      The wrapper table. It contains the three columns. There's a table-less
+      alternative in the plone_tableless skin layer that you can use if you
+      prefer layouts that don't use tables.
+      </tal:comment>
+
+      <table id="portal-columns">
+        <tbody>
+          <tr>
+            <tal:comment replace="nothing"> Start of the left column </tal:comment>
+            <td id="portal-column-one"
+                metal:define-slot="column_one_slot"
+                tal:condition="sl">
+              <div class="visualPadding">
+                <metal:portlets define-slot="portlets_one_slot">
+                  <metal:leftportlets use-macro="here/portlets_fetcher/macros/left_column">
+                    This instruction gets the portlets (boxes) for the left column.
+                  </metal:leftportlets>
+                </metal:portlets>
+                &nbsp;
+              </div>
+            </td>
+            <tal:comment replace="nothing"> End of the left column </tal:comment>
+
+            <tal:comment replace="nothing"> Start of main content block </tal:comment>
+            <td id="portal-column-content"
+                tal:define="tabindex python:Iterator(pos=0)">
+
+              <metal:block define-slot="content">
+                <div id="content"
+                     metal:define-macro="content"
+                     tal:define="show_border python:here.showEditableBorder(template_id=template_id, actions=actions );"
+                     tal:attributes="class python:test(show_border,'documentEditable','')">
+
+                  <metal:ifborder tal:condition="show_border" >
+                    <div metal:use-macro="here/global_contentviews/macros/content_views">
+                      The content views (View, Edit, Properties, Workflow)
+                    </div>
+
+                    <div metal:use-macro="here/global_contentviews/macros/content_actions">
+                      The content bar
+                    </div>
+                  </metal:ifborder>
+
+                  <div class="documentContent" id="region-content">
+
+                    <a name="documentContent"></a>
+
+                    <div metal:use-macro="here/global_statusmessage/macros/portal_message">
+                      Portal status message
+                    </div>
+
+                    <metal:header metal:define-slot="header" tal:content="nothing">
+                      Visual Header
+                    </metal:header>
+
+                    <metal:bodytext metal:define-slot="main" tal:content="nothing">
+                      Page body text
+                    </metal:bodytext>
+
+                    <metal:sub metal:define-slot="sub">
+                      <metal:discussion use-macro="here/viewThreadsAtBottom/macros/discussionView" />
+                    </metal:sub>
+
+                  </div>
+
+                </div>
+
+              </metal:block>
+            </td>
+            <tal:comment replace="nothing"> End of main content block </tal:comment>
+
+            <tal:comment replace="nothing"> Start of right column </tal:comment>
+            <td id="portal-column-two"
+                metal:define-slot="column_two_slot"
+                tal:condition="sr">
+              <div class="visualPadding">
+                <metal:portlets define-slot="portlets_two_slot">
+                  <metal:rightportlets use-macro="here/portlets_fetcher/macros/right_column">
+                    This instruction gets the portlets (boxes) for the right column.
+                  </metal:rightportlets>
+                </metal:portlets>
+                &nbsp;
+              </div>
+            </td>
+            <tal:comment replace="nothing"> End of the right column </tal:comment>
+          </tr>
+        </tbody>
+      </table>
+      <tal:comment replace="nothing"> end column wrapper </tal:comment>
+
+      <div class="visualClear"><!-- --></div>
+
+
+      <hr class="netscape4" />
+
+      <metal:block i18n:domain="plone">
+
+        <metal:footer use-macro="here/footer/macros/portal_footer">
+          Footer
+        </metal:footer>
+
+      </metal:block>
+
+    </div>
+
+</body>
+</html>
+</metal:page>
Index: /WAeUP_CMS/branches/waeup_cms_sandbox/skins/WAEUP/member_listing.pt
===================================================================
--- /WAeUP_CMS/branches/waeup_cms_sandbox/skins/WAEUP/member_listing.pt	(revision 275)
+++ /WAeUP_CMS/branches/waeup_cms_sandbox/skins/WAEUP/member_listing.pt	(revision 275)
@@ -0,0 +1,109 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
+      lang="en"
+      metal:use-macro="here/main_template/macros/master"
+      i18n:domain="plone">
+
+  <metal:block fill-slot="base">
+      <tal:block tal:define="dummy python:request.set('disable_border', 1)"
+                 tal:replace="nothing">
+      Disable the tabs
+      </tal:block>
+  </metal:block>
+
+<body>
+  
+<div metal:fill-slot="main"
+     tal:define="is_manager python:test(here.portal_membership.checkPermission('Manage portal', here), 1, 0);">
+
+  <div 
+       tal:define="results python:here.portal_membership.searchForMembers(request)">
+
+    <h1 i18n:translate="member_list">WAeUP Member List</h1>
+
+    <div tal:condition="results">
+
+        <table align="left" width=100%>
+
+        <tbody>
+
+          <tal:repeat tal:define="Groups python:(('Nigeria','Nigerian Group'), ('Germany','German Group'), ('Ghana','Ghanaian Group'))"
+                      tal:repeat="Group Groups">
+
+          <tr><td colspan="5">
+              <h2 style="padding-top: 0.5em" tal:content="python:Group[1]" />
+          </td></tr>
+          
+
+          <tal:block tal:repeat="result results">
+                <tr tal:define="id result/getUserName;
+                                author python:mtool.getMemberInfo(id);
+                                portrait python: mtool.getPersonalPortrait(id);
+                                home_base python:container.portal_membership.getHomeUrl(id, verifyPermission=1)"
+                    tal:condition="python:Group[0] in result.getGroupNames()">
+
+                  <td>
+                  <a href="#" tal:attributes="href portrait/absolute_url">
+                  <img src="" alt="" class="portraitPhoto" width="25" height="33"
+                       style="float: left; margin: 0em;"
+                       tal:attributes="src portrait/absolute_url" />
+                  </a>
+                  </td>
+
+                                
+                  <td>
+                   <span tal:condition="python: is_manager and home_base">
+                     <a href="#" tal:attributes="href string:${portal_url}/portal_memberdata/prefs_user_details?userid=${id}">
+                       <span tal:content="id">id</span>
+                     </a>
+                   </span>
+                   <span tal:condition="python: is_manager and not home_base">
+                     <span tal:content="id">id</span>
+                   </span>
+                  </td>    
+                                                 
+                  <td>
+                   <span tal:condition="python: author['fullname']">
+                     <a href="#" tal:attributes="href string:${portal_url}/author/${id}">
+                       <span tal:content="python: author['fullname']">name</span>
+                     </a>
+                   </span>
+                   <span tal:condition="python: not author['fullname']">
+                     XXXXX
+                   </span>
+                  </td>
+
+                  <td>
+                   <span tal:content="author/location|nothing" >Location</span>
+                  </td>                  
+                  
+                  <td>
+                    <span tal:condition="result/email" tal:content="structure python: result.spamProtect(result.email)" />
+                  </td>
+
+                  <td>
+                   <span tal:condition="python:  id == member.id and not is_manager">
+                     <a href="#" tal:attributes="href string:${portal_url}/personalize_form">
+                       Personal Preferences
+                     </a>
+                   </span>
+                  </td>
+
+               </tr>
+
+          </tal:block>
+
+        </tal:repeat>
+        </tbody>
+        </table>
+
+    </div>
+
+    <div tal:condition="not: results">
+        <p><strong i18n:translate="description_no_results_found">No results were found.</strong></p>
+    </div>
+
+ </div>
+
+</div>
+</body>
+</html>
Index: /WAeUP_CMS/branches/waeup_cms_sandbox/skins/WAEUP/portlet_calendar.pt
===================================================================
--- /WAeUP_CMS/branches/waeup_cms_sandbox/skins/WAEUP/portlet_calendar.pt	(revision 275)
+++ /WAeUP_CMS/branches/waeup_cms_sandbox/skins/WAEUP/portlet_calendar.pt	(revision 275)
@@ -0,0 +1,108 @@
+<html xmlns:tal="http://xml.zope.org/namespaces/tal"
+      xmlns:metal="http://xml.zope.org/namespaces/metal"
+      i18n:domain="plone">
+
+<body>
+
+<div metal:define-macro="portlet"
+     tal:omit-tag=""
+     tal:define="DateTime python:modules['DateTime'].DateTime;
+                 current python:DateTime();
+                 current_day current/day;
+                 yearmonth here/getYearAndMonthToDisplay;
+                 nextYearMax python: current+365;
+                 prevYearMin python: current-365;
+                 year python:yearmonth[0];
+                 month python:yearmonth[1];
+                 prevMonthTime python:here.getPreviousMonth(month, year);
+                 nextMonthTime python:here.getNextMonth(month, year);
+                 weeks python:here.portal_calendar.getEventsForCalendar(month, year);
+                 anchor_url request/anchor_url | here_url;
+                 query_string python:request.get('orig_query', None);
+                 query_string python: (query_string is None and request.get('QUERY_STRING', None)) or query_string;
+                 url_quote python:modules['Products.PythonScripts.standard'].url_quote;
+                 anchor_method request/anchor_method | template/getId;
+                 translation_service nocall:here/translation_service;"
+     tal:condition="python:here.getId() in ['events', 'previous']">                       <!-- included, HB -->
+    <!-- The calendar, rendered as a table -->
+
+    <table class="ploneCalendar" id="thePloneCalendar" summary="Calendar" i18n:attributes="summary summary_calendar;">
+        <thead>
+            <tr>
+                <th id="calendar-previous">
+                    <a href="#" rel="nofollow"
+                       title="Previous month"
+                       tal:attributes="href python:'%s/%s?%s&amp;month:int=%d&amp;year:int=%d&amp;orig_query=%s' % (anchor_url, anchor_method, query_string, prevMonthTime.month(),prevMonthTime.year(),url_quote(query_string))"
+                       tal:condition="python: yearmonth > (prevYearMin.year(), prevYearMin.month())"
+                       i18n:attributes="title title_previous_month;">&laquo;</a>
+                </th>
+                <th colspan="5">
+                    <span i18n:translate="" tal:omit-tag="">
+                        <span i18n:name="monthname">
+                            <span tal:define="month_english python:translation_service.month_english(month);"
+                                  tal:attributes="id string:calendar-month-$month_english"
+                                  tal:content="python: here.utranslate(translation_service.month_msgid(month), default=month_english)"
+                                  id="calendar-month-month">&nbsp;</span>
+                        </span>
+                        <span i18n:name="year"
+                              tal:content="string:$year"
+                              tal:attributes="id string:calendar-year-$year;"
+                              id="calendar-year">&nbsp;</span>
+                    </span>
+                </th>
+                <th id="calendar-next">
+                    <a href="#" rel="nofollow"
+                       title="Next month"
+                       tal:attributes="href python:'%s/%s?%s&amp;month:int=%d&amp;year:int=%d&amp;orig_query=%s' % (anchor_url, anchor_method, query_string, nextMonthTime.month(),nextMonthTime.year(),url_quote(query_string))"
+                       tal:condition="python: yearmonth &lt; (nextYearMax.year(), nextYearMax.month())"
+                       i18n:attributes="title title_next_month;">&raquo;</a>
+                </th>
+            </tr>
+            <tr tal:define="weekdaynumbers here/portal_calendar/getDayNumbers" class="weekdays">
+                <tal:data tal:repeat="daynumber weekdaynumbers">
+                    <td tal:define="weekday_english python:translation_service.weekday_english(daynumber);"
+                        tal:content="python: here.utranslate(translation_service.day_msgid(daynumber, format='s'), default=weekday_english)">Su</td>
+                </tal:data>
+            </tr>
+        </thead>
+
+        <tal:comment replace="nothing"><!--
+        Sorry for the obtuse formatting below (the stray end-of-tag markers), but until
+        tal:block doesn't render an entire line of blank space when used, this is the only way.
+        --></tal:comment>
+        <tbody>
+            <tr tal:repeat="week weeks"
+            ><tal:block repeat="day week"
+            ><tal:block define="daynumber day/day;
+                                int_daynumber python: int(daynumber);
+                                day_event day/event;
+                                is_today python: current_day==int_daynumber and current.month()==month and current.year()==year">
+               <td class="event" tal:condition="day_event"
+                      tal:attributes="class python:test(is_today, 'todayevent', 'event')"
+                   ><tal:data tal:define="cur_date python:DateTime(year,month,int_daynumber);
+                                          begin python:url_quote((cur_date.latestTime()).ISO());
+                                          end python:url_quote(cur_date.earliestTime().ISO());"
+                              tal:omit-tag=""
+                     ><a href=""
+                         tal:attributes="href string:${here/portal_url}/search?review_state=published&amp;start.query:record:list:date=${begin}&amp;start.range:record=max&amp;end.query:record:list:date=${end}&amp;end.range:record=min;
+                                         title python:'\n'.join([here.toLocalizedTime(cur_date)]+[here.getEventString(e) for e in day['eventslist']]);"
+                         tal:content="python: daynumber or default">
+                      31
+                      </a
+                   ></tal:data>
+                </td
+                ><tal:notdayevent tal:condition="not: day_event"
+               ><td tal:attributes="class python:test(is_today,'todaynoevent',None)"
+                    tal:content="python: daynumber or default"></td
+               ></tal:notdayevent
+            ></tal:block
+            ></tal:block>
+            </tr>
+        </tbody>
+    </table>
+
+</div>
+
+</body>
+
+</html>
Index: /WAeUP_CMS/branches/waeup_cms_sandbox/skins/WAEUP/portlet_menu.pt
===================================================================
--- /WAeUP_CMS/branches/waeup_cms_sandbox/skins/WAEUP/portlet_menu.pt	(revision 275)
+++ /WAeUP_CMS/branches/waeup_cms_sandbox/skins/WAEUP/portlet_menu.pt	(revision 275)
@@ -0,0 +1,72 @@
+<html xmlns:tal="http://xml.zope.org/namespaces/tal"
+      xmlns:metal="http://xml.zope.org/namespaces/metal"
+      i18n:domain="plone">
+<body>
+
+<div metal:define-macro="portlet">
+  <tal:menu repeat="menu context/selectMenus">
+  <dl class="portlet"
+       tal:define="items menu/getMenuItems"
+       tal:condition="items">
+
+    <dt class="portletHeader" i18n:translate="" tal:content="menu/Title">menu</dt>
+
+    <dd class="portletItemLast"
+         tal:define="indent python: 1;
+                     isPlone20 python: True">
+         
+      <div>
+        <tal:block tal:repeat="item items">
+            <metal:item use-macro="context/portlet_menu/macros/item" />
+        </tal:block>
+      </div>
+      <div tal:condition="python: menu.portal_type=='TaskMenu' and menu.getMoreLink()">
+        <a href="#"
+           tal:attributes="href string:${portal_url}/${menu/getMoreLink}"
+           i18n:translate="box_morelink">More...</a>
+      </div>
+      
+    </dd>
+  </dl>
+  </tal:menu>
+</div>
+
+
+<metal:item define-macro="item"
+        tal:define="level level | python: 1;
+                    isActive python: item.isActive(context, menu, level);
+                    isCurrent python: item.isCurrent(context, menu, level);">
+  <div class="navTreeItem navTree" tal:omit-tag="isPlone20"
+       tal:attributes="class python: 'navTreeItem navTree '
+                                + 'navTreeLevel' + str(indent)
+                                + test(isCurrent, ' currentNavItem navTreeCurrentItem', '');">
+    <a href="#"
+       tal:define="target item/getTargetObject;
+                   icon python: target == portal and 'site_icon.gif'
+                             or target.getIcon()"
+       tal:attributes="href item/getItemUrl;
+                       title item/Description | item/Title;
+                       class python: 'navItem '
+                                + 'navLevel' + str(indent)
+                                + test(isCurrent, ' currentNavItem', '');">
+      <img height="16" width="16" alt="" class="navIcon"
+           tal:attributes="src string:${here/portal_url}/${icon};
+                           title target/Type;" />
+      <span class="navItemText"
+            tal:content="item/Title">Item title</span>
+    </a>
+  </div>
+  <tal:subitems
+        tal:define="indent python: indent + 1"
+        tal:condition="isActive">
+    <tal:block tal:repeat="item python: item.getMenuItems(menu)">
+      <tal:item define="level python: level + 1">
+        <metal:item use-macro="context/portlet_menu/macros/item" />
+      </tal:item>
+    </tal:block>
+  </tal:subitems>
+</metal:item>
+
+
+</body>
+</html>
Index: /WAeUP_CMS/branches/waeup_cms_sandbox/skins/WAEUP/portlet_name.pt
===================================================================
--- /WAeUP_CMS/branches/waeup_cms_sandbox/skins/WAEUP/portlet_name.pt	(revision 275)
+++ /WAeUP_CMS/branches/waeup_cms_sandbox/skins/WAEUP/portlet_name.pt	(revision 275)
@@ -0,0 +1,37 @@
+<html xmlns:tal="http://xml.zope.org/namespaces/tal"
+      xmlns:metal="http://xml.zope.org/namespaces/metal"
+      i18n:domain="plone">
+
+<body>
+
+<!-- The personal bar box by HB-->
+
+<div metal:define-macro="portlet">
+
+  <dl class="portlet" id="portlet-name">
+
+    <dt class="portletHeader" tal:content="member/fullname | user/getUserName"></dt>
+     
+    <dd class="portletItemLast"> 
+
+     <ul>
+      <tal:actions tal:repeat="action python:here.getOrderedUserActions(keyed_actions=keyed_actions, 
+                                                                        ordering = {'pre' : ['preferences', 'mystuff', 'webmail', 'usermanagement', 'orgmail', 'svnrepos', 'svninter', 'ldap', 'undo'], 
+                                                                                    'post' : ['plone_setup', 'logout']})">
+
+          <li>
+              <a href=""
+                 tal:attributes="href action/url"
+                 accesskey="accesskeys-personalbar"
+                 i18n:attributes="accesskey">
+                 <tal:actionname i18n:translate="" tal:content="action/name">dummy</tal:actionname>
+              </a>
+          </li>
+      </tal:actions>
+     </ul>
+
+     </dd>
+  </dl>
+</div>
+</body>
+</html>
Index: /WAeUP_CMS/branches/waeup_cms_sandbox/skins/WAEUP/portlet_navtree_macro.pt
===================================================================
--- /WAeUP_CMS/branches/waeup_cms_sandbox/skins/WAEUP/portlet_navtree_macro.pt	(revision 275)
+++ /WAeUP_CMS/branches/waeup_cms_sandbox/skins/WAEUP/portlet_navtree_macro.pt	(revision 275)
@@ -0,0 +1,45 @@
+<tal:navitem repeat="item options/children">
+<li class="navTreeItem visualNoMarker"
+    tal:define="parent_shows_children options/show_children|nothing;
+                children item/children|nothing;
+                myType item/portal_type;
+                badtypes here/portal_properties/navtree_properties/metaTypesNotToList;
+                "
+                
+
+    tal:condition="python: (not item['no_display']) and (item['currentItem'] or parent_shows_children or children) 
+                            and (myType not in badtypes)">
+                           
+
+    <tal:level define="level               options/level|python:0;
+                       item_type_class     python: 'contenttype-' + here.plone_utils.normalizeString(item['portal_type']);
+                       item_wf_state_class python: 'state-' + here.plone_utils.normalizeString(item['review_state']);
+                       isNaviTree          options/isNaviTree | nothing;
+                       ">
+
+    <div tal:attributes="class item_type_class">
+        <a tal:condition="item/currentItem"
+           tal:attributes="href item/absolute_url;
+                           title item/Description|nothing;
+                           class string: $item_wf_state_class navTreeCurrentItem visualIconPadding"
+            tal:content="item/Title|nothing">
+            Selected Item Title</a>
+        <tal:children condition="python: parent_shows_children or children">
+        <a tal:condition="not: item/currentItem"
+           tal:attributes="href item/absolute_url;
+                           title item/Description|nothing;
+                           class string: $item_wf_state_class visualIconPadding;"
+            tal:content="item/Title|nothing">
+            Unselected Item Title</a>
+        </tal:children>
+    </div>
+        
+    <ul tal:attributes="class python:'navTree navTreeLevel'+str(level)"
+        tal:define="show_children item/show_children| python:True;"
+        tal:condition="python: (show_children or isNaviTree) and children"
+        tal:content="structure python:here.portlet_navtree_macro(children=children, level=level+1, show_children=show_children, isNaviTree=isNaviTree)">
+          Get subtree, if available.
+    </ul>
+    </tal:level>
+</li>
+</tal:navitem>
Index: /WAeUP_CMS/branches/waeup_cms_sandbox/skins/WAEUP/selectMenus.py
===================================================================
--- /WAeUP_CMS/branches/waeup_cms_sandbox/skins/WAEUP/selectMenus.py	(revision 275)
+++ /WAeUP_CMS/branches/waeup_cms_sandbox/skins/WAEUP/selectMenus.py	(revision 275)
@@ -0,0 +1,17 @@
+## Script (Python) "selectMenus"
+##bind container=container
+##bind context=context
+##bind namespace=
+##bind script=script
+##bind subpath=traverse_subpath
+##parameters=type_name=None
+##title=
+##
+pm = context.portal_membership
+member = pm.getAuthenticatedMember()
+
+menus = context.portal_catalog(portal_type=('Menu', 'TaskMenu'))
+isAdmin = member is not None and member.has_role(('Manager', 'Staff',))
+if not isAdmin:
+    menus = [ m for m in menus if not 'admin' in m.getId ]
+return [ m.getObject() for m in menus ]
Index: /WAeUP_CMS/branches/waeup_cms_sandbox/skins/WAEUP/waeup.css.dtml
===================================================================
--- /WAeUP_CMS/branches/waeup_cms_sandbox/skins/WAEUP/waeup.css.dtml	(revision 275)
+++ /WAeUP_CMS/branches/waeup_cms_sandbox/skins/WAEUP/waeup.css.dtml	(revision 275)
@@ -0,0 +1,101 @@
+/* <dtml-with base_properties> (do not remove this :) */
+/* <dtml-call "REQUEST.set('portal_url', portal_url())"> (not this either :) */
+
+/* In portlets.css */
+
+.portletHeader {
+    background-color: &dtml-globalBackgroundColor;;
+    border: &dtml-borderWidth; &dtml-borderStyle; &dtml-globalBorderColor;;
+    border-bottom: none;
+    padding: 0.2em 0em 0em 1em;
+    text-transform: &dtml-textTransform;;
+    font-weight: bold;
+    line-height: 1.6em;
+}
+
+
+/* In public.css */
+
+#portal-breadcrumbs {
+    /* The path bar, including breadcrumbs and add to favorites */
+    border-bottom-color: &dtml-globalBorderColor;;
+    border-bottom-style: &dtml-borderStyle;;
+    border-bottom-width: &dtml-borderWidth;;
+    border-bottom: none;
+    padding-left: 3em;
+    padding-right: 2em;
+    text-transform: &dtml-textTransform;;
+    line-height: 1.6em;
+}
+
+
+
+
+#portal-footer {
+    background-color: &dtml-globalBackgroundColor;;
+    border-top: &dtml-borderWidth; &dtml-borderStyle; &dtml-globalBorderColor;;
+    border-bottom: &dtml-borderWidth; &dtml-borderStyle; &dtml-globalBorderColor;;
+    float: none;
+    line-height: 1.2em;
+    margin: 2em 0em 1em 0em;
+    padding: 0em 1.2em 0em 1.2em;
+    text-align: center;
+}
+
+
+#portal-footer a {
+    text-decoration: none;
+    color: &dtml-discreetColor;;
+    border: none;
+}
+
+#portal-footer a:visited {
+    color: &dtml-discreetColor;;
+    background-color: transparent;
+}
+
+
+/* In base.css */
+
+
+h1 {
+    font-size: 160%;
+}
+h2 {
+    font-size: 150%;
+    border-bottom: none;
+}
+
+h3 {
+    font-size: 140%;
+    border-bottom: none;
+    font-weight: bold;
+}
+
+h4 {
+    font-size: 120%;
+    border-bottom: none;
+    font-weight: bold;
+}
+
+h5 {
+    font-size: 100%;
+    border-bottom: none;
+    font-weight: bold;
+}
+
+h6 {
+    font-size: &dtml-fontSmallSize;;
+    border-bottom: none;
+    font-weight: bold;
+}
+
+ul {
+    line-height: 1.5em;
+    margin: 0.5em 0 0 1.5em;
+    padding: 0;
+    list-style-type: circle;
+    list-style-image: none;
+}
+
+/* </dtml-with> */
Index: /WAeUP_CMS/branches/waeup_cms_sandbox/skins/WAEUP/waeup.css.dtml.metadata
===================================================================
--- /WAeUP_CMS/branches/waeup_cms_sandbox/skins/WAEUP/waeup.css.dtml.metadata	(revision 275)
+++ /WAeUP_CMS/branches/waeup_cms_sandbox/skins/WAEUP/waeup.css.dtml.metadata	(revision 275)
@@ -0,0 +1,2 @@
+[default]
+title = WAEUP additional style sheet
Index: /WAeUP_CMS/branches/waeup_cms_sandbox/workflows/skins/WAEUP/base_properties.props
===================================================================
--- /WAeUP_CMS/branches/waeup_cms_sandbox/workflows/skins/WAEUP/base_properties.props	(revision 275)
+++ /WAeUP_CMS/branches/waeup_cms_sandbox/workflows/skins/WAEUP/base_properties.props	(revision 275)
@@ -0,0 +1,32 @@
+backgroundColor:string=White
+borderStyle:string=solid
+borderStyleAnnotations:string=dashed
+borderWidth:string=1px
+columnOneWidth:string=16em
+columnTwoWidth:string=16em
+contentViewBackgroundColor:string=#FF8989
+contentViewBorderColor:string=#5A5A5A
+contentViewFontColor:string=black
+discreetColor:string=#76797c
+evenRowBackgroundColor:string=#E6E6E6
+fontBaseSize:string=69%
+fontColor:string=Black
+fontFamily:string="Lucida Grande", Verdana, Lucida, Helvetica, Arial, sans-serif
+fontSmallSize:string=85%
+globalBackgroundColor:string=white
+globalBorderColor:string=#5A5A5A
+globalFontColor:string=black
+headingFontFamily:string="Lucida Grande", Verdana, Lucida, Helvetica, Arial, sans-serif
+helpBackgroundColor:string=#ffffe1
+inputFontColor:string=Black
+linkActiveColor:string=Red
+linkColor:string=#00097C
+linkVisitedColor:string=#00097C
+logoName:string=logo.jpg
+notifyBackgroundColor:string=#ffce7b
+notifyBorderColor:string=#ffa500
+oddRowBackgroundColor:string=transparent
+plone_skin:string=Plone Default
+portalMinWidth:string=70em
+textTransform:string=none
+title:string=Plone's color, font, logo and border defaults
Index: /WAeUP_CMS/branches/waeup_cms_sandbox/workflows/skins/WAEUP/footer.pt
===================================================================
--- /WAeUP_CMS/branches/waeup_cms_sandbox/workflows/skins/WAEUP/footer.pt	(revision 275)
+++ /WAeUP_CMS/branches/waeup_cms_sandbox/workflows/skins/WAEUP/footer.pt	(revision 275)
@@ -0,0 +1,24 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US"
+      i18n:domain="plone">
+
+<body>
+
+<div id="portal-footer" metal:define-macro="portal_footer" i18n:domain="plone"
+     tal:define="portal_url here/portal_url">
+		 
+
+  <table summary="" width="100%" tal:define="now modules/DateTime/DateTime">
+    <tr>
+     <td align="left">
+        <a href="copyright">&copy; Copyright <span tal:content="string:${now/year} ${portal_title}">Copyright</span></a>
+     </td>
+     <td align="right">
+        <a href="#" tal:attributes="href string:${portal_url}/poweredby">Powered by ...</a>
+     </td>
+    </tr>
+  </table>
+
+</div>
+
+</body>
+</html>
Index: /WAeUP_CMS/branches/waeup_cms_sandbox/workflows/skins/WAEUP/login_success.pt
===================================================================
--- /WAeUP_CMS/branches/waeup_cms_sandbox/workflows/skins/WAEUP/login_success.pt	(revision 275)
+++ /WAeUP_CMS/branches/waeup_cms_sandbox/workflows/skins/WAEUP/login_success.pt	(revision 275)
@@ -0,0 +1,74 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
+      lang="en"
+      metal:use-macro="here/main_template/macros/master"
+      i18n:domain="plone">
+
+<head>
+    <metal:block fill-slot="top_slot"
+                 tal:define="dummy python:request.set('disable_border',1)" />
+</head>
+
+<body>
+
+<tal:block tal:condition="exists: here/portal_skins | nothing"
+           tal:replace="nothing">
+    <tal:block tal:condition="here/portal_skins/updateSkinCookie | nothing"
+               tal:define="dummy here/setupCurrentSkin" />
+</tal:block>
+
+<div metal:fill-slot="main">
+  <div tal:condition="not:isAnon">
+    <div tal:define="came_from request/came_from|nothing;
+                     DateTime python:modules['DateTime'].DateTime;
+                     Batch python:modules['Products.CMFPlone'].Batch;
+                     login_time python:member.getProperty('login_time', DateTime());
+                     begin_time python:here.ZopeTime('2000/01/01');
+                     validate_email portal_object/validate_email;">
+
+      <h1 i18n:translate="heading_you_are_now_logged_in">You are now logged in</h1>
+
+      <p tal:condition="came_from">
+        <a href="" tal:attributes="href came_from" i18n:translate="login_came_from">
+          Click here to continue to the page from which you came.</a>
+      </p>
+
+      <p i18n:translate="description_logged_in_explain">
+         Notice that the name portlet has changed. It now
+         contains several personalized items. Use these items
+         to control your personal area and your settings on the various servers.
+      </p>
+
+      <p i18n:translate="description_newbie_pointers">
+        You might want to head over to
+        <span i18n:name="your_folder">
+           <a href=""
+              i18n:translate="description_newbie_pointers_yourfolder_link"
+              tal:define="mystuff python:[a['url'] for a in actions['user'] if a['id']=='mystuff']"
+              tal:condition="mystuff" tal:attributes="href python:mystuff.pop()"
+           >your folder</a>
+        </span>
+        and add some content, or
+        <span i18n:name="set_up_your_preferences">
+           <a href=""
+              i18n:translate="description_newbie_pointers_preferences_link"
+              tal:define="prefs python:[a['url'] for a in actions['user'] if a['id']=='preferences']"
+              tal:condition="prefs" tal:attributes="href python:prefs.pop()"
+           >set up your Preferences</a></span>.
+      </p>
+
+      <div tal:condition="python:request.get('js_enabled','1')=='0'">
+         <br />
+         <p>Note: If you do not remain logged in after leaving this page, it is because
+         you need to <a href="enabling_cookies">enable cookies</a> in your browser.</p>
+      </div>
+
+    </div>
+  </div>
+  <div tal:condition="isAnon">
+    <div metal:use-macro="here/login_failed/macros/login_failed" />
+  </div>
+</div>
+
+</body>
+</html>
+
Index: /WAeUP_CMS/branches/waeup_cms_sandbox/workflows/skins/WAEUP/login_success.pt.metadata
===================================================================
--- /WAeUP_CMS/branches/waeup_cms_sandbox/workflows/skins/WAEUP/login_success.pt.metadata	(revision 275)
+++ /WAeUP_CMS/branches/waeup_cms_sandbox/workflows/skins/WAEUP/login_success.pt.metadata	(revision 275)
@@ -0,0 +1,3 @@
+[default]
+title=Login successful
+border=None
Index: /WAeUP_CMS/branches/waeup_cms_sandbox/workflows/skins/WAEUP/main_template.pt
===================================================================
--- /WAeUP_CMS/branches/waeup_cms_sandbox/workflows/skins/WAEUP/main_template.pt	(revision 275)
+++ /WAeUP_CMS/branches/waeup_cms_sandbox/workflows/skins/WAEUP/main_template.pt	(revision 275)
@@ -0,0 +1,188 @@
+<metal:page define-macro="master"><metal:doctype define-slot="doctype"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"></metal:doctype>
+<metal:block define-slot="top_slot" />
+<metal:block use-macro="here/global_defines/macros/defines" />
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xml:lang="en"
+      lang="en"
+      tal:attributes="lang language;
+                      xml:lang language">
+
+  <head metal:use-macro="here/header/macros/html_header">
+
+    <metal:fillbase fill-slot="base">
+      <metal:baseslot define-slot="base">
+        <base href="" tal:attributes="href here/renderBase" />
+      </metal:baseslot>
+    </metal:fillbase>
+
+    <metal:headslot fill-slot="head_slot"
+                    tal:define="lang language;
+                                charset site_properties/default_charset|string:utf-8">
+
+      <metal:cache use-macro="here/global_cache_settings/macros/cacheheaders">
+        Get the global cache headers located in global_cache_settings.
+      </metal:cache>
+
+      <metal:headslot define-slot="head_slot" />
+      <tal:comment replace="nothing"> A slot where you can insert elements in the header from a template </tal:comment>
+    </metal:headslot>
+
+    <metal:cssslot fill-slot="css_slot">
+      <tal:comment replace="nothing"> A slot where you can insert CSS in the header from a template </tal:comment>
+      <metal:cssslot define-slot="css_slot" />
+    </metal:cssslot>
+
+    <metal:javascriptslot fill-slot="javascript_head_slot">
+      <tal:comment replace="nothing"> A slot where you can insert javascript in the header from a template </tal:comment>
+      <metal:javascriptslot define-slot="javascript_head_slot" />
+    </metal:javascriptslot>
+  </head>
+
+  <body tal:attributes="class here/getSectionFromURL;
+                        dir python:test(isRTL, 'rtl', 'ltr')">
+    <div id="visual-portal-wrapper">
+
+      <div id="portal-top" i18n:domain="plone">
+
+        <div id="portal-header">
+          <a class="hiddenStructure"
+             accesskey="2"
+             tal:attributes="href string:${request/ACTUAL_URL}#documentContent"
+             i18n:translate="label_skiptocontent">Skip to content</a>
+
+          <a class="hiddenStructure"
+             accesskey="6"
+             tal:attributes="href string:${request/ACTUAL_URL}#portlet-navigation-tree"
+             i18n:translate="label_skiptonavigation">Skip to navigation</a>
+
+             <div metal:use-macro="here/global_siteactions/macros/site_actions">
+               Site-wide actions (Contact, Sitemap, Help, Style Switcher etc)
+             </div>
+
+             <div metal:use-macro="here/global_searchbox/macros/quick_search">
+               The quicksearch box, normally placed at the top right
+             </div>
+
+             <a metal:use-macro="here/global_logo/macros/portal_logo">
+               The portal logo, linked to the portal root
+             </a>
+
+          </div>
+
+           <div metal:use-macro="here/global_pathbar/macros/path_bar">
+             The breadcrumb navigation ("you are here")
+           </div>
+      </div>
+
+      <div class="visualClear"><!-- --></div>
+
+      <tal:comment replace="nothing">
+      The wrapper table. It contains the three columns. There's a table-less
+      alternative in the plone_tableless skin layer that you can use if you
+      prefer layouts that don't use tables.
+      </tal:comment>
+
+      <table id="portal-columns">
+        <tbody>
+          <tr>
+            <tal:comment replace="nothing"> Start of the left column </tal:comment>
+            <td id="portal-column-one"
+                metal:define-slot="column_one_slot"
+                tal:condition="sl">
+              <div class="visualPadding">
+                <metal:portlets define-slot="portlets_one_slot">
+                  <metal:leftportlets use-macro="here/portlets_fetcher/macros/left_column">
+                    This instruction gets the portlets (boxes) for the left column.
+                  </metal:leftportlets>
+                </metal:portlets>
+                &nbsp;
+              </div>
+            </td>
+            <tal:comment replace="nothing"> End of the left column </tal:comment>
+
+            <tal:comment replace="nothing"> Start of main content block </tal:comment>
+            <td id="portal-column-content"
+                tal:define="tabindex python:Iterator(pos=0)">
+
+              <metal:block define-slot="content">
+                <div id="content"
+                     metal:define-macro="content"
+                     tal:define="show_border python:here.showEditableBorder(template_id=template_id, actions=actions );"
+                     tal:attributes="class python:test(show_border,'documentEditable','')">
+
+                  <metal:ifborder tal:condition="show_border" >
+                    <div metal:use-macro="here/global_contentviews/macros/content_views">
+                      The content views (View, Edit, Properties, Workflow)
+                    </div>
+
+                    <div metal:use-macro="here/global_contentviews/macros/content_actions">
+                      The content bar
+                    </div>
+                  </metal:ifborder>
+
+                  <div class="documentContent" id="region-content">
+
+                    <a name="documentContent"></a>
+
+                    <div metal:use-macro="here/global_statusmessage/macros/portal_message">
+                      Portal status message
+                    </div>
+
+                    <metal:header metal:define-slot="header" tal:content="nothing">
+                      Visual Header
+                    </metal:header>
+
+                    <metal:bodytext metal:define-slot="main" tal:content="nothing">
+                      Page body text
+                    </metal:bodytext>
+
+                    <metal:sub metal:define-slot="sub">
+                      <metal:discussion use-macro="here/viewThreadsAtBottom/macros/discussionView" />
+                    </metal:sub>
+
+                  </div>
+
+                </div>
+
+              </metal:block>
+            </td>
+            <tal:comment replace="nothing"> End of main content block </tal:comment>
+
+            <tal:comment replace="nothing"> Start of right column </tal:comment>
+            <td id="portal-column-two"
+                metal:define-slot="column_two_slot"
+                tal:condition="sr">
+              <div class="visualPadding">
+                <metal:portlets define-slot="portlets_two_slot">
+                  <metal:rightportlets use-macro="here/portlets_fetcher/macros/right_column">
+                    This instruction gets the portlets (boxes) for the right column.
+                  </metal:rightportlets>
+                </metal:portlets>
+                &nbsp;
+              </div>
+            </td>
+            <tal:comment replace="nothing"> End of the right column </tal:comment>
+          </tr>
+        </tbody>
+      </table>
+      <tal:comment replace="nothing"> end column wrapper </tal:comment>
+
+      <div class="visualClear"><!-- --></div>
+
+
+      <hr class="netscape4" />
+
+      <metal:block i18n:domain="plone">
+
+        <metal:footer use-macro="here/footer/macros/portal_footer">
+          Footer
+        </metal:footer>
+
+      </metal:block>
+
+    </div>
+
+</body>
+</html>
+</metal:page>
Index: /WAeUP_CMS/branches/waeup_cms_sandbox/workflows/skins/WAEUP/portlet_calendar.pt
===================================================================
--- /WAeUP_CMS/branches/waeup_cms_sandbox/workflows/skins/WAEUP/portlet_calendar.pt	(revision 275)
+++ /WAeUP_CMS/branches/waeup_cms_sandbox/workflows/skins/WAEUP/portlet_calendar.pt	(revision 275)
@@ -0,0 +1,108 @@
+<html xmlns:tal="http://xml.zope.org/namespaces/tal"
+      xmlns:metal="http://xml.zope.org/namespaces/metal"
+      i18n:domain="plone">
+
+<body>
+
+<div metal:define-macro="portlet"
+     tal:omit-tag=""
+     tal:define="DateTime python:modules['DateTime'].DateTime;
+                 current python:DateTime();
+                 current_day current/day;
+                 yearmonth here/getYearAndMonthToDisplay;
+                 nextYearMax python: current+365;
+                 prevYearMin python: current-365;
+                 year python:yearmonth[0];
+                 month python:yearmonth[1];
+                 prevMonthTime python:here.getPreviousMonth(month, year);
+                 nextMonthTime python:here.getNextMonth(month, year);
+                 weeks python:here.portal_calendar.getEventsForCalendar(month, year);
+                 anchor_url request/anchor_url | here_url;
+                 query_string python:request.get('orig_query', None);
+                 query_string python: (query_string is None and request.get('QUERY_STRING', None)) or query_string;
+                 url_quote python:modules['Products.PythonScripts.standard'].url_quote;
+                 anchor_method request/anchor_method | template/getId;
+                 translation_service nocall:here/translation_service;"
+     tal:condition="python:here.getId() in ['events', 'previous']">                       <!-- included, HB -->
+    <!-- The calendar, rendered as a table -->
+
+    <table class="ploneCalendar" id="thePloneCalendar" summary="Calendar" i18n:attributes="summary summary_calendar;">
+        <thead>
+            <tr>
+                <th id="calendar-previous">
+                    <a href="#" rel="nofollow"
+                       title="Previous month"
+                       tal:attributes="href python:'%s/%s?%s&amp;month:int=%d&amp;year:int=%d&amp;orig_query=%s' % (anchor_url, anchor_method, query_string, prevMonthTime.month(),prevMonthTime.year(),url_quote(query_string))"
+                       tal:condition="python: yearmonth > (prevYearMin.year(), prevYearMin.month())"
+                       i18n:attributes="title title_previous_month;">&laquo;</a>
+                </th>
+                <th colspan="5">
+                    <span i18n:translate="" tal:omit-tag="">
+                        <span i18n:name="monthname">
+                            <span tal:define="month_english python:translation_service.month_english(month);"
+                                  tal:attributes="id string:calendar-month-$month_english"
+                                  tal:content="python: here.utranslate(translation_service.month_msgid(month), default=month_english)"
+                                  id="calendar-month-month">&nbsp;</span>
+                        </span>
+                        <span i18n:name="year"
+                              tal:content="string:$year"
+                              tal:attributes="id string:calendar-year-$year;"
+                              id="calendar-year">&nbsp;</span>
+                    </span>
+                </th>
+                <th id="calendar-next">
+                    <a href="#" rel="nofollow"
+                       title="Next month"
+                       tal:attributes="href python:'%s/%s?%s&amp;month:int=%d&amp;year:int=%d&amp;orig_query=%s' % (anchor_url, anchor_method, query_string, nextMonthTime.month(),nextMonthTime.year(),url_quote(query_string))"
+                       tal:condition="python: yearmonth &lt; (nextYearMax.year(), nextYearMax.month())"
+                       i18n:attributes="title title_next_month;">&raquo;</a>
+                </th>
+            </tr>
+            <tr tal:define="weekdaynumbers here/portal_calendar/getDayNumbers" class="weekdays">
+                <tal:data tal:repeat="daynumber weekdaynumbers">
+                    <td tal:define="weekday_english python:translation_service.weekday_english(daynumber);"
+                        tal:content="python: here.utranslate(translation_service.day_msgid(daynumber, format='s'), default=weekday_english)">Su</td>
+                </tal:data>
+            </tr>
+        </thead>
+
+        <tal:comment replace="nothing"><!--
+        Sorry for the obtuse formatting below (the stray end-of-tag markers), but until
+        tal:block doesn't render an entire line of blank space when used, this is the only way.
+        --></tal:comment>
+        <tbody>
+            <tr tal:repeat="week weeks"
+            ><tal:block repeat="day week"
+            ><tal:block define="daynumber day/day;
+                                int_daynumber python: int(daynumber);
+                                day_event day/event;
+                                is_today python: current_day==int_daynumber and current.month()==month and current.year()==year">
+               <td class="event" tal:condition="day_event"
+                      tal:attributes="class python:test(is_today, 'todayevent', 'event')"
+                   ><tal:data tal:define="cur_date python:DateTime(year,month,int_daynumber);
+                                          begin python:url_quote((cur_date.latestTime()).ISO());
+                                          end python:url_quote(cur_date.earliestTime().ISO());"
+                              tal:omit-tag=""
+                     ><a href=""
+                         tal:attributes="href string:${here/portal_url}/search?review_state=published&amp;start.query:record:list:date=${begin}&amp;start.range:record=max&amp;end.query:record:list:date=${end}&amp;end.range:record=min;
+                                         title python:'\n'.join([here.toLocalizedTime(cur_date)]+[here.getEventString(e) for e in day['eventslist']]);"
+                         tal:content="python: daynumber or default">
+                      31
+                      </a
+                   ></tal:data>
+                </td
+                ><tal:notdayevent tal:condition="not: day_event"
+               ><td tal:attributes="class python:test(is_today,'todaynoevent',None)"
+                    tal:content="python: daynumber or default"></td
+               ></tal:notdayevent
+            ></tal:block
+            ></tal:block>
+            </tr>
+        </tbody>
+    </table>
+
+</div>
+
+</body>
+
+</html>
Index: /WAeUP_CMS/branches/waeup_cms_sandbox/workflows/skins/WAEUP/portlet_name.pt
===================================================================
--- /WAeUP_CMS/branches/waeup_cms_sandbox/workflows/skins/WAEUP/portlet_name.pt	(revision 275)
+++ /WAeUP_CMS/branches/waeup_cms_sandbox/workflows/skins/WAEUP/portlet_name.pt	(revision 275)
@@ -0,0 +1,37 @@
+<html xmlns:tal="http://xml.zope.org/namespaces/tal"
+      xmlns:metal="http://xml.zope.org/namespaces/metal"
+      i18n:domain="plone">
+
+<body>
+
+<!-- The personal bar box by HB-->
+
+<div metal:define-macro="portlet">
+
+  <dl class="portlet" id="portlet-name">
+
+    <dt class="portletHeader" tal:content="member/fullname | user/getUserName"></dt>
+     
+    <dd class="portletItemLast"> 
+
+     <ul>
+      <tal:actions tal:repeat="action python:here.getOrderedUserActions(keyed_actions=keyed_actions, 
+                                                                        ordering = {'pre' : ['preferences', 'mystuff', 'webmail', 'usermanagement', 'orgmail', 'svnrepos', 'svninter', 'ldap', 'undo'], 
+                                                                                    'post' : ['plone_setup', 'logout']})">
+
+          <li>
+              <a href=""
+                 tal:attributes="href action/url"
+                 accesskey="accesskeys-personalbar"
+                 i18n:attributes="accesskey">
+                 <tal:actionname i18n:translate="" tal:content="action/name">dummy</tal:actionname>
+              </a>
+          </li>
+      </tal:actions>
+     </ul>
+
+     </dd>
+  </dl>
+</div>
+</body>
+</html>
Index: /WAeUP_CMS/branches/waeup_cms_sandbox/workflows/skins/WAEUP/waeup.css.dtml
===================================================================
--- /WAeUP_CMS/branches/waeup_cms_sandbox/workflows/skins/WAEUP/waeup.css.dtml	(revision 275)
+++ /WAeUP_CMS/branches/waeup_cms_sandbox/workflows/skins/WAEUP/waeup.css.dtml	(revision 275)
@@ -0,0 +1,101 @@
+/* <dtml-with base_properties> (do not remove this :) */
+/* <dtml-call "REQUEST.set('portal_url', portal_url())"> (not this either :) */
+
+/* In portlets.css */
+
+.portletHeader {
+    background-color: &dtml-globalBackgroundColor;;
+    border: &dtml-borderWidth; &dtml-borderStyle; &dtml-globalBorderColor;;
+    border-bottom: none;
+    padding: 0.2em 0em 0em 1em;
+    text-transform: &dtml-textTransform;;
+    font-weight: bold;
+    line-height: 1.6em;
+}
+
+
+/* In public.css */
+
+#portal-breadcrumbs {
+    /* The path bar, including breadcrumbs and add to favorites */
+    border-bottom-color: &dtml-globalBorderColor;;
+    border-bottom-style: &dtml-borderStyle;;
+    border-bottom-width: &dtml-borderWidth;;
+    border-bottom: none;
+    padding-left: 3em;
+    padding-right: 2em;
+    text-transform: &dtml-textTransform;;
+    line-height: 1.6em;
+}
+
+
+
+
+#portal-footer {
+    background-color: &dtml-globalBackgroundColor;;
+    border-top: &dtml-borderWidth; &dtml-borderStyle; &dtml-globalBorderColor;;
+    border-bottom: &dtml-borderWidth; &dtml-borderStyle; &dtml-globalBorderColor;;
+    float: none;
+    line-height: 1.2em;
+    margin: 2em 0em 1em 0em;
+    padding: 0em 1.2em 0em 1.2em;
+    text-align: center;
+}
+
+
+#portal-footer a {
+    text-decoration: none;
+    color: &dtml-discreetColor;;
+    border: none;
+}
+
+#portal-footer a:visited {
+    color: &dtml-discreetColor;;
+    background-color: transparent;
+}
+
+
+/* In base.css */
+
+
+h1 {
+    font-size: 160%;
+}
+h2 {
+    font-size: 150%;
+    border-bottom: none;
+}
+
+h3 {
+    font-size: 140%;
+    border-bottom: none;
+    font-weight: bold;
+}
+
+h4 {
+    font-size: 120%;
+    border-bottom: none;
+    font-weight: bold;
+}
+
+h5 {
+    font-size: 100%;
+    border-bottom: none;
+    font-weight: bold;
+}
+
+h6 {
+    font-size: &dtml-fontSmallSize;;
+    border-bottom: none;
+    font-weight: bold;
+}
+
+ul {
+    line-height: 1.5em;
+    margin: 0.5em 0 0 1.5em;
+    padding: 0;
+    list-style-type: circle;
+    list-style-image: none;
+}
+
+/* </dtml-with> */
Index: /WAeUP_CMS/branches/waeup_cms_sandbox/workflows/skins/WAEUP/waeup.css.dtml.metadata
===================================================================
--- /WAeUP_CMS/branches/waeup_cms_sandbox/workflows/skins/WAEUP/waeup.css.dtml.metadata	(revision 275)
+++ /WAeUP_CMS/branches/waeup_cms_sandbox/workflows/skins/WAEUP/waeup.css.dtml.metadata	(revision 275)
@@ -0,0 +1,2 @@
+[default]
+title = WAEUP additional style sheet
Index: /WAeUP_CMS/trunk/Extensions/Install.py
===================================================================
--- /WAeUP_CMS/trunk/Extensions/Install.py	(revision 275)
+++ /WAeUP_CMS/trunk/Extensions/Install.py	(revision 275)
@@ -0,0 +1,57 @@
+#  WAeUP CMS Product
+#  Archetypes based content types for the West African e-University Project web portal
+#  Copyright (c) 2005 WAeUP
+#
+#  This program is free software; you can redistribute it and/or modify
+#  it under the terms of the GNU General Public License as published by
+#  the Free Software Foundation; either version 2 of the License, or
+#  (at your option) any later version.
+#
+#  This program is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#  GNU General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License
+#  along with this program; if not, write to the Free Software
+#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+#
+"""
+
+$Id: $
+"""
+__author__  = ''
+__docformat__ = 'restructuredtext'
+
+from StringIO import StringIO
+
+from Products.waeup_cms.config import PROJECTNAME, GLOBALS
+
+from Products.Archetypes import listTypes
+from Products.Archetypes.Extensions.utils import installTypes
+from Products.Archetypes.Extensions.utils import install_subskin
+from Products.CMFCore.utils import getToolByName
+
+def install(self):
+    out = StringIO()
+
+    typeInfo = listTypes(PROJECTNAME)
+    installTypes(self, out,
+                 typeInfo,
+                 PROJECTNAME)
+
+    install_subskin(self, out, GLOBALS)
+    registerStylesheets(self, out)
+
+
+
+
+    print >> out, 'Successfully installed %s' % PROJECTNAME
+
+    return out.getvalue()
+
+def registerStylesheets(self, out):
+    csstool = getToolByName(self, 'portal_css')
+    csstool.registerStylesheet('waeup.css', media="all", rendering='import')
+    print >> out, 'installed the Plone additional styles'
+
Index: /WAeUP_CMS/trunk/Extensions/__init__.py
===================================================================
--- /WAeUP_CMS/trunk/Extensions/__init__.py	(revision 275)
+++ /WAeUP_CMS/trunk/Extensions/__init__.py	(revision 275)
@@ -0,0 +1,25 @@
+#  WAeUP CMS Product
+#  Archetypes based content types for the West African e-University Project web portal
+#  Copyright (c) 2005 WAeUP
+#
+#  This program is free software; you can redistribute it and/or modify
+#  it under the terms of the GNU General Public License as published by
+#  the Free Software Foundation; either version 2 of the License, or
+#  (at your option) any later version.
+#
+#  This program is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#  GNU General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License
+#  along with this program; if not, write to the Free Software
+#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+#
+"""
+
+$Id: $
+"""
+__author__  = ''
+__docformat__ = 'restructuredtext'
+
Index: /WAeUP_CMS/trunk/Extensions/changeuseractions.py
===================================================================
--- /WAeUP_CMS/trunk/Extensions/changeuseractions.py	(revision 275)
+++ /WAeUP_CMS/trunk/Extensions/changeuseractions.py	(revision 275)
@@ -0,0 +1,112 @@
+#  WAeUP CMS Product
+#  Archetypes based content types for the West African e-University Project web portal
+#  Copyright (c) 2005 WAeUP
+#
+#  This program is free software; you can redistribute it and/or modify
+#  it under the terms of the GNU General Public License as published by
+#  the Free Software Foundation; either version 2 of the License, or
+#  (at your option) any later version.
+#
+#  This program is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#  GNU General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License
+#  along with this program; if not, write to the Free Software
+#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+#
+
+from Products.CMFCore.utils import getToolByName
+
+def modifyMTool(self):
+    mt=getToolByName(self, 'portal_membership')
+
+    acts=list(mt.listActions())
+    selection=[acts.index(a) for a in acts]
+    mt.deleteActions(selection)
+
+    mt.addAction('mystuff'
+                ,'My Folder'
+                ,'string:${portal/portal_membership/getHomeUrl}/folder_contents'
+                ,'python: member and portal.portal_membership.getHomeFolder()'
+                ,'View'
+                ,'user'
+                , visible=1)
+    mt.addAction('preferences'
+                ,'My Preferences'
+                ,'string:${portal_url}/plone_memberprefs_panel'
+                ,'member'
+                ,'View'
+                ,'user'
+                , visible=1)
+    mt.addAction('login'
+                ,'Secure Login'
+                ,'python:portal_url.replace("http:","https:")+"/login_form"'
+                ,'not: member'
+                ,'View'
+                ,'user'
+                , visible=1)
+    mt.addAction('login'
+                ,'Unsecure Login'
+                ,'python:portal_url.replace("https:","http:")+"/login_form"'
+                ,'not: member'
+                ,'View'
+                ,'user'
+                , visible=1)
+    mt.addAction('plone_setup'
+                ,'Site Setup'
+                ,'string:${portal_url}/plone_control_panel'
+                ,''
+                ,'Manage portal'
+                ,'user'
+                , visible=1)
+    mt.addAction('svnrepos'
+                ,'SVN Repositories'
+                ,'string:https://svn.waeup.org/repos/'
+                ,'member'
+                ,'View'
+                ,'user'
+                , visible=0)
+    mt.addAction('svninter'
+                ,'SVN Web Interface'
+                ,'string:https://svn.waeup.org/'
+                ,'member'
+                ,'View'
+                ,'user'
+                , visible=1)
+    mt.addAction('usermanagement'
+                ,'User Management System'
+                ,'string:https://waeup.org:20000/'
+                ,'member'
+                ,'View'
+                ,'user'
+                , visible=1)
+    mt.addAction('ldap'
+                ,'LDAP Server'
+                ,'string:https://ldap.waeup.org/'
+                ,'member'
+                ,'View'
+                ,'user'
+                , visible=1)
+    mt.addAction('orgmail'
+                ,'Org Mailing List'
+                ,'string:http://lists.waeup.org/mailman/listinfo/org'
+                ,''
+                ,'View'
+                ,'user'
+                , visible=1)
+    mt.addAction('webmail'
+                ,'Webmail'
+                ,'string:https://mail.waeup.org'
+                ,'member'
+                ,'View'
+                ,'user'
+                , visible=1)
+    mt.addAction('logout'
+                ,'Log out'
+                ,'python:portal_url.replace("https:","http:")+"/logout"'
+                ,'member'
+                ,'View'
+                ,'user'
+                , visible=1)
Index: /WAeUP_CMS/trunk/LICENSE.GPL
===================================================================
--- /WAeUP_CMS/trunk/LICENSE.GPL	(revision 275)
+++ /WAeUP_CMS/trunk/LICENSE.GPL	(revision 275)
@@ -0,0 +1,225 @@
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
Index: /WAeUP_CMS/trunk/__init__.py
===================================================================
--- /WAeUP_CMS/trunk/__init__.py	(revision 275)
+++ /WAeUP_CMS/trunk/__init__.py	(revision 275)
@@ -0,0 +1,55 @@
+#  WAeUP CMS Product
+#  Archetypes based content types for the West African e-University Project web portal
+#  Copyright (c) 2005 WAeUP
+#
+#  This program is free software; you can redistribute it and/or modify
+#  it under the terms of the GNU General Public License as published by
+#  the Free Software Foundation; either version 2 of the License, or
+#  (at your option) any later version.
+#
+#  This program is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#  GNU General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License
+#  along with this program; if not, write to the Free Software
+#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+#
+"""
+
+$Id: $
+"""
+__author__  = 'Henrik Bettermann'
+__docformat__ = 'restructuredtext'
+
+from Products.waeup_cms.config import SKINS_DIR
+from Products.waeup_cms.config import GLOBALS
+from Products.waeup_cms.config import PROJECTNAME
+
+from Globals import package_home
+from Products.CMFCore import utils
+from Products.CMFCore.DirectoryView import registerDirectory
+from Products.Archetypes.public import listTypes
+from Products.Archetypes.public import process_types
+
+import Products.waeup_cms.contents
+
+registerDirectory(SKINS_DIR, GLOBALS)
+
+def initialize(context):
+
+
+    listOfTypes = listTypes(PROJECTNAME)
+
+    content_types, constructors, ftis = process_types(
+        listOfTypes,
+        PROJECTNAME)
+
+    # other
+    utils.ContentInit(
+        PROJECTNAME + ' Content',
+        content_types = content_types,
+        extra_constructors = constructors,
+        fti = ftis,
+        ).initialize(context)
Index: /WAeUP_CMS/trunk/config.py
===================================================================
--- /WAeUP_CMS/trunk/config.py	(revision 275)
+++ /WAeUP_CMS/trunk/config.py	(revision 275)
@@ -0,0 +1,35 @@
+#  WAeUP CMS Product
+#  Archetypes based content types for the West African e-University Project web portal
+#  Copyright (c) 2005 WAeUP
+#
+#  This program is free software; you can redistribute it and/or modify
+#  it under the terms of the GNU General Public License as published by
+#  the Free Software Foundation; either version 2 of the License, or
+#  (at your option) any later version.
+#
+#  This program is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#  GNU General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License
+#  along with this program; if not, write to the Free Software
+#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+#
+"""configuration file
+
+$Id: $
+"""
+__author__  = ''
+__docformat__ = 'restructuredtext'
+
+
+from Products.CMFCore import CMFCorePermissions
+from Products.Archetypes.public import DisplayList
+
+PROJECTNAME = "WAEUP"
+SKINS_DIR = 'skins'
+
+GLOBALS = globals()
+
+
Index: /WAeUP_CMS/trunk/contents/__init__.py
===================================================================
--- /WAeUP_CMS/trunk/contents/__init__.py	(revision 275)
+++ /WAeUP_CMS/trunk/contents/__init__.py	(revision 275)
@@ -0,0 +1,25 @@
+#  WAeUP CMS Product
+#  Archetypes based content types for the West African e-University Project web portal
+#  Copyright (c) 2005 WAeUP
+#
+#  This program is free software; you can redistribute it and/or modify
+#  it under the terms of the GNU General Public License as published by
+#  the Free Software Foundation; either version 2 of the License, or
+#  (at your option) any later version.
+#
+#  This program is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#  GNU General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License
+#  along with this program; if not, write to the Free Software
+#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+#
+"""
+
+$Id: $
+"""
+__author__  = ''
+__docformat__ = 'restructuredtext'
+
Index: /WAeUP_CMS/trunk/interfaces/__init__.py
===================================================================
--- /WAeUP_CMS/trunk/interfaces/__init__.py	(revision 275)
+++ /WAeUP_CMS/trunk/interfaces/__init__.py	(revision 275)
@@ -0,0 +1,25 @@
+#  WAeUP CMS Product
+#  Archetypes based content types for the West African e-University Project web portal
+#  Copyright (c) 2005 WAeUP
+#
+#  This program is free software; you can redistribute it and/or modify
+#  it under the terms of the GNU General Public License as published by
+#  the Free Software Foundation; either version 2 of the License, or
+#  (at your option) any later version.
+#
+#  This program is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#  GNU General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License
+#  along with this program; if not, write to the Free Software
+#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+#
+"""
+
+$Id: $
+"""
+__author__  = ''
+__docformat__ = 'restructuredtext'
+
Index: /WAeUP_CMS/trunk/skins/WAEUP/base_properties.props
===================================================================
--- /WAeUP_CMS/trunk/skins/WAEUP/base_properties.props	(revision 275)
+++ /WAeUP_CMS/trunk/skins/WAEUP/base_properties.props	(revision 275)
@@ -0,0 +1,34 @@
+backgroundColor:string=White
+borderStyle:string=solid
+borderStyleAnnotations:string=dashed
+borderWidth:string=1px
+columnOneWidth:string=16em
+columnTwoWidth:string=16em
+contentViewBackgroundColor:string=#FF8989
+contentViewBorderColor:string=#5A5A5A
+contentViewFontColor:string=black
+discreetColor:string=#76797c
+evenRowBackgroundColor:string=#E6E6E6
+fontBaseSize:string=69%
+fontColor:string=Black
+fontFamily:string="Lucida Grande", Verdana, Lucida, Helvetica, Arial, sans-serif
+fontSmallSize:string=85%
+globalBackgroundColor:string=white
+globalBorderColor:string=#5A5A5A
+globalFontColor:string=black
+headingFontFamily:string="Lucida Grande", Verdana, Lucida, Helvetica, Arial, sans-serif
+helpBackgroundColor:string=#ffffe1
+inputFontColor:string=Black
+linkActiveColor:string=Red
+linkColor:string=#00097C
+linkVisitedColor:string=#00097C
+logoName:string=logo_left.gif
+logoNameLeft:string=logo_left.gif
+logoNameRight:string=logo_right.gif
+notifyBackgroundColor:string=#ffce7b
+notifyBorderColor:string=#ffa500
+oddRowBackgroundColor:string=transparent
+plone_skin:string=Plone Default
+portalMinWidth:string=70em
+textTransform:string=none
+title:string=Plone's color, font, logo and border defaults
Index: /WAeUP_CMS/trunk/skins/WAEUP/df_listing.pt
===================================================================
--- /WAeUP_CMS/trunk/skins/WAEUP/df_listing.pt	(revision 275)
+++ /WAeUP_CMS/trunk/skins/WAEUP/df_listing.pt	(revision 275)
@@ -0,0 +1,163 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
+      lang="en"
+      metal:use-macro="here/main_template/macros/master"
+      i18n:domain="plone">
+
+<body>
+
+    <div metal:fill-slot="main">
+    <metal:main-macro define-macro="main">
+
+        <div metal:use-macro="here/document_actions/macros/document_actions">
+            Document actions (print, sendto etc)
+        </div>
+
+        <h1 tal:content="here/pretty_title_or_id" class="documentFirstHeading">
+            Title or id
+        </h1>
+
+        <a href=""
+           class="link-parent"
+           tal:define="parent_url python:here.navigationParent(here, template_id)"
+           tal:condition="parent_url"
+           tal:attributes="href parent_url"
+           i18n:translate="go_to_parent_url">
+        Up one level
+        </a>
+
+        <div class="documentDescription" tal:content="here/Description">
+            description
+        </div>
+
+        <metal:listingmacro define-macro="listing">
+        <tal:foldercontents define="contentFilter contentFilter|request/contentFilter|nothing;
+                            limit_display limit_display|request/limit_display|nothing;
+                            more_url more_url|request/more_url|string:folder_contents;
+                            contentsMethod python:test(here.portal_type=='Topic', here.queryCatalog, here.getFolderContents);
+                            folderContents folderContents|python:contentsMethod(contentFilter);
+                            use_view_action site_properties/typesUseViewActionInListings;
+                            over_limit python: limit_display and len(folderContents) > limit_display;
+                            folderContents python: (over_limit and folderContents[:limit_display]) or folderContents;
+                            show_about python:not isAnon or site_properties.allowAnonymousViewAbout">
+        <tal:listing condition="folderContents"
+                     define="toLocalizedTime nocall:here/toLocalizedTime;">
+
+            <dl>
+                <tal:entry tal:repeat="item folderContents">
+                <tal:block tal:define="item_url item/getURL|item/absolute_url;
+                                       item_id item/getId|item/id;
+                                       item_title_or_id item/pretty_title_or_id;
+                                       item_description item/Description;
+                                       item_type item/portal_type;
+                                       item_type_title item/Type;
+                                       item_modified item/ModificationDate;
+                                       item_created item/CreationDate;
+                                       item_type_class python: 'contenttype-' + putils.normalizeString(item_type);
+                                       item_wf_state        item/review_state|python: wtool.getInfoFor(item, 'review_state', '');
+                                       item_wf_state_class python:'state-' + putils.normalizeString(item_wf_state);
+                                       item_creator item/Creator;
+                                       item_start item/start/ISO|item/StartDate|nothing;
+                                       item_end item/end/ISO|item/EndDate|nothing;
+                                       item_folderish item/is_folderish|item/isPrincipiaFolderish|nothing;
+                                   ">
+
+                    <dt metal:define-macro="listitem">
+
+                        <span tal:attributes="class item_type_class"
+                              tal:condition="python:item_type != 'Link'">
+                        <a href="#" 
+                           tal:attributes="href python:test(item_type in use_view_action, item_url+'/view', item_url+'/');
+                                           class string:$item_wf_state_class visualIconPadding"
+                           tal:content="item_title_or_id">
+                            Item Title
+                        </a>
+                        </span>
+
+                        <tal:to_external condition="python:item_type == 'Link'">
+                            <span tal:attributes="class item_type_class">
+                            <a href="#"
+                               tal:content="item_title_or_id"
+                               tal:attributes="href item/getRemoteUrl;
+                                               class item_wf_state_class">
+                                External Link
+                            </a>
+                            </span>
+                        </tal:to_external>
+
+                        <span class="documentByLine"
+                              tal:condition="show_about">
+
+                            <span tal:condition="python: item_type == 'Event'"
+                                  i18n:translate="label_event_byline">
+                                (<span tal:omit-tag="" tal:content="string:${item/location}" i18n:name="location">Oslo</span>, from
+                                 <span tal:omit-tag="" tal:content="python:toLocalizedTime(item_start,long_format=1)" i18n:name="start">from date</span> to
+                                 <span tal:omit-tag="" tal:content="python:toLocalizedTime(item_end,long_format=1)" i18n:name="end">to date</span>)
+                            &mdash;
+                            </span>
+
+                            <tal:name tal:condition="item_creator"
+                                tal:define="author python:mtool.getMemberInfo(item_creator)">
+                              <span i18n:translate="label_by_author">
+                                by
+                              <a href="#"
+                                 tal:attributes="href string:${portal_url}/author/${item_creator}"
+                                 tal:content="python:author and author['fullname'] or item_creator"
+                                 tal:omit-tag="not:author"
+                                 i18n:name="author">
+                                Bob Dobalina
+                              </a>
+                              </span>
+
+                            </tal:name>
+
+                            <tal:modified condition="python: item_type != 'Event'">
+                                &mdash;
+                                <tal:mod i18n:translate="box_last_modified">
+                                  last modified
+                                </tal:mod>
+                                <span tal:replace="python:toLocalizedTime(item_modified,long_format=1)">
+                                  August 16, 2001 at 23:35:59
+                                </span>
+                            </tal:modified>
+
+                            <metal:description define-slot="description_slot">
+                                <tal:comment replace="nothing"> 
+                                    Place custom listing info for custom types here
+                                </tal:comment>
+                            </metal:description>
+                        </span>
+
+                    </dt>
+
+                    <dd tal:condition="item_description">
+                        <span tal:omit-tag="" tal:content="item_description"> 
+                            description 
+                        </span> 
+                    </dd>
+
+                    <dd tal:condition="not: item_folderish">
+                       <div tal:define=" itemobj item/getObject;
+                                         reply_dict python:itemobj.getReplyReplies(itemobj)">
+                           <span tal:content="python: len(reply_dict)" /> comments or replies
+                       </div>
+                    </dd>
+
+                </tal:block>
+                </tal:entry>
+            </dl>
+        </tal:listing>
+        <metal:empty metal:define-slot="no_items_in_listing">
+            <p class="discreet"
+               tal:condition="not: folderContents"
+               i18n:translate="description_no_items_in_folder">
+                There are currently no items in this folder.
+            </p>
+        </metal:empty>
+
+        </tal:foldercontents>
+        </metal:listingmacro>
+    </metal:main-macro>
+    </div>
+
+</body>
+</html>
Index: /WAeUP_CMS/trunk/skins/WAEUP/df_listing.pt.metadata
===================================================================
--- /WAeUP_CMS/trunk/skins/WAEUP/df_listing.pt.metadata	(revision 275)
+++ /WAeUP_CMS/trunk/skins/WAEUP/df_listing.pt.metadata	(revision 275)
@@ -0,0 +1,2 @@
+[default]
+title=Discussion listing
Index: /WAeUP_CMS/trunk/skins/WAEUP/footer.pt
===================================================================
--- /WAeUP_CMS/trunk/skins/WAEUP/footer.pt	(revision 275)
+++ /WAeUP_CMS/trunk/skins/WAEUP/footer.pt	(revision 275)
@@ -0,0 +1,24 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US"
+      i18n:domain="plone">
+
+<body>
+
+<div id="portal-footer" metal:define-macro="portal_footer" i18n:domain="plone"
+     tal:define="portal_url here/portal_url">
+		 
+
+  <table summary="" width="100%" tal:define="now modules/DateTime/DateTime">
+    <tr>
+     <td align="left">
+        <a href="copyright">&copy; Copyright <span tal:content="string:${now/year} ${portal_title}">Copyright</span></a>
+     </td>
+     <td align="right">
+        <a href="#" tal:attributes="href string:${portal_url}/poweredby">Powered by ...</a>
+     </td>
+    </tr>
+  </table>
+
+</div>
+
+</body>
+</html>
Index: /WAeUP_CMS/trunk/skins/WAEUP/global_logo.pt
===================================================================
--- /WAeUP_CMS/trunk/skins/WAEUP/global_logo.pt	(revision 275)
+++ /WAeUP_CMS/trunk/skins/WAEUP/global_logo.pt	(revision 275)
@@ -0,0 +1,30 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      i18n:domain="plone">
+
+<body>
+
+<!-- THE PORTAL LOGO DEFINITION -->
+
+<h1 id="portal-logo_left" metal:define-macro="portal_logo_left">
+    <a href="/"
+       tal:attributes="href portal_url"
+       tal:define="portal_title portal_properties/title;"
+       tal:content="string:$portal_title"
+       accesskey="1">
+        Plone
+    </a>
+</h1>
+
+<h1 id="portal-logo_right" metal:define-macro="portal_logo_right">
+    <a href="/"
+       tal:attributes="href portal_url"
+       tal:define="portal_title portal_properties/title;"
+       tal:content="string:$portal_title"
+       accesskey="1">
+        Plone
+    </a>
+</h1>
+
+
+</body>
+</html>
Index: /WAeUP_CMS/trunk/skins/WAEUP/login_form.cpt
===================================================================
--- /WAeUP_CMS/trunk/skins/WAEUP/login_form.cpt	(revision 275)
+++ /WAeUP_CMS/trunk/skins/WAEUP/login_form.cpt	(revision 275)
@@ -0,0 +1,182 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      metal:use-macro="here/main_template/macros/master"
+      i18n:domain="plone">
+
+<head>
+    <script type="text/javascript" metal:fill-slot="javascript_head_slot">
+    </script>
+    <metal:block fill-slot="top_slot"
+                 tal:define="dummy python:request.set('disable_border',1)" />
+</head>
+
+<body>
+
+<div metal:fill-slot="main"
+     tal:define="auth nocall:here/cookie_authentication|nothing;
+                 came_from request/came_from|request/HTTP_REFERER|nothing;
+                 came_from python:test(utool.isURLInPortal(came_from), came_from, None);
+                 ztutils modules/ZTUtils;
+                 errors options/state/getErrors;">
+
+<h1 i18n:translate="heading_sign_in">Please log in</h1>
+
+<p i18n:translate="description_sign_in">
+To access this part of the site, you need to log in with your user name and password.
+</p>
+
+<p i18n:translate="description_no_account"
+   tal:define="join python:[a['url'] for a in actions['user'] if a['id']=='join']"
+   tal:condition="python: join and checkPermission('Add portal member', here)">
+
+If you do not have an account here, head over to the
+
+<span i18n:name="registration_form">
+    <a href=""
+       tal:define="join python:join.pop();
+                   join join;
+                   join python:join+test(join.find('?')==-1, '?', '&amp;')+ztutils.make_query(came_from=came_from);"
+       tal:attributes="href join"
+       i18n:translate="description_no_account_registration_linktext">
+        registration form
+    </a>
+</span>
+
+to become a member.
+
+</p>
+
+<div id="enable_cookies_message" i18n:translate="enable_cookies_message" class="portalMessage" style="display:none">
+  Cookies are not enabled. You must <span i18n:name="enable_cookies">
+  <a href="enabling_cookies" i18n:translate="label_enable_cookies">enable cookies</a></span> before you can log in.
+</div>
+
+<div tal:condition="python: not auth" i18n:translate="login_form_disabled">
+    While cookie authentication is disabled, cookie-based login is not available.
+</div>
+
+<form tal:attributes="action python:context.absolute_url()+'/'+template.id"
+      method="post"
+      id="login_form"
+      tal:condition="python:auth">
+
+    <fieldset tal:define="ac_name auth/name_cookie;
+	                  ac_password auth/pw_cookie;
+	                  ac_persist auth/persist_cookie;
+			  login_name python:request.get('login_name', request.get(ac_name, ''));">
+
+        <legend i18n:translate="legend_account_details">Account details</legend>
+
+        <input type="hidden"
+            name="came_from"
+            value=""
+	    tal:attributes="value came_from" />
+
+        <input type="hidden" name="form.submitted" value="1" />
+        <input type="hidden" name="js_enabled" id="js_enabled" value="0" />
+        <input type="hidden" name="cookies_enabled" id="cookies_enabled" value="" />
+        <input type="hidden" name="login_name" id="login_name" value="" />
+        <input type="hidden" name="pwd_empty" id="pwd_empty" value="0" />
+
+        <div class="field"
+             tal:define="error python:errors.get(ac_name, None);"
+             tal:attributes="class python:test(error, 'field error', 'field')">
+
+            <label i18n:translate="label_login_name"
+                   tal:attributes="for ac_name">Login Name</label>
+
+            <div i18n:translate="help_login_name_caps"
+                 class="formHelp">
+    		Login names are case sensitive, make sure the caps lock key is not enabled.
+            </div>
+
+            <div tal:content="error">Validation error output</div>
+
+            <input type="text"
+                   size="15"
+                   tabindex=""
+                   tal:attributes="name ac_name;
+                                   id ac_name;
+                                   value login_name;
+                                   tabindex tabindex/next;"
+                   />
+
+	</div>
+
+	<div class="field"
+             tal:define="error python:errors.get(ac_password, None);"
+             tal:attributes="class python:test(error, 'field error', 'field')">
+
+            <label i18n:translate="label_password"
+                   tal:attributes="for ac_password">Password</label>
+
+            <div class="formHelp">
+                <div i18n:translate="help_capslock_password">
+                    Case sensitive, make sure caps lock is not enabled.
+                </div>
+                <div tal:condition="python:checkPermission('Mail forgotten password', here)"
+                     i18n:translate="help_password_retrieval">
+                    If you have forgotten your password or would like to get a guest account, please send an e-mail to 
+                    <span i18n:name="click_here">
+                        <a tal:replace="structure python: here.spamProtect(site_properties.email_from_address)" />
+                    </span>.
+                </div>
+            </div>
+
+            <div tal:content="error">Validation error output</div>
+
+            <input type="password"
+                   size="15"
+                   tabindex=""
+                   tal:attributes="name ac_password;
+                                   id ac_password;
+                                   tabindex tabindex/next;"
+                   />
+	</div>
+
+        <div class="field">
+
+            <input type="checkbox"
+                   class="noborder formRememberName"
+                   value="1"
+                   checked="checked"
+                   id="cb_remember"
+                   tabindex=""
+                   tal:attributes="name ac_persist;
+                                   tabindex tabindex/next;
+                                   checked python:request.get(ac_name, '') and 'checked' or None;"
+                   />
+
+            <label for="cb_remember" i18n:translate="label_remember_my_name">Remember my name.</label>
+
+            <div i18n:translate="help_remember_my_name"
+                 class="formHelp">
+                Check this to have your user name filled in automatically when you log in later.
+            </div>
+
+        </div>
+
+        <div class="formControls">
+
+            <input class="context"
+                   tabindex=""
+                   type="submit"
+                   name="submit"
+                   value="Log in"
+                   i18n:attributes="value label_log_in;"
+                   tal:attributes="tabindex tabindex/next;
+	                           onclick string:javascript:return setLoginVars('$ac_name','login_name','$ac_password','pwd_empty','js_enabled','cookies_enabled');"
+                   />
+
+        </div>
+
+        <p i18n:translate="remember_to_log_out">
+            Please log out or exit your browser when you're done.
+        </p>
+
+    </fieldset>
+
+</form>
+</div>
+
+</body>
+</html>
Index: /WAeUP_CMS/trunk/skins/WAEUP/login_form.cpt.metadata
===================================================================
--- /WAeUP_CMS/trunk/skins/WAEUP/login_form.cpt.metadata	(revision 275)
+++ /WAeUP_CMS/trunk/skins/WAEUP/login_form.cpt.metadata	(revision 275)
@@ -0,0 +1,12 @@
+[default]
+title=Sign in
+border=None
+
+[validators]
+validators=login_form_validate
+
+[actions]
+action.success=traverse_to:string:logged_in
+action.failure=traverse_to:string:login_form
+action.failure_page=traverse_to:string:login_failed
+action.enable_cookies=traverse_to:string:enabling_cookies
Index: /WAeUP_CMS/trunk/skins/WAEUP/login_success.pt
===================================================================
--- /WAeUP_CMS/trunk/skins/WAEUP/login_success.pt	(revision 275)
+++ /WAeUP_CMS/trunk/skins/WAEUP/login_success.pt	(revision 275)
@@ -0,0 +1,74 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
+      lang="en"
+      metal:use-macro="here/main_template/macros/master"
+      i18n:domain="plone">
+
+<head>
+    <metal:block fill-slot="top_slot"
+                 tal:define="dummy python:request.set('disable_border',1)" />
+</head>
+
+<body>
+
+<tal:block tal:condition="exists: here/portal_skins | nothing"
+           tal:replace="nothing">
+    <tal:block tal:condition="here/portal_skins/updateSkinCookie | nothing"
+               tal:define="dummy here/setupCurrentSkin" />
+</tal:block>
+
+<div metal:fill-slot="main">
+  <div tal:condition="not:isAnon">
+    <div tal:define="came_from request/came_from|nothing;
+                     DateTime python:modules['DateTime'].DateTime;
+                     Batch python:modules['Products.CMFPlone'].Batch;
+                     login_time python:member.getProperty('login_time', DateTime());
+                     begin_time python:here.ZopeTime('2000/01/01');
+                     validate_email portal_object/validate_email;">
+
+      <h1 i18n:translate="heading_you_are_now_logged_in">You are now logged in</h1>
+
+      <p tal:condition="came_from">
+        <a href="" tal:attributes="href came_from" i18n:translate="login_came_from">
+          Click here to continue to the page from which you came.</a>
+      </p>
+
+      <p i18n:translate="description_logged_in_explain">
+         Notice that the name portlet has changed. It now
+         contains several personalized items. Use these items
+         to control your personal area and your settings on the various servers.
+      </p>
+
+      <p i18n:translate="description_newbie_pointers">
+        You might want to head over to
+        <span i18n:name="your_folder">
+           <a href=""
+              i18n:translate="description_newbie_pointers_yourfolder_link"
+              tal:define="mystuff python:[a['url'] for a in actions['user'] if a['id']=='mystuff']"
+              tal:condition="mystuff" tal:attributes="href python:mystuff.pop()"
+           >your folder</a>
+        </span>
+        and add some content, or
+        <span i18n:name="set_up_your_preferences">
+           <a href=""
+              i18n:translate="description_newbie_pointers_preferences_link"
+              tal:define="prefs python:[a['url'] for a in actions['user'] if a['id']=='preferences']"
+              tal:condition="prefs" tal:attributes="href python:prefs.pop()"
+           >set up your Preferences</a></span>.
+      </p>
+
+      <div tal:condition="python:request.get('js_enabled','1')=='0'">
+         <br />
+         <p>Note: If you do not remain logged in after leaving this page, it is because
+         you need to <a href="enabling_cookies">enable cookies</a> in your browser.</p>
+      </div>
+
+    </div>
+  </div>
+  <div tal:condition="isAnon">
+    <div metal:use-macro="here/login_failed/macros/login_failed" />
+  </div>
+</div>
+
+</body>
+</html>
+
Index: /WAeUP_CMS/trunk/skins/WAEUP/login_success.pt.metadata
===================================================================
--- /WAeUP_CMS/trunk/skins/WAEUP/login_success.pt.metadata	(revision 275)
+++ /WAeUP_CMS/trunk/skins/WAEUP/login_success.pt.metadata	(revision 275)
@@ -0,0 +1,3 @@
+[default]
+title=Login successful
+border=None
Index: /WAeUP_CMS/trunk/skins/WAEUP/main_template.pt
===================================================================
--- /WAeUP_CMS/trunk/skins/WAEUP/main_template.pt	(revision 275)
+++ /WAeUP_CMS/trunk/skins/WAEUP/main_template.pt	(revision 275)
@@ -0,0 +1,207 @@
+<metal:page define-macro="master"><metal:doctype define-slot="doctype"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"></metal:doctype>
+<metal:block define-slot="top_slot" />
+<metal:block use-macro="here/global_defines/macros/defines" />
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xml:lang="en"
+      lang="en"
+      tal:attributes="lang language;
+                      xml:lang language">
+
+  <head metal:use-macro="here/header/macros/html_header">
+
+    <metal:fillbase fill-slot="base">
+      <metal:baseslot define-slot="base">
+        <base href="" tal:attributes="href here/renderBase" />
+      </metal:baseslot>
+    </metal:fillbase>
+
+    <metal:headslot fill-slot="head_slot"
+                    tal:define="lang language;
+                                charset site_properties/default_charset|string:utf-8">
+
+      <metal:cache use-macro="here/global_cache_settings/macros/cacheheaders">
+        Get the global cache headers located in global_cache_settings.
+      </metal:cache>
+
+      <metal:headslot define-slot="head_slot" />
+      <tal:comment replace="nothing"> A slot where you can insert elements in the header from a template </tal:comment>
+    </metal:headslot>
+
+    <metal:cssslot fill-slot="css_slot">
+      <tal:comment replace="nothing"> A slot where you can insert CSS in the header from a template </tal:comment>
+      <metal:cssslot define-slot="css_slot" />
+    </metal:cssslot>
+
+    <metal:javascriptslot fill-slot="javascript_head_slot">
+      <tal:comment replace="nothing"> A slot where you can insert javascript in the header from a template </tal:comment>
+      <metal:javascriptslot define-slot="javascript_head_slot" />
+    </metal:javascriptslot>
+  </head>
+
+  <body tal:attributes="class here/getSectionFromURL;
+                        dir python:test(isRTL, 'rtl', 'ltr')">
+    <div id="visual-portal-wrapper">
+
+      <div id="portal-top" i18n:domain="plone">
+
+        <div id="portal-header">
+          <a class="hiddenStructure"
+             accesskey="2"
+             tal:attributes="href string:${request/ACTUAL_URL}#documentContent"
+             i18n:translate="label_skiptocontent">Skip to content</a>
+
+          <a class="hiddenStructure"
+             accesskey="6"
+             tal:attributes="href string:${request/ACTUAL_URL}#portlet-navigation-tree"
+             i18n:translate="label_skiptonavigation">Skip to navigation</a>
+
+          </div>
+
+
+      </div>
+
+      <div class="visualClear"><!-- --></div>
+
+      <tal:comment replace="nothing">
+      The wrapper table. It contains the three columns. There's a table-less
+      alternative in the plone_tableless skin layer that you can use if you
+      prefer layouts that don't use tables.
+      </tal:comment>
+
+      <table id="portal-columns">
+        <tbody>
+          <tr>
+            <tal:comment replace="nothing"> Start of the left column </tal:comment>
+            <td id="portal-column-one"
+                metal:define-slot="column_one_slot"
+                tal:condition="sl">
+
+             <div class="LogoLeft">
+             <a metal:use-macro="here/global_logo/macros/portal_logo_left">
+               The portal logo, linked to the portal root
+             </a>
+             </div>
+
+             <div class="visualClear" id="portal-breadcrumbs">
+               &nbsp;
+             </div>
+
+              <div class="visualPadding">
+                <metal:portlets define-slot="portlets_one_slot">
+                  <metal:leftportlets use-macro="here/portlets_fetcher/macros/left_column">
+                    This instruction gets the portlets (boxes) for the left column.
+                  </metal:leftportlets>
+                </metal:portlets>
+                &nbsp;
+              </div>
+            </td>
+            <tal:comment replace="nothing"> End of the left column </tal:comment>
+
+            <tal:comment replace="nothing"> Start of main content block </tal:comment>
+            <td id="portal-column-content"
+                tal:define="tabindex python:Iterator(pos=0)">
+
+             <div class="LogoRight">
+             <a metal:use-macro="here/global_logo/macros/portal_logo_right">
+               The portal logo, linked to the portal root
+             </a>
+             </div>
+
+             <div class="visualClear">
+               <div metal:use-macro="here/global_pathbar/macros/path_bar">
+                 The breadcrumb navigation ("you are here")
+               </div>
+             </div>
+
+             <div metal:use-macro="here/global_siteactions/macros/site_actions">
+               Site-wide actions (Contact, Sitemap, Help, Style Switcher etc)
+             </div>
+
+             <div metal:use-macro="here/global_searchbox/macros/quick_search">
+               The quicksearch box, normally placed at the top right
+             </div>
+
+
+              <metal:block define-slot="content">
+                <div id="content"
+                     metal:define-macro="content"
+                     tal:define="show_border python:here.showEditableBorder(template_id=template_id, actions=actions );"
+                     tal:attributes="class python:test(show_border,'documentEditable','')">
+
+                  <metal:ifborder tal:condition="show_border" >
+                    <div metal:use-macro="here/global_contentviews/macros/content_views">
+                      The content views (View, Edit, Properties, Workflow)
+                    </div>
+
+                    <div metal:use-macro="here/global_contentviews/macros/content_actions">
+                      The content bar
+                    </div>
+                  </metal:ifborder>
+
+                  <div class="documentContent" id="region-content">
+
+                    <a name="documentContent"></a>
+
+                    <div metal:use-macro="here/global_statusmessage/macros/portal_message">
+                      Portal status message
+                    </div>
+
+                    <metal:header metal:define-slot="header" tal:content="nothing">
+                      Visual Header
+                    </metal:header>
+
+                    <metal:bodytext metal:define-slot="main" tal:content="nothing">
+                      Page body text
+                    </metal:bodytext>
+
+                    <metal:sub metal:define-slot="sub">
+                      <metal:discussion use-macro="here/viewThreadsAtBottom/macros/discussionView" />
+                    </metal:sub>
+
+                  </div>
+
+                </div>
+
+              </metal:block>
+            </td>
+            <tal:comment replace="nothing"> End of main content block </tal:comment>
+
+            <tal:comment replace="nothing"> Start of right column </tal:comment>
+            <td id="portal-column-two"
+                metal:define-slot="column_two_slot"
+                tal:condition="sr">
+
+              <div class="visualPadding">
+                <metal:portlets define-slot="portlets_two_slot">
+                  <metal:rightportlets use-macro="here/portlets_fetcher/macros/right_column">
+                    This instruction gets the portlets (boxes) for the right column.
+                  </metal:rightportlets>
+                </metal:portlets>
+                &nbsp;
+              </div>
+            </td>
+            <tal:comment replace="nothing"> End of the right column </tal:comment>
+          </tr>
+        </tbody>
+      </table>
+      <tal:comment replace="nothing"> end column wrapper </tal:comment>
+
+      <div class="visualClear"><!-- --></div>
+
+
+      <hr class="netscape4" />
+
+      <metal:block i18n:domain="plone">
+
+        <metal:footer use-macro="here/footer/macros/portal_footer">
+          Footer
+        </metal:footer>
+
+      </metal:block>
+
+    </div>
+
+</body>
+</html>
+</metal:page>
Index: /WAeUP_CMS/trunk/skins/WAEUP/member_listing.pt
===================================================================
--- /WAeUP_CMS/trunk/skins/WAEUP/member_listing.pt	(revision 275)
+++ /WAeUP_CMS/trunk/skins/WAEUP/member_listing.pt	(revision 275)
@@ -0,0 +1,109 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
+      lang="en"
+      metal:use-macro="here/main_template/macros/master"
+      i18n:domain="plone">
+
+  <metal:block fill-slot="base">
+      <tal:block tal:define="dummy python:request.set('disable_border', 1)"
+                 tal:replace="nothing">
+      Disable the tabs
+      </tal:block>
+  </metal:block>
+
+<body>
+  
+<div metal:fill-slot="main"
+     tal:define="is_manager python:test(here.portal_membership.checkPermission('Manage portal', here), 1, 0);">
+
+  <div 
+       tal:define="results python:here.portal_membership.searchForMembers(request)">
+
+    <h1 i18n:translate="member_list">WAeUP Member List</h1>
+
+    <div tal:condition="results">
+
+        <table align="left" width=100%>
+
+        <tbody>
+
+          <tal:repeat tal:define="Groups python:(('Nigeria','Nigerian Group'), ('Germany','German Group'), ('Ghana','Ghanaian Group'), ('USA','US American Group'))"
+                      tal:repeat="Group Groups">
+
+          <tr><td colspan="5">
+              <h2 style="padding-top: 0.5em" tal:content="python:Group[1]" />
+          </td></tr>
+          
+
+          <tal:block tal:repeat="result results">
+                <tr tal:define="id result/getUserName;
+                                author python:mtool.getMemberInfo(id);
+                                portrait python: mtool.getPersonalPortrait(id);
+                                home_base python:container.portal_membership.getHomeUrl(id, verifyPermission=1)"
+                    tal:condition="python:Group[0] in result.getGroupNames() and not id.endswith('1')">
+
+                  <td>
+                  <a href="#" tal:attributes="href portrait/absolute_url">
+                  <img src="" alt="" class="portraitPhoto" width="25" height="33"
+                       style="float: left; margin: 0em;"
+                       tal:attributes="src portrait/absolute_url" />
+                  </a>
+                  </td>
+
+                                
+                  <td>
+                   <span tal:condition="python: is_manager and home_base">
+                     <a href="#" tal:attributes="href string:${portal_url}/portal_memberdata/prefs_user_details?userid=${id}">
+                       <span tal:content="id">id</span>
+                     </a>
+                   </span>
+                   <span tal:condition="python: is_manager and not home_base">
+                     <span tal:content="id">id</span>
+                   </span>
+                  </td>    
+                                                 
+                  <td>
+                   <span tal:condition="python: author['fullname']">
+                     <a href="#" tal:attributes="href string:${portal_url}/author/${id}">
+                       <span tal:content="python: author['fullname']">name</span>
+                     </a>
+                   </span>
+                   <span tal:condition="python: not author['fullname']">
+                     XXXXX
+                   </span>
+                  </td>
+
+                  <td>
+                   <span tal:content="author/location|nothing" >Location</span>
+                  </td>                  
+                  
+                  <td>
+                    <span tal:condition="result/email" tal:content="structure python: result.spamProtect(result.email)" />
+                  </td>
+
+                  <td>
+                   <span tal:condition="python:  id == member.id and not is_manager">
+                     <a href="#" tal:attributes="href string:${portal_url}/personalize_form">
+                       Personal Preferences
+                     </a>
+                   </span>
+                  </td>
+
+               </tr>
+
+          </tal:block>
+
+        </tal:repeat>
+        </tbody>
+        </table>
+
+    </div>
+
+    <div tal:condition="not: results">
+        <p><strong i18n:translate="description_no_results_found">No results were found.</strong></p>
+    </div>
+
+ </div>
+
+</div>
+</body>
+</html>
Index: /WAeUP_CMS/trunk/skins/WAEUP/portlet_calendar.pt
===================================================================
--- /WAeUP_CMS/trunk/skins/WAEUP/portlet_calendar.pt	(revision 275)
+++ /WAeUP_CMS/trunk/skins/WAEUP/portlet_calendar.pt	(revision 275)
@@ -0,0 +1,108 @@
+<html xmlns:tal="http://xml.zope.org/namespaces/tal"
+      xmlns:metal="http://xml.zope.org/namespaces/metal"
+      i18n:domain="plone">
+
+<body>
+
+<div metal:define-macro="portlet"
+     tal:omit-tag=""
+     tal:define="DateTime python:modules['DateTime'].DateTime;
+                 current python:DateTime();
+                 current_day current/day;
+                 yearmonth here/getYearAndMonthToDisplay;
+                 nextYearMax python: current+365;
+                 prevYearMin python: current-365;
+                 year python:yearmonth[0];
+                 month python:yearmonth[1];
+                 prevMonthTime python:here.getPreviousMonth(month, year);
+                 nextMonthTime python:here.getNextMonth(month, year);
+                 weeks python:here.portal_calendar.getEventsForCalendar(month, year);
+                 anchor_url request/anchor_url | here_url;
+                 query_string python:request.get('orig_query', None);
+                 query_string python: (query_string is None and request.get('QUERY_STRING', None)) or query_string;
+                 url_quote python:modules['Products.PythonScripts.standard'].url_quote;
+                 anchor_method request/anchor_method | template/getId;
+                 translation_service nocall:here/translation_service;"
+     tal:condition="python:here.getId() in ['events', 'previous']">                       <!-- included, HB -->
+    <!-- The calendar, rendered as a table -->
+
+    <table class="ploneCalendar" id="thePloneCalendar" summary="Calendar" i18n:attributes="summary summary_calendar;">
+        <thead>
+            <tr>
+                <th id="calendar-previous">
+                    <a href="#" rel="nofollow"
+                       title="Previous month"
+                       tal:attributes="href python:'%s/%s?%s&amp;month:int=%d&amp;year:int=%d&amp;orig_query=%s' % (anchor_url, anchor_method, query_string, prevMonthTime.month(),prevMonthTime.year(),url_quote(query_string))"
+                       tal:condition="python: yearmonth > (prevYearMin.year(), prevYearMin.month())"
+                       i18n:attributes="title title_previous_month;">&laquo;</a>
+                </th>
+                <th colspan="5">
+                    <span i18n:translate="" tal:omit-tag="">
+                        <span i18n:name="monthname">
+                            <span tal:define="month_english python:translation_service.month_english(month);"
+                                  tal:attributes="id string:calendar-month-$month_english"
+                                  tal:content="python: here.utranslate(translation_service.month_msgid(month), default=month_english)"
+                                  id="calendar-month-month">&nbsp;</span>
+                        </span>
+                        <span i18n:name="year"
+                              tal:content="string:$year"
+                              tal:attributes="id string:calendar-year-$year;"
+                              id="calendar-year">&nbsp;</span>
+                    </span>
+                </th>
+                <th id="calendar-next">
+                    <a href="#" rel="nofollow"
+                       title="Next month"
+                       tal:attributes="href python:'%s/%s?%s&amp;month:int=%d&amp;year:int=%d&amp;orig_query=%s' % (anchor_url, anchor_method, query_string, nextMonthTime.month(),nextMonthTime.year(),url_quote(query_string))"
+                       tal:condition="python: yearmonth &lt; (nextYearMax.year(), nextYearMax.month())"
+                       i18n:attributes="title title_next_month;">&raquo;</a>
+                </th>
+            </tr>
+            <tr tal:define="weekdaynumbers here/portal_calendar/getDayNumbers" class="weekdays">
+                <tal:data tal:repeat="daynumber weekdaynumbers">
+                    <td tal:define="weekday_english python:translation_service.weekday_english(daynumber);"
+                        tal:content="python: here.utranslate(translation_service.day_msgid(daynumber, format='s'), default=weekday_english)">Su</td>
+                </tal:data>
+            </tr>
+        </thead>
+
+        <tal:comment replace="nothing"><!--
+        Sorry for the obtuse formatting below (the stray end-of-tag markers), but until
+        tal:block doesn't render an entire line of blank space when used, this is the only way.
+        --></tal:comment>
+        <tbody>
+            <tr tal:repeat="week weeks"
+            ><tal:block repeat="day week"
+            ><tal:block define="daynumber day/day;
+                                int_daynumber python: int(daynumber);
+                                day_event day/event;
+                                is_today python: current_day==int_daynumber and current.month()==month and current.year()==year">
+               <td class="event" tal:condition="day_event"
+                      tal:attributes="class python:test(is_today, 'todayevent', 'event')"
+                   ><tal:data tal:define="cur_date python:DateTime(year,month,int_daynumber);
+                                          begin python:url_quote((cur_date.latestTime()).ISO());
+                                          end python:url_quote(cur_date.earliestTime().ISO());"
+                              tal:omit-tag=""
+                     ><a href=""
+                         tal:attributes="href string:${here/portal_url}/search?review_state=published&amp;start.query:record:list:date=${begin}&amp;start.range:record=max&amp;end.query:record:list:date=${end}&amp;end.range:record=min;
+                                         title python:'\n'.join([here.toLocalizedTime(cur_date)]+[here.getEventString(e) for e in day['eventslist']]);"
+                         tal:content="python: daynumber or default">
+                      31
+                      </a
+                   ></tal:data>
+                </td
+                ><tal:notdayevent tal:condition="not: day_event"
+               ><td tal:attributes="class python:test(is_today,'todaynoevent',None)"
+                    tal:content="python: daynumber or default"></td
+               ></tal:notdayevent
+            ></tal:block
+            ></tal:block>
+            </tr>
+        </tbody>
+    </table>
+
+</div>
+
+</body>
+
+</html>
Index: /WAeUP_CMS/trunk/skins/WAEUP/portlet_menu.pt
===================================================================
--- /WAeUP_CMS/trunk/skins/WAEUP/portlet_menu.pt	(revision 275)
+++ /WAeUP_CMS/trunk/skins/WAEUP/portlet_menu.pt	(revision 275)
@@ -0,0 +1,72 @@
+<html xmlns:tal="http://xml.zope.org/namespaces/tal"
+      xmlns:metal="http://xml.zope.org/namespaces/metal"
+      i18n:domain="plone">
+<body>
+
+<div metal:define-macro="portlet">
+  <tal:menu repeat="menu context/selectMenus">
+  <dl class="portlet"
+       tal:define="items menu/getMenuItems"
+       tal:condition="items">
+
+    <dt class="portletHeader" i18n:translate="" tal:content="menu/Title">menu</dt>
+
+    <dd class="portletItemLast"
+         tal:define="indent python: 1;
+                     isPlone20 python: True">
+         
+      <div>
+        <tal:block tal:repeat="item items">
+            <metal:item use-macro="context/portlet_menu/macros/item" />
+        </tal:block>
+      </div>
+      <div tal:condition="python: menu.portal_type=='TaskMenu' and menu.getMoreLink()">
+        <a href="#"
+           tal:attributes="href string:${portal_url}/${menu/getMoreLink}"
+           i18n:translate="box_morelink">More...</a>
+      </div>
+      
+    </dd>
+  </dl>
+  </tal:menu>
+</div>
+
+
+<metal:item define-macro="item"
+        tal:define="level level | python: 1;
+                    isActive python: item.isActive(context, menu, level);
+                    isCurrent python: item.isCurrent(context, menu, level);">
+  <div class="navTreeItem navTree" tal:omit-tag="isPlone20"
+       tal:attributes="class python: 'navTreeItem navTree '
+                                + 'navTreeLevel' + str(indent)
+                                + test(isCurrent, ' currentNavItem navTreeCurrentItem', '');">
+    <a href="#"
+       tal:define="target item/getTargetObject;
+                   icon python: target == portal and 'site_icon.gif'
+                             or target.getIcon()"
+       tal:attributes="href item/getItemUrl;
+                       title item/Description | item/Title;
+                       class python: 'navItem '
+                                + 'navLevel' + str(indent)
+                                + test(isCurrent, ' currentNavItem', '');">
+      <img height="16" width="16" alt="" class="navIcon"
+           tal:attributes="src string:${here/portal_url}/${icon};
+                           title target/Type;" />
+      <span class="navItemText"
+            tal:content="item/Title">Item title</span>
+    </a>
+  </div>
+  <tal:subitems
+        tal:define="indent python: indent + 1"
+        tal:condition="isActive">
+    <tal:block tal:repeat="item python: item.getMenuItems(menu)">
+      <tal:item define="level python: level + 1">
+        <metal:item use-macro="context/portlet_menu/macros/item" />
+      </tal:item>
+    </tal:block>
+  </tal:subitems>
+</metal:item>
+
+
+</body>
+</html>
Index: /WAeUP_CMS/trunk/skins/WAEUP/portlet_name.pt
===================================================================
--- /WAeUP_CMS/trunk/skins/WAEUP/portlet_name.pt	(revision 275)
+++ /WAeUP_CMS/trunk/skins/WAEUP/portlet_name.pt	(revision 275)
@@ -0,0 +1,37 @@
+<html xmlns:tal="http://xml.zope.org/namespaces/tal"
+      xmlns:metal="http://xml.zope.org/namespaces/metal"
+      i18n:domain="plone">
+
+<body>
+
+<!-- The personal bar box by HB-->
+
+<div metal:define-macro="portlet">
+
+  <dl class="portlet" id="portlet-name">
+
+    <dt class="portletHeader" tal:content="member/fullname | user/getUserName"></dt>
+     
+    <dd class="portletItemLast"> 
+
+     <ul>
+      <tal:actions tal:repeat="action python:here.getOrderedUserActions(keyed_actions=keyed_actions, 
+                                                                        ordering = {'pre' : ['preferences', 'mystuff', 'webmail', 'usermanagement', 'orgmail', 'svnrepos', 'svninter', 'ldap', 'undo'], 
+                                                                                    'post' : ['plone_setup', 'logout']})">
+
+          <li>
+              <a href=""
+                 tal:attributes="href action/url"
+                 accesskey="accesskeys-personalbar"
+                 i18n:attributes="accesskey">
+                 <tal:actionname i18n:translate="" tal:content="action/name">dummy</tal:actionname>
+              </a>
+          </li>
+      </tal:actions>
+     </ul>
+
+     </dd>
+  </dl>
+</div>
+</body>
+</html>
Index: /WAeUP_CMS/trunk/skins/WAEUP/portlet_navtree_macro.pt
===================================================================
--- /WAeUP_CMS/trunk/skins/WAEUP/portlet_navtree_macro.pt	(revision 275)
+++ /WAeUP_CMS/trunk/skins/WAEUP/portlet_navtree_macro.pt	(revision 275)
@@ -0,0 +1,45 @@
+<tal:navitem repeat="item options/children">
+<li class="navTreeItem visualNoMarker"
+    tal:define="parent_shows_children options/show_children|nothing;
+                children item/children|nothing;
+                myType item/portal_type;
+                badtypes here/portal_properties/navtree_properties/metaTypesNotToList;
+                "
+                
+
+    tal:condition="python: (not item['no_display']) and (item['currentItem'] or parent_shows_children or children) 
+                            and (myType not in badtypes)">
+                           
+
+    <tal:level define="level               options/level|python:0;
+                       item_type_class     python: 'contenttype-' + here.plone_utils.normalizeString(item['portal_type']);
+                       item_wf_state_class python: 'state-' + here.plone_utils.normalizeString(item['review_state']);
+                       isNaviTree          options/isNaviTree | nothing;
+                       ">
+
+    <div tal:attributes="class item_type_class">
+        <a tal:condition="item/currentItem"
+           tal:attributes="href item/absolute_url;
+                           title item/Description|nothing;
+                           class string: $item_wf_state_class navTreeCurrentItem visualIconPadding"
+            tal:content="item/Title|nothing">
+            Selected Item Title</a>
+        <tal:children condition="python: parent_shows_children or children">
+        <a tal:condition="not: item/currentItem"
+           tal:attributes="href item/absolute_url;
+                           title item/Description|nothing;
+                           class string: $item_wf_state_class visualIconPadding;"
+            tal:content="item/Title|nothing">
+            Unselected Item Title</a>
+        </tal:children>
+    </div>
+        
+    <ul tal:attributes="class python:'navTree navTreeLevel'+str(level)"
+        tal:define="show_children item/show_children| python:True;"
+        tal:condition="python: (show_children or isNaviTree) and children"
+        tal:content="structure python:here.portlet_navtree_macro(children=children, level=level+1, show_children=show_children, isNaviTree=isNaviTree)">
+          Get subtree, if available.
+    </ul>
+    </tal:level>
+</li>
+</tal:navitem>
Index: /WAeUP_CMS/trunk/skins/WAEUP/portlet_news.pt
===================================================================
--- /WAeUP_CMS/trunk/skins/WAEUP/portlet_news.pt	(revision 275)
+++ /WAeUP_CMS/trunk/skins/WAEUP/portlet_news.pt	(revision 275)
@@ -0,0 +1,65 @@
+<html xmlns:tal="http://xml.zope.org/namespaces/tal"
+      xmlns:metal="http://xml.zope.org/namespaces/metal"
+      i18n:domain="plone">
+<body>
+<div metal:define-macro="portlet"
+     tal:define="results python:request.get('news',
+                   here.portal_catalog.searchResults(portal_type='News Item',
+                                                     sort_on='Date',
+                                                     sort_order='reverse',
+                                                     review_state='published (Public)')[:5]);"
+     tal:condition="python:test(template.getId()!='news' and results, 1, 0)">
+
+    <dl class="portlet" id="portlet-news">
+
+        <dt class="portletHeader">
+            <a href="#" 
+               tal:condition="python:'news' in portal.contentIds()"
+               tal:attributes="href string:${utool}/news"
+               i18n:translate="box_news">News</a>
+            <a href="#" 
+               tal:condition="python:'news' not in portal.contentIds()"
+               tal:attributes="href string:${utool}/news_listing"
+               i18n:translate="box_news">News</a>
+        </dt>
+
+        <tal:newsitems tal:repeat="obj results">
+        <dd tal:define="oddrow repeat/obj/odd"
+             tal:attributes="class python:test(oddrow, 'portletItem even', 'portletItem odd')">
+
+            <a href=""
+               tal:attributes="href obj/getURL;
+                               title obj/Description">
+                <tal:block replace="structure here/newsitem_icon.gif"/>
+                <span tal:replace="obj/pretty_title_or_id">
+                Plone 2.1 announced!
+                </span>
+                <span class="portletItemDetails"
+                      tal:content="python:here.toLocalizedTime(obj.Date)">May 5</span>
+            </a>
+        </dd>
+        </tal:newsitems>
+
+        <dd class="portletFooter">
+
+            <a href=""
+               tal:condition="python:'news' in portal.contentIds()"
+               tal:attributes="href string:${utool}/news"
+               i18n:translate="box_more_news_link"
+               >
+              More news&hellip;
+            </a>
+
+            <a href=""
+               tal:condition="python:'news' not in portal.contentIds()"
+               tal:attributes="href string:${utool}/news_listing"
+               i18n:translate="box_more_news_link"
+               >
+              More news&hellip;
+            </a>
+        </dd>
+    </dl>
+
+</div>
+</body>
+</html>
Index: /WAeUP_CMS/trunk/skins/WAEUP/recentchangesdtml.dtml
===================================================================
--- /WAeUP_CMS/trunk/skins/WAEUP/recentchangesdtml.dtml	(revision 275)
+++ /WAeUP_CMS/trunk/skins/WAEUP/recentchangesdtml.dtml	(revision 275)
@@ -0,0 +1,102 @@
+<dtml-call "RESPONSE.setHeader('Content-Type','text/html; charset=utf-8')">
+<dtml-let 
+ wikiurl=wiki_url
+ summaries="REQUEST.get('summaries',0)"
+ period="_.string.lower(REQUEST.get('period','day'))"
+ days="{
+   'day':1,
+   'week':7,
+   'month':30,
+   'year':365,
+   'ever':999999,
+   'default':3}[period]"
+ newdays="7"
+ now=ZopeTime
+ results="pages(lastEditTime={'query': now-days, 'range':'min'})"
+ number="_.len(results)"
+ >
+<form action="&dtml-URL;" method="GET">
+  <table border="0">
+    <tr valign="top">
+      <dtml-if hasCatalog>
+      <td align="right"><dtml-translate domain=zwiki>Pages changed in the last</dtml-translate></td>
+      <dtml-in "['day','week','month','year','ever']" prefix=x>
+      <td align="center">
+        <input type=submit name=period value="&dtml-x_sequence_item;" 
+               <dtml-if "x_sequence_item==period">style="font-weight:bold"</dtml-if>
+               />
+        <dtml-if "x_sequence_item==period"><br />(&dtml-number;)</dtml-if>
+      </td>
+      </dtml-in>
+      <dtml-else>
+      <td align="right"><dtml-translate domain=zwiki>Recently changed pages, with summaries</dtml-translate>.</td>
+      </dtml-if>
+      <td>
+        <input type=checkbox name=summaries <dtml-if summaries>checked</dtml-if> />
+        <dtml-translate domain=zwiki>Show summaries ?</dtml-translate>
+      </td>
+      <dtml-unless hasCatalog>
+      <td align="center"><input type=submit value="<dtml-translate domain=zwiki>Refresh</dtml-translate>" /></td>
+      </dtml-unless>
+    </tr>
+  </table>
+</form>
+<table border="0" cellspacing="0" cellpadding="1" width="100%">
+  <tr>
+    <th align="left"><dtml-translate domain=zwiki>Page</dtml-translate></th>
+    <th align="left"><dtml-translate domain=zwiki>Edited&nbsp;by</dtml-translate>&nbsp;&nbsp;&nbsp;</th>
+    <th align="left"><dtml-translate domain=zwiki>Time</dtml-translate></th>
+  </tr>
+  <tr><td colspan=3></td></tr>
+  <dtml-in results prefix=x>
+  <tr valign="top" <dtml-var "(x_sequence_odd and 'bgcolor=#f0f0f0') or ''">>
+    <td>
+      <a href="&dtml-wikiurl;/&dtml.url_quote-id;" 
+         title=""
+         style="background-color:<dtml-var issueColour>;"
+         ><dtml-var "formatWikiname(Title)"></a>
+      <dtml-if "creation_time and (now - _.DateTime(creation_time)) < newdays">
+      <small><span style="background-color:palegreen"><dtml-translate domain=zwiki>NEW</dtml-translate></span></small>
+      </dtml-if>
+      &nbsp;&nbsp;&nbsp;
+      <dtml-unless summaries>
+      <dtml-if last_log>
+      <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b><dtml-var last_log></b><br/>&nbsp;
+      <dtml-else>
+      <br/><br/>
+      </dtml-if>
+      </dtml-unless>
+    </td>
+    <td align="left" nowrap="">
+      <dtml-if "last_editor and _.string.swapcase(last_editor) != last_editor">
+      <a href="&dtml-wikiurl;/<dtml-var "canonicalIdFrom(last_editor)">">&dtml-last_editor;</a>
+      <dtml-else>
+      <dtml-translate domain=zwiki>anonymous</dtml-translate>
+      </dtml-if>
+      &nbsp;&nbsp;&nbsp;
+    </td>
+    <td nowrap="">
+      <a href="&dtml-wikiurl;/&dtml-id;/diff">
+        <dtml-try><dtml-var "lastEditTime.toZone(zwiki_timezone)" fmt="pCommon">
+        <dtml-except><dtml-var lastEditTime fmt="pCommon">
+        </dtml-try>
+      </a>
+    </td>
+  </tr>
+  <dtml-if summaries>
+  <tr <dtml-var "(x_sequence_odd and 'bgcolor=#f0f0f0') or ''">>
+    <td colspan=2>
+      <small><dtml-var summary></small>
+      <dtml-if last_log>
+      <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b><dtml-var last_log></b>&nbsp;
+      </dtml-if>
+      <br/><br/>
+    </td>
+    <td>&nbsp;</td>
+  </tr>
+  </dtml-if>
+  </dtml-in>
+</table>
+
+<dtml-translate domain=zwiki>Pages marked (NEW) have been created within the last week</dtml-translate>.
+</dtml-let>
Index: /WAeUP_CMS/trunk/skins/WAEUP/revision_workflow.py
===================================================================
--- /WAeUP_CMS/trunk/skins/WAEUP/revision_workflow.py	(revision 275)
+++ /WAeUP_CMS/trunk/skins/WAEUP/revision_workflow.py	(revision 275)
@@ -0,0 +1,326 @@
+#
+#
+# Generated by dumpDCWorkflow.py written by Sebastien Bigaret,
+# Scripts inline by Russ Ferriday, russf@topia.com
+#
+# Original workflow id/title: revision_workflow/Revision Workflow
+# Date: 2005/06/23 07:48:49.719 GMT+2
+#
+#
+# The following scripts have been detected:
+# - mail2admin (Script (Python))
+#
+"""
+Programmatically creates a workflow type
+"""
+__version__ = "$Revision: 1.1.1.1 $"[11:-2]
+
+from Products.CMFCore.WorkflowTool import addWorkflowFactory
+
+from Products.DCWorkflow.DCWorkflow import DCWorkflowDefinition
+
+def setupRevision_workflow(wf):
+    "..."
+    wf.setProperties(title='Revision Workflow')
+
+    for s in ['deleted', 'private', 'visible', 'published', 'pending', 'revision']:
+        wf.states.addState(s)
+    for t in ['hide', 'show', 're-submit', 'submit', 'publish', 'reject', 'retract', 'revise', 'delete']:
+        wf.transitions.addTransition(t)
+    for v in ['action', 'review_history', 'actor', 'comments', 'time']:
+        wf.variables.addVariable(v)
+    for l in ['revision_queue', 'deleted_queue', 'reviewer_queue']:
+        wf.worklists.addWorklist(l)
+    for p in ('Access contents information', 'Modify portal content', 'View', 'Change portal events'):
+        wf.addManagedPermission(p)
+    from Products.PythonScripts.PythonScript import manage_addPythonScript
+    for p in ['mail2admin']:
+        manage_addPythonScript(wf.scripts, p)
+
+
+
+    ## Initial State
+    wf.states.setInitialState('visible')
+
+    ## States initialization
+    sdef = wf.states['deleted']
+    sdef.setProperties(title="""""",
+                       transitions=('re-submit',))
+    sdef.setPermission('Access contents information', 0, ['Manager', 'Owner'])
+    sdef.setPermission('Modify portal content', 0, ['Manager', 'Owner'])
+    sdef.setPermission('View', 0, ['Manager', 'Owner'])
+    sdef.setPermission('Change portal events', 0, ['Manager', 'Owner'])
+
+    sdef = wf.states['private']
+    sdef.setProperties(title="""Visible and editable only by owner""",
+                       transitions=('show',))
+    sdef.setPermission('Access contents information', 0, ['Manager', 'Owner'])
+    sdef.setPermission('Modify portal content', 0, ['Manager', 'Owner'])
+    sdef.setPermission('View', 0, ['Manager', 'Owner'])
+    sdef.setPermission('Change portal events', 0, ['Manager', 'Owner'])
+
+    sdef = wf.states['visible']
+    sdef.setProperties(title="""Visible but not published""",
+                       transitions=('delete', 'hide', 'publish', 'submit'))
+    sdef.setPermission('Access contents information', 1, ['Anonymous', 'Manager', 'Reviewer'])
+    sdef.setPermission('Modify portal content', 0, ['Manager', 'Owner'])
+    sdef.setPermission('View', 1, ['Anonymous', 'Manager', 'Reviewer'])
+    sdef.setPermission('Change portal events', 0, ['Manager', 'Owner'])
+
+    sdef = wf.states['published']
+    sdef.setProperties(title="""Public""",
+                       transitions=('delete', 'reject', 'retract', 'revise'))
+    sdef.setPermission('Access contents information', 1, ['Anonymous', 'Manager'])
+    sdef.setPermission('Modify portal content', 0, ['Manager'])
+    sdef.setPermission('View', 1, ['Anonymous', 'Manager'])
+    sdef.setPermission('Change portal events', 0, ['Manager'])
+
+    sdef = wf.states['pending']
+    sdef.setProperties(title="""Waiting for reviewer""",
+                       transitions=('publish', 'reject', 'retract', 'revise'))
+    sdef.setPermission('Access contents information', 1, ['Manager', 'Owner', 'Reviewer'])
+    sdef.setPermission('Modify portal content', 0, ['Manager', 'Reviewer'])
+    sdef.setPermission('View', 1, ['Manager', 'Owner', 'Reviewer'])
+    sdef.setPermission('Change portal events', 0, ['Manager', 'Reviewer'])
+
+    sdef = wf.states['revision']
+    sdef.setProperties(title="""Waiting for member""",
+                       transitions=('delete', 'publish', 're-submit', 'retract'))
+    sdef.setPermission('Access contents information', 1, ['Anonymous', 'Manager', 'Reviewer'])
+    sdef.setPermission('Modify portal content', 0, ['Manager', 'Owner'])
+    sdef.setPermission('View', 1, ['Anonymous', 'Manager', 'Reviewer'])
+    sdef.setPermission('Change portal events', 0, ['Manager', 'Owner'])
+
+    ## Scripts Installation
+    scrdef = wf.scripts['mail2admin']
+    scrdef.ZPythonScript_edit('',
+    """## Script (Python) "mail2admin"
+##bind container=container
+##bind context=context
+##bind namespace=
+##bind script=script
+##bind subpath=traverse_subpath
+##parameters=state_change
+##title=
+##
+# the objects we need
+object = state_change.object
+mship = context.portal_membership
+mhost = context.MailHost
+prop = context.portal_properties
+
+# the message format, %s will be filled in from data
+message = <com.topia.constants.tquote.proxy>
+From: %s
+To: %s
+Subject: New item submitted for approval - %s
+
+%s
+
+URL: %s
+<com.topia.constants.tquote.proxy>
+
+msg = message % (
+     prop.email_from_address,
+     prop.email_from_address,
+     object.TitleOrId(),
+     object.Description(),
+     object.absolute_url()
+     )
+mhost.send(msg)
+""".replace("<com.topia.constants.tquote.proxy>", '"""'))
+
+
+    ## Transitions initialization
+    tdef = wf.transitions['hide']
+    tdef.setProperties(title="""Member makes content private""",
+                       new_state_id="""private""",
+                       trigger_type=1,
+                       script_name="""""",
+                       after_script_name="""""",
+                       actbox_name="""Make private""",
+                       actbox_url="""%(content_url)s/content_hide_form""",
+                       actbox_category="""workflow""",
+                       props={'guard_roles': 'Owner'},
+                       )
+
+    tdef = wf.transitions['show']
+    tdef.setProperties(title="""Member makes content visible""",
+                       new_state_id="""visible""",
+                       trigger_type=1,
+                       script_name="""""",
+                       after_script_name="""""",
+                       actbox_name="""Make visible""",
+                       actbox_url="""%(content_url)s/content_show_form""",
+                       actbox_category="""workflow""",
+                       props={'guard_roles': 'Owner'},
+                       )
+
+    tdef = wf.transitions['re-submit']
+    tdef.setProperties(title="""Member requests re-publishing""",
+                       new_state_id="""pending""",
+                       trigger_type=1,
+                       script_name="""""",
+                       after_script_name="""mail2admin""",
+                       actbox_name="""Re-submit""",
+                       actbox_url="""%(content_url)s/content_submit_form""",
+                       actbox_category="""workflow""",
+                       props={'guard_permissions': 'Request review'},
+                       )
+
+    tdef = wf.transitions['submit']
+    tdef.setProperties(title="""Member requests publishing""",
+                       new_state_id="""pending""",
+                       trigger_type=1,
+                       script_name="""""",
+                       after_script_name="""mail2admin""",
+                       actbox_name="""Submit""",
+                       actbox_url="""%(content_url)s/content_submit_form""",
+                       actbox_category="""workflow""",
+                       props={'guard_permissions': 'Request review'},
+                       )
+
+    tdef = wf.transitions['publish']
+    tdef.setProperties(title="""Reviewer publishes content""",
+                       new_state_id="""published""",
+                       trigger_type=1,
+                       script_name="""""",
+                       after_script_name="""""",
+                       actbox_name="""Publish""",
+                       actbox_url="""%(content_url)s/content_publish_form""",
+                       actbox_category="""workflow""",
+                       props={'guard_permissions': 'Review portal content'},
+                       )
+
+    tdef = wf.transitions['reject']
+    tdef.setProperties(title="""Reviewer rejects submission""",
+                       new_state_id="""revision""",
+                       trigger_type=1,
+                       script_name="""""",
+                       after_script_name="""""",
+                       actbox_name="""Reject""",
+                       actbox_url="""%(content_url)s/content_reject_form""",
+                       actbox_category="""workflow""",
+                       props={'guard_permissions': 'Review portal content'},
+                       )
+
+    tdef = wf.transitions['retract']
+    tdef.setProperties(title="""Reviewer retracts submission""",
+                       new_state_id="""visible""",
+                       trigger_type=1,
+                       script_name="""""",
+                       after_script_name="""""",
+                       actbox_name="""Retract""",
+                       actbox_url="""%(content_url)s/content_retract_form""",
+                       actbox_category="""workflow""",
+                       props={'guard_permissions': 'Review portal content'},
+                       )
+
+    tdef = wf.transitions['revise']
+    tdef.setProperties(title="""Member revises submission""",
+                       new_state_id="""revision""",
+                       trigger_type=1,
+                       script_name="""""",
+                       after_script_name="""""",
+                       actbox_name="""Revise""",
+                       actbox_url="""""",
+                       actbox_category="""workflow""",
+                       props={'guard_permissions': 'Request review'},
+                       )
+
+    tdef = wf.transitions['delete']
+    tdef.setProperties(title="""Member requests deletion""",
+                       new_state_id="""deleted""",
+                       trigger_type=1,
+                       script_name="""""",
+                       after_script_name="""mail2admin""",
+                       actbox_name="""Delete""",
+                       actbox_url="""""",
+                       actbox_category="""workflow""",
+                       props={'guard_permissions': 'Request review'},
+                       )
+
+    ## State Variable
+    wf.variables.setStateVar('review_state')
+
+    ## Variables initialization
+    vdef = wf.variables['action']
+    vdef.setProperties(description="""The last transition""",
+                       default_value="""""",
+                       default_expr="""transition/getId|nothing""",
+                       for_catalog=0,
+                       for_status=1,
+                       update_always=1,
+                       props=None)
+
+    vdef = wf.variables['review_history']
+    vdef.setProperties(description="""Provides access to workflow history""",
+                       default_value="""""",
+                       default_expr="""state_change/getHistory""",
+                       for_catalog=0,
+                       for_status=0,
+                       update_always=0,
+                       props={'guard_permissions': 'Request review; Review portal content'})
+
+    vdef = wf.variables['actor']
+    vdef.setProperties(description="""The ID of the user who performed the last transition""",
+                       default_value="""""",
+                       default_expr="""user/getId""",
+                       for_catalog=0,
+                       for_status=1,
+                       update_always=1,
+                       props=None)
+
+    vdef = wf.variables['comments']
+    vdef.setProperties(description="""Comments about the last transition""",
+                       default_value="""""",
+                       default_expr="""python:state_change.kwargs.get('comment', '')""",
+                       for_catalog=0,
+                       for_status=1,
+                       update_always=1,
+                       props=None)
+
+    vdef = wf.variables['time']
+    vdef.setProperties(description="""Time of the last transition""",
+                       default_value="""""",
+                       default_expr="""state_change/getDateTime""",
+                       for_catalog=0,
+                       for_status=1,
+                       update_always=1,
+                       props=None)
+
+    ## Worklists Initialization
+    ldef = wf.worklists['revision_queue']
+    ldef.setProperties(description="""Revision monitor""",
+                       actbox_name="""In revision (%(count)d)""",
+                       actbox_url="""%(portal_url)s/search?review_state=revision""",
+                       actbox_category="""global""",
+                       props={'guard_permissions': 'Review portal content', 'var_match_review_state': 'revision'})
+
+    ldef = wf.worklists['deleted_queue']
+    ldef.setProperties(description="""Deletion monitor""",
+                       actbox_name="""Deleted (%(count)d)""",
+                       actbox_url="""%(portal_url)s/search?review_state=deleted""",
+                       actbox_category="""global""",
+                       props={'guard_permissions': 'Review portal content', 'var_match_review_state': 'deleted'})
+
+    ldef = wf.worklists['reviewer_queue']
+    ldef.setProperties(description="""Revision monitor""",
+                       actbox_name="""Pending (%(count)d)""",
+                       actbox_url="""%(portal_url)s/search?review_state=pending""",
+                       actbox_category="""global""",
+                       props={'guard_permissions': 'Review portal content', 'var_match_review_state': 'pending'})
+
+
+def createRevision_workflow(id):
+    "..."
+    ob = DCWorkflowDefinition(id)
+    setupRevision_workflow(ob)
+    return ob
+
+addWorkflowFactory(createRevision_workflow,
+                   id='revision_workflow',
+                   title='Revision Workflow')
+
+
+
Index: /WAeUP_CMS/trunk/skins/WAEUP/selectMenus.py
===================================================================
--- /WAeUP_CMS/trunk/skins/WAEUP/selectMenus.py	(revision 275)
+++ /WAeUP_CMS/trunk/skins/WAEUP/selectMenus.py	(revision 275)
@@ -0,0 +1,17 @@
+## Script (Python) "selectMenus"
+##bind container=container
+##bind context=context
+##bind namespace=
+##bind script=script
+##bind subpath=traverse_subpath
+##parameters=type_name=None
+##title=
+##
+pm = context.portal_membership
+member = pm.getAuthenticatedMember()
+
+menus = context.portal_catalog(portal_type=('Menu', 'TaskMenu'))
+isAdmin = member is not None and member.has_role(('Manager', 'Staff',))
+if not isAdmin:
+    menus = [ m for m in menus if not 'admin' in m.getId ]
+return [ m.getObject() for m in menus ]
Index: /WAeUP_CMS/trunk/skins/WAEUP/waeup.css.dtml
===================================================================
--- /WAeUP_CMS/trunk/skins/WAEUP/waeup.css.dtml	(revision 275)
+++ /WAeUP_CMS/trunk/skins/WAEUP/waeup.css.dtml	(revision 275)
@@ -0,0 +1,193 @@
+/* <dtml-with base_properties> (do not remove this :) */
+/* <dtml-call "REQUEST.set('portal_url', portal_url())"> (not this either :) */
+
+/* In portlets.css */
+
+.portletHeader {
+    background-color: &dtml-globalBackgroundColor;;
+    border: &dtml-borderWidth; &dtml-borderStyle; &dtml-globalBorderColor;;
+    border-bottom: none;
+    padding: 0.2em 0em 0em 1em;
+    text-transform: &dtml-textTransform;;
+    font-weight: bold;
+    line-height: 1.6em;
+}
+
+
+/* In public.css */
+
+
+#portal-logo_left {
+    background: url(&dtml-portal_url;/&dtml-logoNameLeft;) no-repeat;
+    border: 0;
+    margin: 0;
+    padding: 0;
+    float: right;
+}
+
+#portal-logo_left a {
+    display: block;
+    text-decoration: none;
+    overflow: hidden;
+    border: 0;
+    margin: 0;
+    padding: 0;
+    padding-top: <dtml-var "_[logoNameLeft].height">px;
+    height: 0px !important;
+    height /**/: <dtml-var "_[logoNameLeft].height">px;
+    width: <dtml-var "_[logoNameLeft].width">px;
+    cursor: pointer;
+}
+
+#portal-logo_right {
+    background: url(&dtml-portal_url;/&dtml-logoNameRight;) no-repeat;
+    border: 0;
+    margin: 0;
+    padding: 0;
+    float: left;
+}
+
+#portal-logo_right a {
+    display: block;
+    text-decoration: none;
+    overflow: hidden;
+    border: 0;
+    margin: 0;
+    padding: 0;
+    padding-top: <dtml-var "_[logoNameRight].height">px;
+    height: 0px !important;
+    height /**/: <dtml-var "_[logoNameRight].height">px;
+    width: <dtml-var "_[logoNameRight].width">px;
+    cursor: pointer;
+}
+
+.LogoLeft {
+    margin-top: 0.75em;
+}
+
+.LogoRight {
+    margin-top: 0.75em;
+    margin-left: 1.6em;
+}
+
+#portal-searchbox {
+    float: right;
+    clear: right;
+    background-color: transparent;
+    margin: 1.5em 0 0 0;
+    padding: 0 2em 0 0;
+    text-align: right;
+    text-transform: &dtml-textTransform;;
+    white-space: nowrap;
+    z-index: 2;
+    position: absolute;
+    right: 12px;
+    top: 20px
+}
+
+#portal-siteactions {
+    background-color: transparent;
+    white-space: nowrap;
+    list-style-image: none;
+    list-style-type: none;
+    margin: 1px 0 0 0;
+    height: auto;
+    line-height: normal;
+    float: right;
+    padding: 3px 2em 3px 0;
+    position  :absolute;
+    right    : 10px;
+    top: 0px
+}
+
+
+#portal-breadcrumbs {
+    /* The path bar, including breadcrumbs and add to favorites */
+    border-bottom-color: &dtml-globalBorderColor;;
+    border-bottom-style: &dtml-borderStyle;;
+    border-bottom-width: &dtml-borderWidth;;
+    border-bottom: none;
+    padding: 0em;
+    margin-left: 2.2em;
+    text-transform: &dtml-textTransform;;
+    line-height: 1.6em;
+}
+
+
+
+
+#portal-footer {
+    background-color: &dtml-globalBackgroundColor;;
+    border-top: &dtml-borderWidth; &dtml-borderStyle; &dtml-globalBorderColor;;
+    border-bottom: &dtml-borderWidth; &dtml-borderStyle; &dtml-globalBorderColor;;
+    float: none;
+    line-height: 1.2em;
+    margin: 2em 0em 1em 0em;
+    padding: 0em 1.2em 0em 1.2em;
+    text-align: center;
+}
+
+
+#portal-footer a {
+    text-decoration: none;
+    color: &dtml-discreetColor;;
+    border: none;
+}
+
+#portal-footer a:visited {
+    color: &dtml-discreetColor;;
+    background-color: transparent;
+}
+
+
+/* In base.css */
+
+
+h1 {
+    font-size: 160%;
+}
+h2 {
+    font-size: 150%;
+    border-bottom: none;
+}
+
+h3 {
+    font-size: 140%;
+    border-bottom: none;
+    font-weight: normal;
+}
+
+h4 {
+    font-size: 120%;
+    border-bottom: none;
+    font-weight: normal;
+}
+
+h5 {
+    font-size: 100%;
+    border-bottom: none;
+    font-weight: bold;
+}
+
+h6 {
+    font-size: &dtml-fontSmallSize;;
+    border-bottom: none;
+    font-weight: bold;
+}
+
+ul {
+    line-height: 1.5em;
+    margin: 0.5em 0 0 1.5em;
+    padding: 0;
+    list-style-type: circle;
+    list-style-image: none;
+}
+
+dd {
+    line-height: 1.5em;
+    margin-bottom: 0.5em;
+    margin-top: 0.5em;
+
+}
+
+/* </dtml-with> */
Index: /WAeUP_CMS/trunk/skins/WAEUP/waeup.css.dtml.metadata
===================================================================
--- /WAeUP_CMS/trunk/skins/WAEUP/waeup.css.dtml.metadata	(revision 275)
+++ /WAeUP_CMS/trunk/skins/WAEUP/waeup.css.dtml.metadata	(revision 275)
@@ -0,0 +1,2 @@
+[default]
+title = WAEUP additional style sheet
