netzke-core 0.2.3 → 0.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +3 -0
 - data/javascripts/core.js +97 -97
 - data/lib/app/models/netzke_layout.rb +1 -1
 - data/lib/app/models/netzke_preference.rb +14 -22
 - data/lib/netzke/action_view_ext.rb +5 -5
 - data/lib/netzke/base.rb +6 -6
 - data/lib/netzke/js_class_builder.rb +13 -13
 - data/netzke-core.gemspec +2 -2
 - metadata +2 -2
 
    
        data/CHANGELOG
    CHANGED
    
    
    
        data/javascripts/core.js
    CHANGED
    
    | 
         @@ -10,126 +10,126 @@ Ext.Ajax.extraParams = { 
     | 
|
| 
       10 
10 
     | 
    
         | 
| 
       11 
11 
     | 
    
         
             
            // helper method to do multiple Ext.apply's
         
     | 
| 
       12 
12 
     | 
    
         
             
            Ext.chainApply = function(objectArray){
         
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
      
 13 
     | 
    
         
            +
              var res = {};
         
     | 
| 
      
 14 
     | 
    
         
            +
              Ext.each(objectArray, function(obj){Ext.apply(res, obj)});
         
     | 
| 
      
 15 
     | 
    
         
            +
              return res;
         
     | 
| 
       16 
16 
     | 
    
         
             
            };
         
     | 
| 
       17 
17 
     | 
    
         | 
| 
       18 
18 
     | 
    
         
             
            // implementation of totalProperty, successProperty and root configuration options for ArrayReader
         
     | 
| 
       19 
19 
     | 
    
         
             
            Ext.data.ArrayReader = Ext.extend(Ext.data.JsonReader, {
         
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
            	    }
         
     | 
| 
       41 
     | 
    
         
            -
            	    return {
         
     | 
| 
       42 
     | 
    
         
            -
            	        records : records,
         
     | 
| 
       43 
     | 
    
         
            -
            	        totalRecords : totalRecords,
         
     | 
| 
       44 
     | 
    
         
            -
            					success : success
         
     | 
| 
       45 
     | 
    
         
            -
            	    };
         
     | 
| 
      
 20 
     | 
    
         
            +
              readRecords : function(o){
         
     | 
| 
      
 21 
     | 
    
         
            +
                var sid = this.meta ? this.meta.id : null;
         
     | 
| 
      
 22 
     | 
    
         
            +
                var recordType = this.recordType, fields = recordType.prototype.fields;
         
     | 
| 
      
 23 
     | 
    
         
            +
                var records = [];
         
     | 
| 
      
 24 
     | 
    
         
            +
                // console.info(this.meta);
         
     | 
| 
      
 25 
     | 
    
         
            +
                var root = o[this.meta.root] || o, totalRecords = o[this.meta.totalProperty], success = o[this.meta.successProperty];
         
     | 
| 
      
 26 
     | 
    
         
            +
                for(var i = 0; i < root.length; i++){
         
     | 
| 
      
 27 
     | 
    
         
            +
                  var n = root[i];
         
     | 
| 
      
 28 
     | 
    
         
            +
                  var values = {};
         
     | 
| 
      
 29 
     | 
    
         
            +
                  var id = ((sid || sid === 0) && n[sid] !== undefined && n[sid] !== "" ? n[sid] : null);
         
     | 
| 
      
 30 
     | 
    
         
            +
                  for(var j = 0, jlen = fields.length; j < jlen; j++){
         
     | 
| 
      
 31 
     | 
    
         
            +
                    var f = fields.items[j];
         
     | 
| 
      
 32 
     | 
    
         
            +
                    var k = f.mapping !== undefined && f.mapping !== null ? f.mapping : j;
         
     | 
| 
      
 33 
     | 
    
         
            +
                    var v = n[k] !== undefined ? n[k] : f.defaultValue;
         
     | 
| 
      
 34 
     | 
    
         
            +
                    v = f.convert(v, n);
         
     | 
| 
      
 35 
     | 
    
         
            +
                    values[f.name] = v;
         
     | 
| 
      
 36 
     | 
    
         
            +
                  }
         
     | 
| 
      
 37 
     | 
    
         
            +
                  var record = new recordType(values, id);
         
     | 
| 
      
 38 
     | 
    
         
            +
                  record.json = n;
         
     | 
| 
      
 39 
     | 
    
         
            +
                  records[records.length] = record;
         
     | 
| 
       46 
40 
     | 
    
         
             
                }
         
     | 
| 
      
 41 
     | 
    
         
            +
                return {
         
     | 
| 
      
 42 
     | 
    
         
            +
                  records : records,
         
     | 
| 
      
 43 
     | 
    
         
            +
                  totalRecords : totalRecords,
         
     | 
| 
      
 44 
     | 
    
         
            +
                  success : success
         
     | 
| 
      
 45 
     | 
    
         
            +
                };
         
     | 
| 
      
 46 
     | 
    
         
            +
              }
         
     | 
| 
       47 
47 
     | 
    
         
             
            });
         
     | 
