21 |
import cPickle as pickle |
import cPickle as pickle |
22 |
#import pickle |
#import pickle |
23 |
|
|
24 |
import os, AccessControl, Acquisition, sys |
import os, AccessControl, Acquisition, sys, fnmatch |
25 |
|
from App.FactoryDispatcher import FactoryDispatcher |
26 |
from Acquisition import aq_base |
from Acquisition import aq_base |
27 |
from Globals import DTMLFile, ImageFile, MessageDialog, package_home |
from Globals import DTMLFile, ImageFile, MessageDialog, package_home |
28 |
from zLOG import LOG, ERROR, INFO |
from zLOG import LOG, ERROR, INFO |
177 |
if hasattr(pax, 'xml2pax'): |
if hasattr(pax, 'xml2pax'): |
178 |
source_types['XML'] = pax.xml2pax |
source_types['XML'] = pax.xml2pax |
179 |
|
|
180 |
|
default_text_dir = os.path.join(package_home(globals()), 'default_text') |
181 |
|
|
182 |
# FIXME: lots of stuff below can probably be refactored out - |
# FIXME: lots of stuff below can probably be refactored out - |
183 |
# there is still a lot of cruft pasted from ZPT |
# there is still a lot of cruft pasted from ZPT |
184 |
|
|
216 |
'name_request': 'request', |
'name_request': 'request', |
217 |
'name_modules': 'modules', |
'name_modules': 'modules', |
218 |
} |
} |
|
_default_content_fn = os.path.join(package_home(globals()), |
|
|
'www', 'default.html') |
|
219 |
|
|
220 |
manage_options = ( |
manage_options = ( |
221 |
{'label':'Edit', 'action':'pt_editForm', |
{'label':'Edit', 'action':'pt_editForm', |
235 |
'select_variable': 'pt_handler_list'}, |
'select_variable': 'pt_handler_list'}, |
236 |
) |
) |
237 |
|
|
238 |
def __init__(self, id, text=None): |
def __init__(self, id, text_fn): |
239 |
self.id = str(id) |
self.id = str(id) |
240 |
self.ZBindings_edit(self._default_bindings) |
self.ZBindings_edit(self._default_bindings) |
241 |
if text is None: |
if text_fn is None: |
242 |
text = open(self._default_content_fn).read() |
text = '<openpt />' |
243 |
|
else: |
244 |
|
text = open(os.path.join(default_text_dir, text_fn)+'.pt').read() |
245 |
self.macros = make_macro_collection() |
self.macros = make_macro_collection() |
246 |
self.pt_edit(text) |
self.pt_edit(text) |
247 |
|
|
564 |
Globals.InitializeClass(ZopePageTemplate) |
Globals.InitializeClass(ZopePageTemplate) |
565 |
|
|
566 |
|
|
567 |
manage_addPageTemplateForm = PageTemplateFile( |
manage_addPageTemplateForm = ZopePageTemplate('manage_addPageTemplateForm', None) |
568 |
'www/ptAdd.pt', globals(), __name__='manage_addPageTemplateForm') |
manage_addPageTemplateForm.write( |
569 |
|
open(os.path.join(package_home(globals()), 'www', 'ptAdd.pt')).read()) |
570 |
|
manage_addPageTemplateForm.__name__ = manage_addPageTemplateForm.id |
571 |
|
|
572 |
from urllib import quote |
from urllib import quote |
573 |
|
|
574 |
def manage_addPageTemplate(self, id, title=None, text=None, |
def manage_addPageTemplate(self, id, title=None, text_fn=None, |
575 |
REQUEST=None, submit=None): |
REQUEST=None, submit=None): |
576 |
"Add a Page Template with optional file content." |
"Add a Page Template with optional file content." |
577 |
|
|
578 |
id = str(id) |
id = str(id) |
579 |
if REQUEST is None: |
if REQUEST is None: |
580 |
self._setObject(id, ZopePageTemplate(id, text)) |
self._setObject(id, ZopePageTemplate(id, text_fn)) |
581 |
ob = getattr(self, id) |
ob = getattr(self, id) |
582 |
if title: |
if title: |
583 |
ob.pt_setTitle(title) |
ob.pt_setTitle(title) |
586 |
file = REQUEST.form.get('file') |
file = REQUEST.form.get('file') |
587 |
headers = getattr(file, 'headers', None) |
headers = getattr(file, 'headers', None) |
588 |
if headers is None or not file.filename: |
if headers is None or not file.filename: |
589 |
zpt = ZopePageTemplate(id) |
zpt = ZopePageTemplate(id, text_fn) |
590 |
else: |
else: |
591 |
zpt = ZopePageTemplate(id, file, headers.get('content_type')) |
zpt = ZopePageTemplate(id, None) |
592 |
|
zpt.pt_edit(file) |
593 |
|
zpt.content_type = headers.get('content_type') |
594 |
|
|
595 |
self._setObject(id, zpt) |
self._setObject(id, zpt) |
596 |
|
|
600 |
REQUEST.RESPONSE.redirect(u+'/manage_main') |
REQUEST.RESPONSE.redirect(u+'/manage_main') |
601 |
return '' |
return '' |
602 |
|
|
603 |
|
|
604 |
|
class __FactoryDispatcher__(FactoryDispatcher): |
605 |
|
"customized FactoryDispatcher for OpenPT" |
606 |
|
security = AccessControl.ClassSecurityInfo() |
607 |
|
security.declareObjectProtected('Add Page Templates') |
608 |
|
security.declareProtected('Add Page Templates', 'default_text_dir') |
609 |
|
def default_text_dir(*a, **kw): |
610 |
|
return [name[:-3] for name in os.listdir(default_text_dir) if |
611 |
|
fnmatch.fnmatch(name, '*.pt')] |
612 |
|
Globals.InitializeClass(__FactoryDispatcher__) |
613 |
|
|
614 |
|
|
615 |
def initialize(context): |
def initialize(context): |
616 |
context.registerClass( |
context.registerClass( |
617 |
ZopePageTemplate, |
ZopePageTemplate, |