ADIANTI FRAMEWORK PARA PHP. 5ª edição AMOSTRA PABLO DALL'OGLIO

Tamanho: px
Começar a partir da página:

Download "ADIANTI FRAMEWORK PARA PHP. 5ª edição AMOSTRA PABLO DALL'OGLIO"

Transcrição

1 ADIANTI FRAMEWORK PARA PHP 5ª edição AMOSTRA PABLO DALL'OGLIO

2 1 Introdução CAPÍTULO 1 Introdução Este capítulo apresenta os conceitos fundamentais presentes no Adianti Framework. Aqui você conhecerá as premissas de desenvolvimento do framework, suas principais características, sua arquitetura, estrutura de diretórios e como se dá o fluxo de execução de seu funcionamento. 1.1 Características Aqui veremos as características do Adianti Framework. Foco em aplicações de negócio Durante a construção do Adianti Framework, em nenhum momento houve a intenção de criar um framework generalista, possibilitando o desenvolvimento de qualquer aplicação com ele, como um site ou um blog. Apesar de ser possí vel realizar tais atividades com o Adianti Framework, ele nasceu dentro de um contexto de desenvolvimento de sistemas de gestão, sistemas de informação, mais popularmente conhecidos como ERP's. Então ele não prima pela flexibili dade de configuração visual de seus componentes. Por outro lado, ele apresenta componentes elaborados, prontos e fáceis de utilizar para a criação de aplica ções de negócio. O que diferencia sites de aplicações de negócio? O importante para a aplicação de negócio é a funcionalidade. O usuário de uma aplicação de negócio não vai solicitar que cada uma das telas do sistema tenha uma cor dife rente, ele deseja que o sistema funcione bem e não se importa que todas as te las do sistema sejam parecidas. Nada impede você de utilizar o framework para desenvolver o back end de um site, inclusive eu o uso para isto, mas sua voca ção realmente não é front end's, para isso existem diversas outras boas soluções no mercado.

3 Capítulo 1 - Introdução Amostra do livro 13 Orientado a componentes Diferentemente de outros frameworks que levam o desenvolvedor a mesclar HTML e PHP em templates, no Adianti Framework esta será uma situação de exceção. A ideia do framework é construir sempre que possível interfaces por meio de componentes. Caso você precise de uma funcionalidade visual muito específica, então use o mecanismo de templates do framework, que permite uti lizar HTML para compor uma interface. Não gostamos de escrever código HTML, CSS, jquery, Bootstrap, dentre outras tecnologias dentro do código fon te da aplicação. Estes códigos devem ficar escondidos dentro do framework, en capsulados dentro de componentes. Assim, o desenvolvedor não precisa ser grande conhecedor destas tecnologias para construir interfaces avançadas, bas ta conhecer os componentes. Como exemplo, para criar componentes utilizados em um formulário, declaramos da seguinte maneira: <?php $nome $senha $nascimento $genero $curriculo?> = = = = = new new new new new TEntry('nome'); TPassword('senha'); TDate('nascimento'); TCombo('genero'); TText('curriculo'); Multi interface Esta é talvez a característica que mais diferencie o Adianti Framework de outros frameworks. O Adianti permite ao desenvolvedor criar aplicações Web e Desk top. A ideia é bastante simples, pois vários componentes do framework são de senvolvidos para as duas plataformas. A interface Web a maioria de vocês já co nhece e a interface desktop é fornecida pela biblioteca Gtk, ou PHP GTK. Assim, dependendo da aplicação, você pode escolher o front end mais adequado sem precisar aprender outra tecnologia. Na figura a seguir é exibido um fragmento de uma aplicação com front end Web à esquerda e Gtk à direita. Figura 1 Formulários Web e Gtk da mesma aplicação

4 14 Amostra do livro Adianti Framework para PHP Baseado em padrões Todo o Adianti Framework é baseado em padrões de projeto. Ao todo, ele utili za em sua implementação mais de 20 padrões de projeto. Dentre eles, podem ser citados: Factory Method, Singleton, Registry, Strategy, Active Record, Iden tity Field, Foreign Key Mapping, Association Table Mapping, Class Table Inheri tance, Composite, Query Object, Layer Supertype, Repository, Model View Con troller, Front Controller, Template View, Remote Facade, Lazy Initialization, dentre outros. Qualidade de código Todo o framework foi desenvolvido seguindo rígidas regras de escrita de có digo fonte. Para provar tal característica, as aplicações de exemplo desenvolvi das no framework podem rodar com o nível máximo de erros habilitado no php.ini e nenhuma mensagem de Warning ou Notice será exibida em tela. Além disso, você não verá a presença de (usada para suprimir erros) no código fonte do framework, muito menos a utilização de recursos como variáveis globais. Pequeno e fácil de instalar Todo o framework foi concebido para ser pequeno e de fácil instalação. Dessa forma, rodar um aplicativo que utiliza o Adianti Framework será tão simples quanto descompactá lo, uma vez que você já tenha o ambiente com os pré requisitos configurados. Abstração da base de dados O Adianti Framework privilegia a independência da aplicação em relação ao banco de dados, mediando essa comunicação por meio de uma camada de abs tração que permite desenvolver aplicações complexas sem escrever nenhuma li nha de SQL, deixando essa tarefa para o framework. <?php $repository = new TRepository('Customer'); $customers = $repository->where('gender', '=', 'M') ->where('name', 'like', 'A%') ->load(); foreach ($customers as $customer) print $customer->phone;?>

5 Capítulo 1 - Introdução Amostra do livro 15 Layout customizável Todas aplicações desenvolvidas pelo Adianti Framework são cercadas por um layout, também chamado de template. O template da aplicação em si é escrito em HTML para uma aplicação Web, e é uma parte do software que envolve co nhecimentos específicos da plataforma adotada (Gtk para Desktop, HTML/CSS para a Web). No site do framework são disponibilizados alguns templates bási cos, mas você possui toda a liberdade de criar um template adaptado às suas necessidades. Toda a aplicação que rodará dentro do layout é escrita somente com os conhe cimentos do framework, utilizando seus componentes. Na figura a seguir temos um exemplo de template disponibilizado no site. Figura 2 Aplicação rodando em template Web Obs: Os templates apresentados no livro são apenas uma sugestão. Você deve alterá los caso eles não estejam adequados para a aplicação que pretende desenvolver.

6 Capítulo 1 - Introdução Amostra do livro Desktop ou Web Uma aplicação desenvolvida com o Adianti Framework pode ser Web ou Desk top, pois a biblioteca de componentes do framework possui as duas versões. No momento de baixar o Adianti Framework, você poderá optar entre baixar a ver são Web ou Desktop (utiliza a biblioteca Gtk). Para o livro não ficar muito ex tenso, ele será baseado na versão Web da biblioteca, mas a maioria dos exemplos funciona nos dois ambientes, com exceção de alguns, que utilizam re cursos específicos da Web, como elementos HTML, ou chamadas à Javascript. No site do framework, você poderá baixar a versão do framework tanto para a Web, quanto para Desktop (Gtk). O que muda entre as duas versões basica mente é a pasta /lib, que conterá a mesma estrutura de diretórios e nomes de arquivos, porém a implementação das classes é diferente. Enquanto que o fra mework utiliza bibliotecas como jquery e Bootstrap para a Web, utiliza o Gtk para o Desktop. Além da pasta /lib, o arquivo index.php também é diferente, pois enquanto que na Web ele exibe um template HTML, no Desktop ele utiliza componentes da biblioteca Gtk para construir a interface. É recomendado que você avalie a necessidade, e opte por uma versão do fra mework. Caso escolha utilizar a versão Web, você poderá customizar a aplica ção com conhecimentos em jquery e Bootstrap, mas se optar pelo ambiente Desktop, deverá conhecer a biblioteca Gtk para customizar a aplicação. Veja na figura a seguir um exemplo de aplicação rodando no ambiente Desktop. Figura 5 Aplicação rodando no ambiente Desktop

7 2 INSTALAÇÃO E CONFIGURAÇÃO CAPÍTULO 2 Instalação e configuração Neste capítulo vamos aprender a dar os primeiros passos com o fra mework. Inicialmente vamos abordar a instalação dos pré requisitos tan to em ambientes web quanto desktop. Em seguida vamos dar os primei ros passos, aprendendo a configurar seu layout por meio de templates. 2.1 Instalação do ambiente Ambiente Linux Nesta seção, será abordada a instalação dos pré requisitos para rodar o Adianti Framework em Linux Ubuntu Dessa forma, instalamos o apache, o PHP, bem como o suporte aos bancos de dados SQLite, PostgreSQL e Mysql. O su porte ao sqlite é fundamental visto que a maioria das aplicações de exemplo que acompanham o framework, utilizam este banco de dados. Instalação Web A instalação do ambiente Web é simples e rápida, vejamos: # # # # sudo su apt-get install apache2 apt-get install libapache2-mod-php5 php5 php5-sqlite php5-pgsql php5-mysql php5-sqlite /etc/init.d/apache2 restart Obs: Durante o período de desenvolvimento, certifique se que a exibição de erros (display_errors = On) esteja habilitada no php.ini Instalação Desktop A preparação do ambiente desktop envolve a instalação do PHP GTK. Deve ser realizado o download do mesmo a partir do site gtk.com.br/linux.

8 32 Amostra do livro Adianti Framework para PHP Desktop Da mesma maneira que uma aplicação Web desenvolvida no Adianti Fra mework possui um template, uma aplicação Desktop em Gtk também possui. A diferença principal é que o template Desktop usa a biblioteca Gtk, ou seja, tudo que se localiza nos arredores do conteúdo principal (imagens, banner, menus), deve ser programado para ser exibido com essa biblioteca. A exceção reside no menu da aplicação, já que a classe TMenuBar faz o trabalho de criar o menu hie rárquico para nós. A figura a seguir demonstra uma janela Desktop rodando no Ubuntu. O conteú do ao centro é o formulário gerado dinamicamente pelo framework. Em segui da veremos como construir a aplicação. Figura 12 Template Gtk com o conteúdo em destaque ao centro Obs: Para mais informações sobre PHP GTK, procure o livro PHP GTK: Criando Apli cações gráficas com PHP, do mesmo autor. O Index No início de nosso template Gtk, realizamos a carga do framework da mesma forma que na aplicação Web, por meio da requisição do arquivo init.php, que por sua vez, fará o carregamento das classes e definições de configurações inici ais como constantes e também o idioma.

9 3 MODELOS E PERSISTÊNCIA CAPÍTULO 3 Modelos e persistência Todo o acesso a bancos de dados dentro do Adianti Framework passa por uma camada orientada a objetos que torna a maioria das operações transparentes ao desenvolvedor. Esta camada de manipulação visa dar maior agilidade na criação das aplicações, bem como fazer com que todo o acesso aos dados ocorra de uma maneira orientada a objetos. Assim, na grande maioria das vezes, você não precisará mais escrever os tradici onais INSERT, UPDATE e DELETE, mas irá simplesmente mandar os ob jetos serem persistidos ou excluídos. 3.1 Modelo utilizado Modelo de classes Ao longo deste capítulo, trabalharemos com vários exemplos envolvendo acesso a banco de dados. Mas antes de pensar na estrutura do banco de dados, mode lamos a estrutura da aplicação com seus objetos, atributos, métodos e relacio namentos. Para os exemplos deste capítulo, elaboramos um modelo simplifica do com apenas 5 classes: Customer (cliente), Category (categoria), City (cida de), Contact (contato) e Skill (habilidade). As relações entre os objetos são as seguintes: Um objeto Customer (cliente) está associado a um objeto do tipo Category (categoria). Categoria pode ser: frequente, casual, varejista; Um objeto Customer (cliente) está associado a um objeto do tipo City (cidade); Um objeto Customer (cliente) possui uma composição com nenhum ou vários objetos do tipo Contact (contato). Isto significa que um objeto

10 36 Amostra do livro Adianti Framework para PHP contato (objeto parte) é parte de somente um objeto cliente (objeto todo); Um objeto Customer (cliente) possui uma agregação com nenhum ou vários objetos do tipo com Skill (habilidade). Isto significa que um ob jeto habilidade (objeto parte) pode ser parte de diferentes objetos cliente (objeto todo). Figura 13 Modelo de classes Obs: Você encontra maiores informações sobre orientação a objetos em PHP com o li vro PHP Programando com orientação a objetos, do mesmo autor Modelo relacional Um modelo de classes pode ser facilmente convertido em um modelo relacional por meio de técnicas de mapeamento objeto relacional (M.O.R.). A partir do modelo de classes exposto anteriormente, derivamos um modelo relacional contendo as tabelas para armazenar os objetos da aplicação. As seguintes con versões foram realizadas: O objeto Customer (cliente) está relacionado com Category (categoria) e com City (cidade) por meio de chaves estrangeiras (foreign key map ping); A relação de composição entre Customer (cliente) e Contact (contato) foi mapeada por meio de uma chave estrangeira (foreign key mapping), uma vez que em uma relação de composição, a parte é exclusiva do ob jeto todo; A relação de agregação entre Customer (cliente) e Skill (habilidade) foi mapeada pela tabela associativa (association table mapping) customer_skill já na agregação, a parte não é exclusiva do todo.

