/** * Populates an array of classes in the CMS * which allows the user to change the page type. * * @return SS_List */ public function ModuleTypes() { $classes = ContentModule::content_module_types(); $result = new ArrayList(); foreach ($classes as $instance) { $class = $instance->class; if ($instance instanceof HiddenClass) { continue; } if (!$instance->canCreate()) { continue; } // skip this type if it is restricted if ($instance->stat('need_permission') && !$this->can(singleton($class)->stat('need_permission'))) { continue; } $addAction = $instance->i18n_singular_name(); // Get description (convert 'Page' to 'SiteTree' for correct localization lookups) $description = _t($class . '.DESCRIPTION'); if (!$description) { $description = $instance->uninherited('description'); } $result->push(new ArrayData(array('ClassName' => $class, 'AddAction' => $addAction, 'Description' => $description, 'IconURL' => $instance->stat('icon'), 'Title' => singleton($class)->i18n_singular_name()))); } $result = $result->sort('AddAction'); return $result; }