Skip to content

Enforces some depth rules for Repeater fields on save, and provides a helper method that returns a nested depth structure for a Repeater field value.

License

Notifications You must be signed in to change notification settings

Toutouwai/RepeaterDepthHelper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Repeater Depth Helper

A module for ProcessWire CMS/CMF. This module does two things relating to Repeater fields that have the "Item depth" option enabled:

  1. It enforces some depth rules for Repeater fields on save. Those rules are:

    1. The first item must have a depth of zero.
    2. Each item depth must not be more than one greater than previous item depth.
  2. It provides a RepeaterPageArray::getDepthStructure helper method that returns a nested depth structure for a Repeater field value.

Helper method

The module adds a RepeaterPageArray::getDepthStructure method that returns a multi-dimensional array where the key is the page ID and the value is an array of nested "child" items, or null if there are no nested children.

Example

rdh-tracy

The module doesn't make any assumptions about how you might want to use the depth structure array, but here is a way you might use it to output a nested unordered list.

// Output a nested unordered list from a depth structure array
function outputNestedList($depth_structure, $repeater_items) {
    $out = "<ul>";
    foreach($depth_structure as $page_id => $nested_children) {
        $out .= "<li>" . $repeater_items->get("id=$page_id")->title;
        // Go recursive if there are nested children
        if(is_array($nested_children)) $out .= outputNestedList($nested_children, $repeater_items);
        $out .= "</li>";
    }
    $out .= "</ul>";
    return $out;
}

$repeater_items = $page->my_repeater;
$depth_structure = $repeater_items->getDepthStructure();
echo outputNestedList($depth_structure, $repeater_items);

rdh-list

About

Enforces some depth rules for Repeater fields on save, and provides a helper method that returns a nested depth structure for a Repeater field value.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages