MDL-58428 theme: Move templates from lib
authorMathew May <mathewm@hotmail.co.nz>
Fri, 22 Feb 2019 07:25:04 +0000 (15:25 +0800)
committerSara Arjona <sara@moodle.com>
Tue, 26 Feb 2019 11:56:14 +0000 (12:56 +0100)
81 files changed:
lib/templates/action_menu.mustache
lib/templates/action_menu_link.mustache
lib/templates/action_menu_trigger.mustache
lib/templates/auth_digital_minor_page.mustache
lib/templates/auth_verify_age_location_page.mustache
lib/templates/availability_info.mustache
lib/templates/block.mustache [moved from theme/boost/templates/core/block.mustache with 100% similarity]
lib/templates/chooser.mustache
lib/templates/columns-1to1to1.mustache
lib/templates/columns-1to2.mustache
lib/templates/columns-2to1.mustache
lib/templates/custom_menu_item.mustache [moved from theme/boost/templates/core/custom_menu_item.mustache with 100% similarity]
lib/templates/dataformat_selector.mustache
lib/templates/filemanager_confirmdialog.mustache [moved from theme/boost/templates/core/filemanager_confirmdialog.mustache with 100% similarity]
lib/templates/filemanager_default_searchform.mustache [moved from theme/boost/templates/core/filemanager_default_searchform.mustache with 100% similarity]
lib/templates/filemanager_fileselect.mustache [moved from theme/boost/templates/core/filemanager_fileselect.mustache with 100% similarity]
lib/templates/filemanager_loginform.mustache [moved from theme/boost/templates/core/filemanager_loginform.mustache with 100% similarity]
lib/templates/filemanager_modal_generallayout.mustache [moved from theme/boost/templates/core/filemanager_modal_generallayout.mustache with 100% similarity]
lib/templates/filemanager_page_generallayout.mustache [moved from theme/boost/templates/core/filemanager_page_generallayout.mustache with 100% similarity]
lib/templates/filemanager_processexistingfile.mustache [moved from theme/boost/templates/core/filemanager_processexistingfile.mustache with 100% similarity]
lib/templates/filemanager_processexistingfilemultiple.mustache [moved from theme/boost/templates/core/filemanager_processexistingfilemultiple.mustache with 100% similarity]
lib/templates/filemanager_selectlayout.mustache [moved from theme/boost/templates/core/filemanager_selectlayout.mustache with 100% similarity]
lib/templates/filemanager_uploadform.mustache [moved from theme/boost/templates/core/filemanager_uploadform.mustache with 100% similarity]
lib/templates/form_autocomplete_input.mustache
lib/templates/form_autocomplete_selection.mustache
lib/templates/help_icon.mustache
lib/templates/initials_bar.mustache
lib/templates/loginform.mustache
lib/templates/modal.mustache
lib/templates/modal_backdrop.mustache
lib/templates/navbar.mustache [moved from theme/boost/templates/core/navbar.mustache with 100% similarity]
lib/templates/notification_error.mustache
lib/templates/notification_info.mustache
lib/templates/notification_success.mustache
lib/templates/notification_warning.mustache
lib/templates/preferences_groups.mustache [moved from theme/boost/templates/core/preferences_groups.mustache with 100% similarity]
lib/templates/progress_bar.mustache
lib/templates/select_time.mustache
lib/templates/settings_link_page.mustache
lib/templates/settings_link_page_single.mustache
lib/templates/signup_form_layout.mustache
lib/templates/single_button.mustache
lib/templates/skip_links.mustache
lib/templates/tabtree.mustache [moved from theme/boost/templates/core/tabtree.mustache with 100% similarity]
theme/boost/templates/core/action_menu_trigger.mustache [deleted file]
theme/boost/templates/core/auth_digital_minor_page.mustache [deleted file]
theme/boost/templates/core/auth_verify_age_location_page.mustache [deleted file]
theme/boost/templates/core/availability_info.mustache [deleted file]
theme/boost/templates/core/help_icon.mustache [deleted file]
theme/boost/templates/core/loginform.mustache [deleted file]
theme/boost/templates/core/settings_link_page.mustache [deleted file]
theme/boost/templates/core/signup_form_layout.mustache [deleted file]
theme/bootstrapbase/templates/core/action_menu.mustache [moved from theme/boost/templates/core/action_menu.mustache with 55% similarity]
theme/bootstrapbase/templates/core/action_menu_item.mustache [moved from theme/boost/templates/core/action_menu_item.mustache with 100% similarity]
theme/bootstrapbase/templates/core/action_menu_link.mustache [moved from theme/boost/templates/core/action_menu_link.mustache with 88% similarity]
theme/bootstrapbase/templates/core/action_menu_trigger.mustache [new file with mode: 0644]
theme/bootstrapbase/templates/core/auth_digital_minor_page.mustache [new file with mode: 0644]
theme/bootstrapbase/templates/core/auth_verify_age_location_page.mustache [new file with mode: 0644]
theme/bootstrapbase/templates/core/chooser.mustache [moved from theme/boost/templates/core/chooser.mustache with 94% similarity]
theme/bootstrapbase/templates/core/columns-1to1to1.mustache [moved from theme/boost/templates/core/columns-1to1to1.mustache with 86% similarity]
theme/bootstrapbase/templates/core/columns-1to2.mustache [moved from theme/boost/templates/core/columns-1to2.mustache with 88% similarity]
theme/bootstrapbase/templates/core/columns-2to1.mustache [moved from theme/boost/templates/core/columns-2to1.mustache with 88% similarity]
theme/bootstrapbase/templates/core/dataformat_selector.mustache [moved from theme/boost/templates/core/dataformat_selector.mustache with 68% similarity]
theme/bootstrapbase/templates/core/form_autocomplete_input.mustache [moved from theme/boost/templates/core/form_autocomplete_input.mustache with 83% similarity]
theme/bootstrapbase/templates/core/form_autocomplete_selection.mustache [moved from theme/boost/templates/core/form_autocomplete_selection.mustache with 83% similarity]
theme/bootstrapbase/templates/core/help_icon.mustache [new file with mode: 0644]
theme/bootstrapbase/templates/core/initials_bar.mustache [moved from theme/boost/templates/core/initials_bar.mustache with 75% similarity]
theme/bootstrapbase/templates/core/loginform.mustache [new file with mode: 0644]
theme/bootstrapbase/templates/core/modal.mustache [moved from theme/boost/templates/core/modal.mustache with 53% similarity]
theme/bootstrapbase/templates/core/modal_backdrop.mustache [moved from theme/boost/templates/core/modal_backdrop.mustache with 91% similarity]
theme/bootstrapbase/templates/core/notification_error.mustache [moved from theme/boost/templates/core/notification_error.mustache with 84% similarity]
theme/bootstrapbase/templates/core/notification_info.mustache [moved from theme/boost/templates/core/notification_info.mustache with 88% similarity]
theme/bootstrapbase/templates/core/notification_success.mustache [moved from theme/boost/templates/core/notification_success.mustache with 88% similarity]
theme/bootstrapbase/templates/core/notification_warning.mustache [moved from theme/boost/templates/core/notification_warning.mustache with 88% similarity]
theme/bootstrapbase/templates/core/progress_bar.mustache [moved from theme/boost/templates/core/progress_bar.mustache with 67% similarity]
theme/bootstrapbase/templates/core/select_time.mustache [moved from theme/boost/templates/core/select_time.mustache with 92% similarity]
theme/bootstrapbase/templates/core/settings_link_page.mustache [new file with mode: 0644]
theme/bootstrapbase/templates/core/settings_link_page_single.mustache [moved from theme/boost/templates/core/settings_link_page_single.mustache with 96% similarity]
theme/bootstrapbase/templates/core/signup_form_layout.mustache [new file with mode: 0644]
theme/bootstrapbase/templates/core/single_button.mustache [moved from theme/boost/templates/core/single_button.mustache with 97% similarity]
theme/bootstrapbase/templates/core/skip_links.mustache [moved from theme/boost/templates/core/skip_links.mustache with 60% similarity]

index bb1167a..ab38eba 100644 (file)
         }
     }
 }}
