[commits] r132 - in selinux-site/trunk: selinux.policy/selinux/policy/profiles/default selinux.theme/selinux/theme selinux.theme/selinux/theme/profiles/default selinux.theme/selinux/theme/skins selinux.theme/selinux/theme/skins/selinux_images selinux.theme/selinux/theme/skins/selinux_styles selinux.theme/selinux/theme/skins/selinux_templates

tim at mail.se.linux.org tim at mail.se.linux.org
Sön Nov 11 23:35:44 CET 2007


Author: tim
Date: 2007-11-11 23:35:43 +0100 (Sun, 11 Nov 2007)
New Revision: 132

Added:
   selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_images/
   selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_images/busnet.png
   selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_images/datorsektionen.png
   selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_images/informatik.png
   selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_images/logo-ext.jpg
   selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_images/logo.jpg
   selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_images/plone.gif
   selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_images/rss.png
   selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_images/southpole.png
   selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_images/sverigekarta.png
   selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_images/teknikmejeriet.gif
   selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_styles/
   selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_styles/base_properties.props
   selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_styles/ploneCustom.css.dtml
   selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_templates/
   selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_templates/getNotAddableTypes.py
   selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_templates/global_cache_settings.pt
   selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_templates/join_form.cpt
   selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_templates/join_form.cpt.metadata
   selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_templates/join_form_validate.vpy
   selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_templates/personalize.cpy
   selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_templates/personalize.cpy.metadata
   selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_templates/personalize_form.cpt
   selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_templates/personalize_form.cpt.metadata
   selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_templates/registered_notify_template.pt
   selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_templates/registered_notify_template.tmpl
   selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_templates/registered_notify_template.tmpl.metadata
   selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_templates/selinux_index.pt
   selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_templates/selinux_register.cpy
   selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_templates/selinux_register.cpy.metadata
Removed:
   selinux-site/trunk/selinux.theme/selinux/theme/skins/selinuxtheme/
Modified:
   selinux-site/trunk/selinux.policy/selinux/policy/profiles/default/skins.xml
   selinux-site/trunk/selinux.theme/selinux/theme/configure.zcml
   selinux-site/trunk/selinux.theme/selinux/theme/profiles/default/skins.xml
Log:
Split up the image, styles and templates and scripts to three directories. The cause is mainly to allow a theme to include our templates but don't need to use our css.


Modified: selinux-site/trunk/selinux.policy/selinux/policy/profiles/default/skins.xml
===================================================================
--- selinux-site/trunk/selinux.policy/selinux/policy/profiles/default/skins.xml	2007-11-11 14:15:27 UTC (rev 131)
+++ selinux-site/trunk/selinux.policy/selinux/policy/profiles/default/skins.xml	2007-11-11 22:35:43 UTC (rev 132)
@@ -3,7 +3,9 @@
   default_skin="SeLinux Theme">
 
   <skin-path name="SeLinux Theme" based-on="Plone Default">
-    <layer name="selinuxtheme" insert-after="custom"/>
+    <layer name="selinux_templates" insert-after="custom"/>
+    <layer name="selinux_images" insert-after="custom"/>
+    <layer name="selinux_styles" insert-after="custom"/>
   </skin-path>
 
 </object>

Modified: selinux-site/trunk/selinux.theme/selinux/theme/configure.zcml
===================================================================
--- selinux-site/trunk/selinux.theme/selinux/theme/configure.zcml	2007-11-11 14:15:27 UTC (rev 131)
+++ selinux-site/trunk/selinux.theme/selinux/theme/configure.zcml	2007-11-11 22:35:43 UTC (rev 132)
@@ -6,7 +6,9 @@
     i18n_domain="plone">
 
   <!-- register the selinuxtheme layer directory -->
-  <cmf:registerDirectory name="selinuxtheme"/>
+  <cmf:registerDirectory name="selinux_images"/>
+  <cmf:registerDirectory name="selinux_templates"/>
+  <cmf:registerDirectory name="selinux_styles"/>
 
   <genericsetup:registerProfile
       name="selinux"

Modified: selinux-site/trunk/selinux.theme/selinux/theme/profiles/default/skins.xml
===================================================================
--- selinux-site/trunk/selinux.theme/selinux/theme/profiles/default/skins.xml	2007-11-11 14:15:27 UTC (rev 131)
+++ selinux-site/trunk/selinux.theme/selinux/theme/profiles/default/skins.xml	2007-11-11 22:35:43 UTC (rev 132)
@@ -1,7 +1,11 @@
 <?xml version="1.0"?>
 <object name="portal_skins" meta_type="Plone Skins Tool">
 
-  <object name="selinuxtheme" meta_type="Filesystem Directory View"
-         directory="selinux.theme:skins/selinuxtheme"/>
+  <object name="selinux_images" meta_type="Filesystem Directory View"
+         directory="selinux.theme:skins/selinux_images"/>
+  <object name="selinux_styles" meta_type="Filesystem Directory View"
+         directory="selinux.theme:skins/selinux_styles"/>
+  <object name="selinux_templates" meta_type="Filesystem Directory View"
+         directory="selinux.theme:skins/selinux_templates"/>
 
 </object>

Copied: selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_images/busnet.png (from rev 126, selinux-site/trunk/selinux.theme/selinux/theme/skins/selinuxtheme/busnet.png)
===================================================================
(Binary files differ)

Copied: selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_images/datorsektionen.png (from rev 126, selinux-site/trunk/selinux.theme/selinux/theme/skins/selinuxtheme/datorsektionen.png)
===================================================================
(Binary files differ)

Copied: selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_images/informatik.png (from rev 126, selinux-site/trunk/selinux.theme/selinux/theme/skins/selinuxtheme/informatik.png)
===================================================================
(Binary files differ)

Copied: selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_images/logo-ext.jpg (from rev 126, selinux-site/trunk/selinux.theme/selinux/theme/skins/selinuxtheme/logo-ext.jpg)
===================================================================
(Binary files differ)

Copied: selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_images/logo.jpg (from rev 126, selinux-site/trunk/selinux.theme/selinux/theme/skins/selinuxtheme/logo.jpg)
===================================================================
(Binary files differ)

Copied: selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_images/plone.gif (from rev 126, selinux-site/trunk/selinux.theme/selinux/theme/skins/selinuxtheme/plone.gif)
===================================================================
(Binary files differ)

Copied: selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_images/rss.png (from rev 126, selinux-site/trunk/selinux.theme/selinux/theme/skins/selinuxtheme/rss.png)
===================================================================
(Binary files differ)

Copied: selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_images/southpole.png (from rev 126, selinux-site/trunk/selinux.theme/selinux/theme/skins/selinuxtheme/southpole.png)
===================================================================
(Binary files differ)

Copied: selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_images/sverigekarta.png (from rev 126, selinux-site/trunk/selinux.theme/selinux/theme/skins/selinuxtheme/sverigekarta.png)
===================================================================
(Binary files differ)

Copied: selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_images/teknikmejeriet.gif (from rev 126, selinux-site/trunk/selinux.theme/selinux/theme/skins/selinuxtheme/teknikmejeriet.gif)
===================================================================
(Binary files differ)

