Entendendo a estrutura de pastas do Scriptcase
Como usuário do Scriptcase, você deve conhecer bem as barreiras que atormentam a sua vida diariamente. Bugs inexplicáveis, falta de documentação, suporte ineficiente e outros inúmeros contratempos insistem em tornar as coisas mais difíceis. Porém, ao longo da nossa jornada, descobrimos uma forma de nos “proteger” nesse cenário e transformar o caos em sucesso absoluto.
A História
Certo dia, em 2012, nossa equipe de Mestres Scriptcase estava envolvida na produção de um software que controlaria a entrega de resultados numa clínica de exames. Era a última semana que tínhamos para finalizar aquele sistema e o deadline estava se aproximando. Foi aí que nos deparamos com um problema que tornaria o sistema inviável. Todas as nossas aplicações de consulta não estavam exportando arquivos PDF.
Procuramos na base de conhecimento do Scriptcase e na documentação. Sem sucesso. Tentamos o suporte. Só obtivemos respostas genéricas, que em nada nos ajudavam naquele momento. Perguntamos em fóruns e grupos de outros clientes, mas ninguém havia passado por isso.
O Ponto de Virada
Percebemos que estávamos sozinhos nessa. Foi aí que, depois de virarmos a noite tentando descobrir, quase que de maneira intuitiva, achamos o diretório onde uma biblioteca do SC rodava o comando para geração do PDF. Com isso, fomos capazes de descobrir o que estava faltando. Corrigimos e entregamos o sistema sem maiores problemas. Ufa.
Portanto, a partir daí decidimos mapear o Scriptcase inteiro. De cabo a rabo. De uma ponta à outra. E foi isso que fizemos. Depois de duas semanas e três dias estudando cada diretório e sua finalidade, desenvolvemos um doc que viria a se tornar o nosso guia em todo o processo de desenvolvimento com o Scriptcase.
Neste artigo te daremos um guia completo para entender a estrutura de pastas do Scriptcase. Esperamos que você faça bom proveito, assim como nós o fizemos.
O Guia
Após uma instalação limpa do Scriptcase, você deve ter um diretório com essa estrutura:
app/
Armazena tudo gerado pelo projeto, desde o código-fonte das aplicações até bibliotecas, temas, langs e outros assets. Este diretório serve apenas para uma pré-visualização do que está sendo desenvolvido, não serve para backups ou para fins de produção.
A estrutura desta pasta é definida como:
<nome do projeto>
: Código-fonte das aplicações.<nome do projeto>/_lib/buttons
: Tema dos botões.<nome do projeto>/_lib/chart
: Temas dos gráficos.<nome do projeto>/_lib/css
: Temas das aplicações.<nome do projeto>/_lib/font
: Fonts do Report PDF e Captcha.<nome do projeto>/_lib/friendly_url
: URLs amigáveis das aplicações.<nome do projeto>/_lib/googlefonts
: Google Fonts dos temas.<nome do projeto>/_lib/img
: Imagens das aplicações.
Dentro do diretório
<nome do projeto>/_lib/img
temos a seguinte estrutura de arquivos:
img/grp__NM__bg__NM__*
: Imagens de fundo à nível de projeto.img/grp__NM__btn__NM__*
: Imagens dos botões à nível de projeto.img/grp__NM__ico__NM__*
: Ícones à nível de projeto.img/grp__NM__img__NM__*
: Imagens gerais à nível de projeto.img/grp__NM__menu_img__NM__*
: Imagens do menu à nível de projeto.img/grp__NM__helpcase__NM__*
: Imagens do Helpcase à nível de projeto.img/scriptcase__NM__bg__NM__*
: Imagens de fundo à nível de Scriptcase.img/scriptcase__NM__btn__NM__*
: Imagens dos botões à nível de Scriptcase.img/scriptcase__NM__ico__NM__*
: Ícones à nível de Scriptcase.img/scriptcase__NM__img__NM__*
: Imagens gerais à nível de Scriptcase.img/scriptcase__NM__menu_img__NM__*
: Imagens do menu à nível de Scriptcase.img/sys__NM__bg__NM__*
: Imagens de fundo à nível público.img/sys__NM__btn__NM__*
: Imagens dos botões à nível público.img/sys__NM__ico__NM__*
: Ícones à nível público.img/sys__NM__img__NM__*
: Imagens gerais à nível público.img/sys__menu_img__NM__*
: Imagens do menu à nível público.img/usr__NM__bg__NM__*
: Imagens de fundo à nível de usuário.img/usr__NM__btn__NM__*
: Imagens dos botões à nível de usuário.img/usr__NM__ico__NM__*
: Ícones à nível de usuário.img/usr__NM__img__NM__*
: Imagens gerais à nível de usuário.img/usr__NM__menu_img__NM__*
: Imagens do menu à nível de usuário.
De volta ao diretório <nome do projeto>/_lib/
temos essa estrutura:
js
: Mensagens Javascript das notificações.lang
: Mensagens das aplicações.lib
: Assets do Scriptcase.libraries
: Bibliotecas externas do projeto.
No
<nome do projeto>/_lib/libraries
veremos o seguinte:
grp
: Nível do projeto.scriptcase
: Nível Scriptcase.sys
: Nível público.usr
: Nível do usuário.
Voltando para <nome do projeto>/_lib/
, esta é a estrutura:
menuicons
: Ícones do menu.oauth
: Chave do Google Calendar.profile_api.conf.php
: APIs do projeto.
backup/
Armazena todas as exportações que foram importadas no Scriptcase, desde projetos até backup geral. Neste diretório encontramos backup/scriptcase
que serve para criar cópias do banco de dados do Scriptcase. Este procedimento só é aplicado para instalações padrão feitas no SQLite.
devel/
Armazena todos os arquivos utilizados pelo Scriptcase para o desenvolvimento dos projetos. Consiste também em armazenar todos os assets salvos à nível de Scriptcase, projeto, usuário e público.
A estrutura desta pasta é definida como:
[SCRIPTCASE]devel/conf/scriptcase/nm_scriptcase.db
: Base de dados SQLite do Scriptcase quando instalado por padrão.devel/conf/scriptcase/scriptcase.config.php
: Configurações administrativas do Scriptcase.
devel/conf/scriptcase/fix.php
: Fixes executados pelo Scriptcase.
Nota: Fixes são scripts do Scriptcase executados após determinadas atualizações, a fim de atualizar aplicações antigas com novas funcionalidades.
devel/conf/scriptcase/api
: Perfis de APIs do Scriptcase.
devel/conf/scriptcase/chart
: Perfis de temas para gráficos do Scriptcase.
devel/conf/scriptcase/css
: CSS e Fonts do Scriptcase.
devel/conf/scriptcase/googlefonts
: Google Fonts do Scriptcase.
devel/conf/scriptcase/hotkeys
: Perfis de teclas de atalho do Scriptcase.
devel/conf/scriptcase/img
: Imagens do Scriptcase.
img/bg
: Imagens de fundo do Scriptcase.
img/btn
: CSS de botões do Scriptcase.
img/ico
: Ícones do Scriptcase.
img/img
: Imagens gerais do Scriptcase.
devel/conf/scriptcase/lib
: Bibliotecas internas do Scriptcase.
devel/conf/scriptcase/libraries
: Bibliotecas externas do Scriptcase.
devel/conf/scriptcase/lookup_def
: Perfis de lookup manual do Scriptcase.
devel/conf/scriptcase/menu
: Temas de menu do Scriptcase.
devel/conf/scriptcase/precodes
: Inserts Code dos eventos do Scriptcase.
devel/conf/scriptcase/schema
: Temas dos projetos do Scriptcase.
devel/conf/scriptcase/schemas
: Gráficos antigos, Editores HTML e Ícones do menu do Scriptcase.
schemas/charts
: Temas de gráficos antigos do Scriptcase.
schemas/editor_html
: Perfis de editores HTML do Scriptcase.
schemas/menu
: Temas de ícones do menu do Scriptcase. devel/conf/scriptcase/snippets
: Perfis de snippets do Scriptcase.
devel/conf/scriptcase/tpl
: Templates HTML do Scriptcase.
tpl/header
: Templates HTML de cabeçalho do Scriptcase.
tpl/footer
: Templates HTML de rodapé do Scriptcase.
tpl/free
: Templates HTML de formatos livre do Scriptcase.
tpl/helpcase
: Templates HTML de cabeçalhos do Helpcase do Scriptcase.
devel/conf/scriptcase/securitymodule
: Perfis de módulo de segurança do Scriptcase.
[PROJETO]
devel/conf/grp/<nome do projeto>/api
: Perfis de APIs do projeto.
devel/conf/grp/<nome do projeto>/chart
: Perfis de temas para gráficos do projeto.
devel/conf/grp/<nome do projeto>/googlefonts
: Google Fonts do projeto.
devel/conf/grp/<nome do projeto>/hotkeys
: Perfis de teclas de atalho do projeto.
devel/conf/grp/<nome do projeto>/img
: Imagens do projeto.
img/bg
: Imagens de fundo do projeto.
img/btn
: CSS de botões do projeto.
img/ico
: Ícones do projeto.
img/img
: Imagens gerais do projeto.
devel/conf/grp/<nome do projeto>/lib
: Bibliotecas internas do projeto.
devel/conf/grp/<nome do projeto>/libraries
: Bibliotecas externas do projeto.
devel/conf/grp/<nome do projeto>/lookup_def
: Perfis de lookup manual do projeto.
devel/conf/grp/<nome do projeto>/menu
: Temas de menu do projeto.
devel/conf/grp/<nome do projeto>/schema
: Temas dos projetos do projeto.
devel/conf/grp/<nome do projeto>/schemas
: Gráficos antigos, Editores HTML e Ícones do menu do projeto.
schemas/charts
: Temas de gráficos antigos do projeto.
schemas/editor_html
: Perfis de editores HTML do projeto.
schemas/menu
: Temas de ícones do menu do projeto.
devel/conf/grp/<nome do projeto>/snippets
: Perfis de snippets do projeto.
devel/conf/grp/<nome do projeto>/tpl
: Templates HTML do projeto.
tpl/header
: Templates HTML de cabeçalho do projeto.
tpl/footer
: Templates HTML de rodapé do projeto.
tpl/free
: Templates HTML de formatos livre do projeto.
tpl/helpcase
: Templates HTML de cabeçalhos do Helpcase do projeto.
devel/conf/grp/<nome do projeto>/securitymodule
: Perfis de módulo de segurança do projeto.
[PÚBLICO]
devel/conf/sys/api
: Perfis de APIs públicos.
devel/conf/sys/chart
: Perfis de temas para gráficos públicos.
devel/conf/sys/googlefonts
: Google Fonts públicos.
devel/conf/sys/hotkeys
: Perfis de teclas de atalho públicos.
devel/conf/sys/img
: Imagens públicas.
img/bg
: Imagens de fundo públicos.
img/btn
: CSS de botões públicos.
img/ico
: Ícones públicos.
img/img
: Imagens gerais públicas.
devel/conf/sys/lib
: Bibliotecas internas públicas.
devel/conf/sys/libraries
: Bibliotecas externas públicas.
devel/conf/sys/lookup_def
: Perfis de lookup manual públicos.
devel/conf/sys/menu
: Temas de menu públicos.
devel/conf/sys/schema
: Temas dos projetos públicos.
devel/conf/sys/schemas
: Gráficos antigos, Editores HTML e Ícones do menu públicos.
schemas/charts
: Temas de gráficos antigos públicos.
schemas/editor_html
: Perfis de editores HTML públicos.
schemas/menu
: Temas de ícones do menu públicos.
devel/conf/sys/snippets
: Perfis de snippets públicos.
devel/conf/sys/tpl
: Templates HTML públicos.
tpl/header
: Templates HTML de cabeçalho públicos.
tpl/footer
: Templates HTML de rodapé públicos.
tpl/free
: Templates HTML de formatos livre públicos.
devel/conf/sys/securitymodule
: Perfis de módulo de segurança públicos.
[USUÁRIO]
devel/conf/usr/<nome do usuário>/api
: Perfis de APIs do usuário.
devel/conf/usr/<nome do usuário>/chart
: Perfis de temas para gráficos do usuário.
devel/conf/usr/<nome do usuário>/googlefonts
: Google Fonts do usuário.
devel/conf/usr/<nome do usuário>/hotkeys
: Perfis de teclas de atalho do usuário.
devel/conf/usr/<nome do usuário>/img
: Imagens do usuário.
img/bg
: Imagens de fundo do usuário.
img/btn
: CSS de botões do usuário.
img/ico
: Ícones do usuário.
img/img
: Imagens gerais do usuário.
devel/conf/usr/<nome do usuário>/lib
: Bibliotecas internas do usuário.
devel/conf/usr/<nome do usuário>/libraries
: Bibliotecas externas do usuário.
devel/conf/usr/<nome do usuário>/lookup_def
: Perfis de lookup manual do usuário.
devel/conf/usr/<nome do usuário>/menu
: Temas de menu do usuário.
devel/conf/usr/<nome do usuário>/schema
: Temas dos projetos do usuário.
devel/conf/usr/<nome do usuário>/schemas
: Gráficos antigos, Editores HTML e Ícones do menu do usuário.
schemas/charts
: Temas de gráficos antigos do usuário.
schemas/editor_html
: Perfis de editores HTML do usuário.
schemas/menu
: Temas de ícones do menu do usuário.
devel/conf/usr/<nome do usuário>/snippets
: Perfis de snippets do usuário.
devel/conf/usr/<nome do usuário>/tpl
: Templates HTML do usuário.
tpl/header
: Templates HTML de cabeçalho do usuário.
tpl/footer
: Templates HTML de rodapé do usuário.
tpl/free
: Templates HTML de formatos livre do usuário.
devel/conf/usr/<nome do usuário>/securitymodule
: Perfis de módulo de segurança do usuário.
doc/
Armazena documentação do Scriptcase.
examples/
Armazena todos os projetos de exemplos do Scriptcase junto com seus CREATEs TABLE para SQLite e MySQL.
file/
Armazena arquivos importados pelos campos Documento (Nome de Arquivo) e Imagem (Nome de Arquivo). Este diretório serve apenas para testes em desenvolvimento. Para publicação avançada, recomenda-se que os caminhos definidos para produção sejam aplicados durante a publicação.
Para publicação típica, os caminhos ficam em _lib/file.
log/
Armazena os logs gerados pelo Scriptcase. Para exceções das pastas abaixo, o log é gerado em scriptcase/tmp.
A estrutura desta pasta é definida como:
log/iface
: Ações do usuário no Scriptcase.
log/upd
: Atualizações automáticas
log/fix.log
: Fixes executados após atualização.
prod/
Armazena ambiente de produção. Utilizado para conexão do que é gerado em scriptcase/app e gerar ambiente de produção durante publicação do projeto.
A estrutura desta pasta é definida como:
prod/cep
: Arquivos para pesquisa de campos do tipo CEP.
Nota: Disponível apenas na instalação pt_br.
prod/third
: Bibliotecas de terceiros utilizadas pelas aplicações geradas.
tmp/
Armazena arquivos temporários criados durante o uso. Os arquivos variam desde erros na interface até exportações de dados nas aplicações geradas.
config_.php
: Configurações de acesso ao banco de dados do Scriptcase. Para instalações padrão o banco de dados é SQLite e fica localizado em scriptcase/devel/conf/scriptcase/nm_scriptcase.db
Nota: Por medida de segurança, você precisa renomear este arquivo para config.php
para acessá-lo através do navegador.
diagnosis.php
: Diagnóstico do ambiente Scriptcase contendo informações gerais do servidor, desde parâmetros do PHP até bancos de dados disponíveis para conexão.
info.php
: Informações gerais do PHP utilizadas pelo diagnóstico.