1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Orbit</title>
<link rel="stylesheet" href="http://www.keplerproject.org/doc.css" type="text/css"/>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
</head>
<body>
<div id="container">
<div id="product">
<div id="product_logo">
<a href="http://www.keplerproject.org">
<img alt="Orbit" src="orbit.png"/>
</a>
</div>
<div id="product_name"><big><strong>Orbit</strong></big></div>
<div id="product_description">MVC desenvolvimento Web em Lua</div>
</div> <!-- id="product" -->
<div id="main">
<div id="navigation">
<h1>Orbit</h1>
<ul>
<li><a href="index.html">Home</a>
<ul>
</ul>
</li>
<li><strong>Pages</strong>
<ul>
</ul>
</li>
<li><a href="reference.html">Referência</a>
<ul>
</ul>
</li>
<li><a href="example.html">Tutorial</a>
<ul>
</ul>
</li>
<li><a href="license.html">Licença</a>
<ul>
</ul>
</li>
</ul>
</div> <!-- id="navigation" -->
<div id="content">
<h2>Orbit Pages</h2>
<p>Orbit Pages é um ambiente de programação similar ao PHP, construido sobre o Orbit.
As Orbit Pages são páginas HTML (mas que utilizam a extensão .op em uma instalação do Orbit típica)
que são convertidas dinamicamente em uma aplicação Orbit.
Elas são inicializadas pelos disparadores op.cgi, op.fcg e ophandler.lua,
para FastCGI e Xavante respectivamente. Uma instalação Kepler padrão,
inclui suporte para Orbit Pages por default. </p>
<p>Uma Orbit Page é também um template que utiliza a linguagem de template
<a href="http://cosmo.luaforge.net">Cosmo</a>. O ambiente deste template é uma <em>sandbox</em>
que envolve o ambiente global e é recriado cada vez que é solicitado.
A principal variável deste ambiente é a variável <code>web</code>, que é um objeto request/response do Orbit. </p>
<p>Outras variáveis importantes:</p>
<p><strong>mapper</strong> - uma instância default do Orbit ORM </p>
<p><strong>model(<em>name</em>, <em>dao</em>)</strong> - é o mesmo que mapper:new(<em>name</em>, <em>dao</em>), salvo quando <em>name</em>
é uma tabela, neste caso, chama mapper:new(<em>name[1]</em>, <em>name[2]</em>),
logo você pode utilizar isso no template como <code>$model{ name, dao }</code> </p>
<p><strong>app</strong> - é o ambiente global da aplicação, que deve ser usado como um cache de sessão
(para conexões de dados, por exemplo) para disparadores persistentes </p>
<p><strong>finish(<em>res</em>)</strong> - suspende a execução da página atual, e envia <em>res</em> como resposta
<strong>no lugar</strong> do conteúdo da página </p>
<p><strong>redirect(<em>target</em>)</strong> - o mesmo que web:redirect(<em>target</em>) seguido por finish(). Se <em>target</em>
for uma tabela, equivale a web:redirect(<em>target[1]</em>), então, você pode usar isto no template
como <code>$redirect{ target }</code> </p>
<p><strong>include(<em>page</em>, [<em>env</em>])</strong> - avalia o Orbit Page no arquivo <em>page</em>
(relativo ao path da página atual), com a opção de utilizar as variaveis em <em>env</em>
no ambiente do template. Também pode ser utilizado no template como <code>$include{ page, env }</code> </p>
<p><strong>forward(<em>page</em>, [<em>env</em>])</strong> - interrompe a execução da pagina atual,
avalia e envia a página no arquivo <em>page</em> no lugar; de outra forma o mesmo que <strong>include</strong> </p>
<p>Também existem outras poucas variaveis que deveriam ser usadas somente no template:</p>
<p><strong>$lua{ <em>code</em> }</strong> - roda <em>code</em> no mesmo ambiente que a página,
logo <em>code</em> pode mudar as variáveis do template e até mesmo definir novas </p>
<p><strong>$if{ <em>condition</em> }[[ <em>then-part</em> ]],[[ <em>else-part</em> ]]</strong> - se <em>condition</em> for verdade,
será subistituida pelo resultado da avaliação do template do <em>then-part</em>,
de outra forma <em>else-part</em>. <em>else-part</em> é opcional, sendo seu valor padrão definido como vazio </p>
<p><strong>$fill{ ... }[[ <em>template</em> ]]</strong> - substituída pela avaliação do <em>template</em> utilizando
o ambiente passado para preencher (<em>template</em> <strong>não</strong> herda as variáveis da página) </p>
<p>Abaixo vemos uma Orbit Page extremamente simples que mostra a maioria dos conceitos acima,
(incluindo o Cosmo, veja a documentação do Cosmo para maiores detalhes): </p>
<pre>
#!/usr/bin/env op.cgi
<html>
<body>
<p>Hello Orbit!</p>
<p>I am in $web|real_path, and the script is
$web|script_name.</p>
$lua{[[
if not web.input.msg then
web.input.msg = "nothing"
end
]]}
<p>You passed: $web|input|msg.</p>
$include{ "bar.op" }
</body>
</html>
</pre>
<p>A página <code>bar.op</code> que ela inclui é essa: </p>
<pre>
#!/usr/bin/env op.cgi
<p>This is bar, and you passed $web|input|msg!</p>
</pre>
<p>A distribuição do <a href="http://www.keplerproject.org">Kepler</a> tem exemplos mais completos que possuem
acesso ao banco de dados, POST, e até mesmo de alguns AJAX simples.</p>
</div> <!-- id="content" -->
</div> <!-- id="main" -->
<div id="about">
<p><a href="http://validator.w3.org/check?uri=referer">Valid XHTML 1.0!</a></p>
</div> <!-- id="about" -->
</div> <!-- id="container" -->
</body>
</html>
|