Copied: selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_styles/base_properties.props (from rev 126, selinux-site/trunk/selinux.theme/selinux/theme/skins/selinuxtheme/base_properties.props)
===================================================================
--- selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_styles/base_properties.props	                        (rev 0)
+++ selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_styles/base_properties.props	2007-11-11 22:35:43 UTC (rev 132)
@@ -0,0 +1,48 @@
+title:string=Plone's color, font, logo and border defaults
+
+plone_skin:string=Plone Default
+
+logoName:string=logo.jpg
+logoColor:string=#5890bf
+
+fontFamily:string="Lucida Grande", Verdana, Lucida, Helvetica, Arial, sans-serif
+fontBaseSize:string=69%
+fontColor:string=Black
+fontSmallSize:string=90%
+
+backgroundColor:string=White
+
+linkColor:string=#406585
+linkActiveColor:string=Red
+linkVisitedColor:string=Purple
+
+borderWidth:string=1px
+borderStyle:string=solid
+borderStyleAnnotations:string=solid
+
+globalBorderColor:string=#5890bf
+globalBackgroundColor:string=#c8dff3
+globalFontColor:string=#436976
+
+headingFontFamily:string="Lucida Grande", Verdana, Lucida, Helvetica, Arial, sans-serif
+
+contentViewBorderColor:string=#eeb909
+contentViewBackgroundColor:string=#ffdf77
+contentViewFontColor:string=#326188
+
+inputFontColor:string=Black
+
+textTransform:string=none
+
+evenRowBackgroundColor:string=#eef3f5 
+oddRowBackgroundColor:string=transparent
+
+notifyBorderColor:string=#ffa500
+notifyBackgroundColor:string=#ffce7b
+
+discreetColor:string=#76797c
+helpBackgroundColor:string=#ffffe1
+
+portalMinWidth:string=70em
+columnOneWidth:string=16em
+columnTwoWidth:string=16em

Copied: selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_styles/ploneCustom.css.dtml (from rev 126, selinux-site/trunk/selinux.theme/selinux/theme/skins/selinuxtheme/ploneCustom.css.dtml)
===================================================================
--- selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_styles/ploneCustom.css.dtml	                        (rev 0)
+++ selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_styles/ploneCustom.css.dtml	2007-11-11 22:35:43 UTC (rev 132)
@@ -0,0 +1,153 @@
+/*
+ *  This is the file where you put your CSS changes. 
+ *  You should preferrably use this and override the 
+ *  relevant properties you want to change here instead 
+ *  of customizing plone.css to survive upgrades. Writing
+ *  your own plone.css only makes sense for very heavy 
+ *  customizations. Useful variables from Plone are 
+ *  documented at the bottom of this file.
+ */
+ 
+/* <dtml-with base_properties> (do not remove this :) */
+/* <dtml-call "REQUEST.set('portal_url', portal_url())"> (not this either :) */
+
+/* header */
+
+#portal-header {
+    margin: 0pt;
+}
+
+#portal-logo {
+    background: url(&dtml-portal_url;/logo.jpg) no-repeat;
+    display: block;
+    height: 129px;
+    width: 60%;
+}
+
+body {
+    background: url(&dtml-portal_url;/logo-ext.jpg) repeat-x;
+}
+
+#portal-title {
+    position: absolute;
+    top: 47px;
+    left: 305px;
+    font-size: 3em;
+    color: &dtml-logoColor;;
+    text-decoration: none;
+}
+
+#portal-siteactions li a {
+    border: none;
+    color: white;
+}
+
+#portal-siteactions li a:hover {
+    border: none;
+}
+
+#portal-globalnav li a {
+    font-size: 110%;
+    font-weight: bold;
+}
+
+#frontpageLinks dl {
+    float: left;
+    width: 30%;
+    margin-top: 0em;
+    text-align: center;
+}
+
+#frontpageLinks dt {
+    font-size: 12pt;
+}
+
+#frontpageLinks dd {
+    text-align: center;
+    margin-left: 0em;
+}
+
+/*
+.newsbox {
+    width: 40em;
+}
+*/
+
+/* </dtml-with> */
+
+/* DOCUMENTATION ON PRE-DEFINED PROPERTIES FROM PLONE */
+
+ /* You can insert colors and other variables from Plone's 
+    base_properties by doing:
+    
+    & dtml-variableName ; (without the spaces, excluded here to not make it render)
+    
+    Example:
+    
+    myLink {
+        color: & dtml-fontColor ;   (again, without the spaces)
+    }
+ 
+   This means you can generate your own elements that use Plone's defaults,
+   and respect any customizations people have done. See base_properties for
+   the default values.
+ 
+   These are the available properties:
+   
+   logoName - the file name of the portal logo
+   
+   fontFamily - the font family used for all text that is not headers
+   
+   fontBaseSize - the base font size that everything is calculated from
+   
+   fontColor - the main font color
+   
+   fontSmallSize - used for various elements like buttons and discreet text
+   
+   discreetColor - the font color of discreet text
+
+   backgroundColor - the background color 
+   
+   linkColor - the color used on normal links
+
+   linkActiveColor - color used on active links
+
+   linkVisitedColor - color used on visited links
+   
+   borderWidth - the width of most borders in Plone
+   
+   borderStyle - the style of the border lines, normally solid
+   
+   borderStyleAnnotations - style of border lines on comments etc
+   
+   globalBorderColor - the border color used on the main tabs, the portlets etc
+   
+   globalBackgroundColor - background color for the selected tabs, portlet headings etc
+   
+   globalFontColor - the color of the font in the tabs and in portlet headings
+   
+   headingFontFamily - font family for h1/h2/h3/h4/h5/h6 headlines
+   
+   contentViewBorderColor - the content view tabs border color
+   
+   contentViewBackgroundColor - the content view tabs background color
+   
+   contentViewFontColor - the font color used in the content view tabs
+   
+   inputFontColor - the font color used for input elements
+   
+   textTransform - whether to lowercase text in portlets, tabs etc.
+   
+   evenRowBackgroundColor - the background color of even rows in listings
+   
+   oddRowBackgroundColor - the background color of even rows in listings
+   
+   notifyBorderColor - border color of notification elements like the status message, the calendar focus
+   
+   notifyBackgroundColor - background color of notification elements like the status message, the calendar focus
+   
+   helpBackgroundColor - background color of information pop-ups (currently not used)
+          
+ */
+
+

Copied: selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_templates/getNotAddableTypes.py (from rev 126, selinux-site/trunk/selinux.theme/selinux/theme/skins/selinuxtheme/getNotAddableTypes.py)
===================================================================
--- selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_templates/getNotAddableTypes.py	                        (rev 0)
+++ selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_templates/getNotAddableTypes.py	2007-11-11 22:35:43 UTC (rev 132)
@@ -0,0 +1,21 @@
+## Script (Python) "getNotAddableTypes"
+##bind container=container
+##bind context=context
+##bind namespace=
+##bind script=script
+##bind subpath=traverse_subpath
+##parameters=
+##title=
+##
+# customize this script to filter addable portal types based on
+# context, the current user or other criteria
+
+disallow = ['Favorite']
+
+if context.getId() != 'nyheter':
+    disallow.append('News Item')
+
+if context.getId() != 'handelser':
+    disallow.append('Event')
+
+return disallow

Copied: selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_templates/global_cache_settings.pt (from rev 126, selinux-site/trunk/selinux.theme/selinux/theme/skins/selinuxtheme/global_cache_settings.pt)
===================================================================
--- selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_templates/global_cache_settings.pt	                        (rev 0)
+++ selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_templates/global_cache_settings.pt	2007-11-11 22:35:43 UTC (rev 132)
@@ -0,0 +1,10 @@
+<metal:cacheheaders define-macro="cacheheaders">
+    <metal:block tal:define="dummy python:request.RESPONSE.setHeader('Content-Type', 'text/html;;charset=%s' % charset)" />
+    <metal:block tal:define="dummy python:request.RESPONSE.setHeader('Content-Language', lang)" />
+    <metal:block tal:define="dummy python:request.RESPONSE.setHeader('Expires', 'Sat, 1 Jan 2000 00:00:00 GMT')" />
+    <metal:block tal:content="structure python:here.enableHTTPCompression(request=request, debug=0)" />
+
+    <metal:anon tal:condition="python: isAnon and context.portal_type == 'Plone Site'">
+        <metal:block tal:define="dummy python:request.RESPONSE.setHeader('Cache-control', 's-maxage=3600')" />
+    </metal:anon>
+</metal:cacheheaders>

