Changes between Initial Version and Version 1 of phpgwapi


Ignore:
Timestamp:
07/25/07 08:25:05 (17 years ago)
Author:
anonymous
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • phpgwapi

    v1 v1  
     1= Expresso Livre = 
     2 
     3== Desenvolvimento == 
     4 
     5 == 1. Customização do eGroupWare para o Expresso == 
     6 
     7        A estrutura de diretórios do eGroupWare está definida da seguinte forma: o eGroupWare possui em seu diretório (/egroupware) diversos subdiretórios, que representam cada módulo do sistema. Por exemplo, o módulo de Email está no diretório '/egroupware/email', e o módulo Agenda está no diretório '/egroupware/calendar'. 
     8        A maioria dos módulos do sistema foi desenvolvida seguindo os padrões de implementação do Core Team do eGroupware,  e segue desde padrões de codificação da linguagem, até padrões para a estrutura de diretórios e nome dos arquivos. 
     9        Para se desenvolver um novo módulo no eGroupWare, é necessário respeitar a seguinte estrutura de diretórios e nomes de arquivos, conforme o modelo descrito abaixo: 
     10{{{ 
     11 
     12  --appname 
     13 
     14    +--inc 
     15      |   |--functions.inc.php 
     16 
     17      |   |--header.inc.php 
     18 
     19      |   |--hook_preferences.inc.php 
     20 
     21      |   |--hook_admin.inc.php 
     22 
     23      |   +--footer.inc.php 
     24 
     25    +--js 
     26      |   |--base 
     27 
     28      |   +--js_package_name 
     29 
     30    +--setup 
     31      |   |--default_records.inc.php 
     32 
     33      |   |--setup.inc.php 
     34 
     35      |   +--tables_current.inc.php 
     36 
     37    +--templates 
     38 
     39      +--default 
     40 
     41}}} 
     42 
     43    Explicando superficialmente a estrutura, tem-se: 
     44{{{ 
     45 
     46                --appname:       Diretório da aplicação (modificar o nome); 
     47                +--inc:          Diretório que contém as classes e os includes; 
     48                +--js:                   Diretório que contém os scripts Javascript(*.js); 
     49                +--setup:        Diretório que contém arquivos e scripts de instalação; 
     50                +--templates     Diretório que contém o template padrão de interface; 
     51                 
     52}}} 
     53 
     54        A ferramenta eGroupWare utiliza o esquema de templates da própria API (Application Program Interface) do PHP, simplificando a criação de templates personalizados. 
     55        Para criar um novo template no eGroupWare, independente de qual módulo está (layout da página de login, cabeçalho, botões, rodapé, etc), é necessário criar uma nova pasta dentro do diretório '/egroupware/phpgwapi/templates' igual a pasta já existente (ex. celepar), e então  modificar os arquivos já existentes, ou adicionar novos arquivos. O diretório '/egroupware/phpgwapi' não é um módulo qualquer, e sim a API do sistema. 
     56 
     57    Analogamente, para criar um novo template (modificar o layout interno de cada módulo), é necessário apenas gerar uma cópia do diretório 'templates/celepar' para outro diretório no mesmo nível, como exemplo: 'templates/novo_template'. 
     58 
     59    Utilizando este procedimento, a Celepar criou o template personalizado, customizando o eGroupWare e gerando o Expresso Livre. 
     60 
     61 == 2. Arquitetura Interna do Sistema == 
     62 
     63                Todas aplicações do Expresso são invocadas inicialmente pela mesma página 'index.php', localizada na raiz do eGroupWare. 
     64        Para carregar a página inicial de qualquer módulo, é necessário passar como paramêtro para a 'index.php' um único argumento, exemplificado abaixo: 
     65{{{ 
     66                /egroupware/index/php?menuaction=email.uiindex.index 
     67                (email=aplicação; uiindex=classe; index=método) 
     68}}} 
     69 
     70        Normalmente, uma simples aplicação possui na raiz do seu diretório uma página 'index.php', que fará as chamadas  das flags da API do eGroupWare, que por sua  vez chamarã os métodos executáveis através da função primária, denotada por index, e localizada em uma das classes  'UI'. 
     71 
     72        Arquitetura dividida em três camadas: 
     73 
     74Interface do usuário (UI); 
     75Componentes das regras de negócio (BO); 
     76Rotinas de manipulação de dados (SO); 
     77 
     78 
     79I. Componentes da Interface do Usuário (UI) 
     80 
     81        Somente os métodos das classes  UI que podem gerar código para o cliente. Isto inclui X/HTML, XML, imagens PNG ou qualquer outro dado que  vá diretamente para o browser. Além disso, esses  métodos são os  únicos que podem invocados pelo browser, e usando o 'menuaction'. Isso é reforçado através do uso de um array $public_functions, que é definido no topo da classe. O eGroupWare irá checar se o método chamado está nesse  array antes de executá-lo.  
     82        Pode ocorrer de se necessitar métodos que gerem código HTML, mas que não são chamados diretamente. São chamados de helper functions , e podem ser definidos em uma classe  UI, mas não devem ser inseridos no array $public_functions. 
     83        Uma aplicação relativamente pequena necessita de somente uma classe UI, que normalmente fica em 'myapp/inc/' e possui o nome 'class.uimyapp.inc.php'. 
     84        Mas se precisar ou quiser deixar mais dividido em seções dentro da mesma aplicação, para facilitar a manutenção, pode denotar as classes da seguinte forma: 
     85class.uisessioname.inc.php 
     86        As classes UI podem conter ainda variáveis membro $bo, que referenciam às classes BO. Todas as outras variáveis utilizadas serão somente para uso interno da própria classes UI, e onde o uso de variáveis globais deve ser evitado. 
     87 
     88II. Componentes de Objetos de Négocio (BO) 
     89 
     90        Essas classes encapsulam todas as regras de negócio que não aplicadas nos dados antes de serem mostrados ao usuário. Um exemplo de funcionalidade é carregar dados usando as classes SO, fazer alguns cálculos sobre esses dados, e seu resultado ser então repassado às classes UI, para ser mostrado ao usuário. 
     91        Similar aos arquivos UI, também podem ser organizados em seções como: 
     92 'myapp/inc/class.bosession.inc.php' 
     93 
     94        Essas classes podem conter variáveis-membro que referenciam às classes SO. 
     95 
     96III. Componentes de Armazenamento de Objetos (SO) 
     97 
     98        Os métodos dessas classes são responsáveis pela comunicação com o back-end do sistema, tais como Banco de Dados e LDAP. Além disso, são responsáveis pela limpeza de objetos e espaços em branco vindos em campos do resultset do bando de dados. 
     99        Pode-se utilizar o mesmo padrão de nomenclatura: 
     100        'myapp/inc/class.sosession.inc.php'. 
     101        Essas classes podem conter uma variável-membro chamada $db, que é uma referência à variável global $GLOBAL['PHPGW'] -> db. 
     102