tinymce - Rendering Plone SchemaAddForm without main_template? -
i'm attempting write plone add-on requires "add new" form. far, i've managed working nicely using plone.directives.form.schemaaddform. have '@@create-snippet' view registered in configure.zcml, , works when view page normally.
however, ultimate goal of project add form tinymce popup window. i've created working tinymce plugin another, irrelevant portion of add-on, , gotten working well. however, when try navigate "@@create-snippets" view in tinymce window, get:
locationerror: (products.five.metaclass.directoryresource2 object @ 0x107162fd0, 'main_template')
my understanding of issue that, essentially, schemaaddform class (or 1 of it's super classes, exact) wraps form main plone main_template when renders form. since tinymce windows own, isolated little worlds, template isn't available, and, therefore, cannot rendered....or that? please correct me if i'm way off.
what want know, if it's possible set things form render, without using main_template? able take advantage of schema-based forms (and built-in validation), still able keep within tinymce window.
i've toyed around creating own viewpagetemplatefile() template, , getting form render (somehow?) within it, frankly, have no idea how....or if that's possible.
please feel free ask more information if there's i've omitted. i'm kinda new type of plone development.
the code generating form:
from products.five.browser import browserview uwosh.snippets.snippet import snippetmanager plone.directives.form import schemaaddform import zope.interface plone.autoform.form import autoextensibleform import zope.schema plone.directives import form import z3c products.statusmessages.interfaces import istatusmessage _ = zope.i18nmessageid.messagefactory(u'uwosh.snippets') class isnippet(form.schema): title = zope.schema.textline( title=u'title', description=u'the title associate snippet.', required=true) description = zope.schema.textline( title=u'description', description=u'a short explanation of snippet.', required=true) body = zope.schema.text( title=u'body', description=u'the actual content rendered on page.', required=true) class snippetform(schemaaddform): schema = isnippet @z3c.form.button.buttonandhandler(_('save'), name='save') def handleadd(self, action): data, errors = self.extractdata() if errors: self.status = self.formerrorsmessage return obj = self.createandadd(data) if obj not none: # mark finished if new object self._finishedadd = true istatusmessage(self.request).addstatusmessage(_(u"snippet saved"), "info") @z3c.form.button.buttonandhandler(_(u'cancel'), name='cancel') def handlecancel(self, action): istatusmessage(self.request).addstatusmessage(_(u"add new snippet operation cancelled"), "info") self.request.response.redirect(self.nexturl()) def create(self, data): sm = snippetmanager() #todo: #include support different folders form. snippet = sm.createsnippet(data['title'], none ,data) return snippet def add(self, object): #since, now, snippets based upon atdocuments, creation staight-forward. #so, don't need separate add/create steps. return def nexturl(self): return self.context.absolute_url() + '/@@create-snippet'
Comments
Post a Comment