23. Frontend
rendering
is
done
by
themes
Lightwight,
powerfull
and
easy
to
customize
Easy
to
select
while
adding
yag
as
content
element
Later:
More
details
about
the
elements
of
a
theme
27. Several
other
themes
are
available
in
TER
yag_themepack_jquery
(galleryview
/
crosslide)
yag_theme_simpleviewer
(flash
viewer)
yag_theme_perfectlightbox
(alternative
lightbox)
yag_theme_fancybox
(alternative
lightbox)
39. AlbumList.Extlist.ts
AlbumList.ts
GalleryList.Extlist.ts
GalleryList.ts
General.ts
Define
the
cook
and
behaviour
General
l onfiguration
and
pt_extlist
configuration
of
the
resolution
definition.
view
gallery
/
album
/
item
ItemList.Extlist.ts
ItemList.ts
Item.ts
Theme.ts
41. Select
the
theme
per
plugin
instance
Different
themes
on
the
same
page
posible
42. (EXIF-‐)
Meta
Data
YAG
Adding
to
Album
Importer
External
Image
Resource
Filesystem-‐
Storage
43. Currently
implemented:
Crawls
directory
and
Uploads
multiple
Directory
imports
image
files
Multifile
Files
via
SWF
Uploader
Importer
Uploader
and
importsimages
Extractsuploaded
ZIP
Handles
HTTP
requests
ZIP
File
file
and
imports
image
Remote
from
Desktop
Uploader
files
Uploader
applications,
e.g.
Lightroom
44.
45. Used
for
Filtering
Paging
Sorting
Generates
Image
Collections
Displayed
as
galleries,
albums,
...
46. Enables
developer
to
implement
their
own
filters
Category
Filter
Tag
Filter
EXIF
Filter
Image-‐Title
Filter
...
47. Our
goal:
Having
generic
categories
for
multiple
extensions
Having
(ExtJs)
Tree-‐Widget
for
editing
categories
49. PROs
of
Nested
Sets
Fast
Reading
No
Recursive
Queries
Easy
DB
implementation
CONs
of
Nested
Sets
Slow
Writing
/
Changing
Complex
INSERTs
/
UPDATEs
Complex
PHP
implementation
50.
51. Extbase
makes
the
development
of
BE
modules
easy
Use
the
same
Controllers
/
Actions
as
in
FE
…
same
typoscript
settings
…
same
data
models
…
Modules
in
BE
and
FE
only
differs
at
the
presentation
layer
52. Extbase
does
not
have
Session
Management
(yet)
Came
up
with
our
own
solution
53. Did
not
use
Annotations
/
Reflection
Session
persistence
can
be
part
of
domain
logic
No
„generic
way“
of
injecting
session
data
Makes
use
of
Lifecycle-‐Manager
(next
slides)
Injects
session
data
when
starting
Persists
session
data
into
session
when
shutting
down
54. Extbase
does
not
have
Lifecycle
Management
(yet)
Came
up
with
our
own
Lifecycle
Management
55. 1.
TYPO3
PageRequest
7.
Lifcycle
Manager
is
2.
Lifecycle
Manager
shut
down
is
started
6.
Lifcycle
Manager
3.
Session-‐persisted
writes
object
data
to
Use
Object-‐ object
is
created
Session
Namespace
3.1.
Object-‐Data
is
5.
Lifcycle
Manager
gets
injected
from
session
shut
down
4.
Object
data
changes
56. Problem
1:
Guess
the
key!
$settings[‘plugin‘]...[‘showPager‘]
57. Problem
2:
Assertions
(over
and
over)!
assert_is_integer($settings[...]);
58. Solution:
ConfigurationObjects
Keep
Domain
Logic
and
Configuration
seperated
Code-‐Completion
for
configuration
settings
Do
Assertions
only
once
59. Code
class Tx_Yag_Domain_Configuration_AlbumList_AlbumListConfig
extends Tx_PtExtlist_Domain_Configuration_AbstractConfiguration {
/**
* @var string
*/
protected $albumThumbPartial;
/* ... */
/**
* @return string
*/
public function getAlbumThumbPartial() {
return $this->albumThumbPartial;
}
}
60. Code
class Tx_Yag_Domain_Configuration_ConfigurationBuilder
extends Tx_Yag_Domain_Configuration_AbstractConfigurationBuilder {
/**
* Holds settings to build configuration objects
* @var array
*/
protected $configurationObjectSettings = array(
'albumList' => array(
'factory' =>
'Tx_Yag_Domain_Configuration_AlbumList_AlbumListConfigFactory'),
/* ... */
);
/**
* Returns (cached) instance of album configuration
*
* @return Tx_Yag_Domain_Configuration_AlbumList_AlbumListConfig
*/
public function buildAlbumListConfiguration() {
return $this->buildConfigurationGeneric('albumList');
}
}
61. Problem
Folders
and
files
for
▪ Templates
▪ Partials
▪ Layouts
can
only
be
set
for
all
instances
of
plugin
(using
Extbase
Typoscript
conventions)
62. Solution:
Set
template
for
each
Controller/
Action
individually
plugin.tx_yag.settings.themes.myFancyTheme
{
/*
...
*/
controller.ItemList.list
{
template
=
EXT:fancy/…/Templates/…/List.html
}
}
63. Extbase
in
frontend
Extbase
in
backend
module
Extbase
in
flexform
67. Using
„middle
layer“
for
Extensions
of
Extbase,
suitable
for
other
extensions
Usage
of
non-‐public-‐API
yag
-‐
pt_extlist
pt_extbase
Extbase
TYPO3
68.
69. Let
FE
Users
Create
/
Edit
/
Delete
▪ Galleries
▪ Albums
Upload
/
Edit
/
Delete
▪ Images
in
Frontend
70. Has
already
been
implemented
Changed
to
BE
Management
Dependency
on
Role-‐Based
Access
Controll
(next)
72. Issue:
All
records
are
stored
to
PID
0
Not
possible
to
assign
permission
to
records
on
page
level.
Not
possible
to
split
the
data
between
different
authors
Todo
Add
Sysfolder
/
Page
selector
to
the
BE
module
Add
Sysfolder
/
Page
selector
to
the
CE
Keep
it
usable!
73. Issue:
Add
multi
language
support
to
labels
and
descriptions