11 42 Amostra do livro Adianti Framework para PHP 3.3 Manipulação de objetos O padrão Active Record Todos os objetos da camada de modelo de uma aplicação Adianti Framework são objetos Active Record. Um Active Record é um dos padrões de projeto (de sign patterns) mais conhecidos e implementado em praticamente todas lingua gens de programação orientadas a objetos. Conforme Martin Fowler, um objeto Active Record é: An object that wraps a row in a database table or view, encapsula tes the database access, and adds domain logic on that data. Um Active Record é um objeto que representa uma linha de uma tabela (ou view) e encapsula ao mesmo tempo o acesso aos dados e a lógica de negócios daquela entidade. Para exemplificar, podemos pensar em um objeto Livro. Este objeto pode ter métodos como registraremprestimo() e registrardevolucao() que são métodos de negócio e também pode ter méto dos como store(), delete() e load() que são métodos de acesso aos dados (persistência). Geralmente os objetos Active Record não implementam estes métodos de aces so aos dados store(), delete() e load(), uma vez que nossos objetos teriam misturado em um mesmo local métodos de negócio e de persistência. Para re solver isso, os objetos Active Record generalizam estas operações, que são im plementadas por superclasses. No caso do Adianti Framework, os métodos de persistência são implementados pela classe TRecord. Assim, todos os objetos de domínio da aplicação devem ser subclasses de TRecord, herdando um conjunto de métodos de persistência. Figura 15 Um objeto Active Record

12 48 Amostra do livro Adianti Framework para PHP Alteração de objeto Já vimos como salvar um novo objeto na base de dados, como carregar um re gistro do banco de dados na forma de objeto, e agora vamos ver como alterar um registro na base de dados. O primeiro passo é carregar o objeto em memó ria. Podemos utilizar duas formas para carregar um objeto: a primeira é por meio de um parâmetro no método construtor; a segunda é utilizando o método load(). Este método retorna um objeto já instanciado a partir de seu ID. A partir do momento em que temos o objeto em memória (variável $customer), basta alterarmos seus atributos diretamente, definindo novos valores. Após alte rarmos os atributos, basta chamarmos o método store(). Mas como a classe TRecord sabe o que fazer com os dados? Como o objeto foi previamente carre gado, então ele possui um ID em memória. Neste caso, o framework sabe que deve proceder com uma alteração (UPDATE) e não uma criação (INSERT). Obs: Note que todas as operações estão dentro de uma transação. Na medida em que uma operação falhar, todas operações da transação são desfeitas. app/control/dbsamples/objectupdate.class.php <?php class ObjectUpdate extends TPage public function construct() parent:: construct(); try // abre uma transação TTransaction::open('samples'); // instancia o cliente $objeto = new Customer; // carrega o cliente 31 $customer= $objeto->load(31); // se encontrou if ($customer) $customer->phone = ' '; // muda o telefone $customer->store(); // armazena o objeto new TMessage('info', 'Objeto atualizado'); TTransaction::close(); // fecha a transação.?> catch (Exception $e) new TMessage('error', $e->getmessage());

13 Capítulo 3 - Modelos e persistência Amostra do livro Manipulação de coleções O padrão Repository O padrão Active Record nos permite trabalhar com um objeto que representa uma linha do banco de dados, ou seja, ele individualiza os registros fazendo com que cada um seja representado por um objeto em memória. E quando de sejamos trabalhar com uma coleção (um conjunto) de objetos? Podemos utili zar o padrão Repository. O padrão Repository é implementado por uma classe que disponibiliza uma interface para manipular coleções de objetos como repre sentado pela figura a seguir. Figura 16 Carregamento de objetos com repositório Como podemos ver na figura, a aplicação (programa) interage com uma classe que implementa o padrão Repository (TRepository). Esta classe disponibiliza métodos para carregar (load), contar (count) e excluir (delete) coleções de objetos. Antes de realizar a operação desejada, é necessário identificar o con junto de objetos a ser manipulado. A identificação do conjunto de objetos é rea lizada por um critério (objeto TCriteria). Um critério identifica regras de sele ção de objetos na base de dados. A classe TRepository realiza um acesso à base de dados e interage com os obje tos selecionados pelo critério. No exemplo demonstrado pela figura estamos carregando objetos (load). Neste caso, vários objetos do tipo Active Record são instanciados (conforme o critério) e retornados para a aplicação como vetor.

14 64 Amostra do livro Adianti Framework para PHP 3.5 Relacionamentos entre objetos Associação Associação é um relacionamento entre dois objetos onde um objeto possui uma referência para outro. Assim, o objeto que possui a referência pode solicitar ao objeto associado a realização de ações por meio da invocação de métodos. Den tro do modelo utilizado neste capítulo, a relação de associação ocorre entre ob jetos da classe Customer e Category e também entre Customer e City. Como a relação é direcional, um objeto da classe Customer possui uma referência para um objeto Category e também City. Figura 17 Exemplo de associação Quando mapeado para um banco de dados relacional, o relacionamento de as sociação geralmente é transformado em pares de chaves primárias e estrangei ras. Em memória temos um objeto Customer com uma referência para um obje to Category, então em banco de dados teremos um registro na tabela customer com uma chave estrangeira (category_id) para a tabela category. Figura 18 Uma associação mapeada para o modelo relacional

15 4 COMPONENTES DE APRESENTAÇÃO CAPÍTULO 4 Componentes de apresentação No último capítulo vimos como manipular objetos. Em alguns momen tos, criamos páginas para exibir resultados (subclasses de TPage), mas como o foco do capítulo era persistência, a apresentação ficou em segun do plano. O foco deste capítulo é explorar os componentes de apresenta ção do framework. Portanto, vamos explorar tabelas, painéis e notebo oks; componentes para criação de formulários e datagrids; diálogo de mensagens, dentre outros. 4.1 Conceitos básicos Controlador de páginas Qualquer elemento a ser apresentado pelo Adianti Framework, seja Web ou desktop, deve estar contido em uma página. Para criarmos uma nova página, devemos criar uma classe. Assim, cada página a ser exibida no framework será uma classe. No framework existem basicamente dois controladores de páginas: TPage e TWindow. Assim, qualquer página deve ser subclasse de um desses dois controladores padrão. Enquanto subclasses de TPage são exibidas dentro do layout do sistema, subclasses de TWindow são exibidas em uma janela sobre o sistema. A seguir temos o exemplo de uma página simples contendo apenas uma mensagem de Hello World. No método construtor da página acrescenta mos seu conteúdo, por meio do método add(). Aqui estamos utilizando o com ponente TLabel, que representa um rótulo de texto. Neste capítulo, abordare mos outros componentes visuais que podem ser utilizados.

16 Capítulo 4 - Componentes de apresentação Amostra do livro 79 app/control/presentation/helloworld.class.php <?php class HelloWorld extends TPage public function construct() parent:: construct(); // é fundamental executar o construtor da classe pai parent::add(new TLabel('Hello World'));?> Para exibir um controlador de páginas na Web, podemos editar o layout da aplicação e acrescentar um link para index.php, identificando a classe que gos taríamos que o framework exibisse por meio do parâmetro class: <a href="index.php?class=helloworld" generator="adianti"> Hello World</a> Ou também podemos simplesmente digitar no navegador: O resultado da execução pode ser visto na figura a seguir. Figura 23 Resultado da execução do Hello World Já no ambiente desktop (Gtk), para exibirmos uma página, basta executarmos o método loadpage() da classe TApplication, da seguinte forma: TApplication::loadPage('HelloWorld'); Também podemos utilizar o controlador de páginas TWindow para criar páginas. O conteúdo das subclasses de TWindow é exibido em janelas sobre o sistema. A seguir temos uma página subclasse de TWindow e o resultado de sua execução. app/control/presentation/helloworldwindow.class.php <?php class HelloWorldWindow extends TWindow public function construct() parent:: construct(); parent::add(new TLabel('Hello World'));

17 88 Amostra do livro Adianti Framework para PHP Na próxima figura, podemos ver o resultado da execução deste programa. Figura 28 Painéis Notebook Por mais versáteis que sejam os containers TTable e TPanel, às vezes estes não são suficientes para comportar a quantidade de componentes que precisamos apresentar em tela. Nestes casos, é necessário recorrermos a containers que nos ofereçam maiores possibilidades quanto a ocupação de espaços. Um desses con tainers é o notebook. Um notebook divide um espaço em abas, permitindo mul tiplicar o espaço disponível, exibindo apenas uma aba de cada vez. O componente notebook existe em vários frameworks, mas no Adianti Fra mework ele é especial pois permite nos compor recursivamente interfaces. As sim, podemos colocar notebook dentro de notebook e assim por diante. Tam bém podemos colocar um painel ou uma tabela dentro de um notebook e este notebook dentro de outro notebook sucessivamente. No Adianti Framework, um notebook é representado pelo container TNotebook. Um TNotebook recebe em seu método construtor as dimensões que ocupará em tela. Um notebook possui o método appendpage(), responsável por acrescentar uma aba ao notebook, que recebe como primeiro parâmetro o título da aba e como segundo parâmetro um objeto representando o conteúdo da aba. Neste exemplo, criamos uma página contendo um notebook com duas abas. A primeira aba contém o objeto $page1, que é uma tabela com várias linhas com objetos como TLabel (rótulos de texto) e TEntry (caixa de texto). Já a segunda aba contém também outro notebook ($subnotebook) em seu interior.

18 Capítulo 4 - Componentes de apresentação Amostra do livro 97 app/control/presentation/dialogs/dialoginformationview.class.php <?php class DialogInformationView extends TPage public function construct() parent:: construct(); new TMessage('info', 'Mensagem informativa');?> Na próxima figura, podemos ver o resultado da execução deste programa. Figura 34 Mensagem de informação Erro Outro tipo de mensagem comum a ser apresentada ao usuário é a mensagem de erros. No Adianti Framework a mesma classe utilizada para exibir mensa gens informativas (TMessage) também é utilizada para exibir mensagens de erro. A única modificação que precisamos fazer é alterar o primeiro parâmetro de 'info' para 'error'. Este parâmetro causará a mudança da imagem a ser exibida juntamente a mensagem indicada. Obs: Ao criar uma mensagem pode ser passado um terceiro parâmetro que indica a ação (objeto TAction) a ser executada quando o usuário clicar no OK do diálogo. app/control/presentation/dialogs/dialogerrorview.class.php <?php class DialogErrorView extends TPage public function construct() parent:: construct(); new TMessage('error', 'Mensagem de erro');?>

19 102 Amostra do livro Adianti Framework para PHP Formulários rápidos O Adianti Framework apresenta um bom nível de flexibilidade na montagem de formulários, o que será visto nos tópicos seguintes. Esta flexibilidade nos permite posicionar os elementos de um formulário com liberdade. Entretanto, esta flexibilidade nos faz escrever mais linhas de código. Muitas vezes precisa mos somente de um formulário simples com os campos organizados um abaixo do outro. Neste caso, podemos utilizar um componente para construção de for mulários rápidos, o TQuickForm. Para melhor apresentação gráfica, um formulário pode ser empacotado den tro de outro componente, como um notebook ou um frame. Neste exemplo, cri aremos um formulário rápido (TQuickForm) e simplesmente definiremos sua classe CSS (tform). É importante lembrar que os objetos do Adianti Framework podem ser colocados dentro de diferentes containers e estes serem combinados em outros containers. Este também será o primeiro exemplo ao longo do livro no qual poderemos abordar os componentes de entrada de dados. O framework possui vários com ponentes (caixa de entrada de texto, datas, combos, rádios, dentre outros) que podem ser utilizados dentro de um formulário. Neste exemplo veremos a utili zação de alguns destes. Obs: A explicação do exemplo será dividida em partes, sendo uma para cada método. Conforme pode ser visto no código fonte a seguir, o formulário (FormQuickView) inicia pela montagem da interface, o que ocorre em seu método construtor. No método construtor, criamos um formulário (TQuickForm) e também defini remos sua classe CSS, bem como seu título por meio do método setformtitle(). Em seguida, iniciamos a criação dos elementos do formulário. Cada elemento do formulário é representado por uma classe: caixa de entrada de texto (TEntry), seletor de datas (TDate), seletor de cores (TColor), lista de elementos (TCombo), caixa de texto com várias linhas (TText), dentre outros. No momento de instanciar o objeto, precisamos identificar um nome como pa râmetro. É por meio deste nome ('id', 'description') que poderemos obter posteriormente os valores preenchidos no formulário. Após instanciarmos os elementos do formulário, preenchemos o elemento com bo (TCombo) com um vetor de opções por meio do método additems(). Este método recebe um vetor indexado e será melhor explicado posteriormente.

20 Capítulo 4 - Componentes de apresentação Figura 38 Amostra do livro 105 Formulário rápido Formulários personalizados No exemplo anterior vimos como construir um formulário rápido com alguns componentes dispostos um abaixo do outro. Entretanto, em várias situações precisamos de maior flexibilidade na construção de formulários, e isso será de monstrado neste exemplo. No exemplo anterior utilizamos a classe TQuickForm para criar formulários e o método addquickfield() para acrescentar elementos ao formulário. Neste exemplo, utilizaremos a classe TForm. Esta classe não pos sui um método específico para adicionar elementos ao formulário. Para adicio nar elementos ao formulário, devemos empacotá los em um container (TTable, TPanel) e então acrescentar este container ao formulário (TForm). O formulário (TForm) atua como um agrupador lógico de campos. Neste exemplo, criaremos um formulário e utilizaremos uma tabela (TTable) para dispor os elementos dentro do formulário e um notebook (TNotebook) ao redor do formulário, para delimitar melhor seu espaço. O exemplo a seguir, inicia pela criação dos containers: notebook (TNotebook), formulário (TForm) e tabela (TTable). Após, a tabela é inserida no formulário, e este no notebook. Em seguida, vários elementos de formulário são criados como: caixa de entrada de texto (TEntry), caixa para digitação de senha (TPassword), seletor de datas (TDate) e caixa de texto com várias linhas (TText). A seguir, uma tabela com os componentes que podem ser utilizados dentro de formulários para obtenção de dados.

