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