Entendendo a estrutura de pastas do Scriptcase

Editor Mestre Scriptcase
Mestre Scriptcase
Published in
8 min readAug 10, 2019

--

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.

Se você achou esse artigo útil, vá até o botão 👏 e clique quantas vezes você gostou de ler esse post. Isso certamente irá longe. Sinta-se livre para deixar um comentário/sugestão. Você também pode nos achar no Facebook, Instagram e Youtube. Juntos por um Scriptcase melhor!

--

--