Parcourir la source

add getScriptTag/getStyleTag method to CdnResourcesService

Yuki Takei il y a 7 ans
Parent
commit
4003699cb6

+ 39 - 1
resource/cdn-resources.js

@@ -3,6 +3,7 @@ module.exports = {
     {
       name: 'basis',
       url: 'https://cdn.jsdelivr.net/combine/npm/emojione@3.1.2,npm/jquery@3.3.1,npm/bootstrap@3.3.7/dist/js/bootstrap.min.js',
+      groups: ['basis'],
       args: {
         integrity: '',
       }
@@ -10,6 +11,7 @@ module.exports = {
     {
       name: 'highlight',
       url: 'https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@9.12.0/build/highlight.min.js',
+      groups: ['basis'],
       args: {
         integrity: '',
       }
@@ -26,7 +28,7 @@ module.exports = {
 'gh/highlightjs/cdn-release@9.12.0/build/languages/typescript.min.js,' +
 'gh/highlightjs/cdn-release@9.12.0/build/languages/yaml.min.js',
       args: {
-        defer: true,
+        async: true,
         integrity: '',
       }
     },
@@ -40,9 +42,45 @@ module.exports = {
     }
   ],
   style: [
+    {
+      name: 'lato',
+      url: 'https://fonts.googleapis.com/css?family=Lato:400,700',
+      groups: ['basis'],
+      args: {
+        integrity: ''
+      },
+    },
     {
       name: 'font-awesome',
       url: 'https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/css/font-awesome.min.css',
+      groups: ['basis'],
+      args: {
+        integrity: '',
+      }
+    },
+    {
+      name: 'themify-icons',
+      url: 'https://cdn.jsdelivr.net/npm/cd-themify-icons@0.0.1/index.min.css',
+      groups: ['basis'],
+      args: {
+        integrity: ''
+      },
+    },
+    {
+      name: 'simple-line-icons',
+      url: 'https://cdn.jsdelivr.net/npm/simple-line-icons@2.4.1/css/simple-line-icons.min.css',
+      groups: ['basis'],
+      args: {
+        integrity: ''
+      },
+    },
+    {
+      name: 'emojione',
+      url: 'https://cdn.jsdelivr.net/npm/emojione@3.1.2/extras/css/emojione.min.css',
+      groups: ['basis'],
+      args: {
+        integrity: ''
+      },
     },
   ]
 };

+ 34 - 8
src/lib/service/cdn-resources-service.js

@@ -64,10 +64,23 @@ class CdnResourcesService {
     return `<script src="${url}" ${attrs.join(' ')}></script>`;
   }
 
-  getAllScriptTags() {
-    return this.cdnResources.js.map(resource => {
-      return this.generateScriptTag(resource, this.noCdn);
-    });
+  getScriptTagByName(name) {
+    const tags = this.cdnResources.js
+      .filter(resource => resource.name === name)
+      .map(resource => {
+        return this.generateScriptTag(resource, this.noCdn);
+      });
+    return tags[0];
+  }
+
+  getScriptTagsByGroup(group) {
+    return this.cdnResources.js
+      .filter(resource => {
+        return resource.groups != null && resource.groups.includes(group);
+      })
+      .map(resource => {
+        return this.generateScriptTag(resource, this.noCdn);
+      });
   }
 
   /**
@@ -96,10 +109,23 @@ class CdnResourcesService {
     return `<link href="${url}" ${attrs.join(' ')}>`;
   }
 
-  getAllStyleTags() {
-    return this.cdnResources.style.map(resource => {
-      return this.generateStyleTag(resource, this.noCdn);
-    });
+  getStyleTagByName(name) {
+    const tags = this.cdnResources.style
+      .filter(resource => resource.name === name)
+      .map(resource => {
+        return this.generateStyleTag(resource, this.noCdn);
+      });
+    return tags[0];
+  }
+
+  getStyleTagsByGroup(group) {
+    return this.cdnResources.style
+      .filter(resource => {
+        return resource.groups != null && resource.groups.includes(group);
+      })
+      .map(resource => {
+        return this.generateStyleTag(resource, this.noCdn);
+      });
   }
 }
 

+ 11 - 4
src/server/util/swigFunctions.js

@@ -58,13 +58,20 @@ module.exports = function(crowi, app, req, locals) {
     return Config.globalLang(config);
   };
 
-  locals.cdnScriptTags = function() {
-    const tags = cdnResourcesService.getAllScriptTags();
+  locals.cdnScriptTag = function(name) {
+    return cdnResourcesService.getScriptTagByName(name);
+  };
+  locals.cdnScriptTagsByGroup = function(group) {
+    const tags = cdnResourcesService.getScriptTagsByGroup(group);
     return tags.join('\n');
   };
 
-  locals.cdnStyleTags = function() {
-    const tags = cdnResourcesService.getAllStyleTags();
+  locals.cdnStyleTags = function(name) {
+    return cdnResourcesService.getStyleTagByName(name);
+  };
+
+  locals.cdnStyleTagsByGroup = function(group) {
+    const tags = cdnResourcesService.getStyleTagsByGroup(group);
     return tags.join('\n');
   };