Copied: selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_templates/join_form.cpt (from rev 126, selinux-site/trunk/selinux.theme/selinux/theme/skins/selinuxtheme/join_form.cpt)
===================================================================
--- selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_templates/join_form.cpt	                        (rev 0)
+++ selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_templates/join_form.cpt	2007-11-11 22:35:43 UTC (rev 132)
@@ -0,0 +1,316 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
+      xmlns:tal="http://xml.zope.org/namespaces/tal"
+      xmlns:metal="http://xml.zope.org/namespaces/metal"
+      xmlns:i18n="http://xml.zope.org/namespaces/i18n"
+      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)" />
+    <metal:block fill-slot="column_one_slot" />
+    <metal:block fill-slot="column_two_slot" />
+</head>
+
+<body>
+
+<div metal:fill-slot="main"
+     tal:define="errors options/state/getErrors;">
+
+  <h1 class="documentFirstHeading"
+      i18n:translate="heading_registration_form">Registration Form</h1>
+
+  <form action=""
+        class="enableAutoFocus"
+        method="post"
+        class="enableUnloadProtection"
+        tal:attributes="action template_id" >
+
+    <fieldset>
+
+      <legend i18n:translate="legend_personal_details">
+          Personal Details
+      </legend>
+
+      <input type="hidden" name="came_from" value=""
+             tal:condition="request/came_from|nothing"
+             tal:attributes="value request/came_from" />
+      <input type="hidden" name="last_visit:date" value="ZopeTime"
+             tal:attributes="value here/ZopeTime" />
+      <input type="hidden" name="prev_visit:date" value="ZopeTime"
+             tal:attributes="value here/ZopeTime" />
+      <input type="hidden" name="came_from_prefs" value=""
+             tal:attributes="value request/came_from_prefs|nothing" />
+
+      <div class="field"
+           tal:define="error errors/username| nothing;
+                       username request/username | nothing;"
+           tal:attributes="class python:test(error, 'field error', 'field')">
+
+        <label for="username"
+               i18n:translate="label_user_name">User Name</label>
+
+        <span class="fieldRequired" title="Required"
+              i18n:attributes="title title_required;"
+              i18n:translate="label_required">(Required)</span>
+
+              <div i18n:translate="help_user_name_creation_casesensitive"
+                   class="formHelp">
+                Enter a user name, usually something like
+                'jsmith'. No spaces or special characters.
+                Usernames and passwords are case sensitive,
+                make sure the caps lock key is not enabled.
+                This is the name used to log in.
+              </div>
+
+              <div tal:content="error">Validation error output</div>
+
+              <input type="text"
+                     name="username"
+                     id="username"
+                     size="30"
+                     value="username"
+                     tal:attributes="value username;"
+                     />
+      </div>
+
+      <div class="field"
+           tal:define="error errors/email | nothing;
+                       email request/email | nothing;"
+           tal:attributes="class python:test(error, 'field error', 'field')">
+
+        <label for="email"
+               i18n:translate="label_email">E-mail</label>
+
+        <span class="fieldRequired" title="Required"
+              i18n:attributes="title title_required;"
+              i18n:translate="label_required">(Required)</span>
+
+              <div class="formHelp" i18n:translate="help_email_creation">
+                Enter an email address. This is necessary in case the password
+                is lost. We respect your privacy, and will not give the address
+                away to any third parties or expose it anywhere.
+              </div>
+
+              <div tal:content="error">Validation error output</div>
+
+              <input type="text"
+                     name="email"
+                     id="email"
+                     size="30"
+                     tal:attributes="value email;"
+                     />
+      </div>
+
+
+
+      <div class="row"
+           tal:define="error errors/givenname| nothing;
+                       givenname request/givenname | nothing;"
+           tal:attributes="class python:test(error, 'field error', 'field')">
+
+        <label for="givenname"
+               i18n:translate="label_givenname">F&ouml;rnamn</label>
+
+        <span class="fieldRequired" title="Required"
+              i18n:attributes="title title_required;"
+              i18n:translate="label_required">(Required)</span>
+
+        <div class="formHelp" i18n:translate="help_givenname_creation">
+	Ange ditt f&ouml;rnamn.
+        </div>
+
+        <div tal:content="error">Validation error output</div>
+
+        <input type="text"
+               name="givenname"
+               id="givenname"
+               size="30"
+               value="givenname"
+               tal:attributes="value givenname;"
+               />
+
+      </div>
+
+      <div class="row"
+           tal:define="error errors/surname| nothing;
+                       surname request/surname | nothing;"
+           tal:attributes="class python:test(error, 'field error', 'field')">
+
+        <label for="surname"
+               i18n:translate="label_surname">Efternamn</label>
+
+        <span class="fieldRequired" title="Required"
+              i18n:attributes="title title_required;"
+              i18n:translate="label_required">(Required)</span>
+
+        <div class="formHelp" i18n:translate="help_surname_creation">
+          Ange ditt efternamn.
+        </div>
+
+        <div tal:content="error">Validation error output</div>
+
+        <input type="text"
+               name="surname"
+               id="surname"
+               size="30"
+               value="surname"
+               tal:attributes="value surname;"
+               />
+      </div>
+
+      <div class="row"
+           tal:define="error errors/postdress| nothing;
+                       postadress request/postadress | nothing;"
+           tal:attributes="class python:test(error, 'field error', 'field')">
+
+        <label for="postadress"
+               i18n:translate="label_postadress">Adress</label>
+
+        <span class="fieldRequired" title="Required"
+              i18n:attributes="title title_required;"
+              i18n:translate="label_required">(Required)</span>
+
+        <div class="formHelp" i18n:translate="help_postadress_creation">
+          Ange din adress.
+        </div>
+
+        <div tal:content="error">Validation error output</div>
+
+        <input type="text"
+               name="postadress"
+               id="postadress"
+               size="30"
+               value="postadress"
+               tal:attributes="value postadress;"
+               />
+      </div>
+
+      <div class="row"
+           tal:define="error errors/postnr| nothing;
+                       postnr request/postnr | nothing;"
+           tal:attributes="class python:test(error, 'field error', 'field')">
+
+        <label for="postnr"
+               i18n:translate="label_postnr">Postnummer</label>
+
+        <span class="fieldRequired" title="Required"
+              i18n:attributes="title title_required;"
+              i18n:translate="label_required">(Required)</span>
+
+        <div class="formHelp" i18n:translate="help_postnr_creation">
+          Skriv in ditt postnummer h&auml;r.
+        </div>
+
+        <div tal:content="error">Validation error output</div>
+
+        <input type="text"
+               name="postnr"
+               id="postnr"
+               size="30"
+               value="postnr"
+               tal:attributes="value postnr;"
+               />
+      </div>
+
+      <div class="row"
+           tal:define="error errors/location| nothing;
+                       location request/location | nothing;"
+           tal:attributes="class python:test(error, 'field error', 'field')">
+
+        <label for="location"
+               i18n:translate="label_location">Ort</label>
+
+        <span class="fieldRequired" title="Required"
+              i18n:attributes="title title_required;"
+              i18n:translate="label_required">(Required)</span>
+
+        <div class="formHelp" i18n:translate="help_location_creation">
+          Ange din postort.
+        </div>
+
+        <div tal:content="error">Validation error output</div>
+
+        <input type="text"
+               name="location"
+               id="location"
+               size="30"
+               value="location"
+               tal:attributes="value location;"
+               />
+      </div>
+
+      <div class="row"
+           tal:define="error errors/telenr| nothing;
+                       telenr request/telenr | nothing;"
+           tal:attributes="class python:test(error, 'field error', 'field')">
+
+        <label for="telenr"
+               i18n:translate="label_telenr">Telefonnummer</label>
+
+        <div class="formHelp" i18n:translate="help_telenr_creation">
+          Ange ditt telefonnummer, om du vill.
+        </div>
+
+        <div tal:content="error">Validation error output</div>
+
+        <input type="text"
+               name="telenr"
+               id="telenr"
+               size="30"
+               value="telenr"
+               tal:attributes="value telenr;"
+               />
+      </div>
+
+      <div class="row"
+           tal:define="error errors/mobile| nothing;
+                       mobile request/mobile | nothing;"
+           tal:attributes="class python:test(error, 'field error', 'field')">
+
+        <label for="mobile"
+               i18n:translate="label_mobile">Mobiltelefon</label>
+
+        <div class="formHelp" i18n:translate="help_mobile_creation">
+          Ange ditt mobiltelefonnummer, om du vill.
+        </div>
+
+        <div tal:content="error">Validation error output</div>
+
+        <input type="text"
+               name="mobile"
+               id="mobile"
+               size="30"
+               value="mobile"
+               tal:attributes="value mobile;"
+               />
+      </div>
+
+<!-- Registrera -->
+
+      <div class="field">
+        <div class="formHelp" i18n:translate="label_password_change_mail">
+          A URL will be generated and e-mailed to you; follow the link
+          to reach a page where you can change your password and
+          complete the registration process. 
+        </div>
+      </div>
+
+      <div class="formControls">
+        <input class="context"
+               type="submit"
+               name="form.button.Register"
+               value="Register"
+               i18n:attributes="value label_register;" />
+      </div>
+
+    </fieldset>
+
+    <input type="hidden" name="form.submitted" value="1" />
+
+  </form>
+</div>
+
+</body>
+</html>

