MDL-40759 icons: Refactor to allow theme icon systems
[moodle.git] / lib / amd / src / icon_system_fontawesome.js
index 3adbb70..49258a7 100644 (file)
@@ -35,9 +35,15 @@ define(['core/icon_system', 'jquery', 'core/ajax', 'core/mustache', 'core/locals
     };
     IconSystemFontawesome.prototype = Object.create(IconSystem.prototype);
 
+    /**
+     * Prefetch resources so later calls to renderIcon can be resolved synchronously.
+     *
+     * @method init
+     * @return Promise
+     */
     IconSystemFontawesome.prototype.init = function() {
         if (staticMap) {
-            return $.when();
+            return $.when(this);
         }
 
         var map = LocalStorage.get('core/iconmap-fontawesome');
@@ -47,13 +53,13 @@ define(['core/icon_system', 'jquery', 'core/ajax', 'core/mustache', 'core/locals
 
         if (map) {
             staticMap = map;
-            return $.when();
+            return $.when(this);
         }
 
         if (fetchMap === null) {
             fetchMap = Ajax.call([{
-                methodname: 'core_output_load_icon_map',
-                args: { 'system': 'fontawesome' }
+                methodname: 'core_output_load_fontawesome_icon_map',
+                args: []
             }], true, false)[0];
         }
 
@@ -63,6 +69,7 @@ define(['core/icon_system', 'jquery', 'core/ajax', 'core/mustache', 'core/locals
                 staticMap[value.component + '/' + value.pix] = value.to;
             }.bind(this));
             LocalStorage.set('core/iconmap-fontawesome', JSON.stringify(staticMap));
+            return this;
         }.bind(this));
     };
 
@@ -90,6 +97,16 @@ define(['core/icon_system', 'jquery', 'core/ajax', 'core/mustache', 'core/locals
         return Mustache.render(template, context);
     };
 
+    /**
+     * Get the name of the template to pre-cache for this icon system.
+     *
+     * @return {String}
+     * @method getTemplateName
+     */
+    IconSystemFontawesome.prototype.getTemplateName = function() {
+        return 'core/pix_icon_fontawesome';
+    };
+
     return /** @alias module:core/icon_system_fontawesome */ IconSystemFontawesome;
 
 });