Version 7 (modified by viani, 17 years ago) (diff) |
---|
Classe: wf_paging
Esta classe tem a finalidade de paginar os resultados de uma busca e permitir sua ordenação.
Métodos
configure
Descrição: Faz a configuração básica do paginador.
Parâmetros:
$itensPorPagina: o número de itens por página.
$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).
Retorno: <nenhum>
Exemplo de uso:
$paging = wf_create_object("wf_paging"); $paging->configure(10, $_GET);
useDatabase
Descrição: Indica se os resultados serão (ou não) obtidos através de um {{SELECT}} no banco de dados (BD).
Parâmetros:
$flag: um booleano onde, {{true}} indica que será usado o BD e {{false}} que não será usado o BD.
Retorno: <nenhum>
Exemplo de uso:
$paging->useDatabase(true);
enableSorting
Descrição: Indica se será feita ordenação dos resultados.
Parâmetros:
$flag: um booleano onde, {{true}} indica que será feita ordenação e {{false}} que a ordenação não será feita.
Retorno: <nenhum>
Exemplo de uso:
$paging->enableSorting(true);
setSortingTitles
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.
Parâmetros:
$titulos: uma array de arrays associativas. Cada array associativa possui o seguinte formato:
$titulo['name'] = 'Nome do Campo'; $titulo['id'] = 1;
Onde, o elemento {{id}} representa:
1.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).
1.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:
$itens[] = array('nome' => 'José', 'uid' => 1); $itens[] = array('nome' => 'João', 'uid' => 2);
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).
Retorno: <nenhum>
Exemplo de uso:
$titulos = array(); $titulos[] = array('name' => 'UID', 'id' => 1); $titulos[] = array('name' => 'Nome', 'id' => 2); $titulos[] = array('name' => 'Telefone', 'id' => 3); $titulos[] = array('name' => 'Endereco', 'id' => 4); $paging->setSortingTitles($titulos);
restrictDBItems
Descrição: Pagina os resultados a partir de uma query.
Parâmetros:
$db: link para a base de dados do projeto.
$query: {{SELECT}} que buscará os registros no BD.
Retorno: uma array com os itens que deverão ser exibidos.
Exemplo de uso:
$db = wf_create_object("wf_db"); $itens = $paging->restrictDBItems($db, "SELECT uid, nome, telefone FROM usuario");
getSortingTitles
Descrição: Pega os links de ordenação.
Parâmetros: <nenhum>
Retorno: uma array de arrays associativas. Cada array associativa possui o seguinte formato:
$titulo['id'] = #id_da_coluna; //ex: 1 $titulo['name'] = 'Título + Seta de Ordenação'; //ex: "Telefone + <Seta>" $titulo['original_name'] = 'Título'; //ex: "Telefone" $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"
Exemplo de uso:
$linksOrdenacao = $paging->getSortingTitles();
autoLinks
Descrição: Gera o código em HTML dos links de paginação.
Parâmetros:
$numeroLinksPaginacao: número máximo de links de paginação que serão exibidos ao mesmo tempo (semelhante ao Google). Este parâmetro é opicional e possui valor padrão igual a 10.
$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>
$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>
$separador: o separador dos links. Por padrão é o caractere ' ' (espaço).
Retorno: código em HTML dos links de paginação.
Meta-tags:
%name%: nome do link. Normalmente assume os valores: próximo, anterior, 1, 2, 3, etc.
%link%: link da página.
%pageNumber%: número da página (na paginação). Inicia em 1 (um).
%p_page%: equivale a %pageNumber%-1.
%start%: número do primeiro item da página.
%end%: número do último item da página.
Exemplo de uso:
$linksPaginacao = $paging->autoLinks(10);
Exemplo de uso (2):
$linksPaginacao = $paging->autoLinks(20, '<button on_click="paginar(%p_page%);[[BR]] return false;">%name%</button>', '<font color="red">%name%</font>', '<br>');
Exemplo de uso - Completo
No arquivo PHP:
$titulosOrdenacao = array(); $titulosOrdenacao[] = array('name' => 'Matrícula', 'id' => "1"); $titulosOrdenacao[] = array('name' => 'Nome', 'id' => "2"); $titulosOrdenacao[] = array('name' => 'Telefone', 'id' => "3"); $paging = wf_create_object("wf_paging"); $paging->configure(10, $_GET); $paging->useDatabase(true); $paging->enableSorting(true); $paging->setSortingTitles($titulosOrdenacao); $db = wf_create_object("wf_db"); $itens = $paging->restrictDBItems($db, "SELECT uid, nome, telefone FROM usuario"); $db->disconnect(); $smarty->assign('titulosOrdenacao', $paging->getSortingTitles()); $smarty->assign('linksPaginacao', $paging->autoLinks()); $smarty->assign('itens', $itens);
No arquivo TPL:
{$linksPaginacao} {if count($itens) == 0} <center><strong>nenhum registro encontrado</strong></center> <br/><br/> {else} <table> <tbody> <tr> {foreach from=$titulosOrdenacao item=tituloOrdenacao} <th><a href="{$tituloOrdenacao.link}">{$tituloOrdenacao.name}</a></th> {/foreach} </tr> {foreach name="feItens" from=$itens item=item} <tr> <td>{$item.uid}</td> <td>{$item.nome}</td> <td>{$item.telefone}</td> </tr> {/foreach} </tbody> </table> {/if} {$linksPaginacao}