►
From YouTube: DSpace 7.4: Developing on DSpace 7.4.
Description
As you plan your upgrade, or after your upgrade, you may need some tips on customizing DSpace 7 to better meet your needs. This workshop will train you in basic User Interface customization, to allow you more control over your branding. We will also provide tips on using the REST API to access your data in DSpace. Presenters: Art Lowel (Atmire) and Andrea Bollini (4Science). Webinar date November 17, 2022.
B
We
are
going
to
go
ahead
and
start
our
final
webinar
today,
developing
on
dspace
with
art,
Lowell
and
Andrea
Bellini.
Next,
please
next
slide.
B
Okay,
just
a
little
overview
of
the
workshop
schedule,
we'll
have
short
introductions,
then
we'll
move
on
to
understanding
the
rest
API
with
Andrea
and
then
right
into
customizing
and
developing
with
the
dspace
UI
with
art,
and
then
we'll
have
a
half
an
hour
for
questions
and
answers
and
we'll
explain
how
the
Q
a
Works
in
a
moment
here
and
I
just
wanted
before
we
started
to
take
a
moment
to
remind
the
dspace
community
at
large
that
dspace
wouldn't
be
possible
without
your
expertise
and
financial
support.
B
Dspace
software
is
financially
supported
by
the
community
via
membership
dues,
certified
partners
and
service
providers
and
various
fundraising
efforts.
Current
pledges
and
campaigns
are
the
dspace
Development
Fund,
the
global
sustainability
Coalition
for
open
science,
Services
known
as
Scots,
and
if
you've
been
enjoying
the
benefits
of
working
with
this
open
source,
community
and
software
product.
Please
consider
contributing
to
one
of
our
fundrais
fundraising
campaigns
in
the
coming
year.
B
Okay,
next
slide:
okay
and
I'm
just
going
to
do
a
short
introduction
of
our
two
presenters
today,
Andrea
bellini
is
Chief
technology
and
Innovation
officer
at
four
science
and
actively
involved
in
various
International,
open
source
and
Open
Standards
communities
with
leading
roles,
d,
space,
committer,
Deputy,
Deputy,
leader
of
serif
and
architecture,
task
group
of
Euro
Cris
and
member
of
the
coar
Next
Generation
repositories,
editorial
group
chair
speaker
and
reviewer
for
several
key
conferences.
He
holds
an
MSC
in
Applied
Mathematics
and
a
masters
in
ICT
management
and
art.
B
B
C
B
Think
you
have
one
more
slide:
Natalie
to
introduce
the
Q
a
yes.
So
today
we
are
managing
questions
and
answers
via
a
document
just
get
the
link
here
for
you
in
the
chat.
B
So
you
can
click
on
that
link
and
add
your
questions
please,
to
the
bottom
of
the
document
under
the
November
17th
heading
during
the
presentations
and
yeah.
That's
how
we're
going
to
be
managing
the
questions
and
answers
and
I'll
periodically.
Add
that
link
again
to
the
chat
for
you.
D
Thank
you
Natalie
for
this
nice
introduction
and
welcome
to
everyone
I'm
going
to
talk
a
bit
about
the
rest
API,
mostly
from
the
perspective
of
angular,
user
and
developer
of
the
user
interface.
So
what
you
need
to
know
to
work
with
the
rest
API
of
this
space.
D
So,
first
of
all
for
who
you
are
not
new
to
the
space
Community,
you
are
probably
aware
that
science
displays
version
4.
We
have
implemented
our
rest
API.
We
started
with
our
red
only
rest
API
in
version
4
and
move
it
to
read,
write
API
in
a
more
recent
version,
but
in
any
case,
this
rest
API
was
very
limited
and
only
a
partial
only
few
features
of
the
space
was
included
in
the
rest
API.
D
It
was
not
based
on
respects,
so
it
was
very,
very
custom,
a
bit
complicated
to
work
with
and
also
from
the
implementation
perspective.
It
was
all
handcrafted
work,
so
it
was
difficult
for
new
developers
to
understand
how
to
work
with
this
stuff.
D
So
we
decided
to
implement
a
completely
new
rest
API
and
with
which
completely
approach.
Here
we
decided
that
we
want
to
go
for
an
API
first
approach.
So
everything
need
to
be
available
to
rest
API
before
we
can
implement
the
future.
The
user
interface
is
completely
based
onto
the
rest
API,
so
it's
technically
impossible
for
this
space
to
provide
you
a
feature.
D
If
this
feature
is
also
not
ready
available
on
the
rest
API,
we
decided
to
write
down
a
good
documentation,
so
what
we
call
rest
contract
so
that
we
are
sure
that
the
request
form
at
the
response
format
are
known
and
are
as
much
uniform
as
standard
as
possible.
To
do
that,
we
will
follow
two
main
standard
to
hideous
principle
and
the
health
format,
and
we
decided
to
do
that
building
on
top
of
very
common
technology
and
understood
technology
among
Java
developer.
D
So
we
look
heavily
to
the
Sprint
Technology
for
our
foundation
and
which
is
the
goal,
the
benefit
of
an
API
first
approach.
The
side
effect
is,
then
we
have
all
the
capability
to
have
the
best
third-party
API
integration,
so
everything
that
you
can
do
from
the
user
interface
can
be
also
done
programmatically
via
to
rest
API.
This
is
quite
powerful.
We
have
a
presentation,
science,
a
previous
open
repository,
where
you
will
see
different
example
of
scenario
where
you
can
use
the
rest
API
to
integrate
this
page
with
other
system.
D
So
how
you
can
interact
with
the
rest
API
and
you
can
learn
about
rest
API.
We
will
touch
briefly
all
of
these
aspects
today.
There
are
several
way.
The
most
obvious
one
to
most
useful,
in
my
opinion,
is
to
just
observe
what
angular,
the
angular
user
interface
is
doing
using
the
web
developer
tool
of
your
browser.
So
your
Chrome
Firefox
browser
have
these
tool
integrated
and
you
can
inspect
what
is
going
on
behind
the
sign.
D
D
Just
a
last
note,
of
course,
the
goal
of
rest
API
is
that
you
can
integrate
with
other
systems.
This
other
system
could
be
Java
based,
PHP
or
whatever
language
you
prefer,
and
any
language
have
the
basic
tool
to
interact
with
our
rest,
API
just
HTTP
requests.
Essentially,
we
don't
have
yet
a
client,
a
SDK
that
will
facilitate
these
integration.
D
It
could
be
a
nice
project
site
project
for
you
to
start
maybe
on
GitHub,
and
we
will
be
very
happy
to
to
to
know
about
this
project
and
support,
maybe
in
the
space
Labs
or
anything
like
that,
so
how
to
access
the
developer
web
tool,
nothing
surprising.
But
if
you
have
Chrome
on
the
tool
menu,
you
can
just
look
to
more
tools
and
you
have
to
link
to
access
the
developer
tools.
D
If
you
access
the
home
page
of
the
Space
7
of
the
demo
of
display
7
from
the
web
tool,
you
will
see
that
several
requests,
several
HTTP
requests
are
performed
and
it
will
be
very
convenient
to
just
filter,
also
requests.
The
network
request
to
look
on
fetch
cross
script
request.
D
D
Page
of
of
the
space
you
will
see
that
one
of
the
widgets
available
is
the
top
Community,
the
list
of
top
community
that
we
have
in
our
repository.
But
if
you
compare
what
request
has
been
done
when
you
have
access
to
first
time
this
home
page,
you
will
see
that
there
is
nothing
related
to
the
top
community,
so
why
this
is
missing.
Where
is
this
request?
D
This
request
is
missing,
because
this
space
uses
an
architecture
based
on
server-side
rendering.
So
essentially
a
hardware.
Tell
more
will
show
you
a
nice
flow
diagram
to
explain
that,
but
essentially
what
this
space
do
is
to
trigger
the
generation
of
a
static,
HTML
page
generated
on
the
server
side
by
node
that
is
delivered
to
your
browser.
So
if
you
don't
have
a
JavaScript
capability
on
your
browser,
you
still
get
the
content
and
this
content
has
been
built
on
the
server
side.
D
This
is
useful
for
for
crawling
so
for
search
engine
optimization,
but
is
also
very
good
for
loading
time
optimization,
because,
initially,
all
the
request
has
been
fashioned
by
on
the
server
side
and
just
the
result
has
been
delivered
by
to
the
to
the
browser.
What
we
try
to
do
is
to
use
as
much
as
possible
what
has
been
already
done
on
the
server
side,
so
this
is
packaged
in
a
Json
file
that
you
will
see
inside
your
source
of
your
HTML
page,
and
this
is
named.
The
state
transfer
or
ngrx
data
deviation.
D
So
for
this
reason
you
don't
see
it
request
to
the
top
Community
how
you
can
see
this
request
in
your
browser.
You
can
see
it
is
actually
alt
requests
if
you
start
from
another
page,
so
open
your
browser
and
point,
for
instance,
to
the
search
of
this
space
demo.
In
this
case,
the
list
of
requests
will
be
larger,
and
one
of
this
requests
is
a
top
request,
so
the
the
end
point
related
to
the
search
of
all
top
community
in
this
space,
and
here
you
will
get
metadata
inside
our
response.
You
have
several
Community.
D
The
First
Community
have
a
title.
That
is
just
a
couple
of
zero,
and
this
is
exactly
what
we
see
until
on
page
today
for
our
demo.
So
this
is
the
community.
What
is
this
train?
Json
format
is
not
something
that
we
have
invented,
but
we
rely
on
a
common
standard
so
to
Json
format
that
you
use
for
our
response
is
TL
format.
It's
a
build
on
in
an
article
way
so
that
inside
the
Json
we
have
some
attribute
that
are
plain:
whole
Json
property.
D
We
have
a
set
of
links
that
relate
to
what
we
are
retrieving
from
to
rest
API
with
other
endpoint,
with
other
resources
available
on
our
RS
API
and
the
possibility
to
embed
resources
that
are
linked
from
our
current
objects.
So,
for
instance,
if
we
have
Community,
we
have
the
metadata
of
the
community,
but
we
have
links
to
point
to
all
the
sub
community
and
collection
in
this
community,
and
we
can
decide
to
embed
this
information
directly
into
Json
file
to
save
a
bandwidth
and
reduce
the
number
of
HTTP
requests.
D
So,
using
this
standard
format,
what
we
are
able
to
provide
is
out
of
box
and
an
Explorer
is
an
open
source
project
based
the
help
browser
that
understands
this
format
and
allow
you
to
explore
the
rest
API
of
this
space,
providing
a
nice
user
interface
over
our
sapi
is
important
to
understand
a
thesis
and
independent
and
open
source
project.
It's
not
something
that
the
space
developer
have
built.
D
These
just
work
because
we
use
analot,
Health
format,
a
standard
and
what
to
do
to
the
help
browser
as
it
naughty
and
TL
format
is
able
to
parse
our
response
and
to
separate
the
information
that
are
just
attribute,
State
information
about
resource
that
we
have
requested
and
provide
us
all
the
links
and
embedded
resources
in
a
specific
interface
and
using
these
links
we
can
navigate
our
our
rest
API.
So
also
without
previous
known
about
our
sapi,
we
don't
know
which
are
all
our
endpoint.
D
You
can
just
point
to
the
entry
point
to
the
slash
API
index,
page
of
our
rest,
API,
and
you
can
browse
and
to
discover
the
list
of
community
to
this.
The
search
our
browser
to
start
to
solved,
authentication
and
so
on.
D
Looking
to
standard,
we
have
also
decided
to
try
to
be
as
much
uniform
as
possible.
So
a
very
common
question
is
about
pagination
of
collection
of
resources.
When
we
want
to,
we
decide
to
have
everything
paginated
by
default,
so
you
cannot
perform
any
rest.
Api
requests
that
the
world
generate
a
very
high
load
on
the
system
and
maybe
produce
a
down
of
the
system,
because
you
download
all
the
information.
D
Just
in
one
single
step,
everything
is
paginated,
it's
paginated
using
a
uniform
approach
and
are
exposed
how
this
is
is
visible
on
the
user
interface,
for
instance,
if
onto
your
own
page,
the
top
Community
component
also
show
pagination,
and
when
you
click
on
to
onto
number
two
of
the
pagination
you
move.
Essentially,
the
angular
browser
is
just
following
the
link
next
in
in
our
response
to
to
to
perform
the
the
subsequent
rest
request
to
download
the
next
page
of
result,
and
so
this
is
what
happened.
D
So,
in
the
help
browser
from
to
into
Health
document,
what
we
have
is
to
include
all
the
pagination
link
into
in
the
link
section.
So
if
you
look
at
the
help
browser,
you
will
see
this
section
where
you
have
for
any
pagination
any
imaginated
collection.
You
will
have
the
link
to
the
fields
page
to
the
current
page
to
the
next
page
and
the
last
page
in
this
pagination
series,
and
you
will
have
access
to
the
list
of
and
point
that,
allow
you
to
perform
some
search.
Some
filtering
over
this
rest
collection.
D
Which
is
another
common
Pitfall
of
rest
API
recipe
I,
usually
could
become
very
expensive
on
in
terms
of
HTTP
requests
if
they
are
very
granular.
So
if
you
just
ask
for
metadata
of
an
item
in
a
request-
and
you
need
to
get
the
list
of
B
stream
in
this
item-
the
list
of
metadata
for
each
of
this
P
stream,
if
you
perform
that
all
with
all
separated
HTTP
requests,
the
cost
of
the
transport
could
be
too
expensive
and
could
not
provide
good
enough
performance.
D
So
what
it
usually
is,
then,
is
to
apply
the
concept
that
is
named
projection
that
allow
you
to
ask
in
a
single
pass
in
a
single
request
to
include
into
response
some
detail
about
the
link
at
the
entity,
and
you
can
Define
which
detail
you
are
interested
in.
D
So
you
can
ask
to
include
full
graph
of
object
related
to
your
request
up
to
default
depth,
of
course,
so
to
the
fourth
is
two
or
you
can
decide
to
go
deeper
and
specifically
specifying
exactly
which
level
of
depth
you
want
to
reach,
or
you
can
also
Define
decide
to
say:
okay,
I'm
interested
in
an
item,
but
I
also
want
to
have
immediately
the
logo
of
the
owning
collection
of
this
item
or
I'm
interested
to
have
to
detail
about
the
submitter
of
this
item.
D
One
important
thing
to
keep
in
mind:
the
projections
respect
the
security.
So
if
you
try
to
follow
the
path
to
discover
Reserve
that
information,
this
will
be
prevented
by
byte
backend
and
you
will
not
get
any
detail
that
should
be
not
disclosed
to
you.
D
Authentication
we
aim
to
be.
We
are
several
sorry.
We
are
stateless.
That
means
that
we
don't
have
any
section
on
on
the
server
side
to
implement
authentication
in
a
stateless
architecture,
to
the
common
practice
is
to
use
a
web
talk
and
authentication
token,
and
this
is
what
also
the
Space
Race
API
have
done.
All
the
previous
displays.
Authentication
methods
are
still
supported,
so
you
can
log
in
using
ldap,
shiblet,
Orchid
and
or
IDC.
Now
that
is
a
new
feature
of
the
Space
7.
D
But
in
our
case
regardless
to
which
authentication
method
you
will
use
at
the
end,
you
will
have
a
JWT
token
back
from
the
rest,
API.
So
a
token
string
that
you
need
to
pass
in
each
subsequent
request
to
stay
authenticated,
how
it
will
look
like.
So
when
you
perform
a
login.
This
is
just
a
login
request
that
is
performed
against
the
password
authentication.
You
call
the
inspective
entry
to
preload,
where
you
will
see
the
username
password
that
has
been
posted,
but
the
interesting
part
is
then
into
responsider.
D
You
will
get
back
to
Builder
token,
the
JWT
token
this
long
string
is
a
standard
is
a
standard
and
you
can
inspect
the
value
of
these.
You
know
this
string,
for
instance,
on
JWT
dot
IO.
This
string
is
composed
of
several
parts.
The
first
part,
the
header
of
this
token
tell
the
system
which
algorithm
hashing
algorithm
you
are
using.
D
The
second
part
will
be
the
payload
where
we
can
provide
sign
it,
data
about
authenticated
users,
so
we
in
our
case
we
include
the
uid
of
the
authenticated
reversion
and
the
expiration
time
of
the
of
this
login
and
the
special
group
that
are
assigned
to
this
user.
This
information
has
been
signed
onto
server
side,
so
you
cannot
modify
these
information
without
invalidate
the
signature
and
to
verify
the
signature.
Of
course,
you
need
to
know
a
secret
that
is
only
known
to
the
backend
side.
D
Due
to
some
technicality,
some
authentication
method
still
required
to
use
of
cookie
of
temporary
cookie.
This
is,
for
instance,
the
case
for
Chevrolet
in
this
open
potential,
the
space
to
cross
Sky
script
referee
for
Gateway
requests,
so
a
specific
kind
of
attack
that
can
be
performed
to
prevent
these
to
to
protect
the
space
against
this
kind,
this
sort
of
attack
we
have
implemented
the
double
semi
cookie
protection
technique.
D
That
is
a
recommendation
from
the
over
community.
D
What
is
mean,
if
you
inspect
to
requests,
you
will
see
that
there
is
a
special
cookie,
a
special
header
that
will
be
a
waste
match
and
we'll
be
checked
on
the
server
side
to
verify,
if
any
accurate,
try
to
eject
your
request,
but
we
will
see
a
detail
later
on
so
another
interesting
example
is
when
you
try
to
make
modification
to
your
data,
so
the
most
common
way
to
do
that
most
powerful
feature
in
the
space
is
the
submission.
We
know
that
this
the
space
submission
is
very
flexible.
D
There
is
a
lot
of
things
that
you
can
configure
and
you
are
going
to
save
a
modification
to
an
item
piece
by
piece,
so
you
will
have
to
alter
the
title
and
thing
like
that
how
you
get
to
this
page.
So
essentially,
this
is
just
a
new
submission
that
they
have
started
to
get
in
this
page.
Several
requests
has
been
performed.
So
initially
you
have
a
post
request
over
the
workspace
item.
D
D
After
that,
the
user
interface
is
performing
a
set
of
several
get
requests
to
retrieve
all
the
detail
about
the
configuration
of
the
submission
form
so
which
field
are
required
in
each
in
each
panel,
which
option
of
accessibility.
Do
you
have
when
you
upload
a
file
if
it
can
be
open
access
under
embargo,
or
things
like
that?
D
When
you
really
perform
a
change?
You
need
to
to
perform
a
patch
request,
so
you
want
to
change
our
Json
representation
of
our
workspace
item
to
modify
some
of
this
attribute
again,
we
decide
to
follow
the
standard
that
best
practice
in
on
the
rest,
API
world
and
we
adopt
to
Json
patch
specification.
D
So
the
Json
that
the
request
is
changed,
look
like.
That
is
an
array
where
you
have
several
operation
in
it
and
you
ask
to
remove
some
part
of
your
Json
object.
Had
other
information
replace
or
move,
maybe
you
want
to
move
out
or
inside.
That
group
put
the
first
order
at
the
end
or
something
like
that
onto
browser.
D
You
can
observe
that,
if
you
put,
for
instance,
my
name
as
author
and
click
on
the
save
button
to
browser
will
show
you
that
there
is,
there
are
some
missing,
monitor,
information
and
understood
a
patch
sequence
will
be
performed
or
with
to
Json
patch
requests
that
include
not
operation.
You
want
to
add
information
where
Boolean
Andrea
is
one
of
two
authors
that
is
required
in
the
first
panel
of
the
configuration
that
is
named
tradition
on
page
one,
and
if
you
look
to
the
this
is
just
a
zoom
in
onto
the
page.
D
If
you
look
to
the
preview
to
the
response,
you
will
see
that,
after
this
patch,
the
object
has
been
updated.
So
the
panel
now
contained
the
information
that
we
have
just
patched,
but
also
the
our
workspace
items
contain
a
new
error
section
that
include
detail
about
which
metadata,
which
section
are
mandatory
and
not
yet
filled.
For
this
reason,
angular
is
able
to
display
the
red
hint
with
the
or
missing
mandatory
information.
D
Thank
you
so
another
nice
thing
about
about
the
web
tool
is,
then
you
can
just
click
right,
right,
click
on
each
request
and
you
can
copy
also
to
core
representation
of
this
request.
So
this
could
be
a
very
common
way
to
extract
from
your
browser
to
request
that,
maybe
you
need
to
perform
on
a
server
script
or
another
language,
and
if
we
will
look
to
the
tale
of
the
previous
patch
requests
in
occur,
we
will
not
alter
the
tail
that
we
have
already
introduced.
D
D
It
contained
the
cross-site
scripting
project
protection
because
contained
the
cookie
and
the
heater
xsrf
token.
D
It
contained
a
correlation
ID
that
is
automatically
generated
by
angular
and
would
help
you
to
debug
what
is
going
on
on
the
backend
looking
for
this
uid
in
your
log
file,
because
all
the
request
alt
log
line,
generated
by
this
browser
session,
we
have
this
uid,
so
you
can
follow
the
user
on
your
log
and
you
will
have
the
JWT
token
40
authentication.
So
these
are
the
detail
about
who
was
logged
in
who
has
performed
this
request
and
at
the
end
we
have
the
real
Json
patch.
D
So
last
but
not
least,
I
want
to
let
you
know
that
we
have
also
a
postman
collection
specific
for
the
space
it's
available
onto
the
space
Labs
GitHub
repository.
So
you
can
download
the
default
settings
for
this
common
user
Tool
to
explore
rest
API.
D
It's
a
really
include.
Alter
requests
are
configurated
using
a
variable,
so
it's
very
easy
convenient
to
switch
from
one
environment
to
another.
So
you
can
check
your
requests
against
the
demo
or
your
local
environment.
You
can
switch
between
one
user
to
another
and
the
the
prescript
the
pre-execution
script
will
take
care
of
all
the
login
dance
so
that
you
will
get
JW
token
for
your
post
and
and
patch
request.
For
instance,
if
you
are
a
postman
user,
please
contribute
back
to
the
GitHub
repository.
D
So
we
want
to
enhance
these
this
collection,
if
you
have
example
of
other
endpoint
or
if
you
found
something
that
is
wrong
due
to
change
into
contract.
Please
open
an
issue
on
pull
request.
They
will
be
very
appreciated.
D
Another
information
to
keep
in
mind
is
that
we
have
a
markdown
repository
where
all
our
rest
contact
rest
documentation
is
available.
Also,
in
this
case,
please
open
issue
pull
request
if
you
found
anything
that
is
missing
or
is
wrong,
it's
very
important
that
we
keep
these
repository
up
to
date
and
we
appreciate
URL
from
that.
D
I
will
left
in
the
in
the
slide
just
a
cheat
sheet
where
or
you
have
all
cross
reference
for
our
rest,
API
technology
that
maybe
will
help
you
in
the
future
to
explore
the
new
displays.
Rest
API
and
with
that
I
lived
floor
to
art,.
E
E
E
So
I'm
going
to
show
a
few
code
examples
while
I'm
doing
this
so
I'm
not
going
to
go
full
screen
with
the
presentation,
so
I
can
switch
in
and
out
easily
I'm
going
to
talk
a
bit
about
how
you
customize
the
dspace
UI
I'm,
going
to
focus
mostly
on
theming,
because
that's
the
first
way
and
the
easiest
way
to
get
into
it.
E
E
What
is
it
and
how
does
it
work
while
angular
is
a
framework
in
JavaScript
for
building
applications
on
the
browser,
so
the
uis,
the
HTML,
is
rendered
via
JavaScript,
actually
typescript
and
angular,
which
is
a
language
based
on
JavaScript
built
on
top
of
JavaScript,
and
then
it
uses
data
from
the
rest
API
as
Andrea
just
explained
in
Json,
and
it
uses
that
to
render
its.
So
this
is
quite
a
complicated
schematic,
but
let
me
walk
you
through
it.
So
what
happens
if
you
visit
an
angular
page?
E
The
initial
request
goes
to
the
node
server
on
the
on
the
front
end
and
that
fetches
the
renders
the
Page
by
fetching
requests
from
the
rest
API
and
to
create
HTML
file,
send
it
entirely
to
the
browser
so
that
Parts,
basically
don't
need
JavaScript.
For
that
you
get
an
entirely
rendered
page
and
then
afterwards
the
JavaScript
starts
up
in
the
browser
and
then
all
following
requests
will
happen
only
via
a
rest
request,
and
then
you
get
a
Json
back
and
then
angular
in
your
browser
renders
the
same
thing.
E
So
this
allows
as
Andrea
mentioned
bolts
and
spiders
or
other
users
that
don't
have
JavaScript
to
just
use
it
as
it
was
any
other
sites
and
just
run
the
same
code
pretend
it's
all
rendered
service
site.
Okay,
an
angular
application
is
built
out
of
components.
Those
are
in
essence,
new
HTML
tags
that
come
with
their
own
code
and
styling.
So
if
you
have
a
look
at
the
screenshot,
everything
you
see
here
is
a
component,
so
the
main
green
border,
that's
the
entire
app!
That's
a
DS,
app
tag.
E
E
So
each
component
consists
of
a
typescript
file,
that's
the
JavaScript
and
HTML
that
contains
a
markup
and
an
scss
file
that
contains
a
style.
So
here's
an
example
for
the
header.
So
if
you
have
a
header
component
that
has
this
decorator
at
the
top
that
says
the
tag
is
going
to
be
DS
header
and
you
can
find
the
style
here
and
the
HTML
there.
E
The
first
style
we're
we
well,
we
started
off
using
bootstrap
back
in
2017
and
bootstrap
uses.
Sas
SAS
is
a
CSS
preprocessor
that
gave
you
things
like
variables
and
and
mixins
and
functions,
and
it
allows
us
to
Nest
CSS
rules
and
Etc
and
bootstrap
uses
these
variables
to
configure
everything
about
it.
Colors
phone
spacing,
but
the
downside
is
that
SAS
variables
can
be
resolved
at
build
time.
You
have
to
compile
their
values
into.
It
can
only
be
resolved
at
build
time.
E
You
have
to
compile
their
values
into
it
and
you
can't
change
them
on
the
flying.
So,
in
order
to
support
dynamic
themes,
we
started
using
native
CSS
variables.
That's
a
more
recent
change
to
solve
the
same
problem,
SAS
already
solved,
but
they
can
be
changed
on
the
Fly
and
we
use
them
to
support
the
dynamic
swapping
of
black
colors.
If
you
have
multiple
teams
in
the
same
repository,
you
go
to
a
different
page
that
has
a
different
team.
E
E
However,
if
you
just
write
your
team
and
you,
you
don't
do
development
for
the
community,
you
can
just
simply
use
the
SAS
variables
if
you
like,
because
as
long
as
you're
within
the
same
team,
it
doesn't
matter
only
for
components
that
need
to
support
multiple
themes.
Do
you
need
to
use
the
CSS
variables?
I
mentioned
them,
however,
because
all
custom
variables
deep
space
edits?
Are
these
CSS
variables
we
won't
add
any
new
SAS
variables,
because
it's
an
extra
step
for
us,
it's
inconvenient.
E
So
how
do
you
go
about
creating
a
new
team?
There
is
a
custom
theme
folder
in
the
in
the
SRC
team.
So
if
you
have
your
project
here,
so
this
is
the
root
of
your
project.
You
have
the
SRC
folder
here
in
themes,
you
have
a
custom
folder
and
that
folder
contains
every
teamable
component
in
dspace.
So
the
easiest
way
to
start
with
a
team
is
just
to
copy
that
folder
to
to
what
you
want
your
team
to
be
because
you
have
to
restart
your
server
after
you
do
so.
E
I've
already
done
this
here.
I've
copied
this
to
the
workshop
team
and
that
contains
all
components
we
might
need
something
else
you
need
to
do
to
enable
your
team
is
to
go
to
angular.json
and
basically
add
another
Global
CSS
file
for
your
team.
So
you
do
that
by
just
duplicating
the
one.
That's
already
there
for
custom
and
adding
that
here,
I've
called
it
workshop
and
workshop
team.
E
Then
you
enable
your
team
in
the
configuration
you
just
say:
A
config.yml,
you,
you
add
a
teams
option
and
you
say
names
Workshop
by
default,
that
will
be
named
d
space
and
the
last
thing
you
need
to
do
is
go
to
the
teams,
SRC
teams,
eager
team
modules,
file
and
add
your
team
in
these
Imports
here,
and
the
reason
for
that
will
become
clear
at
the
end.
But
it's
so
we
can
Team
a
more
complicated
components
that
use
decorators
if
we
get
to
it
at
the
end.
E
E
E
You
just
take
that
selector
and
you
look
for
it
in
your
team.
It
seems
that
this
is
not
a
themeable
component.
Let's
say
a
home
home
news,
then,
for
example,
you
find
home
news.
E
You
look
for
that
and
they
get
a
team
component
like
this
in
order
to
start
using
it
by
default.
It
will
always
refer
to
the
default
implementation
from
dspace,
but
it
all
already
has
an
extra
HTML
and
CSS
file.
So
if
you
want
to
start
overriding
it,
you
can
just
go
and
switch
the
comments
around
and
then
your
own
files
can
be
used
and
those
are
just
empty
files
and
you
can
start
using
them
right
away.
E
So
this
is
basically
just
a
server
I
started
by
running
a
yarn.
Run
start
in
the
root
of
the
components
and
there
you
go.
It
works
so
the
first
thing
most
people
want
to
do
when
they
customize
their
team
is
at
their
their
logo
their
branding.
So
you
can
do
that
by
adding
it
to
the
images
assets,
images
folder
in
your
team,
folder
and
then
theming
the
header
components,
as
we
just
discussed
so
yeah
I
explained
how
to
do
that.
E
E
So
let's
go
to
the
header
team
components
and
what
I
did
is
I
swept
the
swapped
the
HTML
around,
not
the
CSS,
because
I
didn't
need
to
change
that.
Then
I
went
to
the
original
header
copied
that
went
back
swapped
around
pasted
it
here
and
then
I
just
updated.
The
URL
to
the
logo.
Important
to
know
here
is
that
you
need
to
put
your
team
name
in
this.
E
So
you
put
this,
you
put
the
logo
in
assets
images,
but
the
URL
will
always
contain
the
theme,
so
it
has
to
be
assets,
team,
name,
images,
logo
and
then
it's
as
a
logo.
Here
now,
usually,
when
I
do
a
demo
like
this
I
get
invited
by
a
university
or
something
here,
I
had
to
get
creative,
so
we're
just
calling
it
Workshop
repository
and
I
made
a
little
logo.
E
The
next
thing
you
probably
want
to
do
is
change
your
color
scheme,
so
we're
going
to
that's
going
to
do
mainly
have
to
do
with
customizing
bootstrap
variables
and
there's
a
a
file
in
the
theme.
Styles
folder
called
SAS
variable
overrides.
E
That's
this
one
here,
which
is
where
you
can
do
your
overrides
for
bootstrap
variables.
You
can
find
all
the
variables
you
can
customize
in
this
folder
here.
That's
that's
just
the
bootstraps
main
file
and
contains
them
all.
So.
I've
picked
these
couple
of
colors
to
work
with
the
new
logo,
and
you
can
also
overwrite
the
the
CSS
variables
in
the
CSS
variable
overrides
file,
and
you
can
find
them
all
in
this
file
right
here
and
for
this
example.
E
E
So
let's
take
a
look
at
what
that's
doing
so
I
added
the
colors
I
started
just
by
uncommenting
everything
that
was
here
and
I
just
changed.
A
few
colors
I
wanted.
The
reason
for
that
is
because
the
steam
colors
map
is
customized,
and
so
everything
that's
used
here
needs
to
be
defined,
but
most
of
these
I
haven't
changed
only
the
ones
I
mentioned
in
the
slide.
E
So
that
should
look
a
bit
like
this.
It's
not
dramatic.
This
is
a
bit
yellow.
Now
this
is
dark.
This
is
dark
and
the
footer
is
a
brighter
blue.
E
So
a
font
is
also
something
you're
going
to
want
to
do.
It's
a
simple
Import
in
this
file
right
here.
This
SAS
variable
overwrites
file.
Just
at
the
the
font
you
want
to
use
at
the
import
and
then
use
the
font
here.
So
if
we'll
do
that,
it
should
change
right
now,
I
have
an
import.
You
can
get
that
from
like
Google
fonts
will
give
you
give
you
that
line,
and
then
you
can
just
use
the
font
family
here
and
we
should
see
the
space.
7
is
now
a
different
font.
E
Customizing,
the
footer
is
something
you
want
to
do
now.
I
went
into
a
lot
of
detail
because,
but
we're
running
a
bit
late.
So
let's
keep
this
brief.
The
by
default
dspace
has
a
a
really
small
footer,
but
we
we
noticed
that
a
lot
of
people
want
an
extensive
footer
to
add
some
more
links.
So
it
has
a
a
an
option
built
in
to
make
this
a
two-parter.
E
So
that's
what
I
did
I
went
to
the
the
workshop
team,
footer
components
and
I
again
swapped
these
two
arounds
and
then
I
added
a
show
top
footer
true,
and
so
this
is
something
accustomed
to
d
space
into
the
footer
component.
That's
just
a
a
property
from
the
base.
Components
that
you
can
overwrite
by
default
is
false.
You
can
just
add
it
to
true
in
your
overwritten
components
and
then
again,
I
copied
the
HTML
pasted
it
here
and
then
I
tweaked.
E
Some
of
the
contents
added
some
different
clothes
colors
and
we
ended
up
with
something
like
this,
but
by
default,
I
basically
didn't
do
much
to
it.
I
just
changed
the
colors
and
changed
the
alignment
of
the
text
here,
I
Believe
by
default.
This
is
centered,
but
this
this
two-parter
is
basically
a
default
part
of
the
d
space
for
the
component.
E
And
you
can
find
the
details
in
the
slide
deck
if
you're
really
interested
so
for
the
homepage.
News
is
something
most
people
gonna
want
to
customize.
So
I
did
again
the
same
thing:
I
found
the
whole
news
components
so
again:
let's
I
yeah
I
used
that
example
before
so
you
can
use
it.
E
You
find
it
using
the
selector
in
the
this
folder
here,
and
you
can
swap
these
around
for
this
one
I
just
started
from
scratch:
I
didn't
copy
anything
I,
just
added
a
class
with
a
banner
and
then
I
put
some
text
in
between
put
the
logo
on
top
as
well,
and
I
chose
a
photo
from
just.
Can
you
can
I
follow
this
link?
You
know
that
doesn't
work
just
from
like
an
open
source
images
sites
which
I
thought
was
nice
and
worked
with
the
logo
and
I.
A
E
Yeah,
but
it
should
be
in
the
right
place:
I
tested
it
before
I
think
the
server
just
didn't
pick
up
life
that
the
image
was
added
and
restarting
it
should
fix
it,
but
this
is
going
to
take
a
little
longer.
E
Is
there
anything
else?
Well,
let's,
let's
go
more
into
a
stepwise
fashion
of
what
I
did
so
I
added
a
banner
and
then
the
image
and
I
added
the
CSS
to
use
the
image
as
the
background
of
the
banner
and
the
background
size
cover,
will
do
that
thing
where
you
never
see
the
edge,
so
the
image
will
always
fill
up
the
entire
div
and
no
matter
how
big
or
small
you
make
it.
E
The
image
will
already
always
resize
the
fit,
so
it
will
crop
it
crop
the
sides
that
is
the
narrowest,
then
I
bumped
up
the
the
image,
because
every
page
you
see
here
is
done
excellent.
So
if
you
go
to
a
different
page,
you'll
see
there's
always
a
bit
of
margin
at
the
top
here,
and
that's
not
very
nice.
If
you
have
a
nicely
colored
background
image,
so
I
added
a
negative
margin
for
that.
So
that's
what
this
is
doing.
E
E
I
added
some
contents,
okay
and
then
then
we
ended
up
with
this.
One
final
thing
I
wanted
to
talk
about
which
we've
got
a
lot
of
questions
about
and
I
had
never
really
covered
in.
One
of
these
talks
is
a
teaming
Dynamic
components.
We
have
a
lot
of
these
components
in
these
space
that
are
already
Dynamic,
for
example,
this
is
a
list
of
items,
and
items
can
be
different,
can
have
different
entity
types.
E
So
we
have
these
variable
components
that
are
selected
on
the
Fly
to
determine
what
this
list
item
should
look
like.
So
this
is
going
to
be
like
a
publication
components
here
you
have
a
collection
list,
components
Etc
and
all
these
are
were
already
Dynamic.
So
if
you
want
to
make
these
already
Dynamic
teams
team
components
teamable,
you
have
to
do
two
extra
things.
E
They
all
have
a
decorator
to
Define
them
as
such
a
listable
object
component,
and
then
you
have
to
add
the
team
name
as
the
last
parameter
of
The
Decorator,
and
that's
so
that
the
algorithm
that
selects,
which
thing
to
use
in
a
particular
list
knows
which
team
it
belongs
to,
but
because
it
can't
check
the
directory
that
well,
you
haven't
been
able
to
make
that
work
yet
also
what
you
need
to
do-
and
this
is
where
those
entry
components
I
talked
about
at
the
start
command.
E
Is
you
have
to
add
that
to
the
the
entry
components
in
the
eager
team
modules?
So
we
talked
about
this
a
little
bit,
we're
still
a
bit
open,
I.
Don't
so
I
said
you
have
to
import
this
module
here
in
the
EGT
modules
and
that
this
is
the
module
file
that
we
imported,
and
this
is
an
entry
components
array
where
you
can
add
the
new
components
you
want
to
add.
So
I
was
talking
about
Community
lists.
So,
let's
add
that
should
be
added
here
somewhere.
Oh,
it
was
already
there
and
that's
right.
E
I
didn't
have
to
edit
in
this
case
because
it
was
already
there.
So
this
is
a
component
that
has
such
a
decorator
such
a
list
of
object,
decorator
and
I
added
a
team
name
here
and
then
I
have
to
ensure
that
it's
added
here
so
that
when
the
app
starts
it
knows
that
this
decorator
is
there
that
this
component
is
there.
It
has
a
decorator,
so
it
can
choose
from
it.
If
you
don't
do
it,
it
doesn't
know.
Your
component
exists.
Basically.
E
So
for
the
community
list
element
I
wanted
to
well,
let's
go
back.
E
I
wanted
to
add
a
thumbnail,
because
the
recent
items
here
all
of
thumbnails
but
communities
might
have
nice
logos.
You
might
want
to
do
something
visually
attractive
with
those
logos.
So
what
I
wanted
to
do
is
add
thumbnail
sales,
Community
list
components
again,
let's
have
a
little
look
at
where
I
can
find
them.
So
we
can
see
here
the
closest
stack
to
the
what
the
the
thing
I
clicked
on
is
a
community
list
elements.
Let's
look
for
that.
E
Well,
I
already
have
it
open,
but
let's
say
we
don't
in
your
team
folder
and
you
can
find
a
component
that
belongs
to
so
by
default.
It
will
have
this
custom
tag,
but
we
need
to
change
that
to
workflow,
so,
let's
load
the
commit
that
already
has
done
that
workshops
or
in
our
workflow,
which
is
the
name
of
the
team,
and
then
we
can
customize
it.
I
did
the
same
thing
here:
I
swapped,
one
around
the
comments
and
I
copied
the
HTML
from
the
original
and
then
I
added
a
Top
Nail.
E
Now
the
thing
about
thumbnail
is,
of
course,
that
you
need
another
link.
So
if
we
we
take
a
look
at
a
community,
can
we
do
that
here
easily
here?
We'll
have
the
community
top
lists
and
you'll
see
they'll
all
have
this
logo
link,
but
this
logo
link,
if
you
load
this
page,
won't
be
embedded
by
default.
E
So
we
still
need
to.
We
either
need
to
embed
them
at
the
request.
But
if
you're
teaming
that's
not
easy
to
do
because
then
you
have
to
change
the
source
codes,
the
display
source
code.
It
can
stay
nicely
within
your
team
folder.
So
what
we
can
do
is
just
request
follow
the
link
for
that
logo
afterwards.
E
So
what
I
did
is
I
went
to
the
grid
version
of
this
component.
I,
don't
think
it's
teams,
but
if
we
look
at
the
base
version.
E
The
community
grid
element
components
that
already
had
a
thumbnail
and
it
already
had
the
code
to
retrieve
the
logo.
So
what
this
does
basically
is
when
anytime,
you
change.
The
object
which
is
in
this
case,
Community
is
going
to
check.
Does
it
have
a
logo
link
if
so,
resolve
that
link
so
I
got
that
from
here
and
I
copied
it,
so
the
logo
would
be
loaded,
and
now
you
can
see
it
loads,
the
logos.
E
E
You
can
get
the
code
for
this
webinar
at
this
URL
and
I'll
pause
here
for
a
second,
so
you
can
also
use
the
QR
code.
If
that's
the
easy
way
to
get
the
link.
E
And
I
think
that's
it
and
I
think
Tim
is
going
to
take
over
now
right.
Yes,.
A
A
First
yeah
first
off
yeah
I,
want
to
thank
both
Andrea
and
art.
I
think
that's
extremely
useful.
I,
like
the
I,
also
want
to
add
it's
great,
seeing
these
presentations
Move
Along
over
time.
A
The
last
time
we
did
this
was
several
years
ago,
and
it's
good
to
see
questions
coming
out
of
the
community
starting
to
get
answered
in
these
talks
like
I
I,
think
that
Community
collection
logo
question
may
have
come
out
of
the
mailing
list-
art
if
I
recall
correctly,
but
but
it
was
great
to
see
a
good
example
of
that
so
I
had
a
couple
things
here
in
the
wrap
up
just
to
add
on
to
this.
A
So
if
you
want
to
move
the
next
slide
here,
if
this,
if
this
presentation
has
inspired
you
to
kind
of
look
more
at
the
code
play
around
with
the
space
angular
or
the
rest,
API
I
did
want
to
note
to
folks
that
we
always
take
contributions
from
the
community
if
you're
just
getting
started
a
great
way
to
sort
of
learn
and
also
help
us
at
the
same
time,
is
to
take
a
look
at
our
good
first
issue:
tickets
in
GitHub
and
there's
also
tickets
that
are
labeled,
help
wanted.
A
Those
are
ones
that
we're
looking
for
volunteers
to
chip
in
on
the
good
first
issue.
Tickets
are
generally
going
to
be
very
small.
We
think
that
they're
not
really
severe
bugs
necessarily
but
there's
something
that
a
new
person
could
pick
up
play
around
with
and
when
you
feel
comfortable,
send
us
a
pull
request.
So
if
you
want
to
try
and
help
in
that
way,
I
would
really
encourage.
This
is
a
great
way
to
learn
on
your
on
your
feet.
A
Basically,
and
if
you
need
any
help
getting
familiar
with
that
or
where
to
find
all
those
the
links
there
go
right
to
the
good
first
issue
tickets,
you
can
also
send
me
an
email
or
ping
media
slack,
because
we'd
love
to
get
others
involved
just
helping
out
the
more
hands
we
get
into
the
code,
the
quicker
we
can
all
move
together.
I
did
also
want
to
note.
We
have
a
public
7.5
project
board.
A
I
showed
this
off
in
yesterday's
talk
briefly
at
the
end
in
the
Q
a
session,
but
if
you're
interested
in
just
helping
out
to
test
new
code,
if
you're,
if
that's
of
interest
to
you
as
well,
we
also
love
to
have
testers
help
us
with
new
development
we're
working
on.
So,
if
there's
a
bug
that
you've
run
into
and
you
find
that
we're
already
working
on
a
fix
for
it.
A
If
you
go
to
our
project
board
and
find
the
pull
request
there
it'll
be
under
the
needs,
reviewer
assign
column
or
the
under
review
column,
you
can
always
test
it
for
us.
Let
us
know
how
it
works
for
you.
If
you
notice
any
issues,
give
us
that
feedback,
because
if
it
works
for
you
and
we
have
a
chance
to
quickly
look
at
it
ourselves
that
can
help
us
move
it
into
the
code
base
as
quick
as
possible.
A
So
those
are
two
ways
that
brand
new
people
can
help
out
immediately
into
the
dspace
project
and
really
help
us
move
forward
quicker,
so
next
slide
last.
Lastly,
I
wanted
to
note
two
ways
to
contribute
outside
of
that,
so
once
you
get
your
feet,
wet
a
little
bit
more.
If
you
want
to
get
even
more
involved,
these
are
two
ways
to
do.
A
So,
if
you
are
a
developer,
we
have
open
development
meetings,
every
Thursday
and
that's
the
d
space
7
working
group
and
this
meeting
we
actually
walk
through
that
7.5
board
or
whatever
the
next
release
is
we'll
take
some
time.
Looking
at,
what's
left,
what's
coming
up,
what
pull
requests
have
just
been
created?
Get
them
assigned
talk
about
problems
we
may
be
hitting
hitting
in
the
code
base.
It's
a
pretty
technical
meeting.
But
if
that's
your
thing,
we
welcome
anybody
to
join
us
and
help
out
there.
A
You
don't
have
to
join
those
meetings,
though,
if
you
want
to
just
give
back
code,
you
are
welcome
to
do
that
just
within
GitHub
and
get
in
touch
with
me.
If
you
have
any
questions
on
how
best
to
do
that,
but
honestly
you
can
volunteer
for
tickets.
If
tickets
are
of
interest
to
you,
send
us
pull
requests,
we
will
help
them
get
reviewed.
You're
also
welcome
to
join
that
process.
Within
These
development
meetings,
if
you're,
less
technical
or
just
want
to
talk
d
space
with
other
people
who
use
dspace.
A
The
dcat
meetings
are
great
place.
To
also
do
that.
That's
our
repository
manager,
interest
group.
They
meet
on
a
monthly
basis
with
the
next
one
coming
up
here
in
mid-December,
and
this
group
is
very
important
to
provide
feedback
back
to
developers
and
to
governance,
so
they
they
do
help
us
with
use
cases.
They
help
us
answer
questions
about.
How
is
this
thing
used
in
dspace
and
we
want
to
change
the
change
how
this
may
function?
Does
this
look
good
to
this
team?
A
That's
the
team
we
go
to
when
the
developers
have
questions
that
we
want
answered
from
a
user
perspective.
So
if
that's
of
interest
to
you
or
you
just
want
to
chat
with
other
people
who
use
dspace
and
get
tips
from
them,
you
might
consider
joining
some
of
those
dcat
meetings
and
they're
publicly
posted
on
the
mailing
list
when
they
come
up.
So
let's
move
along
here
to
the
last
slides.
So
now
it's
time
for
your
questions.
We
have
about
29
minutes
here
and
I
know.
There
have
been
questions
already
in
the
public
q,
a
document.
A
If
you
want
to
go
to
the
last
slide
here
art
we
can
leave
that
up
while
we're
doing
some
q,
a
I
did
want
to
note
before
we
get
into
the
Q
a
portion.
These
Workshop
slides
are
immediately
available
at
the
first
link
here
and
I'll.
Get
that
copied
into
our
chat
for
you
all.
So
you
can
get
these
slides
to
take
home
today.
The
video
will
be
sent
out
to
all
attendees
and
they
will
also
get
the
videos
for
all.
The
sessions
will
be
posted
to
the
mailing
list.
A
Probably
sometime
next
week,
the
public
q,
a
doc
as
I
mentioned,
is
at
the
bottom
here.
That's
that
link
we've
been
sharing
within
our
chat
as
we
go,
and
that
is
where
you
can
ask
any
questions.
You
have
about
dspace
seven.
We
will
ensure
that
they
do
get
answered.
They
may
not
all
get
answered
today,
and
there
are
many
and
the
last
two
sessions
that
we
were
not
able
to
answer
live,
but
they
will
get
answered
within
that
document.
A
So
if
you
ask
a
question
in
that
document,
I'll
ensure
they
do
get
answered
back
to
you.
So
you
get
that
sort
of
feedback,
but
let's
go
ahead
and
go
to
some
questions
that
have
been
asked
in
there
and
I'm
going
to
bring
some
of
these
back
to
Art
in
Andrea.
Of
course.
A
So
here's
here's
a
first
question
here
and
I.
This
has
been
partially
answered
as
part
of
Art's
presentation,
but
the
question
is:
are
there
ready-made
themes
for
d
space
7?
If,
yes,
how
can
they
be
configured?
I
think
that
you've
showed
a
little
bit
of
that
art.
But
did
you
want
to
just
kind
of
mention
anything
else
about
the
theming
process
and
what
themes
are
available.
E
Yes,
so
the
the
main
ready-made
team
we
have
the
main
example
team
is
the
dspace
team,
so
by
default,
I
I
didn't
really
explain
that,
but
by
default
you
have
let's
find
that
config
file
again.
E
The
default
team
is
basically
actually
the
base
team.
We
worked
on
that
for
the
entire
development
of
these
space
seven
and
it
is
just
plain
bootstrap.
So
while
we
we
made
a
couple
of
tweaks,
but
we
tried
to
keep
everything
as
vanilla
bootstrap
as
possible
to
keep
make
it
as
steamable
as
possible,
or
it
doesn't
pick
up
the
config
file.
E
So
so
that's
what's
basically
what
all
the
components
in
the
the
main
app
folder
are:
they
they
use
the
the
base
team.
Then
these
based
team
sits
on
top
of
that
and
that's
basically
a
cost.
A
copy
of
the
custom
team
custom
team
again
doesn't
make
any
changes.
This
just
refers
back
to
the
the
base
components
here.
E
The
the
space
team
does
make
a
few
changes
and
you
can
add
that
on
top
of
that,
so
that's
what
you
get
on
a
demo.dspace.org,
so
I
have
to
restart
my
server
I'm,
not
going
to
do
that
locally.
So
I'll
put
those
up
side
to
side
side
by
side,
so
you
can
see
the
difference.
It's
almost
there.
E
So
basically,
this
this
whole
news
with
the
background
image,
the
green
line,
the
the
color
scheme,
the
font,
that's
all
the
main
d
space
team,
and
this
is
the
base
bootstrap
team,
as
you
get
it,
and
also
when
what
you
start
from
when
just
if
you
start
from
the
custom
team.
So
those
are
your
two
options.
Basically,.
A
A
A
Let's
see
next
up
here,
I
do
want
to
note,
and
this
came
across
the
chat.
This
isn't
a
question,
but
more
of
a
comment.
Pascal
Becker
from
the
library
code
had
noted
that
to
Andrea's
point
about
having
a
client
library
that
the
library
code
organization
has
started
a
dspace
python,
rest
client
Library,
and
he
shared
the
the
link
in
chat.
A
It
is
also
in
that
q,
a
document
so,
if
folks
are
interested
in
using
a
python
library
to
interact
with
the
rest,
API
take
a
look
at
that
and
maybe
help
Library
code
build
that
out
even
further.
A
This
might
be
one
for
Andrea,
although
I
think
I
know
the
answer
to
this
one
as
well,
but
someone's
asking
if
there's
an
example
of
how
to
do
a
deposit
using
the
rest
API
directly,
so
Andrea
do
you
happen
to
do
you
know
the
answer
that
one,
if
not
I,
can
look
it
up
here?
Yes,
we.
D
So
if
you
expect
a
postman
collection,
you
will
found
how
to
create
the
new
and
reward
space
item,
starting
from
an
empty
one
and
filling
out
information
or
by
uploading
the
a
PDF
file
and
build
metadata
around
tspdf
file,
for
instance,
and
in
my
today's
slide
we
also
have
seen
that
you
can
just
inspect
what
the
browser
do.
D
So
essentially,
you
will
have
a
post
request
to
create
the
empty
workspace
item
and
that's
subsequent
patch
request
to
feel
of
the
metadata
Auto
section
of
this
workspace
item
that
you
need,
and
if
you
try
to
deposit
that
you
will
see
the
subsequent
request
that
is
needed.
That,
essentially,
is
to
post.
A
Excellent
yeah
and
good
to
know
about
that
Postman
example:
I
forgot
that
that
was
there
and
I
did
also
find
while
Andre
was
talking,
we
do
have
some
basic
documentation
on
our
rest
contract
around
this
I.
Just
added
that
as
a
link
in
the
chat
I
will
also
copy
it
into
the
Q
a
document
later
on,
but
there's
a
submission
page
of
the
rest
contract
that
walks
you
through
the
basics
of
the
submission
process
and
what
endpoints
you
would
use
to
add
different
data
to
that.
A
But,
as
Andrea
noted
there's
an
example
in
Postman
and
also
it
is
very
useful
to
be
watching
what
the
user
interface
is
sending
to
the
rest
API,
that's
the
easiest
way
to
figure
out
how
to
use
the
rest.
Api
endpoints
is
walking
through
what
Andrea
showed
us
earlier
and
actually
watching
what
the
user
interface
is
sending
back
foreign.
A
Let's
see
some
other
questions
here.
Some
of
these
are
not
directly
related
to
developments.
Let
me
skip
to
ones
that
are
more
related
to
things
we
did
today.
This
is
somewhat
related,
but
it's
kind
of
a
similar.
It
might
be
a
question
for
Andrea.
More,
so
is
it
possible
to
make
API
calls
from
dspace
to
another
system,
I'd
like
to
incorporate
information
from
another
source
into
the
deposit
forms,
as
well
as
the
search
results.
D
D
So
you
will
found
find
a
piece
of
java
code
that
will
create
this
external
system
and
we'll
convert
information
from
the
external
system
into
the
space
format
to
be
imported,
and
also
there
is
an
extract
metadata
step
is
named
that
you
can
configure
that
eventually
will
be
triggered
when
you
put
a
specific
or
persistentifier
or
in
your
submission,
and
will
automatically
look
up
the
external
source
to
extend
your
metadata.
So
this
could
be
crossref
if
you
put
the
UI
and
the
metadata
will
be
grabbed
out
automatically
from
the
cross
left.
A
E
The
approach
and
way
I
described
is
the
best
approach.
If
you
want
some
some
data,
that's
that's
integrated
with
these
space
and
it
has
to
go
through
the
rest
API,
because
this
way
we're
still
contacting
the
space
rest
API
from
the
angular
UI.
If
you
want
to
have
like
a
different
Source
like
I,
don't
know
include
tweets
from
somewhere
in
your
home,
page
or
or
some
other
web
Source.
That's
not
not
really
related
to
these
based
objects.
E
A
One
of
the
questions
here
is:
is
there
a
set
of
tutorials
that
you
would
recommend
for
a
crash
course
in
these
Technologies,
so
for
angular
for
spring
for
rest?
Are
there
tutorials
that
you
both
know
about
that
are
useful
for
us
to
to
link
to
from
these
slides
and
for
to
provide
us
resources
and
it
may
it
may
be
very
off
the
top
of
your
head
right
now.
I
realize
that,
but
it
might
be
something
that
we
can
provide
later
on.
A
If
there's
resources
that
you
all
use
regularly
to
train
staff
to
to
reference
any
of
that
it'd
be
useful
to
share
those
as
far
as
tutorials
that
others
may
find
useful.
E
So
yeah
for
angular
I
would
definitely
say
the
tutorials
on
the
angular.io
site,
I've
gotten
very
good
and
very
comprehensive
and
the
ngrx
ones
as
well,
because
we
didn't
touch
touch
it
much
because
it
lies
at
the
very
core
of
the
space
and
you're
not
going
to
likely
getting
involved
with
it
if
you're
just
customizing
it.
But
Andrea
touched
on
a
little
bit.
E
So
the
entire
state
of
the
application
is
stored
in
a
an
ngrx
store
and
if
you
really
want
to
get
and
deep
with
the
dspace
development
you're
going
to
have
to
learn
how
that
works,
and
you
can
just
go
to
the
ngrx
sites.
That
also
has
great
tutorials
on
how
to
use
it.
A
D
From
the
Java
perspective,
I
guess
that
the
best
source
is
a
spring
boot
tutorial
for
spring
spring
data.
Rest
is
important
to
know
that
we
are
not
using
directly
spring
data
rest,
but
we
are
trying
to
mimic
as
much
as
possible
to
behavior
of
spring
that
arrest.
So
if
you
follow
this
tutorial,
if
you
look
to
their
documentation,
you
will
understand
a
lot
of
the
design
that
are
behind
the
space,
crease
Eddie
space.
Sorry-
and
you
can
expect
that
the
same
approach
is
used
into
this
space.
Rest
API.
A
A
I'm,
seeing
some
there's
a
question
in
the
chat
that
might
be
for
art
yeah
in
terms
of
why
doesn't
the
footer
and
homepage
files
exist
in
the
themes
folder?
Sometimes
they
only
exist.
Within.
A
Only
home
page,
oh,
this
is
talking
about
the
dspace
theme.
So
why
don't
some
components
exist
in
the
dspace
theme,
whereas
they
exist
in
the
custom
theme
or
elsewhere.
E
Because
the
custom
theme
contains
everything,
but
if
you
you're
ready
with
your
team
you're
better
off
removing
everything
you
don't
need,
because
all
the
components
you
keep
in
there
that
are
not
needed
are
only
going
to
add
to
your
compile
time.
It's
not
going
to
make
the
application
bigger,
because
they're
only
downloaded
if
they're
needed,
but
it
will
add
to
the
build
time
so
for
the
dspace
team.
We
cleaned
it
up
and
threw
everything
out
that
wasn't
needed.
A
Yeah
and
so
that's
important
to
realize
when
you're,
comparing
the
d
space
theme
versus
the
custom
theme
and
where
you
want
to
start,
the
custom
theme
does
include
every
single
thing.
You
can
possibly
theme.
So
if
you
start
from
there,
you
may
want
to
remove
things
later
on.
Like
art
museum,
your
other
approaches,
you
can
start
minimalist
and
start
with
that
d.
Space
theme,
which
only
includes
a
couple
things
you
can
theme
and
potentially
copy
more
things
into
it.
From
that
custom
theme.
E
So
that's
the
way
you
would
do
that.
If,
if
there's
a
component,
you
want
a
team
that
isn't
part
of
the
dspace
team,
you
can
just
copy
it
over
in
the
same
relative
position
from
the
custom
team
and
then
you
do
have
to
remember
to
add
it
to
the
module
as
well.
But
then
you
just
look
at
the
custom
theme
modules.
Where
is
it
added
and
you
add
it
to
the
space
module
at
the
same
place.
A
Yep
excellent,
let's
see
I'm
looking
for
other
good
questions
here,
there's
a
question
in
the
chat,
and
it's
also
in
the
in
the
document
around
I'm
planning
to
extend
the
oidc
authentication
to
provide
authorization
in
d
space.
Can
you
direct
me
to
development
in
a
in
deployment
models
to
do
custom
additions?
A
I'm,
not
sure,
if
that's
easy
enough
to
answer
here
quickly,
I
do
just
want
to
say
that
I
noticed
that
question
I
do
think
that
there's
good
examples
in
our
authentication
plugins
directory
of
how
you
can
how
you
can
modify
the
existing
authentication,
plugins
I
think
that,
rather
than
trying
to
deploy
it
as
a
custom
Edition,
you
might
want
to
consider
customizing
it
within
the
main
code
base
and
sending
us
a
pull
request
because
I
know
this
is
something
that
others
have
asked
for
out
of
the
oidc
plugin.
A
So
that
might
be
a
recommended
approach.
Here
is
if
you
can
work
on
the
code
itself
and
send
us
some
updates,
we
can
help
see
if
we
can
get
that
into
the
next
release
of
dspace.
I,
don't
know
Andrea.
If
you
have
anything
else
to
add
about
that
or
or
art
as
well
on
the
back
end,
if
not
that's
fine
yeah,
that's.
D
A
Yep,
okay
and
I
can
add
more
details
into
some
into
the
questions
in
the
Q.
A
document
I
will
note
that
I
am
jumping
around
the
Q
a
document
here,
because
there
are
some
things
that
are
much
easier
to
answer,
live
and
other
things
where
it's
much
easier
for
me
to
send
you
a
link,
so
the
I
am
purposely
skipping
over
a
couple
of
these
that
I
know.
I
can
answer
later
very
quickly.
A
A
If
you
add
this
into
the
Q
a
document,
the
easiest
way
to
add
https
is
often
using
a
proxy
in
front
of
the
backend
and
the
front
end,
so
you
could
use
Apache
or
nginx
and
do
https
in
either
Apache
or
nginx
the
same
way
you
would
do
for
any
other
website,
but
there
are
plenty
of
what
there's
other
ways
in
the
documentation
that's
listed
out
as
well,
so
I'd
recommend
checking
the
docs
and
letting
us
know.
A
If
there's
questions
you
may
have
specifically
about
what
the
documentation
says
and
I
will
note
on
that
note
as
well,
if
you,
if
you're,
checking
the
documentation,
if
anybody's
using
documentation,
whether
it's
rest,
API
docs,
docs,
that
we
have
around
how
to
work
with
angular
or
customized
angular
installation
docs
upgrade
docs
any
of
that
sort
of
stuff.
The
documentation
is
really
a
collaborative
activity
if
you're
finding
things
that
are
not
documented
well
there.
Let
us
know
if
you
find
something
if
you
figure
out
something,
that's
not
documented,
and
you
want
to
share
it
back.
A
That's
even
better
we'd
love
you
to
contribute
to
our
documentation,
get
in
touch
with
me.
If
you
need
access
rights
to
do
so,
but
it's
really
a
collaborative
activity
to
make
sure
that
we're
providing
as
much
information
as
we
can
to
all
the
users
of
dspace.
So
that's
another
place
that
you
can
contribute
directly
to
the
dspace
project.
A
Let's
see
here
what
other
questions
can
I
ask
and
to
hear
there's
some
very
specific
questions.
I,
don't
know
if
they're
easy
enough
to
answer
customization
and
angular.
What
can
be
the
reason
for
imagination,
not
displaying
I'm,
guessing
that
there
probably
would
be
an
error
if
you're,
trying,
if
you're
customizing
a
d
space
angular
and
something
is
not
displaying.
Usually
that
means
there's
an
error
going
on,
and
that
is
where
you
can
find
the
error
using
our
troubleshooting
guide,
which
I
linked
to
yesterday.
A
You
can
also
find
errors
in
angular,
often
using
the
browser
Dev
tools
with
which
Andrea
showed
off.
It's
really
useful,
with
deep
space
7
to
get
familiar
with
your
browser's
development
tools
when
you're
doing
anything
with
angular,
because
you
can
not
only
see
what
requests
it
makes
to
the
rest
API,
but
you
can
also
see
errors
that
are
appearing
in
the
angular
application
itself.
A
When
you
do
customization
and
those
errors
can
lead
you
to
maybe
a
bug
you
have
on
your
customization
code
or
something
that's
set
up
wrong,
and
there
are
also
the
information
we
would
need
to
really
help
out
with
specific
problems
that
are
going
on.
I,
don't
know
if
there's
anything
more,
you
want
to
add
to
that
art
on
that
particular
one
on
debugging.
E
Angularly
because,
as
you
said,
I
don't
know
enough
to
say
what
the
cause
of
this
pagination
issue
is.
Unless
I've
seen
it
yeah.
A
Exactly
so
yeah
and
debugging
in
general,
we
do
have
a
great
troubleshooting
guide
that
we've
worked
on
over
time
and
again
we
can
make
improvements.
There
folks
have
issues
that
with
the
guide,
but
the
guide
itself
here,
I'll
link
in
here
steps
you
through
trying
to
find
errors
in
deep
space,
seven
starting
from
the
UI
perspective
and
going
to
your
Dev
tools
and
looking
for
possible
areas
there,
and
also
looking
on
the
back
end
for
errors
that
may
be
logged
in
the
dspace
logs.
A
So
it's
really
important
to
walk
through
that
guide
when
you're
having
weird
behaviors,
because
that
can
often
lead
you
to
what
the
underlying
error
message
is,
and
the
underlying
error
message
is
what
is
most
important
to
us
in
terms
of
helping
you
debug
it.
So
if
you
find
an
underlying
error
message,
it's
very
useful
to
share
that
on
the
mailing
list.
If
you
need
help
or
slack
or
wherever,
and
that
way
we
can
help
you
really
narrow
down
what
the
exact
problem
was
or
is.
A
There's
a
question
here
about:
could
csrf
double
submit
cookies,
give
problems
with
local
installation
for
Windows
development.
They
should
not
I
I
can't
answer
the
entirety
of
your
question,
because
some
of
this
sounds
like
you
may
need
to
debug
some
of
the
issues,
but
the
only
thing
that
causes
issues
with
csrf
double
submit
cookies
is
SSL
and
that's
the
main
reason
we
have
to
require
https.
Whenever
you
move
to
production
is
because
otherwise
browsers
will
block
those
cookies.
A
If
you
don't
have
https
enabled
and
that's
just
a
security
security
setting
in
modern
browsers,
they
will
block
any
cookie.
That
is
untrusted
in
order
to
keep
your
browser
secure,
and
so
that
is
worth
being
aware
of.
If
you're
attempting
to
use
dspace
from
an
external
machine-
and
you
don't
have
https-
enabled
you're-
probably
not
going
to
be
able
to
log
in
because
those
csrf,
cookies
and
and
similar
will
get
blocked
and
that
will
block
the
entire
authentication
process.
E
I'd
like
to
add
to
that
go
ahead,
I
would
wouldn't
recommend
using
a
self-signed
certificate
year.
It's
easy
enough
to
use
let's
encrypt
nowadays
to
just
get
a
free
certificate,
because
I've
heard
a
lot
of
strange
issues
from
people
using
self-science
certificate
that
get
bugs
that
eventually
turn
out
to
be
caused
by
that
have
weird
error
messages,
so
I
advise
to
just
get
on
let's
encrypt
certificate,
if
you
can.
A
Good
point
yeah
and
let's
encrypt,
is
free
and
again
a
lot
of
these
issues
here
with
SSL
it's
more
around
the
browser
behavior
these
days.
It's
not
dspace
trying
to
force
you
to
use
it,
although
we
would
still
highly
recommend
it
because
it's
much
more
secure,
but
but
it's
really
that
browsers
have
become
more
secure
over
time,
and
so
that's
just
the
the
way,
the
nature
of
things
to
try
and
protect
your
users.
A
A
I'm
gonna
ask
this,
although
this
may
require
more
more
playing
around
in
the
system.
I'm,
not
sure
what
the
answer
is
myself,
but
maybe
art
or
Andrea
would
know.
Is
it
possible
to
replace
the
default
badge
in
the
item
list
by
using
a
custom
type
badge
based
on
the
DC
type
field?
So
it's
basically
can
you
change
what
badges
may
appear
in
a
list
of
items
based
on
a
metadata
field?
Is
that
possible
I?
Don't
know
the
answer
off
the
top
of
my
head.
I,
don't
know
if
either
of
you
do.
E
E
We
have
the
object,
so
we
have
all
the
metadata,
so
it's
quite
trivial
to
just
use
the
object
to
do
something
with
the
metadata
and
have
a
different
badge
here,
based
on
the
metadata.
E
Yes,
it
is
possible.
I
think
this
will
be
teamable
already,
because
this
is
something
small,
so
you'll
need
to
either
change
it
here
directly
or
make
it
T-Mobile
and
there's
info
on
how
to
do
that
on
the
wiki
as
well.
A
Yep
excellent,
so
it's
good
that
you
figured
out
quickly,
and
that
is
a
good
side.
Note
here,
is
that
it
is
worth
noting
that
as
you're
building
themes,
there
are
some
components
in
d
space
7
that
are
not
yet
themeable.
Most
of
the
components
you
will
find
are
themable,
but
if
you
run
across
one
that
is
not
yet
themeable,
you
either
have
to
modify
it
in
that
core
code,
like
art,
saying
or
you
can
help
make
it
themeable.
A
There
is
documentation
on
how
to
make
any
component
themeable
in
our
in
our
docs,
and
we
can
also
guide
you
through
that
there's
also
old,
pull
requests
that
others
have
done
the
same
sort
of
thing.
That
would
be
a
great
way
to
give
back
to
the
community.
If
you
find
something
you
want
to
make
themeable
and
help
us
make
it
themeable,
it's
not
too
difficult
of
a
process.
It
just
takes
a
lot
of
effort
to
move
to
make
every
single
component
themable.
E
E
Explanation
on
why
that
is
it's,
because
an
angular
app
is
not
meant
to
basically
choose
a
different
component
based
on
routing
and
and
all
these
variables
we
had.
So
in
order
to
support
the
teams
we
had
in
deep
space,
XML
UI
display,
6
and
then
the
xmlui,
where
you
have
like
regular
Expressions
that
can
determine
which
team
you
use.
We
had
to
basically
turn
every
component
that
needs
to
change.
E
Based
on
the
theme,
we
have
to
turn
that
into
a
dynamic
components
so
to
make
a
component
dimmable
will
basically
mean
to
replace
the
component.
That's
there
with
a
little
thing
that
says
themed
version
of
that
component
and
and
then
we
can,
then
then
it's
Dynamic,
and
then
we
can
replace
it
on
the
Fly.
A
Excellent
and
so
I'm
going
to
wrap
it
up
there,
because
I
I
think
we've
actually
hit
most
the
questions
in
the
Q,
a
document
there's
only
about
13
of
them
there,
a
couple
of
the
others
I
think
is-
are
going
to
require
documentation,
I'm,
seeing
a
lot
of
thank
yous
and,
and
things
of
that
sort
in
the
in
the
chat.
So
it
looks
like
folks
are
extremely
happy
for
for
what
what
has
been
presented
today
and
all
this
week
as
well.
A
Of
course,
I
will
also
note
just
as
an
informational
thing.
I
saw
about
400
people
in
here
at
once,
so
we
had
a
very
good
attendance
today,
excellent
to
see
that
that
a
good
amount
of
interest
and
and
wanting
to
learn
more
about
d
space,
seven,
but
let's
go
ahead
and
wrap
up
for
today.
The
questions
that
remain
in
this
q,
a
document
will
get
answered
in
the
Q
a
document.
So
if
you
have
a
question
that
you
are
dying
to
ask,
you
can
still
add
stuff
into
there.
A
You
can
also
keep
an
eye
on
it.
If
you've
already
asked
a
question
there,
art
and
Andre.
If
you
have
a
chance
to
help
me
out
with
any
of
them,
I'd
appreciate
some
some
chipping
in
on
the
questions
for
this
Workshop,
but
I
will
also
try
and
capture
down
what
we
have
already
answered
here
today.
A
So
with
that
I
think.
Thank
you
all
for
your
attendance
today,
as
Natalie
said
at
the
beginning
of
of
the
the
webinar
today
and
before
each
of
them
on
other
days.
We
really
encourage
you
to
to
see
if
you
can
get
your
institution
can
to
become
a
member
or
give
back
through
our
dspace
Development
Fund
or
other
fundraising
opportunities,
the
scos
fundraising
opportunities.
That
is
how
we
are
able
to
give
you
these
workshops
for
free.
A
It's
also
how
we
can
keep
dspace,
free
and
open
source
from
for
everyone,
along
with
your
collaboration
in
the
code.
Funding,
really
helps
because
that
does
pay
for
my
job.
It
pays
for
Natalie's
role
as
well,
and
we
want
to
be
able
to
keep
making
d
space
better
for
everybody.
So
if
you
have
a
chance
to
do
that
at
your
institution,
we'd
love
it
for
those
of
you
who
are
already
members.
Thank
you
very
much
for
all
of
that
and
other
than
that
have
a
good
rest
of
your
week.
B
I
just
wanted
to
add
one
thing
that
came
up
that
was
going
around
Juan
Victory
is
organizing
a
group
that,
in
order
to
share
a
virtual
box
or
virtual
instance
of
dspace,
so
perhaps
we
could
follow
up
with
him
later
because
it
seems
like
there
was
a
lot
of
interest
in
that.
That's
why
people
were
sharing
all
their
email
addresses
in
the
chat.