Python – Zope - Plone Adolfo Bruno

Slides:



Advertisements
Apresentações semelhantes
Tutorial Joomla! Gerenciando Artigos Inclusão ou Edição de Artigos
Advertisements

Python: Dicionários Claudio Esperança.
Hipermídia Aula 3.
Java Básico Orientação a Objeto Marco Antonio Software Architect Fev/2008.
Administrando usuários 1 Controle de contas de usuários 1.
Encontro Linguagem HTML; 13. Hospedagem na WWW.
Tecnologia para Web JavaScript
Instrutor: Nilo Menezes
Introdução ao JavaScript
Apresentação da linguagem Python
Emitindo seu Certificado Digital
Documentando con Javadoc
Geração Dinâmica de Páginas com JSP Eduardo Martins Guerra Instituto Tecnológico de Aeronáutica Curso de Pós-Graduação em Engenharia de Software Programação.
Tecnologias para Internet
EL e JSTL Prof. Danton Cavalcanti Franco Junior
Antes de iniciar o trabalho com esse site, é necessário criar uma conta de , no gmail, e todos do grupo devem ter esse endereço, login e senha. Todos.
Servidor HTTP (Apache)
Semana 1 Conceitos Básicos e Infra-estrutura
Tópicos avançados em internet B Carlos Oberdan Rolim Ciência da Computação.
Programação Web com PHP
Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012.
Protocolo HTTP e HTML Prof. Danton Cavalcanti Franco Junior
Introdução a linguagem Python
Rodrigo Cristiano Silva
Aula R Prof. Naércio Filho Técnico em Informática
Aula PHPdoc Prof. Naércio Filho Técnico em Informática
Conceitos básicos de orientação a objetos
Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012.
Curso básico de PHP 1 Vantagens: Gratuito Multiplataforma Estável Rapidez Comunicação.
Acadêmicos: Durval Slompo Junior / Verediane R. S. Monteiro
Laboratório de Programação I Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Layout.
Rodrigo Cristiano Silva
Introdução ao Framework Django
1ª Aula de Html Íria Albuquerque.
LOGIN Para acessar o sistema, digite em seu browser:
GERENCIANDO PORTAIS COM O CMS Prof. Bruno Catiari - Faculdade São Mateus.
ACCESS 2007 EDIMILSON JÚNIOR.
Tutorial de Wordpress. Sobre o Wordpress  O Wordpress é um gerenciador de conteúdo na web (em especial, blogs). A grande diferença com relação a seus.
ASP (Active Server Pages)
Prof. Alexandre Monteiro Recife
Professor: Márcio Amador
Oficina Plone Criação de Formulários
7 - Criação de Páginas Web
PrograMação para internet
PROGRAMAÇÃO PARA INTERNET Prof.: Jean Carlo Mendes
Escola de Engenharia de Piracicaba Sistemas de Apoio a Decisão
Unidade 6 – Formulários HTML Prof.: Henrique Santos
Usuários e Grupos Usuário: alguém que possui conta, internamente é tratado como um número (UID) que é a identificação do usuário (USER ID). Cada usuário.
JSP JavaServer Pages Marco Antonio, Arquiteto de Software – TJDF Dezembro/2005.
Aula Prática 4 Monitoria IP/CC (~if669).
Análise Léxica Prof. Alexandre Monteiro
TECNOLOGIA WEB XHTML Aula 5 Profa. Rosemary Melo.
Iº Workshop Linux da Unijorge
Unidade 5 – Integrando JSP e Servlets Prof.: Henrique Santos
Karine Alessandra Córdova
Shell Script Parte 2.
Array e ArrayList LPOO – 01/09/14.
Departamento de Tecnologia da Informação. Curiosidades; O que é o Joomla? Principais características; Tipos de portais; Fluxo de trabalho – workflow;
Programação para Web I AULA 2 BANCO DE DADOS.
Desenvolvimento WEB II Continuação AJAX Professora: Kelly de Paula Cunha.
Programação PHP Gustavo Eduardo Terra.
Acesso à Dados – ZEOS x Delphi
Aula 11 Orientação a Objeto (OO)
1 AJAX em aplicações Rails Lívia Monnerat Castro
JavaScript Introdução ao JavaScript 1. Objetivos Introdução Sintaxe Básica Arquivo (script) externo Script no HEAD da página Script no BODY da página.
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Treinamento CMS Plone Criação de Páginas Pessoais Guilherme Luiz Frufrek
Programação para Internet Rica– Aula 05 Prof. Me. Ronnison Reges Vidal.
Rhizome. Roteiro Definição Metas Características Arquitetura Tecnologias envolvidas Referências.
Transcrição da apresentação:

Python – Zope - Plone Adolfo Bruno _____________________________________________ Adolfo Bruno GCUFAL Maceió – 16 de Agosto de 2008

Sequência CMS Python Zope Plone Aplicação _____________________________________________ CMS Python Zope Plone Aplicação

CMS Content Management System

O que é um CMS? intranets, cujo objetivo é estruturar e facilitar a _____________________________________________ É um gerenciador para websites, portais e intranets, cujo objetivo é estruturar e facilitar a criação, administração, distribuição, publicação e disponibilidade da informação.

Por que usar um CMS? Sites tendem a crescer desordenadamente _____________________________________________ Sites tendem a crescer desordenadamente Dar o “poder” da edição ao usuário Reduzir o tempo de publicação Publicação on-line Padronizar interfaces de apresentação Separar conteúdo, interface e lógica Segurança Web 2.0

Python

O que é Python? Linguagem de programação de alto nível Interpretada ______________________________________________ Linguagem de programação de alto nível Interpretada Interativa Orientada a Objetos Tipagem dinâmica e forte Portável Multiparadigma

História do Python? ______________________________________________ Surgiu no Natal de 1989 Criada por Guido Van Rossum nos Países Baixos Sucessora da ABC Utilizada no sistema operacional Amoeba O nome é em homenagem ao grupo humorístico britânico Monty Python.

Indentação Não existem blocos de comandos ______________________________________________ Não existem blocos de comandos A Indentação é uma característica peculiar no Python Em linguagens como C ou PHP os blocos são delimitados por chaves, no Pascal ou Delphi pelo begin e end

Indentação Indentação correta Indentação Errada ______________________________________________ Indentação correta def valor(self): try: self.c = input('Valor: ') c = self.c return c except: print 'Inválido!' self.valor() Indentação Errada def valor(self): try: self.c = input('Valor: ') c = self.c return c except: print 'Inválido! ' self.valor()

Estruturas de Controle ______________________________________________ Condicional: if, else e elif if nome == “Pedro": idade = 21 Laço iterativo: for lista = ["pedra", "papel", "cenoura"] for item in lista: print item Laço condicional: while while i < 10: print "true"

Funções Funções são criadas utilizando a palavra reservada def ______________________________________________ Funções são criadas utilizando a palavra reservada def def funcao(v1, v2): v3 = v1 + v2 print "O resultado de v1 + v2 é ", v3 funcao(2, 2) Pode executar no prompt: python funcao.py

Classes ______________________________________________ Atributos e métodos privados sempre têm dois ‘_’ antes do seu nome. Em Python podemos utilizar herança simples e herança múltipla class ClasseOne: def __init__(self): self.atribA = 'Atributo A' self.atribB = 10 self.atrubC = None self.__privado = None def umMetodo(self, arg1): print arg1 + self.atribB umaClasse = ClasseOne() print umaClasse.atribA umaClasse.umMetodo(2)

Listas ______________________________________________ A utilização de listas (arrays) em Python é muito simples. lista = [] # cria lista vazia lista = ['laranja', 'banana', 'uva'] # cria lista com 3 elementos print lista[1] # imprime ‘banana’ lista.append(‘abacaxi'); # adiciona um novo elemento no final da lista lista. Insert(i, x) # adiciona um elemento x na posição i lista.remove( x) # remove o elemento x lista[:2] # retorna uma nova lista com os elementos 0 a 2 lista[1:3] # retorna uma nova lista com os elementos 1 a 3

Zope

O que é Zope? ______________________________________________ Servidor de Aplicações criado pela Digital Creations (Zope Corporation) Liberado fonte em 1998 Interface de administração via broswer Escrito em Python Zope (Z Object Publishing Environment) Servidor web, o Zserver Banco de dados orientado a objetos, o ZODB

Multi SGBDs ______________________________________________ O Zope suporta conexões com os bancos de dados relacionais mais utilizados no mercado PostgreSQL MySQL Firebird Oracle SQL Server ODBC

Plone

