Browse code

Add insert tag for svg sprite usage

Benjamin Roth authored on19/04/2020 14:41:05
Showing2 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,61 @@
1
+<?php
2
+
3
+/*
4
+ * This file is part of eSales Media ContentHelperBundle
5
+ *
6
+ * (c) Benjamin Roth
7
+ *
8
+ * @license proprietary
9
+ */
10
+
11
+namespace EsalesMedia\ContentHelperBundle\EventListener;
12
+
13
+
14
+class InsertTagsListener
15
+{
16
+
17
+  public function onReplaceInsertTags($tag)
18
+  {
19
+      $strId = '';
20
+      $strPrefix = 'ico';
21
+      $template = '<svg class="%s"><use xlink:href="#%s"></use></svg>';
22
+      $elements = explode('::', $tag);
23
+
24
+      if ($elements[0] == 'svg')
25
+      {
26
+          if ($elements[1] && stripos('::', $elements[1]) !== 0)
27
+          {
28
+              $fragments = explode('::', $elements[1]);
29
+              $elements[1] = $fragments[0];
30
+              $strId = $fragments[1];
31
+              if (isset($fragments[2])) {
32
+                  $strPrefix =  $fragments[2];
33
+              }
34
+          }
35
+          if ($elements[1])
36
+          {
37
+              $strClasses = '';
38
+              if ($elements[1] && stripos(':', $elements[1]) !== 0)
39
+              {
40
+                  list($strClass, $strClasses) = explode(':', $elements[1], 1);
41
+              } else {
42
+                  $strClass = $elements[1];
43
+              }
44
+
45
+              $strSvgId = $strPrefix.'-'.$strClass;
46
+              $strClasses = $strSvgId;
47
+              foreach (explode(' ', $strClasses) as $class)
48
+              {
49
+                  $strClasses .= ' '.$class;
50
+              }
51
+              if ($strId)
52
+              {
53
+                  $template = '<svg id="'.$strId.'" class="%s"><use xlink:href="#%s"></use></svg>';
54
+              }
55
+              return sprintf($template,$strClasses,$strSvgId);
56
+          }
57
+      }
58
+
59
+      return false;
60
+  }
61
+}
... ...
@@ -14,3 +14,7 @@ services:
14 14
     esalesmedia_content_helper.listener.page:
15 15
         class: \EsalesMedia\ContentHelperBundle\EventListener\PageListener
16 16
         public: true
17
+
18
+    esalesmedia_content_helper.listener.insert_tags:
19
+        class: \EsalesMedia\ContentHelperBundle\EventListener\InsertTagsListener
20
+        public: true