Merge branch 'MDL-80621-main' of https://github.com/roland04/moodle

This commit is contained in:
Sara Arjona 2024-02-27 12:55:51 +01:00
commit 803af22d60
No known key found for this signature in database
18 changed files with 668 additions and 604 deletions

View file

@ -203,9 +203,11 @@
</div>
{{/hasnavigation}}
{{#numsections}}
{{^singlesection}}
{{$ core_courseformat/local/content/addsection}}
{{> core_courseformat/local/content/addsection}}
{{/ core_courseformat/local/content/addsection}}
{{/singlesection}}
{{/numsections}}
{{#bulkedittools}}
{{$ core_courseformat/local/content/bulkedittools}}

View file

@ -39,7 +39,7 @@
}
}}
{{#showaddsection}}
<div class="mdl-left changenumsections bulk-hidden mt-3">
<div id="course-addsection" class="changenumsections bulk-hidden mt-5">
{{#increase}}
<a href="{{{url}}}" class="increase-sections">
{{#pix}}t/switch_plus, moodle, {{#str}} increasesections, moodle {{/str}}{{/pix}}
@ -51,16 +51,18 @@
</a>
{{/decrease}}
{{#addsections}}
<a
href="{{{url}}}"
class="add-sections btn btn-link px-0"
<a href="{{{url}}}"
class="btn add-section d-flex justify-content-center align-items-center p-3"
data-add-sections="{{title}}"
data-new-sections="{{newsection}}"
data-action="addSection"
{{#insertafter}} data-id="{{id}}" {{/insertafter}}
>
{{#pix}}t/switch_plus, moodle{{/pix}}{{title}}
{{#pix}} t/add, core {{/pix}}
{{title}}
</a>
{{/addsections}}
</div>
{{/showaddsection}}

View file

@ -58,13 +58,10 @@
}
}}
{{#editing}}
<div class="divider divider-plus bulk-hidden" data-action="insert-before-{{activityname}}">
{{> core_course/activitychooserbuttonactivity}}
</div>
{{< core_courseformat/local/content/divider}}
{{$content}}{{> core_course/activitychooserbuttonactivity}}{{/content}}
{{/ core_courseformat/local/content/divider}}
{{/editing}}
<hr class="my-2">
<div class="activity-item focus-control {{#modstealth}}hiddenactivity{{/modstealth}}{{!
}}{{#modhiddenfromstudents}}hiddenactivity{{/modhiddenfromstudents}}{{!
}}{{#modinline}}activityinline{{/modinline}}" data-activityname="{{activityname}}" data-region="activity-card">

View file

@ -0,0 +1,34 @@
{{!
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_courseformat/local/content/divider
Displays a dashed divider.
Example context (json):
{
"extraclasses": "mt-3",
"content": "<button class=\"btn btn-primary\">Add section</button>"
}
}}
<div class="divider bulk-hidden d-flex justify-content-center align-items-center {{$extraclasses}}{{extraclasses}}{{/extraclasses}}">
<hr>
<div class="divider-content px-3">
{{$content}}{{content}}{{/content}}
</div>
</div>

View file

@ -96,6 +96,7 @@
data-id="{{id}}"
data-number="{{num}}"
>
<div class="section-item">
<div class="course-section-header d-flex"
data-for="section_title"
data-id="{{id}}"
@ -105,4 +106,13 @@
{{> core_courseformat/local/content/section/content }}
{{/ core_courseformat/local/content/section/content }}
</div>
</div>
{{#insertafter}}
{{#numsections}}
{{$ core_courseformat/local/content/addsection}}
{{> core_courseformat/local/content/section/addsectiondivider }}
{{/ core_courseformat/local/content/addsection}}
{{/numsections}}
{{/insertafter}}
</li>

View file

@ -0,0 +1,55 @@
{{!
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_courseformat/local/content/section/addsectiondivider
Displays the add section divider inside a section.
Example context (json):
{
"showaddsection": true,
"id": 42,
"insertafter": true,
"num": 0,
"addsections": {
"url": "#",
"title": "Add section",
"newsection": 3
}
}
}}
{{#showaddsection}}
<div class="changenumsections bulk-hidden" data-region="section-addsection">
{{#addsections}}
{{< core_courseformat/local/content/divider}}
{{$extraclasses}}always-hidden mt-2{{/extraclasses}}
{{$content}}
<a href="{{{url}}}"
class="btn add-content section-modchooser section-modchooser-link activitychooser-button d-flex justify-content-center align-items-center p-1 icon-no-margin"
data-add-sections="{{title}}"
data-new-sections="{{newsection}}"
data-action="addSection"
{{#insertafter}} data-id="{{id}}" {{/insertafter}}
>
{{#pix}} t/add, core {{/pix}}
<span class="sr-only">{{title}}</span>
</a>
{{/content}}
{{/ core_courseformat/local/content/divider}}
{{/addsections}}
</div>
{{/showaddsection}}

View file

@ -178,10 +178,3 @@
{{/ core_courseformat/local/content/section/cmlist }}
{{/cmlist}}
{{{cmcontrols}}}
{{#insertafter}}
{{#numsections}}
{{$ core_courseformat/local/content/addsection}}
{{> core_courseformat/local/content/addsection}}
{{/ core_courseformat/local/content/addsection}}
{{/numsections}}
{{/insertafter}}

View file

@ -257,7 +257,7 @@ Feature: Course index depending on role
Scenario: Adding section should alter the course index
Given I log in as "teacher1"
And I am on "Course 1" course homepage with editing mode on
When I click on "Add section" "link" in the "Topic 4" "section"
When I click on "Add section" "link" in the "course-addsection" "region"
Then I should see "Topic 5" in the "courseindex-content" "region"
@javascript

View file

@ -84,3 +84,8 @@ Feature: Single section course page
And I am on "Course 1" course homepage
And I navigate to "Reports > Live logs" in current page administration
And I should see "Section viewed"
Scenario: The add section button is not displayed in the single section page
Given I turn editing mode on
When I click on "View" "link" in the "Topic 1" "section"
Then "Add section" "link" should not exist in the "region-main" "region"

View file

@ -37,11 +37,9 @@ use renderer_base;
class content extends content_base {
/**
* @var bool Topic format has add section after each topic.
*
* The responsible for the buttons is core_courseformat\output\local\content\section.
* @var bool Topic format has also add section after each topic.
*/
protected $hasaddsection = false;
protected $hasaddsection = true;
/**
* Export this data so it can be used as the context for a mustache template (core/inplace_editable).

View file

@ -79,12 +79,13 @@ Feature: Sections can be edited and deleted in custom sections format
@javascript
Scenario: Adding sections at the end of a custom sections format
When I click on "Add section" "link" in the "Topic 5" "section"
When I click on "Add section" "link" in the "course-addsection" "region"
Then I should see "Topic 6" in the "Topic 6" "section"
And I should see "Test choice name" in the "Topic 5" "section"
@javascript
Scenario: Adding sections between topics in custom sections format
Given I hover over the "Add section" "link" in the "Topic 4" "section"
When I click on "Add section" "link" in the "Topic 4" "section"
Then I should see "Topic 6" in the "Topic 6" "section"
And I should not see "Test choice name" in the "Topic 5" "section"
@ -92,7 +93,7 @@ Feature: Sections can be edited and deleted in custom sections format
@javascript
Scenario: Add a topic and then add an activity in it
When I click on "Add section" "link" in the "Topic 5" "section"
When I click on "Add section" "link" in the "course-addsection" "region"
And I add an assign activity to course "Course 1" section "6" and I fill the form with:
| Assignment name | Very new activity |
| Description | Test |

View file

@ -29,12 +29,16 @@
"sectionreturn": 0
}
}}
<button class="btn btn-link text-decoration-none section-modchooser section-modchooser-link activity-add bulk-hidden d-flex align-items-center p-3 mt-3"
{{< core_courseformat/local/content/divider}}
{{$extraclasses}}always-visible my-3{{/extraclasses}}
{{$content}}
<button class="btn add-content section-modchooser section-modchooser-link d-flex justify-content-center align-items-center py-1 px-2"
data-action="open-chooser"
data-sectionid="{{sectionid}}"
{{#sectionreturn}}data-sectionreturnid="{{.}}"{{/sectionreturn}}>
<span class="pluscontainer icon-no-margin icon-size-3 d-flex p-2 mr-2">
{{#sectionreturn}}data-sectionreturnid="{{.}}"{{/sectionreturn}}
>
{{#pix}} t/add, core {{/pix}}
</span>
<span class="activity-add-text">{{#str}}addresourceoractivity, core{{/str}}</span>
</button>
<span class="activity-add-text pr-1">{{#str}}addresourceoractivity, core{{/str}}</span>
</button>
{{/content}}
{{/ core_courseformat/local/content/divider}}

View file

@ -31,12 +31,13 @@
"sectionreturn": 5
}
}}
<button class="btn btn-link text-decoration-none section-modchooser section-modchooser-link activity-add d-flex align-items-center activitychooser-button"
<button class="btn add-content section-modchooser section-modchooser-link activitychooser-button d-flex justify-content-center align-items-center p-1 icon-no-margin"
data-action="open-chooser"
data-sectionid="{{num}}"
{{#sectionreturn}}data-sectionreturnid="{{.}}"{{/sectionreturn}}
data-beforemod="{{id}}"
aria-label="{{#str}}insertresourceoractivitybefore, core, { "activityname": {{#quote}} {{activityname}} {{/quote}} } {{/str}}"
tabindex="0">
tabindex="0"
>
{{#pix}} t/add, core {{/pix}}
</button>

View file

@ -24,9 +24,9 @@ Feature: Use the activity chooser to insert activities anywhere in a section
Scenario: The activity chooser icon is hidden by default and be made visible on hover
Given I hover ".navbar-brand" "css_element"
And "[data-action='insert-before-Test Forum'] button" "css_element" should not be visible
And "Insert an activity or resource before 'Test Forum'" "button" should not be visible
When I hover "Insert an activity or resource before 'Test Forum'" "button"
Then "[data-action='insert-before-Test Forum'] button" "css_element" should be visible
Then "Insert an activity or resource before 'Test Forum'" "button" should be visible
Scenario: The activity chooser can be used to insert modules before existing modules
Given I hover "Insert an activity or resource before 'Test Forum'" "button"

View file

@ -383,3 +383,26 @@ $card-gutter : $card-deck-margin * 2;
}
}
}
//
// Block add button
//
.block-add {
@include alert-variant($primary-light-background, $primary-light-border, $primary);
@include border-radius();
width: 100%;
border-width: $border-width;
.pluscontainer {
border: $border-width solid $primary-light-border;
border-radius: 50%;
width: map-get($iconsizes, 5);
height: map-get($iconsizes, 5);
}
&:hover {
cursor: pointer;
background-color: $primary-light-background;
.activity-add-text {
text-decoration: underline;
}
}
}

View file

@ -2,34 +2,10 @@
/* COURSE CONTENT */
.section_add_menus {
text-align: right;
clear: both;
}
.block_tree .tree_item.branch {
margin-left: 8px;
}
.section_add_menus .horizontal div,
.section_add_menus .horizontal form {
display: inline;
}
.section_add_menus optgroup {
font-weight: normal;
font-style: italic;
}
/*rtl:ignore*/
.section_add_menus .urlselect {
text-align: left;
margin-left: .4em;
}
/*rtl:ignore*/
.section_add_menus .urlselect select {
margin-left: .2em;
}
.section {
.side {
&.left {
@ -325,24 +301,6 @@
top: 0;
}
.course-content .section-summary {
border: 1px solid $table-border-color;
margin-top: 5px;
list-style: none;
}
.course-content .section-summary .section-title {
margin: 2px 5px 10px 5px;
}
.course-content .section-summary .summarytext {
margin: 2px 5px 2px 5px;
}
.course-content .section-summary .summary {
margin-top: 5px;
}
.course-content .single-section .section-navigation {
display: block;
padding: 0.5em;
@ -403,8 +361,6 @@
list-style: none;
li.section {
padding-top: $spacer;
padding-bottom: $spacer;
.content {
margin: 0;
padding: 0;
@ -1163,12 +1119,12 @@ span.editinstructions {
/* Variables definition*/
$activity-item-background: theme-color-level('primary', -12) !default;
$activity-item-border: theme-color-level('primary', -2) !default;
$activity-item-color: $body-color !default;
$activity-item-hover: theme-color-level('primary', -12) !default;
$activity-item-border-radius: 1rem !default;
$activity-add-hover: theme-color-level('primary', -10) !default;
$activity-border-radius: 1rem !default;
$activity-border-width: 2px !default;
$activity-hover-border-color: $primary !default;
$divider-color: $gray-300 !default;
$divider-width: 2px !default;
$divider-hover-color: $primary !default;
/* Functions/Mixins definition */
@ -1195,49 +1151,6 @@ $activity-add-hover: theme-color-level('primary', -10) !default;
}
}
/* Activity & Block 'add' buttons */
.activity-add,
.block-add {
@include alert-variant($primary-light-background, $primary-light-border, $primary);
border-width: $border-width;
.pluscontainer {
border: $border-width solid $primary-light-border;
border-radius: 50%;
width: map-get($iconsizes, 5);
height: map-get($iconsizes, 5);
}
&:hover {
cursor: pointer;
background-color: $activity-add-hover;
.activity-add-text {
text-decoration: underline;
}
}
width: 100%;
}
.block-add {
@include border-radius();
}
.activity-add {
@include border-radius($activity-item-border-radius);
}
/* Add section */
.changenumsections {
border-top: $border-width solid $primary-light-border;
}
.add-sections {
.icon {
margin-right: map-get($spacers, 1);
font-size: inherit;
}
}
/* Section Expand all/Collapse all */
.section-collapsemenu {
@ -1264,14 +1177,23 @@ $activity-add-hover: theme-color-level('primary', -10) !default;
.course-section {
list-style: none;
padding: map-get($spacers, 3);
margin-top: map-get($spacers, 3);
// Custom styles for course sections while editing.
.editing & {
margin-top: map-get($spacers, 2);
}
.section-item {
padding: map-get($spacers, 3);
border: $border-width solid $border-color;
@include border-radius($activity-item-border-radius);
@include border-radius($activity-border-radius);
}
&.hidden {
.section-item {
background-color: $gray-100;
}
}
.sectionname > a {
color: $gray-900;
@ -1297,7 +1219,7 @@ $activity-add-hover: theme-color-level('primary', -10) !default;
.summarytext {
// Add rounded borders to images.
img {
@include border-radius($activity-item-border-radius);
@include border-radius($activity-border-radius);
}
}
@ -1307,7 +1229,7 @@ $activity-add-hover: theme-color-level('primary', -10) !default;
padding: map-get($spacers, 1) map-get($spacers, 3);
background-color: $gray-200;
@include font-size($small-font-size);
@include border-radius($activity-item-border-radius);
@include border-radius($activity-border-radius);
.editavailability {
a {
@include border-radius();
@ -1330,16 +1252,6 @@ $activity-add-hover: theme-color-level('primary', -10) !default;
@include border-radius();
}
&.section-summary {
padding-left: map-get($spacers, 3);
padding-right: map-get($spacers, 3);
margin-bottom: map-get($spacers, 2);
margin-top: map-get($spacers, 2);
@if $enable-rounded {
@include border-radius();
}
}
.section-summary-activities {
.icon {
width: inherit;
@ -1359,15 +1271,32 @@ $activity-add-hover: theme-color-level('primary', -10) !default;
}
}
// Course 'add section' button.
.btn.add-section {
@include border-radius($activity-border-radius);
border: $divider-width dashed $border-color;
color: $primary;
font-size: $font-size-sm;
font-weight: bold;
&:hover,
&:focus {
background-color: $primary-light-background;
border: $divider-width solid $primary;
color: $primary;
}
}
/* Single section page specific styles */
.single-section {
// Revert main section's styles.
> ul > .course-section {
&.hidden .section-item {
background-color: inherit;
}
.section-item {
padding: 0;
border: none;
&.hidden {
background-color: inherit;
}
}
}
@ -1390,14 +1319,22 @@ $activity-add-hover: theme-color-level('primary', -10) !default;
.activity {
list-style: none;
position: relative;
padding-top: map-get($spacers, 1);
margin-top: map-get($spacers, 1);
border-top: $border-width solid $border-color;
// Custom styles for activity while editing.
.editing & {
// Remove activity top border and spacing, while editing a separator is displayed.
padding-top: 0;
margin-top: 0;
border-top: none;
}
}
.activity-item {
position: relative;
@include border-radius($activity-item-border-radius);
&:not(.activityinline) {
padding: .75rem;
}
background-color: $white;
&.activityinline {
padding: .75rem 0;
}
@ -1408,6 +1345,24 @@ $activity-add-hover: theme-color-level('primary', -10) !default;
mix-blend-mode: multiply;
}
}
// Custom styles for activity cards while editing.
.editing & {
cursor: move;
border: $activity-border-width solid transparent;
@include border-radius($activity-border-radius);
.a {
cursor: pointer;
}
&:hover,
&.selected {
border: $activity-border-width solid $activity-hover-border-color;
box-shadow: $box-shadow-sm;
.activityiconcontainer,
.badge {
mix-blend-mode: multiply;
}
}
}
// Activity card grid layout.
.activity-grid {
@ -1483,12 +1438,12 @@ $activity-add-hover: theme-color-level('primary', -10) !default;
// Prevent bootstrap strech-link from covering the inplace editable button using z-index.
.activityname {
.afterlink {
margin-left: 0.5rem;
margin-left: map-get($spacers, 2);
}
.inplaceeditable .quickeditlink {
position: relative;
z-index: 2;
margin-left: 0.5rem;
margin-left: map-get($spacers, 2);
}
}
.activitybadge {
@ -1592,7 +1547,7 @@ $activity-add-hover: theme-color-level('primary', -10) !default;
}
// Add rounded borders to images.
img {
@include border-radius($activity-item-border-radius);
@include border-radius($activity-border-radius);
}
}
@ -1612,98 +1567,130 @@ $activity-add-hover: theme-color-level('primary', -10) !default;
}
}
/* Activity card in editing mode */
.editing .activity-item {
cursor: move;
.a {
cursor: pointer;
}
&:hover,
&.selected {
@include alert-variant($activity-item-hover, $activity-item-border, $activity-item-color);
.activityiconcontainer,
.badge {
mix-blend-mode: multiply;
}
}
}
.section .draggable .activity-item .dragicon {
display: none;
}
/* Activity divider */
/* Dividers */
.activity:focus-within + .activity div.divider button,
.course-section-header:focus-within + .content .section .activity:first-child div.divider button,
.content .section .activity:focus-within div.divider button {
visibility: visible;
}
.activity {
div.divider {
position: absolute;
width: 100%;
height: 2rem;
margin-top: -1rem;
margin-bottom: -1rem;
z-index: 5;
button {
border-radius: 100%;
width: 2rem;
height: 2rem;
.divider {
position: relative;
left: calc(50%);
hr {
width: 100%;
margin: map-get($spacers, 2) map-get($spacers, 1);
border-top: $divider-width dashed $divider-color;
}
.divider-content {
opacity: 0;
visibility: hidden;
transition: visibility 0.1s;
margin: 0;
padding: 0;
i.icon {
height: 1.5rem;
width: 1.5rem;
font-size: 1.5rem;
position: absolute;
left: calc(0.25rem - 1px);
top: calc(0.25rem - 0.5px);
background: linear-gradient(transparent 40%, $white 40%, $white 60%, transparent 60%);
.section.hidden & {
background: linear-gradient(transparent 40%, $gray-100 40%, $gray-100 60%, transparent 60%);
}
}
}
&:not(.dragging) div.divider {
&:hover button,
&:focus button,
&:focus-within button {
&.always-visible {
.divider-content {
opacity: 1;
visibility: visible;
}
}
&.always-hidden {
hr {
opacity: 0;
visibility: hidden;
}
}
&:hover,
&:focus,
&:focus-within {
.divider-content {
opacity: 1;
visibility: visible;
}
hr {
opacity: 1;
visibility: visible;
}
}
// Style the hr divider when the "Add content" button is hovered.
&:has(.btn.add-content:hover) {
hr {
border-color: $divider-hover-color;
}
}
}
// These styles will make the activity and section dividers buttons visible (but still without opacity) so
// buttons can be keyboard focusable.
.activity:focus-within + .activity .divider .divider-content,
.course-section-header:focus-within + .content .section .activity:first-child .divider .divider-content,
.content .section .activity:focus-within .divider .divider-content,
.course-content:focus-within .changenumsections .divider .divider-content {
visibility: visible;
}
// Hide last section "Add section". It will rely on the course format general "Add section" button.
.course-content ul.topics > li:last-child .changenumsections {
display: none;
}
// Custom buttons for dividers.
.btn.add-content {
position: relative;
z-index: 1;
@include border-radius($rounded-pill);
font-size: $font-size-sm;
font-weight: bold;
color: theme-color-level("primary", $alert-color-level);
background-color: theme-color-level("primary", $alert-bg-level);
&:hover,
&:focus {
color: color-yiq($primary);
background-color: $primary;
}
.icon {
width: 14px;
height: 14px;
font-size: 14px;
}
}
/* Bulk editing */
.bulkenabled .bulk-hidden {
.bulkenabled {
.bulk-hidden {
display: none !important; // stylelint-disable-line declaration-no-important
}
.activity-item .bulkselect {
}
.section:not(:first-child) {
margin-top: map-get($spacers, 4);
}
.activity {
margin-top: map-get($spacers, 2);
margin-left: 2rem;
padding-top: map-get($spacers, 2);
border-top: $divider-width dashed $divider-color;
&:first-child {
margin-top: map-get($spacers, 4);
}
}
.activity-item {
.bulkselect {
position: absolute;
left: -2rem;
}
.course-section-header .bulkselect {
left: -2rem;
}
}
.course-section-header .bulkselect {
left: -2.75rem;
position: relative;
width: 0;
}
@include media-breakpoint-down(sm) {
.bulkenabled .course-content {
}
@include media-breakpoint-down(sm) {
.course-content {
margin-left: 2rem;
}
}
}
/* Activity completion */
@ -1726,7 +1713,7 @@ $activity-add-hover: theme-color-level('primary', -10) !default;
.activity:first-of-type hr {
display: none;
}
.section {
.section-item {
margin-bottom: map-get($spacers, 4);
@include border-radius();
}

View file

@ -27200,6 +27200,34 @@ aside[id^=block-region-side-] .block_recentlyaccesseditems .dashboard-card-deck
}
}
.block-add {
color: #0f6cbf;
background-color: #f5f9fc;
border-color: #3584c9;
border-radius: 0.5rem;
width: 100%;
border-width: 1px;
}
.block-add hr {
border-top-color: #3077b5;
}
.block-add .alert-link {
color: #0b5190;
}
.block-add .pluscontainer {
border: 1px solid #3584c9;
border-radius: 50%;
width: 32px;
height: 32px;
}
.block-add:hover {
cursor: pointer;
background-color: #f5f9fc;
}
.block-add:hover .activity-add-text {
text-decoration: underline;
}
/* calendar.less */
.calendar_event_category {
background-color: #e0cbe0;
@ -27889,36 +27917,10 @@ table.calendartable caption {
/* course.less */
/* COURSE CONTENT */
.section_add_menus {
text-align: right;
clear: both;
}
.block_tree .tree_item.branch {
margin-left: 8px;
}
.section_add_menus .horizontal div,
.section_add_menus .horizontal form {
display: inline;
}
.section_add_menus optgroup {
font-weight: normal;
font-style: italic;
}
/*rtl:ignore*/
.section_add_menus .urlselect {
text-align: left;
margin-left: 0.4em;
}
/*rtl:ignore*/
.section_add_menus .urlselect select {
margin-left: 0.2em;
}
.section .side {
margin-top: 0.5rem;
}
@ -28151,24 +28153,6 @@ table.calendartable caption {
top: 0;
}
.course-content .section-summary {
border: 1px solid #dee2e6;
margin-top: 5px;
list-style: none;
}
.course-content .section-summary .section-title {
margin: 2px 5px 10px 5px;
}
.course-content .section-summary .summarytext {
margin: 2px 5px 2px 5px;
}
.course-content .section-summary .summary {
margin-top: 5px;
}
.course-content .single-section .section-navigation {
display: block;
padding: 0.5em;
@ -28225,11 +28209,6 @@ table.calendartable caption {
margin: 0;
list-style: none;
}
.course-content ul.topics li.section,
.course-content ul.weeks li.section {
padding-top: 1rem;
padding-bottom: 1rem;
}
.course-content ul.topics li.section .content,
.course-content ul.weeks li.section .content {
margin: 0;
@ -28915,58 +28894,6 @@ span.editinstructions .alert-link {
/* Variables definition*/
/* Functions/Mixins definition */
/* Activity & Block 'add' buttons */
.activity-add,
.block-add {
color: #0f6cbf;
background-color: #f5f9fc;
border-color: #3584c9;
border-width: 1px;
width: 100%;
}
.activity-add hr,
.block-add hr {
border-top-color: #3077b5;
}
.activity-add .alert-link,
.block-add .alert-link {
color: #0b5190;
}
.activity-add .pluscontainer,
.block-add .pluscontainer {
border: 1px solid #3584c9;
border-radius: 50%;
width: 32px;
height: 32px;
}
.activity-add:hover,
.block-add:hover {
cursor: pointer;
background-color: #cfe2f2;
}
.activity-add:hover .activity-add-text,
.block-add:hover .activity-add-text {
text-decoration: underline;
}
.block-add {
border-radius: 0.5rem;
}
.activity-add {
border-radius: 1rem;
}
/* Add section */
.changenumsections {
border-top: 1px solid #3584c9;
}
.add-sections .icon {
margin-right: 0.25rem;
font-size: inherit;
}
/* Section Expand all/Collapse all */
.section-collapsemenu .collapseall {
display: block;
@ -28984,12 +28911,17 @@ span.editinstructions .alert-link {
/* Course section */
.course-section {
list-style: none;
padding: 1rem;
margin-top: 1rem;
}
.editing .course-section {
margin-top: 0.5rem;
}
.course-section .section-item {
padding: 1rem;
border: 1px solid #dee2e6;
border-radius: 1rem;
}
.course-section.hidden {
.course-section.hidden .section-item {
background-color: #f8f9fa;
}
.course-section .sectionname > a {
@ -29033,13 +28965,6 @@ span.editinstructions .alert-link {
width: 32px;
border-radius: 0.5rem;
}
.course-section.section-summary {
padding-left: 1rem;
padding-right: 1rem;
margin-bottom: 0.5rem;
margin-top: 0.5rem;
border-radius: 0.5rem;
}
.course-section .section-summary-activities .icon {
width: inherit;
color: #0f6cbf;
@ -29054,14 +28979,27 @@ span.editinstructions .alert-link {
color: #0f6cbf;
}
.btn.add-section {
border-radius: 1rem;
border: 2px dashed #dee2e6;
color: #0f6cbf;
font-size: 0.8203125rem;
font-weight: bold;
}
.btn.add-section:hover, .btn.add-section:focus {
background-color: #f5f9fc;
border: 2px solid #0f6cbf;
color: #0f6cbf;
}
/* Single section page specific styles */
.single-section > ul > .course-section {
.single-section > ul > .course-section.hidden .section-item {
background-color: inherit;
}
.single-section > ul > .course-section .section-item {
padding: 0;
border: none;
}
.single-section > ul > .course-section.hidden {
background-color: inherit;
}
/* Re-style ordered list in course content */
.course-content .activity-altcontent ul {
@ -29078,14 +29016,20 @@ span.editinstructions .alert-link {
.activity {
list-style: none;
position: relative;
padding-top: 0.25rem;
margin-top: 0.25rem;
border-top: 1px solid #dee2e6;
}
.editing .activity {
padding-top: 0;
margin-top: 0;
border-top: none;
}
.activity-item {
position: relative;
border-radius: 1rem;
}
.activity-item:not(.activityinline) {
padding: 0.75rem;
background-color: #fff;
}
.activity-item.activityinline {
padding: 0.75rem 0;
@ -29097,6 +29041,23 @@ span.editinstructions .alert-link {
.activity-item.hiddenactivity .badge {
mix-blend-mode: multiply;
}
.editing .activity-item {
cursor: move;
border: 2px solid transparent;
border-radius: 1rem;
}
.editing .activity-item .a {
cursor: pointer;
}
.editing .activity-item:hover, .editing .activity-item.selected {
border: 2px solid #0f6cbf;
box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);
}
.editing .activity-item:hover .activityiconcontainer,
.editing .activity-item:hover .badge, .editing .activity-item.selected .activityiconcontainer,
.editing .activity-item.selected .badge {
mix-blend-mode: multiply;
}
.activity-item .activity-grid {
display: grid;
align-items: center;
@ -29677,95 +29638,110 @@ span.editinstructions .alert-link {
width: 100%;
}
/* Activity card in editing mode */
.editing .activity-item {
cursor: move;
}
.editing .activity-item .a {
cursor: pointer;
}
.editing .activity-item:hover, .editing .activity-item.selected {
color: #1d2125;
background-color: #f5f9fc;
border-color: #3584c9;
}
.editing .activity-item:hover hr, .editing .activity-item.selected hr {
border-top-color: #3077b5;
}
.editing .activity-item:hover .alert-link, .editing .activity-item.selected .alert-link {
color: #070808;
}
.editing .activity-item:hover .activityiconcontainer,
.editing .activity-item:hover .badge, .editing .activity-item.selected .activityiconcontainer,
.editing .activity-item.selected .badge {
mix-blend-mode: multiply;
}
.section .draggable .activity-item .dragicon {
display: none;
}
/* Activity divider */
.activity:focus-within + .activity div.divider button,
.course-section-header:focus-within + .content .section .activity:first-child div.divider button,
.content .section .activity:focus-within div.divider button {
visibility: visible;
}
.activity div.divider {
position: absolute;
width: 100%;
height: 2rem;
margin-top: -1rem;
margin-bottom: -1rem;
z-index: 5;
}
.activity div.divider button {
border-radius: 100%;
width: 2rem;
height: 2rem;
/* Dividers */
.divider {
position: relative;
left: 50%;
}
.divider hr {
width: 100%;
margin: 0.5rem 0.25rem;
border-top: 2px dashed #dee2e6;
}
.divider .divider-content {
opacity: 0;
visibility: hidden;
transition: visibility 0.1s;
margin: 0;
padding: 0;
}
.activity div.divider button i.icon {
height: 1.5rem;
width: 1.5rem;
font-size: 1.5rem;
position: absolute;
left: calc(0.25rem - 1px);
top: calc(0.25rem - 0.5px);
background: linear-gradient(transparent 40%, #fff 40%, #fff 60%, transparent 60%);
}
.activity:not(.dragging) div.divider:hover button, .activity:not(.dragging) div.divider:focus button, .activity:not(.dragging) div.divider:focus-within button {
.section.hidden .divider .divider-content {
background: linear-gradient(transparent 40%, #f8f9fa 40%, #f8f9fa 60%, transparent 60%);
}
.divider.always-visible .divider-content {
opacity: 1;
visibility: visible;
}
.divider.always-hidden hr {
opacity: 0;
visibility: hidden;
}
.divider:hover .divider-content, .divider:focus .divider-content, .divider:focus-within .divider-content {
opacity: 1;
visibility: visible;
}
.divider:hover hr, .divider:focus hr, .divider:focus-within hr {
opacity: 1;
visibility: visible;
}
.divider:has(.btn.add-content:hover) hr {
border-color: #0f6cbf;
}
.activity:focus-within + .activity .divider .divider-content,
.course-section-header:focus-within + .content .section .activity:first-child .divider .divider-content,
.content .section .activity:focus-within .divider .divider-content,
.course-content:focus-within .changenumsections .divider .divider-content {
visibility: visible;
}
.course-content ul.topics > li:last-child .changenumsections {
display: none;
}
.btn.add-content {
position: relative;
z-index: 1;
border-radius: 50rem;
font-size: 0.8203125rem;
font-weight: bold;
color: #083863;
background-color: #cfe2f2;
}
.btn.add-content:hover, .btn.add-content:focus {
color: #fff;
background-color: #0f6cbf;
}
.btn.add-content .icon {
width: 14px;
height: 14px;
font-size: 14px;
}
/* Bulk editing */
.bulkenabled .bulk-hidden {
display: none !important;
}
.activity-item .bulkselect {
.bulkenabled .section:not(:first-child) {
margin-top: 1.5rem;
}
.bulkenabled .activity {
margin-top: 0.5rem;
margin-left: 2rem;
padding-top: 0.5rem;
border-top: 2px dashed #dee2e6;
}
.bulkenabled .activity:first-child {
margin-top: 1.5rem;
}
.bulkenabled .activity-item .bulkselect {
position: absolute;
left: -2rem;
}
.course-section-header .bulkselect {
left: -2rem;
.bulkenabled .course-section-header .bulkselect {
left: -2.75rem;
position: relative;
width: 0;
}
@media (max-width: 767.98px) {
.bulkenabled .course-content {
margin-left: 2rem;
}
}
/* Activity completion */
.defaultactivitycompletion-item a {
color: #000;
@ -29780,7 +29756,7 @@ span.editinstructions .alert-link {
.sitetopic .activity:first-of-type hr {
display: none;
}
.sitetopic .section {
.sitetopic .section-item {
margin-bottom: 1.5rem;
border-radius: 0.5rem;
}

View file

@ -27200,6 +27200,34 @@ aside[id^=block-region-side-] .block_recentlyaccesseditems .dashboard-card-deck
}
}
.block-add {
color: #0f6cbf;
background-color: #f5f9fc;
border-color: #3584c9;
border-radius: 0.25rem;
width: 100%;
border-width: 1px;
}
.block-add hr {
border-top-color: #3077b5;
}
.block-add .alert-link {
color: #0b5190;
}
.block-add .pluscontainer {
border: 1px solid #3584c9;
border-radius: 50%;
width: 32px;
height: 32px;
}
.block-add:hover {
cursor: pointer;
background-color: #f5f9fc;
}
.block-add:hover .activity-add-text {
text-decoration: underline;
}
/* calendar.less */
.calendar_event_category {
background-color: #e0cbe0;
@ -27889,36 +27917,10 @@ table.calendartable caption {
/* course.less */
/* COURSE CONTENT */
.section_add_menus {
text-align: right;
clear: both;
}
.block_tree .tree_item.branch {
margin-left: 8px;
}
.section_add_menus .horizontal div,
.section_add_menus .horizontal form {
display: inline;
}
.section_add_menus optgroup {
font-weight: normal;
font-style: italic;
}
/*rtl:ignore*/
.section_add_menus .urlselect {
text-align: left;
margin-left: 0.4em;
}
/*rtl:ignore*/
.section_add_menus .urlselect select {
margin-left: 0.2em;
}
.section .side {
margin-top: 0.5rem;
}
@ -28151,24 +28153,6 @@ table.calendartable caption {
top: 0;
}
.course-content .section-summary {
border: 1px solid #dee2e6;
margin-top: 5px;
list-style: none;
}
.course-content .section-summary .section-title {
margin: 2px 5px 10px 5px;
}
.course-content .section-summary .summarytext {
margin: 2px 5px 2px 5px;
}
.course-content .section-summary .summary {
margin-top: 5px;
}
.course-content .single-section .section-navigation {
display: block;
padding: 0.5em;
@ -28225,11 +28209,6 @@ table.calendartable caption {
margin: 0;
list-style: none;
}
.course-content ul.topics li.section,
.course-content ul.weeks li.section {
padding-top: 1rem;
padding-bottom: 1rem;
}
.course-content ul.topics li.section .content,
.course-content ul.weeks li.section .content {
margin: 0;
@ -28915,58 +28894,6 @@ span.editinstructions .alert-link {
/* Variables definition*/
/* Functions/Mixins definition */
/* Activity & Block 'add' buttons */
.activity-add,
.block-add {
color: #0f6cbf;
background-color: #f5f9fc;
border-color: #3584c9;
border-width: 1px;
width: 100%;
}
.activity-add hr,
.block-add hr {
border-top-color: #3077b5;
}
.activity-add .alert-link,
.block-add .alert-link {
color: #0b5190;
}
.activity-add .pluscontainer,
.block-add .pluscontainer {
border: 1px solid #3584c9;
border-radius: 50%;
width: 32px;
height: 32px;
}
.activity-add:hover,
.block-add:hover {
cursor: pointer;
background-color: #cfe2f2;
}
.activity-add:hover .activity-add-text,
.block-add:hover .activity-add-text {
text-decoration: underline;
}
.block-add {
border-radius: 0.25rem;
}
.activity-add {
border-radius: 1rem;
}
/* Add section */
.changenumsections {
border-top: 1px solid #3584c9;
}
.add-sections .icon {
margin-right: 0.25rem;
font-size: inherit;
}
/* Section Expand all/Collapse all */
.section-collapsemenu .collapseall {
display: block;
@ -28984,12 +28911,17 @@ span.editinstructions .alert-link {
/* Course section */
.course-section {
list-style: none;
padding: 1rem;
margin-top: 1rem;
}
.editing .course-section {
margin-top: 0.5rem;
}
.course-section .section-item {
padding: 1rem;
border: 1px solid #dee2e6;
border-radius: 1rem;
}
.course-section.hidden {
.course-section.hidden .section-item {
background-color: #f8f9fa;
}
.course-section .sectionname > a {
@ -29033,13 +28965,6 @@ span.editinstructions .alert-link {
width: 32px;
border-radius: 0.25rem;
}
.course-section.section-summary {
padding-left: 1rem;
padding-right: 1rem;
margin-bottom: 0.5rem;
margin-top: 0.5rem;
border-radius: 0.25rem;
}
.course-section .section-summary-activities .icon {
width: inherit;
color: #0f6cbf;
@ -29054,14 +28979,27 @@ span.editinstructions .alert-link {
color: #0f6cbf;
}
.btn.add-section {
border-radius: 1rem;
border: 2px dashed #dee2e6;
color: #0f6cbf;
font-size: 0.8203125rem;
font-weight: bold;
}
.btn.add-section:hover, .btn.add-section:focus {
background-color: #f5f9fc;
border: 2px solid #0f6cbf;
color: #0f6cbf;
}
/* Single section page specific styles */
.single-section > ul > .course-section {
.single-section > ul > .course-section.hidden .section-item {
background-color: inherit;
}
.single-section > ul > .course-section .section-item {
padding: 0;
border: none;
}
.single-section > ul > .course-section.hidden {
background-color: inherit;
}
/* Re-style ordered list in course content */
.course-content .activity-altcontent ul {
@ -29078,14 +29016,20 @@ span.editinstructions .alert-link {
.activity {
list-style: none;
position: relative;
padding-top: 0.25rem;
margin-top: 0.25rem;
border-top: 1px solid #dee2e6;
}
.editing .activity {
padding-top: 0;
margin-top: 0;
border-top: none;
}
.activity-item {
position: relative;
border-radius: 1rem;
}
.activity-item:not(.activityinline) {
padding: 0.75rem;
background-color: #fff;
}
.activity-item.activityinline {
padding: 0.75rem 0;
@ -29097,6 +29041,23 @@ span.editinstructions .alert-link {
.activity-item.hiddenactivity .badge {
mix-blend-mode: multiply;
}
.editing .activity-item {
cursor: move;
border: 2px solid transparent;
border-radius: 1rem;
}
.editing .activity-item .a {
cursor: pointer;
}
.editing .activity-item:hover, .editing .activity-item.selected {
border: 2px solid #0f6cbf;
box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);
}
.editing .activity-item:hover .activityiconcontainer,
.editing .activity-item:hover .badge, .editing .activity-item.selected .activityiconcontainer,
.editing .activity-item.selected .badge {
mix-blend-mode: multiply;
}
.activity-item .activity-grid {
display: grid;
align-items: center;
@ -29677,95 +29638,110 @@ span.editinstructions .alert-link {
width: 100%;
}
/* Activity card in editing mode */
.editing .activity-item {
cursor: move;
}
.editing .activity-item .a {
cursor: pointer;
}
.editing .activity-item:hover, .editing .activity-item.selected {
color: #1d2125;
background-color: #f5f9fc;
border-color: #3584c9;
}
.editing .activity-item:hover hr, .editing .activity-item.selected hr {
border-top-color: #3077b5;
}
.editing .activity-item:hover .alert-link, .editing .activity-item.selected .alert-link {
color: #070808;
}
.editing .activity-item:hover .activityiconcontainer,
.editing .activity-item:hover .badge, .editing .activity-item.selected .activityiconcontainer,
.editing .activity-item.selected .badge {
mix-blend-mode: multiply;
}
.section .draggable .activity-item .dragicon {
display: none;
}
/* Activity divider */
.activity:focus-within + .activity div.divider button,
.course-section-header:focus-within + .content .section .activity:first-child div.divider button,
.content .section .activity:focus-within div.divider button {
visibility: visible;
}
.activity div.divider {
position: absolute;
width: 100%;
height: 2rem;
margin-top: -1rem;
margin-bottom: -1rem;
z-index: 5;
}
.activity div.divider button {
border-radius: 100%;
width: 2rem;
height: 2rem;
/* Dividers */
.divider {
position: relative;
left: 50%;
}
.divider hr {
width: 100%;
margin: 0.5rem 0.25rem;
border-top: 2px dashed #dee2e6;
}
.divider .divider-content {
opacity: 0;
visibility: hidden;
transition: visibility 0.1s;
margin: 0;
padding: 0;
}
.activity div.divider button i.icon {
height: 1.5rem;
width: 1.5rem;
font-size: 1.5rem;
position: absolute;
left: calc(0.25rem - 1px);
top: calc(0.25rem - 0.5px);
background: linear-gradient(transparent 40%, #fff 40%, #fff 60%, transparent 60%);
}
.activity:not(.dragging) div.divider:hover button, .activity:not(.dragging) div.divider:focus button, .activity:not(.dragging) div.divider:focus-within button {
.section.hidden .divider .divider-content {
background: linear-gradient(transparent 40%, #f8f9fa 40%, #f8f9fa 60%, transparent 60%);
}
.divider.always-visible .divider-content {
opacity: 1;
visibility: visible;
}
.divider.always-hidden hr {
opacity: 0;
visibility: hidden;
}
.divider:hover .divider-content, .divider:focus .divider-content, .divider:focus-within .divider-content {
opacity: 1;
visibility: visible;
}
.divider:hover hr, .divider:focus hr, .divider:focus-within hr {
opacity: 1;
visibility: visible;
}
.divider:has(.btn.add-content:hover) hr {
border-color: #0f6cbf;
}
.activity:focus-within + .activity .divider .divider-content,
.course-section-header:focus-within + .content .section .activity:first-child .divider .divider-content,
.content .section .activity:focus-within .divider .divider-content,
.course-content:focus-within .changenumsections .divider .divider-content {
visibility: visible;
}
.course-content ul.topics > li:last-child .changenumsections {
display: none;
}
.btn.add-content {
position: relative;
z-index: 1;
border-radius: 50rem;
font-size: 0.8203125rem;
font-weight: bold;
color: #083863;
background-color: #cfe2f2;
}
.btn.add-content:hover, .btn.add-content:focus {
color: #fff;
background-color: #0f6cbf;
}
.btn.add-content .icon {
width: 14px;
height: 14px;
font-size: 14px;
}
/* Bulk editing */
.bulkenabled .bulk-hidden {
display: none !important;
}
.activity-item .bulkselect {
.bulkenabled .section:not(:first-child) {
margin-top: 1.5rem;
}
.bulkenabled .activity {
margin-top: 0.5rem;
margin-left: 2rem;
padding-top: 0.5rem;
border-top: 2px dashed #dee2e6;
}
.bulkenabled .activity:first-child {
margin-top: 1.5rem;
}
.bulkenabled .activity-item .bulkselect {
position: absolute;
left: -2rem;
}
.course-section-header .bulkselect {
left: -2rem;
.bulkenabled .course-section-header .bulkselect {
left: -2.75rem;
position: relative;
width: 0;
}
@media (max-width: 767.98px) {
.bulkenabled .course-content {
margin-left: 2rem;
}
}
/* Activity completion */
.defaultactivitycompletion-item a {
color: #000;
@ -29780,7 +29756,7 @@ span.editinstructions .alert-link {
.sitetopic .activity:first-of-type hr {
display: none;
}
.sitetopic .section {
.sitetopic .section-item {
margin-bottom: 1.5rem;
border-radius: 0.25rem;
}