O que é Plone? ______________________________________________ Criado em 2001 por Alexander Limi e Alan Runyan É um CMS open-source que roda sob o servidor de aplicações Zope Lançado sobre a licença GNU Compatível com a maioria dos navegadores web Adere ao padrões web É extensível (através dos produtos) Fácil customização Internacionalizado para ~60 idiomas Tradução sensível ao idioma do navegador

Verificar se o gcc, g++ e make estão instalados A instalação ______________________________________________ 1. Passo: Instalar Zlib 1 – tar zxvf zlib-1.2.3.tar.gz 2 – ./configure 3 – make test 4 – make install 2. Passo: 1 – vim /etc/ld.so.conf 2 – Adicione: include /usr/local/include 3 – Execute o comando: ldconfig Verificar se o gcc, g++ e make estão instalados

A instalação ______________________________________________ 3. Passo: Instalar o Python 1 – tar zxvf Python-2.4.4.tgz 2 – ./configure 3 – make 4 – make install

A instalação ______________________________________________ 4. Passo: Instalar Imaging 1 – tar zxvf Imaging-1.1.6.tar.gz 2 - Para instalar a Imaging certifique-se que a libjpeg está instalada no sistema. Para isso execute o seguinte comando: whereis libjpeg Caso a saída seja: libjpeg: Significa que a libjpeg não está instalada. Para instalá-la execute o comando: apt-get install libjpeg-progs libjpeg62 libjpeg62-dev

A instalação ______________________________________________ 3- Agora altere a linha JPEG_ROOT no arquivo setup.py, para isso execute dentro do diretório Imaging-1.1.6: vim setup.py Procure pela linha JPEG_ROOT = NONE e a altere para JPEG_ROOT = “/usr/lib” Salve as alterações. E siga para o próximo passo. 4 – python setup.py install

A instalação ______________________________________________ 5. Passo: Instalar o Zope 1 – tar zxvf Zope-2.9.8-final.tgz 2 – ./configure --prefix=/var/zope-2.9.8 --with- python=/usr/local/bin/python 3 – make 4 – make install 5 – useradd zope 6 – chown zope:root /var/zope-2.9.8 -R 7 – /var/zope-2.9.8/bin/mkzopeinstance.py 8 – Informar o seguinte diretório: /var/zope 9 – Informar usuário e senha da instância zope (não do linux!) 10 – Descomentar e editar no arquivo /var/zope/etc/zope.conf “effective-user zope” Onde zope é o usuário criado no momento da criação da instância (passo 8) 11 – chmod 755 /var/zope/log 12 – chmod 755 /var/zope/var 13 – chown zope:root /var/zope -R

A instalação ______________________________________________ 6. Passo: Instalar o Plone 1 – tar zxvf Plone-2.5.5.tar.gz 2 – mv ./Plone-2.5.5 /var/zope/Products 3 – chown zope:root /var/zope -R Para iniciar o zope, execute os seguintes comandos: Iniciar: /var/zope/bin/zopectl start Reiniciar: /var/zope/bin/zopectl restart Parar: /var/zope/bin/zopectl stop

Criando conteúdo ______________________________________________ O Plone disponibiliza objetos para criação, por padrão são: Arquivo, Evento, Imagem, Link, Notícia, Pasta, Pasta Esperta, Página. Assim que é criado algum objeto o Plone atribui uma data de criação; Um objeto pode atribuir: data (criação, efetivação, expiração, inicial, final), criador, estado (esboço público, publicado, privado, pendente).

Objetos e sua diferenças ______________________________________________ Arquivo: Enviar arquivo externo para o site; Evento: Informações de eventos que ficam no calendário; Imagem: Pode ser referenciada em documentos e exibida em álbuns; Link: Um link para recursos interno ou externo; Notícia: Um anúncio que aparecerá no portlet de notícia e na lista de notícia; Pasta: Pode conter outros itens; Pasta Esperta: Realiza busca que é atualizada automaticamente e pode exibir itens que casam com um critério especificado; Página: Pode conter conteúdo, uma página do site.

Instalando Produtos ______________________________________________ Qual o produto? RichDocument Onde achar? www.plone.org Como instalar? Copiar o arquivo descompactado para a pasta Products; Reiniciar o servidor; Ir ao site > Configuração do site > Adicionar remover produtos. E instalar o produto. Ou então, Ir na ZMI -> Portal Quickinstaller -> Escolher o produto e instalar.