| 
       48 
48 
     | 
    
         | 
| 
       49 
49 
     | 
    
         
             
            // Methods common to all widget classes
         
     | 
| 
       50 
50 
     | 
    
         
             
            Ext.widgetMixIn = {
         
     | 
| 
       51 
     | 
    
         
            -
             
     | 
| 
      
 51 
     | 
    
         
            +
              widgetInit:function(config){
         
     | 
| 
       52 
52 
     | 
    
         
             
                this.app = Ext.getCmp('feedback_ghost');
         
     | 
| 
       53 
53 
     | 
    
         
             
                // this.app = Ext.getCmp('application');
         
     | 
| 
       54 
54 
     | 
    
         
             
                if (config.tools) Ext.each(config.tools, function(i){i.on.click = this[i.on.click].createDelegate(this)}, this);
         
     | 
| 
       55 
55 
     | 
    
         
             
                if (config.actions) Ext.each(config.actions, function(i){i.handler = this[i.handler].createDelegate(this);}, this);
         
     | 
| 
       56 
     | 
    
         
            -
             
     | 
| 
      
 56 
     | 
    
         
            +
              },
         
     | 
| 
       57 
57 
     | 
    
         | 
| 
       58 
     | 
    
         
            -
             
     | 
| 
       59 
     | 
    
         
            -
             
     | 
| 
       60 
     | 
    
         
            -
             
     | 
| 
       61 
     | 
    
         
            -
             
     | 
| 
       62 
     | 
    
         
            -
             
     | 
| 
       63 
     | 
    
         
            -
             
     | 
| 
       64 
     | 
    
         
            -
             
     | 
| 
       65 
     | 
    
         
            -
             
     | 
| 
       66 
     | 
    
         
            -
             
     | 
| 
       67 
     | 
    
         
            -
             
     | 
| 
       68 
     | 
    
         
            -
             
     | 
| 
      
 58 
     | 
    
         
            +
              setEvents: function(){
         
     | 
| 
      
 59 
     | 
    
         
            +
                this.on('beforedestroy', function(){
         
     | 
| 
      
 60 
     | 
    
         
            +
                  // clean-up menus
         
     | 
| 
      
 61 
     | 
    
         
            +
                  if (this.app && !!this.app.unhostMenus) {
         
     | 
| 
      
 62 
     | 
    
         
            +
                    // alert('beforedestroy');
         
     | 
| 
      
 63 
     | 
    
         
            +
                    this.app.unhostMenus(this)
         
     | 
| 
      
 64 
     | 
    
         
            +
                  }
         
     | 
| 
      
 65 
     | 
    
         
            +
                }, this);
         
     | 
| 
      
 66 
     | 
    
         
            +
                
         
     | 
| 
      
 67 
     | 
    
         
            +
                this.on('render', this.onWidgetLoad, this);
         
     | 
| 
      
 68 
     | 
    
         
            +
              },
         
     | 
| 
       69 
69 
     | 
    
         | 
| 
       70 
     | 
    
         
            -
             
     | 
| 
       71 
     | 
    
         
            -
             
     | 
| 
       72 
     | 
    
         
            -
             
     | 
| 
       73 
     | 
    
         
            -
             
     | 
| 
       74 
     | 
    
         
            -
             
     | 
| 
       75 
     | 
    
         
            -
             
     | 
| 
       76 
     | 
    
         
            -
             
     | 
| 
       77 
     | 
    
         
            -
             
     | 
| 
       78 
     | 
    
         
            -
             
     | 
| 
       79 
     | 
    
         
            -
             
     | 
| 
       80 
     | 
    
         
            -
             
     | 
| 
      
 70 
     | 
    
         
            +
              feedback:function(msg){
         
     | 
| 
      
 71 
     | 
    
         
            +
                if (this.initialConfig.quiet) return false;
         
     | 
| 
      
 72 
     | 
    
         
            +
                if (this.app && !!this.app.showFeedback) {
         
     | 
| 
      
 73 
     | 
    
         
            +
                  this.app.showFeedback(msg)
         
     | 
| 
      
 74 
     | 
    
         
            +
                } else {
         
     | 
| 
      
 75 
     | 
    
         
            +
                  // there's no application to show the feedback - so, we do it ourselves
         
     | 
| 
      
 76 
     | 
    
         
            +
                  if (typeof msg == 'string'){
         
     | 
| 
      
 77 
     | 
    
         
            +
                    alert(msg)
         
     | 
| 
      
 78 
     | 
    
         
            +
                  } else {
         
     | 
| 
      
 79 
     | 
    
         
            +
                    var compoundResponse = ""
         
     | 
| 
      
 80 
     | 
    
         
            +
                    Ext.each(msg, function(m){
         
     | 
| 
       81 
81 
     | 
    
         
             
                      compoundResponse += m.msg + "\n"
         
     | 
| 
       82 
82 
     | 
    
         
             
                    })
         
     | 
| 
       83 
     | 
    
         
            -
             
     | 
| 
       84 
     | 
    
         
            -
             
     | 
| 
       85 
     | 
    
         
            -
             
     | 
| 
       86 
     | 
    
         
            -
             
     | 
| 
      
 83 
     | 
    
         
            +
                    if (compoundResponse != "") alert(compoundResponse);
         
     | 
| 
      
 84 
     | 
    
         
            +
                  }
         
     | 
| 
      
 85 
     | 
    
         
            +
                };
         
     | 
| 
      
 86 
     | 
    
         
            +
              },
         
     | 
| 
       87 
87 
     | 
    
         | 
| 
       88 
     | 
    
         
            -
             
     | 
| 
       89 
     | 
    
         
            -
             
     | 
| 
       90 
     | 
    
         
            -
             
     | 
| 
       91 
     | 
    
         
            -
             
     | 
| 
       92 
     | 
    
         
            -
             
     | 
| 
       93 
     | 
    
         
            -
             
     | 
| 
       94 
     | 
    
         
            -
             
     | 
| 
      
 88 
     | 
    
         
            +
              addMenus:function(menus){
         
     | 
| 
      
 89 
     | 
    
         
            +
                if (this.app && !!this.app.hostMenu) {
         
     | 
| 
      
 90 
     | 
    
         
            +
                  Ext.each(menus, function(menu){this.app.hostMenu(menu, this)}, this)
         
     | 
| 
      
 91 
     | 
    
         
            +
                }
         
     | 
| 
      
 92 
     | 
    
         
            +
              },
         
     | 
| 
      
 93 
     | 
    
         
            +
              
         
     | 
| 
      
 94 
     | 
    
         
            +
              onWidgetLoad:Ext.emptyFn // gets overridden
         
     | 
| 
       95 
95 
     | 
    
         
             
            };
         
     | 
| 
       96 
96 
     | 
    
         | 
| 
       97 
97 
     | 
    
         
             
            // Make Panel with layout 'fit' capable to dynamically load widgets
         
     | 
| 
       98 
98 
     | 
    
         
             
            Ext.override(Ext.Panel, {
         
     | 
| 
       99 
     | 
    
         
            -
             
     | 
| 
       100 
     | 
    
         
            -
             
     | 
| 
       101 
     | 
    
         
            -
             
     | 
| 
       102 
     | 
    
         
            -
             
     | 
| 
       103 
     | 
    
         
            -
             
     | 
| 
       104 
     | 
    
         
            -
             
     | 
| 
       105 
     | 
    
         
            -
             
     | 
| 
       106 
     | 
    
         
            -
             
     | 
| 
       107 
     | 
    
         
            -
             
     | 
| 
       108 
     | 
    
         
            -
             
     | 
| 
       109 
     | 
    
         
            -
             
     | 
| 
       110 
     | 
    
         
            -
             
     | 
| 
       111 
     | 
    
         
            -
             
     | 
| 
       112 
     | 
    
         
            -
             
     | 
| 
       113 
     | 
    
         
            -
             
     | 
| 
       114 
     | 
    
         
            -
             
     | 
| 
       115 
     | 
    
         
            -
             
     | 
| 
       116 
     | 
    
         
            -
             
     | 
| 
       117 
     | 
    
         
            -
             
     | 
| 
       118 
     | 
    
         
            -
             
     | 
| 
       119 
     | 
    
         
            -
             
     | 
| 
       120 
     | 
    
         
            -
             
     | 
| 
       121 
     | 
    
         
            -
             
     | 
| 
      
 99 
     | 
    
         
            +
              getWidget: function(){
         
     | 
| 
      
 100 
     | 
    
         
            +
                return this.items.get(0)
         
     | 
| 
      
 101 
     | 
    
         
            +
              },
         
     | 
| 
      
 102 
     | 
    
         
            +
              
         
     | 
| 
      
 103 
     | 
    
         
            +
              loadWidget: function(url, params){
         
     | 
| 
      
 104 
     | 
    
         
            +
                if (!params) params = {}
         
     | 
| 
      
 105 
     | 
    
         
            +
                
         
     | 
| 
      
 106 
     | 
    
         
            +
                this.remove(this.getWidget()); // first delete previous widget
         
     | 
| 
      
 107 
     | 
    
         
            +
                
         
     | 
| 
      
 108 
     | 
    
         
            +
                if (!url) return false; // don't load any widget if the url is null
         
     | 
| 
      
 109 
     | 
    
         
            +
             
     | 
| 
      
 110 
     | 
    
         
            +
                // we will let the server know which components we have cached
         
     | 
| 
      
 111 
     | 
    
         
            +
                var cachedComponentNames = [];
         
     | 
| 
      
 112 
     | 
    
         
            +
                for (name in Ext.componentCache) {
         
     | 
| 
      
 113 
     | 
    
         
            +
                  cachedComponentNames.push(name);
         
     | 
| 
      
 114 
     | 
    
         
            +
                }
         
     | 
| 
      
 115 
     | 
    
         
            +
                
         
     | 
| 
      
 116 
     | 
    
         
            +
                this.disable(); // to visually emphasize loading
         
     | 
| 
      
 117 
     | 
    
         
            +
                
         
     | 
| 
      
 118 
     | 
    
         
            +
                Ext.Ajax.request(
         
     | 
| 
      
 119 
     | 
    
         
            +
                  {url:url, params:Ext.apply(params, {components_cache:Ext.encode(cachedComponentNames)}), script:false, callback:function(panel, success, response){
         
     | 
| 
      
 120 
     | 
    
         
            +
                    var response = Ext.decode(response.responseText);
         
     | 
| 
      
 121 
     | 
    
         
            +
                    if (response['classDefinition']) eval(response['classDefinition']); // evaluate widget's class if it was sent
         
     | 
| 
       122 
122 
     | 
    
         | 
| 
       123 
     | 
    
         
            -
             
     | 
| 
       124 
     | 
    
         
            -
             
     | 
| 
       125 
     | 
    
         
            -
             
     | 
| 
       126 
     | 
    
         
            -
             
     | 
| 
       127 
     | 
    
         
            -
             
     | 
| 
       128 
     | 
    
         
            -
             
     | 
| 
       129 
     | 
    
         
            -
             
     | 
| 
       130 
     | 
    
         
            -
             
     | 
| 
       131 
     | 
    
         
            -
             
     | 
| 
       132 
     | 
    
         
            -
             
     | 
| 
      
 123 
     | 
    
         
            +
                    response.config.parent = this // we might want to know the parent panel in advance (e.g. to know its size)
         
     | 
| 
      
 124 
     | 
    
         
            +
                    var instance = new Ext.componentCache[response.config.widgetClassName](response.config)
         
     | 
| 
      
 125 
     | 
    
         
            +
                    
         
     | 
| 
      
 126 
     | 
    
         
            +
                    this.add(instance);
         
     | 
| 
      
 127 
     | 
    
         
            +
                    this.doLayout();
         
     | 
| 
      
 128 
     | 
    
         
            +
                    this.enable();
         
     | 
| 
      
 129 
     | 
    
         
            +
                  }, scope:this}
         
     | 
| 
      
 130 
     | 
    
         
            +
                )
         
     | 
| 
      
 131 
     | 
    
         
            +
                
         
     | 
| 
      
 132 
     | 
    
         
            +
              }
         
     | 
| 
       133 
133 
     | 
    
         
             
            });
         
     | 
