sproutcore 0.9.9 → 0.9.10

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.
Files changed (63) hide show
  1. data/History.txt +9 -0
  2. data/Manifest.txt +32 -32
  3. data/app_generators/sproutcore/sproutcore_generator.rb +2 -0
  4. data/app_generators/sproutcore/templates/README +5 -5
  5. data/bin/sc-gen +1 -1
  6. data/bin/sproutcore +1 -0
  7. data/frameworks/sproutcore/Core.js +26 -11
  8. data/frameworks/sproutcore/HISTORY +6 -0
  9. data/frameworks/sproutcore/controllers/array.js +1 -1
  10. data/frameworks/sproutcore/drag/drag.js +2 -2
  11. data/frameworks/sproutcore/english.lproj/panes.css +1 -1
  12. data/frameworks/sproutcore/english.lproj/theme.css +4 -4
  13. data/frameworks/sproutcore/foundation/binding.js +2 -1
  14. data/frameworks/sproutcore/foundation/input_manager.js +9 -8
  15. data/frameworks/sproutcore/foundation/path_module.js +1 -1
  16. data/frameworks/sproutcore/lib/core_views.rb +3 -1
  17. data/frameworks/sproutcore/lib/index.rhtml +2 -2
  18. data/frameworks/sproutcore/lib/menu_views.rb +6 -1
  19. data/frameworks/sproutcore/mixins/observable.js +119 -17
  20. data/frameworks/sproutcore/mixins/scrollable.js +5 -3
  21. data/frameworks/sproutcore/tests/views/view/innerFrame.rhtml +3 -1
  22. data/frameworks/sproutcore/views/button/button.js +15 -0
  23. data/frameworks/sproutcore/views/field/textarea_field.js +8 -0
  24. data/frameworks/sproutcore/views/form.js +39 -33
  25. data/frameworks/sproutcore/views/popup_menu.js +7 -11
  26. data/frameworks/sproutcore/views/view.js +31 -7
  27. data/lib/sproutcore/bundle.rb +44 -11
  28. data/lib/sproutcore/library.rb +5 -5
  29. data/lib/sproutcore/merb/bundle_controller.rb +7 -3
  30. data/lib/sproutcore/version.rb +1 -1
  31. data/{generators → sc_generators}/client/README +1 -1
  32. data/{generators → sc_generators}/client/USAGE +0 -0
  33. data/{generators → sc_generators}/client/client_generator.rb +0 -0
  34. data/{generators → sc_generators}/client/templates/core.js +0 -0
  35. data/{generators → sc_generators}/client/templates/english.lproj/body.css +0 -0
  36. data/{generators → sc_generators}/client/templates/english.lproj/body.rhtml +0 -0
  37. data/{generators → sc_generators}/client/templates/english.lproj/strings.js +0 -0
  38. data/{generators → sc_generators}/client/templates/main.js +0 -0
  39. data/{generators → sc_generators}/controller/USAGE +0 -0
  40. data/{generators → sc_generators}/controller/controller_generator.rb +0 -0
  41. data/{generators → sc_generators}/controller/templates/controller.js +0 -0
  42. data/{generators → sc_generators}/controller/templates/test.rhtml +0 -0
  43. data/{generators → sc_generators}/framework/README +1 -1
  44. data/{generators → sc_generators}/framework/USAGE +0 -0
  45. data/{generators → sc_generators}/framework/framework_generator.rb +0 -0
  46. data/{generators → sc_generators}/framework/templates/core.js +0 -0
  47. data/{generators → sc_generators}/framework/templates/english.lproj/strings.js +0 -0
  48. data/{generators → sc_generators}/language/USAGE +0 -0
  49. data/{generators → sc_generators}/language/language_generator.rb +0 -0
  50. data/{generators → sc_generators}/language/templates/strings.js +0 -0
  51. data/{generators → sc_generators}/model/USAGE +0 -0
  52. data/{generators → sc_generators}/model/model_generator.rb +0 -0
  53. data/{generators → sc_generators}/model/templates/fixture.js +0 -0
  54. data/{generators → sc_generators}/model/templates/model.js +0 -0
  55. data/{generators → sc_generators}/model/templates/test.rhtml +0 -0
  56. data/{generators → sc_generators}/test/USAGE +0 -0
  57. data/{generators → sc_generators}/test/templates/test.rhtml +0 -0
  58. data/{generators → sc_generators}/test/test_generator.rb +0 -0
  59. data/{generators → sc_generators}/view/USAGE +0 -0
  60. data/{generators → sc_generators}/view/templates/test.rhtml +0 -0
  61. data/{generators → sc_generators}/view/templates/view.js +0 -0
  62. data/{generators → sc_generators}/view/view_generator.rb +0 -0
  63. metadata +34 -34
