Author: jmorliaguet
Date: Thu May 25 11:04:05 2006
New Revision: 3210

Added:
   cpsskins/branches/paris-sprint-2006/ui/screens/elementeditor/views.py   
(contents, props changed)

Log:

- added missing file



Added: cpsskins/branches/paris-sprint-2006/ui/screens/elementeditor/views.py
==============================================================================
--- (empty file)
+++ cpsskins/branches/paris-sprint-2006/ui/screens/elementeditor/views.py       
Thu May 25 11:04:05 2006
@@ -0,0 +1,127 @@
+##############################################################################
+#
+# Copyright (c) 2005-2006 Nuxeo and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""
+
+$Id$
+"""
+__docformat__ = "reStructuredText"
+
+from zope.formlib import form
+from zope.component import getMultiAdapter
+
+from cpsskins.browser.negotiation.interfaces import INegotiation
+from cpsskins.browser.rendering.interfaces import IViewer
+from cpsskins.elements.interfaces import IDisplayable, IFormattable
+from cpsskins.setup.interfaces import IResource, ISetting
+from cpsskins.setup.interfaces import IType, IIdentifiable
+from cpsskins.utils import getThemeManager
+
+class ElementForm:
+    """An edit form for elements.
+    """
+    def __init__(self, context, request):
+        self.context = context
+        self.request = request
+
+        schema = IType(context).getContentType()
+        self.form_fields = form.Fields(schema, render_context=True)
+        self.widgets = form.setUpWidgets(self.form_fields, 'form',
+                                         context, request)
+
+    def getFormData(self):
+        return self.widgets
+
+    def submitFormData(self):
+        data = {}
+        errors = form.getWidgetsData(self.widgets, 'form', data)
+        changed = form.applyChanges(self.context, self.form_fields, data)
+        return u''
+
+
+class EditPanel:
+
+    def __init__(self, context, request):
+        self.context = context
+        self.request = request
+
+    def getAbsoluteURL(self, object):
+        return getMultiAdapter((object, self.request), name=u'absolute_url')()
+
+    def getInfo(self):
+        context = self.context
+        request = self.request
+
+        tmutil = getThemeManager(context)
+
+        form = request.form
+        element_id = form.get('id')
+        tab = form.get('tab')
+
+        negotiation = getMultiAdapter((context, request),
+                                      INegotiation, 'negotiation')
+        perspective = negotiation.getPerspective()
+        displayable = IDisplayable(context)
+        display = displayable.getEffectiveDisplay(perspective)
+        formattable = IFormattable(display)
+
+        # Element
+        edited = context
+        element_info = {
+            'name': IType(context).getTypeName(),
+            'id': context.identifier,
+            }
+
+        # Display
+        display_name = IType(display).getTypeName()
+        if tab == display_name:
+            edited = display
+
+        # Formats
+        formats = []
+        setting = None
+
+        for f in formattable.getFormats(resolve=False):
+            uri = IIdentifiable(f).getURI()
+            format = f
+            is_setting = ISetting.providedBy(f)
+            if is_setting:
+                f = IResource(f).getResource()
+
+            format_name = IType(f).getTypeName()
+            selected = tab == format_name
+
+            if selected:
+                edited = f
+                if is_setting:
+                    setting = format
+
+            formats.append({'name': format_name, 'id': f.identifier or 0,
+                            'uri': uri, 'is_setting': is_setting})
+
+        viewer = getMultiAdapter((context, request), IViewer)
+        preview = viewer()
+
+        uri = IIdentifiable(edited).getURI()
+        return {
+            'negotiation': negotiation,
+            'perspective': perspective,
+            'display': display,
+            'element': element_info,
+            'formats': formats,
+            'edited': edited,
+            'uri': uri,
+            'setting': setting,
+            'preview': preview,
+            }
+
-- 
http://lists.nuxeo.com/mailman/listinfo/z3lab-checkins

Reply via email to