Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
moodle
moodle
Commits
12958850
Commit
12958850
authored
Dec 30, 2016
by
Juan Leyva
Browse files
MDL-49423 admin: Support optgroup in admin_setting_configmultiselect
parent
25905de5
Changes
4
Hide whitespace changes
Inline
Side-by-side
admin/templates/setting_configmultiselect_optgroup.mustache
0 → 100644
View file @
12958850
{{
!
This
file
is
part
of
Moodle
-
http
:
//
moodle
.
org
/
Moodle
is
free
software
:
you
can
redistribute
it
and
/
or
modify
it
under
the
terms
of
the
GNU
General
Public
License
as
published
by
the
Free
Software
Foundation
,
either
version
3
of
the
License
,
or
(
at
your
option
)
any
later
version.
Moodle
is
distributed
in
the
hope
that
it
will
be
useful
,
but
WITHOUT
ANY
WARRANTY
;
without
even
the
implied
warranty
of
MERCHANTABILITY
or
FITNESS
FOR
A
PARTICULAR
PURPOSE.
See
the
GNU
General
Public
License
for
more
details.
You
should
have
received
a
copy
of
the
GNU
General
Public
License
along
with
Moodle.
If
not
,
see
<
http
:
//
www
.
gnu
.
org
/
licenses
/
>
.
}}
{{
!
@template
core_admin
/
setting_configmultiselect_optgroup
Admin
multiselect
setting
template
with
optgroup
support.
Context
variables
required
for
this
template
:
*
name
-
form
element
name
*
id
-
element
id
*
size
-
element
size
*
options
-
list
of
options
not
grouped
*
optgroups
-
list
of
options
grouped
containing
the
group
label
and
for
each
option
:
name
,
value
,
selected
Example
context
(
json
)
:
{
"name"
:
"test"
,
"id"
:
"test0"
,
"size"
:
"3"
,
"options"
:
[
{
"name"
:
"Option 1"
,
"value"
:
"V"
,
"selected"
:
false
},
{
"name"
:
"Option 2"
,
"value"
:
"V"
,
"selected"
:
true
}
]
,
"optgroups"
:
[
{
"label"
:
"Group 1"
,
"options"
:
[
{
"name"
:
"Option 3"
,
"value"
:
"V"
,
"selected"
:
false
},
{
"name"
:
"Option 4"
,
"value"
:
"V"
,
"selected"
:
true
}
]
},
{
"label"
:
"Group 2"
,
"options"
:
[
{
"name"
:
"Option 5"
,
"value"
:
"V"
,
"selected"
:
false
},
{
"name"
:
"Option 6"
,
"value"
:
"V"
,
"selected"
:
true
}
]
}
]
}
}}
<div
class=
"form-select"
>
<input
type=
"hidden"
name=
"
{{
name
}}
[xxxxx]"
value=
"1"
>
<select
id=
"
{{
id
}}
"
name=
"
{{
name
}}
[]"
size=
"
{{
size
}}
"
multiple
>
{{#
options
}}
<option
value=
"
{{
value
}}
"
{{#
selected
}}
selected
{{/
selected
}}
>
{{
name
}}
</option>
{{/
options
}}
{{#
optgroups
}}
<optgroup
label=
"
{{
label
}}
"
>
{{#
options
}}
<option
value=
"
{{
value
}}
"
{{#
selected
}}
selected
{{/
selected
}}
>
{{
name
}}
</option>
{{/
options
}}
</optgroup>
{{/
optgroups
}}
</select>
</div>
admin/upgrade.txt
View file @
12958850
...
...
@@ -2,8 +2,9 @@ This files describes API changes in /admin/*.
=== 3.3 ===
* The admin setting admin_setting_configselect now support the optgroup tag. Grouping of options can be created with this new tag.
For using this new option, the option parameters needs the Group names as indexes:
* The admin settings admin_setting_configselect and admin_setting_configmultiselect now support the optgroup tag.
Grouping of options can be created with this new tag.
For using it, the option parameters needs the Group names as indexes:
[
"Spain" => ["madrid" => "Madrid", "barcelona" => "Barcelona"],
"France" => ["paris" => "Paris", "marseille" => "Marseille"],
...
...
lib/adminlib.php
View file @
12958850
...
...
@@ -3255,6 +3255,29 @@ class admin_setting_configmultiselect extends admin_setting_configselect {
$defaults
=
[];
$options
=
[];
$template
=
'core_admin/setting_configmultiselect'
;
if
(
!
empty
(
$this
->
optgroups
))
{
$optgroups
=
[];
foreach
(
$this
->
optgroups
as
$label
=>
$choices
)
{
$optgroup
=
array
(
'label'
=>
$label
,
'options'
=>
[]);
foreach
(
$choices
as
$value
=>
$name
)
{
if
(
in_array
(
$value
,
$default
))
{
$defaults
[]
=
$name
;
}
$optgroup
[
'options'
][]
=
[
'value'
=>
$value
,
'name'
=>
$name
,
'selected'
=>
in_array
(
$value
,
$data
)
];
unset
(
$this
->
choices
[
$value
]);
}
$optgroups
[]
=
$optgroup
;
}
$context
->
optgroups
=
$optgroups
;
$template
=
'core_admin/setting_configmultiselect_optgroup'
;
}
foreach
(
$this
->
choices
as
$value
=>
$name
)
{
if
(
in_array
(
$value
,
$default
))
{
$defaults
[]
=
$name
;
...
...
@@ -3275,7 +3298,7 @@ class admin_setting_configmultiselect extends admin_setting_configselect {
$defaultinfo
=
get_string
(
'none'
);
}
$element
=
$OUTPUT
->
render_from_template
(
'core_admin/setting_configmultiselect'
,
$context
);
$element
=
$OUTPUT
->
render_from_template
(
$template
,
$context
);
return
format_admin_setting
(
$this
,
$this
->
visiblename
,
$element
,
$this
->
description
,
true
,
''
,
$defaultinfo
,
$query
);
}
...
...
theme/boost/templates/core_admin/setting_configmultiselect_optgroup.mustache
0 → 100644
View file @
12958850
{{
!
This
file
is
part
of
Moodle
-
http
:
//
moodle
.
org
/
Moodle
is
free
software
:
you
can
redistribute
it
and
/
or
modify
it
under
the
terms
of
the
GNU
General
Public
License
as
published
by
the
Free
Software
Foundation
,
either
version
3
of
the
License
,
or
(
at
your
option
)
any
later
version.
Moodle
is
distributed
in
the
hope
that
it
will
be
useful
,
but
WITHOUT
ANY
WARRANTY
;
without
even
the
implied
warranty
of
MERCHANTABILITY
or
FITNESS
FOR
A
PARTICULAR
PURPOSE.
See
the
GNU
General
Public
License
for
more
details.
You
should
have
received
a
copy
of
the
GNU
General
Public
License
along
with
Moodle.
If
not
,
see
<
http
:
//
www
.
gnu
.
org
/
licenses
/
>
.
}}
{{
!
Setting
configmultiselect
with
optgroup
support.
}}
<div
class=
"form-select"
>
<input
type=
"hidden"
name=
"
{{
name
}}
[xxxxx]"
value=
"1"
>
<select
id=
"
{{
id
}}
"
name=
"
{{
name
}}
[]"
size=
"
{{
size
}}
"
class=
"form-control"
multiple
>
{{#
options
}}
<option
value=
"
{{
value
}}
"
{{#
selected
}}
selected
{{/
selected
}}
>
{{
name
}}
</option>
{{/
options
}}
{{#
optgroups
}}
<optgroup
label=
"
{{
label
}}
"
>
{{#
options
}}
<option
value=
"
{{
value
}}
"
{{#
selected
}}
selected
{{/
selected
}}
>
{{
name
}}
</option>
{{/
options
}}
</optgroup>
{{/
optgroups
}}
</select>
</div>
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment