plone total#3 conhecendo o zope

21
Plone Total Conhecendo o Zope Lucas Aquino quarta-feira, 23 de janeiro de 13

Upload: lucas-aquino

Post on 29-Jun-2015

234 views

Category:

Self Improvement


4 download

TRANSCRIPT

Page 1: Plone total#3 Conhecendo o Zope

Plone TotalConhecendo o Zope

Lucas Aquino

quarta-feira, 23 de janeiro de 13

Page 2: Plone total#3 Conhecendo o Zope

Tópicos

• Introdução ao Zope• Zope Management Interface - ZMI• Zope Page Template

quarta-feira, 23 de janeiro de 13

Page 3: Plone total#3 Conhecendo o Zope

Introdução ao Python

Python é uma linguagem de programação de alto nível, interpretada, imperativa, orientada a objetos, de tipagem dinâmica e forte. Foi lançada por Guido van Rossum em 1991.

Atualmente possui um modelo de desenvolvimento comunitário, aberto e gerenciado pela organização sem fins lucrativos Python Software Foundation.

quarta-feira, 23 de janeiro de 13

Page 4: Plone total#3 Conhecendo o Zope

Zope é um servidor de aplicações web de código aberto escrito na linguagem Python. Seu nome significa "Z Object Publishing Environment" (em português, "Ambiente de Publicação de Objetos Z"). Muitas tarefas de administração de um servidor Zope podem ser realizadas através de uma interface web.

Os objetos que o Zope publica na Web são escritos em linguagem Python, e tipicamente armazenados num banco de dados orientado a objetos, o ZODB, que é integrado ao sistema. Objetos básicos tais como documentos, imagens e modelos de páginas podem ser criados ou modificados via web.

Objetos especializados, tais como wikis, blogs, e galerias de fotos estão disponíveis

como componentes adicionais (chamados products), e existe uma comunidade pujante de pequenas empresas criando aplicações web como produtos.

Introdução ao Zope

4

quarta-feira, 23 de janeiro de 13

Page 5: Plone total#3 Conhecendo o Zope

Zope Management Interface - ZMI

• Interface de gerência do servidor de aplicação Zope• Ferramentas para manutenção • .../manage

5

quarta-feira, 23 de janeiro de 13

Page 6: Plone total#3 Conhecendo o Zope

Zope Page Template  

Zope Page Templates é linguagem de programação de template do Zope.

Vantagens:

• Reaproveitamento de código(tags <>) HTML • Real separação entre conteúdo, lógica e apresentação • Facilidade/agilidade no uso de templates.

Desvantagens:

• Poderá gerar mais código HTML que o necessário• Poderá existir lógica no template(não recomendado)

6

quarta-feira, 23 de janeiro de 13

Page 7: Plone total#3 Conhecendo o Zope

Zope Page Template  

O Zope incentiva manter a apresentação visual separada da lógica(Python).

O ZPT utiliza o HTML para gerar as páginas no navegador - HTML.

O ZPT tem característica de uma linguagem cliente-servidor, tal como PHP, isto significa que as expressões ZPT são executadas pelo servidor Zope e interpretadas no navegador.

Importante lembrar que arquivos de CSS ou Javascript continuam a serem executados diretamente pelo navegador.

O ZPT utiliza como padrão: o TAL - Template Attribute Language, TALES - Expressões TALES e METAL - Macro Expansion TAL para desenvolver os templates.

7

quarta-feira, 23 de janeiro de 13

Page 8: Plone total#3 Conhecendo o Zope

Zope Page Template  

Expressões TAL:

1.tal:define

2.tal:condition

3.tal:repeat

4.tal:content

5.tal:replace

6.tal:attributes

7.tal:omit-tag

* ordem de execução

8

Expressões METAL:

• metal:define-macro

• metal:define-slot

• metal:use-macro

• metal:fill-slot

Principais expressões TALES:

• string

• python

• path

• exists

• nocall

• not

quarta-feira, 23 de janeiro de 13

Page 9: Plone total#3 Conhecendo o Zope

Zope Page Template  

tal:contentA expressão tal:content substitui o conteúdo do elemento pelo resultado da expressão contida nele, sem alterar o elemento HTML.

Exemplo:

<h1 tal:content=” context/Title”>Título</h1>

Nesse exemplo o tal:content substitui o texto “Título” que está envolto no elemento <h1>, o context/title significa: retorne do contexto da aquisição a propriedade title do template.

A expressão context/title está descrita de acordo com uma sintaxe definida no TALES. Na prática, expressões path do TALES podem ser facilmente reconhecidas pela simples presença do caractere barra (/). Expressões Python, por exemplo, sempre são escritas usando o caractere ponto (.). Assim, a expressão acima poderia ser descrita de uma outra forma, usando a sintaxe do Python, como no exemplo abaixo:

<h1 tal:content=”python: context.Title”>Título</h1>

9

quarta-feira, 23 de janeiro de 13

Page 10: Plone total#3 Conhecendo o Zope

Zope Page Template  

tal:replaceBasicamente tem as mesmas características da expressão tal:content, mas com uma diferença significativa, o tal:replace substitui o elemento HTML pelo resultado da expressão.Exemplos:

<h1 tal:replace=” context/Title”>Título</h1>

Resultado será o “Título” sem formatação HTML.

10

quarta-feira, 23 de janeiro de 13

Page 11: Plone total#3 Conhecendo o Zope

Zope Page Template  

tal:repeatExpressão usada para criação de estruturas de repetição.Exemplo:

<table> <tr tal:repeat=”arquivo python:context.objectValues(‘File’)”> <td tal:content=”arquivo/title_or_id”>Arquivo</td> </tr></table>

