/** * Gets a list of url_pattern => controller k/v pairs for each LeftAndMain derived controller */ public static function rules() { if (self::$_rules === null) { self::$_rules = array(); // Map over the array calling add_rule_for_controller on each $classes = CMSMenu::get_cms_classes(null, true, CMSMenu::URL_PRIORITY); array_map(array(__CLASS__, 'add_rule_for_controller'), $classes); } return self::$_rules; }
public function testCmsClassDetection() { // Get CMS classes and check that: // 1.) SecurityAdmin is included // 2.) LeftAndMain & ModelAdmin are excluded $cmsClasses = CMSMenu::get_cms_classes(); $this->assertContains('SilverStripe\\Admin\\SecurityAdmin', $cmsClasses, 'SecurityAdmin included in valid CMS Classes'); $this->assertNotContains('SilverStripe\\Admin\\LeftAndMain', $cmsClasses, 'LeftAndMain not included in valid CMS Classes'); $this->assertNotContains('SilverStripe\\Admin\\ModelAdmin', $cmsClasses, 'LeftAndMain not included in valid CMS Classes'); }
/** * Gets the combined configuration of all LeafAndMain subclasses required by the client app. * * @return array * * WARNING: Experimental API */ public function getCombinedClientConfig() { $combinedClientConfig = ['sections' => []]; $cmsClassNames = CMSMenu::get_cms_classes('SilverStripe\\Admin\\LeftAndMain', true, CMSMenu::URL_PRIORITY); foreach ($cmsClassNames as $className) { $combinedClientConfig['sections'][$className] = Injector::inst()->get($className)->getClientConfig(); } // Pass in base url (absolute and relative) $combinedClientConfig['baseUrl'] = Director::baseURL(); $combinedClientConfig['absoluteBaseUrl'] = Director::absoluteBaseURL(); $combinedClientConfig['adminUrl'] = AdminRootController::admin_url(); // Get "global" CSRF token for use in JavaScript $token = SecurityToken::inst(); $combinedClientConfig[$token->getName()] = $token->getValue(); // Set env $combinedClientConfig['environment'] = Director::get_environment_type(); $combinedClientConfig['debugging'] = $this->config()->client_debugging; return Convert::raw2json($combinedClientConfig); }