Inline Edits With PHP/AJAX: Difference between revisions
Jump to navigation
Jump to search
| Line 53: | Line 53: | ||
=== Initialization on page === | === Initialization on page === | ||
<syntaxhighlight lang=" | <syntaxhighlight lang="JavaScript"> | ||
$(document).ready(function() { | $(document).ready(function() { | ||
$('.mycontent-edit-cell').inlineEdit('init', { | $('.mycontent-edit-cell').inlineEdit('init', { | ||
Revision as of 01:35, 23 November 2021
Markup
Editable container
Add a <td> or <div> container as a container for the inline edits.
- The container's content is changed to accommodate the edits, but not the container itself.
- Assign the container a class that will serve as a selector for inline edits. Something like
status-cell,in-stock-cell,access-cell, etc. - Assign the container the
inline-editclass to use to target it for content updates. - The container has a
data-idattribute with the parent record's id as its value. - Variable name
- The PHP variable used to access the value displayed in the cell is typically
$rowon listings pages and$inputon details pages. - The content template will have to accommodate whatever variable is used on its parent page.
- Create an object variable for the purposes of the template that won't collide with the parent page's variables, and that has whatever properties are required by the cell template:
$name = (object)array("id"=>$clip->id, "table"=>'album', "value"=>$clip->title);
- The PHP variable used to access the value displayed in the cell is typically
Editable content
Create an include file for the flattened content that can be shared between listings and details pages.
- path:
[SECTION_BASE_DIR]_templates/content/[content_type]-cell.php - The actual content of this file doesn't affect the process; it can be anything.
Editing form
Create an include file to be inserted into the DOM by the editing handler.
- path:
[SECTION_BASE_DIR]_templates/forms/[content_type]-edit-form.php - Include a hidden error message container with class
alert alert-error. - Hidden form inputs:
id: parent record id[class_id_param]: parent record id parameter as defined in the parent PHP class- Any filter values needed to present options during the process.
- A form input for the property being edited.
- Submit buttons are optional. Ideally an
onchangeor Enter key keystroke handler will cause the inline form to be submitted.
JavaScript
$.inlineEdit()
- Bundled into
littled.js - Source:
[COMMON_BASE_DIR]scripts/littled/inlineEdit.js - Settings
input_keyThe name of the parameter used to pass the new value to the AJAX page.edit_uriURL of the AJAX script that serves the form markup and commits the changes to the database.events.to_commitType of event that will cause the new value to be saved to the database, e.g. 'keydown', 'change'.- Currently, 'change' is the only value that is implemented.
- implement a keydown handler for textbox form inputs
Initialization on page
$(document).ready(function() {
$('.mycontent-edit-cell').inlineEdit('init', {
input_key: 'mycontentID',
edit_uri: '/path/to/ajax_script.php'
});
});
AJAX
Custom content edits
- Create a page class derived from the shared
AjaxPageclass. - Collect parent id, read parent properties, return markup used to display the editing form.
- Test if form was submitted, and save changes accordingly.
- Return JSON containing markup used to update page content, error messages, and status messages.
Standardized edits
Names, titles, status (enabled vs disabled), dates, keywords, page numbers.
Examples
- Littledamien storage CMS > package status container
- Damien Jay Comics books CMS > in-stock container