import Globals
from Globals import Persistent, Acquisition
import AccessControl
import OFS
from AccessControl import ClassSecurityInfo
from XLink import XLink
class XSite (
Acquisition.Implicit,
Persistent,
AccessControl.Role.RoleManager,
OFS.PropertyManager.PropertyManager,
OFS.ObjectManager.ObjectManager,
OFS.Folder.Folder
):
"Classe que define o XSite."
responsavel = ""
data_inicial = "1970/01/01"
data_final = "2100/01/01"
template_principal = None
secao_principal = None
catalog_principal = None
filtered_meta_types = (
{'name' : 'XTemplate', 'action' : 'manage_addProduct/ZCoMIX/addXTemplateForm'},
{'name' : 'XSecao', 'action' : 'manage_addProduct/ZCoMIX/addXSecaoForm'},
{'name' : 'XLink', 'action' : 'manage_addProduct/ZCoMIX/addXLinkForm'},
{'name' : 'ZCatalog', 'action' : 'manage_addProduct/ZCatalog/addZCatalog'},
{'name' : 'Set Access Rule', 'action' : 'manage_addProduct/SiteAccess/manage_addAccessRuleForm'},
{'name' : 'Script (Python)', 'action' : 'manage_addProduct/PythonScripts/pyScriptAdd'},
{'name' : 'LDAPLoginAdapter', 'action' : 'manage_addProduct/LDAPLoginAdapter/addLDAPLoginAdapter'},
{'name' : 'LDAPUserManager', 'action' : 'manage_addProduct/LDAPUserManager/addLDAPUserManager'},
{'name' : 'Z MySQL Database Connection', 'action' : 'manage_addProduct/ZMySQLDA/connectionAdd'},
{'name' : 'XSite', 'action' : 'manage_addProduct/ZCoMIX/addXSiteForm'} )
isFolderish = 'Y'
_properties = (
{'id':'title','type':'string','mode':'w'},
{'id':'responsavel','type':'string','mode':'w'},
{'id':'data_inicial','type':'date','mode':'w' },
{'id':'data_final','type':'date','mode':'w' },
{'id':'template_principal','type':'string','mode':'w' },
{'id':'secao_principal','type':'string','mode':'w' },
)
menuPrincipal = []
security = ClassSecurityInfo()
manage_options=OFS.Folder.Folder.manage_options[:1] +(
{'label':'Propriedades', 'action':'manage_editXSiteForm'},
{'label':'Menu', 'action':'manage_editXSiteMenuForm'},
) + OFS.Folder.Folder.manage_options[1:2] + OFS.Folder.Folder.manage_options[3:]
meta_type = 'XSite'
security.declareProtected('Modificar Propriedades do XSite','manage_editXSiteForm')
manage_editXSiteForm = Globals.DTMLFile("dtml/editXSiteForm", globals())
security.declareProtected('Modificar Propriedades do XSite','manage_editXSiteMenuForm')
manage_editXSiteMenuForm = Globals.DTMLFile("dtml/editXSiteMenuForm", globals())
def __init__(self, id, title):
self.id = id
self.title = title
security.declareProtected('View','menuItemsPrincipal')
def menuItemsPrincipal(self, REQUEST=None):
"Lista de items a serem mostrados no Menu do XSite"
if REQUEST is not None:
for i in range(0, len(self.REQUEST.PARENTS)):
dir = self.REQUEST.PARENTS[i]
if dir.meta_type=='XSite':
site = dir
break
else:
site = self
items = []
for item in site.objectValues(['XSecao', 'XPagina','XLink']):
if item.mostrar_como_principal:
items.append(item)
return items
security.declareProtected('Modificar Propriedades do XSite','addMenuItemPrincipal')
def addmenuItemPrincipal(self, id, title=None, url=None, REQUEST=None):
"Adiciona um novo Item de Menu"
for i in range(0, len(self.REQUEST.PARENTS)):
dir = self.REQUEST.PARENTS[i]
if dir.meta_type=='XSite':
site = dir
break
item = XLink(id, title, url)
site._setObject(id, item)
return self.manage_editXSiteMenuForm(REQUEST, management_view = 'Menu',
manage_tabs_message='O XSite %s foi editado.' % self.id)
security.declareProtected('View','mapaSite')
def mapaSite(self, REQUEST=None):
"Retorna todos os objetos XSecao e XPagina do site"
results = []
for o in self.objectValues(['XSecao', 'XPagina']):
results.append(o)
return results
security.declareProtected('Modificar Propriedades do XSite','manage_editXSiteMenu')
def manage_editXSiteMenu(self, menu_items, REQUEST=None):
"Modifica a ordem dos Menus do XSite"
ordem = 0
for i in menu_items:
ob = getattr(self, i, None)
if ob is not None:
ob.ordem_menu_principal = ordem
ordem += 1
if REQUEST is not None:
return self.manage_editXSiteMenuForm(REQUEST, management_view = 'Menu',
manage_tabs_message='O XSite %s foi editado.' % self.id)
security.declareProtected('Modificar Propriedades do XSite','manage_editXSite')
def manage_editXSite(self, title, responsavel='admin', data_inicial='1970/01/01', data_final='2100/01/01', template_principal=None, secao_principal=None, catalog_principal=None, REQUEST=None):
"Modifica as Propriedades do XSite"
self.title = title
self.responsavel = responsavel
self.data_inicial = data_inicial
self.data_final = data_final
self.catalog_principal = catalog_principal
if template_principal is None:
template_principal = self.objectValues("XTemplate")
try:
template_principal = template_principal[0].getId()
except:
template_principal = ""
self.template_principal = template_principal
if secao_principal is None:
secao_principal = self.objectValues("XSecao")
try:
secao_principal = secao_principall[0].getId()
except:
secao_principal = None
self.secao_principal = secao_principal
if REQUEST is not None:
return self.manage_editXSiteForm(REQUEST, management_view = 'Propriedades',
manage_tabs_message='O XSite %s foi editado.' % self.id)
Globals.default__class_init__(XSite)
def manage_addXSite(self, id, title, responsavel='admin', data_inicial='1970/01/01', data_final='2100/01/01', template_principal=None, secao_principal=None, catalog_principal=None, REQUEST=None):
"""Cria um XSite e o adiciona ao seu parent Folder.
O argumento 'self' referencia o parent Folder.
"""
site = XSite(id, title)
site.responsavel = responsavel
site.data_inicial = data_inicial
site.data_final = data_final
site.catalog_principal = catalog_principal
if template_principal is None:
template_principal = self.objectValues("XTemplate")
try:
template_principal = template_principal[0].getId()
except:
template_principal = None
site.template_principal = template_principal
if secao_principal is None:
secao_principal = self.objectValues("XSecao")
try:
secao_principal = secao_principall[0].getId()
except:
secao_principal = None
site.secao_principal = secao_principal
self._setObject(id, site)
if REQUEST is not None:
return self.manage_main(self, REQUEST)
manage_addXSiteForm = Globals.HTMLFile('dtml/addXSiteForm', globals())