Class: DataGrid

Generates tables of data with automatic next/previous paging, sorting
by column headers, and add/edit/delete capabilities (via linking to
specified URLs. Also handles the retrieval of the data from the
specified table automatically.


Usage Example


<?php

loader_import 
('saf.GUI.DataGrid');

$dg = new DataGrid (
  
'sitellite_user',
  array (
       
'username' => 'User ID',
       
'lastname' => 'Last Name',
       
'firstname' => 'First Name',
       
'company' => 'Company',
       
'email' => 'Email Address',
  )
);

page_title ('Member List');

$dg->setEditUrl ('/index/user-edit-action');
$dg->setDeleteUrl ('/index/user-delete-action');
$dg->setAddUrl ('/index/user-add-action');

echo 
$dg->draw ();

?>

Return to Top



Properties


$template = '

{if obj.addUrl}
    <p><a href="{addUrl}?collection={collection}">{intl Add Item}</a></p>
{end if}

{alt #eee #fff}

{if obj.deleteUrl}
<script language="javascript" type="text/javascript">

var datagrid_select_switch = false;

function datagrid_select_all (f) {
    if (datagrid_select_switch == false) {
        for (i = 0; i < f.elements.length; i++) {
            f.elements[i].checked = true;
            datagrid_select_switch = true;
        }
    } else {
        for (i = 0; i < f.elements.length; i++) {
            f.elements[i].checked = false;
            datagrid_select_switch = false;
        }
    }
    return false;
}

function datagrid_confirm_delete () {
    return confirm (\'{intl Are you sure you want to delete the selected items?}\');
}

</script>

<form method="post" action="{deleteUrl}">
<input type="hidden" name="collection" value="{collection}" />
{filter none}
{rememberHiddenValues}
{end filter}
{end if}

{filter none}{header}{end filter}

<table border="0" cellpadding="3" width="100%">
    <tr>
        <td>{spt PAGER_TEMPLATE_FROM_TO}</td>
        <td align="right">{if pager.total}{spt PAGER_TEMPLATE_PREV_PAGE_LIST_NEXT}{end if}</td>
    </tr>
</table>

<table border="0" cellpadding="2" cellspacing="1" width="100%">
    <tr style="background-color: {alt/next}">
        {if obj.deleteUrl}
            <th width="52" valign="bottom">
                <input type="image" src="{site/prefix}/inc/app/cms/pix/icons/select-all.gif" alt="{intl Select All}" title="{intl Select All}" border="0" onclick="return datagrid_select_all (this.form)" />&nbsp;
                <input type="image" src="{site/prefix}/inc/app/cms/pix/icons/delete.gif" alt="{intl Delete Selected}" title="{intl Delete Selected}" border="0" onclick="return datagrid_confirm_delete ()" />
            </th>
        {end if}
        {loop obj.headers}
            {if in_array (loop.name, obj.skipHeaders)}
                <th>{loop/fullname}</th>
            {end if}
            {if else}
                <th><a href="{site/current}?offset={cgi/offset}&orderBy={loop/name}&sort={loop/getSort}{rememberParams}">{loop/fullname}</a>
                {if loop.isCurrent ()}
                    <img src="{site/prefix}/inc/app/cms/pix/arrow.{cgi/sort}.gif" alt="{cgi/sort}" border="0" />
                {end if}
                </th>
            {end if}
        {end loop}
    </tr>
    {loop obj.list}
        <tr style="background-color: {alt/next}">
            {if obj.deleteUrl}
                <td align="center"><input type="checkbox" name="items[]" value="{loop/_key}" /></td>
            {end if}
            {loop loop._properties}
                {if in_array (loop._key, array_keys (obj.headers))}
                {if obj.editUrl and loop._key eq obj.first_field}
                    <td>
                        <a href="{editUrl}?collection={collection}&item={parent/_key}{rememberParams}">{filter datagrid_filter}{loop/_value}{end filter}</a>
                    </td>
                {end if}
                {if else}
                    <td>
                        {filter datagrid_filter}{loop/_value}{end filter}
                    </td>
                {end if}
                {end if}
            {end loop}
        </tr>
    {end loop}
</table>

{filter none}{footer}{end filter}

{if obj.deleteUrl}
</form>
{end if}

    '


$fill

  • Access: public

The object or associative array to use to fill the template with upon
calling render().


$span

  • Access: public

The span of this cell. Set to -1 and the cell will disappear. Use
$this->attrs['colspan'] or ['rowspan'] to set these properties in the
corresponding HTML <td> tag.


$attrs = array ()

  • Access: public

Contains all HTML <td> properties for the current object.


$default

  • Access: public

$default is an optional default value to place in cells whose
templates result in no output.


$type = 'db'


$collection


$limit


$fields


$total = 0


$list = false


$remember = array ()


$skipHeaders = array ()


$header = ''


$footer = ''


$editUrl = false


$addUrl = false


$deleteUrl = false


$error

Return to Top



Methods


DataGrid ($collection, $fields, $limit = false)


primaryKey ($field)


setEditUrl ($url)


setAddUrl ($url)


setDeleteUrl ($url)


skipHeader ($name)


rememberValue ($name, $value = false)


rememberParams ()

  • Access: private


rememberHiddenValues ()

  • Access: private


filter ($name, $func = false)


getList ()


draw ()

Return to Top

Copyright © 2008 Sitellite CMS Project

Powered by Sitellite 5.0 Content Management System