@@ -104,7 +104,9 @@ SC.Scrollable = {
104
104
 
105
105
  // compute new sf
106
106
  var newSf = { x: sf.x - (amount.x || 0), y: sf.y - (amount.y || 0) } ;
107
- newSf = this.set('scrollFrame', newSf) ;
107
+ this.set('scrollFrame', newSf) ;
108
+ newSf = this.get('scrollFrame') ;
109
+
108
110
  return { x: newSf.x - sf.x, y: newSf.y - sf.y };
109
111
  },
110
112
 
@@ -141,8 +143,8 @@ SC.Scrollable = {
141
143
  };
142
144
 
143
145
  // if top edge is not visible, shift origin
144
- vo.y += Math.max(0, SC.minY(vo) - SC.minY(vf)) ;
145
- vo.x += Math.max(0, SC.minX(vo) - SC.minX(vf)) ;
146
+ vo.y -= Math.max(0, SC.minY(vo) - SC.minY(vf)) ;
147
+ vo.x -= Math.max(0, SC.minX(vo) - SC.minX(vf)) ;
146
148
 
147
149
  // if bottom edge is not visible, shift origin
148
150
  vo.y += Math.max(0, SC.maxY(vf) - SC.maxY(vo)) ;
@@ -112,7 +112,9 @@ Test.context("CASE 3: manual-layout view with some padding and no border", {
112
112
  },
113
113
 
114
114
  "after frame change, innerFrame should == frame less border, viewFrameDidChange is not required.": function() {
115
- var f = this.v.set('frame', { width: 50, x: 10, y: 10, height: 50 }) ;
115
+ var f ;
116
+
117
+ this.v.set('frame', f = { width: 50, x: 10, y: 10, height: 50 }) ;
116
118
  f.x += CASE3_OFFSET; f.y += CASE3_OFFSET;
117
119
  f.width -= (CASE3_OFFSET*2); f.height -= (CASE3_OFFSET*2) ;
118
120
  //console.log('f: %@ if: %@'.fmt($H(f).inspect(), $H(this.v.get('innerFrame')).inspect()));
@@ -184,6 +184,21 @@ SC.ButtonView = SC.View.extend(SC.Control,
184
184
  return this._title ;
185
185
  }.property(),
186
186
 
187
+ /**
188
+ The button href value.
189
+
190
+ This property is observable and bindable. Can be used to create localized button href values.
191
+ */
192
+ href: function(key, value) {
193
+ var el = this.rootElement;
194
+ if (value !== undefined) {
195
+ if (el) {
196
+ el.setAttribute('href', value);
197
+ }
198
+ }
199
+ return (el) ? el.getAttribute('href') : null;
200
+ }.property(),
201
+
187
202
  /**
188
203
  The name of the action you want triggered when the button is pressed.
189
204
 
@@ -18,6 +18,14 @@ SC.TextareaFieldView = SC.TextFieldView.extend(
18
18
  /** @scope SC.TextareaFieldView.prototype */ {
19
19
 
20
20
  emptyElement: '<textarea></textarea>',
21
+ didBecomeFirstResponder: function() {
22
+ if (this.get('isVisibleInWindow')) {
23
+ this.rootElement.focus();
24
+ this.invokeLater(this._selectRootElement, 1) ;
25
+ }
26
+ // hide the hint text if it is showing.
27
+ this._updateFieldHint() ;
28
+ },
21
29
 
22
30
  insertNewline: function(evt) { evt._stopWhenHandled = false; return true; }
23
31
 
@@ -7,39 +7,45 @@ require('views/view') ;
7
7
  require('views/button/button') ;
8
8
  require('views/field/text_field') ;
9
9
 
10
- // FormView provides a simple way for you to "stage" input by capturing
11
- // data from your views into the form before it is set on your actual
12
- // content object.
13
- //
14
- // HOW IT WORKS
15
- //
16
- // On startup, FormView will walk any child views looking for any views
17
- // with the property "fieldKey". Any views with this key will be saved as
18
- // fields on the form. You can access their value directly on the form by
19
- // getting the value of fieldKey.
20
- //
21
- // Used this way, you can easily combine multiple views into a single,
22
- // bindable object. To gain the full functionality however, you should use
23
- // the content commit capability.
24
- //
25
- // IMPORTANT: FormView defines some properties of its own. If you try to
26
- // name your fields with properties already declared in FormView, they will
27
- // be ignored and a warning will be logged to the console.
28
- //
29
- // CONTENT COMMIT
30
- //
31
- // If you set the content object on a form view, then the form fields will
32
- // automatically be bound to the same named keys on the content object. When
33
- // the content object value's change, the fields on the form will update
34
- // automatically. However, changing values in the fields will not update
35
- // the content object until the form is committed.
36
- //
37
- // You can commit a form promgramatically by calling the commit() method on
38
- // the form view. Alternatively, you can add a button to the form with the
39
- // outlet name submitButton and it will be automatically wired to submit
40
- // the form. You can also create a button named resetButton, it will be
41
- // automatically wired to reset the form.
42
- //
10
+ /**
11
+ FormView provides a simple way for you to focus a group of views onto a
12
+ single content object or set of content objects. It can also be used to
13
+ "stage" input by buffering data from your views into the form before it is
14
+ set on your actual content object. This approach is generally deprecated
15
+ however as the Controller objects now provide this same buffering feature
16
+ in a more robust way.
17
+
18
+ h2. How It Works
19
+
20
+ On startup, FormView will walk any child views looking for any views
21
+ with the property "fieldKey". Any views with this key will be saved as
22
+ fields on the form. You can access their value directly on the form by
23
+ getting the value of fieldKey.
24
+
25
+ Used this way, you can easily combine multiple views into a single,
26
+ bindable object. To gain the full functionality however, you should use
27
+ the content commit capability.
28
+
29
+ IMPORTANT: FormView defines some properties of its own. If you try to
30
+ name your fields with properties already declared in FormView, they will
31
+ be ignored and a warning will be logged to the console.
32
+
33
+ h2. Content Commit
34
+
35
+ If you set the content object on a form view, then the form fields will
36
+ automatically be bound to the same named keys on the content object. When
37
+ the content object value's change, the fields on the form will update
38
+ automatically. Likewise, if you change the value of the field, the value
39
+ of the content object will generally be changed as wel.
40
+
41
+ If you prefer, you can also turn on buffered commits by setting the
42
+ commitChangesImmediately property to NO. This will cause the form to
43
+ buffer any changes to the field values and only forwards them to the content
44
+ when you call commitChanges() on the form. This method of buffering is
45
+ still supported for some simple cases, however it is better to use the newer
46
+ Controller objects that provide this same buffering in a more robust way.
47
+
48
+ */
43
49
  SC.FormView = SC.View.extend({
44
50
 
45
51
  // PROPERTIES
@@ -127,17 +127,13 @@ SC.PopupMenuView = SC.View.extend({
127
127
  if (w > requiredWidth) requiredWidth = w ;
128
128
  child = child.get('nextSibling') ;
129
129
  }
130
-
131
- // loop through children again, set their widths to the required with.
132
- var size = { width: requiredWidth } ;
133
- var child = this.get('firstChild') ;
134
- while(child) {
135
- child.set('size',size) ;
136
- child = child.get('nextSibling') ;
137
- }
138
-
139
- // set this view to the same size.
140
- this.set('size',size) ;
130
+ var oldWidth = this.get("size").width;
131
+ if(requiredWidth != oldWidth)
132
+ {
133
+ var size = { width: requiredWidth };
134
+ // set this view to the same size.
135
+ this.set('size',size) ;
136
+ }
141
137
  }
142
138
 
143
139
  });
@@ -61,7 +61,7 @@ SC.View = SC.Responder.extend(SC.PathModule, SC.DelegateSupport,
61
61
  @param view {SC.View} the view to insert as a child node.
62
62
  @param beforeView {SC.View} view to insert before, or null to insert at
63
63
  end
64
- @returns {void}
64
+ @returns {SC.View} the receiver
65
65
  */
66
66
  insertBefore: function(view, beforeView) {
67
67
  this._insertBefore(view,beforeView,true);
@@ -125,7 +125,7 @@ SC.View = SC.Responder.extend(SC.PathModule, SC.DelegateSupport,
125
125
  This will also remove the view's DOM element from the recievers DOM.
126
126
 
127
127
  @param view {SC.View} the view to remove
128
- @returns {void}
128
+ @returns {SC.View} the receiver
129
129
  */
130
130
  removeChild: function(view) {
131
131
  if (!view) return ;
@@ -163,6 +163,7 @@ SC.View = SC.Responder.extend(SC.PathModule, SC.DelegateSupport,
163
163
 
164
164
  view.didRemoveFromParent(this) ;
165
165
  this.didRemoveChild(view);
166
+ return this;
166
167
  },
167
168
 
168
169
  /**
@@ -175,31 +176,54 @@ SC.View = SC.Responder.extend(SC.PathModule, SC.DelegateSupport,
175
176
 
176
177
  @param view {SC.View} the view to insert in the DOM
177
178
  @param view {SC.View} the view to remove from the DOM.
178
- @returns {void}
179
+ @returns {SC.View} the receiver
179
180
  */
180
181
  replaceChild: function(view, oldView) {
181
182
  this.insertBefore(view,oldView) ; this.removeChild(oldView) ;
183
+ return this;
182
184
  },
183
185
 
184
186
  /**
185
187
  Removes the receiver from its parentNode. If the receiver does not belong
186
188
  to a parentNode, this method does nothing.
187
189
 
188
- @returns {void}
190
+ @returns {null}
189
191
  */
190
192
  removeFromParent: function() {
191
193
  if (this.parentNode) this.parentNode.removeChild(this) ;
194
+ return null ;
192
195
  },
193
196
 
197
+ /**
198
+ Works just like removeFromParent but also removes the view from internal
199
+ caches and sets the rootElement to null so that the view and its DOM can
200
+ be garbage collected.
201
+
202
+ SproutCore includes special gaurds that ensure views and their related
203
+ DOM elements will be garbage collected whenever your web page unloads.
204
+ However, if you create and destroy views frequently while your application
205
+ is running, you should call this method when views are no longer needed
206
+ to ensure they will be garbage collected even while your application is
207
+ still running.
208
+
209
+ @returns {null}
210
+ */
211
+ destroy: function() {
212
+ this.removeFromParent() ;
213
+ delete SC.View._view[SC.guidFor(this)];
214
+ return null ;
215
+ },
216
+
194
217
  /**
195
218
  Appends the specified view to the end of the receivers childNodes array.
196
219
  This is equivalent to calling insertBefore(view, null);
197
220
 
198
221
  @param view {SC.View} the view to insert
199
- @returns {void}
222
+ @returns {SC.View} the receiver
200
223
  */
201
224
  appendChild: function(view) {
202
- this.insertBefore(view,null) ;
225
+ this.insertBefore(view,null) ;
226
+ return this ;
203
227
  },
204
228
 
205
229
  /**
@@ -636,7 +660,7 @@ SC.View = SC.Responder.extend(SC.PathModule, SC.DelegateSupport,
636
660
  @returns {String} the set attribute name
637
661
  */
638
662
  setAttribute: function(attrName, value) {
639
- this.rootElement.setAttribute(atrrName, value) ;
663
+ this.rootElement.setAttribute(attrName, value) ;
640
664
  },
641
665
 
642
666
  /**
@@ -81,9 +81,10 @@ module SproutCore
81
81
 
82
82
  attr_reader :bundle_name, :bundle_type, :required_bundles, :preferred_language
83
83
  attr_reader :javascript_libs, :stylesheet_libs
84
- attr_reader :library, :public_root, :url_prefix, :index_prefix
84
+ attr_reader :library, :public_root, :url_prefix, :index_prefix, :build_prefix
85
85
  attr_reader :source_root, :build_root, :url_root, :index_root
86
86
  attr_reader :build_mode, :layout
87
+ attr_reader :make_resources_relative
87
88
 
88
89
  def library_root
89
90
  @library_root ||= library.nil? ? nil : library.root_path
@@ -175,10 +176,15 @@ module SproutCore
175
176
 
176
177
  # public_root:: The root directory accessible to the web browser.
177
178
  @public_root = normalize_path(opts[:public_root] || 'public')
178
- #
179
+
180
+ @make_resources_relative = opts[:resources_relative] || false
181
+
179
182
  # url_prefix:: The prefix to put in front of all resource requests.
180
- @url_prefix = opts[:url_prefix] || opts[:resources_at] || opts[:at] || 'static'
181
- #
183
+ @url_prefix = opts[:url_prefix] || opts[:resources_at] || opts[:at] || (make_resources_relative ? '../..' : 'static')
184
+
185
+ # build_prefix:: The prefix to put in front of the built files directory. Generally if you are using absolute paths you want your build_prefix to match the url_prefix. If you are using relative paths, you don't want a build prefix.
186
+ @build_prefix = opts[:build_prefix] || (make_resources_relative ? '' : url_prefix)
187
+
182
188
  # index_prefix:: The prefix to put in front of all index.html request.
183
189
  @index_prefix = opts[:index_prefix] || opts[:index_at] || ''
184
190
 
@@ -188,10 +194,17 @@ module SproutCore
188
194
  @source_root = normalize_path(opts[:source_root] || File.join(bundle_type.to_s.pluralize, bundle_name.to_s))
189
195
 
190
196
  # build_root:: The directory that should contain the built files.
191
- @build_root = normalize_path(opts[:build_root] || File.join(public_root, url_prefix.to_s, bundle_name.to_s))
197
+ @build_root = normalize_path(opts[:build_root] || File.join(public_root, build_prefix.to_s, bundle_name.to_s))
192
198
 
193
199
  # url_root:: The url that can be used to reach the built resources
194
- @url_root = opts[:url_root] || ['', (url_prefix.nil? || url_prefix.size==0) ? nil : url_prefix, bundle_name.to_s].compact.join('/')
200
+
201
+ # Note that if the resources are relative, we don't want to include a
202
+ # '/' at the front. Using nil will cause it to be removed during
203
+ # compact.
204
+ @url_root = opts[:url_root] || [
205
+ (make_resources_relative ? nil : ''),
206
+ (url_prefix.nil? || url_prefix.size==0) ? nil : url_prefix,
207
+ bundle_name.to_s].compact.join('/')
195
208
 
196
209
  # index_root:: The root url that can be used to reach retrieve the index.html.
197
210
  @index_root = opts[:index_root] || ['',(index_prefix.nil? || index_prefix.size==0) ? nil : index_prefix, bundle_name.to_s].compact.join('/')
@@ -489,12 +502,32 @@ module SproutCore
489
502
 
490
503
  languages.uniq.each { |lang| build_language(lang) }
491
504
 
492
- # After build is complete, try to copy the index.html file of the preferred language
493
- # to the build_root
505
+ # After build is complete, try to copy the index.html file of the
506
+ # preferred language to the build_root
494
507
  index_entry = entry_for('index.html', :language => preferred_language)
495
508
  if index_entry && File.exists?(index_entry.build_path)
496
- FileUtils.mkdir_p(build_root)
497
- FileUtils.cp_r(index_entry.build_path, File.join(build_root,'index.html'))
509
+
510
+ # If we are publishing relative resources, then the default
511
+ # index.html needs to just redirect to the default language.
512
+ if make_resources_relative
513
+ index_url = index_entry.url.gsub("#{self.index_root}/",'')
514
+ file = %(<html><head>
515
+ <meta http-equiv="refresh" content="0;url=#{index_url}" />
516
+ <script type="text/javascript">
517
+ window.location.href='#{index_url}';
518
+ </script>
519
+ </head>
520
+ <body><a href="#{index_url}">Click here</a> if you are not redirected.</body></html>)
521
+ f = File.open(File.join(build_root, 'index.html'), 'w+')
522
+ f.write(file)
523
+ f.close
524
+
525
+ # Otherwise, just copy the contents of the index.html for the
526
+ # preferred language.
527
+ else
528
+ FileUtils.mkdir_p(build_root)
529
+ FileUtils.cp_r(index_entry.build_path, File.join(build_root,'index.html'))
530
+ end
498
531
  end
499
532
  end
500
533
 
@@ -682,7 +715,7 @@ module SproutCore
682
715
  # Converts the named path to a fully qualified path name using the library
683
716
  # root, if it does not begin with a slash
684
717
  def normalize_path(path)
685
- (path[0] == '/'[0]) ? path : File.join(library_root, path)
718
+ File.expand_path(path, library_root)
686
719
  end
687
720
 
688
721
  end
@@ -167,9 +167,9 @@ module SproutCore
167
167
  end
168
168
 
169
169
  # Returns the computed environment for a particular client or framework.
170
- # This will go up the chain of parent libraries, retrieving and merging any known
171
- # environment settings. The returned options are suitable for passing to the ClientBuilder
172
- # for registration.
170
+ # This will go up the chain of parent libraries, retrieving and merging
171
+ # any known environment settings. The returned options are suitable for
172
+ # passing to the ClientBuilder for registration.
173
173
  def environment_for(bundle_name)
174
174
 
175
175
  is_local_client = client_directories.include?(bundle_name.to_s)
@@ -204,8 +204,8 @@ module SproutCore
204
204
  ret[key] = all[key] if all.include?(key)
205
205
  end
206
206
 
207
- # Either way, if we have local settings for this specific client, they override whatever
208
- # we cooked up just now.
207
+ # Either way, if we have local settings for this specific client, they
208
+ # override whatever we cooked up just now.
209
209
  local_settings = environment[bundle_name.to_sym]
210
210
  ret = ret.merge(local_settings) unless local_settings.nil?
211
211
 
@@ -93,10 +93,14 @@ module SproutCore
93
93
  ret = File.open(build_path)
94
94
 
95
95
 
96
- # In development mode only, immediately delete built composite resources. We want
97
- # each request to come directly to us.
96
+ # In development mode only, immediately delete built composite
97
+ # resources. We want each request to come directly to us.
98
98
  if (current_bundle.build_mode == :development) && (!entry.cacheable?)
99
- FileUtils.rm(build_path)
99
+
100
+ # Deleting composite resources will not work in windows because it
101
+ # does not like to have files you just open deleted. (Its OK on
102
+ # windows)
103
+ FileUtils.rm(build_path) if (RUBY_PLATFORM !~ /mswin32/)
100
104
  end
101
105
 
102
106
  return ret
@@ -2,7 +2,7 @@ module SproutCore #:nodoc:
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 0
4
4
  MINOR = 9
5
- TINY = 9
5
+ TINY = 10
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
@@ -1,3 +1,3 @@
1
- Your new SproutCore client application has been created. To access your application, just start sc-sever and visit your client name in the web browser.
1
+ Your new SproutCore client application has been created. To access your application, just start sc-server and visit your client name in the web browser.
2
2
 
3
3
  If you want to change the deployment settings for your application edit the sc-config.rb file to get started.
File without changes
File without changes
@@ -3,5 +3,5 @@ Your new framework has been created. To include it in your clients, be sure to
3
3
  all:
4
4
  requires: [<%= name %>]
5
5
 
6
- Then restart your sc_server and you should be ready to go.
6
+ Then restart your sc-server and you should be ready to go.
7
7
 
File without changes
File without changes
File without changes
File without changes
File without changes
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sproutcore
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.9
4
+ version: 0.9.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Charles Jolley
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-06-05 00:00:00 -07:00
12
+ date: 2008-06-17 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -295,38 +295,6 @@ files:
295
295
  - frameworks/sproutcore/views/tab.js
296
296
  - frameworks/sproutcore/views/toolbar.js
297
297
  - frameworks/sproutcore/views/view.js
298
- - generators/client/client_generator.rb
299
- - generators/client/README
300
- - generators/client/templates/core.js
301
- - generators/client/templates/english.lproj/body.css
302
- - generators/client/templates/english.lproj/body.rhtml
303
- - generators/client/templates/english.lproj/strings.js
304
- - generators/client/templates/main.js
305
- - generators/client/USAGE
306
- - generators/controller/controller_generator.rb
307
- - generators/controller/templates/controller.js
308
- - generators/controller/templates/test.rhtml
309
- - generators/controller/USAGE
310
- - generators/framework/framework_generator.rb
311
- - generators/framework/README
312
- - generators/framework/templates/core.js
313
- - generators/framework/templates/english.lproj/strings.js
314
- - generators/framework/USAGE
315
- - generators/language/language_generator.rb
316
- - generators/language/templates/strings.js
317
- - generators/language/USAGE
318
- - generators/model/model_generator.rb
319
- - generators/model/templates/fixture.js
320
- - generators/model/templates/model.js
321
- - generators/model/templates/test.rhtml
322
- - generators/model/USAGE
323
- - generators/test/templates/test.rhtml
324
- - generators/test/test_generator.rb
325
- - generators/test/USAGE
326
- - generators/view/templates/test.rhtml
327
- - generators/view/templates/view.js
328
- - generators/view/USAGE
329
- - generators/view/view_generator.rb
330
298
  - History.txt
331
299
  - jsdoc/app/DocFile.js
332
300
  - jsdoc/app/Doclet.js
@@ -379,6 +347,38 @@ files:
379
347
  - Rakefile
380
348
  - README.txt
381
349
  - sc-config.rb
350
+ - sc_generators/client/client_generator.rb
351
+ - sc_generators/client/README
352
+ - sc_generators/client/templates/core.js
353
+ - sc_generators/client/templates/english.lproj/body.css
354
+ - sc_generators/client/templates/english.lproj/body.rhtml
355
+ - sc_generators/client/templates/english.lproj/strings.js
356
+ - sc_generators/client/templates/main.js
357
+ - sc_generators/client/USAGE
358
+ - sc_generators/controller/controller_generator.rb
359
+ - sc_generators/controller/templates/controller.js
360
+ - sc_generators/controller/templates/test.rhtml
361
+ - sc_generators/controller/USAGE
362
+ - sc_generators/framework/framework_generator.rb
363
+ - sc_generators/framework/README
364
+ - sc_generators/framework/templates/core.js
365
+ - sc_generators/framework/templates/english.lproj/strings.js
366
+ - sc_generators/framework/USAGE
367
+ - sc_generators/language/language_generator.rb
368
+ - sc_generators/language/templates/strings.js
369
+ - sc_generators/language/USAGE
370
+ - sc_generators/model/model_generator.rb
371
+ - sc_generators/model/templates/fixture.js
372
+ - sc_generators/model/templates/model.js
373
+ - sc_generators/model/templates/test.rhtml
374
+ - sc_generators/model/USAGE
375
+ - sc_generators/test/templates/test.rhtml
376
+ - sc_generators/test/test_generator.rb
377
+ - sc_generators/test/USAGE
378
+ - sc_generators/view/templates/test.rhtml
379
+ - sc_generators/view/templates/view.js
380
+ - sc_generators/view/USAGE
381
+ - sc_generators/view/view_generator.rb
382
382
  - script/destroy
383
383
  - script/generate
384
384
  - script/txt2html