21 Capítulo 4 - Componentes de apresentação Amostra do livro 129 campo anterior. O campo response_b depende do conteúdo de combo_change, que é dinâmico. Neste caso, para manter o formulário preenchido mesmo em campos dinâmicos, devemos utilizar o método senddata() para enviar os dados do formulário por meio de uma requisição Ajax mesmo após a postagem. Esta técnica permite que o evento de troca da combo combo_change seja dis parado novamente, sendo que logo em seguida o campo response_b também tem seu valor definido de maneira síncrona. Os demais campos do formulário, que não possuem tal dinamicidade são preenchidos pelo método setdata(). public function onview() $data = $this->form->getdata(); // lê os dados do formulário // monta um objeto para enviar dados após o post $obj = new StdClass; $obj->combo_change = $data->combo_change; // dispara a ação de mudança $obj->response_b = $data->response_b; // atualiza o valor após mudança // envia dados dinamicamente TForm::sendData('form_interaction', $obj); $this->form->setdata($data); // mantém o formulário preenchido?> new TMessage('info', str_replace(',', ',<br> ', json_encode($data))); Na próxima figura, podemos ver o resultado da execução deste programa. Figura 46 Interações dinâmicas Habilitando e desabilitando campos No exemplo anterior, pudemos ver como configurar interações dinâmicas em formulários, por meio dos métodos setexitaction(), que permite definir uma ação para saída de um campo e setchangeaction() que permite definir uma ação para a troca de valores. No exemplo anterior, alteramos o valor de um campo e recarregamos uma combo.

22 Capítulo 4 - Componentes de apresentação Amostra do livro Datagrids Ao longo do livro, vimos como organizar o visual da aplicação por meio de con tainers, como interagir com o usuário por meio de diálogos e também como co letar informações por meio de formulários. O próximo passo está em apresentar as informações ao usuário no formato de listagens, permitindo que o mesmo possa interagir sobre os dados tomando ações. No Adianti Framework, as infor mações são apresentadas ao usuário por meio de datagrids. Uma datagrid ge ralmente apresenta uma coleção de Active Records vindos da base de dados. Entretanto, antes de interagirmos com a base de dados, vamos aprender os conceitos básicos sobre datagrids trabalhando com dados estáticos. Trabalhare mos integrando componentes visuais e banco de dados no próximo capítulo Datagrids rápidas Para começarmos a trabalhar com datagrids, nada melhor do que uma aborda gem rápida. Existem duas maneiras de construir datagrids no Adianti Fra mework: datagrids rápidas e datagrids personalizadas. Datagrids rápidas pro porcionam uma forma rápida e ágil para construir datagrids com poucas linhas de código, de maneira similar aos formulários rápidos (TQuickForm). O objetivo deste exemplo é demonstrar o funcionamento das datagrids rápidas (TQuickGrid). Para tal, construiremos uma página com uma datagrid exibindo dados estáticos. Esta datagrid terá dois botões de ação. Neste exemplo veremos também como conectar um botão de ação de uma datagrid a um método. Conforme pode ser visto no código fonte a seguir, este exemplo inicia com a criação de uma datagrid rápida (TQuickGrid). Após, são acrescentadas as colu nas da datagrid por meio do método addquickcolumn(), com os parâmetros: Título da coluna, nome do atributo a ser exibido, alinhamento e largura em pi xels. As datagrids foram concebidas para exibir objetos, sendo um em cada li nha. Assim, o segundo parâmetro representa o nome atributo que será exibido naquela coluna. Obs: Normalmente datagrids são construídas com a intenção de exibir objetos Active Record. Nos exemplos dessa seção utilizaremos objetos simples (StdClass) por moti vos didáticos. No próximo capítulo, construiremos formulários e listagens integrados aos Active Record.

23 158 Amostra do livro Adianti Framework para PHP // cria uma string com as $message = 'Check 1 : '. $message.= 'Check 2 : '. $message.= 'Check 3 : '. $message.= 'Check 4 : '.?> opções selecionadas $data->check1. '<br>'; $data->check2. '<br>'; $data->check3. '<br>'; $data->check4. '<br>'; // exibe a mensagem new TMessage('info', $message); function show() $this->onreload(); parent::show(); Na figura a seguir, podemos conferir o resultado da execução deste programa. Figura 58 Datagrids com checagem Datagrids com campos de entrada Neste exemplo, será demonstrado como criar uma datagrid com campos de en trada de dados (TEntry). Já vimos como criar uma datagrid com checkbuttons e neste caso, o procedimento é parecido. No método construtor, a datagrid (TQuickGrid) é construída com quatro colu nas (Code, Name, Address, e Phone). É importante notar que para que o envio de dados funcione, a datagrid precisa estar dentro de um formulário (TForm). Até esse momento, o único elemento do formulário é o próprio botão (TButton), que está conectado ao método onsave(). O método addfield() é usado para acrescentar ao formulário mais campos para serem manipulados. app/control/presentation/datagrid/datagridinputview.class.php <?php class DatagridInputView extends TPage private $form; private $datagrid;

24 162 Amostra do livro Adianti Framework para PHP // cria as $code $name $address $telephone colunas = new TDataGridColumn('code', = new TDataGridColumn('name', = new TDataGridColumn('address', = new TDataGridColumn('fone', 'Code', 'Name', 'Address', 'Phone', 'right', 50); 'left', 180); 'left', 180); 'left', 120); $this->datagrid->addcolumn($code); $this->datagrid->addcolumn($name); $this->datagrid->addcolumn($address); $this->datagrid->addcolumn($telephone); // cria as ações $action1 = new TDataGridAction(array($this, 'onview')); $action1->setlabel('view name'); $action1->setimage('bs:search blue'); $action1->setfield('name'); $action2 = new TDataGridAction(array($this, 'ondelete')); $action2->setlabel('try to delete'); $action2->setimage('bs:remove red'); $action2->setfield('code'); $action3 = new TDataGridAction(array($this, 'onview')); $action3->setlabel('view address'); $action3->setimage('bs:hand-right green'); $action3->setfield('address'); // cria o agrupamento de ações $action_group = new TDataGridActionGroup('Actions', 'bs:th'); // adiciona as ações ao agrupamento $action_group->addheader('available Options'); $action_group->addaction($action1); $action_group->addaction($action2); $action_group->addseparator(); $action_group->addheader('another Options'); $action_group->addaction($action3); $this->datagrid->addactiongroup($action_group); // adiciona o agrupamento $this->datagrid->createmodel(); // cria o modelo parent::add($this->datagrid); // demais métodos... Na próxima figura, podemos ver o resultado da execução deste programa. Figura 60 Agrupamento de ações em datagrids

25 Capítulo 4 - Componentes de apresentação Amostra do livro 173 public function onconfirm() try $this->form->validate(); $data = $this->form->getdata(); $this->form->setdata($data); $form1_data = TSession::getValue('form_step1_data'); $data->password = $form1_data->password; // agrega a senha new TMessage('info', str_replace(',', '<br>', json_encode($data)));?> catch (Exception $e) new TMessage('error', $e->getmessage()); Na próxima figura, podemos ver o resultado da execução deste programa. Figura 64 Passo a passo entre formulários diferentes 4.7 Relatórios A utilização de datagrids oferece um meio bastante utilizado para listagem e vi sualização das informações já registradas pelo sistema. Entretanto, as datagrids não substituem relatórios. Os usuários frequentemente desejam imprimir docu mentos contendo quantidades maiores de dados a partir do sistema. Neste caso, precisamos usar formatos mais adequados para a impressão. O Adianti Fra mework disponibiliza um conjunto de classes para geração de relatórios em ta belas nos formatos: HTML, PDF e RTF. O ponto positivo na utilização desta bi

26 174 Amostra do livro Adianti Framework para PHP blioteca é que você escreve o relatório somente uma vez, e pode exportar para os três formatos sem a menor necessidade de nova programação. Obs: As classes para geração de relatórios vistas aqui foram propostas pela primeira vez no livro Criando relatórios com PHP, do mesmo autor. Para demonstrar a utilização das classes para geração de relatórios, construire mos um formulário para seleção de clientes. Este formulário permite filtrar por partes do nome, cidade e categoria. O usuário poderá preencher um ou mais fil tros neste formulário. O programa deverá buscar todos os clientes na base de dados pelos filtros selecionados. Para tal, utilizaremos coleções, como visto no capítulo 3. A partir da coleção de clientes carregada em memória, procedere mos com a escrita do relatório. O relatório poderá ser extraído em um dos três formatos: HTML, PDF ou RTF conforme pode ser visto na figura a seguir. Na próxima figura, podemos ver o formulário de seleção de clientes. Figura 65 Tela de filtragem do relatório O programa inicia com a criação do formulário (TForm) e de uma tabela que irá dentro do formulário para conter os campos (TTable). Logo em seguida, são criados os campos do formulário e adicionadas algumas opções (html, pdf, rtf) no rádio button, bem como definidas algumas características dos campos como o tamanho. Este formulário também possui um botão de busca de registros de cidades (TDBSeekButton). Após criarmos os objetos, adicionamos os vários cam pos de filtragem à tabela que estará dentro do formulário. Ao final do método construtor, um botão de ação (TButton) é criado para acionar o método ongenerate(), responsável pela geração do relatório. Obs: Algumas partes do código foram cortadas durante a edição. Você encontra os ar quivos completos ao realizar o download da aplicação tutor.

27 182 Amostra do livro Adianti Framework para PHP Na figura a seguir, podemos ver o gráfico gerado. Figura 69 Gráfico de pizza 4.9 Exemplos específicos para web Nessa seção veremos como criar formas de apresentação mais livres para as pá ginas do framework, integrando seus componentes com outras bibliotecas. Para tal, veremos: como integrar uma página com plugins jquery; como utilizar tem plates HTML para estruturar o visual de uma página; e também como criar componentes Integrando com jquery Por mais que um framework ofereça componentes, jamais vai suprir todas as necessidades de seus usuários. Portanto, é importante que um framework per mita integrações com outras tecnologias, sendo extensível. Pensando nisso, este exemplo demonstrará uma integração com o plugin galleria da biblioteca jquery. Este plugin permite criarmos galerias de imagens. Como o foco da bibli oteca jquery é a web, criaremos um pequeno controle em nossa aplicação para que uma exceção seja lançada caso o usuário tente abrir este exemplo no ambi ente desktop. O Adianti Framework é centrado no conceito de páginas (objetos TPage). As sim, dentro de uma página costumamos acrescentar outros objetos (TTable, TPanel, TNotebook). Neste caso, em que temos de colocar dentro de uma pági na um outro elemento HTML e possivelmente referenciar um script Javascript, podemos utilizar um objeto coringa dentro do framework, chamado TElement.

28 5 ORGANIZAÇÃO E CONTROLE CAPÍTULO 5 Organização e controle Chegamos em um ponto do livro onde já aprendemos a manipular o banco de dados, a criar interfaces com diversos componentes, mas ainda não integramos os dois, ou seja, ainda não criamos interfaces que mani pulam registros da base de dados. Pois o objetivo deste capítulo é justa mente abordar a criação de interfaces com formulários, listagens, buscas, edições para registros na base de dados por meio de padrões como Acti ve Record e Repository. 5.1 Controladores padrão Vamos começar a abordar a criação de formulários e datagrids para manipula ção de registros de forma ágil. Para tal, o Adianti Framework disponibiliza con troladores padrão. Mas o que é um controlador padrão? Um controlador pa drão é uma classe que pode ser utilizada como base para criação de páginas como formulários e datagrids que já contém uma série de funcionalidades, faci litando muito a vida do desenvolvedor. Com um controlador padrão é possível criar um cadastro completo com poucas linhas de código Controlador de formulário Para começar, vamos criar um formulário para edição de registros de cidades (City) utilizando o controlador padrão de formulários: TStandardForm. Este controlador permite criar um formulário de cadastro com poucas linhas de có digo, uma vez que já contém definidos de maneira genérica, métodos para sal vamento e edição de registros. Na próxima figura, podemos ver o resultado da execução deste exemplo.

29 202 Amostra do livro Adianti Framework para PHP grids, como as opções de busca, carregamento de registros e exclusão. Na próxi ma figura, podemos ver o resultado da execução deste exemplo. Figura 78 Controlador padrão de listagem Este exemplo será formado basicamente por um formulário e uma datagrid. A função do formulário é buscar registros de cidade (City) por meio de seu nome. Este formulário também terá um botão Novo, cuja função é direcionar para a página de cadastro (construída no último exemplo). Já a datagrid terá botões para edição e exclusão, bem como uma paginação de registros. Para utilizar o controlador padrão de datagrids, basta criarmos uma página subclasse de TStandardList. A partir de então, precisamos executar alguns mé todos padrão como: setdatabase(), para definir a base de dados utilizada; setactiverecord(), para definir a classe de Active Record manipulada; e setfilterfield(), para definir qual campo da datagrid será utilizado para filtragem da mesma. Obs: Este exemplo usa sessões, que são manipuladas pela classe TSession. Sessões permitem reter valores mesmo através de constantes trocas de página dentro do siste ma. Para utilizar sessões, sempre devemos instanciar um objeto TSession no início da página. A partir de então, para ler valores da seção, basta utilizar o método getvalue('variavel'), enquanto que para atribuir valores para a sessão, basta utilizar o método setvalue('variavel', 'valor').