| 
       134 
134 
     | 
    
         | 
| 
       135 
135 
     | 
    
         
             
            // Some Rubyish String extensions
         
     | 
| 
         @@ -24,7 +24,7 @@ class NetzkeLayout < ActiveRecord::Base 
     | 
|
| 
       24 
24 
     | 
    
         
             
              end
         
     | 
| 
       25 
25 
     | 
    
         | 
| 
       26 
26 
     | 
    
         
             
              def self.by_widget(widget_name)
         
     | 
| 
       27 
     | 
    
         
            -
                self.find(:first, :conditions => {:widget_name => widget_name, :user_id => user_id})
         
     | 
| 
      
 27 
     | 
    
         
            +
                self.find(:first, :conditions => {:widget_name => widget_name.to_s, :user_id => user_id})
         
     | 
| 
       28 
28 
     | 
    
         
             
              end
         
     | 
| 
       29 
29 
     | 
    
         | 
| 
       30 
30 
     | 
    
         
             
              def move_item(old_index, new_index)
         
     | 
| 
         @@ -30,17 +30,14 @@ class NetzkePreference < ActiveRecord::Base 
     | 
|
| 
       30 
30 
     | 
    
         
             
              end
         
     | 
| 
       31 
31 
     | 
    
         | 
| 
       32 
