Estrutura básica
Há dois tipos de registro na base dbn: o registro PAI e o registro FILHO.
O registro PAI faz a listagem das ocorrências dos registros FILHO, apresentado informações do registro FILHO;
O registro FILHO faz um link para o registro PAI, apresentando informações do registro PAI.
1. Para fazer a lista de referências do FILHO, são usados os seguintes arquivos:
/cgi-bin/simples.pft
/cgi-bin/wxis_modules/ref_link.xis
/bases/par/<dbn>.par // Adicionar os .pft e os caminhos das duas bases do ref_link.xis
/bases/<dbn>/data/<dbn>.fst // Ajustar indexação
/bases/<dbn>/pfts/<lang>/server.pft // Caminho do servidor, chamado nos outros arquivos
/bases/<dbn>/pfts/<lang>/<dbn>.pft // Visualização da ligação, colocar o iframe e o botão para listar os FILHOS
2. Para fazer o link para o PAI, são usados os seguintes arquivos:
/bases/par/<dbn>.par // Adicionar os .pft
/bases/<dbn>/data/<dbn>.fst // Ajustar indexação
/bases/<dbn>/pfts/<lang>/server.pft // Caminho do servidor, chamado nos outros arquivos
/bases/<dbn>/pfts/<lang>/<dbn>.pft // Visualização da ligação com o PAI, colocar ',@doc-principal.pft,’
/bases/<dbn>/pfts/<lang>/doc-principal.pft // em algumas bases é qualifiers_links.pft
Arquivos específicos
/cgi-bin/simples.pft
O que faz: Gera a lista de referências do documento FILHO.
Observações: Apresenta apenas os dados do registro filho. Os cabeçalhos (nome dos campos) ficam no ref_link.xis. É o formato gerado dentro do iframe do ref_link.xis.
Deve haver um simples.pft para cada tipo de referência na mesma base ou para cada base na instalação do ABCD que tenha referências.
O nome do arquivo e as ocorrências dentro do ref_link.xis dele devem ter os nomes trocados, caso haja outra ligação entre registros.
| dbn | Nome da base |
| pft | Nome do formato (sem .pft) de exibição do registro FILHO, quando clicar no link |
| server | Nome do servidor (não funciona @server.pft) |
| formato | Os formatos devem ser substituídos pelos campos do registro FILHO, apresentados em forma de tabela. O link para o registro está no mfn e os cabeçalhos estão no ref_link.xis. |
Conteúdo:
[pft] '<td class="estilo"><a href="http://server/central/dataentry/fmt.php?Opcion=ver&base=dbn&cipar=dbn.par&Mfn='mfn'&ver=S&Formato=pft" target="_blank" class="estilo" title="">'mfn,'</a></td>' '<td class="estilo">'mhl,v117[1],'</td>' '<td class="estilo">'mhl,v119[1],'</td>' '<td class="estilo">'mhl,v153[1],'</td>' '<td class="estilo">'mhl,v122*6.2,"/"v122*4.2,"/"v122*0.4,'</td>' '<td class="estilo">'mhl,v124[1],'</td>' '<td class="estilo">'mhl,v125[1],'</td>' [/pft]
/cgi-bin/wxis_modules/ref_link.xis
O que faz: Faz ligação entre o documento PAI e seus FILHOS.
Observações: Gera o conteúdo do iframe no registro PAI.
| dbn | Nome da base |
| server | Nome do servidor (não funciona @server.pft) |
| estilo | Nome do arquivo .css |
| ACERVO | deve ser trocado caso haja mais de uma referência na mesma instalação do ABCD. O caminho deve estar no <dbn>.par |
| GIZMO | deve ser mantido. O caminho deve estar no <dbn>.par |
| ref_link.xis | para cada base/referência deve haver um ref_link. O nome do arquivo e as ocorrências dentro dele devem ter os nomes trocados, caso haja outra ligação entre registros. |
| simples | também devem haver um para cada base/referência. O nome do arquivo e as ocorrências dentro dele devem ter os nomes trocados, caso haja outra ligação entre registros. |
| formato | os formatos devem ser substituídos pelos nomes dos campos do registro FILHO, apresentados em forma de tabela. O conteúdo dos campos está no simples.pft. |
Conteúdo:
<IsisScript name="ref_link.xis">
<section>
<display><pft>'Content-type: text/html'/#</pft></display>
<display>
<html>
<head>
<link rel="stylesheet" type="text/css" href="http://server/bases/dbn/styles/estilo.css" />
<title></title>
</head>
<body>
</display>
<field action="cgi" tag="3001">expressao1</field>
<field action="cgi" tag="3011">operador1</field>
<field action="cgi" tag="3002">expressao2</field>
<field action="cgi" tag="3012">operador2</field>
<field action="cgi" tag="3003">expressao3</field>
<field action="cgi" tag="2002">formato</field>
<field action="cgi" tag="2003">exibir</field>
<field action="cgi" tag="2004">proximo</field>
<field action="cgi" tag="2010">lista</field>
<field action="cgi" tag="2051">formulario</field>
<field action="cgi" tag="5001">base</field>
<field action="cgi" tag="5002">cipar</field>
<!-- Carrega parametros enviados pela PFT da base -->
<parm name="cipar"><pft>,cat(v5002),</pft></parm>
<!-- Tratamento de erro -->
<flow action="jump"><pft>if a(v3001) and a(v2010) then 'ERRO2' fi</pft></flow>
<field action="replace" tag="2002"><pft>if a(v2002) then 'simples' else v2002 fi</pft></field>
<field action="replace" tag="2003"><pft>if val(v2003)<1 then '25' else v2003 fi</pft></field>
<field action="replace" tag="2004"><pft>if val(v2004)<1 then '1' else v2004 fi</pft></field>
<label>Saber</label>
<field action="replace" tag="5010">
<pft>
if v2051:'FORM' then
v3001,if p(v3001) then if p(v3002) or p(v3003) then v3011 fi,fi,v3002,
if p(v3002) and p(v3003) then v3012 fi,v3003
else
if p(v3001) then
if p(v3011) then
replace(v3001,' ',v3011)
else
v3001
fi,
else
v2010+|+|
fi,
fi,
</pft></field>
<do task="search">
<parm name="db">ACERVO</parm>
<parm name="gizmo">GIZMO</parm>
<parm name="expression">
<pft>v5010</pft>
</parm>
<parm name="reverse">Off</parm>
<field action="define" tag="1001">Isis_Current</field>
<field action="define" tag="1002">Isis_Total</field>
<loop>
<list action="load" type="list">
<pft>
''mhu,'^k',mfn, '^m'mfn,
</pft>
</list>
</loop>
</do>
<!-- AGPOA - INICIO DA VISUALIZACAO DOS RESULTADOS-->
<!--<display><pft>'from: 'v2004'<br>count: 'v2003'<br>'</pft></display-->
<!--display><pft>'<h4>expressão: 'v5010'</h4>'</pft></display-->
<display>
<form name="resultado" action="wxis.exe" method="get" onSubmit="return verifica()">
<input type="hidden" name="IsisScript" value="ref_link.xis">
<input type="hidden" name="nextAction" value="refine/resubmit">
<table>
<tr>
<td></td>
</display>
<display>
<pft>
if v2002:'simples' then
'<th class="ahmcs listaSuporte">MFN</th>'
'<th class="ahmcs listaSuporte">FG</th>'
'<th class="ahmcs listaSuporte">CDR-FG</th>'
'<th class="ahmcs listaSuporte">CD</th>'
'<th class="ahmcs listaSuporte">Data</th>'
'<th class="ahmcs listaSuporte">Tema</th>'
'<th class="ahmcs listaSuporte">Subtema</th></tr>'
fi
</pft>
</display>
<display>
</display>
<do task="list">
<field action="define" tag="1001">Isis_Current</field>
<field action="define" tag="199">Isis_Item</field>
<parm name="sort"><pft>v199^k</pft></parm>
<parm name="count"><pft>v2003</pft></parm>
<parm name="from"><pft>v2004</pft></parm>
<loop>
<field action="import" tag="list">1002/2999</field>
<do task="mfnrange">
<parm name="db">ACERVO</parm>
<parm name="from"><pft>v199^m</pft></parm>
<parm name="count">1</parm>
<loop>
<field action="import" tag="list">1000/2999</field>
<display>
<htmlpft><pft>
'<tr><td>'
'<span class="destaque">' '[pft]V1001[/pft]' '. </span>'
if v2002:'simples' then
cat('simples.pft')
fi,
</pft></htmlpft>
</display>
</loop> <!--fim do loop mfnrange-->
</do>
</loop> <!--fim do loop task-->
</do>
<display><pft>
</pft></display>
<display>
<pft>
'<tr><td>'
'<input type="Hidden" name="formato" value="'v2002'">'
if val(v1002)>0 then '<!--<input class="botao" type="Submit" value=" Exibir selecionados">-->' else 'Nenhum registro recuperado!' fi,
'<br /><br /> </form>
</table>
<!--<input type="button" class="botao" name="imprimir" align="middle" id="imprimir" value="Imprimir" onclick="print()" /></td></tr>-->'
</pft>
</display>
<!-- FIM DA VISUALIZACAO DOS RESULTADOS -->
<display><pft>
'<span class="etiqueta">Total: </span><span class="destaque">'v1002' </span>' if v1002='1' then 'registro.' else 'registros.' fi,'<br/>'
'<!--<a href="'v5000,
if v2051:'FORM' then
'JanelaPesquisa.htm'
else
'indexflo.htm'
fi,
'"><img src="'v5000'img/find.png" alt="Pesquisar" border="0">Nova Pesquisa</a>-->'
</pft>
</display>
<flow action="jump">FIM</flow>
<label>ERRO</label>
<display>Selecione ao menos uma das bases listadas.</display>
<flow action="jump">FIM</flow>
<label>ERRO1</label>
<display>O registro final é menor do que o registro inicial.</display>
<flow action="jump">FIM</flow>
<label>ERRO2</label>
<display>
Informe a expressão de pesquisa<br>ou<br>Selecione ao menos um item para exibição.<br><br>
<input class="botao" type="button" value="Voltar" onclick="history.go(-1)">
</display>
<flow action="jump">FIM</flow>
<label>FIM</label>
<!-- Para a execução e sai -->
<display>
</td></tr></table></display>
<display>
<pft>
if val(v1002)>0 then
if val(v1001)<val(v1002) then
'<hr color="#660000" width="90%">
<table>
<tr>
<td>
<a href="javascript:history.back();">
</td>
<td>
<form action="http://cgi-bin/wxis.exe" method="post">
<input type="hidden" name="IsisScript" value="ref_link.xis">
<input type="hidden" name="expressao" value="
'replace(v2001,' ','*'),v2000,
if p(v2004) then v2002,replace(v2004,' ','*'),v2003, fi,
if p(v2007) then v2005,replace(v2007,' ','*'),v2006, fi
'">
<input type="hidden" name="campo1" value="'v2000'">
<input type="hidden" name="expressao1" value="'v3001'">
<input type="hidden" name="operador1" value="'v3011'">
<input type="hidden" name="campo2" value="'v2003'">
<input type="hidden" name="expressao2" value="'v2004'">
<input type="hidden" name="operador2" value="'v3012'">
<input type="hidden" name="campo3" value="'v2006'">
<input type="hidden" name="expressao3" value="'v3003'">
<input type="hidden" name="controle" value="AN="'v900'">
<input type="hidden" name="quantidade" value="'v2009'">
<input type="hidden" name="lista" value="AN='v2010'">
<input type="hidden" name="proximo" value="'f(val(v2004)+25,0,0)'">
<input type="image" src="http://teste.isishome.net/img/avancar.png" value="Avançar" alt="Avançar">
</td>
</tr>
</table>
</body>'
else
if val(v1001)=val(v1002) then
fi fi fi
</pft>
</display>
<flow action="exit">fim</flow>
</section>
</IsisScript>
/bases/par/<dbn>.par
O que faz: Indica os caminhos dos paâmetros da base.
Observações: Deve-se adicionar os .pft e as bases do ref_link.xis.
| dbn | deve ser trocado pelo nome da base |
| caminho-fisico | deve ser trocado pelo caminho físico do servidor, incluindo a / inicial. Exemplo: /var/www/abcd |
| ACERVO | deve ser o mesmo que está em ref_link.xis |
| GIZMO | deve ser mantido assim |
Conteúdo:
// Acrescentar ao conteúdo já existente doc-principal.pft=%path_database%dbn/pfts/pt/doc-principal.pft server.pft=%path_database%dbn/pfts/pt/server.pft GIZMO.*=caminho-fisico/bases/gizmo/pt/qlf850.* ACERVO.*=caminho-fisico/bases/dbn/data/dbn.*
/bases/<dbn>/data/<dbn>.fst
O que faz: Configuração da indexação da base.
Observações: Além dos campos que fazem a ligação, pelo menos os campos que são exibidos (no doc-principal.pft e no simples.pft) devem estar indexado.
| 1 e v1 | Campo com número/código único na base, geralmente o v1, mesmo, é o número de controle. Deve ser preenchido no registro PAI. Pode ser preenchido no registro FILHO (cada um com seu número, claro). |
| ‘SG’ | Sigla arbitrária. Não alterar. |
| 773 e v773^w | Campo preenchido apenas no registro FILHO, com o código do v1 do registro PAI. Pode ser qualquer campo, desde que alterado em todos os outros arquivos. |
| |NE_|v773^w | Sigla que deve estar na <dbn>.pft em <input type=”hidden” value=”NE_’v1′” name=”expressao1″> |
Conteúdo:
// Acrescentar ao conteúdo já existente, no início do arquivo. 1 0 'SG'v1 773 0 (v773^w/) 773 0 |NE_|v773^w
/bases/<dbn>/pfts/<lang>/server.pft
O que faz: Especifica o caminho do servidor, utilizado no ref_link.xis e no doc-principal.pft.
Observações: Incluir a barra ao final.
Conteúdo:
‘http://caminho.do/servidor/’
/bases/<dbn>/pfts/<lang>/<dbn>.pft
O que faz: Exibe os campos do registro.
Observações: Colocar o código desejado da PFT, acrescentando os trechos abaixo nos lugares das referências.
| dbn | Nome da base |
| caminho-fisico | Caminho físico do servidor, incluindo a / inicial. Exemplo: /var/www/abcd |
| NE_’v1′ | NE_ é o prefixo do campo preenchido apenas no registro FILHO, com o código do v1 do registro PAI. Deve estar no <dbn>.fst. |
| ref_link.xis | Para cada base/referência deve haver um ref_link. O nome do arquivo e as ocorrências dentro dele devem ter os nomes trocados, caso haja outra ligação entre registros. |
| formato | Formatação PFT, conforme a base. Preferencialmente, colocar condicional de presença ou de ausência de campos que tenham em apenas um dos tipos de registro. |
| nome-do-botão | Nome do botão para exibir registros FILHOS. Exemplo: “Ver entrevistas”. |
Conteúdo:
// Para exibir link para o registro PAI.
if p(v154) and a(v100) then
'<tr class="estilo"><td class="estilo">',@doc-principal.pft,'</td></tr>'
fi,
// Para exibir link para o registro FILHO.
if a(v154) and p(v100) then
'<tr>
<th class="estilo"><br />
<form action="/cgi-bin/wxis.exe" method="post" target="tela" id="tela">
<input type="hidden" name="IsisScript" value="wxis-modules/ref_link.xis">
<input type="hidden" value="NE_'v1'" name="expressao1">
<!-- Input para executar o cgi-bin/wxis-modules/ref_link.xis -->
<input type="hidden" value="dbn" name="base">
<input type="hidden" value="caminho-fisico/bases/par/'v5001'.par" name="cipar">
'if a(v154) then
'<input name="buscar" type="submit" value="nome-do-botão" target="tela" class="estilo" title="">
</form></th>
<td><iframe frameborder="0" id="tela" name="tela" width="100%" height="150px"></iframe></td>
</tr>'fi/
fi,
/bases/<dbn>/pfts/<lang>/doc-principal.pft
O que faz: Exibe o link para o registro PAI.
| condicional | Incluir uma condicional para apresentação do link. Preferencialmente com ausência ou presença de campos que existam apenas no registro FILHO. |
| dbn | Nome da base |
| caminho-fisico | Caminho físico do servidor, incluindo a / inicial. Exemplo: /var/www/abcd |
| ‘SG’v999 | Sigla e campo arbitrários. Não alterar. |
| v773^w | Campo preenchido apenas no registro FILHO, com o código do v1 do registro PAI. Pode ser qualquer campo, desde que alterado em todos os outros arquivos. |
| v260 | Qualquer campo, desde que exista apenas no registro PAI. Se for preenchido no registro FILHO, não funcionará. |
| pft | Nome do formato (sem .pft) de exibição do registro PAI, quando clicar no link. |
| formato | Formatação do que será o link para o registro PAI. Colocar campos que estejam no registro PAI (mas não há problema em estar também no FILHO). |
Conteúdo:
(if p(v773^w) then '<a href="',@server.pft,'central/dataentry/fmt.php?Opcion=ver&base=dbn&cipar=dbn.par&Mfn='ref(l(['caminho-fisico/bases/dbn/data/dbn']'SG'v999,v773^w,v260),mfn)' &ver=S&Formato=pft" class="estilo" target="_blank" title="">'ref(l(['caminho-fisico/bases/dbn/data/dbn']'SG'v999,v773^w,v260),v245^a, v245^g,' <span class="destaque">MFN: </span>'mfn)'</a>' fi,)' '
Exemplos
MAJSA: são registrados entrevistas e entrevistados
MAJSA: Banco de memória o Arquivo Histórico de Caxias. Fazem referência entre entrevistado e entrevistas cedidas.
Campos:
v1: Controle (preenchido em todos os registros)
v154: Controle do entrevistado (preenchido na ENTREVISTA, com o v1 do ENTREVISTADO)
v100: Nome do entrevistado (ENTREVISTADO)
v101 e v102: Nascimento e morte do entrevistado (ENTREVISTADO)
v124: Tipo de entrevista (ENTREVISTA)
O registro da entrevista v1=1, chama o entrevistado v154=52.
Na ENTREVISTA, aparecem o nome (v100) e datas de nascimento (v101) e morte (v102) do ENTREVISTADO, a partir do v154 preenchido.
No ENTREVISTADO, aparece a listagem das ENTREVISTAS, com FG (v117), CDR-FG (v119), CD (v153), Data (v122), Tema (v124) e Subtema (v125) da ENTREVISTA.
Em ambos os casos o documento referenciado abre em nova aba do navegador.
Exemplos:
ENTREVISTA ENTREVISTADO
