]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-8030 [verto_communicator] added ngSanitize as a dependency, vertoFilters module...
authorJaon EarlWolf <jamonsterr@gmail.com>
Fri, 16 Oct 2015 20:35:13 +0000 (17:35 -0300)
committerJaon EarlWolf <jamonsterr@gmail.com>
Fri, 16 Oct 2015 21:24:55 +0000 (18:24 -0300)
html5/verto/verto_communicator/bower.json
html5/verto/verto_communicator/src/index.html
html5/verto/verto_communicator/src/partials/chat.html
html5/verto/verto_communicator/src/vertoApp/vertoApp.module.js
html5/verto/verto_communicator/src/vertoFilters/filters/picturify.js [new file with mode: 0644]
html5/verto/verto_communicator/src/vertoFilters/vertoFilters.module.js [new file with mode: 0644]

index c69b4785d5ed03723dc836281837092763e434ad..6a05c29a06f75153d5dfc1a11e574be2546456a6 100644 (file)
@@ -28,6 +28,7 @@
     "bootstrap": "~3.3.4",
     "angular-toastr": "~1.4.1",
     "angular": "~1.3.15",
+    "angular-sanitize": "~1.3.15",
     "angular-route": "~1.3.15",
     "angular-prompt": "~1.1.1",
     "angular-animate": "~1.3.15",
index a1594f8a7fd553f5448bef169c99b313af669d71..c450607c9fafe8a641d6eed1ea665e9585b59286 100644 (file)
@@ -56,7 +56,7 @@
 
     <video class="hide" id="webcam" autoplay="autoplay" style="width:100%; height:100%; object-fit:inherit;"></video>
 
-   
+
     <!--<script type="text/javascript" src="js/jquery/jquery.mobile.min.js"></script>-->
 
     <!-- build:js(.) scripts/vendor.js -->
@@ -66,6 +66,7 @@
     <script src="bower_components/angular-gravatar/build/angular-gravatar.js"></script>
     <script src="bower_components/bootstrap/dist/js/bootstrap.js"></script>
     <script src="bower_components/angular-toastr/dist/angular-toastr.tpls.js"></script>
+    <script src="bower_components/angular-sanitize/angular-sanitize.js"></script>
     <script src="bower_components/angular-route/angular-route.js"></script>
     <script src="bower_components/angular-bootstrap/ui-bootstrap-tpls.js"></script>
     <script src="bower_components/angular-prompt/dist/angular-prompt.js"></script>
     <!-- endbuild -->
 
     <!-- build:js(.) scripts/scripts.js -->
-    
+
     <script type="text/javascript" src="../js/src/jquery.jsonrpcclient.js"></script>
     <script type="text/javascript" src="../js/src/jquery.FSRTC.js"></script>
     <script type="text/javascript" src="../js/src/jquery.verto.js"></script>
-    
+
     <script type="text/javascript" src="js/3rd-party/getScreenId.js"></script>
     <script type="text/javascript" src="js/3rd-party/md5.min.js"></script>
-    
+
     <script type="text/javascript" src="src/vertoApp/vertoApp.module.js"></script>
 
     <script type="text/javascript" src="src/vertoControllers/vertoControllers.module.js"></script>
     <script type="text/javascript" src="src/vertoDirectives/directives/userStatus.js"></script>
     <script type="text/javascript" src="src/vertoDirectives/directives/videoTag.js"></script>
 
+    <script type="text/javascript" src="src/vertoFilters/vertoFilters.module.js"></script>
+    <script type="text/javascript" src="src/vertoFilters/filters/picturify.js"></script>
+
     <script type="text/javascript" src="src/vertoService/vertoService.module.js"></script>
     <script type="text/javascript" src="src/vertoService/services/vertoService.js"></script>
     <script type="text/javascript" src="src/vertoService/services/configService.js"></script>
 
   </body>
 </html>
-
index 6fb10a878f58df6e61d35e109c6dc46ee6c3d391..7e10b05db3dd514625fcfbb4d4d7e5484925eff9 100644 (file)
       </span>
       <!-- FIXME(italo): Put this whole block in a flex box to avoid defining fixed width.-->
       <h4 class="chat-members-name">
