You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@guacamole.apache.org by mj...@apache.org on 2016/03/20 03:22:06 UTC

[26/50] incubator-guacamole-client git commit: GUAC-1378: Define HTML patches using a special root element.

GUAC-1378: Define HTML patches using a special <guac-patch> root element.

Project: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/commit/9c113632
Tree: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/tree/9c113632
Diff: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/diff/9c113632

Branch: refs/heads/master
Commit: 9c11363224b8c362cd3b7051d933d94fcf900de1
Parents: 5e6c9c2
Author: Michael Jumper <mi...@guac-dev.org>
Authored: Thu Feb 18 13:34:07 2016 -0800
Committer: Michael Jumper <mi...@guac-dev.org>
Committed: Thu Feb 18 13:34:07 2016 -0800

----------------------------------------------------------------------
 .../index/config/templateRequestDecorator.js    | 42 +++++++++++++++++++-
 1 file changed, 40 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/9c113632/guacamole/src/main/webapp/app/index/config/templateRequestDecorator.js
----------------------------------------------------------------------
diff --git a/guacamole/src/main/webapp/app/index/config/templateRequestDecorator.js b/guacamole/src/main/webapp/app/index/config/templateRequestDecorator.js
index b4c78c7..cb848c3 100644
--- a/guacamole/src/main/webapp/app/index/config/templateRequestDecorator.js
+++ b/guacamole/src/main/webapp/app/index/config/templateRequestDecorator.js
@@ -32,6 +32,18 @@ angular.module('index').config(['$provide', function($provide) {
         var $q = $injector.get('$q');
 
         /**
+         * Array of the root elements of all patches which should be applied to
+         * the HTML of retrieved templates.
+         *
+         * @type Element[]
+         */
+        var patches = [
+            $('<guac-patch before="a"><p>HELLO BEFORE</p></guac-patch>')[0],
+            $('<guac-patch after="a"><p>HELLO AFTER</p></guac-patch>')[0],
+            $('<guac-patch replace="div.protocol"><div class="protocol">:-)</div></guac-patch>')[0]
+        ];
+
+        /**
          * Invokes $templateRequest() with all arguments exactly as provided,
          * applying all HTML patches from any installed Guacamole extensions
          * to the HTML of the requested template.
@@ -50,8 +62,34 @@ angular.module('index').config(['$provide', function($provide) {
                 // Parse HTML into DOM tree
                 var root = $('<div></div>').html(data);
 
-                // STUB: Apply HTML patches
-                root.find('a').after('<p>HELLO</p>');
+                // Apply all defined patches
+                angular.forEach(patches, function applyPatch(patch) {
+
+                    // Ignore any patches which are malformed
+                    if (patch.tagName !== 'GUAC-PATCH')
+                        return;
+
+                    // Insert after any elements which match the "after"
+                    // selector (if defined)
+                    var after = patch.getAttribute('after');
+                    if (after)
+                        root.find(after).after(patch.innerHTML);
+
+                    // Insert before any elements which match the "before"
+                    // selector (if defined)
+                    var before = patch.getAttribute('before');
+                    if (before)
+                        root.find(before).before(patch.innerHTML);
+
+                    // Replace any elements which match the "replace" selector
+                    // (if defined)
+                    var replace = patch.getAttribute('replace');
+                    if (replace)
+                        root.find(replace).html(patch.innerHTML);
+
+                    // Ignore all other attributes
+
+                });
 
                 // Transform back into HTML
                 deferred.resolve.call(this, root.html());