version 1.7, 2006/04/05 17:26:19
|
version 1.15, 2009/04/21 07:57:00
|
Line 22 from Globals import Persistent, package_
|
Line 22 from Globals import Persistent, package_
|
from Acquisition import Implicit |
from Acquisition import Implicit |
from Products.ZCatalog.CatalogPathAwareness import CatalogAware |
from Products.ZCatalog.CatalogPathAwareness import CatalogAware |
|
|
|
|
from groups import manage_addGroupFolder |
from groups import manage_addGroupFolder |
|
|
|
from Products.ECHO_content.ECHO_helpers import unicodify |
|
|
refBasis="http://vlp.mpiwg-berlin.mpg.de/references?id=%s" |
refBasis="http://vlp.mpiwg-berlin.mpg.de/references?id=%s" |
|
|
basketMetatypes=['BasketXRef','BasketInternalLink','BasketExternalLink','BasketText','BasketFile'] |
basketMetatypes=['BasketXRef','BasketInternalLink','BasketExternalLink','BasketText','BasketFile'] |
Line 38 class BasketBasis(OrderedFolder):
|
Line 39 class BasketBasis(OrderedFolder):
|
"""Basis class for BasketFolder and Baskets""" |
"""Basis class for BasketFolder and Baskets""" |
|
|
security=ClassSecurityInfo() |
security=ClassSecurityInfo() |
|
|
|
def content_html(self,type): |
|
"""generische ausgabe des objectes als html""" |
|
if hasattr(self,type+"_template"): |
|
obj=getattr(self,type+"_template") |
|
return obj() |
|
else: |
|
pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','%s_template_standard.zpt'%type)).__of__(self) |
|
pt.content_type="text/html" |
|
return pt() |
|
|
|
def checkPermission(self,modus): |
|
"""check permission""" |
|
if modus=='open': |
|
return True |
|
elif modus=='private': |
|
return self.groupFolder.isMemberOf('admin') |
|
elif modus=='admin': |
|
return self.groupFolder.isMemberOf('admin') |
|
elif modus=='edit': |
|
return (self.groupFolder.isMemberOf('editor') or self.groupFolder.isMemberOf('admin')) |
|
elif modus=='publish': |
|
return self.groupFolder.isMemberOf('publish') |
|
elif modus=='authorized': |
|
if self.getActualUserName().lower() == "anonymous user": |
|
return False |
|
else: |
|
return True |
|
|
|
|
def getNewId(self): |
def getNewId(self): |
"""createIds""" |
"""createIds""" |
last=getattr(self,'last',0) |
last=getattr(self,'last',0) |
Line 67 class BasketBasis(OrderedFolder):
|
Line 98 class BasketBasis(OrderedFolder):
|
id=self.getNewId() |
id=self.getNewId() |
manage_addBasketText(self,str(id),'','',RESPONSE=None) |
manage_addBasketText(self,str(id),'','',RESPONSE=None) |
if REQUEST: |
if REQUEST: |
REQUEST.RESPONSE.redirect(self.absolute_url()+"/manageBasket") |
REQUEST.RESPONSE.redirect(self.absolute_url()+"/manageBasket#"+str(id)) |
|
|
def addBasketExternalLink(self,REQUEST=None): |
def addBasketExternalLink(self,REQUEST=None): |
"""add an external link""" |
"""add an external link""" |
Line 75 class BasketBasis(OrderedFolder):
|
Line 106 class BasketBasis(OrderedFolder):
|
|
|
manage_addBasketExternalLink(self,str(id),"","","","",RESPONSE=None) |
manage_addBasketExternalLink(self,str(id),"","","","",RESPONSE=None) |
if REQUEST: |
if REQUEST: |
REQUEST.RESPONSE.redirect(self.absolute_url()+"/manageBasket") |
REQUEST.RESPONSE.redirect(self.absolute_url()+"/manageBasket#"+str(id)) |
|
|
def deleteObject(self,id,REQUEST=None): |
def deleteObject(self,id,REQUEST=None): |
"""delete object""" |
"""delete object""" |
Line 87 class BasketBasis(OrderedFolder):
|
Line 118 class BasketBasis(OrderedFolder):
|
"""move id one up""" |
"""move id one up""" |
self.moveObjectsUp([id], 1) |
self.moveObjectsUp([id], 1) |
if REQUEST: |
if REQUEST: |
REQUEST.RESPONSE.redirect(self.absolute_url()+"/manageBasket") |
REQUEST.RESPONSE.redirect(self.absolute_url()+"/manageBasket#"+id) |
|
|
def moveDown(self,id,REQUEST=None): |
def moveDown(self,id,REQUEST=None): |
"""move id one up""" |
"""move id one up""" |
self.moveObjectsDown([id], 1) |
self.moveObjectsDown([id], 1) |
if REQUEST: |
if REQUEST: |
REQUEST.RESPONSE.redirect(self.absolute_url()+"/manageBasket") |
REQUEST.RESPONSE.redirect(self.absolute_url()+"/manageBasket#"+id) |
|
|
def moveTop(self,id,REQUEST=None): |
def moveTop(self,id,REQUEST=None): |
"""move to top""" |
"""move to top""" |
self.moveObjectsToTop([id]) |
self.moveObjectsToTop([id]) |
if REQUEST: |
if REQUEST: |
REQUEST.RESPONSE.redirect(self.absolute_url()+"/manageBasket") |
REQUEST.RESPONSE.redirect(self.absolute_url()+"/manageBasket#"+id) |
|
|
def moveBottom(self,id,REQUEST=None): |
def moveBottom(self,id,REQUEST=None): |
"""move to top""" |
"""move to top""" |
self.moveObjectsToBottom([id]) |
self.moveObjectsToBottom([id]) |
if REQUEST: |
if REQUEST: |
REQUEST.RESPONSE.redirect(self.absolute_url()+"/manageBasket") |
REQUEST.RESPONSE.redirect(self.absolute_url()+"/manageBasket#"+id) |
|
|
security.declareProtected('View','getOwner') |
security.declareProtected('View','getOwner') |
|
|
def getOwner(self): |
def getOwner(self): |
"""get Owner as string""" |
"""get Owner as string""" |
return self.owner |
return unicodify(self.owner) |
|
|
def isAuthorized(self,role="read"): |
def getTitle(self): |
"""check whether actual user is authorized""" |
"""get title""" |
#TODO replace occurences with checkPermission |
return unicodify(self.title) |
return True |
|
|
|
def getActualUserName(self): |
def getActualUserName(self): |
"""get username of actual user""" |
"""get username of actual user""" |
Line 124 class BasketBasis(OrderedFolder):
|
Line 154 class BasketBasis(OrderedFolder):
|
|
|
def getObjects(self): |
def getObjects(self): |
""""get objects""" |
""""get objects""" |
return [getattr(self,x['id']) for x in self._objects] |
return self.objectValues() |
|
#return [getattr(self,x['id']) for x in self._objects] |
|
|
def numberOfObjects(self): |
def numberOfObjects(self): |
"""anzahl der elemente im basket""" |
"""anzahl der elemente im basket""" |
return len(self._objects) |
return len(self._objects) |
|
|
|
|
class BasketFolder(BasketBasis): |
class BasketFolder(BasketBasis): |
"""Folder for Baskets""" |
"""Folder for Baskets""" |
|
|
Line 149 class BasketFolder(BasketBasis):
|
Line 181 class BasketFolder(BasketBasis):
|
return ret |
return ret |
elif mode=='open_intern': |
elif mode=='open_intern': |
print "open_intern" |
print "open_intern" |
if self.groupFolder.isMemberOf('user'): |
if self.checkPermission('authorized'): |
print "---public" |
|
for object in self.getObjects(): |
for object in self.getObjects(): |
print object.getId(),object.publicationStatus |
if object.publicationStatus=='open_intern' or object.publicationStatus=='open': |
if object.publicationStatus=='open_intern': |
|
ret.append(object) |
ret.append(object) |
return ret |
return ret |
else: |
else: |
Line 185 class BasketFolder(BasketBasis):
|
Line 215 class BasketFolder(BasketBasis):
|
#check if user has right for other modi |
#check if user has right for other modi |
|
|
if hasattr(self,"BasketFolder_template"): |
if hasattr(self,"BasketFolder_template"): |
obj=getattr(self,"BaskeFolder_template") |
obj=getattr(self,"BasketFolder_template") |
return obj() |
return obj(mode=mode) |
else: |
else: |
pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','BasketFolder_template_standard.zpt')).__of__(self) |
pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','BasketFolder_template_standard.zpt')).__of__(self) |
pt.content_type="text/html" |
pt.content_type="text/html" |
Line 256 class Basket(BasketBasis):
|
Line 286 class Basket(BasketBasis):
|
{'label':'manage main','action':'changeBasketForm'}, |
{'label':'manage main','action':'changeBasketForm'}, |
) |
) |
|
|
def checkPermission(self,modus): |
|
"""check permission""" |
def saveButton(self,actualId): |
if modus=='open': |
"""return the save button""" |
return True |
ret=""" |
elif modus=='private': |
<a class="editLink" style="cursor:pointer" |
return self.groupFolder.isMemberOf('admin') |
onClick="forms.changeSetContents.actualId.value='%s';forms.changeSetContents.submit();">save</a> - |
elif modus=='admin': |
|
return self.groupFolder.isMemberOf('admin') |
"""%actualId |
elif modus=='edit': |
return ret |
return self.groupFolder.isMemberOf('edit') |
|
elif modus=='publish': |
|
return self.groupFolder.isMemberOf('publish') |
|
|
|
def manageUserRights_html(self): |
def manageUserRights_html(self): |
"""manage user rights""" |
"""manage user rights""" |
Line 282 class Basket(BasketBasis):
|
Line 309 class Basket(BasketBasis):
|
|
|
def getBasketObjects(self): |
def getBasketObjects(self): |
"""get all basket objects""" |
"""get all basket objects""" |
|
# objs=self.getObjects() |
|
# ret=[] |
|
# for x in objs: |
|
# if x.meta_type in basketMetatypes: |
|
# ret.append(x) |
|
# return ret |
|
return self.objectValues(basketMetatypes) |
|
|
objs=self.getObjects() |
|
ret=[] |
|
for x in objs: |
|
if x.meta_type in basketMetatypes: |
|
ret.append(x) |
|
return ret |
|
|
|
def checkRef(self,xref): |
def checkRef(self,xref): |
"""check if XRef is already in Basket""" |
"""check if XRef is already in Basket""" |
Line 318 class Basket(BasketBasis):
|
Line 346 class Basket(BasketBasis):
|
self.shortDescription=shortDescription |
self.shortDescription=shortDescription |
|
|
|
|
|
def getComment(self): |
|
"""get the comment""" |
|
return unicodify(self.comment) |
|
|
|
|
|
def getShortDescription(self): |
|
"""get the short description""" |
|
return unicodify(self.shortDescription) |
|
|
def getTitle(self): |
|
"""print name""" |
|
return self.title |
|
|
|
security.declareProtected('Manage','changeBasketForm') |
security.declareProtected('Manage','changeBasketForm') |
def changeBasketForm(self): |
def changeBasketForm(self): |
Line 395 class Basket(BasketBasis):
|
Line 428 class Basket(BasketBasis):
|
|
|
|
|
if REQUEST: |
if REQUEST: |
REQUEST.RESPONSE.redirect(self.absolute_url()+"/manageBasket") |
REQUEST.RESPONSE.redirect(self.absolute_url()+"/manageBasket#"+form.get('actualId','')) |
|
|
|
|
def selectThisBasketAsCurrent(self,REQUEST=None): |
def selectThisBasketAsCurrent(self,REQUEST=None): |
Line 430 class Basket(BasketBasis):
|
Line 463 class Basket(BasketBasis):
|
manage_addBasketXRef(self,str(id),title,comment,xref) |
manage_addBasketXRef(self,str(id),title,comment,xref) |
|
|
if REQUEST: |
if REQUEST: |
import random |
#import random |
rd=random.random() |
#rd=random.random() |
REQUEST.RESPONSE.redirect(REQUEST['HTTP_REFERER']+'&-dummy='+str(rd)) |
urlSplit=REQUEST['HTTP_REFERER'].split("?") |
|
if len(urlSplit)>1: |
|
parsed=cgi.parse_qs(urlSplit[1]) |
|
parsed['-link']=link |
|
qs=urllib.urlencode(parsed,doseq=True) |
|
|
|
else: |
|
qs="" |
|
|
|
REQUEST.RESPONSE.redirect(urlSplit[0]+"?"+qs) |
else: |
else: |
return True |
return True |
|
|
Line 454 def manage_addBasket(self,id,title,comme
|
Line 496 def manage_addBasket(self,id,title,comme
|
if RESPONSE is not None: |
if RESPONSE is not None: |
RESPONSE.redirect('manage_main') |
RESPONSE.redirect('manage_main') |
|
|
class BasketBasis(SimpleItem): |
class BasketObject(SimpleItem): |
"""basic class for baskets""" |
"""basic class for baskets""" |
|
|
#security=ClassSecurityInfo() |
#security=ClassSecurityInfo() |
Line 474 class BasketBasis(SimpleItem):
|
Line 516 class BasketBasis(SimpleItem):
|
self.title=title |
self.title=title |
self.comment=comment |
self.comment=comment |
|
|
|
def getTitle(self): |
|
"""get the title""" |
|
return unicodify(self.title) |
|
|
|
def getComment(self): |
|
"""get the comment""" |
|
return unicodify(self.comment) |
|
|
|
|
def changeBasketBasisForm(self): |
def changeBasketBasisForm(self): |
"""form for changing the basket""" |
"""form for changing the basket""" |
pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','changeBasketBasis.zpt')).__of__(self) |
pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','changeBasketBasis.zpt')).__of__(self) |
Line 506 class BasketBasis(SimpleItem):
|
Line 557 class BasketBasis(SimpleItem):
|
pt.content_type="text/html" |
pt.content_type="text/html" |
return pt() |
return pt() |
|
|
class BasketFile(BasketBasis,File): |
class BasketFile(BasketObject,File): |
"""class for fileupload""" |
"""class for fileupload""" |
meta_type="BasketFile" |
meta_type="BasketFile" |
|
|
Line 521 class BasketFile(BasketBasis,File):
|
Line 572 class BasketFile(BasketBasis,File):
|
|
|
def download(self): |
def download(self): |
"""download the file""" |
"""download the file""" |
|
|
self.REQUEST.RESPONSE.setHeader("Content-Disposition","""attachement; filename=%s"""%self.title) |
self.REQUEST.RESPONSE.setHeader("Content-Disposition","""attachement; filename=%s"""%self.title) |
self.REQUEST.RESPONSE.setHeader("Content-Type","application/octet-stream") |
self.REQUEST.RESPONSE.setHeader("Content-Type","application/octet-stream") |
|
|
self.content_type="application/octet-stream" |
self.content_type="application/octet-stream" |
|
try: |
self.REQUEST.RESPONSE.write(self.data) |
self.REQUEST.RESPONSE.write(self.data) |
|
except: |
|
try: |
|
self.REQUEST.RESPONSE.write(str(self.data)) |
|
except: |
|
self.REQUEST.RESPONSE.write(repr(self.data)) |
|
|
def upDateFile(self,fileUpload=None,comment=None,title="",REQUEST=None): |
def upDateFile(self,fileUpload=None,comment=None,title="",REQUEST=None): |
"""update file""" |
"""update file""" |
Line 554 class BasketFile(BasketBasis,File):
|
Line 611 class BasketFile(BasketBasis,File):
|
"""format object as html fragment""" |
"""format object as html fragment""" |
|
|
|
|
return BasketBasis.content_html(self,"BasketFile") |
return BasketObject.content_html(self,"BasketFile") |
|
|
def manage_addBasketFile(self,id,title,comment,fileUpload,content_type='',precondition='',REQUEST=None): |
def manage_addBasketFile(self,id,title,comment,fileUpload,content_type='',precondition='',REQUEST=None): |
"""add a basket file""" |
"""add a basket file""" |
Line 581 def manage_addBasketFile(self,id,title,c
|
Line 638 def manage_addBasketFile(self,id,title,c
|
if REQUEST is not None: |
if REQUEST is not None: |
REQUEST['RESPONSE'].redirect(self.absolute_url()+'/manage_main') |
REQUEST['RESPONSE'].redirect(self.absolute_url()+'/manage_main') |
|
|
class BasketXRef(BasketBasis): |
class BasketXRef(BasketObject): |
"""class for internal references based on xrefs""" |
"""class for internal references based on xrefs""" |
|
|
#security=ClassSecurityInfo() |
#security=ClassSecurityInfo() |
Line 615 class BasketXRef(BasketBasis):
|
Line 672 class BasketXRef(BasketBasis):
|
"""format object as html fragment""" |
"""format object as html fragment""" |
|
|
type=self.xref[0:3] |
type=self.xref[0:3] |
return BasketBasis.content_html(self,"BasketXRef_%s"%type) |
return BasketObject.content_html(self,"BasketXRef_%s"%type) |
|
|
def manage_addBasketXRefForm(self): |
def manage_addBasketXRefForm(self): |
"""form for adding a basket""" |
"""form for adding a basket""" |
Line 634 def manage_addBasketXRef(self,id,title,c
|
Line 691 def manage_addBasketXRef(self,id,title,c
|
if RESPONSE is not None: |
if RESPONSE is not None: |
RESPONSE.redirect('manage_main') |
RESPONSE.redirect('manage_main') |
|
|
class BasketInternalLink(BasketBasis): |
class BasketInternalLink(BasketObject): |
"""class for internal referencens based on links""" |
"""class for internal referencens based on links""" |
|
|
#security=ClassSecurityInfo() |
#security=ClassSecurityInfo() |
meta_type="BasketInternalLink" |
meta_type="BasketInternalLink" |
|
|
manage_options=BasketBasis.manage_options+( |
manage_options=BasketObject.manage_options+( |
{'label':'manage internal link','action':'changeBasketInternalLinkForm'}, |
{'label':'manage internal link','action':'changeBasketInternalLinkForm'}, |
) |
) |
|
|
Line 665 class BasketInternalLink(BasketBasis):
|
Line 722 class BasketInternalLink(BasketBasis):
|
def content_html(self): |
def content_html(self): |
"""format object as html fragment""" |
"""format object as html fragment""" |
|
|
return BasketBasis.content_html(self,"BasketInternalLink") |
return BasketObject.content_html(self,"BasketInternalLink") |
|
|
def linkToObject(self): |
def linkToObject(self): |
"""link to the object (internalLink)""" |
"""link to the object (internalLink)""" |
Line 690 def manage_addBasketInternalLink(self,id
|
Line 747 def manage_addBasketInternalLink(self,id
|
RESPONSE.redirect('manage_main') |
RESPONSE.redirect('manage_main') |
|
|
|
|
class BasketExternalLink(BasketBasis): |
class BasketExternalLink(BasketObject): |
"""class for external links""" |
"""class for external links""" |
|
|
#security=ClassSecurityInfo() |
#security=ClassSecurityInfo() |
meta_type="BasketExternalLink" |
meta_type="BasketExternalLink" |
|
|
manage_options=BasketBasis.manage_options+( |
manage_options=BasketObject.manage_options+( |
{'label':'manage internal link','action':'changeBasketExternalLinkForm'}, |
{'label':'manage internal link','action':'changeBasketExternalLinkForm'}, |
) |
) |
|
|
|
def getLinkText(self): |
|
"""get the link text""" |
|
return unicodify(self.linkText) |
|
|
def changeBasketExternalLinkForm(self): |
def changeBasketExternalLinkForm(self): |
"""form for changing the basket""" |
"""form for changing the basket""" |
pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','changeBasketExternalLink.zpt')).__of__(self) |
pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','changeBasketExternalLink.zpt')).__of__(self) |
Line 721 class BasketExternalLink(BasketBasis):
|
Line 782 class BasketExternalLink(BasketBasis):
|
def content_html(self): |
def content_html(self): |
"""format object as html fragment""" |
"""format object as html fragment""" |
|
|
return BasketBasis.content_html(self,"BasketExternalLink") |
return BasketObject.content_html(self,"BasketExternalLink") |
|
|
def linkToObject(self): |
def linkToObject(self): |
"""link to the object (externalLink)""" |
"""link to the object (externalLink)""" |
Line 745 def manage_addBasketExternalLink(self,id
|
Line 806 def manage_addBasketExternalLink(self,id
|
RESPONSE.redirect('manage_main') |
RESPONSE.redirect('manage_main') |
|
|
|
|
class BasketText(BasketBasis): |
class BasketText(BasketObject): |
"""class for text elements in baskets""" |
"""class for text elements in baskets""" |
|
|
#security=ClassSecurityInfo() |
#security=ClassSecurityInfo() |
Line 764 def manage_addBasketTextForm(self):
|
Line 825 def manage_addBasketTextForm(self):
|
def manage_addBasketText(self,id,title,comment,RESPONSE=None): |
def manage_addBasketText(self,id,title,comment,RESPONSE=None): |
"""add a basketXRef object""" |
"""add a basketXRef object""" |
|
|
|
|
newObj=BasketText(id,title,comment) |
newObj=BasketText(id,title,comment) |
|
|
self._setObject(id,newObj) |
self._setObject(id,newObj) |
|
|
if RESPONSE is not None: |
if RESPONSE is not None: |
RESPONSE.redirect('manage_main') |
RESPONSE.redirect('manage_main') |
|
|
|
|
|
|
|
|
|
|