add a external method
in the method’s python file
Newfolder = context.invokeFactory(“Folder”, id=”NEWFOLDERINPLONE”, title=”NEWFOLDERINPLONE”,path=’/’.join(context.getPhysicalPath()))
this will add a new folder in the contexts directory
To publish this folder automatically by code try this magic
Newfolderobj = getattr(context, Newfolder, None)
review_state = Newfolderobj.portal_workflow.getInfoFor(Newfolderobj, ‘review_state’, ”)
if not review_state == ‘published’:
Newfolderobj.portal_workflow.doActionFor(Newfolderobj,”publish”,comment=”publised programmatically”)
it will be published in site on the fly…
to add page template
idict = { ‘id’ : ’step1Page’
, ‘type’: ‘page template’
, ‘body’: page_template_body # variable can be a content of a pt file
, ‘workflow_action’: ‘publish’
, ‘workflow_comment’: ‘This item published programmatically’
}
Newfolderobj.manage_addProduct['PageTemplates'].manage_addPageTemplate(id=idict['id'])
oi = getattr(Newfolderobj,idict['id'])
oi.pt_edit(idict['body'],’text/html’)
this will add a page template in new folder
together
def main(self):
# Example code:
# Import a standard function, and get the HTML request and response objects.
from Products.PythonScripts.standard import html_quote
context = self
try:
Newfolder = context.invokeFactory("Folder", id="NewFolderUnusedId", title="NewFolderUnusedId",path='/'.join(context.getPhysicalPath()))
except:
Newfolder = 'NewFolderUnusedId'
Newfolderobj = getattr(context, Newfolder, None)
review_state = Newfolderobj.portal_workflow.getInfoFor(Newfolderobj, 'review_state', '')
if not review_state == 'published':
Newfolderobj.portal_workflow.doActionFor(Newfolderobj,"publish",comment="publised programmatically")
f=open("somefile.pt","r")
page_template_body = f.read()
f.close()
idict = { 'id' : 'step1Page'
, 'type': 'page template'
, 'body': page_template_body
, 'workflow_action': 'publish'
, 'workflow_comment': 'This item published programmatically'
}
Newfolderobj.manage_addProduct['PageTemplates'].manage_addPageTemplate(id=idict['id'])
oi = getattr(Newfolderobj,idict['id'])
oi.pt_edit(idict['body'],'text/html')
return true