Inline Edits With PHP/AJAX: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
|||
| (2 intermediate revisions by the same user not shown) | |||
| Line 3: | Line 3: | ||
=== Editable container === | === Editable container === | ||
Add a ` | 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. | * The container's content is changed to accommodate the edits, but not the container itself. | ||
Latest revision as of 01:37, 23 November 2021
Markup[edit]
Editable container[edit]
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[edit]
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[edit]
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[edit]
[edit]
$.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[edit]
$(document).ready(function() {
$('.mycontent-edit-cell').inlineEdit('init', {
input_key: 'mycontentID',
edit_uri: '/path/to/ajax_script.php'
});
});
AJAX[edit]
Custom content edits[edit]
- 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[edit]
Names, titles, status (enabled vs disabled), dates, keywords, page numbers.
Examples[edit]
- Littledamien storage CMS > package status container
- Damien Jay Comics books CMS > in-stock container