Ferramentas do Plone no Zope ______________________________________________ http://localhost:8080/manage portal_actions portal_catalog portal_properties portal_quickinstaller portal_skins portal_types portal_workflow portal_css portal_javascripts

portal_actions ______________________________________________ Responsável pelo cadastro e alteração de ações do portal, por exemplo: site_actions, document_actions, portal_tabs; Title = Título Id = Identificação única URL = Caminho para script/página que será executado Permission = Permissão necessária para executar a ação Category = Categoria que a ação pertence Visible = É visível ou não

portal_catalog Baseado no ZCatalog do ZOPE; ______________________________________________ Baseado no ZCatalog do ZOPE; Indexa todos os objetos do Plone; Adiciona índices, metadados e políticas que facilitam a busca de objetos no Plone;

portal_properties ______________________________________________ Define as principais propriedades para a árvore de navegação e também para o site em geral;

portal_quickinstaller ______________________________________________ Responsável por adicionar e remover produtos Plone;

portal_skins Localização dos templates do Plone e dos produtos; ______________________________________________ Localização dos templates do Plone e dos produtos;

portal_types ______________________________________________ Gerencia os tipos de objetos do Plone Aba Contents -> Lista todos os tipos de objetos Properties -> Detalhes do objeto Actions -> Ações possíveis de executar pelo objeto Aba Aliases -> Determina os templates de Visão, Edição, Propriedades, compartilhamento dos objetos;

portal_workflow Determina o workflow para cada objeto do Plone ______________________________________________ Determina o workflow para cada objeto do Plone Aba Workflow -> Determina o workflow do portal_type Aba Contents -> Lista os workflows existentes

portal_css - portal_javascripts ______________________________________________ Em portal_css são registrados todos os css do plone; Em portal_javascripts são registrados todos os javascripts do plone;

Zope Page Templates (ZPT) ______________________________________________ Zope Page Templates (ou linguagem de templates Zope) é um instrumento do servidor de aplicação Zope para a geração de páginas web dinâmicas. O objetivo é proporcionar um fluxo de tarefas natural entre designers e programadores.

ZPT x DTML ______________________________________________ DTML “Document Template Markup Language” (Linguagem de Marcação para Modelos de Documentos) é a linguagem de apresentação e script baseada em tag do Zope. Podemos usar o DTML em dois tipos de objetos no Zope, DTML Documents e DTML Methods DTML sofre por uma deficiência para separar apresentação, lógica e conteúdo (dados). O namespace do DTML adiciona muita “mágica”, sem permitir controle suficiente.

ZPT na prática ______________________________________________ Page Templates usam a Template Attribute Language (TAL). TAL consiste em atributos especiais para as tags HTML. Por exemplo, um titulo dinâmico de uma página deveria ficar assim: <title tal:content="here/title">Page Title</title>

ZPT na prática Para criar um Page Template vamos até a ZMI: ______________________________________________ Para criar um Page Template vamos até a ZMI: Em seguida:

ZPT na prática ______________________________________________ <html> <body> <p> Esse é o <b tal:content="template/title">título</b> </p> </body> </html>

ZPT na prática - Expressões ______________________________________________ A expressão, "template/title" do exemplo anterior é uma expressão de caminho ou path expression. Esse é o tipo mais comum de expressão. Outras expressões: 'request/URL': A URL da requisição web atual. 'user/getUserName': O nome do usuário autenticado. 'container/objectIds': Uma lista dos ids dos objetos que estão na mesma pasta do template.

ZPT na prática - Comandos TAL ______________________________________________

ZPT na prática No Page Template que criamos, a linha: ______________________________________________ No Page Template que criamos, a linha: Esse é o <b tal:replace="template/title"> título</b> Renderizou: Esse é o Meu Template. Portanto, A tag <b> foi trocado pelo valor de “template/title”

ZPT na prática ______________________________________________ Outra maneira de inserir texto é com a instrução: tal:content Uso similar ao tal:replace, porém o a tag não é removida e o valor é inserido dentro dela; Ex.: <head> <title tal:content="template/title">Titulo</title> </head>

ZPT na prática - Repetindo estruturas ______________________________________________ <table border="1" width="100%"> <tr> <th>Número</th> <th>Id</th> <th>Meta-Type</th> <th>Titulo</th> </tr> <tr tal:repeat="item container/objectValues"> <td tal:content="repeat/item/number">#</td> <td tal:content="item/getId">Id</td> <td tal:content="item/meta_type">Meta-Type</td> <td tal:content="item/title">Title</td> </table>