32 
     | 
    
         
             
              def normalized_value
         
     | 
| 
       33 
     | 
    
         
            -
                klass 
     | 
| 
      
 33 
     | 
    
         
            +
                klass      = read_attribute(:pref_type)
         
     | 
| 
       34 
34 
     | 
    
         
             
                norm_value = read_attribute(:value)
         
     | 
| 
       35 
     | 
    
         
            -
                 
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
                 
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
                 
     | 
| 
       41 
     | 
    
         
            -
                  r = nil
         
     | 
| 
       42 
     | 
    
         
            -
                elsif klass == 'Array' || klass == 'Hash'
         
     | 
| 
       43 
     | 
    
         
            -
                  r = JSON.parse(norm_value)
         
     | 
| 
      
 35 
     | 
    
         
            +
                
         
     | 
| 
      
 36 
     | 
    
         
            +
                case klass
         
     | 
| 
      
 37 
     | 
    
         
            +
                when nil             then r = norm_value  # do not cast
         
     | 
| 
      
 38 
     | 
    
         
            +
                when 'Boolean'       then r = norm_value == 'false' ? false : (norm_value == 'true' || norm_value)
         
     | 
| 
      
 39 
     | 
    
         
            +
                when 'NilClass'      then r = nil
         
     | 
| 
      
 40 
     | 
    
         
            +
                when 'Array', 'Hash' then r = JSON.parse(norm_value)
         
     | 
| 
       44 
41 
     | 
    
         
             
                else
         
     | 
| 
       45 
42 
     | 
    
         
             
                  r = norm_value.send(ELEMENTARY_CONVERTION_METHODS[klass])
         
     | 
| 
       46 
43 
     | 
    
         
             
                end
         
     | 
| 
         @@ -48,30 +45,25 @@ class NetzkePreference < ActiveRecord::Base 
     | 
|
| 
       48 
45 
     | 
    
         
             
              end
         
     | 
| 
       49 
46 
     | 
    
         | 
| 
       50 
47 
     | 
    
         
             
              def normalized_value=(new_value)
         
     | 
| 
       51 
     | 
    
         
            -
                # norm_value = (new_value.to_s if new_value == true or new_value == false) || new_value
         
     | 
| 
       52 
48 
     | 
    
         
             
                case new_value.class.name
         
     | 
| 
       53 
     | 
    
         
            -
                when "Array"
         
     | 
| 
       54 
     | 
    
         
            -
             
     | 
| 
       55 
     | 
    
         
            -
                 
     | 
| 
       56 
     | 
    
         
            -
                  write_attribute(:value, new_value.to_json)
         
     | 
| 
       57 
     | 
    
         
            -
                else
         
     | 
| 
       58 
     | 
    
         
            -
                  write_attribute(:value, new_value.to_s)
         
     | 
| 
      
 49 
     | 
    
         
            +
                when "Array" then write_attribute(:value, new_value.to_json)
         
     | 
