JQuery Initialization on Listings Pages
Listings JQuery handlers[edit]
$('#listings-container').listings('bindListingsHandlers')$('#listings-container')targets the element containing the listings.#listings-containeris the most common element for this, but any appropriate selector can be specified.- Inline edits:
.inline-edit-celldouble-click - Pagination & paging button handlers (
.page-btn) - Update cache:
.update-cache-btnclick - Delete records:
.trash-btnclick - Makes button icons for the following elements:
.details-btn,.preview-btn,.edit-btn,.print-btn,.update-cache-btn,.trash-btn. - Button element handlers should persist after listings content is refreshed.
$.listings('bindListingsHandlers')in turn calles$.listings('bindListingsButtons'). The two routines are separated so$.listings('bindListingsHandlers')doesn't need to be called multiple times to avoid attaching duplicate handlers to listings elements.- This routine does not refresh the handlers or buttons after the listings are refreshed. This can be achieved with
$(document).ready(function() {
$('#listings-container').listings('bindListingsHandlers');
LITTLED.init({setSortables: function() {
$('#listings-container').listings('bindListingsButtons');
}
});
});
Pagination[edit]
Content CMS[edit]
- Specify a listings handler script with the "listings uri" setting.
- Default handler is
/hostmgr/_ajax/utils/listings.php- Default handler requires that the content and filters objects for that type of content have been defined within the local
cache_class.
- Default handler requires that the content and filters objects for that type of content have been defined within the local
HTML[edit]
<table id="listings-table" data-tid="<?=$filters->site_section->id->value?>" data-p="<?=$filters->calc_rec_position()?>">
- The listings container is a table.
- Attributes of
tableelement:iddefault value#listings-table. Used as jQuery selector for paging functionality.data-tidcontent type contained within table. Used to retrieve paging content.data-pIndex of the first record on the page. E.g. on the 2nd page with 50 records per page the value would be 51.
PHP[edit]
include (COMMON_TEMPLATE_DIR."framework/navigation/listings_page_links.php");
- This include is placed outside the
table id="listings-table"element and inside thediv id="listings-container"element. - Upldate local
cache_classto support the content type. See Adding Content Types to the Local Cache Class
JavaScript/jQuery/AJAX[edit]
Operations buttons[edit]
Markup[edit]
Sample:
<td class="centered"> <div class="listops"><!-- --><button class="edit-btn" data-id="<?=$so->id?>" data-tid="<?=ShippingOption::SECTION_ID?>" data-op="edit" title="edit shipping option">edit shipping option</button><!-- --><button class="trash-btn" data-id="<?=$so->id?>" data-tid="<?=ShippingOption::SECTION_ID?>" data-op="delete" title="delete shipping option">delete shipping option</button> </div> </td>
- Use the
buttonelement when the button will trigger a JQuery handler. - Use the
anchorelement when the button links to another page. - Buttons are wrapped in a
divcontainer withlistopsclass. - The
classattribute value of the button/anchor determines the icon that is loaded and (optionally) the AJAX handler that is invoked upon clicking the button. - Required attributes for AJAX handlers:
data-iddata-tid
Inline edits[edit]
Markup[edit]
- Element to be edited is placed in a container with class
inline-edit-cell. - Pre-existing templates located in
[COMMON_TEMPLATE_DIR]forms/ajax/.access_cell.phpdate_cell.phpname_cell.phppage_cell.phpslot_cell.php<<< deprecated Use$.resort('bindResort')instead. (<<< add link to documentation)status_cell.php
<td><? include (COMMON_TEMPLATE_DIR."forms/ajax/name_cell.php"); ?></td> <? /* or */ ?> <div><? include (COMMON_TEMPLATE_DIR."forms/ajax/name_cell.php"); ?></div>
PHP[edit]
- The content include file expects an object containing the properties of the field.
- Create an object that contains the field properties within the listings loop:
while ($row = mysql_fetch_object($rs))
{
$name = (object)array("id"=>$row->id, "table"=>"package", "value"=>$row->code);
/* listings template including inline edit content includes goes here */
}
JavaScript/jQuery/AJAX[edit]
- Both
$.listings('bindListingsHandlers')and$.galleries('bindAlbumListingsHandlers')bind the dblclick handlers for the cell:
$('.inline-edit-cell').on('dblclick', methods.editCell);
$.listings('editCell')contains the logic that loads the editable input into the cell after double-clicking the cell.
Customized inline elements[edit]
- Create include files for the flattened cell and the editing form.
- The class will be
inline-edit-cell - Add the following attributes:
data-id,data-t, anddata-op.
- The class will be
<div class="inline-edit-cell" data-id="<?=$name->id?>" data-t="<?=$name->table?>" data-op="name"><?=$name->value?></div>
Keywords JQuery handlers[edit]
$('#listings-container').keywords('bindListingsHandlers')targets the element containing the listings. It's the most common element to use in this case, but any appropriate selector may be used.#listings-container- Loading inline editor:
.edit-kw-btnclick - Submitting and canceling inline edits:
.kw-commit-btnand.kw-cancel-btnclick - Button icons:
.ui-icon-edit $.keywords('bindListingsHandlers')in turn calles$.keywords('bindListingsButtons'). The two routines are separated so$.keywords('bindListingsHandlers')doesn't need to be called multiple times to avoid attaching duplicate handlers to listings elements.- Button element handlers should persist after listings content is refreshed.
- The routine doesn't handle refreshing the button elements when the listings content is refreshed.
- See also Keywords
Keyword filter autocomplete[edit]
Markup[edit]
- Assign keydown handler to keyword filter textbox, e.g.
$('input[name=flkw]').listings('keywordAutocomplete'). - Keyword input textbox has attribute
data-tidwith the content type id for the section as its value.
JavaScript/jQuery[edit]
$(selector).listings('keywordAutocomplete')
PHP[edit]
- AJAX handler:
/_ajax/utils/keyword_autocomplete.phpcache_class::set_filters()$filters->search_titles()- This routine must be defined for the particular content type being filtered.
- The base routine
album_filters_class->search_titles()routine won’t work with the table structure.
Examples[edit]
- littledamien.com
- Sketchbooks
- Movies
Datepicker[edit]
$('.datepicker').datepicker();