Sure thing.
class QualityChildPage extends Page {
static $db = array('Category' => "Enum('Links, Workplace, Family, Stories, Extras','Links')");
static $default_parent = 'QualityHomePage';
static $can_be_root = false;
static $allowed_children = array();
static $icon = "themes/memberscf/images/pageicons/cqarticle";
function getCMSFields() {
$fields = parent::getCMSFields();
$fields->addFieldToTab('Root.Content.Metadata', new DropdownField('Category', 'Category', singleton('QualityChildPage')->dbObject('Category')->enumValues()));
return $fields;
}
function Quality() {
return $this->Parent()->Quality;
}
}
class QualityChildPage_Controller extends Page_Controller {
protected $sidebar = 'QualitySideBar';
public function CategoryLinks($category) {
return QualityHelper::CategoryLinks($category, $this->Parent());
}
}
class QualityHelper {
public static function CategoryLinks($category, $quality) {
$results = new DataObjectSet();
foreach($quality->Children() as $child) {
if ($child->Category != $category) continue;
$results->push($child);
}
return $results;
}
}