Revision 0e5e3501
Von Sven Schöling vor etwa 7 Jahren hinzugefügt
SL/Template/Plugin/L.pm | ||
---|---|---|
use Scalar::Util qw(blessed);
|
||
|
||
use SL::Presenter;
|
||
use SL::Presenter::ALL;
|
||
use SL::Presenter::Simple;
|
||
use SL::Util qw(_hashify);
|
||
|
||
use strict;
|
||
... | ... | |
|
||
my $presenter = $::request->presenter;
|
||
|
||
if (!$presenter->can($method)) {
|
||
$::lxdebug->message(LXDebug::WARN(), "SL::Presenter has no method named '$method'!");
|
||
return '';
|
||
splice @args, -1, 1, %{ $args[-1] } if @args && (ref($args[-1]) eq 'HASH');
|
||
|
||
if (my $sub = SL::Presenter::Simple->can($method)) {
|
||
return $sub->(@args);
|
||
}
|
||
|
||
splice @args, -1, 1, %{ $args[-1] } if @args && (ref($args[-1]) eq 'HASH');
|
||
if ($presenter->can($method)) {
|
||
return $presenter->$method(@args);
|
||
}
|
||
|
||
$presenter->$method(@args);
|
||
$::lxdebug->message(LXDebug::WARN(), "SL::Presenter has no method named '$method'!");
|
||
return;
|
||
}
|
||
|
||
sub name_to_id { return _call_presenter('name_to_id', @_); }
|
||
... | ... | |
sub javascript { return _call_presenter('javascript', @_); }
|
||
sub truncate { return _call_presenter('truncate', @_); }
|
||
sub simple_format { return _call_presenter('simple_format', @_); }
|
||
sub part_picker { return _call_presenter('part_picker', @_); }
|
||
sub chart_picker { return _call_presenter('chart_picker', @_); }
|
||
sub customer_vendor_picker { return _call_presenter('customer_vendor_picker', @_); }
|
||
sub project_picker { return _call_presenter('project_picker', @_); }
|
||
sub button_tag { return _call_presenter('button_tag', @_); }
|
||
sub submit_tag { return _call_presenter('submit_tag', @_); }
|
||
sub ajax_submit_tag { return _call_presenter('ajax_submit_tag', @_); }
|
Auch abrufbar als: Unified diff
Presenter: Sub-Presenter auf Funktional geändert
1. alle Sub-Presenter aus dem SL::Presenter Namespace geschmissen
2. Keine ungefragten @EXPORTs mehr, nur noch @EXPORT_OK
3. Alle Methoden sind auf Funktionen umgeschrieben (kein $self mehr)
4. Die benötigten Methoden von Sub-Presentern müssen jetzt direkt importiert
werden (betrifft vor allem SL::Presenter::EscapedText und SL::Presenter::Tag)
5. Da die Funktionen in Tag/Text/EscapedText recht häufig gebraucht werden,
exportieren die ihre Funktionen stattdessen nach SL::Presenter::Simple, und
die Proxies in SL::Template::Plugin::L und SL::Template::Plugin::P
dispatchen auf diesen Namespace statt auf SL::Presenter.
6. Die Sub-Namespaces sind in SL::Presenter::ALL registriert, und dort liegt
auch der Proxymechanismus um vom Objekt aus zu der Funktion zu dispatchen.
Das ist nur in SL::Template::Plugin::P registriert, nicht mehr in L.
7. Für Funktionen deren exportierter name mit Namespace präfixt war, gibt es
einen Alias angelegt der nicht exportiert wird.