30 Capítulo 5 - Organização e controle Amostra do livro 205 // cria o navegador de páginas $this->pagenavigation = new TPageNavigation; $this->pagenavigation->setaction(new TAction(array($this, 'onreload'))); $this->pagenavigation->setwidth($this->datagrid->getwidth()); // cria um container ao redor dos elementos $table = new TTable; $table->addrow()->addcell($this->form); $table->addrow()->addcell($this->datagrid); $table->addrow()->addcell($this->pagenavigation);?> parent::add($table); // acrescenta a tabela na página Controlador de formulário com datagrid Já vimos como construir formulários e datagrids individuais com integração en tre ambos de maneira ágil. Estes recursos já nos abrem muitas possibilidades. Entretanto em alguns casos, o cadastro que manipularemos é tão pequeno que não necessita de duas telas separadas (uma para formulário de cadastro e outra para listagem com busca) para realizar a manutenção dos registros. Quando sa bemos que uma determinada tabela não passará de 20 ou 30 registros em toda sua existência, podemos ter toda a edição em uma mesma tela. A ideia básica de um controlador de formulário com datagrid é ter uma tela onde possamos ao mesmo tempo listar e editar os registros. Essa tela dispensa recursos como busca e paginação, uma vez que terá uma quantidade limitada de registros. Na próxima figura, podemos ver o resultado da execução deste exemplo. Figura 79 Controlador padrão de formulário com datagrid A ideia deste exemplo é termos uma página com um formulário e uma data grid. O formulário será utilizado para cadastrar novos registros e a datagrid para exibir os registros já cadastrados. O formulário terá botões como Salvar,

31 212 Amostra do livro Adianti Framework para PHP function onedit($param) try if (isset($param['key'])) // verifica se o parametro foi informado $key=$param['key']; // obtém a chave do registro TTransaction::open('samples'); // abre a transação $object = new City($key); // instancia o Active Record $this->form->setdata($object); // preenche o formulário TTransaction::close(); // fecha a transação else $this->form->clear(); // limpa o formulário catch (Exception $e) new TMessage('error', '<b>error</b> '. $e->getmessage()); TTransaction::rollback(); // desfaz operações Obs: Todos os métodos de manipulação de base de dados, como onsave() e onedit(), devem realizar as operações dentro de um bloco de controle de exceções try/catch, pois as classes de manipulação da base de dados lançam exceções em caso de erros Controlador de datagrid Agora que entendemos como construir um formulário completo, sem controla dores padrão do sistema, faremos o mesmo com uma datagrid. O objetivo deste exemplo é construir uma datagrid completa, com busca, edição e exclusão de registros de cidades (City) com os controladores totalmente programados ma nualmente. Na próxima figura, vemos o resultado da execução deste exemplo. Figura 81 Controlador manual de datagrid

32 Capítulo 5 - Organização e controle Figura 83 Amostra do livro 225 Datagrid de clientes Conforme pode ser visto no código fonte a seguir, iniciamos a criação da página pelo formulário (TForm). Este formulário terá dois campos de buscas (name e city_name) e três ações (TButton), que são: Busca, que utilizará os campos nome do cliente ou nome da cidade para filtrar a datagrid, por meio do método onsearch(); Novo, que direcionará o usuário para o formulário de cadastro, representado pela classe CustomerFormView, que será criada no próximo exem plo; e CSV, que permite exportar os dados da datagrid neste formato, por meio da execução do método onexportcsv(). Após a criação do formulário, é criada a datagrid (TQuickGrid). A datagrid terá quatro colunas adicionadas por meio do método addquickcolumn(), que são: id, name, city->name e address, sendo que o atributo city->name é retornado por meio da relação de associação (método get_city()) na classe Customer. A datagrid terá duas ações adicionadas por meio do método addquickaction(), que são: Editar, que carrega o objeto selecionado na datagrid para edição no seu respectivo formulário representado pela classe CustomerFormView; e Dele tar, que está conectada ao método ondelete(), que por sua vez irá questionar o usuário se o mesmo deseja realmente excluir o registro. A datagrid poderá ser ordenada pelas colunas id, name ou city->name, o que é definido no momento em que executamos o método addquickcolumn(), indi cando que ao clicar no título da coluna, será executado o método onreload() passando id, name ou city->name como parâmetro order. Note que não existe

33 234 Amostra do livro Adianti Framework para PHP Um formulário para manipulação de clientes deve reunir todos esses conceitos (associações, composições e agregações). Para tornar isso possível, faremos um formulário com abas, usando o notebook (TNotebook). Esse componente nos permitirá colocar um grupo de informações diferentes em cada aba. Na primei ra aba, teremos os dados básicos do cliente, conforme viso na figura a seguir. Figura 85 Primeira aba do formulário de clientes A segunda aba do formulário, apresentará um campo repetitivo (TMultiField). Este campo permitirá que possamos acrescentar uma série de contatos (objetos Contact) a um cliente, tendo como atributos tipo (type) e valor (value). Estes dados são específicos de um cliente, conforme o conceito de composição. Figura 86 Segunda aba do formulário de clientes

34 Capítulo 5 - Organização e controle Figura 88 Amostra do livro 241 Janela de busca de cidades sobre o formulário de clientes A janela de busca de cidades, conforme pode ser vista no código fonte a seguir, é um controlador de páginas como tantos outros que já construímos. A diferen ça mais importante está no fato de que a classe é filha de TWindow e não de TPage. Ao ser subclasse de TWindow, um controlador de páginas é exibido em uma nova janela pelo Adianti Framework. O controlador de páginas inicia com a criação do formulário de busca de cida des (TQuickForm). Este formulário terá um campo (name), adicionado pelo mé todo addquickfield() e a ação de buscas onsearch(), adicionada pelo método addquickaction(). Sempre que o usuário clicar sobre o botão de ação, a data grid será filtrada com o termo digitado no campo name. Após criar o formulário de buscas, é criada uma datagrid (TQuickGrid) utiliza da para exibir os registros de cidade. Esta datagrid terá duas colunas: id e name, adicionadas pelo método addquickcolumn() e uma ação adicionada pelo méto do addquickaction(). Esta ação está conectada ao método onselect() e será responsável por retornar o registro preenchido para o formulário pai. Ao final do método construtor, os componentes são empacotados em uma tabe la (TTable) e esta, adicionada à página. app/control/organization/complexviews/cityseek.class.php <?php class CitySeek extends TWindow private $form; private $datagrid; private $pagenavigation;

35 248 Amostra do livro Adianti Framework para PHP Formulário de Produtos No exemplo em que construímos o formulário de clientes (CustomerFormView), vimos como construir um formulário complexo, com várias abas, e com méto dos como o onsave() e onedit() definidos pelo programador, ou seja, customi zados conforme a necessidade. Também vimos exemplos mais simples, como o cadastro de cidades (StandardFormView), em que somente definimos os campos do formulário, sendo que o comportamento havia sido herdado da classe TStandardForm, que provê um comportamento básico para manipulação de formulários. Neste exemplo, construiremos um formulário para manipulação de produtos, tentando aproveitar ao máximo o que nos oferece a classe básica (TStandardForm), e ao mesmo tempo customizaremos o comportamento do método onsave() por meio de uma sobrecarga de método, onde manteremos o comporta mento padrão do método, enquanto que adicionaremos algumas operações. O cadastro de produtos possui um campo que é a foto do produto. Quando o usuário realizar um upload de foto durante a edição do produto, precisaremos copiar a foto para o local definitivo. Para tal, o método onsave() será customi zado por que além de executar o comportamento padrão de um método onsave(), que é de armazenar os campos do formulário no banco de dados, precisa remos também copiar a foto para o diretório de destino. Na imagem a seguir temos a tela do cadastro de produtos com campos para Id, descrição, estoque, preço de venda, unidade e foto do produto. Figura 90 Formulário de cadastro de produtos

36 6 ESTUDOS DE CASO CAPÍTULO 6 Estudos de caso Após cinco capítulos estudando o framework, já nos sentimos prepara dos para criar nossas primeiras aplicações, uma vez que já vimos como manipular entidades da base de dados, criar uma interface orientada a objetos, bem como controlar o fluxo de execução da aplicação. Entretan to, é nesse momento que alguns aspectos vêm à tona como: login, con trole de permissões, internacionalização, dentre outros. Estes aspectos variam de aplicação para aplicação e, para ensinar, nada melhor do que mostrar exemplos reais. Dessa forma, conheceremos aplicações reais de senvolvidas com o Adianti Framework e estudaremos como elas resolve ram essas questões. 6.1 Aplicação Library A primeira aplicação que vamos estudar, chama se Library (biblioteca). O obje tivo desta aplicação é fornecer os controles mínimos que uma biblioteca precisa para funcionar, sempre visando a demonstração do framework. Esta aplicação não tem como objetivo ser um sistema completo para gerenciamento de biblio tecas, uma vez que já existem inúmeros softwares com essa finalidade. A aplicação Library fornece algumas funcionalidades como a catalogação de li vros, a classificação de livros, cadastro de leitores, autores, assuntos e editoras, empréstimo e devolução de livros, relatórios de livros, leitores e empréstimos, cadastro de usuários e de permissões. A aplicação Library merece destaque pois ela possui diferentes perfis de usuári os, sendo que cada perfil possui acesso a um grupo de funcionalidades do siste ma. Poderemos ver melhor as funcionalidades acessadas por cada ator no dia

37 266 Amostra do livro Adianti Framework para PHP Figura 95 Diagrama de classes da biblioteca Modelo relacional O modelo relacional, que pode ser visto na figura após a tabela a seguir, pode ser derivado a partir do modelo de classes persistentes por meio de técnicas de mapeamento objeto relacional. No modelo relacional do sistema Library, temos as tabelas a seguir. Juntamente a cada tabela, temos a explicação de qual Active Record ela representa e também como foi realizado o mapeamento. author: Armazena um Active Record do tipo Author; subject: Armazena um Active Record do tipo Subject; publisher: Armazena um Active Record do tipo Publisher; collection: Armazena um Active Record do tipo Collection; classification: Armazena um Active Record do tipo Classification; book: Armazena um Active Record Book. A associação de Book com Publisher foi mapeada por meio da chave estrangeira publisher_id. Sua associação com Collection foi mapeada por meio da chave estrangeira collection_id. Sua associação com Classification foi mapeada por meio da chave estrangeira classification_id. Sua agregação com Author foi mapeada por meio da tabela associativa book_author. Sua agregação com Subject foi mapeada por meio da tabela associativa book_subject;

38 276 Amostra do livro Adianti Framework para PHP Controle de permissões Ter um template separado para cada perfil de usuário não impede que um usuário tente acessar um controlador de página de outro usuário. Na web, por exemplo, um operador poderia tentar acessar o cadastro de livros digitando seu endereço na URL: Para impedir que acessos desse gênero ocorram, devemos realizar um controle de permissões em cada controlador de página. No exemplo a seguir, temos o cadastro de livros, que pode ser acessado somente pelo perfil da bibliotecária. Dessa forma, em seu método construtor verificamos inicialmente se o usuário está logado. Caso não esteja, uma exceção é lançada e a mensagem de erro é exibida para o usuário. Após a verificação de login, é aberta uma transação com a base de dados para verificar o perfil do usuário logado na sessão. O método newfromlogin() é utilizado para carregar o objeto User. Então é realizada sim plesmente uma comparação do perfil do usuário (role->mnemonic). Caso o per fil não seja da bibliotecária (LIBRARIAN), então uma nova exceção é lançada. Caso passe pelas verificações, então o formulário é construído e o programa se gue sua execução. app/control/bookform.class.php <?php class BookForm extends TPage private $form; // formulário function construct() parent:: construct(); // verifica se está logado if (TSession::getValue('logged')!== TRUE) throw new Exception(_t('Not logged')); // verifica se o perfil pode acessar a página TTransaction::open('library'); if (User::newFromLogin(TSession::getValue('login'))->role->mnemonic!== 'LIBRARIAN') throw new Exception(_t('Permission denied')); TTransaction::close(); // cria o formulário... $this->form = new TForm('form_Book');

39 Capítulo 6 - Estudos de caso Amostra do livro Template ERP Nas primeiras versões do framework, não havia uma aplicação que demonstras se de maneira completa como implementar o controle de permissões. Então, primeiramente foi criada a aplicação Library, que além de demonstrar o uso de vários componentes do framework, também demonstrava como tratar do con trole de acesso por meio de diferentes templates. A aplicação Library cumpre bem seu papel. Entretanto em grandes sistemas, a criação de diferentes templates para suportar diferentes perfis de usuários aca ba sendo uma atividade repetitiva e sujeita a falhas. Em situações onde temos muitos grupos de usuários e as permissões mudam constantemente, temos de dar manutenção à diferentes arquivos. Além disso, é inviável dar permissões ex clusivas a um único usuário, pois a permissão é global para o grupo. Pensando nessas situações, foi criado um template para novas aplicações, cha mado Template ERP. O objetivo do Template ERP, é entregar alguns recursos relativos ao controle de acesso, necessários à grandes sistemas de gestão. Assim, o Template ERP é um esqueleto de aplicação, que já conta com controle de per missões embutido, por meio de recursos como: cadastro de usuários, de grupos, e de programas. Neste template, a montagem dos menus de opção é dinâmica, conforme as permissões previamente cadastradas no usuário ou no grupo. Obs: O Template ERP pode ser baixado em template Estrutura O Template ERP é uma aplicação já pronta que utiliza o Adianti Framework. Além do próprio framework, o template entrega o seguinte conteúdo, além de versões modificadas dos arquivos index.php e engine.php. Tabela 10. Conteúdos do Template ERP app config Arquivo permission.ini, que indica a localização da base de dados de permissões. control Cadastros de usuários, grupos, e programas. database Arquivo permission.db, base de dados pronta de usuários, grupos e programas. model Classes de modelo para usuários, grupos e programas, bem como suas ligações (agregações). templates Templates da aplicação (tela de login, etc).

