Blame view

resources/js/common/services/mediaEmbedder.js 1.4 KB
e77200db5   nologostudio.ru   Initial commit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
  angular.module('mediaEmbedder', [])
  
  .service('mediaEmbedder', [function () {
      function embedHtml(payload, targetEl) {
          if (/^<script /i.test(payload)) {
              return embedScript(payload, targetEl);
          }
  
          angular.element(targetEl).html(payload);
  
          if (window.FB) {
              FB.XFBML.parse(angular.element(targetEl)[0]);
          }
  
          if (window.instgrm) {
              instgrm.Embeds.process();
          }
      }
  
      function embedScript(payload, targetEl) {
          var script = document.createElement('script');
  
          angular.forEach($(payload)[0].attributes, function (attr) {
              script.setAttribute(attr.name, attr.value);
          });
  
          angular.element(targetEl).html('');
          angular.element(targetEl).append(script);
      }
  
      function embedImage(imageUrl, targetEl) {
          angular.element(targetEl).html('<img src="' + imageUrl + '">');
      }
  
      return {
          embed: function (media, targetEl) {
              switch (media.payloadType) {
                  case 'html':
                      embedHtml(media.payload, targetEl);
                      break;
  
                  case 'image':
                      embedImage(media.payload, targetEl);
                      break;
  
                  default:
                      console.error('mediaEmbedder: ' + media.payloadType + ' type is not configured.');
                      break;
              }
          },
      };
  }]);