Copied: selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_templates/join_form.cpt.metadata (from rev 126, selinux-site/trunk/selinux.theme/selinux/theme/skins/selinuxtheme/join_form.cpt.metadata)
===================================================================
--- selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_templates/join_form.cpt.metadata	                        (rev 0)
+++ selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_templates/join_form.cpt.metadata	2007-11-11 22:35:43 UTC (rev 132)
@@ -0,0 +1,10 @@
+[default]
+title=Please sign in
+border=None
+
+[validators]
+validators = validate_emailaddr,join_form_validate
+
+[actions]
+action.success = traverse_to:string:selinux_register
+action.failure = traverse_to:string:join_form

Copied: selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_templates/join_form_validate.vpy (from rev 126, selinux-site/trunk/selinux.theme/selinux/theme/skins/selinuxtheme/join_form_validate.vpy)
===================================================================
--- selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_templates/join_form_validate.vpy	                        (rev 0)
+++ selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_templates/join_form_validate.vpy	2007-11-11 22:35:43 UTC (rev 132)
@@ -0,0 +1,66 @@
+## Controller Python Script "validate_registration"
+##bind container=container
+##bind context=context
+##bind namespace=
+##bind script=script
+##bind state=state
+##bind subpath=traverse_subpath
+##parameters=username='',email='',password='',password_confirm='',givenname='',surname='',postadress='',postnr='',location=''
+##title=validates the Registration of a User
+
+from Products.CMFPlone import PloneMessageFactory as _
+
+reg_tool=context.portal_registration
+def missing(field):
+    state.setError(field, _(u'This field is required, please provide some information.'), 'input_required')
+def nomatch(field):
+    state.setError(field, _(u'Passwords do not match.'), 'nomatch_password')
+def minlimit(field):
+    state.setError(field, _(u'Passwords must contain at least 5 letters.'), 'min_password')
+def notallowed(field):
+    state.setError(field, _(u'This username is reserved. Please choose a different name.'), 'not_allowed')
+
+if not username:
+    missing('username')
+if not email:
+    missing('email')
+if not givenname:
+    missing('givenname')
+if not surname:
+    missing('surname')
+if not postadress:
+    missing('postadress')
+if not postnr:
+    missing('postnr')
+if not location:
+    missing('location')
+
+if username and username == context.portal_url.getPortalObject().getId():
+    notallowed('username')
+
+properties = context.portal_properties.site_properties
+if not properties.validate_email:
+     if password!=password_confirm:
+         nomatch('password')
+         nomatch('password_confirm')
+
+     if not password:
+         missing('password')
+     if not password_confirm:
+         missing('password_confirm')
+
+     if not state.getError('password') and len(password) < 5:
+         minlimit('password')
+         minlimit('password_confirm')
+
+if not state.getError('username') and not reg_tool.isMemberIdAllowed(username):
+    state.setError('username',
+                   _(u'The login name you selected is already in use or is not valid. Please choose another.'),
+                   'username_invalid' )
+
+if state.getErrors():
+    context.plone_utils.addPortalMessage(_(u'Please correct the indicated errors.'), 'error')
+    return state.set(status='failure')
+else:
+    context.plone_utils.addPortalMessage(_(u'You have been registered.'))
+    return state

Copied: selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_templates/personalize.cpy (from rev 126, selinux-site/trunk/selinux.theme/selinux/theme/skins/selinuxtheme/personalize.cpy)
===================================================================
--- selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_templates/personalize.cpy	                        (rev 0)
+++ selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_templates/personalize.cpy	2007-11-11 22:35:43 UTC (rev 132)
@@ -0,0 +1,58 @@
+## Controller Python Script "personalize"
+##bind container=container
+##bind context=context
+##bind namespace=
+##bind script=script
+##bind state=state
+##bind subpath=traverse_subpath
+##parameters=visible_ids=None, portrait=None, listed=None, REQUEST=None, ext_editor=None
+##title=Personalization Handler.
+
+from Products.CMFPlone.utils import transaction_note
+from Products.CMFPlone import PloneMessageFactory as _
+
+member=context.portal_membership.getAuthenticatedMember()
+
+REQUEST = context.REQUEST
+REQUEST.form['fullname'] = REQUEST['givenname'] + ' ' + REQUEST['surname']
+
+
+member.setProperties(context.REQUEST)
+member_context=context.portal_membership.getHomeFolder(member.getId())
+context.portal_skins.updateSkinCookie()
+
+if member_context is None:
+    member_context=context.portal_url.getPortalObject()
+
+if visible_ids is None and REQUEST is not None:
+    visible_ids=0
+else:
+    visible_ids=1
+REQUEST.set('visible_ids', visible_ids)
+
+if listed is None and REQUEST is not None:    
+    listed=0
+else:
+    listed=1
+REQUEST.set('listed', listed)
+
+if ext_editor is None and REQUEST is not None:    
+    ext_editor=0
+else:
+    ext_editor=1
+REQUEST.set('ext_editor', ext_editor)
+
+if (portrait and portrait.filename):
+    context.portal_membership.changeMemberPortrait(portrait)
+
+delete_portrait = context.REQUEST.get('delete_portrait', None)
+if delete_portrait:
+    context.portal_membership.deletePersonalPortrait(member.getId())
+
+member.setProperties(listed=listed, ext_editor=ext_editor, visible_ids=visible_ids)
+
+tmsg='Edited personal settings for %s' % member.getUserName()
+transaction_note(tmsg)
+
+context.plone_utils.addPortalMessage(_(u'Your personal settings have been saved.'))
+return state

Copied: selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_templates/personalize.cpy.metadata (from rev 126, selinux-site/trunk/selinux.theme/selinux/theme/skins/selinuxtheme/personalize.cpy.metadata)
===================================================================
--- selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_templates/personalize.cpy.metadata	                        (rev 0)
+++ selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_templates/personalize.cpy.metadata	2007-11-11 22:35:43 UTC (rev 132)
@@ -0,0 +1,6 @@
+[validators]
+validators = validate_emailaddr
+
+[actions]
+action.failure=traverse_to:string:personalize_form
+action.success=traverse_to:string:personalize_form

