Index: WAeUP_SRP/trunk/skins/waeup_default/id_rename.py
===================================================================
--- WAeUP_SRP/trunk/skins/waeup_default/id_rename.py	(revision 370)
+++ WAeUP_SRP/trunk/skins/waeup_default/id_rename.py	(revision 370)
@@ -0,0 +1,18 @@
+##parameters=
+# $Id: folder_rename.py 28488 2005-10-21 13:16:23Z lregebro $
+"""
+Rename objects which ids are passed in the request.
+
+Used within the folder_contents template.
+"""
+
+REQUEST = context.REQUEST
+
+new_ids = REQUEST['new_ids']
+new_ids = [id.upper() for id in REQUEST['new_ids']]
+
+context.manage_renameObjects(REQUEST['ids'], new_ids, REQUEST) 
+
+return REQUEST.RESPONSE.redirect(context.absolute_url() + \
+                                ('/academics_contents?portal_status_message=%s' \
+                                % ('psm_item(s)_renamed',)))
Index: WAeUP_SRP/trunk/skins/waeup_default/id_rename_form.pt
===================================================================
--- WAeUP_SRP/trunk/skins/waeup_default/id_rename_form.pt	(revision 370)
+++ WAeUP_SRP/trunk/skins/waeup_default/id_rename_form.pt	(revision 370)
@@ -0,0 +1,60 @@
+<metal:html use-macro="here/main_template/macros/master">
+
+<metal:header fill-slot="header">
+
+<h1 i18n:translate="heading_rename_items">Rename Items</h1>
+<div class="description" i18n:translate="help_rename_items">Changing the id of an object does not
+affect its title but changes the URL to access it. Links that point to the
+current id won't find it anymore.</div>
+
+</metal:header>
+
+<metal:main fill-slot="main">
+
+<div class="group" tal:condition="here/folder_rename_items" >
+<form action="folder_rename" method="post"
+      tal:attributes="action string:${here_url}/id_rename">
+
+  <table width="90%">
+    <tr tal:repeat="item here/folder_rename_items">
+      <td align="left" valign="top" width="20%" nowrap="nowrap">
+        <span tal:replace="structure item/iconHTML">Type Image</span>
+        <span tal:replace="item/getId">ID</span>
+        <input type="hidden" name="ids:list" value=""
+               tal:attributes="value item/getId" />
+      </td>
+
+      <td align="left" valign="top">
+        <strong i18n:translate="label_rename_to">to</strong>
+      </td>
+
+      <td align="left" valign="top">
+        <input type="text" name="new_ids:list" value=""
+               tal:attributes="value item/getId" size="20" />
+      </td>
+    </tr>
+
+    <tr>
+      <td colspan="3"><br />
+        <input class="standalone" type="submit" value="button_change"
+          i18n:attributes="value" />
+      </td>
+    </tr>
+  </table>
+
+</form>
+</div><!-- tal:condition="here/folder_rename_items" -->
+
+<div tal:condition="not: here/folder_rename_items">
+
+  <p i18n:translate="help_no_items_to_rename">
+    You must select one or more items to rename.
+  </p>
+  <input class="standalone" 
+         type="button" value="button_ok" onclick="history.back()"
+         i18n:attributes="value" />
+
+</div>
+
+</metal:main>
+</metal:html>
Index: WAeUP_SRP/trunk/skins/waeup_default/waeup_document_create_do.py
===================================================================
--- WAeUP_SRP/trunk/skins/waeup_default/waeup_document_create_do.py	(revision 370)
+++ WAeUP_SRP/trunk/skins/waeup_default/waeup_document_create_do.py	(revision 370)
@@ -0,0 +1,38 @@
+##parameters=type_name, datamodel
+# $Id: cpsdocument_create_do.py 34091 2006-03-06 18:37:08Z atchertchian $
+"""
+Create an empty object in the context according to the datamodel.
+
+Datamodel may be examined to create a suitable id.
+
+Returns the created object (usually a proxy).
+"""
+from Products.CMFCore.utils import getToolByName
+
+id = datamodel.get('code').upper()
+datamodel.set('code',id)
+##if not id:
+##    id = 'my ' + type_name
+##id = context.computeId(compute_from=id) # XXX shouldn't use a skin
+##
+language = datamodel.get('Language')
+if not language:
+    ts = getToolByName(context, 'translation_service')
+    language = ts.getSelectedLanguage()
+
+ttool = getToolByName(context, 'portal_types')
+ti = ttool[type_name]
+allow_discussion = ti.allowDiscussion()
+
+# Datamodel is passed so that flexti can initialize the object.
+new_id = context.invokeFactory(type_name, id, datamodel=datamodel,
+                               language=language,
+                               allow_discussion=allow_discussion)
+if new_id is not None:
+    id = new_id
+
+ob = getattr(context, id)
+
+context.notifyCPSDocumentCreation(ob=ob) # BBB obsolete in CPS 3.5.0
+
+return ob
