Changes between Initial Version and Version 1 of WF/Paginacao


Ignore:
Timestamp:
07/24/07 15:01:44 (17 years ago)
Author:
trac
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • WF/Paginacao

    v1 v1  
     1== Classe: wf_paging == 
     2 Esta classe tem a finalidade de paginar os resultados de uma busca e permitir sua ordenação. 
     3 
     4 
     5 
     6=== Métodos === 
     7 
     8==== configure ==== 
     9 
     10'''Descrição:''' Faz a configuração básica do paginador. 
     11 
     12'''Parâmetros:''' 
     13 
     14:$itensPorPagina: o número de itens por página. 
     15 
     16:$request: a variável que conterá informações sobre a página (número da página, tipo de ordenação, etc.) que está sendo exibida. Normalmente será {{$_GET}} ou {{$_POST}} (principalmente a primeira). 
     17 
     18'''Retorno''': <nenhum> 
     19 
     20'''Exemplo de uso:''' 
     21 
     22{{{ 
     23 
     24$paging = wf_create_object("wf_paging"); 
     25 
     26$paging->configure(10, $_GET); 
     27 
     28}}} 
     29 
     30---- 
     31 
     32==== useDatabase ==== 
     33 
     34'''Descrição:''' Indica se os resultados serão (ou não) obtidos através de um {{SELECT}} no banco de dados (BD). 
     35 
     36'''Parâmetros:''' 
     37 
     38:$flag: um booleano onde, {{true}} indica que será usado o BD e {{false}} que não será usado o BD. 
     39 
     40'''Retorno''': <nenhum> 
     41 
     42'''Exemplo de uso:''' 
     43 
     44{{{ 
     45 
     46$paging->useDatabase(true); 
     47 
     48}}} 
     49 
     50---- 
     51 
     52==== enableSorting ==== 
     53 
     54'''Descrição:''' Indica se será feita ordenação dos resultados. 
     55 
     56'''Parâmetros:''' 
     57 
     58:$flag: um booleano onde, {{true}} indica que será feita ordenação e {{false}} que a ordenação não será feita. 
     59 
     60'''Retorno''': <nenhum> 
     61 
     62'''Exemplo de uso:''' 
     63 
     64{{{ 
     65 
     66$paging->enableSorting(true); 
     67 
     68}}} 
     69 
     70---- 
     71 
     72==== setSortingTitles ==== 
     73 
     74'''Descrição:''' Define os campos possíveis para ordenação dos resultados. Deve ser utilizado caso a paginação tenha sido configurada para utilizar ordenação. 
     75 
     76'''Parâmetros:''' 
     77 
     78:$titulos: uma array de arrays associativas. Cada array associativa possui o seguinte formato: 
     79 
     80{{{ 
     81 
     82$titulo['name'] = 'Nome do Campo'; 
     83 
     84$titulo['id'] = 1; 
     85 
     86}}} 
     87 
     88Onde, o elemento {{id}} representa: 
     89 
     901.quando se usa BD: o número da ordem da coluna no {{SELECT}}. Exemplo, no comando SQL {{SELECT uid, sobrenome FROM usuario}}, para a coluna {{uid}} deve ser utilizado o valor 1, já para a coluna {{sobrenome}} deve ser utilizado o valor 2. Como pode ser percebido, no caso do BD, a primeira coluna possui valor 1 (e não zero). 
     91 
     921.quando não se usa BD: ('''AINDA NÃO ESTÁ IMPLEMENTADO''') a ordem do elemento na "linha". Exemplo, supondo que se tenha a variável $item com os valores: 
     93 
     94{{{ 
     95 
     96        $itens[] = array('nome' => 'José', 'uid' => 1); 
     97 
     98        $itens[] = array('nome' => 'João', 'uid' => 2); 
     99 
     100}}} 
     101 
     102:Para ordenar a variável $itens pelo nome, é necessário se passar o id com valor 0 (zero), e com valor 1 (um) para ordenar pelo uid. Como pode ser observado, neste caso, a primeira coluna inicia-se em 0 (zero). 
     103 
     104'''Retorno''': <nenhum> 
     105 
     106'''Exemplo de uso:''' 
     107 
     108{{{ 
     109 
     110$titulos = array(); 
     111 
     112$titulos[] = array('name' => 'UID', 'id' => 1); 
     113 
     114$titulos[] = array('name' => 'Nome', 'id' => 2); 
     115 
     116$titulos[] = array('name' => 'Telefone', 'id' => 3); 
     117 
     118$titulos[] = array('name' => 'Endereco', 'id' => 4); 
     119 
     120$paging->setSortingTitles($titulos); 
     121 
     122}}} 
     123 
     124---- 
     125 
     126==== restrictDBItems ==== 
     127 
     128'''Descrição:''' Pagina os resultados a partir de uma query. 
     129 
     130'''Parâmetros:''' 
     131 
     132:$db: link para a base de dados do projeto. 
     133 
     134:$query: {{SELECT}} que buscará os registros no BD. 
     135 
     136'''Retorno''': uma array com os itens que deverão ser exibidos. 
     137 
     138'''Exemplo de uso:''' 
     139 
     140{{{ 
     141 
     142$db = wf_create_object("wf_db"); 
     143 
     144$itens = $paging->restrictDBItems($db, "SELECT uid, nome, telefone FROM usuario"); 
     145 
     146}}} 
     147 
     148---- 
     149 
     150==== getSortingTitles ==== 
     151 
     152'''Descrição:''' Pega os links de ordenação. 
     153 
     154'''Parâmetros:''' <nenhum> 
     155 
     156'''Retorno''': uma array de arrays associativas. Cada array associativa possui o seguinte formato: 
     157 
     158{{{ 
     159 
     160$titulo['id'] = #id_da_coluna; //ex: 1 
     161 
     162$titulo['name'] = 'Título + Seta de Ordenação'; //ex: "Telefone + <Seta>" 
     163 
     164$titulo['original_name'] = 'Título'; //ex: "Telefone" 
     165 
     166$titulo['link'] = "http://link_para_a_página_com_ordenacao/"; //ex: "http://localhost/index.php?menuaction=workflow.cel_run_activity.go&activity_id=116&s_co=1&s_so=1" 
     167 
     168}}} 
     169 
     170'''Exemplo de uso:''' 
     171 
     172{{{ 
     173 
     174$linksOrdenacao = $paging->getSortingTitles(); 
     175 
     176}}} 
     177 
     178---- 
     179 
     180==== autoLinks ==== 
     181 
     182'''Descrição:''' Gera o código em HTML dos links de paginação. 
     183 
     184'''Parâmetros:''' 
     185 
     186:$numeroLinksPaginacao: número máximo de links de paginação que serão exibidos ao mesmo tempo (semelhante ao [http://www.google.com.br/ Google]). Este parâmetro é opicional e possui valor padrão igual a 10. 
     187 
     188:$formatoLink: formato do link (HTML). São utilizadas algumas meta-tags (ver abaixo) para especificar o formato do link. Este parâmetro é opicional. Valor padrão: <a href="%link%">%name%</a> 
     189 
     190:$formatoSelecionado: formato do link para a página atual (HTML). São utilizadas algumas meta-tags (ver abaixo) para especificar este formato. Este parâmetro é opicional. Valor padrão: <strong>%name%</strong> 
     191 
     192:$separador: o separador dos links. Por padrão é o caractere ' ' (espaço). 
     193 
     194'''Retorno''': código em HTML dos links de paginação. 
     195 
     196'''Meta-tags''': 
     197 
     198:%name%: nome do link. Normalmente assume os valores: próximo, anterior, 1, 2, 3, etc. 
     199 
     200:%link%: link da página. 
     201 
     202:%pageNumber%: número da página (na paginação). Inicia em 1 (um). 
     203 
     204:%p_page%: equivale a %pageNumber%-1. 
     205 
     206:%start%: número do primeiro item da página. 
     207 
     208:%end%: número do último item da página. 
     209 
     210'''Exemplo de uso:''' 
     211 
     212{{{ 
     213 
     214$linksPaginacao = $paging->autoLinks(10); 
     215 
     216}}} 
     217 
     218'''Exemplo de uso (2):''' 
     219 
     220{{{ 
     221 
     222$linksPaginacao = $paging->autoLinks(20, '<button on_click="paginar(%p_page%);return false;">%name%</button>', '<font color="red">%name%</font>', '<br>'); 
     223 
     224}}} 
     225 
     226---- 
     227 
     228== Exemplo de uso - Completo == 
     229 
     230No arquivo PHP: 
     231 
     232{{{ 
     233 
     234$titulosOrdenacao = array(); 
     235 
     236$titulosOrdenacao[] = array('name' => 'Matrícula', 'id' => "1"); 
     237 
     238$titulosOrdenacao[] = array('name' => 'Nome', 'id' => "2"); 
     239 
     240$titulosOrdenacao[] = array('name' => 'Telefone', 'id' => "3"); 
     241 
     242 
     243 
     244$paging = wf_create_object("wf_paging"); 
     245 
     246$paging->configure(10, $_GET); 
     247 
     248$paging->useDatabase(true); 
     249 
     250$paging->enableSorting(true); 
     251 
     252$paging->setSortingTitles($titulosOrdenacao); 
     253 
     254 
     255 
     256$db = wf_create_object("wf_db"); 
     257 
     258$itens = $paging->restrictDBItems($db, "SELECT uid, nome, telefone FROM usuario"); 
     259 
     260$db->disconnect(); 
     261 
     262 
     263 
     264$smarty->assign('titulosOrdenacao', $paging->getSortingTitles()); 
     265 
     266$smarty->assign('linksPaginacao', $paging->autoLinks()); 
     267 
     268$smarty->assign('itens', $itens); 
     269 
     270}}} 
     271 
     272 
     273 
     274No arquivo TPL: 
     275 
     276{{{ 
     277 
     278{$linksPaginacao} 
     279 
     280{if count($itens) == 0} 
     281 
     282        <center><strong>nenhum registro encontrado</strong></center> 
     283 
     284        <br/><br/> 
     285 
     286{else} 
     287 
     288        <table> 
     289 
     290        <tbody> 
     291 
     292                <tr> 
     293 
     294                {foreach from=$titulosOrdenacao item=tituloOrdenacao} 
     295 
     296                        <th><a href="{$tituloOrdenacao.link}">{$tituloOrdenacao.name}</a></th> 
     297 
     298                {/foreach} 
     299 
     300                </tr> 
     301 
     302                {foreach name="feItens" from=$itens item=item} 
     303 
     304                        <tr> 
     305 
     306                                <td>{$item.uid}</td> 
     307 
     308                                <td>{$item.nome}</td> 
     309 
     310                                <td>{$item.telefone}</td> 
     311 
     312                        </tr> 
     313 
     314                {/foreach} 
     315 
     316        </tbody> 
     317 
     318        </table> 
     319 
     320{/if} 
     321 
     322{$linksPaginacao} 
     323 
     324}}}