Copied: selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_templates/personalize_form.cpt (from rev 126, selinux-site/trunk/selinux.theme/selinux/theme/skins/selinuxtheme/personalize_form.cpt)
===================================================================
--- selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_templates/personalize_form.cpt	                        (rev 0)
+++ selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_templates/personalize_form.cpt	2007-11-11 22:35:43 UTC (rev 132)
@@ -0,0 +1,532 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
+      xmlns:tal="http://xml.zope.org/namespaces/tal"
+      xmlns:metal="http://xml.zope.org/namespaces/metal"
+      xmlns:i18n="http://xml.zope.org/namespaces/i18n"
+      lang="en"
+      metal:use-macro="context/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>
+
+<metal:main fill-slot="content"
+            tal:define="errors options/state/getErrors;">
+    <tal:main-macro metal:define-macro="main">
+
+     <div id="content" 
+          class="documentEditable">
+
+            <h5 class="hiddenStructure">Views</h5>
+        
+            <ul class="contentViews">
+              <li>
+                <a href=""
+                   tal:attributes="href string: ${portal_url}/author/${member}"
+                   i18n:translate="label_view">View</a>
+              </li>
+              <li class="selected">
+                <a href=""
+                   tal:attributes="href string:${portal_url}/personalize_form"
+                   i18n:translate="label_edit">Edit</a>
+              </li>
+            </ul>
+
+            <div class="contentActions">
+              &nbsp;
+            </div>
+
+            <div class="documentContent" id="region-content">
+
+                <a name="documentContent"></a>
+
+                <div metal:use-macro="here/global_statusmessage/macros/portal_message">
+                    Portal status message
+                </div>
+
+                <h1 class="documentFirstHeading"
+                    i18n:translate="heading_my_preferences">Personal Preferences</h1>
+
+                <a href=""
+                   class="link-parent"
+                   tal:attributes="href string: $portal_url/plone_memberprefs_panel"
+                   i18n:translate="label_up_to_preferences">
+                Up to My Preferences
+                </a>
+
+                <p i18n:translate="description_my_preferences">
+                Your personal settings.
+                </p>
+
+                <form action="personalize"
+                      class="enableAutoFocus"
+                      method="post"
+                      enctype="multipart/form-data"
+                      class="enableUnloadProtection"
+                      tal:condition="member"
+                      tal:attributes="action template_id">
+
+                    <fieldset tal:define="macros here/additional_memberdata/macros | nothing;
+                                          top_macro macros/top | nothing;
+                                          showTop python:top_macro;
+                                          bottom_macro macros/bottom | nothing;
+                                          showBottom python:bottom_macro;
+                                          after_primary macros/after_primary| nothing;
+                                          showAfterPrimary python:after_primary;">
+
+                        <legend i18n:translate="legend_personal_details">Personal Details</legend>
+                        
+                        <tal:macro condition="showTop">
+                            <div metal:use-macro="top_macro"/>
+                        </tal:macro>
+
+                        <tal:macro condition="showTop">
+                            <div metal:use-macro="top_macro"/>
+                        </tal:macro>
+
+			<div class="field"
+				tal:define="error errors/givenname | nothing;
+					    givenname python:request.get('givenname', member.getProperty('givenname', ''));"
+				tal:attributes="class python:test(error, 'field error', 'field')">
+
+			<label for="givenname" i18n:translate="label_givenname">Förnamn</label>
+
+			<div tal:content="error">Validation error output</div>
+
+				<input type="text"
+					id="givenname"
+					name="givenname"
+					size="25"
+					value="member.givenname html_quote"
+					tal:attributes="value givenname;
+							disabled python:member.canWriteProperty('givenname') and default or 'disabled'"
+				/>
+			</div>
+
+
+			<div class="field"
+				tal:define="error errors/surname | nothing;
+					    surname python:request.get('surname', member.getProperty('surname', ''));"
+				tal:attributes="class python:test(error, 'field error', 'field')">
+
+			<label for="surname" i18n:translate="label_surname">Efternamn</label>
+
+			<div tal:content="error">Validation error output</div>
+
+				<input type="text"
+					id="surname"
+					name="surname"
+					size="25"
+					value="member.surname html_quote"
+					tal:attributes="value surname;
+							disabled python:member.canWriteProperty('surname') and default or 'disabled'"
+				/>
+			</div>
+
+
+			<div class="field"
+				tal:define="error errors/email | nothing;
+					    email python:request.get('email', member.getProperty('email', ''));"
+				tal:attributes="class python:test(error, 'field error', 'field')">
+
+			<label for="email" i18n:translate="label_email">Email</label>
+
+			<div tal:content="error">Validation error output</div>
+
+				<input type="text"
+					id="email"
+					name="email"
+					size="25"
+					value="member.email html_quote"
+					tal:attributes="value email;
+							disabled python:member.canWriteProperty('email') and default or 'disabled'"
+				/>
+			</div>
+
+                        <tal:macro condition="showAfterPrimary">
+                            <div metal:use-macro="after_primary"/>
+                        </tal:macro>
+                        
+                        <tal:macro condition="showAfterPrimary">
+                            <div metal:use-macro="after_primary"/>
+                        </tal:macro>
+
+			<div class="field"
+				tal:define="error errors/postadress | nothing;
+					    postadress python:request.get('postadress', member.getProperty('postadress', ''));"
+				tal:attributes="class python:test(error, 'field error', 'field')">
+
+			<label for="postadress" i18n:translate="label_postadress">Postadress</label>
+
+			<div tal:content="error">Validation error output</div>
+
+				<input type="text"
+					id="postadress"
+					name="postadress"
+					size="25"
+					value="member.postadress html_quote"
+					tal:attributes="value postadress;
+							disabled python:member.canWriteProperty('postadress') and default or 'disabled'"
+				/>
+			</div>
+
+
+			<div class="field"
+				tal:define="error errors/postnr | nothing;
+					    postnr python:request.get('postnr', member.getProperty('postnr', ''));"
+				tal:attributes="class python:test(error, 'field error', 'field')">
+
+			<label for="postnr" i18n:translate="label_postnr">Postnummer</label>
+
+			<div tal:content="error">Validation error output</div>
+
+				<input type="text"
+					id="postnr"
+					name="postnr"
+					size="25"
+					value="member.postnr html_quote"
+					tal:attributes="value postnr;
+							disabled python:member.canWriteProperty('postnr') and default or 'disabled'"
+				/>
+			</div>
+
+
+			<div class="field"
+				tal:define="error errors/location | nothing;
+					    location python:request.get('location', member.getProperty('location', ''));"
+				tal:attributes="class python:test(error, 'field error', 'field')">
+
+			<label for="location" i18n:translate="label_location">Ort</label>
+
+			<div tal:content="error">Validation error output</div>
+
+				<input type="text"
+					id="location"
+					name="location"
+					size="25"
+					value="member.location html_quote"
+					tal:attributes="value location;
+							disabled python:member.canWriteProperty('location') and default or 'disabled'"
+				/>
+			</div>
+
+
+			<div class="field"
+				tal:define="error errors/telenr | nothing;
+					    telenr python:request.get('telenr', member.getProperty('telenr', ''));"
+				tal:attributes="class python:test(error, 'field error', 'field')">
+
+			<label for="telenr" i18n:translate="label_telenr">Telefonnummer</label>
+
+			<div tal:content="error">Validation error output</div>
+
+				<input type="text"
+					id="telenr"
+					name="telenr"
+					size="25"
+					value="member.telenr html_quote"
+					tal:attributes="value telenr;
+							disabled python:member.canWriteProperty('telenr') and default or 'disabled'"
+				/>
+			</div>
+
+
+			<div class="field"
+				tal:define="error errors/mobile | nothing;
+					    mobile python:request.get('mobile', member.getProperty('mobile', ''));"
+				tal:attributes="class python:test(error, 'field error', 'field')">
+
+			<label for="mobile" i18n:translate="label_mobile">Mobiltelefonnummer</label>
+
+			<div tal:content="error">Validation error output</div>
+
+				<input type="text"
+					id="mobile"
+					name="mobile"
+					size="25"
+					value="member.mobile html_quote"
+					tal:attributes="value mobile;
+							disabled python:member.canWriteProperty('mobile') and default or 'disabled'"
+				/>
+			</div>
+
+
+                        <div class="field"
+                             tal:define="error errors/language | nothing;
+                                         language python:request.get('language', member.getProperty('language', ''));"
+                             tal:attributes="class python:test(error, 'field error', 'field')">
+
+                            <label for="language" i18n:translate="label_language">Language</label>
+
+                            <div class="formHelp" i18n:translate="help_preferred_language">
+                            Your preferred language.
+                            </div>
+
+                            <div tal:content="error">Validation error output</div>
+
+
+                            <select name="language"
+                                    id="language"
+                                    tal:attributes="disabled python:member.canWriteProperty('language') and default or 'disabled'">
+                                <tal:block tal:repeat="lang portal/availableLanguages">
+                                    <option value="None"
+                                        tal:content="python:lang[1]"
+                                        tal:attributes="value python:lang[0];
+                                                        selected python:test(language==lang[0], 'selected', None);">
+                                    </option>
+                                </tal:block>
+                             </select>
+
+                        </div>
+
+                        <div class="field"
+                             tal:define="error errors/description | nothing;
+                                         description python:request.get('description', member.getProperty('description', ''));"
+                             tal:attributes="class python:test(error, 'field error', 'field')">
+
+                            <label for="description" i18n:translate="label_biography">Biography</label>
+
+                            <div class="formHelp" i18n:translate="help_biography">
+                            A short overview of who you are and what you do. Will be displayed
+                            on the your author page, linked from the items you create.
+                            </div>
+
+                            <div tal:content="error">Validation error output</div>
+
+                            <textarea type="text"
+                                   id="description"
+                                   name="description"
+                                   tal:content="description"
+                                   rows="5"
+                                   tal:attributes="disabled python:member.canWriteProperty('description') and default or 'disabled'"
+                                   />
+
+                        </div>
+
+                        <div class="field"
+                             tal:define="error errors/home_page | nothing;
+                                         home_page python:request.get('home_page', member.getProperty('home_page', ''));"
+                             tal:attributes="class python:test(error, 'field error', 'field')">
+
+                            <label for="home_page" i18n:translate="label_homepage">Home page</label>
+
+                            <div class="formHelp" i18n:translate="help_homepage">
+                            The URL for your external home page, if you have one.
+                            </div>
+
+                            <div tal:content="error">Validation error output</div>
+
+                            <input type="text"
+                                   id="home_page"
+                                   name="home_page"
+                                   size="25"
+                                   value="member.home_page html_quote"
+                                   tal:attributes="value home_page;
+                                                   disabled python:member.canWriteProperty('home_page') and default or 'disabled'"
+                                   />
+
+                        </div>
+
+                        <div class="field"
+                                 tal:define="wysiwyg_editor python:request.get('wysiwyg_editor',
+                                                            member.getProperty('wysiwyg_editor',''))">
+                            <label for="wysiwyg_editor" i18n:translate="label_content_editor">Content editor</label>
+
+                            <div class="formHelp" i18n:translate="help_content_editor">
+                            Select the content editor that you would like to use.
+                            Note that content editors often have specific browser
+                            requirements.
+                            </div>
+
+                            <select name="wysiwyg_editor"
+                                    id="wysiwyg_editor"
+                                    tal:attributes="disabled python:member.canWriteProperty('wysiwyg_editor') and default or 'disabled'">
+                                <tal:block tal:repeat="editor site_properties/available_editors">
+                                <option tal:condition="python:editor != 'None'"
+                                        value="None"
+                                        tal:attributes="value editor;
+                                                        selected python:test(editor==wysiwyg_editor, 'selected', None);"
+                                        tal:content="editor">
+                                WYSIWYG-editor
+                                </option>
+                                <option tal:condition="python:editor == 'None'"
+                                        value="None"
+                                        tal:attributes="value editor;
+                                                        selected python:test(editor==wysiwyg_editor, 'selected', None);"
+                                        i18n:translate="label_ordinary_content_editor">
+                                Basic HTML textarea editor (works in all browsers)
+                                </option>
+
+                                </tal:block>
+                             </select>
+                         </div>
+
+                         <div class="field"
+                                  tal:define="ext_editor python:request.get('ext_editor',
+                                                             member.getProperty('ext_editor',''))">
+                            <input type="checkbox"
+                                   class="noborder"
+                                   name="ext_editor"
+                                   id="cb_ext_editor"
+                                   tal:attributes="checked python:test(ext_editor, 'checked', None);
+                                                   disabled python:member.canWriteProperty('ext_editor') and default or 'disabled'"
+                                   />
+
+                            <label for="cb_ext_editor" i18n:translate="label_ext_editor">Enable external editing</label>
+
+                             <div class="formHelp" i18n:translate="help_content_ext_editor">
+                             When checked, an icon will be made visible on each page which allows
+                             you to edit content with your favorite editor instead of using
+                             browser-based editors. This requires an additional application 
+                             called ExternalEditor installed client-side.
+                             Ask your administrator for more information if needed.
+                             </div>
+                        </div>
+
+                        <div class="field"
+                             tal:define="listed python:request.get('listed', member.getProperty('listed',''));">
+
+                            <input type="checkbox"
+                                   class="noborder"
+                                   name="listed"
+                                   id="cb_listed"
+                                   tal:attributes="checked python:test(listed, 'checked', None);
+                                                   disabled python:member.canWriteProperty('listed') and default or 'disabled'"
+                                   />
+
+                            <label for="cb_listed" i18n:translate="label_listed_status">Listed in searches</label>
+
+                            <div class="formHelp" i18n:translate="help_listed_search">
+                            Determines if your user name is listed in user searches done on this site.
+                            </div>
+
+                        </div>
+
+                        <div class="field"
+                                 tal:condition="site_properties/visible_ids|nothing"
+                                 tal:define="visible_ids python:request.get('visible_ids', member.getProperty('visible_ids',''));">
+
+                            <input type="checkbox"
+                                   class="noborder"
+                                   name="visible_ids"
+                                   id="cb_invisible_ids"
+                                   tal:attributes="checked python:test(visible_ids, 'checked', None);
+                                                   disabled python:member.canWriteProperty('visible_ids') and default or 'disabled'"
+                                   />
+
+                            <label for="cb_invisible_ids" 
+                                   i18n:translate="label_edit_short_names">Allow editing of Short Names</label>
+
+                            <div class="formHelp" i18n:translate="help_display_names">
+                            Determines if Short Names (also known as IDs) are
+                            changable when editing items. If Short Names
+                            are not displayed, they will be generated automatically.
+                            </div>
+
+                        </div>
+
+                        <div class="field"
+                                tal:condition="here/portal_skins/allow_any"
+                                tal:define="skinvar python:request.get(here.portal_skins.getRequestVarname(), '');
+                                skindefault here/portal_skins/getDefaultSkin;
+                                skincurrent python:test(skinvar, skinvar, skindefault);">
+
+                            <label for="portal_skin" i18n:translate="label_look">Look</label>
+
+                            <div i18n:translate="help_look"
+                                 class="formHelp">
+                            Appearance of the site.
+                            </div>
+
+                            <select name="portal_skin"
+                                    id="portal_skin"
+                                    tal:attributes="disabled python:member.canWriteProperty('portal_skin') and default or 'disabled'"
+                                    >
+                            <option value="#"
+                                    i18n:translate=""
+                                    tal:repeat="skin container/portal_skins/getSkinSelections"
+                                    tal:attributes="value skin;
+                                                    selected python:test(skincurrent==skin, 'selected', None);"
+                                    tal:content="skin"
+                                    >dummy skin</option>
+                            </select>
+                        </div>
+
+                        <div class="field"
+                             tal:define="portrait mtool/getPersonalPortrait;">
+
+                            <label for="portrait" i18n:translate="label_portrait">Portrait</label>
+
+                            <img src="" alt=""
+                                 height="100"
+                                 width="75"
+                                 class="portraitPhoto"
+                                 style="float: right;"
+                                 tal:condition="portrait"
+                                 tal:attributes="src portrait/absolute_url"
+                                 />
+
+                            <div class="formHelp" i18n:translate="help_portrait">
+                            To add or change the portrait: click the "Browse" button;
+                            select a picture of yourself. Recommended image size is 75
+                            pixels wide by 100 pixels tall.
+                            </div>
+
+
+                            <input type="file"
+                                   name="portrait"
+                                   id="portrait"
+                                   size="20"
+                                   />
+
+                            <br />
+
+                            <input class="noborder"
+                                type="checkbox"
+                                id="pdelete"
+                                value="Delete Portrait"
+                                name="delete_portrait"
+                                />
+                            <label for="pdelete" i18n:translate="label_delete_portrait">Delete Portrait</label>
+
+                        </div>
+                        
+                        <tal:macro condition="showBottom">
+                            <div metal:use-macro="bottom_macro" />
+                        </tal:macro>
+                        
+                        <tal:macro condition="showBottom">
+                            <div metal:use-macro="bottom_macro" />
+                        </tal:macro>
+                        
+                        <div class="formControls">
+                            <input class="context"
+                                   type="submit"
+                                   value="Save"
+                                   name="form.button.Save"
+                                   i18n:attributes="value label_save;"
+                                   />
+                            <input class="standalone"
+                                   type="submit"
+                                   value="Cancel"
+                                   name="form.button.Cancel"
+                                   i18n:attributes="value label_cancel;"
+                                   />
+                        </div>
+
+                        <input type="hidden" name="form.submitted" value="1" />
+
+                    </fieldset>
+                </form>
+            </div>
+    </tal:main-macro>
+
+</metal:main>
+
+</body>
+</html>
+
+