40 Capítulo 6 - Estudos de caso Amostra do livro Tela de Login Na medida em que o usuário acessar o sistema pela primeira vez, terá acesso ao formulário de login. Basicamente o formulário de login é um formulário co mum com dois campos: usuário e senha. Figura 106 Formulário de login Neste caso, vamos suprimir o método construtor, onde a interface é construída, e nos concentrar o método onlogin(), que é executado sempre que o usuário clicar no botão Login. Este método inicialmente autenticará o usuário por meio do método SystemUser::autenticate(). Este método recebe o login e a senha e retorna o usuário (SystemUser) correspondente com aquele login caso a senha seja igual à do cadastro. Caso contrário, uma exceção é lançada. Caso o usuário seja autenticado, são obtidos os programas que o mesmo tem acesso por meio do método getprograms(). Estes programas são armazenados em uma variável de sessão, por meio do método TSession::setValue(). Por fim, caso o usuário tenha uma página de entrada (Front page) cadastrada, ele será direcionado para esta página por meio do método TApplication::gotoPage(), caso contrário, será direcionado para uma página vazia (EmptyPage). app/control/admin/loginform.class.php <?php class LoginForm extends TPage protected $form; // form function onlogin() try TTransaction::open('permission'); $data = $this->form->getdata('stdclass'); $this->form->validate(); // autentica o usuário $user = SystemUser::autenticate( $data->login, $data->password ); if ($user) // se autenticou $programs = $user->getprograms(); // busca os programas que tem acesso $programs['loginform'] = TRUE;

41 300 Amostra do livro Adianti Framework para PHP Telas de administração O Template ERP já acompanha uma série de cadastros que permitem definir as permissões da aplicação. Para acessá los, basta realizar login no sistema com o usuário admin, cuja senha já foi apontada anteriormente. O primeiro cadastro é o de programas. Nesse cadastro, deveremos registrar cada classe (página) criada para o sistema, dando um nome, e apontando sua classe. As classes de administração (iniciam com System*), já estão cadastradas. Figura 107 Cadastro de programas Outro cadastro administrativo é o de grupos de usuários, que pode ser visto na figura a seguir. Para cada grupo que cadastrarmos, será possível relacionar uma série de programas, por meio de um componente TMultifield. É importante lembrar que um grupo pode conter muitos programas, o que se dá pelo relacio namento de agregação entre SystemGroup e SystemProgram. Figura 108 Cadastro de grupos Por fim, temos o cadastro de usuários. Ao cadastrarmos um usuário, poderemos relacionar o mesmo a um ou vários grupos, e a um ou vários programas. Pode mos marcar vários grupos nas checkboxes à esquerda, o que é representado

42 Capítulo 5 - Organização e controle Amostra do livro 201 Obs: O controlador de formulários pressupõe que o objeto que representa o formulário tenha o nome $this->form. Então você deve declarar o formulário com esse nome. app/control/organization/standardcontrols/standardformview.class.php <?php class StandardFormView extends TStandardForm protected $form; function construct() parent:: construct(); // define a base de dados parent::setdatabase('samples'); // define o active record parent::setactiverecord('city'); // cria o formulário $this->form = new TQuickForm('form_City'); $this->form->class = 'tform'; // define a classe CSS $this->form->style = 'width: 500px'; // largura // define o título do form $this->form->setformtitle('standard Form'); // cria os campos $id = new TEntry('id'); $name = new TEntry('name'); $id->seteditable(false); // adiciona os campos no formulário $this->form->addquickfield('id', $id, 100); $this->form->addquickfield('name', $name, 100); // define as ações do formulário $this->form->addquickaction('save', new TAction(array($this, 'onsave')), 'ico_save.png'); $this->form->addquickaction('new', new TAction(array($this, 'onedit')), 'ico_new.png'); $this->form->addquickaction('listing',new TAction(array('StandardDataGridView', 'onreload')), 'ico_datagrid.gif');?> // adiciona o formulário à página parent::add($this->form); Controlador de datagrid Agora que já aprendemos a criar um formulário de maneira rápida, vamos criar uma datagrid com poucas linhas de código. Para tal, vamos utilizar um contro lador padrão chamado TStandardList. Este controlador contém implementa dos de maneira genérica os métodos mais utilizados na manipulação de data

43 7 DESENVOLVIMENTO ÁGIL COM STUDIO PRO CAPÍTULO 7 Desenvolvimento ágil com o Adianti Studio Pro Ao utilizarmos um framework para desenvolvimento de sistemas, ga nhamos uniformidade no código fonte, maior qualidade e padronização. Para agilizar ainda mais o desenvolvimento de aplicações foi desenvolvi da a ferramenta Adianti Studio Pro, uma IDE para desenvolvimento de sistemas que automatiza a criação do código fonte voltado ao Adianti Framework, tornando muito mais ágil o desenvolvimento de novos siste mas. 7.1 Introdução Organização da interface O Adianti Studio é uma IDE multi plataforma para desenvolvimento de siste mas que conta com uma série de características, dentre as quais podem ser des tacadas: autocomplete para PHP e para os métodos de classes do projeto, sinta xe colorida, comparação gráfica de arquivos, bookmarks, possibilidade de cria ção de plugins, integração com subversion, dentre outras. Na figura a seguir po demos conferir a tela inicial do Adianti Studio Pro. Veja a seguir o significado de cada item: B Barra de ferramentas padrão: Contém as principais funcionalidades da ferramenta, tais como: novo, abrir, salvar, identar, aplicar plugin, sair, etc; C Barra de ferramentas Adianti: Contém as funções da versão pro, que agilizam o processo de criação de novas aplicações;

44 308 Amostra do livro Adianti Framework para PHP D Barra de plugins: Disponibiliza os plugins criados na ferramenta para aplicação rápida sobre o arquivo e/ou projeto que está aberto; E Barra de favoritos: Permite abrir rapidamente um arquivo favorito, bem como acrescentar um arquivo na barra de favoritos; F Árvore do projeto: Área de navegação, onde são listadas as pastas e ar quivos do projeto para abertura. Na segunda aba, temos uma lista de mé todos da classe ativa; e na terceira, uma lista de bases de dados cadastra das; G Área de edição: Área de edição do arquivo, contendo uma aba por ar quivo. Figura 112 Tela inicial do Adianti Studio Pro Visão geral dos menus Como pode ser visto na figura a seguir, no menu Arquivo, temos opções tradi cionais para manipulação de arquivos. Na opção Novo, temos a possibilidade de criar um arquivo vazio PHP, um novo Projeto de desenvolvimento genéri co em PHP ou uma Conexão de banco de dados. Em seguida, temos opções como: Abrir, Salvar e Salvar como. Neste menu, também temos a opção Comparar, que permite comparar graficamente o arquivo aberto com um ou tro arquivo, Exportar para PDF, que exporta o código fonte em PDF e Salvar Área de Trabalho, que memoriza os arquivos abertos.

45 Capítulo 7 - Desenvolvimento ágil com Studio Pro Amostra do livro 315 bre os mesmos. Para que seja possível editarmos os registros de uma tabela, é preciso que a mesma tenha as chaves primárias registradas no banco de dados. Também podemos excluir registros, bem como criar novos registros na tabela. Figura 123 Janela de navegação de tabela 7.2 Geração de código O Adianti Studio Pro adiciona um conjunto de funcionalidades em relação ao Adianti Studio Standard. Estas funcionalidades são voltadas a dar maior agili dade no desenvolvimento de aplicações desenvolvidas para o Adianti Fra mework. Na figura a seguir podemos ver em destaque a barra de ferramentas Adianti. Esta barra de ferramentas contém algumas funcionalidades voltadas para agilizar a criação de aplicações Adianti Framework. Dentre as funcionali dades, podem ser destacadas a geração automática das classes de modelo e de páginas, baseadas em wizards. Figura 124 Barra de ferramentas de geração de código no Adianti Studio Pro

46 316 Amostra do livro Adianti Framework para PHP Criando o projeto Para iniciar um novo projeto, podemos utilizar o menu Novo projeto, da barra de ferramentas Adianti. Este menu possui duas opções: Projeto Adianti Fra mework, que permite a criação de um novo projeto de aplicação usando o Adi anti Framework, e Projeto genérico PHP, que permite a criação de um projeto qualquer em PHP. A segunda opção já vimos na seção Gerenciamento de pro jetos. Figura 125 Menu de opções para criação de novos projetos Quando acessada a opção Projeto Adianti Framework, uma nova janela será exibida, tal qual representada na próxima figura. Por meio dessa janela, pode mos criar projetos dentro do Studio. Para criar um projeto basta preencher seu nome, responder se deseja copiar a estrutura do framework para dentro da pas ta do projeto, escolher qual a biblioteca padrão a ser usada (Web ou Gtk) e se lecionar a pasta do projeto (que poderá ser criada neste momento). Figura 126 Janela de criação de novo projeto Adianti Framework A partir da seleção da pasta, a ferramenta já sugere e preenche automaticamen te o campo Pasta das classes, com os caminhos padronizados utilizados pelo

47 Capítulo 7 - Desenvolvimento ágil com Studio Pro Amostra do livro 319 mente derivada a partir do modelo de classes por meio de técnicas de mapea mento objeto relacional amplamente conhecidas. Dentro do menu Novo ban co da barra de ferramentas Adianti, temos a opção A partir de um modelo XMI, que nos permite criar um modelo relacional por meio da linguagem SQL a partir de um modelo de classes. Figura 129 Menu de opções para criação do banco de dados a partir de modelo XMI Modelos de classe são armazenados em arquivos do tipo XMI (XML Metadata Interchange), que são arquivos XML utilizados para representar modelos de projeto de software orientados a objetos. Arquivos XMI podem ser gerados por ferramentas de modelagem conhecidas como: ArgoUML, Astah, Rational Rose, StarUML, Umbrello, dentre outros. Na figura a seguir temos a representação de um modelo de classes dentro da ferramenta StarUML. Este modelo pode ser ex portado para o formato XMI e posteriormente importando pelo Adianti Studio Pro para criação da base de dados. Figura 130 Modelo de classes na ferramenta StarUML

ADIANTI FRAMEWORK PARA PHP

ADIANTI FRAMEWORK PARA PHP ADIANTI FRAMEWORK PARA PHP 5ª edição PABLO DALL'OGLIO Copyright 2012 de Pablo Dall'Oglio. Todos os direitos reservados e protegidos pela Lei 9.160 de 19/02/1998. É proibida a reprodução desta obra, mesmo

Leia mais

ADIANTI FRAMEWORK PARA PHP

ADIANTI FRAMEWORK PARA PHP ADIANTI FRAMEWORK PARA PHP 7ª edição PABLO DALL'OGLIO Copyright 2012 de Pablo Dall'Oglio. Todos os direitos reservados e protegidos pela Lei 9.160 de 19/02/1998. É proibida a reprodução desta obra, mesmo

Leia mais

Utilizaremos a última versão estável do Joomla (Versão 2.5.4), lançada em

Utilizaremos a última versão estável do Joomla (Versão 2.5.4), lançada em 5 O Joomla: O Joomla (pronuncia-se djumla ) é um Sistema de gestão de conteúdos (Content Management System - CMS) desenvolvido a partir do CMS Mambo. É desenvolvido em PHP e pode ser executado no servidor

Leia mais

Vamos criar uma nova Página chamada Serviços. Clique em Adicionar Nova.

Vamos criar uma nova Página chamada Serviços. Clique em Adicionar Nova. 3.5 Páginas: Ao clicar em Páginas, são exibidas todas as páginas criadas para o Blog. No nosso exemplo já existirá uma página com o Título Página de Exemplo, criada quando o WorPress foi instalado. Ao

Leia mais

PHP Programando com Orientação a Objetos

PHP Programando com Orientação a Objetos PHP Programando com Orientação a Objetos 2 a edição Pablo Dall Oglio Novatec Sumário Sobre o autor... 13 Agradecimentos... 14 Nota do autor... 16 Organização do livro... 18 Capítulo 1 Introdução ao PHP...

Leia mais

Curso de Capacitação em Gerenciador de Conteúdo PLONE

Curso de Capacitação em Gerenciador de Conteúdo PLONE Curso de Capacitação em Gerenciador de Conteúdo PLONE 1 Índice Dicas iniciais O que é o Plone? 3 Formulário de Solicitação 6 Acesso ao Plone 6 Configurações do Site 14 Inserindo Conteúdo Inserir Pastas

Leia mais

Produto IV: ATU SAAP. Manual de Referência

Produto IV: ATU SAAP. Manual de Referência Produto IV: ATU SAAP Manual de Referência Pablo Nogueira Oliveira Termo de Referência nº 129275 Contrato Número 2008/000988 Brasília, 30 de outubro de 2008 1 Sistema de Apoio à Ativideade Parlamentar SAAP

Leia mais

