Merge branch 'MDL-68314-master' of git://github.com/aanabit/moodle
authorEloy Lafuente (stronk7) <stronk7@moodle.org>
Wed, 13 May 2020 11:15:17 +0000 (13:15 +0200)
committerEloy Lafuente (stronk7) <stronk7@moodle.org>
Wed, 13 May 2020 11:15:17 +0000 (13:15 +0200)
13 files changed:
admin/cli/cfg.php
lib/cronlib.php
lib/table/amd/build/dynamic.min.js
lib/table/amd/build/dynamic.min.js.map
lib/table/amd/src/dynamic.js
lib/tablelib.php
pix/i/contentbank.png [new file with mode: 0644]
pix/i/contentbank.svg [new file with mode: 0644]
report/configlog/classes/output/report_table.php
report/configlog/lang/en/report_configlog.php
theme/boost/scss/moodle/tables.scss
theme/boost/style/moodle.css
theme/classic/style/moodle.css

index 7f56b92..35045ca 100644 (file)
@@ -124,7 +124,12 @@ if ($options['unset'] || $options['set'] !== null) {
         cli_error('The configuration variable is hard-set in the config.php, unable to change.', 4);
     }
 
-    set_config($options['name'], $options['set'], $options['component']);
+    $new = $options['set'];
+    $old = get_config($options['component'], $options['name']);
+    if ($new !== $old) {
+        set_config($options['name'], $options['set'], $options['component']);
+        add_to_config_log($options['name'], $old, $new, $options['component']);
+    }
     exit(0);
 }
 
index 917e5b5..bea9252 100644 (file)
@@ -275,6 +275,8 @@ function cron_run_inner_scheduled_task(\core\task\task_base $task) {
         }
         \core\task\manager::scheduled_task_failed($task);
     } finally {
+        // Reset back to the standard admin user.
+        cron_setup_user();
         cron_prepare_core_renderer(true);
     }
     get_mailer('close');
index 597077c..b8a5c03 100644 (file)
Binary files a/lib/table/amd/build/dynamic.min.js and b/lib/table/amd/build/dynamic.min.js differ
index d14c064..5c5e815 100644 (file)
Binary files a/lib/table/amd/build/dynamic.min.js.map and b/lib/table/amd/build/dynamic.min.js.map differ
index 18e35fb..a53dc6f 100644 (file)
@@ -24,6 +24,7 @@
 import {fetch as fetchTableData} from 'core_table/local/dynamic/repository';
 import * as Selectors from 'core_table/local/dynamic/selectors';
 import Events from './local/dynamic/events';
+import {addIconToContainer} from 'core/loadingicon';
 
 let watching = false;
 
@@ -66,6 +67,7 @@ const getFiltersetFromTable = tableRoot => {
  */
 export const refreshTableContent = (tableRoot, resetContent = false) => {
     const filterset = getFiltersetFromTable(tableRoot);
+    addIconToContainer(tableRoot);
 
     return fetchTableData(
         tableRoot.dataset.tableComponent,
index 6cb2a6b..2c46b2f 100644 (file)
@@ -1645,6 +1645,7 @@ class flexible_table {
         if (is_a($this, \core_table\dynamic::class)) {
             $sortdata = $this->get_sort_order();
             return html_writer::start_tag('div', [
+                'class' => 'table-dynamic position-relative',
                 'data-region' => 'core_table/dynamic',
                 'data-table-handler' => $this->get_handler(),
                 'data-table-component' => $this->get_component(),
diff --git a/pix/i/contentbank.png b/pix/i/contentbank.png
new file mode 100644 (file)
index 0000000..970c30e
Binary files /dev/null and b/pix/i/contentbank.png differ
diff --git a/pix/i/contentbank.svg b/pix/i/contentbank.svg
new file mode 100644 (file)
index 0000000..3d87f77
--- /dev/null
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="16" height="16" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1615 0q70 0 122.5 46.5t52.5 116.5q0 63-45 151-332 629-465 752-97 91-218 91-126 0-216.5-92.5t-90.5-219.5q0-128 92-212l638-579q59-54 130-54zm-909 1034q39 76 106.5 130t150.5 76l1 71q4 213-129.5 347t-348.5 134q-123 0-218-46.5t-152.5-127.5-86.5-183-29-220q7 5 41 30t62 44.5 59 36.5 46 17q41 0 55-37 25-66 57.5-112.5t69.5-76 88-47.5 103-25.5 125-10.5z" fill="#999"/></svg>
\ No newline at end of file
index 5927f78..3909387 100644 (file)
@@ -90,7 +90,7 @@ class report_table extends \table_sql implements \renderable {
         $fields = 'cl.id, cl.timemodified, cl.plugin, cl.name, cl.value, cl.oldvalue, cl.userid, ' . $userfields;
 
         $from = '{config_log} cl
-            JOIN {user} u ON u.id = cl.userid';
+            LEFT JOIN {user} u ON u.id = cl.userid';
 
         // Report search.
         $where = '1=1';
@@ -143,6 +143,24 @@ class report_table extends \table_sql implements \renderable {
         return userdate($row->timemodified);
     }
 
+    /**
+     * Format fullname field
+     *
+     * @param stdClass $row
+     * @return string
+     */
+    public function col_fullname($row) {
+
+        $userid = $row->{$this->useridfield};
+        if (empty($userid)) {
+            // If the user id is empty it must have been set via the
+            // admin/cli/cfg.php script or during the initial install.
+            return get_string('usernone', 'report_configlog');
+        } else {
+            return parent::col_fullname($row);
+        }
+    }
+
     /**
      * Format report plugin field
      *
index 40645fd..643c7b6 100644 (file)
@@ -31,6 +31,7 @@ $string['pluginname'] = 'Config changes';
 $string['setting'] = 'Setting';
 $string['timemodified'] = 'Date';
 $string['user'] = 'User';
+$string['usernone'] = 'CLI or install';
 $string['user_help'] = 'Search by user first name or surname';
 $string['value'] = 'Value';
 $string['value_help'] = 'Search by new or original value of the configuration';
index d5e8939..f27cd9b 100644 (file)
@@ -46,3 +46,14 @@ table {
         caption-side: top;
     }
 }
+
+.table-dynamic .loading-icon {
+    position: absolute;
+    left: calc(50% - 1.5rem);
+    top: 200px;
+    .icon {
+        height: 3rem;
+        width: 3rem;
+        font-size: 3rem;
+    }
+}
index 74d9792..c4a80c0 100644 (file)
@@ -17168,6 +17168,15 @@ table caption {
   text-align: left;
   caption-side: top; }
 
+.table-dynamic .loading-icon {
+  position: absolute;
+  left: calc(50% - 1.5rem);
+  top: 200px; }
+  .table-dynamic .loading-icon .icon {
+    height: 3rem;
+    width: 3rem;
+    font-size: 3rem; }
+
 .singlebutton {
   display: inline-block; }
   .singlebutton + .singlebutton {
index 42a7c53..fd7b76f 100644 (file)
@@ -17400,6 +17400,15 @@ table caption {
   text-align: left;
   caption-side: top; }
 
+.table-dynamic .loading-icon {
+  position: absolute;
+  left: calc(50% - 1.5rem);
+  top: 200px; }
+  .table-dynamic .loading-icon .icon {
+    height: 3rem;
+    width: 3rem;
+    font-size: 3rem; }
+
 .singlebutton {
   display: inline-block; }
   .singlebutton + .singlebutton {