Copied: selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_templates/personalize_form.cpt.metadata (from rev 126, selinux-site/trunk/selinux.theme/selinux/theme/skins/selinuxtheme/personalize_form.cpt.metadata)
===================================================================
--- selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_templates/personalize_form.cpt.metadata	                        (rev 0)
+++ selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_templates/personalize_form.cpt.metadata	2007-11-11 22:35:43 UTC (rev 132)
@@ -0,0 +1,15 @@
+[default]
+title=Personal Preferences
+
+[security]
+View=0:Authenticated
+
+[validators]
+validators=validate_pas_emailaddr,validate_personalize
+validators..Cancel=
+
+[actions]
+action.success=traverse_to:string:personalize
+action.success..PortraitDelete=traverse_to:string:portrait_delete
+action.success..Cancel=redirect_to:string:plone_memberprefs_panel
+action.failure=traverse_to:string:personalize_form

Copied: selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_templates/registered_notify_template.pt (from rev 126, selinux-site/trunk/selinux.theme/selinux/theme/skins/selinuxtheme/registered_notify_template.pt)
===================================================================
--- selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_templates/registered_notify_template.pt	                        (rev 0)
+++ selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_templates/registered_notify_template.pt	2007-11-11 22:35:43 UTC (rev 132)
@@ -0,0 +1,51 @@
+<tal:root define="lt string:&lt;;gt string:&gt;;
+                  dummy python:request.RESPONSE.setHeader('Content-Type', 'text/plain;; charset=%s' % here.plone_utils.getSiteEncoding());
+                  member python:options['member'];
+                  reset python:options.get('reset', None) or here.portal_password_reset.requestReset(member.getId())"
+>From: "<span tal:replace="python:here.email_from_name" />" <span tal:replace="structure lt"/><span tal:replace="python:here.email_from_address" /><span tal:replace="structure gt"/>
+To: <span tal:replace="python:member.getProperty('email')" />
+Subject: Bekräfta medlemsuppgifter till Svenska Linuxföreningen
+Content-Type: text/plain; charset=<span tal:replace="here/email_charset|here/portal_properties/site_properties/default_charset|string:utf-8" />
+
+<div i18n:domain="passwordresettool"
+     i18n:translate="mailtemplate_registered_user_body"
+     tal:omit-tag=""
+     tal:define="givenname python: test(member.givenname, ' ' + member.givenname, '')">
+
+Hej <span tal:replace="python:member.getProperty('givenname')" /> och varmt
+välkommen som medlem i Svenska Linuxföreningen!
+
+Föreningen är öppen för alla som är intresserade av fri programvara och
+öppen källkod, såsom GNU/Linux, FreeBSD, Apache och MySQL. Det är ni 
+medlemmar som står för föreningens aktiviteter samt artiklar, nyheter
+och allt annat som går att finna på webbplatsen.
+
+För att själv bidra med material måste du aktivera ditt konto och sedan
+logga in på http://se.linux.org/. För att aktivera ditt konto besöker du
+
+<span i18n:name="set_password" tal:replace="python:here.pwreset_constructURL(reset['randomstring'])+'?userid='+member.getUserName()" />
+
+Du måste aktivera ditt konto inom <span i18n:name="expirationtime" tal:replace="here/portal_password_reset/getExpirationTimeout" /> timmar, alltså senast <span i18n:name="expirationdate" tal:replace="python: context.toLocalizedTime(reset['expires'], long_format=1)" />
+
+Följande uppgifter finns i vårt register:
+
+Adress:
+<span tal:replace="python:member.getProperty('givenname')" /> <span tal:replace="python:member.getProperty('surname')" />
+<span tal:replace="python:member.getProperty('postadress')" />
+<span tal:replace="python:member.getProperty('postnr')" /> <span tal:replace="python:member.getProperty('location')" />
+
+Telefon: <span tal:replace="python:member.getProperty('location')" />
+Mobiltelefon: <span tal:replace="python:member.getProperty('mobile')" />
+
+Om någon uppgift är felaktig ber vi dig logga in på http://se.linux.org/
+och ändra detta under "mina inställningar". 
+
+Om du behöver hjälp, tveka inte att besöka föreningens IRC-kanal i #selinux
+på irc.se.linux.org eller genom att kontakta styrelsen på info at se.linux.org.
+
+
+--
+Svenska Linuxföreningen
+info at se.linux.org
+</div>
+</tal:root>

