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];
Registry for resources required by rendered output like Javascript or CSS.
getTemplatePath($name)
Get the path to the template of this component.
addTriggererOnLoadCode(Triggerer $triggerer)
Add onload-code for triggerer.
checkComponent(Component $component)
Check if a given component fits this renderer and throw if that is not the case. ...
An entity that renders components to a string output.
trait JavaScriptBindable
Trait for components implementing JavaScriptBindable providing standard implementation.
if(!array_key_exists('StateId', $_REQUEST)) $id
toJS($key)
Add language var to client side (il.Language)
bindOnloadCode(JavaScriptBindable $component)
Bind the JavaScript onload-code.
txt($id)
Get a text from the language file.
getComponentInterfaceName()
Get the name of the component-interface this renderer is supposed to render.
static $component_storage
This is how the factory for UI elements looks.
getOnLoadCode()
Get the currently bound on load code.
__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.
Provides methods to interface with javascript.
register($name)
Add a dependency.
withAdditionalOnLoadCode(\Closure $binder)
Add some onload-code to the component instead of replacing the existing one.
getTriggeredSignals()
Get all triggered signals of this component.
getLangKey()
Get current language key.
getUIFactory()
Get a UI factory.
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
Interface for a factory that provides templates.
Base class for all component renderers.
bindJavaScript(JavaScriptBindable $component)
Bind the component to JavaScript.