Com o HTML criamos uma tabela com ‘n’ linhas e uma colunas e assim, populamos os dados no template.

11

quarta-feira, 23 de janeiro de 13

Page 12: Plone total#3 Conhecendo o Zope

Zope Page Template  

tal:defineDefine variáveis dentro do contexto da tag HTML.

Exemplo:

<table tal:define=”arquivos python:context.objectValues(‘File’)” > <tr tal:repeat=”arquivo arquivos”> <td> <a tal:content=”arquivo/title_or_id” tal:attributes=”href arquivo/absolute_url”> Objeto </a> </td> </tr></table>

12

quarta-feira, 23 de janeiro de 13

Page 13: Plone total#3 Conhecendo o Zope

Zope Page Template  

tal:attributesDefine variáveis utilizáveis como atributos de elemeto HTML.

Utilizando o mesmo exemplo:

<table tal:define=”arquivos python:context.objectValues(‘File’)” > <tr tal:repeat=”arquivo arquivos”> <td> <a tal:content=”arquivo/title_or_id” tal:attributes=”href arquivo/absolute_url”> Objeto </a> </td> </tr></table>

13

quarta-feira, 23 de janeiro de 13

Page 14: Plone total#3 Conhecendo o Zope

Zope Page Template  

tal:condition

É usado para criar condicionais simples, no caso do uso do tal:condition e no caso da condicional não ser atendida a tag simplesmente não é renderizada. Lembrando também que não existe um else no tal:condition, neste caso teríamos que duplicar a tag e fazer a condicional afirmativa e negativa, como no exemplo abaixo:

<p tal:condition=”python: request.nome == ‘Luxcas’”> Você é o Luxcas!</p><p tal:condition=”python: request.nome != ‘Luxcas’”> Você não é o Luxcas! </p>

14

quarta-feira, 23 de janeiro de 13

Page 15: Plone total#3 Conhecendo o Zope

Zope Page Template  

tal:omit-tag

Remove o elemento HTML, mas mantendo o que existir entre o abre e fecha do elemento HTML, do elemento.

Exemplo:

<div tal:omit-tag=”” comment=”Este elemento será removido”> <i>... mas este texto permanecerá</i></div>

15

quarta-feira, 23 de janeiro de 13

Page 16: Plone total#3 Conhecendo o Zope

Zope Page Template  

METAL

A declaração METAL trabalha com os templates, sua função é definir uma macro e suas partes editáveis.

16

Expressões METAL:

• metal:define-macro

• metal:define-slot

• metal:use-macro

• metal:fill-slot

quarta-feira, 23 de janeiro de 13

Page 17: Plone total#3 Conhecendo o Zope

Zope Page Template  

metal:define-macroA declaração metal:define-macro define uma macro. A macro é nomeada pela expressão declarada, e é definida como um elemento e sua sub-árvore.

No Zope, uma definição de macro está disponível como sub-objeto de uma macro em um template. Por exemplo, para acessar um cabeçalho html chamando a macro no template denominado “master.html”, você poderá usar a expressão:

master.html/macros/header

Exemplo:

Definindo uma simples macro<p metal:define-macro="copyright">

Copyright 2013, <em>Foobar</em> Inc.

</p>

17

quarta-feira, 23 de janeiro de 13

Page 18: Plone total#3 Conhecendo o Zope

Zope Page Template  

18

metal:use-macroA declaração metal:use-macro substitui o elemento declarado em uma macro. A expressão declaração descreve a definição da macro.

No Zope a expressão será geralmente uma expressão de caminho, path, referindo-se a uma macro definida em outro template.

Quando uma macro é expandida, aquele atributo metal:define-macro é substituído pelos elementos atribuídos no metal:use-macro. Isto faz com que o conteúdo da raiz da macro seja expandida em um elemento com declaração de use-macro válida

Exemplo:

Utilizando uma macro<p metal:use-macro="context/other.html/macros/header">

Macro “header” definida no template other.html

</p>

quarta-feira, 23 de janeiro de 13

Page 19: Plone total#3 Conhecendo o Zope

Zope Page Template  

19

metal:define-slotA declaração metal:define-slot define um ponto de customização de um macro ou slot. Quando uma macro é usada, estes slots são substituídos a fim de personalizar a macro. Você terá a configuração padrão do slot quando ele não for utilizado por outro template.

A expressão metal:define-slot só será válida dentro de uma declaração de metal:define-macro.

Os nomes de slot devem ser únicos dentro de uma macro.

Exemplo:

Utilizando uma simples macro com slot<p metal:define-macro="hello">

Olá <b metal:define-slot="name">mundo</b>

</p>

quarta-feira, 23 de janeiro de 13

Page 20: Plone total#3 Conhecendo o Zope

Zope Page Template  

20

metal:fill-slotA declaração metal:fill-slot personaliza uma macro, substituindo um slot na macro com o elemento declarado, além de seu conteúdo. Esta declaração deve ser utilizada dentro de um metal:use-macro.

Os nomes de slot devem ser únicos dentro de uma macro.

Se o slot nomeado não existir dentro da macro, o conteúdo deste slot será descartado.

Exemplo:Dada uma macro, master.html<p metal:define-macro="hello">

Olá <b metal:define-slot="name">mundo</b>

</p>

Você poderá preencher o slot name, assim:<p metal:use-macro="context/master.html/macros/hello">

Olá <b metal:fill-slot="name">Lucas Aquino</b>

</p>

quarta-feira, 23 de janeiro de 13

Page 21: Plone total#3 Conhecendo o Zope

OBRIGADO!

Lucas Aquino@luxcas

[email protected]

quarta-feira, 23 de janeiro de 13