-        <div class="members-name">{{ member.name }}</div> 
+        <div class="members-name">{{ member.name }}</div>
        <small class="ellipsis members-number">({{ member.number }})</small>
-       
+
        <div class="members-badges">
          <div ng-if="member.status.video.floor" class="label badge-floor" ng-class="{'label-danger': member.status.video.floorLocked, 'label-info': !member.status.video.floorLocked}"><i class="mdi mdi-action-https lock-floor" ng-if="member.status.video.floorLocked"></i> <span>Floor</span></div>
           <div ng-if="member.status.video.reservationID == 'presenter'" class="label label-warning">Presenter</div>
        </div>
       </h4>
-      
+
       <div class="pull-right action-buttons chat-members-action" ng-show="verto.data.confRole == 'moderator'">
         <div class="btn-group">
           <button type="button" class="btn btn-xs dropdown-toggle" data-toggle="dropdown">
       </div>
       <div class="chat-message" ng-repeat="message in messages" title="Sent at {{ message.created_at|date }}.">
         <div class="chat-message-metadata">{{ message.from }}:</div>
-        <p class="chat-message-body">{{ message.body }}</p>
+        <p class="chat-message-body" ng-bind-html="message.body | linky:'_blank' | picturify:150:3 "></p>
       </div>
       <div id="chat-message-bottom"></div>
     </div>
index 0952ed1dceb590c273b638d8879b9ff90b121b52..966a7c1f7e0a3f00ce117cfc9be678228f2adc03 100644 (file)
@@ -6,8 +6,10 @@
     'ngRoute',
     'vertoControllers',
     'vertoDirectives',
+    'vertoFilters',
     'ngStorage',
     'ngAnimate',
+    'ngSanitize',
     'toastr',
     'FBAngular',
     'cgPrompt',
 
   vertoApp.run(['$rootScope', '$location', 'toastr', 'prompt', 'verto',
     function($rootScope, $location, toastr, prompt, verto) {
-      
+
       $rootScope.$on( "$routeChangeStart", function(event, next, current) {
         if (!verto.data.connected) {
           if ( next.templateUrl === "partials/login.html") {
-            // pass 
+            // pass
           } else {
             $location.path("/");
           }
         }
       });
-      
+
       $rootScope.$on('$routeChangeSuccess', function(event, current, previous) {
         $rootScope.title = current.$$route.title;
       });
@@ -77,7 +79,7 @@
         $rootScope.safeProtocol = true;
       }
 
-      
+
       $rootScope.promptInput = function(title, message, label, callback) {
         var ret = prompt({
           title: title,
diff --git a/html5/verto/verto_communicator/src/vertoFilters/filters/picturify.js b/html5/verto/verto_communicator/src/vertoFilters/filters/picturify.js
new file mode 100644 (file)
index 0000000..2a09551
--- /dev/null
@@ -0,0 +1,26 @@
+(function () {
+  'use strict';
+
+  angular
+  .module('vertoFilters')
+  .filter('picturify', function() {
+    var regex = /<a (|target="\s*\S*" )href="(\s*\S*.(png|jpg|svg|gif|webp|bmp))">\s*\S*<\/a>/i;
+    var regex64 = /data:image\/(\s*\S*);base64,((?:[A-Za-z0-9+\/]{4})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=))/g;
+
+    return function (text, width, n) {
+      var i = 0;
+      width = width || 150; //default width
+      if(regex64.test(text)) {
+        text = text.replace(regex64, '<a href="$1" target="_blank"><img width="'+ width +'" src="data:image/png;base64,$2"/></a>')
+      }
+
+      do {
+        text = text.replace(regex, '<a $1href="$2"><img width="'+ width +'" src="$2"/></a>');
+      } while((!n || (n && i++ < n)) && regex.test(text));
+
+      return text;
+    }
+
+  });
+
+})();
diff --git a/html5/verto/verto_communicator/src/vertoFilters/vertoFilters.module.js b/html5/verto/verto_communicator/src/vertoFilters/vertoFilters.module.js
new file mode 100644 (file)
index 0000000..f589331
--- /dev/null
@@ -0,0 +1,4 @@
+(function() {
+  'use strict';
+  var vertoFilters = angular.module('vertoFilters', []);
+})();