ZPT na prática - Repetindo estruturas ______________________________________________ A instrução tal:repeat na linha da tabela significa “repita essa linha para cada item na minha lista de objetos do container”. A instrução coloca os objetos da lista na variável item, um de cada vez (essa variável é conhecida como variável de repetição), e faz uma copia da linha usando essa variável. O valor de "item/getId" em cada linha é o id do objeto para a linha, e também como em "item/meta_type" e "item/title".

ZPT na prática – Elementos condicionais ______________________________________________ Usando a instrução tal:condition podemos checar vários tipos de condições. tal:condition deixa a tag e seu conteúdo no lugar se a expressão é verdadeira, mas remove-os se for falsa. O Zope considera o numero zero, uma string em branco, uma lista vazia, e a variável de ambiente nothing como falsos valores. Sendo assim quase todos outros valore são considerados como verdadeiros, incluindo números diferentes de zero, e strings com algum valor (até mesmo espaços em branco!).

ZPT na prática – Elementos condicionais ______________________________________________ <div tal:define=“items container/objectValues”> <table tal:condition= "items" border="1" width="100%"> <tr> <th>Número</th> <th>Id</th> <th>Meta-Type</th> <th>Titulo</th> </tr> <tr tal:repeat="item items"> <td tal:content="repeat/item/number">#</td> <td tal:content="item/getId">Id</td> <td tal:content="item/meta_type">Meta-Type</td> <td tal:content="item/title">Title</td> </table> </div>

ZPT na prática – Controle de atributos ______________________________________________ É possível alterar os atributos das tags através instrução tal:attributes Ex.: <a href="link" tal:attributes="href here/getILink; ">link</a> Resultado: <a href= "linkToSomeWhere">link</a>

ZPT na prática – Definindo variáveis ______________________________________________ Você pode definir suas próprias variáveis usando a instrução: tal:define; Ex.: <ul tal:define="items container/objectIds" tal:condition="items"> <li tal:repeat="item items"> <p tal:content="item">id</p> </li> </ul>

ZPT na prática ______________________________________________ É possível ter mais de uma instrução numa única tag HTML, nesse caso eles são executados na seguinte ordem: 1 - define 2 - condition 3 - repeat 4 - content ou replace 5 - attributes 6 - omit-tag

ZPT na prática – Chamadas de scripts ______________________________________________ É possível utilizar chamadas de scripts Python ao invés das expressões de caminho(path expressions); Para isso usa-se o termo ‘python:’ Ex.: <div tal:content=“python:item.getId ()“>id</div>

ZPT na prática – Expressões string ______________________________________________ Expressões string permitem unir com facilidade expressões de caminho com texto. Todo o texto depois do termo string: é procurado por expressões de caminho. Cada expressão deve ser precedida do sinal de dólar ($). Ex.: "string:Somente texto. Sem path expressions. " "string:Seu nome é ${user/getUserName}!"

ZPT na prática – Macros ______________________________________________ As page templates tem a capacidade de reutilização da ‘aparência’ e elementos em várias páginas; Para isso utilizamos as Macros. Elas definem uma seção da página que pode ser reutilizada por outras; Uma macro pode ser uma página inteira, ou somente uma parte como cabeçalho ou rodapé; Macros são definidos por atributos chamados de METAL(Macro Expansion Tag Attribute Language)

ZPT na prática – Macros ______________________________________________ Definindo uma macro: <p metal:define-macro="copyright"> Copyright 2001, <em>Foo, Bar, and Associates</em> Inc. </p> Utilizando a Macro <b metal:use-macro="container/master_page/macros/copyright"> Aqui fica a macro! </b> Resultado <p> Copyright 2001, <em>Foo, Bar, and Associates</em> Inc.</p>

Aplicação com Archetypes ______________________________________________ Framework para desenvolvimento ágil ✔ Dá suporte aos tipos do Plone ✔ Gera automaticamente ✔ Formulários ✔ Visões ArchGenXML ✔ Geração automática de códigos Archetypes ✔ Baseado em modelos

Referências Meu contato www.plone.org www.zope.org Lista zope-pt ______________________________________________ www.plone.org www.zope.org Lista zope-pt www.python.org adolfobruno@gmail.com www.dmd2.com.br Meu contato

Muito Obrigado!!