Hello world!

', ['weight' => 123]); * * @param string $markup * HTML code. * @param array $options * Open-ended list of key-value options. See CollectionInterface docs. * Positional equivalence: addMarkup(string $code, int $weight, string $region). * @return static * @see CRM_Core_Resources_CollectionInterface * @see CRM_Core_Resources_CollectionAdderInterface::addMarkup() */ public function addMarkup(string $markup, ...$options) { $this->add(self::mergeStandardOptions($options, [ 'markup' => $markup, ])); return $this; } /** * Export permission data to the client to enable smarter GUIs. * * @param string|iterable $permNames * List of permission names to check/export. * @return static * @see CRM_Core_Resources_CollectionAdderInterface::addPermissions() */ public function addPermissions($permNames) { // TODO: Maybe this should be its own resource type to allow smarter management? $permNames = is_scalar($permNames) ? [$permNames] : $permNames; $perms = []; foreach ($permNames as $permName) { $perms[$permName] = CRM_Core_Permission::check($permName); } return $this->addSetting([ 'permissions' => $perms, ]); } /** * Add a JavaScript file to the current page using