| 
      
 50 
     | 
    
         
            +
                when "Hash"  then write_attribute(:value, new_value.to_json)
         
     | 
| 
      
 51 
     | 
    
         
            +
                else              write_attribute(:value, new_value.to_s)
         
     | 
| 
       59 
52 
     | 
    
         
             
                end
         
     | 
| 
       60 
53 
     | 
    
         
             
                write_attribute(:pref_type, [TrueClass, FalseClass].include?(new_value.class) ? 'Boolean' : new_value.class.to_s)
         
     | 
| 
       61 
54 
     | 
    
         
             
              end
         
     | 
| 
       62 
55 
     | 
    
         | 
| 
       63 
56 
     | 
    
         
             
              def self.[](pref_name)
         
     | 
| 
       64 
     | 
    
         
            -
                pref_name 
     | 
| 
      
 57 
     | 
    
         
            +
                pref_name  = pref_name.to_s
         
     | 
| 
       65 
58 
     | 
    
         
             
                conditions = {:name => pref_name, :user_id => user_id, :widget_name => self.widget_name}
         
     | 
| 
       66 
     | 
    
         
            -
                pref 
     | 
| 
       67 
     | 
    
         
            -
                # pref = @@user.nil? ? self.find_by_name(pref_name) : self.find_by_name_and_user_id(pref_name, @@user.id)
         
     | 
| 
      
 59 
     | 
    
         
            +
                pref       = self.find(:first, :conditions => conditions)
         
     | 
| 
       68 
60 
     | 
    
         
             
                pref && pref.normalized_value
         
     | 
| 
       69 
61 
     | 
    
         
             
              end
         
     | 
| 
       70 
62 
     | 
    
         | 
| 
       71 
63 
     | 
    
         
             
              def self.[]=(pref_name, new_value)
         
     | 
| 
       72 
     | 
    
         
            -
                pref_name 
     | 
| 
      
 64 
     | 
    
         
            +
                pref_name  = pref_name.to_s
         
     | 
| 
       73 
65 
     | 
    
         
             
                conditions = {:name => pref_name, :user_id => user_id, :widget_name => self.widget_name}
         
     | 
| 
       74 
     | 
    
         
            -
                pref 
     | 
| 
      
 66 
     | 
    
         
            +
                pref       = self.find(:first, :conditions => conditions)
         
     | 
| 
       75 
67 
     | 
    
         | 
| 
       76 
68 
     | 
    
         
             
                # if assigning nil, simply delete the eventually found preference
         
     | 
| 
       77 
69 
     | 
    
         
             
                if new_value.nil?
         
     | 
| 
         @@ -5,14 +5,14 @@ module Netzke 
     | 
|
| 
       5 
5 
     | 
    
         
             
                  res = ""
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
                  if ENV['RAILS_ENV'] == 'development'
         
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
      
 8 
     | 
    
         
            +
                    res << javascript_include_tag("/extjs/adapter/ext/ext-base.js", "/extjs/ext-all-debug.js")
         
     | 
| 
      
 9 
     | 
    
         
            +
                  else
         
     | 
| 
      
 10 
     | 
    
         
            +
                    res << javascript_include_tag("/extjs/adapter/ext/ext-base.js", "/extjs/ext-all.js")
         
     | 
| 
       11 
11 
     | 
    
         
             
                  end
         
     | 
| 
       12 
12 
     | 
    
         
             
                  res << javascript_tag( "Ext.authenticityToken = '#{form_authenticity_token}'") # forgery protection
         
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
      
 13 
     | 
    
         
            +
                  res << javascript_include_tag("/netzke/netzke.js")
         
     | 
| 
       14 
14 
     | 
    
         | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
      
 15 
     | 
    
         
            +
                  res
         
     | 
| 
       16 
16 
     | 
    
         
             
                end
         
     | 
| 
       17 
17 
     | 
    
         | 
| 
       18 
18 
     | 
    
         
             
                def netzke_css_include(theme_name = :default)
         
     | 
    
        data/lib/netzke/base.rb
    CHANGED
    
    | 
         @@ -16,9 +16,9 @@ module Netzke 
     | 
|
| 
       16 
16 
     | 
    
         
             
                  # Global Netzke::Base configuration
         
     | 
| 
       17 
17 
     | 
    
         
             
                  def config
         
     | 
| 
       18 
