Author: psharples
Date: Tue Apr  5 10:56:36 2011
New Revision: 1088968

URL: http://svn.apache.org/viewvc?rev=1088968&view=rev
Log:
Updated patch for IE concerning meta-data attributes which are read-only. SEE 
WOOKIE-205.

Modified:
    incubator/wookie/trunk/WebContent/shared/js/wookie-wrapper.js

Modified: incubator/wookie/trunk/WebContent/shared/js/wookie-wrapper.js
URL: 
http://svn.apache.org/viewvc/incubator/wookie/trunk/WebContent/shared/js/wookie-wrapper.js?rev=1088968&r1=1088967&r2=1088968&view=diff
==============================================================================
--- incubator/wookie/trunk/WebContent/shared/js/wookie-wrapper.js (original)
+++ incubator/wookie/trunk/WebContent/shared/js/wookie-wrapper.js Tue Apr  5 
10:56:36 2011
@@ -155,18 +155,29 @@ var Widget = {
                WidgetImpl.metadata(this.instanceid_key, this.setMetadata);
                dwr.engine.endBatch({async:false});
        },
-       
+
        setMetadata: function(map){
-               Widget.id = map["id"];
-               Widget.author = map["author"];
-               Widget.authorEmail = map["authorEmail"];
-               Widget.authorHref = map["authorHref"];
-               Widget.name = map["name"];
-               Widget.shortName = map["shortName"];
-               Widget.description = map["description"];
-               Widget.version = map["version"];
-               Widget.height = parseInt(map["height"]);
-               Widget.width = parseInt(map["width"]);
+               for (var key in map){
+                       Widget.setMetadataProperty(key, map[key]);
+               }
+       },
+
+       setMetadataProperty: function(key, value){
+               try{
+                       Widget.__defineSetter__(key, 
function(){window.DOMException.code = 
DOMException.NO_MODIFICATION_ALLOWED_ERR;throw (window.DOMException);});
+                       Widget.__defineGetter__(key, function(){return value});
+               } catch(err){
+                       try{
+                               // cant use __defineGetter__ so try to setup 
for IE9
+                               Object.defineProperty(Widget, key, {
+                                       set: function 
set(){window.DOMException.code = DOMException.NO_MODIFICATION_ALLOWED_ERR;throw 
(window.DOMException)},
+                                       get: function get(){return value}
+                               }
+                               );
+                       } catch(err2){// catch IE8
+                               eval("Widget."+key+"='"+value+"';");
+                       }
+               }
        },
        
        setPrefs: function(map){


Reply via email to