61        $registry->
register(
'./src/UI/templates/js/Core/ui.js');
 
   84        return $this->lng->txt(
$id);
 
   93        $this->lng->toJS(
$key);
 
  103        return $this->lng->getLangKey();
 
  130        return $this->tpl_factory->getTemplate(
$path, $purge_unfilled_vars, $purge_unused_blocks);
 
  142        return "src/UI/templates/default/$component/$name";
 
  171        if ($binder === 
null) {
 
  175        $id = $this->js_binding->createId();
 
  176        $on_load_code = $binder(
$id);
 
  177        if (!is_string($on_load_code)) {
 
  178            throw new \LogicException(
 
  179                "Expected JavaScript binder to return string" .
 
  180                " (used component: " . get_class($component) . 
")" 
  183        $this->js_binding->addOnLoadCode($on_load_code);
 
  196        if (count($triggered_signals) == 0) {
 
  201            foreach ($triggered_signals as $triggered_signal) {
 
  202                $signal = $triggered_signal->getSignal();
 
  203                $event = $triggered_signal->getEvent();
 
  204                $options = json_encode($signal->getOptions());
 
  206                if ($event == 
'load') {
 
  208                            "$(this).trigger('{$signal}', 
  210                                                                'id' : '{$signal}', 'event' : '{$event}', 
  211                                                                'triggerer' : $('#{$id}'), 
  212                                                                'options' : JSON.parse('{$options}') 
  217                    "$('#{$id}').on('{$event}', function(event) { 
  218                                                $(this).trigger('{$signal}', 
  220                                                                'id' : '{$signal}', 'event' : '{$event}', 
  221                                                                'triggerer' : $(this), 
  222                                                                'options' : JSON.parse('{$options}') 
  244        if (!is_array($interfaces)) {
 
  245            throw new \LogicException(
 
  246                "Expected array, found '" . (
string) (
null) . 
"' when rendering." 
  250        foreach ($interfaces as $interface) {
 
  251            if ($component instanceof $interface) {
 
  255        $ifs = implode(
", ", $interfaces);
 
  256        throw new \LogicException(
 
  257            "Expected $ifs, found '" . get_class($component) . 
"' when rendering." 
  273        $class = get_class($this);
 
  274        if (isset(self::$component_storage[$class])) {
 
  275            return self::$component_storage[$class];
 
  279        $re = 
"%ILIAS\\\\UI\\\\Implementation\\\\Component\\\\(\\w+)\\\\(\\w+)%";
 
  280        preg_match($re, $class, $matches);
 
  281        if (preg_match($re, $class, $matches) !== 1) {
 
  282            throw new \LogicException(
"The Renderer needs to be located in ILIAS\\UI\\Implementation\\Component\\*.");
 
  284        self::$component_storage[$class] = $matches[1];
 
  286        return self::$component_storage[$class];
 
An exception for terminatinating execution or to throw for unit testing.
Base class for all component renderers.
__construct(Factory $ui_factory, TemplateFactory $tpl_factory, \ilLanguage $lng, JavaScriptBinding $js_binding)
Component renderers must only depend on a UI-Factory and a Template Factory.
txt($id)
Get a text from the language file.
getTemplate($name, $purge_unfilled_vars, $purge_unused_blocks)
Get template of component this renderer is made for.
registerResources(ResourceRegistry $registry)
Announce resources this renderer requires.null
getTemplatePath($name)
Get the path to the template of this component.
bindJavaScript(JavaScriptBindable $component)
Bind the component to JavaScript.
checkComponent(Component $component)
Check if a given component fits this renderer and throw \LogicError if that is not the case.
getLangKey()
Get current language key.
static $component_storage
addTriggererOnLoadCode(Triggerer $triggerer)
Add onload-code for triggerer.
toJS($key)
Add language var to client side (il.Language)
getUIFactory()
Get a UI factory.
getComponentInterfaceName()
Get the name of the component-interface this renderer is supposed to render.
bindOnloadCode(JavaScriptBindable $component)
Bind the JavaScript onload-code.
if(!array_key_exists('StateId', $_REQUEST)) $id
A component is the most general form of an entity in the UI.
Interface to be extended by components that have the possibility to bind to Javascript.
withAdditionalOnLoadCode(\Closure $binder)
Add some onload-code to the component instead of replacing the existing one.
getOnLoadCode()
Get the currently bound on load code.
getTriggeredSignals()
Get all triggered signals of this component.
This is how the factory for UI elements looks.
An entity that renders components to a string output.
Provides methods to interface with javascript.
Registry for resources required by rendered output like Javascript or CSS.
register($name)
Add a dependency.
Interface for a factory that provides templates.
trait JavaScriptBindable
Trait for components implementing JavaScriptBindable providing standard implementation.