Introdução ao X3. Exercício 1: Criando um registro de Contato

Introdução ao X3. Exercício 1: Criando um registro de Contato Introdução ao X3 Exercício 1: Criando um registro de Contato Inicie por adicionar um novo registro de Contato. Navegue para a tabela de Contato clicando na aba de Contato no alto da página. Existem duas

Leia mais

5 O Joomla: Web Apache Banco de Dados MySQL http://www.joomla.org/ - 55 -

5 O Joomla: Web Apache Banco de Dados MySQL http://www.joomla.org/ - 55 - 5 O Joomla: O Joomla (pronuncia-se djumla ) é um Sistema de Gestão de Conteúdos (Content Management System - CMS) desenvolvido a partir do CMS Mambo. É desenvolvido em PHP e pode ser executado no servidor

Leia mais

Desenvolvendo Aplicações Web com NetBeans

Desenvolvendo Aplicações Web com NetBeans Desenvolvendo Aplicações Web com NetBeans Aula 3 Cap. 4 Trabalhando com Banco de Dados Prof.: Marcelo Ferreira Ortega Introdução O trabalho com banco de dados utilizando o NetBeans se desenvolveu ao longo

Leia mais

Ambiente Virtual de Aprendizagem C.S.G. M anual do Professor

Ambiente Virtual de Aprendizagem C.S.G. M anual do Professor Ambiente Virtual de Aprendizagem C.S.G. M anual do Professor Sumário Pré-requisitos para o Moodle... Entrar no Ambiente... Usuário ou senha esquecidos?... Meus cursos... Calendário... Atividades recentes...

Leia mais

FERRAMENTAS DE COLABORAÇÃO CORPORATIVA

FERRAMENTAS DE COLABORAÇÃO CORPORATIVA FERRAMENTAS DE COLABORAÇÃO CORPORATIVA Criação de Formulários no Google Drive Sumário (Clique sobre a opção desejada para ir direto à página correspondente) Criação de Formulários no Google Drive Introdução...

Leia mais

PROJETO: PRODUTO 4 RELATÓRIO FINAL DO DESENVOLVIMENTO E IMPLANTAÇÃO DO SISTEMA DE INFORMAÇÕES

PROJETO: PRODUTO 4 RELATÓRIO FINAL DO DESENVOLVIMENTO E IMPLANTAÇÃO DO SISTEMA DE INFORMAÇÕES Nome da Empresa: DEPARTAMENTO INTERSINDICAL DE ESTATÍSTICA E ESTUDOS SÓCIO-ECONÔMICOS (DIEESE) PROJETO: PROJETO DE COOPERAÇÃO TÉCNICA BRA/IICA/03/005 PARTICIPAÇÃO SOCIAL NÚMERO DO CONTRATO: 205037 TEMA:

Leia mais

The VISGRAF Video Database Rafaella Gappo Luiz Velho (orientador) Technical Report TR-2009-04 Relatório Técnico. August - 2009 - Agosto

The VISGRAF Video Database Rafaella Gappo Luiz Velho (orientador) Technical Report TR-2009-04 Relatório Técnico. August - 2009 - Agosto Laboratório VISGRAF Instituto de Matemática Pura e Aplicada The VISGRAF Video Database Rafaella Gappo Luiz Velho (orientador) Technical Report TR-2009-04 Relatório Técnico August - 2009 - Agosto The contents

Leia mais

Vamos criar uma nova Página chamada Serviços. Clique em Adicionar Nova.

Vamos criar uma nova Página chamada Serviços. Clique em Adicionar Nova. 3.5 Páginas: Ao clicar em Páginas, são exibidas todas as páginas criadas para o Blog. No nosso exemplo já existirá uma página com o Título Página de Exemplo, criada quando o WorPress foi instalado. Ao

Leia mais

Esse manual é um conjunto de perguntas e respostas para usuários(as) do Joomla! 1.5.

Esse manual é um conjunto de perguntas e respostas para usuários(as) do Joomla! 1.5. Esse manual é um conjunto de perguntas e respostas para usuários(as) do Joomla! 1.5. Ele considera que você já tem o Joomla! instalado no seu computador. Caso você queira utilizá lo em um servidor na web,

Leia mais

MANUAL PARA USO DO SISTEMA GCO Gerenciador Clínico Odontológico

MANUAL PARA USO DO SISTEMA GCO Gerenciador Clínico Odontológico MANUAL PARA USO DO SISTEMA GCO Gerenciador Clínico Odontológico O GCO é um sistema de controle de clínicas odontológicas, onde dentistas terão acesso a agendas, fichas de pacientes, controle de estoque,

Leia mais

Capítulo 7 O Gerenciador de Arquivos

Capítulo 7 O Gerenciador de Arquivos Capítulo 7 O Gerenciador de Arquivos Neste capítulo nós iremos examinar as características da interface do gerenciador de arquivos Konqueror. Através dele realizaremos as principais operações com arquivos

Leia mais

Adicionar o item de Menu Galeria de Fotos

Adicionar o item de Menu Galeria de Fotos Adicionar o item de Menu Galeria de Fotos... 1 Criar categoria de fotos... 5 Adicionar imagens à categoria... 11 Vincular as imagens à categoria criada... 17 Fazer artigo com o link para as fotos... 20

Leia mais

Manual de Utilização do PLONE (Gerenciador de página pessoal)

Manual de Utilização do PLONE (Gerenciador de página pessoal) Manual de Utilização do PLONE (Gerenciador de página pessoal) Acessando o Sistema Para acessar a interface de colaboração de conteúdo, entre no endereço http://paginapessoal.utfpr.edu.br. No formulário

Leia mais

Linux. Educacional. Tutorial Buzzword

Linux. Educacional. Tutorial Buzzword Linux Educacional Tutorial Buzzword Para trabalhar com o programa Buzzword online, é necessário que crie uma conta no site. Para isso acesse o endereço - https://buzzword.acrobat.com/ Para criar uma conta

Leia mais

Manual do Painel Administrativo

Manual do Painel Administrativo Manual do Painel Administrativo versão 1.0 Autores César A Miggiolaro Marcos J Lazarin Índice Índice... 2 Figuras... 3 Inicio... 5 Funcionalidades... 7 Analytics... 9 Cidades... 9 Conteúdo... 10 Referência...

Leia mais

SGCD 2.2. Sistema Gerenciador de Conteúdo Dinâmico

SGCD 2.2. Sistema Gerenciador de Conteúdo Dinâmico Atualizado em 13/AGO/2012 Sistema Gerenciador de Conteúdo Dinâmico No final de 2007, o Serviço Técnico de Informática da UNESP Marília, disponibilizou para a comunidade acadêmica e administrativa o Sistema

Leia mais

Introdução. Nesta guia você aprenderá:

Introdução. Nesta guia você aprenderá: 1 Introdução A criação de uma lista é a primeira coisa que devemos saber no emailmanager. Portanto, esta guia tem por objetivo disponibilizar as principais informações sobre o gerenciamento de contatos.

Leia mais

Flex. MANUAL DE USO DA FERRAMENTA FLEX O Flex como gerenciador de conteúdo

Flex. MANUAL DE USO DA FERRAMENTA FLEX O Flex como gerenciador de conteúdo 2011 MANUAL DE USO DA FERRAMENTA FLEX O Flex como gerenciador de conteúdo Aprenda como é simples utilizar a ferramenta Flex como seu gerenciador de conteúdo online. Flex Desenvolvido pela ExpandWEB 31/01/2011

Leia mais

Instalando o IIS 7 no Windows Server 2008

Instalando o IIS 7 no Windows Server 2008 Goiânia, 16/09/2013 Aluno: Rafael Vitor Prof. Kelly Instalando o IIS 7 no Windows Server 2008 Objetivo Esse tutorial tem como objetivo demonstrar como instalar e configurar o IIS 7.0 no Windows Server

Leia mais

Instalando o IIS 7 no Windows Server 2008

Instalando o IIS 7 no Windows Server 2008 Goiânia, 16/09/2013 Aluno: Rafael Vitor Prof. Kelly Instalando o IIS 7 no Windows Server 2008 Objetivo Esse tutorial tem como objetivo demonstrar como instalar e configurar o IIS 7.0 no Windows Server

Leia mais

Guia de Utilização do Microsoft Dynamics CRM (Gestão de Relacionamento com Clientes)

Guia de Utilização do Microsoft Dynamics CRM (Gestão de Relacionamento com Clientes) Guia de Utilização do Microsoft Dynamics CRM (Gestão de Relacionamento com Clientes) 1. Sobre o Microsoft Dynamics CRM - O Microsoft Dynamics CRM permite criar e manter facilmente uma visão clara dos clientes,

Leia mais

FERRAMENTAS DE COLABORAÇÃO CORPORATIVA

FERRAMENTAS DE COLABORAÇÃO CORPORATIVA FERRAMENTAS DE COLABORAÇÃO CORPORATIVA Manual de Utilização Google Grupos Sumário (Clique sobre a opção desejada para ir direto à página correspondente) Utilização do Google Grupos Introdução... 3 Página

Leia mais

GERENCIADOR DE CONTEÚDO

GERENCIADOR DE CONTEÚDO 1/1313 MANUAL DO USUÁRIO GERENCIADOR DE CONTEÚDO CRISTAL 2/13 ÍNDICE 1. OBJETIVO......3 2. OPERAÇÃO DOS MÓDULOS......3 2.1 GERENCIADOR DE CONTEÚDO......3 2.2 ADMINISTRAÇÃO......4 Perfil de Acesso:... 4

Leia mais

Construtor Iron Web. Manual do Usuário. Iron Web Todos os direitos reservados

Construtor Iron Web. Manual do Usuário. Iron Web Todos os direitos reservados Construtor Iron Web Manual do Usuário Iron Web Todos os direitos reservados A distribuição ou cópia deste documento, ou trabalho derivado deste é proibida, requerendo, para isso, autorização por escrito

Leia mais

PROJETO PEDAGÓGICO DE CURSOS

PROJETO PEDAGÓGICO DE CURSOS 1 de 6 PROJETO PEDAGÓGICO DE CURSOS BURITREINAMENTOS MANAUS-AM NOVEMBRO / 2014 2 de 6 PACOTES DE TREINAMENTOS BURITECH A Buritech desenvolveu um grupo de pacotes de treinamentos, aqui chamados de BuriPacks,

Leia mais

WampServer. O ícone do mesmo aparecerá no rodapé do monitor, próximo ao. Language => portuguese.

WampServer. O ícone do mesmo aparecerá no rodapé do monitor, próximo ao. Language => portuguese. 5 O Joomla: O Joomla (pronuncia-se djumla ) é um Sistema de Gestão de Conteúdos (Content Management System - CMS) desenvolvido a partir do CMS Mambo. É desenvolvido em PHP e pode ser executado no servidor

Leia mais

XXIV SEMANA MATEMÁTICA

XXIV SEMANA MATEMÁTICA XXIV SEMANA ACADÊMICA DA MATEMÁTICA Minicurso: Produção de Páginas Web para Professores de Matemática Projeto de Extensão: Uma Articulação entre a Matemática e a Informática como Instrumento para a Cidadania

Leia mais

Dominando Action Script 3

Dominando Action Script 3 Dominando Action Script 3 Segunda Edição (2014) Daniel Schmitz Esse livro está à venda em http://leanpub.com/dominandoactionscript3 Essa versão foi publicada em 2014-05-02 This is a Leanpub book. Leanpub

Leia mais

Sistema de Gerenciamento Remoto www.pevermelho.art.br

Sistema de Gerenciamento Remoto www.pevermelho.art.br Sistema de Gerenciamento Remoto www.pevermelho.art.br 1 - SOBRE O SGR Este manual irá lhe ajudar a entender o funcionamento do SGR (Sistema de Gerenciamento Remoto) permitindo assim que você possa atualizar

Leia mais

Como criar e editar Blogs. Manual Básico do. Mario Roberto Barro Jerino Queiroz Ferreira Profª Drª Salete Linhares Queiroz

Como criar e editar Blogs. Manual Básico do. Mario Roberto Barro Jerino Queiroz Ferreira Profª Drª Salete Linhares Queiroz Como criar e editar Blogs Manual Básico do Mario Roberto Barro Jerino Queiroz Ferreira Profª Drª Salete Linhares Queiroz São Carlos Setembro / 2008 Sumário Introdução...3 Criando um Blog no Edublogs...4

Leia mais

DOCUMENTAÇÃO DO FRAMEWORK - versão 2.0

DOCUMENTAÇÃO DO FRAMEWORK - versão 2.0 DOCUMENTAÇÃO DO FRAMEWORK - versão 2.0 Índice 1 - Objetivo 2 - Descrição do ambiente 2.1. Tecnologias utilizadas 2.2. Estrutura de pastas 2.3. Bibliotecas já incluídas 3 - Características gerais 4 - Criando

Leia mais

Sistemas Enturma: Manual de Ferramentas do Usuário

Sistemas Enturma: Manual de Ferramentas do Usuário versão do manual: 1 1 Apresentação A evolução da tecnologia vem provocando uma revolução no ensino. O acesso à Internet e a disseminação do uso do computador vêm mudando a forma de produzir, armazenar

Leia mais

Universidade Federal de Viçosa CPD - Central de Processamento de Dados Divisão de Desenvolvimento de Sistemas

Universidade Federal de Viçosa CPD - Central de Processamento de Dados Divisão de Desenvolvimento de Sistemas Universidade Federal de Viçosa CPD - Central de Processamento de Dados Divisão de Desenvolvimento de Sistemas Manual de padrões e convenções para desenvolvimento de sistemas PHP Versão Conteúdo 1.