-<div class="{{classes}}"{{#attributes}} {{name}}="{{value}}"{{/attributes}}>
+<div class="action-menu {{classes}} d-inline"{{#attributes}} {{name}}="{{value}}"{{/attributes}}>
     {{#primary}}
 
-        <ul class="{{classes}}"{{#attributes}} {{name}}="{{value}}"{{/attributes}}>
+        <div class="{{classes}} d-flex "{{#attributes}} {{name}}="{{value}}"{{/attributes}}>
 
-            {{#prioritise}}<li role="presentation">{{> core/action_menu_trigger }}</li>{{/prioritise}}<!--
+            {{#prioritise}}{{> core/action_menu_trigger }}{{/prioritise}}
 
-            -->{{#items}}<li role="presentation">{{> core/action_menu_item }}</li>{{/items}}<!--
+            {{#items}}
+                <div class="action-menu-item">
+                    {{> core/action_menu_item }}
+                </div>
+            {{/items}}
 
-            -->{{^prioritise}}<li role="presentation">{{> core/action_menu_trigger }}</li>{{/prioritise}}
+            {{^prioritise}}
+                <div class="action-menu-trigger">
+                    {{> core/action_menu_trigger }}
+                </div>
+            {{/prioritise}}
 
-        </ul>
+        </div>
 
     {{/primary}}
-
-    {{#secondary}}
-        <ul class="{{classes}}"{{#attributes}} {{name}}="{{value}}"{{/attributes}}>
-            {{#items}}<li role="presentation">{{> core/action_menu_item }}</li>{{/items}}
-        </ul>
-    {{/secondary}}
 </div>
-{{#js}}
-require(['core/yui'], function(Y) {
-    Y.use('moodle-core-actionmenu', function() {
-        M.core.actionmenu.init();
-    });
-});
-{{/js}}
index cec09b7..0e9f42a 100644 (file)
     {
         "text": "Example link text",
         "showtext": true,
-        "url": "http://example.com/link",
-        "classes": "menu-action",
-        "instance": "1"
+        "url": "http://example.com/link"
     }
 }}
 {{^disabled}}
     <a href="{{url}}" class="{{classes}}" {{#attributes}}{{name}}={{#quote}}{{value}}{{/quote}} {{/attributes}}{{#showtext}}aria-labelledby="actionmenuaction-{{instance}}"{{/showtext}}>{{#icon}}{{#pix}}{{key}}, {{component}}, {{title}}{{/pix}}{{/icon}}{{#showtext}}<span class="menu-action-text" id="actionmenuaction-{{instance}}">{{{text}}}</span>{{/showtext}}</a>
 {{/disabled}}
 {{#disabled}}
-    <span class="currentlink" role="menuitem">{{#icon}}{{#pix}}{{key}}, {{component}}, {{title}}{{/pix}}{{/icon}}{{{text}}}</span>
+    <span class="currentlink" role="menuitem">{{#icon}}{{#pix}}{{key}},{{component}},{{title}}{{/pix}}{{/icon}}{{{text}}}</span>
 {{/disabled}}
index fce1a8b..8efab38 100644 (file)
 
     Example context (json):
     {
+        "text": "Example link text",
+        "title": "Example link title",
+        "url": "http://example.com/link",
+        "classes": "icon menu-action",
         "instance": "1",
-        "title": "Trigger me!",
-        "menutrigger": true,
-        "triggerextraclasses": ""
+        "triggerextraclasses": "",
+        "attributes": [
+            {"name": "role", "value": "menuitem" },
+            {"name": "data-title", "value": "mymoodle,admin" }
+        ],
+        "secondary": {
+            "classes": "menu  align-tr-br",
+            "attributes": [
+                {"name": "id", "value": "action-menu-0-menu"},
+                {"name": "data-rel", "value": "menu-content"},
+                {"name": "role", "value": "menu"},
+                {"name": "data-align", "value": "tr-br"}
+            ],
+            "items": [
+                {"actionmenulink":
+                    {
+                    "id": "action_link59ecf8394a68078",
+                    "disabled": false,
+                    "text": "Dashboard",
+                    "url": "http://example.com/link",
+                    "icon": {
+                        "key": "i/dashboard",
+                        "component": null,
+                        "title": "Dashboard"
+                        },
+                    "classes": "icon menu-action",
+                    "attributes": [
+                        {"name": "role", "value": "menuitem"},
+                        {"name": "data-title", "value": "mymoodle,admin"}
+                        ],
+                    "instance": 1,
+                    "showtext": true
+                    }
+                },
+                {"actionmenufiller":
+                    {
+                    "id": "action_link59ecf8394a68079",
+                    "disabled": false,
+                    "text": "",
+                    "url": "",
+                    "icon": null,
+                    "classes": "",
+                    "attributes": [
+                        {"name": "role", "value": "menuitem"}
+                        ]
+                    }
+                }
+            ]
+        }
     }
 }}
-<a href="#" class="{{triggerextraclasses}} toggle-display {{#menutrigger}}textmenu{{/menutrigger}}" id="action-menu-toggle-{{instance}}" title="{{title}}" role="menuitem">{{{actiontext}}}{{{menutrigger}}}{{#icon}}{{#pix}}{{key}}, {{component}}, {{title}}{{/pix}}{{/icon}}{{#rawicon}}{{{.}}}{{/rawicon}}{{#menutrigger}}<b class="caret"></b>{{/menutrigger}}</a>
+<div class="dropdown">
+    <a href="#" tabindex="0" class="{{triggerextraclasses}} dropdown-toggle icon-no-margin" id="dropdown-{{instance}}" aria-label="{{title}}" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" aria-controls="action-menu-{{instance}}-menu">
+        {{{actiontext}}}
+        {{{menutrigger}}}
+            {{#icon}}
+                {{#pix}}
+                    {{key}},{{component}},{{title}}
+                {{/pix}}
+            {{/icon}}
+            {{#rawicon}}{{{.}}}{{/rawicon}}
+        {{#menutrigger}}
+        <b class="caret"></b>
+        {{/menutrigger}}
+    </a>
+    {{#secondary}}
+        <div class="dropdown-menu dropdown-menu-right {{classes}}"{{#attributes}} {{name}}="{{value}}"{{/attributes}} id="dropdown-menu-{{instance}}">
+            {{#items}}
+                {{#actionmenulink}}
+                    <a href="{{url}}" class="dropdown-item {{classes}}" {{#attributes}}{{name}}={{#quote}}{{value}}{{/quote}} {{/attributes}}{{#showtext}}aria-labelledby="actionmenuaction-{{instance}}"{{/showtext}}>
+                        {{#icon}}
+                            {{#pix}}{{key}},{{component}},{{title}}{{/pix}}
+                        {{/icon}}
+                        {{#showtext}}
+                        <span class="menu-action-text" id="actionmenuaction-{{instance}}">
+                            {{{text}}}
+                        </span>
+                        {{/showtext}}
+                    </a>
+                {{/actionmenulink}}
+                {{#actionmenufiller}}
+                    <div class="dropdown-divider" role="presentation"><span class="filler">&nbsp;</span></div>
+                {{/actionmenufiller}}
+                {{^actionmenulink}}
+                    {{^actionmenufiller}}
+                        <div class="dropdown-item">{{> core/action_menu_item }}</div>
+                    {{/actionmenufiller}}
+                {{/actionmenulink}}
+            {{/items}}
+        </div>
+    {{/secondary}}
+</div>
index 33b0688..a2fac7b 100644 (file)
         "homelink": "/"
     }
 }}
-<h3>{{#str}}considereddigitalminor{{/str}}</h3>
-<p class="m-b-0">{{#str}}digitalminor_desc{{/str}}</p>
-<div class="p-t-1 p-b-1">
-    <p class="m-b-0">{{{supportname}}}</p>
-    <p class="m-b-0">{{{supportemail}}}</p>
-</div>
-<div class="backlink">
-    <a href="{{homelink}}">{{#str}}backtohome{{/str}}</a>
+<div class="container-fluid mt-1 mt-md-5">
+    <div class="row justify-content-md-center">
+        <div class="col-md-8 push-md-2 col-xl-6 push-xl-3">
+            <div class="card">
+                <div class="card-body">
+                    <div class="card-title text-xs-center">
+                        {{#logourl}}
+                            <h2><img src="{{logourl}}" title="{{sitename}}" alt="{{sitename}}"/></h2>
+                        {{/logourl}}
+                        {{^logourl}}
+                            <h2>{{sitename}}</h2>
+                        {{/logourl}}
+                        <hr>
+                    </div>
+                     <div class="card-title">
+                        <h3>{{#str}}considereddigitalminor{{/str}}</h3>
+                    </div>
+                    <div class="p-t-1 p-b-2">
+                        <p>{{#str}}digitalminor_desc{{/str}}</p>
+                        <p class="m-b-0">{{{supportname}}}</p>
+                        <p class="m-b-0">{{{supportemail}}}</p>
+                    </div>
+                    <div class="backlink">
+                        <a href="{{homelink}}">{{#str}}backtohome{{/str}}</a>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
 </div>
index 2d398f8..c462587 100644 (file)
         "formhtml": "(Form html would go here)"
     }
 }}
-{{#error}}
-    <div class="alert alert-danger" role="alert">
-        {{{error}}}
+<div class="container-fluid mt-1 mt-md-5">
+    <div class="row justify-content-md-center">
+        <div class="col-md-8 push-md-2 col-xl-6 push-xl-3">
+            <div class="card">
+                <div class="card-body">
+                    <div class="card-title text-xs-center">
+                        {{#logourl}}
+                            <h2><img src="{{logourl}}" title="{{sitename}}" alt="{{sitename}}"/></h2>
+                        {{/logourl}}
+                        {{^logourl}}
+                            <h2>{{sitename}}</h2>
+                        {{/logourl}}
+                        <hr>
+                    </div>
+                    {{#error}}
+                        <div class="alert alert-danger" role="alert" data-aria-autofocus="true">
+                            {{{error}}}
+                        </div>
+                    {{/error}}
+                    <div class="card-title">
+                        <h3>{{#str}}agelocationverification{{/str}}</h3>
+                    </div>
+                    <div class="m-t-2 m-b-2">
+                        {{{formhtml}}}
+                    </div>
+                    <hr>
+                    <div class="card-title">
+                        <h3>{{#str}}whyisthisrequired{{/str}}</h3>
+                    </div>
+                    <div class="m-t-1">
+                        <p >{{#str}}explanationdigitalminor{{/str}}</p>
+                    </div>
+                </div>
+            </div>
+        </div>
     </div>
-{{/error}}
-<h3>{{#str}}agelocationverification{{/str}}</h3>
-{{{formhtml}}}
-<hr>
-<h3>{{#str}}whyisthisrequired{{/str}}</h3>
-<p >{{#str}}explanationdigitalminor{{/str}}</p>
+</div>
index 954123a..56cf9c3 100644 (file)
 {{!
     @template core/availability_info
 
-    Moodle template for the course or section availability information.
+    Renders the availability info on the course outline page.
+
+    Availability info can be displayed for activity modules or whole course
+    sections. Activity modules can be either hidden from students, or available
+    but not shown on course page (stealth), or the access can be restricted by
+    configured conditions. Sections can be hidden.
 
     Classes required for JS:
     * none
     Data attributes required for JS:
     * none
 
+    Context variables required for this template:
+    * classes String list of CSS classes for the wrapping element
+    * text HTML formatted text with the actual availability information
+    * ishidden Boolean flag indiciating that the item is hidden from students
+    * isstealth Boolean flag indicating that the item is in stealth mode
+    * isrestricted Boolean flag indicating that restricted access conditions apply
+    * isfullinfo Boolean flag indicating that the full list of restricted
+      access conditions is displayed (aka teacher's view).
+
     Example context (json):
-    { "classes": "", "text": "This activity is not available" }
+    {
+        "classes": "",
+        "text": "Not available unless: <ul><li>It is on or after <strong>8 June 2012</strong></li></ul>",
+        "ishidden": 0,
+        "isstealth": 0,
+        "isrestricted": 1,
+        "isfullinfo": 1
+    }
 }}
 {{#text}}
-<div class="availabilityinfo {{classes}}">{{{text}}}</div>
+<div class="availabilityinfo {{classes}}">
+    {{^isrestricted}}
+    <span class="tag tag-info">{{{text}}}</span>
+    {{/isrestricted}}
+    {{#isrestricted}}
+    <span class="tag tag-info">{{#str}}restricted, core{{/str}}</span> {{{text}}}
+    {{/isrestricted}}
+</div>
 {{/text}}
index 166cf5d..5396e29 100644 (file)
@@ -70,8 +70,8 @@
                 </div>
 
                 <div class="submitbuttons">
-                    <input type="submit" name="submitbutton" class="submitbutton" value={{#quote}}{{#str}}add{{/str}}{{/quote}}>
-                    <input type="submit" name="addcancel" class="addcancel" value={{#quote}}{{#str}}cancel{{/str}}{{/quote}}>
+                    <input type="submit" name="submitbutton" class="submitbutton btn btn-primary" value={{#quote}}{{#str}}add{{/str}}{{/quote}}>
+                    <input type="submit" name="addcancel" class="addcancel btn btn-secondary" value={{#quote}}{{#str}}cancel{{/str}}{{/quote}}>
                 </div>
 
             </form>
index 73718de..adb1038 100644 (file)
@@ -41,8 +41,8 @@
     }
 
 }}
-<div class="row-fluid rtl-compatible">
-    <div class="span4">{{$ column1 }}{{{ col1content }}}{{/ column1 }}</div>
-    <div class="span4">{{$ column2 }}{{{ col2content }}}{{/ column2 }}</div>
-    <div class="span4">{{$ column3 }}{{{ col3content }}}{{/ column3 }}</div>
+<div class="row">
+    <div class="col-md-4">{{$ column1 }}{{{ col1content }}}{{/ column1 }}</div>
+    <div class="col-md-4">{{$ column2 }}{{{ col2content }}}{{/ column2 }}</div>
+    <div class="col-md-4">{{$ column3 }}{{{ col3content }}}{{/ column3 }}</div>
 </div>
index 2413342..114efcb 100644 (file)
@@ -39,7 +39,7 @@
     }
 
 }}
-<div class="row-fluid rtl-compatible">
-    <div class="span4">{{$ column1 }}{{{ col1content }}}{{/ column1 }}</div>
-    <div class="span8">{{$ column2 }}{{{ col2content }}}{{/ column2 }}</div>
+<div class="row">
+    <div class="col-md-4">{{$ column1 }}{{{ col1content }}}{{/ column1 }}</div>
+    <div class="col-md-8">{{$ column2 }}{{{ col2content }}}{{/ column2 }}</div>
 </div>
index d66b341..68f6e76 100644 (file)
@@ -38,7 +38,7 @@
         "col2content": "<div class='alert alert-success'>2. Vivamus ac orci in velit fringilla aliquam a a nisl. Cras luctus quam laoreet magna pulvinar aliquet.</div>"
     }
 }}
-<div class="row-fluid rtl-compatible">
-    <div class="span8">{{$ column1 }}{{{ col1content }}}{{/ column1 }}</div>
-    <div class="span4">{{$ column2 }}{{{ col2content }}}{{/ column2 }}</div>
+<div class="row">
+    <div class="col-md-8">{{$ column1 }}{{{ col1content }}}{{/ column1 }}</div>
+    <div class="col-md-4">{{$ column2 }}{{{ col2content }}}{{/ column2 }}</div>
 </div>
index 6f51101..569bc36 100644 (file)
@@ -17,8 +17,6 @@
 {{!
     @template core/dataformat_selector
 
-    Template for dataformat selection and download form.
-
     Context variables required for this template:
     * label
     * base
     {
         "base": "http://example.org/",
         "name": "test",
+        "value": "test",
         "label": "Download table data as",
         "params": false,
         "options": [{"label": "CSV", "name": "csv"}, {"label": "Excel", "name": "excel"}],
-        "submit": "Download"
+        "submit": "Download",
+        "sesskey": ""
     }
 }}
-<form method="get" action="{{base}}" class="dataformatselector">
-    <div class="mdl-align">
+<form method="get" action="{{base}}" class="dataformatselector m-1">
+    <div class="form-inline text-xs-right">
         <input type="hidden" name="sesskey" value="{{sesskey}}">
-        <label for="downloadtype_{{name}}">{{label}}</label>
-        <select name="{{name}}" id="downloadtype_{{name}}">
-        {{#options}}
-            <option value="{{value}}">{{label}}</option>
-        {{/options}}
+        <label for="downloadtype_{{name}}" class="mr-1">{{label}}</label>
+        <select name="{{name}}" id="downloadtype_{{name}}" class="form-control">
+            {{#options}}
+                <option value="{{value}}">{{label}}</option>
+            {{/options}}
         </select>
-        <input type="submit" value="{{submit}}">
+        <button type="submit" class="btn btn-secondary">{{submit}}</button>
         {{#params}}
-        <input type="hidden" name="{{name}}" value="{{value}}" />
+            <input type="hidden" name="{{name}}" value="{{value}}">
         {{/params}}
     </div>
 </form>
index 805b162..ea4614d 100644 (file)
@@ -36,7 +36,7 @@
     { "inputID": 1, "suggestionsId": 2, "selectionId": 3, "downArrowId": 4, "placeholder": "Select something" }
 }}
 {{#showSuggestions}}
-<input type="text" id="{{inputId}}" list="{{suggestionsId}}" placeholder="{{placeholder}}" role="combobox" aria-expanded="false" autocomplete="off" autocorrect="off" autocapitalize="off" aria-autocomplete="list" aria-owns="{{suggestionsId}} {{selectionId}}" {{#tags}}data-tags="1"{{/tags}}/><span class="form-autocomplete-downarrow" id="{{downArrowId}}">&#x25BC;</span>
+<input type="text" id="{{inputId}}" class="form-control" list="{{suggestionsId}}" placeholder="{{placeholder}}" role="combobox" aria-expanded="false" autocomplete="off" autocorrect="off" autocapitalize="off" aria-autocomplete="list" aria-owns="{{suggestionsId}} {{selectionId}}" {{#tags}}data-tags="1"{{/tags}}/><span class="form-autocomplete-downarrow" id="{{downArrowId}}">&#x25BC;</span>
 {{/showSuggestions}}
 {{^showSuggestions}}
 <input type="text" id="{{inputId}}" placeholder="{{placeholder}}" role="textbox" aria-owns="{{selectionId}}" {{#tags}}data-tags="1"{{/tags}}/>
index 90e1c2b..5413dc3 100644 (file)
         { "label": "Another item label with <strong>tags</strong>", "value": "4" }
     ], "noSelectionString": "No selection" }
 }}
-<div class="form-autocomplete-selection {{#multiple}}form-autocomplete-multiple{{/multiple}}" id="{{selectionId}}" role="list" aria-atomic="true" {{#multiple}}tabindex="0" aria-multiselectable="true"{{/multiple}}>
+<div class="form-autocomplete-selection w-100 {{#multiple}}form-autocomplete-multiple{{/multiple}}" id="{{selectionId}}" role="list" aria-atomic="true" {{#multiple}}tabindex="0" aria-multiselectable="true"{{/multiple}}>
 <span class="accesshide">{{#str}}selecteditems, form{{/str}}</span>
     {{#items}}
-        <span role="listitem" data-value="{{value}}" aria-selected="true" class="label label-info" style="font-size: 100%; margin-bottom: 0.5rem;">
+        <span role="listitem" data-value="{{value}}" aria-selected="true" class="tag tag-info mb-3 mr-1" style="font-size: 100%">
             {{#multiple}}<span aria-hidden="true">× </span>{{/multiple}}{{{label}}}
         </span>
     {{/items}}
     {{^items}}
-        <span>{{noSelectionString}}</span>
+        <span class="mb-3 mr-1">{{noSelectionString}}</span>
     {{/items}}
 </div>
-</div>
index 72b2dcd..a52440b 100644 (file)
@@ -1,19 +1,3 @@
-{{!
-    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/help_icon
 
@@ -33,6 +17,9 @@
         }
     }
 }}
-<span class="helptooltip">
-    <a href="{{url}}" title={{#quote}}{{title}}{{/quote}} aria-haspopup="true" target="_blank">{{#icon}}{{>core/pix_icon}}{{/icon}}{{#linktext}}{{.}}{{/linktext}}</a>
-</span>
+<a class="btn btn-link p-0" role="button"
+    data-container="body" data-toggle="popover"
+    data-placement="{{#ltr}}right{{/ltr}}{{^ltr}}left{{/ltr}}" data-content="{{text}} {{completedoclink}}"
+    data-html="true" tabindex="0" data-trigger="focus">
+  {{#pix}}help, core, {{{alt}}}{{/pix}}
+</a>
index 2fe1331..7f02e93 100644 (file)
          ]
     }
 }}
-<div class="initialbar {{class}}">
-    <span class="initialbarlabel">{{title}}</span>
-    {{#current}}
-        <a class="initialbarall page-item letter" href="{{url}}">{{all}}</a>
-    {{/current}}
-    {{^current}}
-        <div class="initialbarall letter page-item active">{{all}}</div>
-    {{/current}}
+<div class="initialbar {{class}} d-flex flex-wrap justify-content-center justify-content-md-start">
+    <span class="initialbarlabel mr-2">{{title}}</span>
 
-    <div class="initialbargroups">
+    <div class="initialbargroups d-flex flex-wrap justify-content-center justify-content-md-start">
+        <ul class="pagination pagination-sm">
+        {{#current}}
+            <li class="initialbarall page-item">
+                <a class="page-link" href="{{url}}">{{all}}</a>
+            </li>
+        {{/current}}
+        {{^current}}
+            <li class="initialbarall page-item active">
+                <a class="page-link">{{all}}</a>
+            </li>
+        {{/current}}
+        </ul>
         {{#group}}
-            <ul class="initialbargroup">
+            <ul class="pagination pagination-sm">
                 {{#letter}}
                     {{#selected}}
-                        <li><span class="letter page-item active {{name}}">{{name}}</span></li>
+                        <li class="page-item active {{name}}"><span class="page-link">{{name}}</span></li>
                     {{/selected}}
                     {{^selected}}
-                        <li><a class="letter page-item {{name}}" href="{{url}}">{{name}}</a></li>
+                        <li class="page-item {{name}}"><a class="page-link" href="{{url}}">{{name}}</a></li>
                     {{/selected}}
                 {{/letter}}
             </ul>
index 9448fea..b0cdaa0 100644 (file)
 
     Moodle template for the login page.
 
+    Context variables required for this template:
+    * autofocusform: Auto focus on form ?,
+    * canloginasguest - Is guest login allowed?,
+    * canloginbyemail - Is login by email allowed?,
+    * cansignup - Signup allowed?,
+    * cookieshelpicon - cookies help icon details
+    * error - Any errors in the form?,
+    * forgotpasswordurl - Forgot password url,
+    * hasidentityproviders - Flag, set to true to hide identity providers,
+    * hasinstructions - Flag, set to true to show instructions,
+    * identityproviders - List of identiy providers,
+    * instructions - Instructions,
+    * instructionsformat - Format of instructions,
+    * loginurl - Login url,
+    * rememberusername - Remeber username?,
+    * signupurl - Signup url,
+    * cookieshelpiconformatted - Formatted html of cookies help icon,
+    * errorformatted - Formatted error,
+    * logourl - Flag, logo url,
+    * sitename - Name of site.
+    * logintoken - Random token to protect login request.
+
     Example context (json):
     {
         "autofocusform": false,
-        "canloginasguest": true,
-        "canloginbyemail": true,
+        "canloginasguest": "1",
+        "canloginbyemail": false,
         "cansignup": true,
-        "error": "testerror",
-        "errorformatted": "Test error formatted",
-        "forgotpasswordurl": "http://example.com/login/forgot_password.php",
+        "cookieshelpicon": {
+            "heading": "Cookies must be enabled in your browser",
+            "text": "<div class=\"no-overflow\">Two cookies are used on this site. Both died..</div>",
+            "icon": {
+                "attributes": [
+                    {
+                        "name": "class",
+                        "value": "iconhelp"
+                    },
+                    {
+                        "name": "alt",
+                        "value": "Help with Cookies must be enabled in your browser"
+                    },
+                    {
+                        "name": "title",
+                        "value": "Help with Cookies must be enabled in your browser"
+                    },
+                    {
+                        "name": "src",
+                        "value": "http://localhost/stable_master/theme/image.php?theme=boost&component=core&image=help"
+                    }
+                ]
+            },
+            "linktext": null,
+            "title": "Help with Cookies must be enabled in your browser",
+            "url": "http://localhost/stable_master/help.php?component=core&identifier=cookiesenabled&lang=en",
+            "ltr": true
+        },
+        "error": "",
+        "forgotpasswordurl": "http://localhost/stable_master/login/forgot_password.php",
         "hasidentityproviders": false,
         "hasinstructions": true,
+        "identityproviders": [],
         "instructions": "For full access to this site, you first need to create an account.",
-        "loginurl": "http://example.com/stable_master/login/index.php",
+        "instructionsformat": "1",
+        "loginurl": "http://localhost/stable_master/login/index.php",
         "rememberusername": true,
         "signupurl": "http://localhost/stable_master/login/signup.php",
         "cookieshelpiconformatted": "",
-        "username": "",
+        "errorformatted": "",
+        "logourl": false,
+        "sitename": "Beer & Chips",
         "logintoken": "randomstring"
     }
 }}
-{{#hasinstructions}}
-<div class="loginbox clearfix twocolumns">
-{{/hasinstructions}}
-{{^hasinstructions}}
-<div class="loginbox clearfix onecolumn">
-{{/hasinstructions}}
 
-    <div class="loginpanel">
-        {{#cansignup}}
-            <div class="skiplinks">
-                <a class="skip" href="{{signupurl}}">{{#str}} tocreatenewaccount {{/str}}</a>
-            </div>
-        {{/cansignup}}
-
-        <h2>{{#str}} login {{/str}}</h2>
+<div class="my-1 my-sm-5"></div>
+<div class="row justify-content-center">
+<div class="col-xl-6 col-sm-8 ">
+<div class="card">
+    <div class="card-block">
+        {{#logourl}}
+            <h2 class="card-header text-center" ><img src="{{logourl}}" title="{{sitename}}" alt="{{sitename}}"/></h2>
+        {{/logourl}}
+        {{^logourl}}
+            <h2 class="card-header text-center">{{sitename}}</h2>
+        {{/logourl}}
+        <div class="card-body">
+            {{#cansignup}}
+                <div class="sr-only">
+                    <a href="{{signupurl}}">{{#str}} tocreatenewaccount {{/str}}</a>
+                </div>
+            {{/cansignup}}
 
-        <div class="subcontent loginsub">
             {{#error}}
-                <div class="loginerrors" role="alert">
+                <div class="loginerrors mt-3">
                     <a href="#" id="loginerrormessage" class="accesshide">{{error}}</a>
-                    {{{errorformatted}}}
+                    <div class="alert alert-danger" role="alert" data-aria-autofocus="true">{{error}}</div>
                 </div>
             {{/error}}
-            <form action="{{loginurl}}" method="post" id="login">
-                <div class="loginform">
-                    <div class="form-label">
-                        <label for="username">
-                            {{^canloginbyemail}}
-                                {{#str}} username {{/str}}
-                            {{/canloginbyemail}}
-                            {{#canloginbyemail}}
-                                {{#str}} usernameemail {{/str}}
-                            {{/canloginbyemail}}
-                        </label>
-                    </div>
-                    <div class="form-input">
-                        <input type="text" name="username" id="username" size="15" value="{{username}}" autocomplete="username">
-                    </div>
-                    <div class="clearer"><!-- --></div>
-                    <div class="form-label">
-                        <label for="password">{{#str}} password {{/str}}</label>
-                    </div>
-                    <div class="form-input">
-                        <input type="password" name="password" id="password" size="15" value="" autocomplete="current-password">
-                    </div>
-                </div>
 
-                <div class="clearer"><!-- --></div>
-                {{#rememberusername}}
-                    <div class="rememberpass">
-                        <input type="checkbox" name="rememberusername" id="rememberusername" value="1" {{#username}}checked="checked"{{/username}} />
-                        <label for="rememberusername">{{#str}} rememberusername, admin {{/str}}</label>
-                    </div>
-                {{/rememberusername}}
-                <div class="clearer"><!-- --></div>
-                <input id="anchor" type="hidden" name="anchor" value="" />
-                <script>document.getElementById('anchor').value = location.hash;</script>
-                <input type="hidden" name="logintoken" value="{{logintoken}}">
-                <input type="submit" id="loginbtn" value={{#quote}}{{#str}} login {{/str}}{{/quote}} />
-                <div class="forgetpass">
-                    <a href="{{forgotpasswordurl}}">{{#str}} forgotten {{/str}}</a>
+            <div class="row justify-content-md-center">
+                <div class="col-md-5">
+                    <form class="mt-3" action="{{loginurl}}" method="post" id="login">
+                        <input id="anchor" type="hidden" name="anchor" value="">
+                        <script>document.getElementById('anchor').value = location.hash;</script>
+                        <input type="hidden" name="logintoken" value="{{logintoken}}">
+                        <div class="form-group">
+                            <label for="username" class="sr-only">
+                                {{^canloginbyemail}}
+                                    {{#str}} username {{/str}}
+                                {{/canloginbyemail}}
+                                {{#canloginbyemail}}
+                                    {{#str}} usernameemail {{/str}}
+                                {{/canloginbyemail}}
+                            </label>
+                            <input type="text" name="username" id="username"
+                                class="form-control"
+                                value="{{username}}"
+                                placeholder={{#quote}}{{^canloginbyemail}}{{#str}}username{{/str}}{{/canloginbyemail}}{{#canloginbyemail}}{{#str}}usernameemail{{/str}}{{/canloginbyemail}}{{/quote}}
+                                autocomplete="username">
+                        </div>
+                        <div class="form-group">
+                            <label for="password" class="sr-only">{{#str}} password {{/str}}</label>
+                            <input type="password" name="password" id="password" value=""
+                                class="form-control"
+                                placeholder={{#quote}}{{#str}}password{{/str}}{{/quote}}
+                                autocomplete="current-password">
+                        </div>
+                        {{#rememberusername}}
+                            <div class="rememberpass mt-3">
+                                <input type="checkbox" name="rememberusername" id="rememberusername" value="1" {{#username}}checked="checked"{{/username}} />
+                                <label for="rememberusername">{{#str}} rememberusername, admin {{/str}}</label>
+                            </div>
+                        {{/rememberusername}}
+
+                        <button type="submit" class="btn btn-primary btn-block mt-3" id="loginbtn">{{#str}}login{{/str}}</button>
+                    </form>
                 </div>
-            </form>
 
-            <div class="desc">
-                {{#str}} cookiesenabled {{/str}}
-                {{{cookieshelpiconformatted}}}
-            </div>
-
-        </div>
+                <div class="col-md-5">
+                    <div class="forgetpass mt-3">
+                        <p><a href="{{forgotpasswordurl}}">{{#str}}forgotten{{/str}}</a></p>
+                    </div>
 
-        {{#canloginasguest}}
-            <div class="subcontent guestsub">
-                <div class="desc">{{#str}} someallowguest {{/str}}</div>
-                <form action="{{loginurl}}" method="post" id="guestlogin">
-                    <div class="guestform">
-                        <input type="hidden" name="logintoken" value="{{logintoken}}">
-                        <input type="hidden" name="username" value="guest" />
-                        <input type="hidden" name="password" value="guest" />
-                        <input type="submit" value={{#quote}}{{#str}} loginguest {{/str}}{{/quote}} />
+                    <div class="mt-3">
+                        {{#str}} cookiesenabled {{/str}}
+                        {{{cookieshelpiconformatted}}}
+                    </div>
+                    {{#canloginasguest}}
+                        <div class="mt-2">
+                            <p>{{#str}}someallowguest{{/str}}</p>
+                            <form action="{{loginurl}}" method="post" id="guestlogin">
+                                <input type="hidden" name="logintoken" value="{{logintoken}}">
+                                <input type="hidden" name="username" value="guest" />
+                                <input type="hidden" name="password" value="guest" />
+                                <button class="btn btn-secondary btn-block" type="submit">{{#str}}loginguest{{/str}}</button>
+                            </form>
+                        </div>
+                    {{/canloginasguest}}
+
+                {{#hasidentityproviders}}
+                    <h6 class="mt-2">{{#str}} potentialidps, auth {{/str}}</h6>
+                    <div class="potentialidplist" class="mt-3">
+                        {{#identityproviders}}
+                            <div class="potentialidp">
+                                <a href="{{url}}" title={{#quote}}{{name}}{{/quote}} class="btn btn-secondary btn-block">
+                                    {{#iconurl}}
+                                        <img src="{{iconurl}}" alt="" width="24" height="24"/>
+                                    {{/iconurl}}
+                                    {{name}}
+                                </a>
+                            </div>
+                        {{/identityproviders}}
                     </div>
-                </form>
+                {{/hasidentityproviders}}
+                </div>
             </div>
-        {{/canloginasguest}}
-
+        </div>
     </div>
+</div>
+</div>
+</div>
 
-    <div class="signuppanel">
-    {{#hasinstructions}}
-        <h2>{{#str}} firsttime {{/str}}</h2>
-        <div class="subcontent">
-            {{{instructions}}}
-            {{#cansignup}}
-                <div class="signupform">
-                    <form action="{{signupurl}}" method="get" id="signup">
-                        <div>
-                            <input type="submit" value={{#quote}}{{#str}} startsignup {{/str}}{{/quote}} />
-                        </div>
-                    </form>
-                </div>
-            {{/cansignup}}
+
+{{#hasinstructions}}
+<div class="row justify-content-center mt-3">
+<div class="col-xl-6 col-sm-8">
+<div class="card">
+    <div class="card-body">
+        <div class="card-title">
+            <h2>{{#str}}firsttime{{/str}}</h2>
         </div>
-    {{/hasinstructions}}
-
-    {{#hasidentityproviders}}
-        <div class="subcontent potentialidps">
-            <h6>{{#str}} potentialidps, auth {{/str}}</h6>
-            <div class="potentialidplist">
-                {{#identityproviders}}
-                    <div class="potentialidp">
-                        <a href="{{url}}" title={{#quote}}{{name}}{{/quote}} class="btn">
-                        {{#iconurl}}
-                            <img src="{{iconurl}}" alt="" width="24" height="24"/>
-                        {{/iconurl}}
-                        {{name}}
-                        </a>
-                    </div>
-                {{/identityproviders}}
-            </div>
+        <div>
+        {{{instructions}}}
+        {{#cansignup}}
+            <form class="mt-3" action="{{signupurl}}" method="get" id="signup">
+                <button type="submit" class="btn btn-secondary">{{#str}}startsignup{{/str}}</button>
+            </form>
+        {{/cansignup}}
         </div>
-    {{/hasidentityproviders}}
     </div>
 </div>
+</div>
+</div>
+{{/hasinstructions}}
 
 {{#js}}
     {{#error}}
index ab5c812..1e8586b 100644 (file)
     }
 }}
 
-<div class="modal-container moodle-has-zindex hide" data-region="modal-container" aria-hidden="true" role="dialog">
-    <div class="modal {{$classes}}{{/classes}}"
-        data-region="modal"
-        aria-labelledby="{{uniqid}}-modal-title"
-        role="document" tabindex="0">
-        <div class="modal-header {{$headerclasses}}{{headerclasses}}{{/headerclasses}}" data-region="header">
-            <button type="button" class="close" data-action="hide" title="{{#str}} closebuttontitle {{/str}}"></button>
-            {{$header}}
-                <h3 id="{{uniqid}}-modal-title" class="modal-title" data-region="title">
-                    {{$title}}{{title}}{{/title}}
-                </h3>
-            {{/header}}
-        </div>
-        <div class="modal-body" data-region="body">
-            {{$body}}
-                {{{body}}}
-            {{/body}}
-        </div>
-        <div class="modal-footer" data-region="footer">
-            {{$footer}}
-                {{{footer}}}
-            {{/footer}}
+<div class="modal moodle-has-zindex" data-region="modal-container" aria-hidden="true" role="dialog">
+    <div class="modal-dialog {{$classes}}{{/classes}}" role="document" data-region="modal" aria-labelledby="{{uniqid}}-modal-title" tabindex="0">
+        <div class="modal-content">
+            <div class="modal-header {{$headerclasses}}{{headerclasses}}{{/headerclasses}}" data-region="header">
+
+                {{$header}}
+                    <h5 id="{{uniqid}}-modal-title" class="modal-title" data-region="title">{{$title}}{{title}}{{/title}}</h5>
+                {{/header}}
+                <button type="button" class="close" data-action="hide" aria-label={{#quote}}{{#str}}closebuttontitle{{/str}}{{/quote}}>
+                  <span aria-hidden="true">&times;</span>
+                </button>
+            </div>
+            <div class="modal-body" data-region="body">
+                {{$body}}
+                    {{{body}}}
+                {{/body}}
+            </div>
+            <div class="modal-footer" data-region="footer">
+                {{$footer}}
+                    {{{footer}}}
+                {{/footer}}
+            </div>
         </div>
     </div>
 </div>
index 8599199..6b12f22 100644 (file)
@@ -33,4 +33,4 @@
     Example context (json):
     {}
 }}
-<div class="modal-backdrop hide" aria-hidden="true" data-region="modal-backdrop"></div>
+<div class="modal-backdrop in hide" aria-hidden="true" data-region="modal-backdrop"></div>
index 0efef7e..3d05b42 100644 (file)
     Example context (json):
     { "message": "Your pants are on fire!", "closebutton": 1, "announce": 1, "extraclasses": "foo bar"}
 }}
-<div class="alert alert-error alert-block fade in {{ extraclasses }}" {{!
-    }}{{# announce }} role="alert"{{/ announce }}{{!
+<div class="alert alert-danger alert-block fade in {{ extraclasses }}" {{!
+    }}{{# announce }} role="alert" data-aria-autofocus="true"{{/ announce }}{{!
     }}>
     {{# closebutton }}<button type="button" class="close" data-dismiss="alert">&times;</button>{{/ closebutton }}
     {{{ message }}}
 </div>
-{{# js }}
-require(['jquery', 'theme_bootstrapbase/bootstrap'], function($) {
-    // Setup closing of bootstrap alerts.
-    $().alert();
-});
-{{/ js }}
index df0dc38..692751f 100644 (file)
     { "message": "Your pants are on fire!", "closebutton": 1, "announce": 1, "extraclasses": "foo bar"}
 }}
 <div class="alert alert-info alert-block fade in {{ extraclasses }}" {{!
-    }}{{# announce }} role="alert"{{/ announce }}{{!
+    }}{{# announce }} role="alert" data-aria-autofocus="true"{{/ announce }}{{!
     }}>
     {{# closebutton }}<button type="button" class="close" data-dismiss="alert">&times;</button>{{/ closebutton }}
     {{{ message }}}
 </div>
-{{# js }}
-require(['jquery', 'theme_bootstrapbase/bootstrap'], function($) {
-    // Setup closing of bootstrap alerts.
-    $().alert();
-});
-{{/ js }}
+
index 9efb628..b33f4aa 100644 (file)
     { "message": "Your pants are on fire!", "closebutton": 1, "announce": 1, "extraclasses": "foo bar"}
 }}
 <div class="alert alert-success alert-block fade in {{ extraclasses }}" {{!
-    }}{{# announce }} role="alert"{{/ announce }}{{!
+    }}{{# announce }} role="alert" data-aria-autofocus="true"{{/ announce }}{{!
     }}>
     {{# closebutton }}<button type="button" class="close" data-dismiss="alert">&times;</button>{{/ closebutton }}
     {{{ message }}}
 </div>
-{{# js }}
-require(['jquery', 'theme_bootstrapbase/bootstrap'], function($) {
-    // Setup closing of bootstrap alerts.
-    $().alert();
-});
-{{/ js }}
index 8aecc39..e3f8bda 100644 (file)
     { "message": "Your pants are on fire!", "closebutton": 1, "announce": 1, "extraclasses": "foo bar"}
 }}
 <div class="alert alert-warning alert-block fade in {{ extraclasses }}" {{!
-    }}{{# announce }} role="alert"{{/ announce }}{{!
+    }}{{# announce }} role="alert" data-aria-autofocus="true"{{/ announce }}{{!
     }}>
     {{# closebutton }}<button type="button" class="close" data-dismiss="alert">&times;</button>{{/ closebutton }}
     {{{ message }}}
 </div>
-{{# js }}
-require(['jquery', 'theme_bootstrapbase/bootstrap'], function($) {
-    // Setup closing of bootstrap alerts.
-    $().alert();
-});
-{{/ js }}
index ae8ac48..56f8212 100644 (file)
         "width": "500"
     }
 }}
-<div class="progressbar_container" style="width: {{width}}px;" id="{{id}}">
-    <h2 id="{{id}}_status"></h2>
-    <div class="progress progress-striped active">
-        <div id="{{id}}_bar" class="bar" role="progressbar" aria-valuemin="0" aria-valuemax="100" aria-valuenow="0">&nbsp;</div>
+<div id="{{id}}" class="row progressbar_container">
+    <div class="col-md-6 push-md-3">
+        <p id="{{id}}_status" class="text-xs-center"></p>
+        <progress id="{{id}}_bar" class="progress progress-striped progress-animated" value="0" max="100"></progress>
+        <p id="{{id}}_estimate" class="text-xs-center"></p>
     </div>
-    <p id="{{id}}_estimate"></p>
 </div>
 
 {{! We must not use the JS helper otherwise this gets executed too late. }}
             estimate = e.detail.estimate;
 
         statusIndicator.textContent = msg;
-        progressBar.textContent = '' + percent + '%';
+        progressBar.setAttribute('value', Math.round(percent));
         if (percent === 100) {
-            el.classList.add('progress-success');
-            estimateIndicator.textContent = '';
+            progressBar.classList.add('progress-success');
+            estimateIndicator.textContent = '100%';
         } else {
             if (estimate) {
-                estimateIndicator.textContent = estimate;
+                estimateIndicator.textContent = estimate + ' - ' + percent + '%';
             } else {
-                estimateIndicator.textContent = '';
+                estimateIndicator.textContent = '' + percent + '%';
             }
-            el.classList.remove('progress-success');
+            progressBar.classList.remove('progress-success');
         }
-        progressBar.setAttribute('aria-valuenow', percent);
-        progressBar.setAttribute('style', 'width: ' + percent + '%');
     });
 })();
 </script>
index d14658a..f2c9029 100644 (file)
@@ -30,8 +30,8 @@
         ]
     }
 }}
-<label for="{{id}}" class="accesshide">{{label}}</label>
-<select name="{{name}}" id="{{id}}"{{#attributes}} {{name}}="{{value}}"{{/attributes}}>
+<label for="{{id}}" class="sr-only">{{label}}</label>
+<select name="{{name}}" id="{{id}}"{{#attributes}} {{name}}="{{value}}"{{/attributes}} class="form-control">
     {{#options}}
         <option value="{{value}}" {{#selected}}selected{{/selected}}>{{name}}</option>
     {{/options}}
index b61bf20..c763f4b 100644 (file)
 
 <ul class="nav nav-tabs" role="tablist">
 <!-- First the top most node and immediate children -->
-    <li class="active"> <a href="#link{{node.key}}" data-toggle="tab" role="tab">{{node.text}}</a> </li>
+    <li class="nav-item">
+        <a class="nav-link active" href="#link{{node.key}}" data-toggle="tab" role="tab">{{node.text}}</a>
+    </li>
 <!-- Now the first level children with sub nodes -->
 {{#node.children}}
     {{#children.count}}
         {{#display}}
             {{^is_short_branch}}
-                <li> <a href="#link{{key}}" data-toggle="tab" role="tab">{{text}}</a> </li>
+                <li class="nav-item">
+                    <a class="nav-link" href="#link{{key}}" data-toggle="tab" role="tab">{{text}}</a>
+                </li>
             {{/is_short_branch}}
         {{/display}}
     {{/children.count}}
 {{/node.children}}
 </ul>
 
-<div class="tab-content">
+<div class="tab-content mt-3">
     <div class="tab-pane active" id="link{{node.key}}" role="tabpanel">
-        <div class="well">
-            <div class="container-fluid">
-                <div class="row">
-                    <div class="span9 offset3">
-                        <ul class="unstyled indented-list">
-                            {{#node.children}}
-                                {{^children.count}}
+        <div class="container">
+            <div class="row">
+                <div class="col-sm-3">
+                </div>
+                <div class="col">
+                    <ul class="list-unstyled">
+                        {{#node.children}}
+                            {{^children.count}}
+                                {{#display}}
+                                    <li><a href="{{{action}}}">{{text}}</a></li>
+                                {{/display}}
+                            {{/children.count}}
+                        {{/node.children}}
+                    </ul>
+                </div>
+            </div>
+
+            {{#node.children}}
+                {{#display}}
+                    {{#children.count}}
+                        {{#is_short_branch}}
+                            <hr>
+                            <div class="row">
+                                <div class="col-sm-3">
+                                    {{#action}}<h4><a href="{{action}}">{{text}}</a><h4>{{/action}}
+                                    {{^action}}<h4>{{text}}<h4>{{/action}}
+                                </div>
+                                <div class="col">
+                                    <ul class="list-unstyled">
+                                        {{#children}}
+                                            {{> core/settings_link_page_single }}
+                                        {{/children}}
+                                    </ul>
+                                </div>
+                            </div>
+                        {{/is_short_branch}}
+                    {{/children.count}}
+                {{/display}}
+            {{/node.children}}
+        </div>
+    </div>
+    {{#node.children}}
+        {{#children.count}}
+            <div class="tab-pane" id="link{{key}}" role="tabpanel">
+                <div class="container">
+                    <div class="row">
+                        <div class="col-sm-3">
+                            {{#action}}<h4><a href="{{action}}">{{text}}</a><h4>{{/action}}
+                            {{^action}}<h4>{{text}}<h4>{{/action}}
+                        </div>
+                        <div class="col-sm-9">
+                            <ul class="list-unstyled">
+                                {{#children}}
                                     {{#display}}
-                                        <li><a href="{{{action}}}">{{text}}</a></li>
+                                        {{^children.count}}
+                                            <li><a href="{{{action}}}">{{text}}</a></li>
+                                        {{/children.count}}
                                     {{/display}}
-                                {{/children.count}}
-                            {{/node.children}}
-                        </ul>
+                                {{/children}}
+                            </ul>
+                        </div>
                     </div>
-                </div>
-
-                {{#node.children}}
-                    {{#display}}
-                        {{#children.count}}
-                            {{#is_short_branch}}
+                    {{#children}}
+                        {{#display}}
+                            {{#children.count}}
                                 <hr>
                                 <div class="row">
-                                    <div class="span3">
+                                    <div class="col-sm-3">
                                         {{#action}}<h4><a href="{{action}}">{{text}}</a><h4>{{/action}}
                                         {{^action}}<h4>{{text}}<h4>{{/action}}
                                     </div>
-                                    <div class="span9">
-                                        <ul class="unstyled indented-list">
+                                    <div class="col-sm-9">
+                                        <ul class="list-unstyled">
                                             {{#children}}
                                                 {{> core/settings_link_page_single }}
                                             {{/children}}
                                         </ul>
                                     </div>
                                 </div>
-                            {{/is_short_branch}}
-                        {{/children.count}}
-                    {{/display}}
-                {{/node.children}}
-            </div>
-        </div>
-    </div>
-    {{#node.children}}
-        {{#children.count}}
-            <div class="tab-pane" id="link{{key}}" role="tabpanel">
-                <div class="well">
-                    <div class="container-fluid">
-                        <div class="row">
-                            <div class="span3">
-                                {{#action}}<h4><a href="{{action}}">{{text}}</a><h4>{{/action}}
-                                {{^action}}<h4>{{text}}<h4>{{/action}}
-                            </div>
-                            <div class="span9">
-                                <ul class="unstyled">
-                                    {{#children}}
-                                        {{#display}}
-                                            {{^children.count}}
-                                                <li><a href="{{{action}}}">{{text}}</a></li>
-                                            {{/children.count}}
-                                        {{/display}}
-                                    {{/children}}
-                                </ul>
-                            </div>
-                        </div>
-                        {{#children}}
-                            {{#display}}
-                                {{#children.count}}
-                                    <hr>
-                                    <div class="row">
-                                        <div class="span3">
-                                            {{#action}}<h4><a href="{{action}}">{{text}}</a><h4>{{/action}}
-                                            {{^action}}<h4>{{text}}<h4>{{/action}}
-                                        </div>
-                                        <div class="span9">
-                                            <ul class="unstyled indented-list">
-                                                {{#children}}
-                                                    {{> core/settings_link_page_single }}
-                                                {{/children}}
-                                            </ul>
-                                        </div>
-                                    </div>
-                                {{/children.count}}
-                            {{/display}}
-                        {{/children}}
-                    </div>
+                            {{/children.count}}
+                        {{/display}}
+                    {{/children}}
                 </div>
             </div>
         {{/children.count}}
index 07eb729..e34dd43 100644 (file)
@@ -36,7 +36,7 @@
     {{/action}}
     {{#children.count}}
         <li>
-            <ul class="unstyled indented-list">
+            <ul class="list-unstyled ml-2">
                 {{#children}}
                     {{> core/settings_link_page_single }}
                 {{/children}}
index dee3e2d..86dfa91 100644 (file)
@@ -3,8 +3,31 @@
 
     Example context (json):
     {
+        "logourl": "https://moodle.org/logo/moodle-logo.svg",
+        "sitename": "Site name",
         "formhtml": "<p>(Form html would go here)</p>"
     }
 }}
-<h3>{{#str}}newaccount{{/str}}</h3>
-{{{formhtml}}}
+<div class="container-fluid mt-1 mt-md-5">
+    <div class="row justify-content-md-center">
+        <div class="col-md-8 col-xl-6">
+            <div class="card">
+                <div class="card-body">
+                    <div class="card-title text-xs-center">
+                        {{#logourl}}
+                            <h2><img src="{{logourl}}" title="{{sitename}}" alt="{{sitename}}"/></h2>
+                        {{/logourl}}
+                        {{^logourl}}
+                            <h2>{{sitename}}</h2>
+                        {{/logourl}}
+                        <hr>
+                    </div>
+                    <div class="card-title">
+                        <h3>{{#str}}newaccount{{/str}}</h3>
+                    </div>
+                    {{{formhtml}}}
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
index 9eca305..265cc1d 100644 (file)
@@ -50,7 +50,7 @@
         {{#params}}
             <input type="hidden" name="{{name}}" value="{{value}}">
         {{/params}}
-        <button type="submit" class="btn {{#primary}}btn-primary{{/primary}}{{^primary}}btn-default{{/primary}}"
+        <button type="submit" class="btn {{#primary}}btn-primary{{/primary}}{{^primary}}btn-secondary{{/primary}}"
             id="{{id}}"
             title={{#quote}}{{tooltip}}{{/quote}}
             {{#disabled}}disabled{{/disabled}}>{{label}}</button>
index 6e17fa5..d8c49a7 100644 (file)
@@ -9,13 +9,8 @@
         ]
     }
 }}
-<div class="skiplinks">
+<div>
 {{#links}}
-    <a href="#{{{url}}}" class="skip">{{{text}}}</a>
+    <a class="sr-only sr-only-focusable" href="#{{{url}}}">{{{text}}}</a>
 {{/links}}
-</div>
-{{#js}}
-require(['core/yui'], function(Y) {
-    M.util.init_skiplink(Y);
-});
-{{/js}}
\ No newline at end of file
+</div>
\ No newline at end of file
diff --git a/theme/boost/templates/core/action_menu_trigger.mustache b/theme/boost/templates/core/action_menu_trigger.mustache
deleted file mode 100644 (file)
index 8efab38..0000000
+++ /dev/null
@@ -1,120 +0,0 @@
-{{!
-    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/action_menu_trigger
-
-    Action menu trigger.
-
-    Example context (json):
-    {
-        "text": "Example link text",
-        "title": "Example link title",
-        "url": "http://example.com/link",
-        "classes": "icon menu-action",
-        "instance": "1",
-        "triggerextraclasses": "",
-        "attributes": [
-            {"name": "role", "value": "menuitem" },
-            {"name": "data-title", "value": "mymoodle,admin" }
-        ],
-        "secondary": {
-            "classes": "menu  align-tr-br",
-            "attributes": [
-                {"name": "id", "value": "action-menu-0-menu"},
-                {"name": "data-rel", "value": "menu-content"},
-                {"name": "role", "value": "menu"},
-                {"name": "data-align", "value": "tr-br"}
-            ],
-            "items": [
-                {"actionmenulink":
-                    {
-                    "id": "action_link59ecf8394a68078",
-                    "disabled": false,
-                    "text": "Dashboard",
-                    "url": "http://example.com/link",
-                    "icon": {
-                        "key": "i/dashboard",
-                        "component": null,
-                        "title": "Dashboard"
-                        },
-                    "classes": "icon menu-action",
-                    "attributes": [
-                        {"name": "role", "value": "menuitem"},
-                        {"name": "data-title", "value": "mymoodle,admin"}
-                        ],
-                    "instance": 1,
-                    "showtext": true
-                    }
-                },
-                {"actionmenufiller":
-                    {
-                    "id": "action_link59ecf8394a68079",
-                    "disabled": false,
-                    "text": "",
-                    "url": "",
-                    "icon": null,
-                    "classes": "",
-                    "attributes": [
-                        {"name": "role", "value": "menuitem"}
-                        ]
-                    }
-                }
-            ]
-        }
-    }
-}}
-<div class="dropdown">
-    <a href="#" tabindex="0" class="{{triggerextraclasses}} dropdown-toggle icon-no-margin" id="dropdown-{{instance}}" aria-label="{{title}}" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" aria-controls="action-menu-{{instance}}-menu">
-        {{{actiontext}}}
-        {{{menutrigger}}}
-            {{#icon}}
-                {{#pix}}
-                    {{key}},{{component}},{{title}}
-                {{/pix}}
-            {{/icon}}
-            {{#rawicon}}{{{.}}}{{/rawicon}}
-        {{#menutrigger}}
-        <b class="caret"></b>
-        {{/menutrigger}}
-    </a>
-    {{#secondary}}
-        <div class="dropdown-menu dropdown-menu-right {{classes}}"{{#attributes}} {{name}}="{{value}}"{{/attributes}} id="dropdown-menu-{{instance}}">
-            {{#items}}
-                {{#actionmenulink}}
-                    <a href="{{url}}" class="dropdown-item {{classes}}" {{#attributes}}{{name}}={{#quote}}{{value}}{{/quote}} {{/attributes}}{{#showtext}}aria-labelledby="actionmenuaction-{{instance}}"{{/showtext}}>
-                        {{#icon}}
-                            {{#pix}}{{key}},{{component}},{{title}}{{/pix}}
-                        {{/icon}}
-                        {{#showtext}}
-                        <span class="menu-action-text" id="actionmenuaction-{{instance}}">
-                            {{{text}}}
-                        </span>
-                        {{/showtext}}
-                    </a>
-                {{/actionmenulink}}
-                {{#actionmenufiller}}
-                    <div class="dropdown-divider" role="presentation"><span class="filler">&nbsp;</span></div>
-                {{/actionmenufiller}}
-                {{^actionmenulink}}
-                    {{^actionmenufiller}}
-                        <div class="dropdown-item">{{> core/action_menu_item }}</div>
-                    {{/actionmenufiller}}
-                {{/actionmenulink}}
-            {{/items}}
-        </div>
-    {{/secondary}}
-</div>
diff --git a/theme/boost/templates/core/auth_digital_minor_page.mustache b/theme/boost/templates/core/auth_digital_minor_page.mustache
deleted file mode 100644 (file)
index a2fac7b..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-{{!
-    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_auth/output/digital_minor_page
-
-    Example context (json):
-    {
-        "logourl": "https://moodle.org/logo/moodle-logo.svg",
-        "sitename": "Site name",
-        "supportname": "John Doe",
-        "supportemail": "johndoe@example.com",
-        "homelink": "/"
-    }
-}}
-<div class="container-fluid mt-1 mt-md-5">
-    <div class="row justify-content-md-center">
-        <div class="col-md-8 push-md-2 col-xl-6 push-xl-3">
-            <div class="card">
-                <div class="card-body">
-                    <div class="card-title text-xs-center">
-                        {{#logourl}}
-                            <h2><img src="{{logourl}}" title="{{sitename}}" alt="{{sitename}}"/></h2>
-                        {{/logourl}}
-                        {{^logourl}}
-                            <h2>{{sitename}}</h2>
-                        {{/logourl}}
-                        <hr>
-                    </div>
-                     <div class="card-title">
-                        <h3>{{#str}}considereddigitalminor{{/str}}</h3>
-                    </div>
-                    <div class="p-t-1 p-b-2">
-                        <p>{{#str}}digitalminor_desc{{/str}}</p>
-                        <p class="m-b-0">{{{supportname}}}</p>
-                        <p class="m-b-0">{{{supportemail}}}</p>
-                    </div>
-                    <div class="backlink">
-                        <a href="{{homelink}}">{{#str}}backtohome{{/str}}</a>
-                    </div>
-                </div>
-            </div>
-        </div>
-    </div>
-</div>
diff --git a/theme/boost/templates/core/auth_verify_age_location_page.mustache b/theme/boost/templates/core/auth_verify_age_location_page.mustache
deleted file mode 100644 (file)
index c462587..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-{{!
-    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_auth/output/verify_age_location_page
-
-    Example context (json):
-    {
-        "logourl": "https://moodle.org/logo/moodle-logo.svg",
-        "sitename": "Site name",
-        "error": "Error message",
-        "formhtml": "(Form html would go here)"
-    }
-}}
-<div class="container-fluid mt-1 mt-md-5">
-    <div class="row justify-content-md-center">
-        <div class="col-md-8 push-md-2 col-xl-6 push-xl-3">
-            <div class="card">
-                <div class="card-body">
-                    <div class="card-title text-xs-center">
-                        {{#logourl}}
-                            <h2><img src="{{logourl}}" title="{{sitename}}" alt="{{sitename}}"/></h2>
-                        {{/logourl}}
-                        {{^logourl}}
-                            <h2>{{sitename}}</h2>
-                        {{/logourl}}
-                        <hr>
-                    </div>
-                    {{#error}}
-                        <div class="alert alert-danger" role="alert" data-aria-autofocus="true">
-                            {{{error}}}
-                        </div>
-                    {{/error}}
-                    <div class="card-title">
-                        <h3>{{#str}}agelocationverification{{/str}}</h3>
-                    </div>
-                    <div class="m-t-2 m-b-2">
-                        {{{formhtml}}}
-                    </div>
-                    <hr>
-                    <div class="card-title">
-                        <h3>{{#str}}whyisthisrequired{{/str}}</h3>
-                    </div>
-                    <div class="m-t-1">
-                        <p >{{#str}}explanationdigitalminor{{/str}}</p>
-                    </div>
-                </div>
-            </div>
-        </div>
-    </div>
-</div>
diff --git a/theme/boost/templates/core/availability_info.mustache b/theme/boost/templates/core/availability_info.mustache
deleted file mode 100644 (file)
index 56cf9c3..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-{{!
-    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/availability_info
-
-    Renders the availability info on the course outline page.
-
-    Availability info can be displayed for activity modules or whole course
-    sections. Activity modules can be either hidden from students, or available
-    but not shown on course page (stealth), or the access can be restricted by
-    configured conditions. Sections can be hidden.
-
-    Classes required for JS:
-    * none
-
-    Data attributes required for JS:
-    * none
-
-    Context variables required for this template:
-    * classes String list of CSS classes for the wrapping element
-    * text HTML formatted text with the actual availability information
-    * ishidden Boolean flag indiciating that the item is hidden from students
-    * isstealth Boolean flag indicating that the item is in stealth mode
-    * isrestricted Boolean flag indicating that restricted access conditions apply
-    * isfullinfo Boolean flag indicating that the full list of restricted
-      access conditions is displayed (aka teacher's view).
-
-    Example context (json):
-    {
-        "classes": "",
-        "text": "Not available unless: <ul><li>It is on or after <strong>8 June 2012</strong></li></ul>",
-        "ishidden": 0,
-        "isstealth": 0,
-        "isrestricted": 1,
-        "isfullinfo": 1
-    }
-}}
-{{#text}}
-<div class="availabilityinfo {{classes}}">
-    {{^isrestricted}}
-    <span class="tag tag-info">{{{text}}}</span>
-    {{/isrestricted}}
-    {{#isrestricted}}
-    <span class="tag tag-info">{{#str}}restricted, core{{/str}}</span> {{{text}}}
-    {{/isrestricted}}
-</div>
-{{/text}}
diff --git a/theme/boost/templates/core/help_icon.mustache b/theme/boost/templates/core/help_icon.mustache
deleted file mode 100644 (file)
index a52440b..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-{{!
-    @template core/help_icon
-
-    Help icon.
-
-    Example context (json):
-    {
-        "title": "Help with something",
-        "url": "http://example.org/help",
-        "linktext": "",
-        "icon":{
-            "attributes": [
-                {"name": "class", "value": "iconhelp"},
-                {"name": "src", "value": "../../../pix/help.svg"},
-                {"name": "alt", "value": "Help icon"}
-            ]
-        }
-    }
-}}
-<a class="btn btn-link p-0" role="button"
-    data-container="body" data-toggle="popover"
-    data-placement="{{#ltr}}right{{/ltr}}{{^ltr}}left{{/ltr}}" data-content="{{text}} {{completedoclink}}"
-    data-html="true" tabindex="0" data-trigger="focus">
-  {{#pix}}help, core, {{{alt}}}{{/pix}}
-</a>
diff --git a/theme/boost/templates/core/loginform.mustache b/theme/boost/templates/core/loginform.mustache
deleted file mode 100644 (file)
index b0cdaa0..0000000
+++ /dev/null
@@ -1,244 +0,0 @@
-{{!
-    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/loginform
-
-    Moodle template for the login page.
-
-    Context variables required for this template:
-    * autofocusform: Auto focus on form ?,
-    * canloginasguest - Is guest login allowed?,
-    * canloginbyemail - Is login by email allowed?,
-    * cansignup - Signup allowed?,
-    * cookieshelpicon - cookies help icon details
-    * error - Any errors in the form?,
-    * forgotpasswordurl - Forgot password url,
-    * hasidentityproviders - Flag, set to true to hide identity providers,
-    * hasinstructions - Flag, set to true to show instructions,
-    * identityproviders - List of identiy providers,
-    * instructions - Instructions,
-    * instructionsformat - Format of instructions,
-    * loginurl - Login url,
-    * rememberusername - Remeber username?,
-    * signupurl - Signup url,
-    * cookieshelpiconformatted - Formatted html of cookies help icon,
-    * errorformatted - Formatted error,
-    * logourl - Flag, logo url,
-    * sitename - Name of site.
-    * logintoken - Random token to protect login request.
-
-    Example context (json):
-    {
-        "autofocusform": false,
-        "canloginasguest": "1",
-        "canloginbyemail": false,
-        "cansignup": true,
-        "cookieshelpicon": {
-            "heading": "Cookies must be enabled in your browser",
-            "text": "<div class=\"no-overflow\">Two cookies are used on this site. Both died..</div>",
-            "icon": {
-                "attributes": [
-                    {
-                        "name": "class",
-                        "value": "iconhelp"
-                    },
-                    {
-                        "name": "alt",
-                        "value": "Help with Cookies must be enabled in your browser"
-                    },
-                    {
-                        "name": "title",
-                        "value": "Help with Cookies must be enabled in your browser"
-                    },
-                    {
-                        "name": "src",
-                        "value": "http://localhost/stable_master/theme/image.php?theme=boost&component=core&image=help"
-                    }
-                ]
-            },
-            "linktext": null,
-            "title": "Help with Cookies must be enabled in your browser",
-            "url": "http://localhost/stable_master/help.php?component=core&identifier=cookiesenabled&lang=en",
-            "ltr": true
-        },
-        "error": "",
-        "forgotpasswordurl": "http://localhost/stable_master/login/forgot_password.php",
-        "hasidentityproviders": false,
-        "hasinstructions": true,
-        "identityproviders": [],
-        "instructions": "For full access to this site, you first need to create an account.",
-        "instructionsformat": "1",
-        "loginurl": "http://localhost/stable_master/login/index.php",
-        "rememberusername": true,
-        "signupurl": "http://localhost/stable_master/login/signup.php",
-        "cookieshelpiconformatted": "",
-        "errorformatted": "",
-        "logourl": false,
-        "sitename": "Beer & Chips",
-        "logintoken": "randomstring"
-    }
-}}
-
-<div class="my-1 my-sm-5"></div>
-<div class="row justify-content-center">
-<div class="col-xl-6 col-sm-8 ">
-<div class="card">
-    <div class="card-block">
-        {{#logourl}}
-            <h2 class="card-header text-center" ><img src="{{logourl}}" title="{{sitename}}" alt="{{sitename}}"/></h2>
-        {{/logourl}}
-        {{^logourl}}
-            <h2 class="card-header text-center">{{sitename}}</h2>
-        {{/logourl}}
-        <div class="card-body">
-            {{#cansignup}}
-                <div class="sr-only">
-                    <a href="{{signupurl}}">{{#str}} tocreatenewaccount {{/str}}</a>
-                </div>
-            {{/cansignup}}
-
-            {{#error}}
-                <div class="loginerrors mt-3">
-                    <a href="#" id="loginerrormessage" class="accesshide">{{error}}</a>
-                    <div class="alert alert-danger" role="alert" data-aria-autofocus="true">{{error}}</div>
-                </div>
-            {{/error}}
-
-            <div class="row justify-content-md-center">
-                <div class="col-md-5">
-                    <form class="mt-3" action="{{loginurl}}" method="post" id="login">
-                        <input id="anchor" type="hidden" name="anchor" value="">
-                        <script>document.getElementById('anchor').value = location.hash;</script>
-                        <input type="hidden" name="logintoken" value="{{logintoken}}">
-                        <div class="form-group">
-                            <label for="username" class="sr-only">
-                                {{^canloginbyemail}}
-                                    {{#str}} username {{/str}}
-                                {{/canloginbyemail}}
-                                {{#canloginbyemail}}
-                                    {{#str}} usernameemail {{/str}}
-                                {{/canloginbyemail}}
-                            </label>
-                            <input type="text" name="username" id="username"
-                                class="form-control"
-                                value="{{username}}"
-                                placeholder={{#quote}}{{^canloginbyemail}}{{#str}}username{{/str}}{{/canloginbyemail}}{{#canloginbyemail}}{{#str}}usernameemail{{/str}}{{/canloginbyemail}}{{/quote}}
-                                autocomplete="username">
-                        </div>
-                        <div class="form-group">
-                            <label for="password" class="sr-only">{{#str}} password {{/str}}</label>
-                            <input type="password" name="password" id="password" value=""
-                                class="form-control"
-                                placeholder={{#quote}}{{#str}}password{{/str}}{{/quote}}
-                                autocomplete="current-password">
-                        </div>
-                        {{#rememberusername}}
-                            <div class="rememberpass mt-3">
-                                <input type="checkbox" name="rememberusername" id="rememberusername" value="1" {{#username}}checked="checked"{{/username}} />
-                                <label for="rememberusername">{{#str}} rememberusername, admin {{/str}}</label>
-                            </div>
-                        {{/rememberusername}}
-
-                        <button type="submit" class="btn btn-primary btn-block mt-3" id="loginbtn">{{#str}}login{{/str}}</button>
-                    </form>
-                </div>
-
-                <div class="col-md-5">
-                    <div class="forgetpass mt-3">
-                        <p><a href="{{forgotpasswordurl}}">{{#str}}forgotten{{/str}}</a></p>
-                    </div>
-
-                    <div class="mt-3">
-                        {{#str}} cookiesenabled {{/str}}
-                        {{{cookieshelpiconformatted}}}
-                    </div>
-                    {{#canloginasguest}}
-                        <div class="mt-2">
-                            <p>{{#str}}someallowguest{{/str}}</p>
-                            <form action="{{loginurl}}" method="post" id="guestlogin">
-                                <input type="hidden" name="logintoken" value="{{logintoken}}">
-                                <input type="hidden" name="username" value="guest" />
-                                <input type="hidden" name="password" value="guest" />
-                                <button class="btn btn-secondary btn-block" type="submit">{{#str}}loginguest{{/str}}</button>
-                            </form>
-                        </div>
-                    {{/canloginasguest}}
-
-                {{#hasidentityproviders}}
-                    <h6 class="mt-2">{{#str}} potentialidps, auth {{/str}}</h6>
-                    <div class="potentialidplist" class="mt-3">
-                        {{#identityproviders}}
-                            <div class="potentialidp">
-                                <a href="{{url}}" title={{#quote}}{{name}}{{/quote}} class="btn btn-secondary btn-block">
-                                    {{#iconurl}}
-                                        <img src="{{iconurl}}" alt="" width="24" height="24"/>
-                                    {{/iconurl}}
-                                    {{name}}
-                                </a>
-                            </div>
-                        {{/identityproviders}}
-                    </div>
-                {{/hasidentityproviders}}
-                </div>
-            </div>
-        </div>
-    </div>
-</div>
-</div>
-</div>
-
-
-{{#hasinstructions}}
-<div class="row justify-content-center mt-3">
-<div class="col-xl-6 col-sm-8">
-<div class="card">
-    <div class="card-body">
-        <div class="card-title">
-            <h2>{{#str}}firsttime{{/str}}</h2>
-        </div>
-        <div>
-        {{{instructions}}}
-        {{#cansignup}}
-            <form class="mt-3" action="{{signupurl}}" method="get" id="signup">
-                <button type="submit" class="btn btn-secondary">{{#str}}startsignup{{/str}}</button>
-            </form>
-        {{/cansignup}}
-        </div>
-    </div>
-</div>
-</div>
-</div>
-{{/hasinstructions}}
-
-{{#js}}
-    {{#error}}
-        require(['jquery'], function($) {
-            $('#loginerrormessage').focus();
-        });
-    {{/error}}
-    {{^error}}
-        {{#autofocusform}}
-            require(['jquery'], function($) {
-                if ($('#username').val()) {
-                    $('#password').focus();
-                } else {
-                    $('#username').focus();
-                }
-            });
-        {{/autofocusform}}
-    {{/error}}
-{{/js}}
diff --git a/theme/boost/templates/core/settings_link_page.mustache b/theme/boost/templates/core/settings_link_page.mustache
deleted file mode 100644 (file)
index c763f4b..0000000
+++ /dev/null
@@ -1,147 +0,0 @@
-{{!
-    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/settings_link_page
-
-    Displays the admin tree as a list of grouped links.
-
-    Example context (json):
-    {
-        "node": {
-            "text": "Root of menu",
-            "key": "test0",
-            "display": true,
-            "children": [
-                {
-                    "text": "Child of menu",
-                    "key": "test1",
-                    "display": true,
-                    "children": []
-                }
-            ]
-        }
-    }
-}}
-
-<ul class="nav nav-tabs" role="tablist">
-<!-- First the top most node and immediate children -->
-    <li class="nav-item">
-        <a class="nav-link active" href="#link{{node.key}}" data-toggle="tab" role="tab">{{node.text}}</a>
-    </li>
-<!-- Now the first level children with sub nodes -->
-{{#node.children}}
-    {{#children.count}}
-        {{#display}}
-            {{^is_short_branch}}
-                <li class="nav-item">
-                    <a class="nav-link" href="#link{{key}}" data-toggle="tab" role="tab">{{text}}</a>
-                </li>
-            {{/is_short_branch}}
-        {{/display}}
-    {{/children.count}}
-{{/node.children}}
-</ul>
-
-<div class="tab-content mt-3">
-    <div class="tab-pane active" id="link{{node.key}}" role="tabpanel">
-        <div class="container">
-            <div class="row">
-                <div class="col-sm-3">
-                </div>
-                <div class="col">
-                    <ul class="list-unstyled">
-                        {{#node.children}}
-                            {{^children.count}}
-                                {{#display}}
-                                    <li><a href="{{{action}}}">{{text}}</a></li>
-                                {{/display}}
-                            {{/children.count}}
-                        {{/node.children}}
-                    </ul>
-                </div>
-            </div>
-
-            {{#node.children}}
-                {{#display}}
-                    {{#children.count}}
-                        {{#is_short_branch}}
-                            <hr>
-                            <div class="row">
-                                <div class="col-sm-3">
-                                    {{#action}}<h4><a href="{{action}}">{{text}}</a><h4>{{/action}}
-                                    {{^action}}<h4>{{text}}<h4>{{/action}}
-                                </div>
-                                <div class="col">
-                                    <ul class="list-unstyled">
-                                        {{#children}}
-                                            {{> core/settings_link_page_single }}
-                                        {{/children}}
-                                    </ul>
-                                </div>
-                            </div>
-                        {{/is_short_branch}}
-                    {{/children.count}}
-                {{/display}}
-            {{/node.children}}
-        </div>
-    </div>
-    {{#node.children}}
-        {{#children.count}}
-            <div class="tab-pane" id="link{{key}}" role="tabpanel">
-                <div class="container">
-                    <div class="row">
-                        <div class="col-sm-3">
-                            {{#action}}<h4><a href="{{action}}">{{text}}</a><h4>{{/action}}
-                            {{^action}}<h4>{{text}}<h4>{{/action}}
-                        </div>
-                        <div class="col-sm-9">
-                            <ul class="list-unstyled">
-                                {{#children}}
-                                    {{#display}}
-                                        {{^children.count}}
-                                            <li><a href="{{{action}}}">{{text}}</a></li>
-                                        {{/children.count}}
-                                    {{/display}}
-                                {{/children}}
-                            </ul>
-                        </div>
-                    </div>
-                    {{#children}}
-                        {{#display}}
-                            {{#children.count}}
-                                <hr>
-                                <div class="row">
-                                    <div class="col-sm-3">
-                                        {{#action}}<h4><a href="{{action}}">{{text}}</a><h4>{{/action}}
-                                        {{^action}}<h4>{{text}}<h4>{{/action}}
-                                    </div>
-                                    <div class="col-sm-9">
-                                        <ul class="list-unstyled">
-                                            {{#children}}
-                                                {{> core/settings_link_page_single }}
-                                            {{/children}}
-                                        </ul>
-                                    </div>
-                                </div>
-                            {{/children.count}}
-                        {{/display}}
-                    {{/children}}
-                </div>
-            </div>
-        {{/children.count}}
-    {{/node.children}}
-</div>
diff --git a/theme/boost/templates/core/signup_form_layout.mustache b/theme/boost/templates/core/signup_form_layout.mustache
deleted file mode 100644 (file)
index 86dfa91..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-{{!
-    @template core/signup_form_layout
-
-    Example context (json):
-    {
-        "logourl": "https://moodle.org/logo/moodle-logo.svg",
-        "sitename": "Site name",
-        "formhtml": "<p>(Form html would go here)</p>"
-    }
-}}
-<div class="container-fluid mt-1 mt-md-5">
-    <div class="row justify-content-md-center">
-        <div class="col-md-8 col-xl-6">
-            <div class="card">
-                <div class="card-body">
-                    <div class="card-title text-xs-center">
-                        {{#logourl}}
-                            <h2><img src="{{logourl}}" title="{{sitename}}" alt="{{sitename}}"/></h2>
-                        {{/logourl}}
-                        {{^logourl}}
-                            <h2>{{sitename}}</h2>
-                        {{/logourl}}
-                        <hr>
-                    </div>
-                    <div class="card-title">
-                        <h3>{{#str}}newaccount{{/str}}</h3>
-                    </div>
-                    {{{formhtml}}}
-                </div>
-            </div>
-        </div>
-    </div>
-</div>
         }
     }
 }}
-<div class="action-menu {{classes}} d-inline"{{#attributes}} {{name}}="{{value}}"{{/attributes}}>
+<div class="{{classes}}"{{#attributes}} {{name}}="{{value}}"{{/attributes}}>
     {{#primary}}
 
-        <div class="{{classes}} d-flex "{{#attributes}} {{name}}="{{value}}"{{/attributes}}>
+        <ul class="{{classes}}"{{#attributes}} {{name}}="{{value}}"{{/attributes}}>
 
-            {{#prioritise}}{{> core/action_menu_trigger }}{{/prioritise}}
+            {{#prioritise}}<li role="presentation">{{> core/action_menu_trigger }}</li>{{/prioritise}}<!--
 
-            {{#items}}
-                <div class="action-menu-item">
-                    {{> core/action_menu_item }}
-                </div>
-            {{/items}}
+            -->{{#items}}<li role="presentation">{{> core/action_menu_item }}</li>{{/items}}<!--
 
-            {{^prioritise}}
-                <div class="action-menu-trigger">
-                    {{> core/action_menu_trigger }}
-                </div>
-            {{/prioritise}}
+            -->{{^prioritise}}<li role="presentation">{{> core/action_menu_trigger }}</li>{{/prioritise}}
 
-        </div>
+        </ul>
 
     {{/primary}}
+
+    {{#secondary}}
+        <ul class="{{classes}}"{{#attributes}} {{name}}="{{value}}"{{/attributes}}>
+            {{#items}}<li role="presentation">{{> core/action_menu_item }}</li>{{/items}}
+        </ul>
+    {{/secondary}}
 </div>
+{{#js}}
+require(['core/yui'], function(Y) {
+    Y.use('moodle-core-actionmenu', function() {
+        M.core.actionmenu.init();
+    });
+});
+{{/js}}
     {
         "text": "Example link text",
         "showtext": true,
-        "url": "http://example.com/link"
+        "url": "http://example.com/link",
+        "classes": "menu-action",
+        "instance": "1"
     }
 }}
 {{^disabled}}
     <a href="{{url}}" class="{{classes}}" {{#attributes}}{{name}}={{#quote}}{{value}}{{/quote}} {{/attributes}}{{#showtext}}aria-labelledby="actionmenuaction-{{instance}}"{{/showtext}}>{{#icon}}{{#pix}}{{key}}, {{component}}, {{title}}{{/pix}}{{/icon}}{{#showtext}}<span class="menu-action-text" id="actionmenuaction-{{instance}}">{{{text}}}</span>{{/showtext}}</a>
 {{/disabled}}
 {{#disabled}}
-    <span class="currentlink" role="menuitem">{{#icon}}{{#pix}}{{key}},{{component}},{{title}}{{/pix}}{{/icon}}{{{text}}}</span>
+    <span class="currentlink" role="menuitem">{{#icon}}{{#pix}}{{key}}, {{component}}, {{title}}{{/pix}}{{/icon}}{{{text}}}</span>
 {{/disabled}}
diff --git a/theme/bootstrapbase/templates/core/action_menu_trigger.mustache b/theme/bootstrapbase/templates/core/action_menu_trigger.mustache
new file mode 100644 (file)
index 0000000..fce1a8b
--- /dev/null
@@ -0,0 +1,30 @@
+{{!
+    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/action_menu_trigger
+
+    Action menu trigger.
+
+    Example context (json):
+    {
+        "instance": "1",
+        "title": "Trigger me!",
+        "menutrigger": true,
+        "triggerextraclasses": ""
+    }
+}}
+<a href="#" class="{{triggerextraclasses}} toggle-display {{#menutrigger}}textmenu{{/menutrigger}}" id="action-menu-toggle-{{instance}}" title="{{title}}" role="menuitem">{{{actiontext}}}{{{menutrigger}}}{{#icon}}{{#pix}}{{key}}, {{component}}, {{title}}{{/pix}}{{/icon}}{{#rawicon}}{{{.}}}{{/rawicon}}{{#menutrigger}}<b class="caret"></b>{{/menutrigger}}</a>
diff --git a/theme/bootstrapbase/templates/core/auth_digital_minor_page.mustache b/theme/bootstrapbase/templates/core/auth_digital_minor_page.mustache
new file mode 100644 (file)
index 0000000..33b0688
--- /dev/null
@@ -0,0 +1,37 @@
+{{!
+    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_auth/output/digital_minor_page
+
+    Example context (json):
+    {
+        "logourl": "https://moodle.org/logo/moodle-logo.svg",
+        "sitename": "Site name",
+        "supportname": "John Doe",
+        "supportemail": "johndoe@example.com",
+        "homelink": "/"
+    }
+}}
+<h3>{{#str}}considereddigitalminor{{/str}}</h3>
+<p class="m-b-0">{{#str}}digitalminor_desc{{/str}}</p>
+<div class="p-t-1 p-b-1">
+    <p class="m-b-0">{{{supportname}}}</p>
+    <p class="m-b-0">{{{supportemail}}}</p>
+</div>
+<div class="backlink">
+    <a href="{{homelink}}">{{#str}}backtohome{{/str}}</a>
+</div>
diff --git a/theme/bootstrapbase/templates/core/auth_verify_age_location_page.mustache b/theme/bootstrapbase/templates/core/auth_verify_age_location_page.mustache
new file mode 100644 (file)
index 0000000..2d398f8
--- /dev/null
@@ -0,0 +1,37 @@
+{{!
+    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_auth/output/verify_age_location_page
+
+    Example context (json):
+    {
+        "logourl": "https://moodle.org/logo/moodle-logo.svg",
+        "sitename": "Site name",
+        "error": "Error message",
+        "formhtml": "(Form html would go here)"
+    }
+}}
+{{#error}}
+    <div class="alert alert-danger" role="alert">
+        {{{error}}}
+    </div>
+{{/error}}
+<h3>{{#str}}agelocationverification{{/str}}</h3>
+{{{formhtml}}}
+<hr>
+<h3>{{#str}}whyisthisrequired{{/str}}</h3>
+<p >{{#str}}explanationdigitalminor{{/str}}</p>
@@ -70,8 +70,8 @@
                 </div>
 
                 <div class="submitbuttons">
-                    <input type="submit" name="submitbutton" class="submitbutton btn btn-primary" value={{#quote}}{{#str}}add{{/str}}{{/quote}}>
-                    <input type="submit" name="addcancel" class="addcancel btn btn-secondary" value={{#quote}}{{#str}}cancel{{/str}}{{/quote}}>
+                    <input type="submit" name="submitbutton" class="submitbutton" value={{#quote}}{{#str}}add{{/str}}{{/quote}}>
+                    <input type="submit" name="addcancel" class="addcancel" value={{#quote}}{{#str}}cancel{{/str}}{{/quote}}>
                 </div>
 
             </form>
@@ -41,8 +41,8 @@
     }
 
 }}
-<div class="row">
-    <div class="col-md-4">{{$ column1 }}{{{ col1content }}}{{/ column1 }}</div>
-    <div class="col-md-4">{{$ column2 }}{{{ col2content }}}{{/ column2 }}</div>
-    <div class="col-md-4">{{$ column3 }}{{{ col3content }}}{{/ column3 }}</div>
+<div class="row-fluid rtl-compatible">
+    <div class="span4">{{$ column1 }}{{{ col1content }}}{{/ column1 }}</div>
+    <div class="span4">{{$ column2 }}{{{ col2content }}}{{/ column2 }}</div>
+    <div class="span4">{{$ column3 }}{{{ col3content }}}{{/ column3 }}</div>
 </div>
@@ -39,7 +39,7 @@
     }
 
 }}
-<div class="row">
-    <div class="col-md-4">{{$ column1 }}{{{ col1content }}}{{/ column1 }}</div>
-    <div class="col-md-8">{{$ column2 }}{{{ col2content }}}{{/ column2 }}</div>
+<div class="row-fluid rtl-compatible">
+    <div class="span4">{{$ column1 }}{{{ col1content }}}{{/ column1 }}</div>
+    <div class="span8">{{$ column2 }}{{{ col2content }}}{{/ column2 }}</div>
 </div>
@@ -38,7 +38,7 @@
         "col2content": "<div class='alert alert-success'>2. Vivamus ac orci in velit fringilla aliquam a a nisl. Cras luctus quam laoreet magna pulvinar aliquet.</div>"
     }
 }}
-<div class="row">
-    <div class="col-md-8">{{$ column1 }}{{{ col1content }}}{{/ column1 }}</div>
-    <div class="col-md-4">{{$ column2 }}{{{ col2content }}}{{/ column2 }}</div>
+<div class="row-fluid rtl-compatible">
+    <div class="span8">{{$ column1 }}{{{ col1content }}}{{/ column1 }}</div>
+    <div class="span4">{{$ column2 }}{{{ col2content }}}{{/ column2 }}</div>
 </div>
@@ -17,6 +17,8 @@
 {{!
     @template core/dataformat_selector
 
+    Template for dataformat selection and download form.
+
     Context variables required for this template:
     * label
     * base
     {
         "base": "http://example.org/",
         "name": "test",
-        "value": "test",
         "label": "Download table data as",
         "params": false,
         "options": [{"label": "CSV", "name": "csv"}, {"label": "Excel", "name": "excel"}],
-        "submit": "Download",
-        "sesskey": ""
+        "submit": "Download"
     }
 }}
-<form method="get" action="{{base}}" class="dataformatselector m-1">
-    <div class="form-inline text-xs-right">
+<form method="get" action="{{base}}" class="dataformatselector">
+    <div class="mdl-align">
         <input type="hidden" name="sesskey" value="{{sesskey}}">
-        <label for="downloadtype_{{name}}" class="mr-1">{{label}}</label>
-        <select name="{{name}}" id="downloadtype_{{name}}" class="form-control">
-            {{#options}}
-                <option value="{{value}}">{{label}}</option>
-            {{/options}}
+        <label for="downloadtype_{{name}}">{{label}}</label>
+        <select name="{{name}}" id="downloadtype_{{name}}">
+        {{#options}}
+            <option value="{{value}}">{{label}}</option>
+        {{/options}}
         </select>
-        <button type="submit" class="btn btn-secondary">{{submit}}</button>
+        <input type="submit" value="{{submit}}">
         {{#params}}
-            <input type="hidden" name="{{name}}" value="{{value}}">
+        <input type="hidden" name="{{name}}" value="{{value}}" />
         {{/params}}
     </div>
 </form>
@@ -36,7 +36,7 @@
     { "inputID": 1, "suggestionsId": 2, "selectionId": 3, "downArrowId": 4, "placeholder": "Select something" }
 }}
 {{#showSuggestions}}
-<input type="text" id="{{inputId}}" class="form-control" list="{{suggestionsId}}" placeholder="{{placeholder}}" role="combobox" aria-expanded="false" autocomplete="off" autocorrect="off" autocapitalize="off" aria-autocomplete="list" aria-owns="{{suggestionsId}} {{selectionId}}" {{#tags}}data-tags="1"{{/tags}}/><span class="form-autocomplete-downarrow" id="{{downArrowId}}">&#x25BC;</span>
+<input type="text" id="{{inputId}}" list="{{suggestionsId}}" placeholder="{{placeholder}}" role="combobox" aria-expanded="false" autocomplete="off" autocorrect="off" autocapitalize="off" aria-autocomplete="list" aria-owns="{{suggestionsId}} {{selectionId}}" {{#tags}}data-tags="1"{{/tags}}/><span class="form-autocomplete-downarrow" id="{{downArrowId}}">&#x25BC;</span>
 {{/showSuggestions}}
 {{^showSuggestions}}
 <input type="text" id="{{inputId}}" placeholder="{{placeholder}}" role="textbox" aria-owns="{{selectionId}}" {{#tags}}data-tags="1"{{/tags}}/>
         { "label": "Another item label with <strong>tags</strong>", "value": "4" }
     ], "noSelectionString": "No selection" }
 }}
-<div class="form-autocomplete-selection w-100 {{#multiple}}form-autocomplete-multiple{{/multiple}}" id="{{selectionId}}" role="list" aria-atomic="true" {{#multiple}}tabindex="0" aria-multiselectable="true"{{/multiple}}>
+<div class="form-autocomplete-selection {{#multiple}}form-autocomplete-multiple{{/multiple}}" id="{{selectionId}}" role="list" aria-atomic="true" {{#multiple}}tabindex="0" aria-multiselectable="true"{{/multiple}}>
 <span class="accesshide">{{#str}}selecteditems, form{{/str}}</span>
     {{#items}}
-        <span role="listitem" data-value="{{value}}" aria-selected="true" class="tag tag-info mb-3 mr-1" style="font-size: 100%">
+        <span role="listitem" data-value="{{value}}" aria-selected="true" class="label label-info" style="font-size: 100%; margin-bottom: 0.5rem;">
             {{#multiple}}<span aria-hidden="true">× </span>{{/multiple}}{{{label}}}
         </span>
     {{/items}}
     {{^items}}
-        <span class="mb-3 mr-1">{{noSelectionString}}</span>
+        <span>{{noSelectionString}}</span>
     {{/items}}
 </div>
+</div>
diff --git a/theme/bootstrapbase/templates/core/help_icon.mustache b/theme/bootstrapbase/templates/core/help_icon.mustache
new file mode 100644 (file)
index 0000000..72b2dcd
--- /dev/null
@@ -0,0 +1,38 @@
+{{!
+    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/help_icon
+
+    Help icon.
+
+    Example context (json):
+    {
+        "title": "Help with something",
+        "url": "http://example.org/help",
+        "linktext": "",
+        "icon":{
+            "attributes": [
+                {"name": "class", "value": "iconhelp"},
+                {"name": "src", "value": "../../../pix/help.svg"},
+                {"name": "alt", "value": "Help icon"}
+            ]
+        }
+    }
+}}
+<span class="helptooltip">
+    <a href="{{url}}" title={{#quote}}{{title}}{{/quote}} aria-haspopup="true" target="_blank">{{#icon}}{{>core/pix_icon}}{{/icon}}{{#linktext}}{{.}}{{/linktext}}</a>
+</span>
          ]
     }
 }}
-<div class="initialbar {{class}} d-flex flex-wrap justify-content-center justify-content-md-start">
-    <span class="initialbarlabel mr-2">{{title}}</span>
+<div class="initialbar {{class}}">
+    <span class="initialbarlabel">{{title}}</span>
+    {{#current}}
+        <a class="initialbarall page-item letter" href="{{url}}">{{all}}</a>
+    {{/current}}
+    {{^current}}
+        <div class="initialbarall letter page-item active">{{all}}</div>
+    {{/current}}
 
-    <div class="initialbargroups d-flex flex-wrap justify-content-center justify-content-md-start">
-        <ul class="pagination pagination-sm">
-        {{#current}}
-            <li class="initialbarall page-item">
-                <a class="page-link" href="{{url}}">{{all}}</a>
-            </li>
-        {{/current}}
-        {{^current}}
-            <li class="initialbarall page-item active">
-                <a class="page-link">{{all}}</a>
-            </li>
-        {{/current}}
-        </ul>
+    <div class="initialbargroups">
         {{#group}}
-            <ul class="pagination pagination-sm">
+            <ul class="initialbargroup">
                 {{#letter}}
                     {{#selected}}
-                        <li class="page-item active {{name}}"><span class="page-link">{{name}}</span></li>
+                        <li><span class="letter page-item active {{name}}">{{name}}</span></li>
                     {{/selected}}
                     {{^selected}}
-                        <li class="page-item {{name}}"><a class="page-link" href="{{url}}">{{name}}</a></li>
+                        <li><a class="letter page-item {{name}}" href="{{url}}">{{name}}</a></li>
                     {{/selected}}
                 {{/letter}}
             </ul>
diff --git a/theme/bootstrapbase/templates/core/loginform.mustache b/theme/bootstrapbase/templates/core/loginform.mustache
new file mode 100644 (file)
index 0000000..9448fea
--- /dev/null
@@ -0,0 +1,183 @@
+{{!
+    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/loginform
+
+    Moodle template for the login page.
+
+    Example context (json):
+    {
+        "autofocusform": false,
+        "canloginasguest": true,
+        "canloginbyemail": true,
+        "cansignup": true,
+        "error": "testerror",
+        "errorformatted": "Test error formatted",
+        "forgotpasswordurl": "http://example.com/login/forgot_password.php",
+        "hasidentityproviders": false,
+        "hasinstructions": true,
+        "instructions": "For full access to this site, you first need to create an account.",
+        "loginurl": "http://example.com/stable_master/login/index.php",
+        "rememberusername": true,
+        "signupurl": "http://localhost/stable_master/login/signup.php",
+        "cookieshelpiconformatted": "",
+        "username": "",
+        "logintoken": "randomstring"
+    }
+}}
+{{#hasinstructions}}
+<div class="loginbox clearfix twocolumns">
+{{/hasinstructions}}
+{{^hasinstructions}}
+<div class="loginbox clearfix onecolumn">
+{{/hasinstructions}}
+
+    <div class="loginpanel">
+        {{#cansignup}}
+            <div class="skiplinks">
+                <a class="skip" href="{{signupurl}}">{{#str}} tocreatenewaccount {{/str}}</a>
+            </div>
+        {{/cansignup}}
+
+        <h2>{{#str}} login {{/str}}</h2>
+
+        <div class="subcontent loginsub">
+            {{#error}}
+                <div class="loginerrors" role="alert">
+                    <a href="#" id="loginerrormessage" class="accesshide">{{error}}</a>
+                    {{{errorformatted}}}
+                </div>
+            {{/error}}
+            <form action="{{loginurl}}" method="post" id="login">
+                <div class="loginform">
+                    <div class="form-label">
+                        <label for="username">
+                            {{^canloginbyemail}}
+                                {{#str}} username {{/str}}
+                            {{/canloginbyemail}}
+                            {{#canloginbyemail}}
+                                {{#str}} usernameemail {{/str}}
+                            {{/canloginbyemail}}
+                        </label>
+                    </div>
+                    <div class="form-input">
+                        <input type="text" name="username" id="username" size="15" value="{{username}}" autocomplete="username">
+                    </div>
+                    <div class="clearer"><!-- --></div>
+                    <div class="form-label">
+                        <label for="password">{{#str}} password {{/str}}</label>
+                    </div>
+                    <div class="form-input">
+                        <input type="password" name="password" id="password" size="15" value="" autocomplete="current-password">
+                    </div>
+                </div>
+
+                <div class="clearer"><!-- --></div>
+                {{#rememberusername}}
+                    <div class="rememberpass">
+                        <input type="checkbox" name="rememberusername" id="rememberusername" value="1" {{#username}}checked="checked"{{/username}} />
+                        <label for="rememberusername">{{#str}} rememberusername, admin {{/str}}</label>
+                    </div>
+                {{/rememberusername}}
+                <div class="clearer"><!-- --></div>
+                <input id="anchor" type="hidden" name="anchor" value="" />
+                <script>document.getElementById('anchor').value = location.hash;</script>
+                <input type="hidden" name="logintoken" value="{{logintoken}}">
+                <input type="submit" id="loginbtn" value={{#quote}}{{#str}} login {{/str}}{{/quote}} />
+                <div class="forgetpass">
+                    <a href="{{forgotpasswordurl}}">{{#str}} forgotten {{/str}}</a>
+                </div>
+            </form>
+
+            <div class="desc">
+                {{#str}} cookiesenabled {{/str}}
+                {{{cookieshelpiconformatted}}}
+            </div>
+
+        </div>
+
+        {{#canloginasguest}}
+            <div class="subcontent guestsub">
+                <div class="desc">{{#str}} someallowguest {{/str}}</div>
+                <form action="{{loginurl}}" method="post" id="guestlogin">
+                    <div class="guestform">
+                        <input type="hidden" name="logintoken" value="{{logintoken}}">
+                        <input type="hidden" name="username" value="guest" />
+                        <input type="hidden" name="password" value="guest" />
+                        <input type="submit" value={{#quote}}{{#str}} loginguest {{/str}}{{/quote}} />
+                    </div>
+                </form>
+            </div>
+        {{/canloginasguest}}
+
+    </div>
+
+    <div class="signuppanel">
+    {{#hasinstructions}}
+        <h2>{{#str}} firsttime {{/str}}</h2>
+        <div class="subcontent">
+            {{{instructions}}}
+            {{#cansignup}}
+                <div class="signupform">
+                    <form action="{{signupurl}}" method="get" id="signup">
+                        <div>
+                            <input type="submit" value={{#quote}}{{#str}} startsignup {{/str}}{{/quote}} />
+                        </div>
+                    </form>
+                </div>
+            {{/cansignup}}
+        </div>
+    {{/hasinstructions}}
+
+    {{#hasidentityproviders}}
+        <div class="subcontent potentialidps">
+            <h6>{{#str}} potentialidps, auth {{/str}}</h6>
+            <div class="potentialidplist">
+                {{#identityproviders}}
+                    <div class="potentialidp">
+                        <a href="{{url}}" title={{#quote}}{{name}}{{/quote}} class="btn">
+                        {{#iconurl}}
+                            <img src="{{iconurl}}" alt="" width="24" height="24"/>
+                        {{/iconurl}}
+                        {{name}}
+                        </a>
+                    </div>
+                {{/identityproviders}}
+            </div>
+        </div>
+    {{/hasidentityproviders}}
+    </div>
+</div>
+
+{{#js}}
+    {{#error}}
+        require(['jquery'], function($) {
+            $('#loginerrormessage').focus();
+        });
+    {{/error}}
+    {{^error}}
+        {{#autofocusform}}
+            require(['jquery'], function($) {
+                if ($('#username').val()) {
+                    $('#password').focus();
+                } else {
+                    $('#username').focus();
+                }
+            });
+        {{/autofocusform}}
+    {{/error}}
+{{/js}}
     }
 }}
 
-<div class="modal moodle-has-zindex" data-region="modal-container" aria-hidden="true" role="dialog">
-    <div class="modal-dialog {{$classes}}{{/classes}}" role="document" data-region="modal" aria-labelledby="{{uniqid}}-modal-title" tabindex="0">
-        <div class="modal-content">
-            <div class="modal-header {{$headerclasses}}{{headerclasses}}{{/headerclasses}}" data-region="header">
-
-                {{$header}}
-                    <h5 id="{{uniqid}}-modal-title" class="modal-title" data-region="title">{{$title}}{{title}}{{/title}}</h5>
-                {{/header}}
-                <button type="button" class="close" data-action="hide" aria-label={{#quote}}{{#str}}closebuttontitle{{/str}}{{/quote}}>
-                  <span aria-hidden="true">&times;</span>
-                </button>
-            </div>
-            <div class="modal-body" data-region="body">
-                {{$body}}
-                    {{{body}}}
-                {{/body}}
-            </div>
-            <div class="modal-footer" data-region="footer">
-                {{$footer}}
-                    {{{footer}}}
-                {{/footer}}
-            </div>
+<div class="modal-container moodle-has-zindex hide" data-region="modal-container" aria-hidden="true" role="dialog">
+    <div class="modal {{$classes}}{{/classes}}"
+        data-region="modal"
+        aria-labelledby="{{uniqid}}-modal-title"
+        role="document" tabindex="0">
+        <div class="modal-header {{$headerclasses}}{{headerclasses}}{{/headerclasses}}" data-region="header">
+            <button type="button" class="close" data-action="hide" title="{{#str}} closebuttontitle {{/str}}"></button>
+            {{$header}}
+                <h3 id="{{uniqid}}-modal-title" class="modal-title" data-region="title">
+                    {{$title}}{{title}}{{/title}}
+                </h3>
+            {{/header}}
+        </div>
+        <div class="modal-body" data-region="body">
+            {{$body}}
+                {{{body}}}
+            {{/body}}
+        </div>
+        <div class="modal-footer" data-region="footer">
+            {{$footer}}
+                {{{footer}}}
+            {{/footer}}
         </div>
     </div>
 </div>
@@ -33,4 +33,4 @@
     Example context (json):
     {}
 }}
-<div class="modal-backdrop in hide" aria-hidden="true" data-region="modal-backdrop"></div>
+<div class="modal-backdrop hide" aria-hidden="true" data-region="modal-backdrop"></div>
     Example context (json):
     { "message": "Your pants are on fire!", "closebutton": 1, "announce": 1, "extraclasses": "foo bar"}
 }}
-<div class="alert alert-danger alert-block fade in {{ extraclasses }}" {{!
-    }}{{# announce }} role="alert" data-aria-autofocus="true"{{/ announce }}{{!
+<div class="alert alert-error alert-block fade in {{ extraclasses }}" {{!
+    }}{{# announce }} role="alert"{{/ announce }}{{!
     }}>
     {{# closebutton }}<button type="button" class="close" data-dismiss="alert">&times;</button>{{/ closebutton }}
     {{{ message }}}
 </div>
+{{# js }}
+require(['jquery', 'theme_bootstrapbase/bootstrap'], function($) {
+    // Setup closing of bootstrap alerts.
+    $().alert();
+});
+{{/ js }}
     { "message": "Your pants are on fire!", "closebutton": 1, "announce": 1, "extraclasses": "foo bar"}
 }}
 <div class="alert alert-info alert-block fade in {{ extraclasses }}" {{!
-    }}{{# announce }} role="alert" data-aria-autofocus="true"{{/ announce }}{{!
+    }}{{# announce }} role="alert"{{/ announce }}{{!
     }}>
     {{# closebutton }}<button type="button" class="close" data-dismiss="alert">&times;</button>{{/ closebutton }}
     {{{ message }}}
 </div>
-
+{{# js }}
+require(['jquery', 'theme_bootstrapbase/bootstrap'], function($) {
+    // Setup closing of bootstrap alerts.
+    $().alert();
+});
+{{/ js }}
     { "message": "Your pants are on fire!", "closebutton": 1, "announce": 1, "extraclasses": "foo bar"}
 }}
 <div class="alert alert-success alert-block fade in {{ extraclasses }}" {{!
-    }}{{# announce }} role="alert" data-aria-autofocus="true"{{/ announce }}{{!
+    }}{{# announce }} role="alert"{{/ announce }}{{!
     }}>
     {{# closebutton }}<button type="button" class="close" data-dismiss="alert">&times;</button>{{/ closebutton }}
     {{{ message }}}
 </div>
+{{# js }}
+require(['jquery', 'theme_bootstrapbase/bootstrap'], function($) {
+    // Setup closing of bootstrap alerts.
+    $().alert();
+});
+{{/ js }}
     { "message": "Your pants are on fire!", "closebutton": 1, "announce": 1, "extraclasses": "foo bar"}
 }}
 <div class="alert alert-warning alert-block fade in {{ extraclasses }}" {{!
-    }}{{# announce }} role="alert" data-aria-autofocus="true"{{/ announce }}{{!
+    }}{{# announce }} role="alert"{{/ announce }}{{!
     }}>
     {{# closebutton }}<button type="button" class="close" data-dismiss="alert">&times;</button>{{/ closebutton }}
     {{{ message }}}
 </div>
+{{# js }}
+require(['jquery', 'theme_bootstrapbase/bootstrap'], function($) {
+    // Setup closing of bootstrap alerts.
+    $().alert();
+});
+{{/ js }}
         "width": "500"
     }
 }}
-<div id="{{id}}" class="row progressbar_container">
-    <div class="col-md-6 push-md-3">
-        <p id="{{id}}_status" class="text-xs-center"></p>
-        <progress id="{{id}}_bar" class="progress progress-striped progress-animated" value="0" max="100"></progress>
-        <p id="{{id}}_estimate" class="text-xs-center"></p>
+<div class="progressbar_container" style="width: {{width}}px;" id="{{id}}">
+    <h2 id="{{id}}_status"></h2>
+    <div class="progress progress-striped active">
+        <div id="{{id}}_bar" class="bar" role="progressbar" aria-valuemin="0" aria-valuemax="100" aria-valuenow="0">&nbsp;</div>
     </div>
+    <p id="{{id}}_estimate"></p>
 </div>
 
 {{! We must not use the JS helper otherwise this gets executed too late. }}
             estimate = e.detail.estimate;
 
         statusIndicator.textContent = msg;
-        progressBar.setAttribute('value', Math.round(percent));
+        progressBar.textContent = '' + percent + '%';
         if (percent === 100) {
-            progressBar.classList.add('progress-success');
-            estimateIndicator.textContent = '100%';
+            el.classList.add('progress-success');
+            estimateIndicator.textContent = '';
         } else {
             if (estimate) {
-                estimateIndicator.textContent = estimate + ' - ' + percent + '%';
+                estimateIndicator.textContent = estimate;
             } else {
-                estimateIndicator.textContent = '' + percent + '%';
+                estimateIndicator.textContent = '';
             }
-            progressBar.classList.remove('progress-success');
+            el.classList.remove('progress-success');
         }
+        progressBar.setAttribute('aria-valuenow', percent);
+        progressBar.setAttribute('style', 'width: ' + percent + '%');
     });
 })();
 </script>
@@ -30,8 +30,8 @@
         ]
     }
 }}
-<label for="{{id}}" class="sr-only">{{label}}</label>
-<select name="{{name}}" id="{{id}}"{{#attributes}} {{name}}="{{value}}"{{/attributes}} class="form-control">
+<label for="{{id}}" class="accesshide">{{label}}</label>
+<select name="{{name}}" id="{{id}}"{{#attributes}} {{name}}="{{value}}"{{/attributes}}>
     {{#options}}
         <option value="{{value}}" {{#selected}}selected{{/selected}}>{{name}}</option>
     {{/options}}
diff --git a/theme/bootstrapbase/templates/core/settings_link_page.mustache b/theme/bootstrapbase/templates/core/settings_link_page.mustache
new file mode 100644 (file)
index 0000000..b61bf20
--- /dev/null
@@ -0,0 +1,145 @@
+{{!
+    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/settings_link_page
+
+    Displays the admin tree as a list of grouped links.
+
+    Example context (json):
+    {
+        "node": {
+            "text": "Root of menu",
+            "key": "test0",
+            "display": true,
+            "children": [
+                {
+                    "text": "Child of menu",
+                    "key": "test1",
+                    "display": true,
+                    "children": []
+                }
+            ]
+        }
+    }
+}}
+
+<ul class="nav nav-tabs" role="tablist">
+<!-- First the top most node and immediate children -->
+    <li class="active"> <a href="#link{{node.key}}" data-toggle="tab" role="tab">{{node.text}}</a> </li>
+<!-- Now the first level children with sub nodes -->
+{{#node.children}}
+    {{#children.count}}
+        {{#display}}
+            {{^is_short_branch}}
+                <li> <a href="#link{{key}}" data-toggle="tab" role="tab">{{text}}</a> </li>
+            {{/is_short_branch}}
+        {{/display}}
+    {{/children.count}}
+{{/node.children}}
+</ul>
+
+<div class="tab-content">
+    <div class="tab-pane active" id="link{{node.key}}" role="tabpanel">
+        <div class="well">
+            <div class="container-fluid">
+                <div class="row">
+                    <div class="span9 offset3">
+                        <ul class="unstyled indented-list">
+                            {{#node.children}}
+                                {{^children.count}}
+                                    {{#display}}
+                                        <li><a href="{{{action}}}">{{text}}</a></li>
+                                    {{/display}}
+                                {{/children.count}}
+                            {{/node.children}}
+                        </ul>
+                    </div>
+                </div>
+
+                {{#node.children}}
+                    {{#display}}
+                        {{#children.count}}
+                            {{#is_short_branch}}
+                                <hr>
+                                <div class="row">
+                                    <div class="span3">
+                                        {{#action}}<h4><a href="{{action}}">{{text}}</a><h4>{{/action}}
+                                        {{^action}}<h4>{{text}}<h4>{{/action}}
+                                    </div>
+                                    <div class="span9">
+                                        <ul class="unstyled indented-list">
+                                            {{#children}}
+                                                {{> core/settings_link_page_single }}
+                                            {{/children}}
+                                        </ul>
+                                    </div>
+                                </div>
+                            {{/is_short_branch}}
+                        {{/children.count}}
+                    {{/display}}
+                {{/node.children}}
+            </div>
+        </div>
+    </div>
+    {{#node.children}}
+        {{#children.count}}
+            <div class="tab-pane" id="link{{key}}" role="tabpanel">
+                <div class="well">
+                    <div class="container-fluid">
+                        <div class="row">
+                            <div class="span3">
+                                {{#action}}<h4><a href="{{action}}">{{text}}</a><h4>{{/action}}
+                                {{^action}}<h4>{{text}}<h4>{{/action}}
+                            </div>
+                            <div class="span9">
+                                <ul class="unstyled">
+                                    {{#children}}
+                                        {{#display}}
+                                            {{^children.count}}
+                                                <li><a href="{{{action}}}">{{text}}</a></li>
+                                            {{/children.count}}
+                                        {{/display}}
+                                    {{/children}}
+                                </ul>
+                            </div>
+                        </div>
+                        {{#children}}
+                            {{#display}}
+                                {{#children.count}}
+                                    <hr>
+                                    <div class="row">
+                                        <div class="span3">
+                                            {{#action}}<h4><a href="{{action}}">{{text}}</a><h4>{{/action}}
+                                            {{^action}}<h4>{{text}}<h4>{{/action}}
+                                        </div>
+                                        <div class="span9">
+                                            <ul class="unstyled indented-list">
+                                                {{#children}}
+                                                    {{> core/settings_link_page_single }}
+                                                {{/children}}
+                                            </ul>
+                                        </div>
+                                    </div>
+                                {{/children.count}}
+                            {{/display}}
+                        {{/children}}
+                    </div>
+                </div>
+            </div>
+        {{/children.count}}
+    {{/node.children}}
+</div>
@@ -36,7 +36,7 @@
     {{/action}}
     {{#children.count}}
         <li>
-            <ul class="list-unstyled ml-2">
+            <ul class="unstyled indented-list">
                 {{#children}}
                     {{> core/settings_link_page_single }}
                 {{/children}}
diff --git a/theme/bootstrapbase/templates/core/signup_form_layout.mustache b/theme/bootstrapbase/templates/core/signup_form_layout.mustache
new file mode 100644 (file)
index 0000000..dee3e2d
--- /dev/null
@@ -0,0 +1,10 @@
+{{!
+    @template core/signup_form_layout
+
+    Example context (json):
+    {
+        "formhtml": "<p>(Form html would go here)</p>"
+    }
+}}
+<h3>{{#str}}newaccount{{/str}}</h3>
+{{{formhtml}}}
@@ -50,7 +50,7 @@
         {{#params}}
             <input type="hidden" name="{{name}}" value="{{value}}">
         {{/params}}
-        <button type="submit" class="btn {{#primary}}btn-primary{{/primary}}{{^primary}}btn-secondary{{/primary}}"
+        <button type="submit" class="btn {{#primary}}btn-primary{{/primary}}{{^primary}}btn-default{{/primary}}"
             id="{{id}}"
             title={{#quote}}{{tooltip}}{{/quote}}
             {{#disabled}}disabled{{/disabled}}>{{label}}</button>
@@ -9,8 +9,13 @@
         ]
     }
 }}
-<div>
+<div class="skiplinks">
 {{#links}}
-    <a class="sr-only sr-only-focusable" href="#{{{url}}}">{{{text}}}</a>
+    <a href="#{{{url}}}" class="skip">{{{text}}}</a>
 {{/links}}
-</div>
\ No newline at end of file
+</div>
+{{#js}}
+require(['core/yui'], function(Y) {
+    M.util.init_skiplink(Y);
+});
+{{/js}}
\ No newline at end of file