sproutcore 0.9.0
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/History.txt +4 -0
- data/License.txt +20 -0
- data/Manifest.txt +269 -0
- data/README.txt +67 -0
- data/Rakefile +4 -0
- data/app_generators/sproutcore/USAGE +5 -0
- data/app_generators/sproutcore/sproutcore_generator.rb +66 -0
- data/app_generators/sproutcore/templates/README +77 -0
- data/app_generators/sproutcore/templates/environment.yml +4 -0
- data/bin/sc-build +145 -0
- data/bin/sc-gen +24 -0
- data/bin/sc-server +63 -0
- data/bin/sproutcore +21 -0
- data/clients/sc_docs/controllers/docs.js +118 -0
- data/clients/sc_docs/core.js +19 -0
- data/clients/sc_docs/english.lproj/body.css +159 -0
- data/clients/sc_docs/english.lproj/body.rhtml +33 -0
- data/clients/sc_docs/english.lproj/controls.css +0 -0
- data/clients/sc_docs/english.lproj/icons/small/next.png +0 -0
- data/clients/sc_docs/english.lproj/icons/small/reset.png +0 -0
- data/clients/sc_docs/english.lproj/images/gradients.png +0 -0
- data/clients/sc_docs/english.lproj/images/indicator.gif +0 -0
- data/clients/sc_docs/english.lproj/images/toolbar.png +0 -0
- data/clients/sc_docs/english.lproj/no_docs.rhtml +7 -0
- data/clients/sc_docs/english.lproj/strings.js +14 -0
- data/clients/sc_docs/english.lproj/warning.rhtml +6 -0
- data/clients/sc_docs/fixtures/doc.js +11 -0
- data/clients/sc_docs/main.js +21 -0
- data/clients/sc_docs/models/doc.js +9 -0
- data/clients/sc_docs/tests/controllers/docs.rhtml +21 -0
- data/clients/sc_docs/tests/models/doc.rhtml +21 -0
- data/clients/sc_docs/tests/views/doc_frame.rhtml +21 -0
- data/clients/sc_docs/tests/views/doc_label_view.rhtml +21 -0
- data/clients/sc_docs/views/doc_frame.js +33 -0
- data/clients/sc_docs/views/doc_label.js +20 -0
- data/clients/sc_test_runner/controllers/runner.js +175 -0
- data/clients/sc_test_runner/core.js +19 -0
- data/clients/sc_test_runner/english.lproj/body.css +151 -0
- data/clients/sc_test_runner/english.lproj/body.rhtml +35 -0
- data/clients/sc_test_runner/english.lproj/controls.css +0 -0
- data/clients/sc_test_runner/english.lproj/icons/small/next.png +0 -0
- data/clients/sc_test_runner/english.lproj/icons/small/reset.png +0 -0
- data/clients/sc_test_runner/english.lproj/images/gradients.png +0 -0
- data/clients/sc_test_runner/english.lproj/images/indicator.gif +0 -0
- data/clients/sc_test_runner/english.lproj/images/toolbar.png +0 -0
- data/clients/sc_test_runner/english.lproj/no_tests.rhtml +6 -0
- data/clients/sc_test_runner/english.lproj/strings.js +14 -0
- data/clients/sc_test_runner/english.lproj/warning.rhtml +6 -0
- data/clients/sc_test_runner/fixtures/test.js +12 -0
- data/clients/sc_test_runner/main.js +26 -0
- data/clients/sc_test_runner/models/test.js +11 -0
- data/clients/sc_test_runner/views/runner_frame.js +72 -0
- data/clients/sc_test_runner/views/test_label.js +20 -0
- data/config/hoe.rb +70 -0
- data/config/requirements.rb +17 -0
- data/environment.yml +9 -0
- data/frameworks/prototype/prototype.js +4186 -0
- data/frameworks/sproutcore/Core.js +378 -0
- data/frameworks/sproutcore/README +3 -0
- data/frameworks/sproutcore/controllers/array.js +236 -0
- data/frameworks/sproutcore/controllers/collection.js +305 -0
- data/frameworks/sproutcore/controllers/controller.js +323 -0
- data/frameworks/sproutcore/controllers/object.js +372 -0
- data/frameworks/sproutcore/drag/drag.js +549 -0
- data/frameworks/sproutcore/drag/drag_data_source.js +32 -0
- data/frameworks/sproutcore/drag/drag_source.js +64 -0
- data/frameworks/sproutcore/drag/drop_target.js +153 -0
- data/frameworks/sproutcore/english.lproj/blank.gif +0 -0
- data/frameworks/sproutcore/english.lproj/buttons.css +589 -0
- data/frameworks/sproutcore/english.lproj/buttons.png +0 -0
- data/frameworks/sproutcore/english.lproj/inline_text_editor.css +21 -0
- data/frameworks/sproutcore/english.lproj/menu.css +121 -0
- data/frameworks/sproutcore/english.lproj/panels/background-fat.jpg +0 -0
- data/frameworks/sproutcore/english.lproj/panels/background-thin.jpg +0 -0
- data/frameworks/sproutcore/english.lproj/panels/bottom-edge.png +0 -0
- data/frameworks/sproutcore/english.lproj/panels/bottom-left-corner.png +0 -0
- data/frameworks/sproutcore/english.lproj/panels/bottom-right-corner.png +0 -0
- data/frameworks/sproutcore/english.lproj/panels/left-edge.png +0 -0
- data/frameworks/sproutcore/english.lproj/panels/overlay.png +0 -0
- data/frameworks/sproutcore/english.lproj/panels/right-edge.png +0 -0
- data/frameworks/sproutcore/english.lproj/panels/top-edge.png +0 -0
- data/frameworks/sproutcore/english.lproj/panels/top-left-corner.png +0 -0
- data/frameworks/sproutcore/english.lproj/panels/top-right-corner.png +0 -0
- data/frameworks/sproutcore/english.lproj/panes.css +155 -0
- data/frameworks/sproutcore/english.lproj/picker.css +22 -0
- data/frameworks/sproutcore/english.lproj/strings.js +15 -0
- data/frameworks/sproutcore/english.lproj/tab.css +23 -0
- data/frameworks/sproutcore/english.lproj/tests.css +67 -0
- data/frameworks/sproutcore/english.lproj/theme.css +77 -0
- data/frameworks/sproutcore/foundation/animator.js +670 -0
- data/frameworks/sproutcore/foundation/application.js +199 -0
- data/frameworks/sproutcore/foundation/array.js +348 -0
- data/frameworks/sproutcore/foundation/benchmark.js +211 -0
- data/frameworks/sproutcore/foundation/binding.js +384 -0
- data/frameworks/sproutcore/foundation/date.js +357 -0
- data/frameworks/sproutcore/foundation/error.js +39 -0
- data/frameworks/sproutcore/foundation/input_manager.js +153 -0
- data/frameworks/sproutcore/foundation/json.js +296 -0
- data/frameworks/sproutcore/foundation/mock.js +42 -0
- data/frameworks/sproutcore/foundation/node_descriptor.js +56 -0
- data/frameworks/sproutcore/foundation/object.js +777 -0
- data/frameworks/sproutcore/foundation/observable.js +451 -0
- data/frameworks/sproutcore/foundation/page.js +63 -0
- data/frameworks/sproutcore/foundation/path_module.js +413 -0
- data/frameworks/sproutcore/foundation/responder.js +310 -0
- data/frameworks/sproutcore/foundation/routes.js +371 -0
- data/frameworks/sproutcore/foundation/run_loop.js +21 -0
- data/frameworks/sproutcore/foundation/server.js +491 -0
- data/frameworks/sproutcore/foundation/set.js +96 -0
- data/frameworks/sproutcore/foundation/string.js +149 -0
- data/frameworks/sproutcore/foundation/undo_manager.js +186 -0
- data/frameworks/sproutcore/foundation/unittest.js +622 -0
- data/frameworks/sproutcore/foundation/utils.js +61 -0
- data/frameworks/sproutcore/globals/panels.js +182 -0
- data/frameworks/sproutcore/globals/popups.js +60 -0
- data/frameworks/sproutcore/globals/window.js +381 -0
- data/frameworks/sproutcore/lib/index.rhtml +66 -0
- data/frameworks/sproutcore/models/collection.js +395 -0
- data/frameworks/sproutcore/models/record.js +622 -0
- data/frameworks/sproutcore/models/store.js +295 -0
- data/frameworks/sproutcore/panes/dialog.js +16 -0
- data/frameworks/sproutcore/panes/manager.js +164 -0
- data/frameworks/sproutcore/panes/menu.js +45 -0
- data/frameworks/sproutcore/panes/overlay.js +231 -0
- data/frameworks/sproutcore/panes/pane.js +90 -0
- data/frameworks/sproutcore/panes/panel.js +19 -0
- data/frameworks/sproutcore/panes/picker.js +45 -0
- data/frameworks/sproutcore/tests/controllers/array.rhtml +86 -0
- data/frameworks/sproutcore/tests/controllers/controller.rhtml +273 -0
- data/frameworks/sproutcore/tests/controllers/object.rhtml +327 -0
- data/frameworks/sproutcore/tests/foundation/application.rhtml +125 -0
- data/frameworks/sproutcore/tests/foundation/array.rhtml +221 -0
- data/frameworks/sproutcore/tests/foundation/object.rhtml +69 -0
- data/frameworks/sproutcore/tests/globals/window.rhtml +45 -0
- data/frameworks/sproutcore/tests/panes/pane.rhtml +88 -0
- data/frameworks/sproutcore/tests/views/collection.rhtml +137 -0
- data/frameworks/sproutcore/tests/views/popup_button.rhtml +115 -0
- data/frameworks/sproutcore/tests/views/text_field.rhtml +37 -0
- data/frameworks/sproutcore/validators/credit_card.js +92 -0
- data/frameworks/sproutcore/validators/date.js +36 -0
- data/frameworks/sproutcore/validators/email.js +29 -0
- data/frameworks/sproutcore/validators/not_empty.js +24 -0
- data/frameworks/sproutcore/validators/number.js +55 -0
- data/frameworks/sproutcore/validators/password.js +78 -0
- data/frameworks/sproutcore/validators/validator.js +304 -0
- data/frameworks/sproutcore/views/button.js +425 -0
- data/frameworks/sproutcore/views/checkbox_field.js +30 -0
- data/frameworks/sproutcore/views/collection.js +1521 -0
- data/frameworks/sproutcore/views/container.js +62 -0
- data/frameworks/sproutcore/views/error_explanation.js +45 -0
- data/frameworks/sproutcore/views/field.js +214 -0
- data/frameworks/sproutcore/views/filter_button.js +29 -0
- data/frameworks/sproutcore/views/form.js +591 -0
- data/frameworks/sproutcore/views/image.js +141 -0
- data/frameworks/sproutcore/views/inline_text_editor.js +96 -0
- data/frameworks/sproutcore/views/label.js +176 -0
- data/frameworks/sproutcore/views/menu_item.js +90 -0
- data/frameworks/sproutcore/views/pagination.js +54 -0
- data/frameworks/sproutcore/views/popup_button.js +86 -0
- data/frameworks/sproutcore/views/popup_menu.js +137 -0
- data/frameworks/sproutcore/views/progress.js +100 -0
- data/frameworks/sproutcore/views/radio_field.js +107 -0
- data/frameworks/sproutcore/views/radio_group.js +48 -0
- data/frameworks/sproutcore/views/segmented.js +80 -0
- data/frameworks/sproutcore/views/select_field.js +272 -0
- data/frameworks/sproutcore/views/spinner.js +11 -0
- data/frameworks/sproutcore/views/tab.js +126 -0
- data/frameworks/sproutcore/views/text_field.js +179 -0
- data/frameworks/sproutcore/views/textarea_field.js +14 -0
- data/frameworks/sproutcore/views/toolbar.js +29 -0
- data/frameworks/sproutcore/views/view.js +1389 -0
- data/frameworks/sproutcore/views/workspace.js +170 -0
- data/generators/client/README +3 -0
- data/generators/client/USAGE +12 -0
- data/generators/client/client_generator.rb +53 -0
- data/generators/client/templates/core.js +19 -0
- data/generators/client/templates/english.lproj/body.css +0 -0
- data/generators/client/templates/english.lproj/body.rhtml +3 -0
- data/generators/client/templates/english.lproj/controls.css +0 -0
- data/generators/client/templates/english.lproj/strings.js +14 -0
- data/generators/client/templates/main.js +37 -0
- data/generators/controller/USAGE +16 -0
- data/generators/controller/controller_generator.rb +51 -0
- data/generators/controller/templates/controller.js +21 -0
- data/generators/controller/templates/test.rhtml +21 -0
- data/generators/framework/README +7 -0
- data/generators/framework/USAGE +12 -0
- data/generators/framework/framework_generator.rb +53 -0
- data/generators/framework/templates/core.js +20 -0
- data/generators/framework/templates/english.lproj/body.css +0 -0
- data/generators/framework/templates/english.lproj/body.rhtml +3 -0
- data/generators/framework/templates/english.lproj/controls.css +0 -0
- data/generators/framework/templates/english.lproj/strings.js +14 -0
- data/generators/language/USAGE +16 -0
- data/generators/language/language_generator.rb +47 -0
- data/generators/language/templates/strings.js +10 -0
- data/generators/model/USAGE +24 -0
- data/generators/model/model_generator.rb +55 -0
- data/generators/model/templates/fixture.js +11 -0
- data/generators/model/templates/model.js +20 -0
- data/generators/model/templates/test.rhtml +21 -0
- data/generators/test/USAGE +16 -0
- data/generators/test/templates/test.rhtml +21 -0
- data/generators/test/test_generator.rb +47 -0
- data/generators/view/USAGE +16 -0
- data/generators/view/templates/test.rhtml +21 -0
- data/generators/view/templates/view.js +20 -0
- data/generators/view/view_generator.rb +51 -0
- data/jsdoc/README.txt +119 -0
- data/jsdoc/app/DocFile.js +137 -0
- data/jsdoc/app/DocTag.js +110 -0
- data/jsdoc/app/Doclet.js +63 -0
- data/jsdoc/app/Dumper.js +143 -0
- data/jsdoc/app/JsDoc.js +103 -0
- data/jsdoc/app/JsHilite.js +45 -0
- data/jsdoc/app/JsIO.js +163 -0
- data/jsdoc/app/JsParse.js +385 -0
- data/jsdoc/app/JsPlate.js +130 -0
- data/jsdoc/app/JsTestrun.js +129 -0
- data/jsdoc/app/JsToke.js +564 -0
- data/jsdoc/app/Symbol.js +298 -0
- data/jsdoc/app/Transformer.js +14 -0
- data/jsdoc/app/Util.js +97 -0
- data/jsdoc/app/js.jar +0 -0
- data/jsdoc/app/run.js +144 -0
- data/jsdoc/plugins/min.js +316 -0
- data/jsdoc/plugins/strip.js +20 -0
- data/jsdoc/templates/sproutcore/class.tmpl +438 -0
- data/jsdoc/templates/sproutcore/default.css +241 -0
- data/jsdoc/templates/sproutcore/index.html +13 -0
- data/jsdoc/templates/sproutcore/index.tmpl +21 -0
- data/jsdoc/templates/sproutcore/prototype.js +4186 -0
- data/jsdoc/templates/sproutcore/publish.js +236 -0
- data/jsdoc/templates/sproutcore/splash.html +7 -0
- data/lib/sproutcore/build_tools/html_builder.rb +88 -0
- data/lib/sproutcore/build_tools/resource_builder.rb +194 -0
- data/lib/sproutcore/build_tools.rb +44 -0
- data/lib/sproutcore/bundle.rb +517 -0
- data/lib/sproutcore/bundle_manifest.rb +397 -0
- data/lib/sproutcore/generator_helper.rb +170 -0
- data/lib/sproutcore/helpers/capture_helper.rb +42 -0
- data/lib/sproutcore/helpers/static_helper.rb +80 -0
- data/lib/sproutcore/helpers/tag_helper.rb +110 -0
- data/lib/sproutcore/helpers/text_helper.rb +336 -0
- data/lib/sproutcore/helpers.rb +3 -0
- data/lib/sproutcore/jsdoc.rb +40 -0
- data/lib/sproutcore/jsmin.rb +247 -0
- data/lib/sproutcore/library.rb +258 -0
- data/lib/sproutcore/merb/bundle_controller.rb +179 -0
- data/lib/sproutcore/merb/router.rb +43 -0
- data/lib/sproutcore/merb.rb +27 -0
- data/lib/sproutcore/version.rb +9 -0
- data/lib/sproutcore/view_helpers/button_views.rb +302 -0
- data/lib/sproutcore/view_helpers/core_views.rb +284 -0
- data/lib/sproutcore/view_helpers/form_views.rb +258 -0
- data/lib/sproutcore/view_helpers/menu_views.rb +94 -0
- data/lib/sproutcore/view_helpers.rb +628 -0
- data/lib/sproutcore.rb +30 -0
- data/script/destroy +14 -0
- data/script/generate +14 -0
- data/script/txt2html +74 -0
- data/setup.rb +1585 -0
- data/spec/spec.opts +1 -0
- data/spec/spec_helper.rb +7 -0
- data/spec/sproutcore_spec.rb +11 -0
- data/tasks/deployment.rake +34 -0
- data/tasks/environment.rake +7 -0
- data/tasks/rspec.rake +21 -0
- data/tasks/website.rake +17 -0
- metadata +365 -0
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
############################################################
|
|
2
|
+
# FORM VIEW HELPERS
|
|
3
|
+
#
|
|
4
|
+
# These view helpers make it easy to create input forms. You should wrap
|
|
5
|
+
# your form in the form_view tag and include your fields inside.
|
|
6
|
+
#
|
|
7
|
+
|
|
8
|
+
require 'sproutcore/view_helpers/core_views'
|
|
9
|
+
|
|
10
|
+
module SproutCore
|
|
11
|
+
module ViewHelpers
|
|
12
|
+
|
|
13
|
+
# Defines a form view. Note that you can make this form into a panel
|
|
14
|
+
# by passing :panel => true
|
|
15
|
+
view_helper :form_view do
|
|
16
|
+
|
|
17
|
+
property :content
|
|
18
|
+
property :enabled, :key => 'isEnabled'
|
|
19
|
+
property :valid, :key => 'isValid'
|
|
20
|
+
property :commiting, :key => 'isCommitting'
|
|
21
|
+
property :dirty, :key => 'isDirty'
|
|
22
|
+
property :errors
|
|
23
|
+
property :error_count, :key => 'errorCount'
|
|
24
|
+
property :autocommit
|
|
25
|
+
property :prompt, :key => 'commitPrompt'
|
|
26
|
+
view 'SC.FormView'
|
|
27
|
+
|
|
28
|
+
attribute :action, ''
|
|
29
|
+
attribute :method, 'post'
|
|
30
|
+
var :tag, 'form'
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
view_helper :error_explanation_view do
|
|
34
|
+
|
|
35
|
+
# JavaScript
|
|
36
|
+
view 'SC.ErrorExplanationView'
|
|
37
|
+
|
|
38
|
+
# HTML
|
|
39
|
+
var :tag, 'ul'
|
|
40
|
+
css_class_names << 'errors'
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
view_helper :checkbox_field_view do
|
|
44
|
+
|
|
45
|
+
# JavaScript
|
|
46
|
+
property :value
|
|
47
|
+
property :enabled, :key => 'isEnabled'
|
|
48
|
+
view 'SC.CheckboxFieldView'
|
|
49
|
+
|
|
50
|
+
# HTML
|
|
51
|
+
var :tag, 'input'
|
|
52
|
+
var :label
|
|
53
|
+
|
|
54
|
+
attribute :type, 'checkbox'
|
|
55
|
+
attribute :name, @item_id
|
|
56
|
+
|
|
57
|
+
# if a label is passed, then wrap the checkbox in a label tag and
|
|
58
|
+
# place the label text next to it.
|
|
59
|
+
if @label
|
|
60
|
+
content { %(<label><#{@tag} #{attributes} /> <span class="label">#{@label}</span></label>) }
|
|
61
|
+
else
|
|
62
|
+
content { "<#{@tag} #{attributes} />" }
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
# This renders a list of radio buttons.
|
|
67
|
+
#
|
|
68
|
+
# :values => [REQ]
|
|
69
|
+
# Set this to the values you want displayed in the radio buttons. You
|
|
70
|
+
# can pass an array here of strings or symbols, in which case these will
|
|
71
|
+
# be used as the values for the buttons and the names will be created
|
|
72
|
+
# from them. Or you can pass an array of arrays. The first items is
|
|
73
|
+
# the key value, the second item is the human readable value.
|
|
74
|
+
#
|
|
75
|
+
# :layout => :horizontal | :vertical
|
|
76
|
+
# This will write out horizontal or vertical to the CSS class names so
|
|
77
|
+
# you can control the layout of your radio buttons.
|
|
78
|
+
#
|
|
79
|
+
# :width =>
|
|
80
|
+
# This will set the width of each item in the view.
|
|
81
|
+
#
|
|
82
|
+
# BINDABLE OPTIONS
|
|
83
|
+
#
|
|
84
|
+
# :objects =>
|
|
85
|
+
# This can point to a hash of objects which will be used to convert the
|
|
86
|
+
# key values you set into JS objects.
|
|
87
|
+
#
|
|
88
|
+
# :value =>
|
|
89
|
+
# The current value of the radio buttons.
|
|
90
|
+
#
|
|
91
|
+
view_helper :radio_field_view do
|
|
92
|
+
|
|
93
|
+
#JavaScript
|
|
94
|
+
bind :objects
|
|
95
|
+
property :value
|
|
96
|
+
view 'SC.RadioFieldView'
|
|
97
|
+
|
|
98
|
+
# HTML
|
|
99
|
+
|
|
100
|
+
# Get the width styles out of the main style to put into the individual
|
|
101
|
+
# radio items.
|
|
102
|
+
css_styles.flatten!
|
|
103
|
+
@label_styles = css_styles.reject { |p| !(p =~ /width:/) }
|
|
104
|
+
css_styles.reject! { |p| @label_styles.include?(p) }
|
|
105
|
+
|
|
106
|
+
if @label_styles.size > 0
|
|
107
|
+
@label_styles = %( style="#{@label_styles * ' '}" )
|
|
108
|
+
else
|
|
109
|
+
@label_styles = ''
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
# get the layout mode.
|
|
113
|
+
var :layout, :vertical
|
|
114
|
+
css_class_names << 'radio' # default class
|
|
115
|
+
css_class_names << @layout if @layout
|
|
116
|
+
|
|
117
|
+
var :tag, 'div'
|
|
118
|
+
|
|
119
|
+
# generate the inner-html
|
|
120
|
+
var :values
|
|
121
|
+
html = @values.map do | v |
|
|
122
|
+
v = [v].flatten
|
|
123
|
+
key = v.first
|
|
124
|
+
label = (v.size > 1) ? v[1] : key.to_s.humanize
|
|
125
|
+
%(<label><input type="radio" name="#{item_id}" value="#{key}" #{@label_styles} /><span class="label">#{label}</span></label>)
|
|
126
|
+
end
|
|
127
|
+
@inner_html = html * "\n"
|
|
128
|
+
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
view_helper :text_field_view do
|
|
134
|
+
var :tag, 'input'
|
|
135
|
+
|
|
136
|
+
view 'SC.TextFieldView'
|
|
137
|
+
property :field_value
|
|
138
|
+
property :value, :key => :field_value
|
|
139
|
+
property :hint
|
|
140
|
+
property :validate, :key => :validator
|
|
141
|
+
property :label, :key => 'fieldLabel'
|
|
142
|
+
|
|
143
|
+
attribute :size
|
|
144
|
+
attribute :type, 'text'
|
|
145
|
+
attribute :label
|
|
146
|
+
attribute :name
|
|
147
|
+
content { "<#{@tag} #{attributes} />" }
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
view_helper :password_field_view, :extends => :text_field_view do
|
|
151
|
+
attribute :type, 'password'
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
view_helper :text_area_view do
|
|
155
|
+
var :form, false
|
|
156
|
+
var :tag, 'textarea'
|
|
157
|
+
var :value, @inner_html
|
|
158
|
+
|
|
159
|
+
if @form
|
|
160
|
+
view nil
|
|
161
|
+
else
|
|
162
|
+
view 'SC.TextareaFieldView'
|
|
163
|
+
property :field_value
|
|
164
|
+
property :value
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
attribute :cols
|
|
168
|
+
attribute :rows
|
|
169
|
+
attribute :validate
|
|
170
|
+
attribute :label
|
|
171
|
+
attribute :name
|
|
172
|
+
attribute :form, :key => :name
|
|
173
|
+
content { "#{ot}#{@value}#{ct}" }
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
# This view renders a browser-native popup menu.
|
|
177
|
+
#
|
|
178
|
+
# :field =>
|
|
179
|
+
# pass a name to make this part of the enclosing form.
|
|
180
|
+
#
|
|
181
|
+
# :options =>
|
|
182
|
+
# This will statically generate the HTML for the options menu. The
|
|
183
|
+
# value of this property should be an array of items containing strings
|
|
184
|
+
# or symbols, which will form both the item names and values or you can
|
|
185
|
+
# pass an array of arrays. The first item should be the value of the
|
|
186
|
+
# object, then second item should be the name of the menu.
|
|
187
|
+
#
|
|
188
|
+
# Note that if you bind to the :objects property, then that binding
|
|
189
|
+
# will override this code.
|
|
190
|
+
#
|
|
191
|
+
# :name_key =>
|
|
192
|
+
# Specifies the key to use to get the name of a menu item from the
|
|
193
|
+
# array of objects. This is only used if the menu items are generated
|
|
194
|
+
# dynamically.
|
|
195
|
+
#
|
|
196
|
+
# :sort_key =>
|
|
197
|
+
# Optional sort key to use to order the menu. If the sort key is not
|
|
198
|
+
# passed, the name of the menu items will be used. This is only used
|
|
199
|
+
# if the menu items are generated dynamically.
|
|
200
|
+
#
|
|
201
|
+
# :value_key =>
|
|
202
|
+
# Optional key used to get the value for each menu item from the
|
|
203
|
+
# array of objects. Only used if the menu items are generated
|
|
204
|
+
# dynamically.
|
|
205
|
+
#
|
|
206
|
+
# :empty =>
|
|
207
|
+
# Optional. Pass the string name of the "Empty" menu item. This item
|
|
208
|
+
# will appear at the top of the menu and its value will be a null
|
|
209
|
+
# object. The value you pass here will be localized by default. Only
|
|
210
|
+
# used if the menu items are generated dynamically.
|
|
211
|
+
#
|
|
212
|
+
# :localize =>
|
|
213
|
+
# Optional. If true, the names of the menu items and the empty menu
|
|
214
|
+
# item will be passed through the localization system. Defaults to
|
|
215
|
+
# false.
|
|
216
|
+
#
|
|
217
|
+
# :validator =>
|
|
218
|
+
# Optional. Pass the name of a validator and it will be used for this
|
|
219
|
+
# control.
|
|
220
|
+
#
|
|
221
|
+
# BINDABLE PROPERTIES
|
|
222
|
+
#
|
|
223
|
+
# :objects =>
|
|
224
|
+
# bind to an array of objects used to generate the menu item. This will
|
|
225
|
+
# override any hard-coded options you pass through the :options param.
|
|
226
|
+
#
|
|
227
|
+
# :value =>
|
|
228
|
+
# bind to the current value to show in the pop-up menu.
|
|
229
|
+
#
|
|
230
|
+
# :enabled =>
|
|
231
|
+
# bind or pass to set the control to enabled or disabled.
|
|
232
|
+
#
|
|
233
|
+
view_helper :select_field_view do
|
|
234
|
+
# JavaScript
|
|
235
|
+
property :name_key
|
|
236
|
+
property :sort_key
|
|
237
|
+
property :value_key
|
|
238
|
+
property :empty, :key => 'emptyName'
|
|
239
|
+
property :enabled, :key => 'isEnabled'
|
|
240
|
+
bind :objects
|
|
241
|
+
view 'SC.SelectFieldView'
|
|
242
|
+
|
|
243
|
+
# HTML
|
|
244
|
+
var :tag, 'select'
|
|
245
|
+
var :options
|
|
246
|
+
if @options
|
|
247
|
+
html = @options.map do |opt|
|
|
248
|
+
opt = [opt].flatten
|
|
249
|
+
key = opt.first
|
|
250
|
+
name = (opt.size > 1) ? opt[1] : key.to_s.titleize
|
|
251
|
+
%(<option value="#{key}">#{name}</option>)
|
|
252
|
+
end
|
|
253
|
+
@inner_html = html * "\n"
|
|
254
|
+
end
|
|
255
|
+
end
|
|
256
|
+
|
|
257
|
+
end
|
|
258
|
+
end
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
############################################################
|
|
2
|
+
# MENU VIEW HELPERS
|
|
3
|
+
#
|
|
4
|
+
# The view helpers defined in this file help you create popup menus. You can
|
|
5
|
+
# define a menu in your RHTML helper to be used somewhere else with code like
|
|
6
|
+
# this:
|
|
7
|
+
#
|
|
8
|
+
|
|
9
|
+
# This is the quick way to define a menu item. Use this approach if you just
|
|
10
|
+
# want to create a menu with item names and perform an action:
|
|
11
|
+
#
|
|
12
|
+
# <% menu_view :action_menu, :validate=>'My.controller.validate' do |m| %>
|
|
13
|
+
# <%= m.item :item_1, 'Item 1', :action => 'doSomething' %>
|
|
14
|
+
# <%= m.separator_item %>
|
|
15
|
+
# <%= m.item :item_2, 'Item 2', :action => 'doAnother Thing' %>
|
|
16
|
+
# <% end %>
|
|
17
|
+
#
|
|
18
|
+
require 'sproutcore/view_helpers/core_views'
|
|
19
|
+
require 'sproutcore/view_helpers/button_views'
|
|
20
|
+
|
|
21
|
+
module SproutCore
|
|
22
|
+
module ViewHelpers
|
|
23
|
+
|
|
24
|
+
# This will create a popup menu. You should define internal outlets
|
|
25
|
+
# for the menu items. More options to follow.
|
|
26
|
+
view_helper :popup_menu_view do
|
|
27
|
+
var :tag, 'ul'
|
|
28
|
+
view 'SC.PopupMenuView'
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# Creates a menu item view. Normally you don't want to create these
|
|
32
|
+
# directly. Instead use the menu_view helpers.
|
|
33
|
+
#
|
|
34
|
+
# OPTIONS:
|
|
35
|
+
# :action =>
|
|
36
|
+
# The action to invoke when the menu item is selected.
|
|
37
|
+
#
|
|
38
|
+
# :label =>
|
|
39
|
+
# The label for the menu item.
|
|
40
|
+
#
|
|
41
|
+
# :icon =>
|
|
42
|
+
# The icon for the menu item. No icon will show if this is not set.
|
|
43
|
+
#
|
|
44
|
+
# :shortcut =>
|
|
45
|
+
# The shortcut key for this menu item. Shortcuts are only active when
|
|
46
|
+
# the anchorview the popup menu is attached to is part of the in-focus
|
|
47
|
+
# pane. Shortcuts should be named in the standard input manager
|
|
48
|
+
# syntax like this: alt_ctrl_shift_k (for Alt-Ctrl-Shift-K)
|
|
49
|
+
#
|
|
50
|
+
# Note that on the web, Cmd (on the Mac) and Ctrl are equivalent.
|
|
51
|
+
# Always use ctrl when defining shortcuts.
|
|
52
|
+
#
|
|
53
|
+
# :enabled (bindable) =>
|
|
54
|
+
# Determines if the menu item will be enabled or not. This is generally
|
|
55
|
+
# handled by your validate method or through bindings.
|
|
56
|
+
#
|
|
57
|
+
# :selected (bindable) =>
|
|
58
|
+
# Determines if the menu item is selected or not. May also be a mixed
|
|
59
|
+
# state. This is generally handled by your validate method or through
|
|
60
|
+
# bindings.
|
|
61
|
+
#
|
|
62
|
+
# :alt =>
|
|
63
|
+
# name another item in this menu that is the alternate form of the
|
|
64
|
+
# receiver. If the alt item is enabled, this one will be hidden and
|
|
65
|
+
# visa versa.
|
|
66
|
+
#
|
|
67
|
+
view_helper :menu_item_view, :extends => :button_view do
|
|
68
|
+
|
|
69
|
+
# JavaScript
|
|
70
|
+
view 'SC.MenuItemView'
|
|
71
|
+
|
|
72
|
+
# HTML
|
|
73
|
+
var :tag, 'li'
|
|
74
|
+
var(:shortcut) { |sc| sc.split('_').map { |x| x.capitalize } * '-' }
|
|
75
|
+
css_class_names << 'menu-item'
|
|
76
|
+
|
|
77
|
+
@my_href = @href || 'javascript:;'
|
|
78
|
+
@href = nil
|
|
79
|
+
@inner_html = [
|
|
80
|
+
%(<a href="#{@my_href}">),
|
|
81
|
+
'<span class="sel">✓</span>',
|
|
82
|
+
'<span class="mixed">-</span>',
|
|
83
|
+
'<span class="inner">',
|
|
84
|
+
@image,
|
|
85
|
+
%(<span class="label">#{@label}</span>),
|
|
86
|
+
'</span>',
|
|
87
|
+
%(<span class="shortcut">#{@shortcut}</span>),
|
|
88
|
+
'</a>'
|
|
89
|
+
] * ''
|
|
90
|
+
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
end
|
|
94
|
+
end
|