Leia mais

Treinamento GVcollege Módulo Administrador de Programas e Sistemas

Treinamento GVcollege Módulo Administrador de Programas e Sistemas Treinamento GVcollege Módulo Administrador de Programas e Sistemas AVISO O conteúdo deste documento é de propriedade intelectual exclusiva da GVDASA Sistemas e está sujeito a alterações sem aviso prévio.

Leia mais

Manual de Uso Wordpress

Manual de Uso Wordpress Manual de Uso Wordpress Olá! Seja bem vindo ao igual. Agora você pode transmitir todas as notícias importantes da sua comunidade de forma mais simples e eficiente. Mas para que isso aconteça, primeiro

Leia mais

ANEXO 11. Framework é um conjunto de classes que colaboram para realizar uma responsabilidade para um domínio de um subsistema da aplicação.

ANEXO 11. Framework é um conjunto de classes que colaboram para realizar uma responsabilidade para um domínio de um subsistema da aplicação. ANEXO 11 O MATRIZ Para o desenvolvimento de sites, objeto deste edital, a empresa contratada obrigatoriamente utilizará o framework MATRIZ desenvolvido pela PROCERGS e disponibilizado no início do trabalho.

Leia mais

Desenvolva rapidamente utilizando o frame work CakePHP. Elton Luí s Minetto

Desenvolva rapidamente utilizando o frame work CakePHP. Elton Luí s Minetto Desenvolva rapidamente utilizando o frame work CakePHP Elton Luí s Minetto Agenda Ambiente Web PHP Problemas Frameworks CakePHP Demonstração Ambiente Web É o ambiente formado por algumas tecnologias: Servidor

Leia mais

Impressão e Fotolito Oficina Gráfica da EDITORA VIENA. Todos os direitos reservados pela EDITORA VIENA LTDA

Impressão e Fotolito Oficina Gráfica da EDITORA VIENA. Todos os direitos reservados pela EDITORA VIENA LTDA Autores Karina de Oliveira Wellington da Silva Rehder Consultores em Informática Editora Viena Rua Regente Feijó, 621 - Centro - Santa Cruz do Rio Pardo - SP CEP 18.900-000 Central de Atendimento (0XX14)

Leia mais

USANDO O ROUNDCUBE WEBMAIL

USANDO O ROUNDCUBE WEBMAIL USANDO O ROUNDCUBE WEBMAIL ATENÇÃO! Para utilizar este tutorial não se esqueça: Onde estiver escrito seusite.com.br substitua pelo ENDEREÇO do seu site (domínio). Ex.: Se o endereço do seu site é casadecarnessilva.net

Leia mais

Elaborado por SIGA EPCT. Projeto SIGA EPCT: Manual de Instalação apt-get para Solução de Relatórios Personalizados

Elaborado por SIGA EPCT. Projeto SIGA EPCT: Manual de Instalação apt-get para Solução de Relatórios Personalizados Elaborado por SIGA EPCT Projeto SIGA EPCT: Manual de Instalação apt-get para Solução de Relatórios Personalizados Versão Outubro - 2011 Sumário 1 Introdução 2 2 Algumas observações 3 3 Obtendo e instalando

Leia mais

1. Introdução pág.3 2. Apresentação do sistema Joomla! pág.4 3. Acessando a administração do site pág.4 4. Artigos 4.1. Criando um Artigo 4.2.

1. Introdução pág.3 2. Apresentação do sistema Joomla! pág.4 3. Acessando a administração do site pág.4 4. Artigos 4.1. Criando um Artigo 4.2. 1. Introdução pág.3 2. Apresentação do sistema Joomla! pág.4 3. Acessando a administração do site pág.4 4. Artigos 4.1. Criando um Artigo 4.2. Editando um Artigo 4.3. Excluindo um Artigo 4.4. Publicar

Leia mais

O curso aborda como criar sistemas com php e mysql utilizando a integração do Dreamweaver, sem a necessidade de programação.

O curso aborda como criar sistemas com php e mysql utilizando a integração do Dreamweaver, sem a necessidade de programação. Descrição do curso O curso aborda como criar sistemas com php e mysql utilizando a integração do Dreamweaver, sem a necessidade de programação. O aluno aprenderá a criar sistemas de cadastro, alteração,

Leia mais

SGCD 2.0 Sistema Gerenciador de Conteúdo Dinâmico

SGCD 2.0 Sistema Gerenciador de Conteúdo Dinâmico Sistema Gerenciador de Conteúdo Dinâmico Atualizado em 24/08/2011 No final de 2007, o Serviço Técnico de Informática da UNESP Marília, disponibilizou para a comunidade acadêmica e administrativa o Sistema

Leia mais

Tutorial - Programando com o MIOLO

Tutorial - Programando com o MIOLO Tutorial - Programando com o MIOLO Conceitos Básicos Antes de iniciar a programação com o Miolo é fundamental compreender alguns conceitos básicos: - Uma aplicação no Miolo é constituída de um ou mais

Leia mais

JOOMLA V3.2 PARA INICIANTES

JOOMLA V3.2 PARA INICIANTES JOOMLA V3.2 PARA INICIANTES Material desenvolvido para uso no ensino da plataforma Joomla para alunos de graduação do Instituto de Arquitetura e Urbanismo de São Carlos Autor: Daniel Picon Versão 1.1 -

Leia mais

Manual das funcionalidades Webmail AASP

Manual das funcionalidades Webmail AASP Manual das funcionalidades Webmail AASP 1. Configurações iniciais 2. Regras 3. Histórico da conta 4. Autorresposta 5. Dados de acesso (alterando senha de acesso) 6. Identidade (assinatura) 7. Redirecionamento

Leia mais

Conhecendo o Visual FoxPro 8.0 Parte 3

Conhecendo o Visual FoxPro 8.0 Parte 3 AULA Conhecendo o Visual FoxPro 8.0 Parte 3 Continuando nossa saga pelas ferramentas do Visual FoxPro 8.0, hoje vamos conhecer mais algumas. A Ferramenta Class Designer A Class Designer é a ferramenta

Leia mais

Manual Digifort Evidence Versão 1.0.1 Rev. A

Manual Digifort Evidence Versão 1.0.1 Rev. A Manual Digifort Evidence Versão 1.0.1 Rev. A Índice ANTES DE VOCÊ COMEÇAR... 4 PRÉ-REQUISITOS... 4 SCREEN SHOTS... 4 A QUEM SE DESTINA ESTE MANUAL... 4 COMO UTILIZAR ESTE MANUAL... 4 Introdução... 5 INSTALANDO

Leia mais

Serviço técnico de Biblioteca e documentação BIBLIOTECA PROF. PAULO DE CARVALHO MATTOS P@RTHENON

Serviço técnico de Biblioteca e documentação BIBLIOTECA PROF. PAULO DE CARVALHO MATTOS P@RTHENON Serviço técnico de Biblioteca e documentação BIBLIOTECA PROF. PAULO DE CARVALHO MATTOS P@RTHENON Botucatu 2013 NOVA FERRAMENTA DE BUSCA INTEGRADA: P@RTHENON 1. Para acessar o P@rthenon: Há três possibilidades

Leia mais

inux Sistemas Ltda. MANUAL DO USUÁRIO www.inux.com.br

inux Sistemas Ltda. MANUAL DO USUÁRIO www.inux.com.br 2013 inux Sistemas Ltda. s MANUAL DO USUÁRIO www.inux.com.br Sumário 1 Introdução... 2 2 Visão Geral do Sistema... 2 3 Tela de Configuração... 3 4 Tela de Mensagens... 5 5 Tela de Importação... 8 6 Tela

Leia mais

Conheça o Projeto. Apresentação. Finalidade. Objetivo

Conheça o Projeto. Apresentação. Finalidade. Objetivo Manual do Usuário Índice Conheça o Projeto...3 Apresentação...3 Finalidade...3 Objetivo...3 Histórico...4 Usando o Portal...5 Efetuando o cadastro na biblioteca digital...5 Logando na Biblioteca Digital...6

Leia mais

Framework utilizando reflexão e aspectos para persistência de objetos em java

Framework utilizando reflexão e aspectos para persistência de objetos em java Framework utilizando reflexão e aspectos para persistência de objetos em java Antonio Carlos Rolloff (UNIPAR) acrolloff@gmail.com Arthur Cattaneo Zavadski (UNIPAR) arthur@datacoper.com.br Maria Aparecida

Leia mais

CENTRO UNIVERSITÁRIO GERALDO DI BIASE

CENTRO UNIVERSITÁRIO GERALDO DI BIASE CENTRO UNIVERSITÁRIO GERALDO DI BIASE Life Sistemas Manual do Professor 1. Introdução O Centro Universitário Geraldo Di Biase apresenta, neste manual, os serviços do Sistema Life Educacional que você,

Leia mais

Plano de Aula - Dreamweaver CS6 - cód.5232 24 Horas/Aula

Plano de Aula - Dreamweaver CS6 - cód.5232 24 Horas/Aula Plano de Aula - Dreamweaver CS6 - cód.5232 24 Horas/Aula Aula 1 Capítulo 1 - Introdução ao Dreamweaver CS6 Aula 2 Continuação do Capítulo 1 - Introdução ao Dreamweaver CS6 Aula 3 Capítulo 2 - Site do Dreamweaver

Leia mais

Autor: Ricardo Francisco Minzé Júnior - ricardominze@yahoo.com.br Desenvolvendo aplicações em camadas com PHP 5.

Autor: Ricardo Francisco Minzé Júnior - ricardominze@yahoo.com.br Desenvolvendo aplicações em camadas com PHP 5. Desenvolvendo aplicações em camadas com PHP 5. Talvez a primeira vista você ache estranha a palavra Camada em programação, mas o que vem a ser Camada? Segundo o dicionário: Camada 1 - Qualquer matéria

Leia mais

Conteúdo. Disciplina: INF 02810 Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo

Conteúdo. Disciplina: INF 02810 Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo Universidade Federal do Espírito Santo Centro Tecnológico Departamento de Informática Disciplina: INF 02810 Prof.: (monalessa@inf.ufes.br) Conteúdo 1. Introdução 2. Processo de Software 3. Gerência de

Leia mais

AVISO. O conteúdo deste documento é de propriedade intelectual exclusiva da GVDA- SA Sistemas e está sujeito a alterações sem aviso prévio.

AVISO. O conteúdo deste documento é de propriedade intelectual exclusiva da GVDA- SA Sistemas e está sujeito a alterações sem aviso prévio. AVISO O conteúdo deste documento é de propriedade intelectual exclusiva da GVDA- SA Sistemas e está sujeito a alterações sem aviso prévio. Nenhuma parte desta publicação pode ser reproduzida nem transmitida

Leia mais

Versão 1.0 Janeiro de 2011. Xerox Phaser 3635MFP Plataforma de interface extensível

Versão 1.0 Janeiro de 2011. Xerox Phaser 3635MFP Plataforma de interface extensível Versão 1.0 Janeiro de 2011 Xerox Phaser 3635MFP 2011 Xerox Corporation. XEROX e XEROX e Design são marcas da Xerox Corporation nos Estados Unidos e/ou em outros países. São feitas alterações periodicamente

Leia mais

A barra de menu a direita possibilita efetuar login/logout do sistema e também voltar para a página principal.

A barra de menu a direita possibilita efetuar login/logout do sistema e também voltar para a página principal. MANUAL DO SISCOOP Sumário 1 Menu de Navegação... 3 2 Gerenciar País... 5 3- Gerenciamento de Registro... 8 3.1 Adicionar um registro... 8 3.2 Editar um registro... 10 3.3 Excluir um registro... 11 3.4

Leia mais

Cetac - Centro de Ensino e Treinamento em Anatomia e Cirurgia Veterinária Manual Técnico do Sistema Administrativo do site Cetacvet.com.

Cetac - Centro de Ensino e Treinamento em Anatomia e Cirurgia Veterinária Manual Técnico do Sistema Administrativo do site Cetacvet.com. Manual Técnico do Sistema Administrativo do site Cetacvet.com.br SÃO PAULO - SP SUMÁRIO Introdução... 3 Autenticação no sistema administrativo... 4 Apresentação do sistema administrativo... 5 Gerenciamento

Leia mais

Banco de Dados BrOffice Base

Banco de Dados BrOffice Base Banco de Dados BrOffice Base Autor: Alessandro da Silva Almeida Disponível em: www.apostilando.com 27/02/2011 CURSO TÉCNICO EM SERVIÇO PÚBLICO Apostila de Informática Aplicada - Unidade VI Índice Apresentação...

Leia mais

Portal Contador Parceiro

Portal Contador Parceiro Portal Contador Parceiro Manual do Usuário Produzido por: Informática Educativa 1. Portal Contador Parceiro... 03 2. Acesso ao Portal... 04 3. Profissionais...11 4. Restrito...16 4.1 Perfil... 18 4.2 Artigos...

Leia mais

Manual do Instar Mail Sumário

Manual do Instar Mail Sumário Manual do Instar Mail Sumário 1 - Apresentação do sistema... 2 2 - Menu cliente... 2 3 - Menu Importação... 5 4 - Menu Campanhas... 9 5 - Menu banco de arquivos... 16 6 - Menu agendamento... 16 7 - Menu

Leia mais

