Sorting Listings: Difference between revisions
| Line 84: | Line 84: | ||
*<code>data-p</code> Index of the first record displayed on the page. Starts with 1. (For page 1 the value is 1. For page 10 with 5 records per page the <code>data-p</code> value is 51.) | *<code>data-p</code> Index of the first record displayed on the page. Starts with 1. (For page 1 the value is 1. For page 10 with 5 records per page the <code>data-p</code> value is 51.) | ||
tr element attributes | tr element attributes | ||
===Sortable element attributes=== | |||
*<code>id="#rr-[SECTION_ID]-[RECORD_ID]"</code> For each sortable row. | *<code>id="#rr-[SECTION_ID]-[RECORD_ID]"</code> For each sortable row. | ||
*<code>class="rec-row"</code> For each row that is sortable. | *<code>class="rec-row"</code> For each row that is sortable. | ||
*<code>data-rid</code> Record id value. | *<code>data-rid</code> Record id value. | ||
Revision as of 01:55, 11 February 2012
Sections CMS
- Hostmgr > Sections
- Is Sortable: checked
- Sorting URI:
/hostmgr/_ajax/utils/resort.php(default shared AJAX handler script)
JavaScript
Shared JS library must be included on the page:
/scripts/littled/listings.js
Assign the sorting function to the LITTLED.setSortables property:
LITTLED.init({ setSortables: [SORTING_FUNCTION]});
LITTLED.setSortables();
A JQuery sorting initialization routine would be something like this:
$('#listings-table').sortable({
items: 'tr.rec-row',
start: function(event, ui) {
var id = ui.helper.attr('data-rid');
if (!id) {return;} /* parent record id not set */
var $c = $('#pages-row-' + id);
if ($c.length < 1) {return;} /* child row not available */
/* hide children as the parent is dragged */
if ($c.is('visible')) {
$c.addClass('reopen');
$c.hide();
}
},
update: LITTLED.Listings.resort
});
A default resort initialization is defined within the LITTLED.Listings library:
LITTLED.Listings.bindResort()
To use a default resort (the selectors referenced above would need to be present with the page’s markup):
$(document).ready(function() {
LITTLED.init({ setSortables: LITTLED.Listings.bindResort });
LITTLED.setSortables();
});
For albums, LITTLED.Gallery.bindAlbumListingsHandlers will initialize resorting for the listings.
PHP
/_classes/site_content/cache_class.php
Add include directives for both the parent page’s content and content filter classes:
require_once (APP_CLASS_DIR."site_content/press_class.php"); require_once (APP_CLASS_DIR."site_filters/press_filters_class.php");
Update the set_filters() routine to include the filter class representing the page’s content type.
/_classes/site_content/cache_class.php
Potentially no changes need to be made to this class on a content-type-by-content-type basis as long as the default action for all content types is
if ($this->filters instanceof filters_collection_class)
{
$this->filters->parse_filters();
$this->filters->page_len->value = null; /* get all available records */
}
If some other action needs to be taken for a specific content type then a new case would need to be created in the retrieve_section_properties() routine.
Paging is handled with
include (COMMON_TEMPLATE_DIR."framework/navigation/listings_page_links.php");
HTML/CSS
List selectors, CSS classes, and HTML element attributes necessary for resorting.
Sortable container attributes
(either TABLE or DIV)
id="listings-table"Selector used to identify table containing sortable rows.data-tidValue is the content type of the records contained in the table that can be sorted.data-pIndex of the first record displayed on the page. Starts with 1. (For page 1 the value is 1. For page 10 with 5 records per page thedata-pvalue is 51.)
tr element attributes
Sortable element attributes
id="#rr-[SECTION_ID]-[RECORD_ID]"For each sortable row.class="rec-row"For each row that is sortable.data-ridRecord id value.id="pages-row-[XXX]"(Albums only) ID of elements where [XXX] is the id of the album.
Gallery listings
- Sortable element selector is
tr.page-rowfor listings within tables, and.page-cellfor listings within DIV containers. - The parent container attributes are rolled into
<? include (COMMON_TEMPLATE_DIR."forms/images/gallery_listings_container.php"); ?>
- When using the
gallery_listings_container.phptemplate it's necessary to load the gallery listings content on page load:
$(document).ready(function(){
LITTLED.Gallery.retrieveGallery({pid: <?=$input->id->value?>});
});
LITTLED.Gallery.retrieveGallery()in turn callsLITTLED.Gallery.bindGalleryHandlers()which in turn callsLITTLED.Gallery.configureSorting().
MySQL
Tables with sortable records must contain
- An id column containing a unique id for the record.
- A slot column holding the value of the record’s position in the listings relative to all other records.