18 
     | 
    
         
             
                    set_default_config({
         
     | 
| 
       19 
     | 
    
         
            -
                      :javascripts 
     | 
| 
       20 
     | 
    
         
            -
                      :css 
     | 
| 
       21 
     | 
    
         
            -
                      :layout_manager 
     | 
| 
      
 19 
     | 
    
         
            +
                      :javascripts               => [],
         
     | 
| 
      
 20 
     | 
    
         
            +
                      :css                       => [],
         
     | 
| 
      
 21 
     | 
    
         
            +
                      :layout_manager            => "NetzkeLayout",
         
     | 
| 
       22 
22 
     | 
    
         
             
                      :persistent_config_manager => "NetzkePreference"
         
     | 
| 
       23 
23 
     | 
    
         
             
                    })
         
     | 
| 
       24 
24 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -97,8 +97,8 @@ module Netzke 
     | 
|
| 
       97 
97 
     | 
    
         
             
                attr_reader :pref
         
     | 
| 
       98 
98 
     | 
    
         | 
| 
       99 
99 
     | 
    
         
             
                def initialize(config = {}, parent = nil)
         
     | 
| 
       100 
     | 
    
         
            -
                  @config 
     | 
| 
       101 
     | 
    
         
            -
                  @parent 
     | 
| 
      
 100 
     | 
    
         
            +
                  @config  = initial_config.recursive_merge(config)
         
     | 
| 
      
 101 
     | 
    
         
            +
                  @parent  = parent
         
     | 
| 
       102 
102 
     | 
    
         
             
                  @id_name = parent.nil? ? config[:name].to_s : "#{parent.id_name}__#{config[:name]}"
         
     | 
| 
       103 
103 
     | 
    
         | 
| 
       104 
104 
     | 
    
         
             
                  @flash = []
         
     | 
| 
         @@ -240,7 +240,7 @@ module Netzke 
     | 
|
| 
       240 
240 
     | 
    
         
             
                  end
         
     | 
| 
       241 
241 
     | 
    
         
             
                end
         
     | 
| 
       242 
242 
     | 
    
         | 
| 
       243 
     | 
    
         
            -
                ####  
     | 
| 
      
 243 
     | 
    
         
            +
                #### Interface
         
     | 
| 
       244 
244 
     | 
    
         
             
                def get_widget(params = {})
         
     | 
| 
       245 
245 
     | 
    
         
             
                  # if browser does not have our component class cached (and all dependencies), send it to him
         
     | 
| 
       246 
246 
     | 
    
         
             
                  components_cache = (JSON.parse(params[:components_cache]) if params[:components_cache]) || []
         
     | 
| 
         @@ -33,10 +33,10 @@ module Netzke 
     | 
|
| 
       33 
33 
     | 
    
         
             
                  res.merge!(:id => @id_name)
         
     | 
| 
       34 
34 
     | 
    
         | 
| 
       35 
35 
     | 
    
         
             
                  # include tools and actions
         
     | 
