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())