Índice INSTALAÇÃO DO SOFTWARE EM SISTEMAS WINDOWS...2 INSTALAÇÃO DO SOFTWARE EM SISTEMAS LINUX...3 TESTANDO A CONEXÃO DA REDE LOCAL...

Índice INSTALAÇÃO DO SOFTWARE EM SISTEMAS WINDOWS...2 INSTALAÇÃO DO SOFTWARE EM SISTEMAS LINUX...3 TESTANDO A CONEXÃO DA REDE LOCAL... Índice INSTALAÇÃO DO SOFTWARE EM SISTEMAS WINDOWS...2 INSTALAÇÃO DO SOFTWARE EM SISTEMAS LINUX...3 TESTANDO A CONEXÃO DA REDE LOCAL...4 Configurações iniciais...5 Arquivo sudoers no Sistema Operacional

Leia mais

DESENVOLVENDO SOLUÇÕES COM VISUAL FOXPRO 8 E 9

DESENVOLVENDO SOLUÇÕES COM VISUAL FOXPRO 8 E 9 DESENVOLVENDO SOLUÇÕES COM VISUAL FOXPRO 8 E 9 Í N D I C E Capítulo 1 - O Início de Tudo 1 Reunindo todas as informações necessárias 2 Instalando o Visual FoxPro 2 Configurando o Visual FoxPro 7 Capítulo

Leia mais

PROJETO: PRODUTO 3 RELATÓRIO PARCIAL DO DESENVOLVIMENTO E IMPLANTAÇÃO DO SISTEMA DE INFORMAÇÕES

PROJETO: PRODUTO 3 RELATÓRIO PARCIAL DO DESENVOLVIMENTO E IMPLANTAÇÃO DO SISTEMA DE INFORMAÇÕES Nome da Empresa: DEPARTAMENTO INTERSINDICAL DE ESTATÍSTICA E ESTUDOS SÓCIO-ECONÔMICOS (DIEESE) PROJETO: PROJETO DE COOPERAÇÃO TÉCNICA BRA/IICA/03/005 PARTICIPAÇÃO SOCIAL NÚMERO DO CONTRATO: 205037 TEMA:

Leia mais

Ferramenta: Spider-CL. Manual do Usuário. Versão da Ferramenta: 1.1. www.ufpa.br/spider

Ferramenta: Spider-CL. Manual do Usuário. Versão da Ferramenta: 1.1. www.ufpa.br/spider Ferramenta: Spider-CL Manual do Usuário Versão da Ferramenta: 1.1 www.ufpa.br/spider Histórico de Revisões Data Versão Descrição Autor 14/07/2009 1.0 15/07/2009 1.1 16/07/2009 1.2 20/05/2010 1.3 Preenchimento

Leia mais

Área de Administração

Área de Administração Área de Administração versão 1.1 Partir de 2012/01/14 aplica-se para a versão phpcontact 1.2.x www.phpcontact.net Geral A área de administração é utilizado para uma fácil configuração do software elaboraçao

Leia mais

Framework MIOLO 2.5 Tutorial: Criando um módulo

Framework MIOLO 2.5 Tutorial: Criando um módulo Framework MIOLO 2.5 Tutorial: Criando um módulo Versão 2011.1.oracle CGCO/UFJF Framework MIOLO 2.5 Tutorial: Criando um módulo 1. Introdução O processo de desenvolvimento de aplicações com o MIOLO possui

Leia mais

SENADO FEDERAL Secretaria Especial do Interlegis SINTER Subsecretaria de Tecnologia da Informação SSTIN. Produto I: ATU SAAP

SENADO FEDERAL Secretaria Especial do Interlegis SINTER Subsecretaria de Tecnologia da Informação SSTIN. Produto I: ATU SAAP Produto I: ATU SAAP Documento de projeto do novo sistema. Modelo de Dados, Casos de Usos e Interface Gráfica do Sistema Pablo Nogueira Oliveira Termo de Referência nº 129275 Contrato Número 2008/000988

Leia mais

Índice. Atualizado em: 01/04/2015 Página: 1

Índice. Atualizado em: 01/04/2015 Página: 1 MANUAL DO USUÁRIO Índice 1. Introdução... 3 2. Acesso ao Sistema... 4 2.1. Instalação... 4 2.1.1. Servidor - Computador Principal... 4 2.1.2. Estação - Computador na Rede... 6 2.1.3. Estação - Mapeamento

Leia mais

AVISO. Treinamento GVcollege Módulo Ficha Complementar

AVISO. Treinamento GVcollege Módulo Ficha Complementar AVISO O conteúdo deste documento é de propriedade intelectual exclusiva da GVDASA Sistemas e está sujeito a alterações sem aviso prévio. Nenhuma parte desta publicação pode ser reproduzida nem transmitida

Leia mais

Manual de Usuário do UnB Webmail Destinado aos usuários de e-mail da Universidade de Brasília MODO DINÂMICO

Manual de Usuário do UnB Webmail Destinado aos usuários de e-mail da Universidade de Brasília MODO DINÂMICO Destinado aos usuários de e-mail da Universidade de Brasília MODO DINÂMICO Elaboração: Equipe de Suporte Avançado do CPD SA/SRS/CPD/UnB suporte@unb.br Universidade de Brasília Brasília / 2014 Resumo A

Leia mais

Manual do Usuário. Sumário

Manual do Usuário. Sumário Manual do Usuário Sumário Login... 2 Tela inicial (Dashboard)... 3 Modelo Operacional... 4 Agrupamentos de Menus... 6 Conteúdos / Notícias / Eventos... 9 Capas... 14 Repositório de Arquivos... 17 Enquetes...

Leia mais

Este tutorial é direcionado aos câmpus do IFC que já utilizam em seus sites os temas para WordPress desenvolvidos pelo Câmpus Araquari.

Este tutorial é direcionado aos câmpus do IFC que já utilizam em seus sites os temas para WordPress desenvolvidos pelo Câmpus Araquari. Apresentação Este tutorial é direcionado aos câmpus do IFC que já utilizam em seus sites os temas para WordPress desenvolvidos pelo Câmpus Araquari. Antes de iniciar o processo de atualização é recomendado

Leia mais

Tutorial Plone 4. Manutenção de Sites. Universidade Federal de São Carlos Departamento de Sistemas Web Todos os direitos reservados

Tutorial Plone 4. Manutenção de Sites. Universidade Federal de São Carlos Departamento de Sistemas Web Todos os direitos reservados Tutorial Plone 4 Manutenção de Sites Universidade Federal de São Carlos Departamento de Sistemas Web Todos os direitos reservados Sumário Introdução 1 Como fazer a autenticação do usuário 1.1 Através do

Leia mais

ATENÇÃO. Leitura Indispensável

ATENÇÃO. Leitura Indispensável ATENÇÃO Leitura Indispensável O Guia Rápido do Asure ID 2009 foi criado com base na versão Exchange, ou seja, a versão mais completa da linha Asure ID 2009, portanto, os usuários de outras versões ao utilizarem

Leia mais

UNIVERSIDADE FEDERAL DE MINAS GERAIS GIZ/PROGRAD. Tutorial UFMG Virtual Os primeiros passos do docente

UNIVERSIDADE FEDERAL DE MINAS GERAIS GIZ/PROGRAD. Tutorial UFMG Virtual Os primeiros passos do docente UNIVERSIDADE FEDERAL DE MINAS GERAIS GIZ/PROGRAD Tutorial UFMG Virtual Os primeiros passos do docente Nereu Agnelo Cavalheiro contato@nereujr.com Tutorial UFMG Virtual Primeiros passos do docente Este

Leia mais

MANUAL DE SOFTWARE ARKITOOL 2012

MANUAL DE SOFTWARE ARKITOOL 2012 MANUAL DE SOFTWARE ARKITOOL 2012 Editado por: Idéias e programas, S.L. San Román de los Montes 25-Março-2012. ARKITool, Arkiplan, Além disso ARKITool são marcas comerciais de idéias e programas, S.L. REQUISITOS

Leia mais

SisLegis Sistema de Cadastro e Controle de Leis

SisLegis Sistema de Cadastro e Controle de Leis Sistema de Cadastro e Controle de Leis Desenvolvido por Fábrica de Software Coordenação de Tecnologia da Informação Pág 1/22 Módulo: 1 Responsável: Desenvolvimento Ti Data: 01/11/2012 Versão: 1.0 Empresa:

Leia mais

INSTALAÇÃO DO SISTEMA CONTROLGÁS

INSTALAÇÃO DO SISTEMA CONTROLGÁS INSTALAÇÃO DO SISTEMA CONTROLGÁS 1) Clique duas vezes no arquivo ControlGasSetup.exe. Será exibida a tela de boas vindas do instalador: 2) Clique em avançar e aparecerá a tela a seguir: Manual de Instalação

Leia mais

CONTEÚDOS PROGRAMÁTICOS DA ACADEMIA

CONTEÚDOS PROGRAMÁTICOS DA ACADEMIA Página: 1/16 CONTEÚDOS PROGRAMÁTICOS DA ACADEMIA Módulo CBDS (Central de Banco de Dados Senior) A quem se destina: Todos que tiverem a necessidade de administrar os dados da base de dados da Senior Sistemas

Leia mais

Manual do Sistema de Almoxarifado P á g i n a 2. Manual do Sistema de Almoxarifado Módulo Requisição. Núcleo de Tecnologia da Informação

Manual do Sistema de Almoxarifado P á g i n a 2. Manual do Sistema de Almoxarifado Módulo Requisição. Núcleo de Tecnologia da Informação Divisão de Almoxarifado DIAX/CGM/PRAD Manual do Sistema de Almoxarifado Módulo Requisição Versão On-Line Núcleo de Tecnologia da Informação Universidade Federal de Mato Grosso do Sul Manual do Sistema

Leia mais

6 Aplicações Ricas para Internet

6 Aplicações Ricas para Internet 6 Aplicações Ricas para Internet DESENVOLVIMENTO WEB II - 7136 6.1. Evolução das aplicações para web O crescente número de pessoas que usufruem da informatização das tarefas cotidianas, viabilizadas na

Leia mais

MANUAL DO ADMINISTRADOR DO MÓDULO

MANUAL DO ADMINISTRADOR DO MÓDULO MANUAL DO ADMINISTRADOR DO MÓDULO ÍNDICE Relatórios Dinâmicos... 3 Requisitos de Sistema... 4 Estrutura de Dados... 5 Operadores... 6 Tabelas... 7 Tabelas x Campos... 9 Temas... 13 Hierarquia Relacionamento...

Leia mais

MANUAL JOOMLA 2.5 PORTAL INTERNET. Ministério do Esporte

MANUAL JOOMLA 2.5 PORTAL INTERNET. Ministério do Esporte MANUAL JOOMLA 2.5 PORTAL INTERNET Ministério do Esporte SUMÁRIO 1.0 - Módulo Administração... 1 2.0 Banner randômico... 2 2.1 Adicionar novo slide... 2 2.2 Excluir slide... 6 3.0 Artigos... 7 3.1 Adicionar

Leia mais

Moodle FTEC Versão 2.0 Manual do Usuário Acesse a área de LOGIN do site da FTEC www.ftec.com.br

Moodle FTEC Versão 2.0 Manual do Usuário Acesse a área de LOGIN do site da FTEC www.ftec.com.br Moodle FTEC Versão 2.0 Manual do Usuário Acesse a área de LOGIN do site da FTEC www.ftec.com.br Índice Como acessar o Moodle Editando seu PERFIL Editando o curso / disciplina no Moodle Incluindo Recursos

Leia mais

Iniciando o MySQL Query Brower

Iniciando o MySQL Query Brower MySQL Query Brower O MySQL Query Browser é uma ferramenta gráfica fornecida pela MySQL AB para criar, executar e otimizar solicitações SQL em um ambiente gráfico. Assim como o MySQL Administrator foi criado

Leia mais

Centro de Computação - Unicamp Gerência de Atendimento ao Cliente (e-mail:apoio@turing.unicamp.br) Sumário

Centro de Computação - Unicamp Gerência de Atendimento ao Cliente (e-mail:apoio@turing.unicamp.br) Sumário Sumário Conceitos Microsoft Access 97... 01 Inicialização do Access... 02 Convertendo um Banco de Dados... 03 Criando uma Tabela... 06 Estrutura da Tabela... 07 Propriedades do Campo... 08 Chave Primária...

Leia mais

CONTRA CONTROLE DE ACESSOS E MODULARIZADOR DE SISTEMAS

CONTRA CONTROLE DE ACESSOS E MODULARIZADOR DE SISTEMAS MINISTÉRIO DO DESENVOLVIMENTO AGRÁRIO SUBSECRETARIA DE PLANEJAMENTO, ORÇAMENTO E ADMINISTRAÇÃO COORDENAÇÃO-GERAL DE MODERNIZAÇÃO E INFORMÁTICA CONTRA CONTROLE DE ACESSOS E MODULARIZADOR DE SISTEMAS MANUAL

Leia mais

Programação para Android. Aula 08: Persistência de dados SQL

Programação para Android. Aula 08: Persistência de dados SQL Programação para Android Aula 08: Persistência de dados SQL Persistência de dados Na maioria das aplicações precisamos ter algum tipo de persistência de dados. Para guardar informações de forma persistente

Leia mais

SIAP - Sistema de Apoio ao Professor

SIAP - Sistema de Apoio ao Professor Introdução O SIAP, Sistema de Apoio ao Professor, é um programa que vai contribuir, de forma decisiva, com o cotidiano escolar de alunos, professores, gestores e funcionários administrativos. Com a implantação

Leia mais