| 
       36 
     | 
    
         
            -
                  res.merge!(:tools 
     | 
| 
      
 36 
     | 
    
         
            +
                  res.merge!(:tools   => tools)   if tools
         
     | 
| 
       37 
37 
     | 
    
         
             
                  res.merge!(:actions => actions) if actions
         
     | 
| 
       38 
     | 
    
         
            -
                  res.merge!(:bbar 
     | 
| 
       39 
     | 
    
         
            -
                  res.merge!(:tbar 
     | 
| 
      
 38 
     | 
    
         
            +
                  res.merge!(:bbar    => tbar)    if tbar
         
     | 
| 
      
 39 
     | 
    
         
            +
                  res.merge!(:tbar    => bbar)    if bbar
         
     | 
| 
       40 
40 
     | 
    
         | 
| 
       41 
41 
     | 
    
         
             
                  # include permissions
         
     | 
| 
       42 
42 
     | 
    
         
             
                  res.merge!(:permissions => permissions) unless available_permissions.empty?
         
     | 
| 
         @@ -123,17 +123,17 @@ module Netzke 
     | 
|
| 
       123 
123 
     | 
    
         
             
                  # default config that is always passed into the constructor
         
     | 
| 
       124 
124 
     | 
    
         
             
                  def js_default_config
         
     | 
| 
       125 
125 
     | 
    
         
             
                    {
         
     | 
| 
       126 
     | 
    
         
            -
                      :title 
     | 
| 
      
 126 
     | 
    
         
            +
                      :title     => "config.id.humanize()".l,
         
     | 
| 
       127 
127 
     | 
    
         
             
                      :listeners => js_listeners,
         
     | 
| 
       128 
     | 
    
         
            -
                      :tools 
     | 
| 
       129 
     | 
    
         
            -
                      :actions 
     | 
| 
       130 
     | 
    
         
            -
                      :tbar 
     | 
| 
       131 
     | 
    
         
            -
                      :bbar 
     | 
| 
       132 
     | 
    
         
            -
                      # :items 
     | 
| 
       133 
     | 
    
         
            -
                      # :items 
     | 
| 
       134 
     | 
    
         
            -
                      :height 
     | 
| 
       135 
     | 
    
         
            -
                      :width 
     | 
| 
       136 
     | 
    
         
            -
                      :border 
     | 
| 
      
 128 
     | 
    
         
            +
                      :tools     => "config.tools".l,
         
     | 
| 
      
 129 
     | 
    
         
            +
                      :actions   => "config.actions".l,
         
     | 
| 
      
 130 
     | 
    
         
            +
                      :tbar      => "config.tbar".l,
         
     | 
| 
      
 131 
     | 
    
         
            +
                      :bbar      => "config.bbar".l,
         
     | 
| 
      
 132 
     | 
    
         
            +
                      # :items   => "config.items".l,
         
     | 
| 
      
 133 
     | 
    
         
            +
                      # :items   => js_items,
         
     | 
| 
      
 134 
     | 
    
         
            +
                      :height    => 400,
         
     | 
| 
      
 135 
     | 
    
         
            +
                      :width     => 800,
         
     | 
| 
      
 136 
     | 
    
         
            +
                      :border    => false
         
     | 
| 
       137 
137 
     | 
    
         
             
                    }
         
     | 
| 
       138 
138 
     | 
    
         
             
                  end
         
     | 
| 
       139 
139 
     | 
    
         | 
    
        data/netzke-core.gemspec
    CHANGED
    
    | 
         @@ -2,11 +2,11 @@ 
     | 
|
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            Gem::Specification.new do |s|
         
     | 
| 
       4 
4 
     | 
    
         
             
              s.name = %q{netzke-core}
         
     | 
| 
       5 
     | 
    
         
            -
              s.version = "0.2. 
     | 
| 
      
 5 
     | 
    
         
            +
              s.version = "0.2.4"
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
              s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
         
     | 
| 
       8 
8 
     | 
    
         
             
              s.authors = ["Sergei Kozlov"]
         
     | 
| 
       9 
     | 
    
         
            -
              s.date = %q{2009-01- 
     | 
| 
      
 9 
     | 
    
         
            +
              s.date = %q{2009-01-28}
         
     | 
| 
       10 
10 
     | 
    
         
             
              s.description = %q{Build ExtJS/Rails widgets with minimum effort}
         
     | 
| 
       11 
11 
     | 
    
         
             
              s.email = %q{sergei@writelesscode.com}
         
     | 
| 
       12 
12 
     | 
    
         
             
              s.extra_rdoc_files = ["CHANGELOG", "lib/app/controllers/netzke_controller.rb", "lib/app/models/netzke_layout.rb", "lib/app/models/netzke_preference.rb", "lib/netzke/action_view_ext.rb", "lib/netzke/base.rb", "lib/netzke/controller_extensions.rb", "lib/netzke/core_ext.rb", "lib/netzke/feedback_ghost.rb", "lib/netzke/js_class_builder.rb", "lib/netzke/routing.rb", "lib/netzke-core.rb", "lib/vendor/facets/hash/recursive_merge.rb", "LICENSE", "README.mdown", "tasks/netzke_core_tasks.rake"]
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification 
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: netzke-core
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version 
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.2. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.2.4
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors: 
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Sergei Kozlov
         
     | 
| 
         @@ -9,7 +9,7 @@ autorequire: 
     | 
|
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
11 
     | 
    
         | 
| 
       12 
     | 
    
         
            -
            date: 2009-01- 
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2009-01-28 00:00:00 -06:00
         
     | 
| 
       13 
13 
     | 
    
         
             
            default_executable: 
         
     | 
| 
       14 
14 
     | 
    
         
             
            dependencies: []
         
     | 
| 
       15 
15 
     | 
    
         |