Copied: selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_templates/registered_notify_template.tmpl (from rev 126, selinux-site/trunk/selinux.theme/selinux/theme/skins/selinuxtheme/registered_notify_template.tmpl)
===================================================================
--- selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_templates/registered_notify_template.tmpl	                        (rev 0)
+++ selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_templates/registered_notify_template.tmpl	2007-11-11 22:35:43 UTC (rev 132)
@@ -0,0 +1,49 @@
+From: selinux-drift at se.linux.org
+To: <span tal:omit-tag="" tal:replace="request/email" />
+Reply-To: info at se.linux.org
+Errors-To: selinux-drift at se.linux.org
+Subject: Välkommen till Svenska Linuxföreningen
+Content-Type: text/plain; charset=<span tal:replace="here/portal_properties/site_properties/default_charset" />
+
+Hej <span tal:omit-tag="" tal:replace="request/givenname" /> och varmt
+välkommen som medlem i Svenska Linuxföreningen!
+
+SeLinux är en förening för alla som är intresserade av fri programvara
+och öppen källkod såsom GNU/Linux, FreeBSD, Apache och MySQL. Det är ni
+medlemmar som står för föreningens aktiviteter samt artiklar, nyheter
+och annat på webbplatsen. För att själv bidra med material kan du logga
+in på http://se.linux.org/ med följande uppgifter:
+
+Användarnamn : <span tal:omit-tag="" tal:content="options/member/getUserName" />
+Lösenord     : <span tal:omit-tag="" tal:content="request/password" />
+
+* På http://se.linux.org/aktuellt/aktiviteter/ kan du se vad som händer
+  just nu.
+* På http://se.linux.org/nyborjare/ finner du information som vänder sig
+  till dig som är ny kring Linux.
+* På http://se.linux.org/organisationen/ kan du läsa mer om vad Svenska
+  Linuxföreningen är.
+* På http://se.linux.org/bidra/ kan du läsa mer om vad du kan hjälpa
+  till med!
+
+Följande uppgifter finns i vårt register:
+
+Adress:
+<span tal:omit-tag="" tal:replace="request/givenname" /> <span tal:omit-tag="" tal:replace="request/surname" />
+<span tal:omit-tag="" tal:replace="request/postadress" />
+<span tal:omit-tag="" tal:replace="request/postnr" /> <span tal:omit-tag="" tal:content="request/location" />
+
+Telefon: <span tal:omit-tag="" tal:replace="request/telenr" />
+Mobiltelefon: <span tal:omit-tag="" tal:replace="request/mobile" />
+Email: <span tal:omit-tag="" tal:replace="request/email" />
+
+Om någon uppgift är felaktig ber vi dig logga in på http://se.linux.org/
+och ändra detta under "mina inställningar". 
+
+Om du behöver hjälp, tveka inte att använda dig av forumet på 
+http://se.linux.org/kommunikation/forum/ eller föreningens IRC-kanal
+(#selinux på irc.se.linux.org) eller genom att kontakta oss i styrelsen
+på epostadressen här under.
+
+--
+info at se.linux.org

Copied: selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_templates/registered_notify_template.tmpl.metadata (from rev 126, selinux-site/trunk/selinux.theme/selinux/theme/skins/selinuxtheme/registered_notify_template.tmpl.metadata)
===================================================================
--- selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_templates/registered_notify_template.tmpl.metadata	                        (rev 0)
+++ selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_templates/registered_notify_template.tmpl.metadata	2007-11-11 22:35:43 UTC (rev 132)
@@ -0,0 +1,2 @@
+[default]
+proxy=Manager

Copied: selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_templates/selinux_index.pt (from rev 126, selinux-site/trunk/selinux.theme/selinux/theme/skins/selinuxtheme/selinux_index.pt)
===================================================================
--- selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_templates/selinux_index.pt	                        (rev 0)
+++ selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_templates/selinux_index.pt	2007-11-11 22:35:43 UTC (rev 132)
@@ -0,0 +1,83 @@
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:metal="http://xml.zope.org/namespaces/metal"
+      xmlns:tal="http://xml.zope.org/namespaces/tal"
+      xmlns:i18n="http://xml.zope.org/namespaces/i18n"
+      xml:lang="en" lang="en"
+      metal:use-macro="here/main_template/macros/master"
+      i18n:domain="plone">
+
+<body>
+
+<div metal:fill-slot="main"
+     tal:define="frontpage context/@@frontpage">
+
+    <div id="frontpageLinks">
+        <dl>
+            <dt>Nyb&ouml;rjare</dt>
+            <dd><a href="#">Vad &auml;r Linux?</a></dd>
+            <dd><a href="#">Vad &auml;r Open Source?</a></dd>
+            <dd><a href="#">Hur kan jag f&aring; hj&auml;lp?</a></dd>
+        </dl>
+        <dl>
+            <dt>Popul&auml;rt</dt>
+            <dd><a href="#">Arbetsgrupper</a></dd>
+            <dd><a href="#">Dokumentation</a></dd>
+            <dd><a href="#">Kalender</a></dd>
+            <dd><a href="#">Kommunikation</a></dd>
+            <dd><a href="#">Organisation</a></dd>
+        </dl>
+        <dl>
+            <dt>Bidra</dt>
+            <dd><a href="#">Hur hj&auml;lper jag andra?</a></dd>
+            <dd><a href="#">Vad vill f&ouml;reningen ha hj&auml;lp med?</a></dd>
+            <dd><a href="#">Hur donerar jag en slant?</a></dd>
+            <dd><a href="#">Hur blir jag medlem?</a></dd>
+            <dd><a href="#">Vad inneb&auml;r det att vara medlem?</a></dd>
+        </dl>
+        <div class="visualClear">&nbsp;</div>
+    </div>
+
+    <h2>Nyheter</h2>
+
+    <p id="contributeNews">
+        <a href="/nyheter/createObject?type_name=News Item" style="float: left">
+            L&auml;gg till nyhet
+        </a>
+        <a class="link-plain" href="#" style="float: right"
+           tal:attributes="href string:${portal_url}/nyheter/aggregator/RSS">
+            <img src="" title="RSS subscription feed for news items" alt="RSS"
+               tal:attributes="src string:${portal_url}/rss.png" />
+        </a>
+    </p>
+    <div class="visualClear"> <!-- &nbsp; --> </div>
+
+    <div class="newsbox" tal:repeat="newsitem frontpage/news">
+        <h3 tal:content="newsitem/title" />
+        <div class="documentByLine">
+            av
+            <a href="#"
+               tal:attributes="href string:${portal_url}/author/${newsitem/author_id}"
+               tal:content="newsitem/author" />
+            &mdash;
+            <span tal:replace="newsitem/date" />
+        </div>
+        <p tal:replace="structure newsitem/body" />
+        <div>
+            <a href="" tal:attributes="href newsitem/url">
+                L&auml;s mer...
+            </a>
+            <!--
+            <img tal:replace="structure context/discussionitem_icon.gif" />
+            -->
+            (<span tal:replace="string:${newsitem/discussion_count}"/>
+            kommentarer)
+        </div>
+    </div>
+
+    <p tal:condition="not: frontpage/news">
+        Inga nyheter &auml;r postade.
+    </p>
+</div>
+
+</body>
+</html>

Copied: selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_templates/selinux_register.cpy (from rev 126, selinux-site/trunk/selinux.theme/selinux/theme/skins/selinuxtheme/selinux_register.cpy)
===================================================================
--- selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_templates/selinux_register.cpy	                        (rev 0)
+++ selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_templates/selinux_register.cpy	2007-11-11 22:35:43 UTC (rev 132)
@@ -0,0 +1,17 @@
+## Controller Python Script "selinux_register"
+##bind container=container
+##bind context=context
+##bind namespace=
+##bind script=script
+##bind state=state
+##bind subpath=traverse_subpath
+##parameters=password='password', password_confirm='password_confirm', came_from_prefs=None
+##title=Register a User
+##
+
+REQUEST = context.REQUEST
+REQUEST.form['fullname'] = REQUEST['givenname'] + ' ' + REQUEST['surname']
+
+return context.register(password=password,
+                        password_confirm=password_confirm,
+                        came_from_prefs=came_from_prefs)

Copied: selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_templates/selinux_register.cpy.metadata (from rev 126, selinux-site/trunk/selinux.theme/selinux/theme/skins/selinuxtheme/selinux_register.cpy.metadata)
===================================================================
--- selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_templates/selinux_register.cpy.metadata	                        (rev 0)
+++ selinux-site/trunk/selinux.theme/selinux/theme/skins/selinux_templates/selinux_register.cpy.metadata	2007-11-11 22:35:43 UTC (rev 132)
@@ -0,0 +1,11 @@
+[default]
+title=Register a User
+proxy=Manager,Anonymous
+
+[validators]
+validators = join_form_validate
+ 
+[actions]
+action.failure=traverse_to:string:join_form
+action.success=traverse_to:string:registered
+action.prefs=traverse_to:string:prefs_users_overview




More information about the commits mailing list