Hi everyone
I have been trying to work out how to create a sortable table without
AJAX [looking at progressive enhancement] as a first stage of a small
application I am writing as practice for teaching next semester.
Scenario:
The UNIT entity: unit(id, name, state_code, national_code) contains
data about units of study that are available to students.
I have successfully used the sfPropelPager to create a paginated table
of the results in an unsorted manner.
Problems:
Task 1) I wish to implement clickable headers that allow the user to
decide upon which column to sort by.
Task 2) Clicking a header twice reverses the sort
Task 3) Clicking a header three times cancels the sorting direction
and thus returns the data to the entered data order [unsorted]
Anyone give me the hints to help implement this?
Thanks
Ady
-------------------------------
In the /apps/frontend/modules/unit/actions/actions.class.php I have
[reduced for simplicity]:
class unitActions extends sfActions
{
public function executeIndex(sfWebRequest $request)
{
$this->unit_list = UnitPeer::doSelect(new Criteria());
}
public function executeList(sfWebRequest $request)
{
$c = new Criteria();
$c->addAscendingOrderByColumn(UnitPeer::NAME);
$pager = new sfPropelPager('Unit', 10);
$pager->setCriteria($c);
$pager->setPage($this->getRequestParameter('page', 1));
$pager->init();
$this->unit_list = $pager;
}
}
-----------
In the /apps/frontend/modules/unit/templates/listSuccess.php file:
<?php echo $unit_list->getNbResults() ?> results found.<br />
Displaying results <?php echo $unit_list->getFirstIndice() ?> to <?
php echo $unit_list->getLastIndice() ?>.
<table cellspacing="0">
<thead>
<tr>
<th class="state">State code</th>
<th class="national">National code</th>
<th class="name">Name</th>
<th class="nominal">Nominal hours</th>
</tr>
</thead>
<tbody>
<?php $i=0;
foreach ($unit_list->getResults() as $unit): ?>
<tr class="<?php echo ($i=($i==0?1:0)) ? 'even' : 'odd' ?>">
<td><?php echo $unit->getStateCode() ?></td>
<td><?php echo $unit->getNationalCode() ?></td>
<td><a href="<?php echo url_for('unit/show?id='.$unit-
>getId()) ?>"><?php echo $unit->getName() ?></td>
<td><?php echo $unit->getNominalHours() ?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
<?php if ($unit_list->haveToPaginate()): ?>
<?php echo link_to('«', 'unit/list?page='.$unit_list-
>getFirstPage()) ?>
<?php echo link_to('<', 'unit/list?page='.$unit_list-
>getPreviousPage()) ?>
<?php $links = $unit_list->getLinks(10); foreach ($links as
$page): ?>
<?php echo ($page == $unit_list->getPage()) ? $page :
link_to($page, 'unit/list?page='.$page) ?>
<?php if ($page != $unit_list->getCurrentMaxLink()): ?> - <?php
endif ?>
<?php endforeach ?>
<?php echo link_to('>', 'unit/list?page='.$unit_list-
>getNextPage()) ?>
<?php echo link_to('»', 'unit/list?page='.$unit_list-
>getLastPage()) ?>
<?php endif ?>
Adrian Gould
[email protected]
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"symfony users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/symfony-users?hl=en
-~----------~----~----~----~------~----~------~--~---