sproutcore 0.9.13 → 0.9.14
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 +19 -0
- data/Manifest.txt +103 -26
- data/app_generators/sproutcore/templates/README +1 -1
- data/bin/sc-build +1 -1
- data/bin/sc-gen +0 -0
- data/bin/sc-ide +278 -0
- data/bin/sc-init +38 -0
- data/bin/sc-install +96 -0
- data/bin/sc-remove +94 -0
- data/bin/sc-server +4 -0
- data/bin/sc-update +94 -0
- data/bin/sproutcore +3 -14
- data/clients/sc_docs/controllers/docs.js +1 -1
- data/clients/sc_docs/models/doc.js +6 -0
- data/clients/sc_docs/views/doc_frame.js +1 -1
- 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/frameworks/sproutcore/HISTORY +34 -2
- data/frameworks/sproutcore/controllers/array.js +1 -1
- data/frameworks/sproutcore/controllers/controller.js +1 -1
- data/frameworks/sproutcore/controllers/object.js +9 -6
- data/frameworks/sproutcore/core.js +19 -4
- data/frameworks/sproutcore/english.lproj/blank.gif +0 -0
- data/frameworks/sproutcore/english.lproj/core.css +1 -0
- data/frameworks/sproutcore/english.lproj/menu.css +1 -0
- data/frameworks/sproutcore/foundation/application.js +3 -3
- data/frameworks/sproutcore/foundation/benchmark.js +1 -1
- data/frameworks/sproutcore/foundation/node_descriptor.js +13 -1
- data/frameworks/sproutcore/foundation/page.js +3 -2
- data/frameworks/sproutcore/foundation/path_module.js +33 -16
- data/frameworks/sproutcore/foundation/run_loop.js +1 -1
- data/frameworks/sproutcore/foundation/server.js +68 -18
- data/frameworks/sproutcore/foundation/string.js +1 -1
- data/frameworks/sproutcore/globals/window.js +62 -15
- data/frameworks/sproutcore/lib/core_views.rb +1 -0
- data/frameworks/sproutcore/lib/index.rhtml +4 -3
- data/frameworks/sproutcore/lib/menu_views.rb +2 -2
- data/frameworks/sproutcore/models/collection.js +122 -107
- data/frameworks/sproutcore/models/record.js +2 -2
- data/frameworks/sproutcore/panes/manager.js +1 -1
- data/frameworks/sproutcore/panes/overlay.js +3 -3
- data/frameworks/sproutcore/tests/controllers/object.rhtml +26 -0
- data/frameworks/sproutcore/tests/views/collection/incremental_rendering.rhtml +2 -2
- data/frameworks/sproutcore/views/button/disclosure.js +1 -1
- data/frameworks/sproutcore/views/collection/collection.js +19 -15
- data/frameworks/sproutcore/views/collection/source_list.js +1 -1
- data/frameworks/sproutcore/views/collection/table.js +2 -2
- data/frameworks/sproutcore/views/error_explanation.js +1 -1
- data/frameworks/sproutcore/views/field/checkbox_field.js +1 -1
- data/frameworks/sproutcore/views/field/field.js +1 -1
- data/frameworks/sproutcore/views/field/radio_field.js +1 -1
- data/frameworks/sproutcore/views/field/select_field.js +1 -1
- data/frameworks/sproutcore/views/form.js +1 -1
- data/frameworks/sproutcore/views/image.js +1 -1
- data/frameworks/sproutcore/views/menu_item.js +1 -1
- data/frameworks/sproutcore/views/popup_button.js +1 -1
- data/frameworks/sproutcore/views/popup_menu.js +1 -1
- data/frameworks/sproutcore/views/progress.js +4 -2
- data/frameworks/sproutcore/views/radio_group.js +1 -1
- data/frameworks/sproutcore/views/scroll.js +1 -1
- data/frameworks/sproutcore/views/source_list_group.js +1 -1
- data/frameworks/sproutcore/views/split.js +1 -1
- data/frameworks/sproutcore/views/tab.js +3 -1
- data/frameworks/sproutcore/views/view.js +19 -3
- data/jsdoc/README.txt +89 -57
- data/jsdoc/app/frame/Chain.js +102 -0
- data/jsdoc/app/frame/Dumper.js +144 -0
- data/jsdoc/app/frame/Hash.js +47 -0
- data/jsdoc/app/frame/Link.js +142 -0
- data/jsdoc/app/frame/Namespace.js +10 -0
- data/jsdoc/app/frame/Opt.js +134 -0
- data/jsdoc/app/frame/Reflection.js +26 -0
- data/jsdoc/app/frame/String.js +93 -0
- data/jsdoc/app/frame/Testrun.js +129 -0
- data/jsdoc/app/frame.js +33 -0
- data/jsdoc/app/handlers/FOODOC.js +26 -0
- data/jsdoc/app/handlers/XMLDOC/DomReader.js +159 -0
- data/jsdoc/app/handlers/XMLDOC/XMLDoc.js +16 -0
- data/jsdoc/app/handlers/XMLDOC/XMLParse.js +292 -0
- data/jsdoc/app/handlers/XMLDOC.js +26 -0
- data/jsdoc/app/lib/JSDOC/DocComment.js +200 -0
- data/jsdoc/app/lib/JSDOC/DocTag.js +294 -0
- data/jsdoc/app/lib/JSDOC/JsDoc.js +180 -0
- data/jsdoc/app/lib/JSDOC/JsPlate.js +100 -0
- data/jsdoc/app/lib/JSDOC/Lang.js +144 -0
- data/jsdoc/app/lib/JSDOC/Parser.js +109 -0
- data/jsdoc/app/lib/JSDOC/PluginManager.js +33 -0
- data/jsdoc/app/lib/JSDOC/Symbol.js +600 -0
- data/jsdoc/app/lib/JSDOC/SymbolSet.js +220 -0
- data/jsdoc/app/lib/JSDOC/TextStream.js +41 -0
- data/jsdoc/app/lib/JSDOC/Token.js +18 -0
- data/jsdoc/app/lib/JSDOC/TokenReader.js +323 -0
- data/jsdoc/app/lib/JSDOC/TokenStream.js +133 -0
- data/jsdoc/app/lib/JSDOC/Util.js +32 -0
- data/jsdoc/app/lib/JSDOC/Walker.js +416 -0
- data/jsdoc/app/lib/JSDOC.js +97 -0
- data/jsdoc/app/main.js +74 -0
- data/jsdoc/app/plugins/commentSrcJson.js +19 -0
- data/jsdoc/app/plugins/frameworkPrototype.js +16 -0
- data/jsdoc/app/plugins/functionCall.js +10 -0
- data/jsdoc/app/plugins/publishSrcHilite.js +62 -0
- data/jsdoc/app/plugins/sproutcoreTags.js +26 -0
- data/jsdoc/app/plugins/symbolLink.js +9 -0
- data/jsdoc/app/plugins/tagParamConfig.js +31 -0
- data/jsdoc/app/plugins/tagSynonyms.js +43 -0
- data/jsdoc/app/run.js +339 -137
- data/jsdoc/changes.txt +47 -0
- data/jsdoc/conf/sample.conf +31 -0
- data/jsdoc/java/build.xml +36 -0
- data/jsdoc/java/build_1.4.xml +36 -0
- data/jsdoc/java/classes/js.jar +0 -0
- data/jsdoc/java/src/JsDebugRun.java +21 -0
- data/jsdoc/java/src/JsRun.java +21 -0
- data/jsdoc/jsdebug.jar +0 -0
- data/jsdoc/jsrun.jar +0 -0
- data/jsdoc/t/TestDoc.js +144 -0
- data/jsdoc/t/runner.js +13 -0
- data/jsdoc/templates/sproutcore/allclasses.tmpl +17 -0
- data/jsdoc/templates/sproutcore/allfiles.tmpl +56 -0
- data/jsdoc/templates/sproutcore/class.tmpl +408 -326
- data/jsdoc/templates/sproutcore/index.tmpl +30 -31
- data/jsdoc/templates/sproutcore/publish.js +173 -81
- data/jsdoc/templates/sproutcore/static/default.css +191 -0
- data/jsdoc/templates/sproutcore/static/header.html +2 -0
- data/jsdoc/templates/sproutcore/static/index.html +19 -0
- data/jsdoc/templates/sproutcore/symbol.tmpl +35 -0
- data/jsdoc/test/addon.js +24 -0
- data/jsdoc/test/anon_inner.js +14 -0
- data/jsdoc/test/augments.js +31 -0
- data/jsdoc/test/augments2.js +26 -0
- data/jsdoc/test/borrows.js +41 -0
- data/jsdoc/test/borrows2.js +23 -0
- data/jsdoc/test/config.js +22 -0
- data/jsdoc/test/constructs.js +18 -0
- data/jsdoc/test/encoding.js +10 -0
- data/jsdoc/test/encoding_other.js +12 -0
- data/jsdoc/test/functions_anon.js +39 -0
- data/jsdoc/test/functions_nested.js +33 -0
- data/jsdoc/test/global.js +13 -0
- data/jsdoc/test/globals.js +25 -0
- data/jsdoc/test/ignore.js +10 -0
- data/jsdoc/test/inner.js +16 -0
- data/jsdoc/test/jsdoc_test.js +477 -0
- data/jsdoc/test/lend.js +33 -0
- data/jsdoc/test/memberof.js +20 -0
- data/jsdoc/test/memberof_constructor.js +15 -0
- data/jsdoc/test/name.js +19 -0
- data/jsdoc/test/namespace_nested.js +23 -0
- data/jsdoc/test/nocode.js +13 -0
- data/jsdoc/test/oblit_anon.js +20 -0
- data/jsdoc/test/overview.js +20 -0
- data/jsdoc/test/param_inline.js +37 -0
- data/jsdoc/test/params_optional.js +8 -0
- data/jsdoc/test/prototype.js +17 -0
- data/jsdoc/test/prototype_nested.js +9 -0
- data/jsdoc/test/prototype_oblit.js +13 -0
- data/jsdoc/test/prototype_oblit_constructor.js +24 -0
- data/jsdoc/test/public.js +10 -0
- data/jsdoc/test/shared.js +42 -0
- data/jsdoc/test/shared2.js +2 -0
- data/jsdoc/test/shortcuts.js +22 -0
- data/jsdoc/test/static_this.js +13 -0
- data/jsdoc/test/synonyms.js +23 -0
- data/jsdoc/test/tosource.js +23 -0
- data/jsdoc/test/variable_redefine.js +14 -0
- data/jsdoc/test.js +304 -0
- data/lib/sproutcore/build_tools/resource_builder.rb +6 -1
- data/lib/sproutcore/bundle_installer.rb +268 -0
- data/lib/sproutcore/jsdoc.rb +7 -6
- data/lib/sproutcore/library.rb +38 -0
- data/lib/sproutcore/merb/bundle_controller.rb +8 -4
- data/lib/sproutcore/version.rb +1 -1
- data/lib/sproutcore.rb +1 -1
- data/script/destroy +0 -0
- data/script/generate +0 -0
- data/script/txt2html +0 -0
- metadata +117 -29
- data/clients/view_builder/core.js +0 -19
- data/clients/view_builder/english.lproj/body.css +0 -149
- data/clients/view_builder/english.lproj/body.rhtml +0 -18
- data/clients/view_builder/english.lproj/strings.js +0 -14
- data/clients/view_builder/main.js +0 -37
- data/jsdoc/app/DocFile.js +0 -137
- data/jsdoc/app/DocTag.js +0 -110
- data/jsdoc/app/Doclet.js +0 -63
- data/jsdoc/app/Dumper.js +0 -143
- data/jsdoc/app/JsDoc.js +0 -103
- data/jsdoc/app/JsHilite.js +0 -45
- data/jsdoc/app/JsIO.js +0 -163
- data/jsdoc/app/JsParse.js +0 -385
- data/jsdoc/app/JsPlate.js +0 -130
- data/jsdoc/app/JsTestrun.js +0 -129
- data/jsdoc/app/JsToke.js +0 -564
- data/jsdoc/app/Symbol.js +0 -298
- data/jsdoc/app/Transformer.js +0 -14
- data/jsdoc/app/Util.js +0 -97
- data/jsdoc/app/js.jar +0 -0
- data/jsdoc/plugins/min.js +0 -316
- data/jsdoc/plugins/strip.js +0 -20
- data/jsdoc/templates/sproutcore/default.css +0 -191
- data/jsdoc/templates/sproutcore/index.html +0 -13
- data/jsdoc/templates/sproutcore/prototype.js +0 -4186
- data/jsdoc/templates/sproutcore/splash.html +0 -7
data/bin/sc-remove
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
# REMOVES A SPROUTCORE BUNDLE
|
|
4
|
+
# This script will attempt to update installed framework and application
|
|
5
|
+
# bundles from github. If the framework or application is not already
|
|
6
|
+
# installed, it will attempt to install it.
|
|
7
|
+
#
|
|
8
|
+
# Usage:
|
|
9
|
+
# sc-remove owner-projectname
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
APP_ROOT = File.expand_path(Dir.pwd)
|
|
13
|
+
SC_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
|
|
14
|
+
$:.unshift File.join(SC_ROOT,'lib') ;
|
|
15
|
+
|
|
16
|
+
# Set String encoding to Unicode
|
|
17
|
+
$KCODE = 'u'
|
|
18
|
+
|
|
19
|
+
# Require SproutCore
|
|
20
|
+
require 'rubygems'
|
|
21
|
+
require 'rubigen'
|
|
22
|
+
require 'sproutcore'
|
|
23
|
+
require 'optparse'
|
|
24
|
+
|
|
25
|
+
############################################################
|
|
26
|
+
## Define Helper Methods
|
|
27
|
+
##
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
############################################################
|
|
31
|
+
## Process Options
|
|
32
|
+
##
|
|
33
|
+
|
|
34
|
+
# Process options
|
|
35
|
+
bundle_name = ARGV.shift if (ARGV.size > 0 && ARGV[0][0..0] != '-')
|
|
36
|
+
options = {
|
|
37
|
+
:verbose => false,
|
|
38
|
+
:library_root => APP_ROOT,
|
|
39
|
+
:can_install => false # Ignore install-related options.
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
opts = OptionParser.new do |opts|
|
|
43
|
+
opts.version = SproutCore::VERSION::STRING
|
|
44
|
+
|
|
45
|
+
opts.banner = "Usage: sc-update {bundle-name} {options}"
|
|
46
|
+
opts.define_head "Remotely update JavaScript bundles from Github and other sources"
|
|
47
|
+
opts.separator ''
|
|
48
|
+
opts.separator '*'*80
|
|
49
|
+
opts.separator 'If no flags are given, sc-update will attempt to update the named bundle from'
|
|
50
|
+
opts.separator 'github into the local project.'
|
|
51
|
+
opts.separator '*'*80
|
|
52
|
+
|
|
53
|
+
SC::BundleInstaller.configure_tool_options(opts, options)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
begin
|
|
57
|
+
opts.parse!
|
|
58
|
+
rescue Exception => e
|
|
59
|
+
puts opts
|
|
60
|
+
puts e
|
|
61
|
+
exit(1)
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
############################################################
|
|
65
|
+
## SETUP ENVIRONMENT
|
|
66
|
+
##
|
|
67
|
+
|
|
68
|
+
# Configure logger
|
|
69
|
+
SC.logger.level = (options[:verbose]) ? Logger::DEBUG : Logger::INFO
|
|
70
|
+
SC.logger.progname = $0
|
|
71
|
+
SC.logger.info("sc-remove v#{SproutCore::VERSION::STRING}")
|
|
72
|
+
|
|
73
|
+
# Confirm various safety settings
|
|
74
|
+
SC.logger.info(" ~ Verbose logging enabled") if options[:verbose]
|
|
75
|
+
SC.logger.info(" ~ Dry run mode - no change will be made") if options[:dry_run]
|
|
76
|
+
|
|
77
|
+
# Load Library
|
|
78
|
+
library = SC.library_for(options[:library_root])
|
|
79
|
+
|
|
80
|
+
############################################################
|
|
81
|
+
## PERFORM THE INSTALL
|
|
82
|
+
##
|
|
83
|
+
|
|
84
|
+
if bundle_name.nil?
|
|
85
|
+
puts opts
|
|
86
|
+
SC.logger.fatal("A bundle name is required.")
|
|
87
|
+
exit(1)
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
library.remove_bundle(bundle_name, options)
|
|
91
|
+
SC.logger.debug("")
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
|
data/bin/sc-server
CHANGED
data/bin/sc-update
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
# UPDATES A SPROUTCORE BUNDLE
|
|
4
|
+
# This script will attempt to update installed framework and application
|
|
5
|
+
# bundles from github. If the framework or application is not already
|
|
6
|
+
# installed, it will attempt to install it.
|
|
7
|
+
#
|
|
8
|
+
# Usage:
|
|
9
|
+
# sc-update owner-projectname
|
|
10
|
+
#
|
|
11
|
+
# You can also pass the standard install options for sc-install:
|
|
12
|
+
# sc-update owner-projectname --source=sproutit/sproutcore-samples
|
|
13
|
+
# sc-update owner-projectname --method=zip
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
APP_ROOT = File.expand_path(Dir.pwd)
|
|
17
|
+
SC_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
|
|
18
|
+
$:.unshift File.join(SC_ROOT,'lib') ;
|
|
19
|
+
|
|
20
|
+
# Set String encoding to Unicode
|
|
21
|
+
$KCODE = 'u'
|
|
22
|
+
|
|
23
|
+
# Require SproutCore
|
|
24
|
+
require 'rubygems'
|
|
25
|
+
require 'rubigen'
|
|
26
|
+
require 'sproutcore'
|
|
27
|
+
require 'optparse'
|
|
28
|
+
|
|
29
|
+
############################################################
|
|
30
|
+
## Define Helper Methods
|
|
31
|
+
##
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
############################################################
|
|
35
|
+
## Process Options
|
|
36
|
+
##
|
|
37
|
+
|
|
38
|
+
# Process options
|
|
39
|
+
bundle_name = ARGV.shift if (ARGV.size > 0 && ARGV[0][0..0] != '-')
|
|
40
|
+
options = { :verbose => false, :library_root => APP_ROOT }
|
|
41
|
+
|
|
42
|
+
opts = OptionParser.new do |opts|
|
|
43
|
+
opts.version = SproutCore::VERSION::STRING
|
|
44
|
+
|
|
45
|
+
opts.banner = "Usage: sc-update {bundle-name} {options}"
|
|
46
|
+
opts.define_head "Remotely update JavaScript bundles from Github and other sources"
|
|
47
|
+
opts.separator ''
|
|
48
|
+
opts.separator '*'*80
|
|
49
|
+
opts.separator 'If no flags are given, sc-update will attempt to update the named bundle from'
|
|
50
|
+
opts.separator 'github into the local project.'
|
|
51
|
+
opts.separator '*'*80
|
|
52
|
+
|
|
53
|
+
SC::BundleInstaller.configure_tool_options(opts, options)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
begin
|
|
57
|
+
opts.parse!
|
|
58
|
+
rescue Exception => e
|
|
59
|
+
puts opts
|
|
60
|
+
puts e
|
|
61
|
+
exit(1)
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
############################################################
|
|
65
|
+
## SETUP ENVIRONMENT
|
|
66
|
+
##
|
|
67
|
+
|
|
68
|
+
# Configure logger
|
|
69
|
+
SC.logger.level = (options[:verbose]) ? Logger::DEBUG : Logger::INFO
|
|
70
|
+
SC.logger.progname = $0
|
|
71
|
+
SC.logger.info("sc-update v#{SproutCore::VERSION::STRING}")
|
|
72
|
+
|
|
73
|
+
# Confirm various safety settings
|
|
74
|
+
SC.logger.info(" ~ Verbose logging enabled") if options[:verbose]
|
|
75
|
+
SC.logger.info(" ~ Dry run mode - no change will be made") if options[:dry_run]
|
|
76
|
+
|
|
77
|
+
# Load Library
|
|
78
|
+
library = SC.library_for(options[:library_root])
|
|
79
|
+
|
|
80
|
+
############################################################
|
|
81
|
+
## PERFORM THE INSTALL
|
|
82
|
+
##
|
|
83
|
+
|
|
84
|
+
if bundle_name.nil?
|
|
85
|
+
puts opts
|
|
86
|
+
SC.logger.fatal("A bundle name is required.")
|
|
87
|
+
exit(1)
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
library.update_bundle(bundle_name, options)
|
|
91
|
+
SC.logger.debug("")
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
|
data/bin/sproutcore
CHANGED
|
@@ -16,20 +16,6 @@ if %w(-v --version).include? ARGV.first
|
|
|
16
16
|
exit(0)
|
|
17
17
|
end
|
|
18
18
|
|
|
19
|
-
if ARGV.first == 'freeze:edge'
|
|
20
|
-
puts "Freezing SproutCore edge..."
|
|
21
|
-
FileUtils.mkdir_p('frameworks')
|
|
22
|
-
['sproutcore'].each do |framework|
|
|
23
|
-
if File.exists?(File.join('frameworks', framework, '.svn'))
|
|
24
|
-
puts `svn up #{File.join('frameworks',framework)}`
|
|
25
|
-
else
|
|
26
|
-
puts `svn co http://sproutcore.googlecode.com/svn/trunk/frameworks/#{framework} #{File.join('frameworks', framework)}`
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
exit(0)
|
|
31
|
-
end
|
|
32
|
-
|
|
33
19
|
require 'rubigen/scripts/generate'
|
|
34
20
|
source = RubiGen::PathSource.new(:application,
|
|
35
21
|
File.join(File.dirname(__FILE__), "../app_generators"))
|
|
@@ -37,3 +23,6 @@ RubiGen::Base.reset_sources
|
|
|
37
23
|
RubiGen::Base.append_sources source
|
|
38
24
|
RubiGen::Base.use_component_sources! [:sc, :app]
|
|
39
25
|
RubiGen::Scripts::Generate.new.run(ARGV, :generator => 'sproutcore')
|
|
26
|
+
|
|
27
|
+
puts "\n\nWARNING: This command will change in the near future.\nPlease use 'sc-init' instead of 'sproutcore' to create new project libraries.\n\n"
|
|
28
|
+
|
|
@@ -51,7 +51,7 @@ Docs.docsController = SC.Object.create({
|
|
|
51
51
|
var clientRoot = this.get('clientRoot') ;
|
|
52
52
|
clientRoot = clientRoot.replace(new RegExp("^%@/?".fmt(window.indexPrefix)), window.urlPrefix + '/');
|
|
53
53
|
console.log('clientName: '+ clientRoot) ;
|
|
54
|
-
Docs.server.request(clientRoot, ['data','classes.js'].join('/'), null, {
|
|
54
|
+
Docs.server.request(clientRoot, ['data',('classes.js?'+ Math.random())].join('/'), null, {
|
|
55
55
|
onSuccess: this._reloadSuccess.bind(this),
|
|
56
56
|
onFailure: this._reloadFailure.bind(this)
|
|
57
57
|
}) ;
|
|
@@ -13,7 +13,7 @@ Docs.DocFrameView = SC.View.extend({
|
|
|
13
13
|
var doc = this.get('doc') ;
|
|
14
14
|
var url = (doc) ? doc.get('url') : '' ;
|
|
15
15
|
if (url.length > 0) {
|
|
16
|
-
url = "/%@/%@/-docs/data/%@".fmt(window.urlPrefix,Docs.docsController.get('clientName'), url) ;
|
|
16
|
+
url = "/%@/%@/-docs/data/symbols/%@".fmt(window.urlPrefix,Docs.docsController.get('clientName'), url) ;
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
// make sure we clear out the old document settings if needed.
|
|
File without changes
|
|
File without changes
|
|
@@ -1,3 +1,37 @@
|
|
|
1
|
+
== sproutcore 0.9.14
|
|
2
|
+
|
|
3
|
+
- Fixed bug in SC.SourceListView that could incorrectly hide groups. Closes #57. (Thanks mguymon)
|
|
4
|
+
|
|
5
|
+
- Fixed bug in SC.ObjectController that would sometimes not commit all pending
|
|
6
|
+
changes because the model object would clear the changes hash. Also a test
|
|
7
|
+
for this was added. Closes #66. (Thanks YoNoSoyTu!)
|
|
8
|
+
|
|
9
|
+
- default index.html now has text/javascript added to script tags. Closes #71
|
|
10
|
+
- server.js now handles namespaced prefixes. Closes #74
|
|
11
|
+
|
|
12
|
+
- label_view now defaults to the span tag. Closes #75. (Thanks Erich!)
|
|
13
|
+
|
|
14
|
+
- Added support for posting data in both URL-encoded and JSON formats via
|
|
15
|
+
SC.server. This makes for a much cleaner round-trip. To use this, set the
|
|
16
|
+
postFormat: property to SC.JSON_FORMAT in SC.server. Closes #49.
|
|
17
|
+
(Thanks Mauris Lamers!)
|
|
18
|
+
|
|
19
|
+
- The newRecord property is now set to false once a record has been
|
|
20
|
+
successfully sent back to the server. A new internal property tracks when
|
|
21
|
+
you are waiting on a record to be created on the server and refuses to
|
|
22
|
+
submit it a second time. Closes #81 (Thanks Gareth!)
|
|
23
|
+
|
|
24
|
+
- All internal calls for arguments.callee.base.apply() have now been switched
|
|
25
|
+
to sc_super(). This means you MUST use version 0.9.13 or later of the build
|
|
26
|
+
tools to work with the javascript.
|
|
27
|
+
|
|
28
|
+
- Fixed a memory leak in IE that was caused by a self-reference to document.
|
|
29
|
+
(Thanks Juan)
|
|
30
|
+
|
|
31
|
+
- Improved documentation for a variety of classes. (Thanks gskluzacek)
|
|
32
|
+
|
|
33
|
+
- SC.Server can now handled nested Server prefixes in case you have
|
|
34
|
+
multi-level namespaces.
|
|
1
35
|
|
|
2
36
|
== sproutcore 0.9.12
|
|
3
37
|
|
|
@@ -91,7 +125,6 @@ value. This makes it possible to do method chaining.
|
|
|
91
125
|
|
|
92
126
|
- Properly order drop targets so that nested targets appear first.
|
|
93
127
|
|
|
94
|
-
|
|
95
128
|
== 0.9.8
|
|
96
129
|
|
|
97
130
|
* [FIX] collection views now update group views appropriately.
|
|
@@ -437,5 +470,4 @@ and table_view. Also refactored collection view helpers into their own file.
|
|
|
437
470
|
* [FIX] SC.ObjectController: Avoid unwanted commit when oldValue == null && newValue == ''.
|
|
438
471
|
|
|
439
472
|
|
|
440
|
-
== 0.9.0 2008-03-08
|
|
441
473
|
|
|
@@ -147,16 +147,19 @@ SC.ObjectController = SC.Controller.extend(
|
|
|
147
147
|
} else {
|
|
148
148
|
|
|
149
149
|
if (content.beginPropertyChanges) content.beginPropertyChanges() ;
|
|
150
|
-
|
|
151
|
-
|
|
150
|
+
|
|
151
|
+
// save the set of changes to apply them. Nothing should clear it but
|
|
152
|
+
// just in case.
|
|
153
|
+
var changes = this._changes ;
|
|
154
|
+
for(var key in changes) {
|
|
155
|
+
if (!changes.hasOwnProperty(key)) continue;
|
|
152
156
|
|
|
153
157
|
var oldValue = content.get ? content.get(key) : content[key];
|
|
154
|
-
var newValue =
|
|
158
|
+
var newValue = changes[key];
|
|
155
159
|
|
|
156
160
|
if (oldValue == null && newValue == '') newValue = null;
|
|
157
|
-
if (newValue != oldValue)
|
|
158
|
-
|
|
159
|
-
(content.set) ? content.set('isDirty', true) : (content['isDirty'] = true);
|
|
161
|
+
if (newValue != oldValue) {
|
|
162
|
+
(content.set) ? content.set('isDirty', YES) : (content.isDirty=YES);
|
|
160
163
|
}
|
|
161
164
|
|
|
162
165
|
if (content.set) {
|
|
@@ -39,9 +39,16 @@
|
|
|
39
39
|
//
|
|
40
40
|
// ==========================================================================
|
|
41
41
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
42
|
+
if (!window.SC) {
|
|
43
|
+
/**
|
|
44
|
+
@namespace
|
|
45
|
+
|
|
46
|
+
All objects live in the SproutCore namespace, which is also availabe in the
|
|
47
|
+
abbreviation SC.
|
|
48
|
+
*/
|
|
49
|
+
SC = {};
|
|
50
|
+
SproutCore = SC ;
|
|
51
|
+
}
|
|
45
52
|
|
|
46
53
|
// this makes for some nicer to read code
|
|
47
54
|
var YES = true ; var NO = false ;
|
|
@@ -90,7 +97,7 @@ Object.extend(SC,{
|
|
|
90
97
|
tempDLIFrame.style.left='-10000px';
|
|
91
98
|
// Don't set the iFrame content yet if this is Safari
|
|
92
99
|
if (!(SC.isSafari())) {
|
|
93
|
-
tempDLIFrame.setAttribute('src',path);
|
|
100
|
+
tempDLIFrame.setAttribute('src',path);
|
|
94
101
|
}
|
|
95
102
|
document.getElementsByTagName('body')[0].appendChild(tempDLIFrame);
|
|
96
103
|
if (SC.isSafari()) {
|
|
@@ -100,9 +107,12 @@ Object.extend(SC,{
|
|
|
100
107
|
if (!(SC.isSafari())) {
|
|
101
108
|
var r = function() {
|
|
102
109
|
document.body.removeChild(document.getElementById(frameId));
|
|
110
|
+
frameId = null;
|
|
103
111
|
} ;
|
|
104
112
|
var t = r.invokeLater(null, 2000);
|
|
105
113
|
}
|
|
114
|
+
//remove possible IE7 leak
|
|
115
|
+
tempDLIFrame = null;
|
|
106
116
|
},
|
|
107
117
|
|
|
108
118
|
// Call this method during setup of your app to queue up methods to be
|
|
@@ -113,6 +123,7 @@ Object.extend(SC,{
|
|
|
113
123
|
if (SC._onloadQueueFlushed) func.call(document);
|
|
114
124
|
var queue = SC._onloadQueue || [] ;
|
|
115
125
|
queue.push(func) ; SC._onloadQueue = queue ;
|
|
126
|
+
queue = null;
|
|
116
127
|
},
|
|
117
128
|
|
|
118
129
|
// To flush the callOnLoad queue, you need to set window.onload=SC.didLoad
|
|
@@ -150,6 +161,10 @@ Object.extend(SC,{
|
|
|
150
161
|
}
|
|
151
162
|
|
|
152
163
|
SC.runLoop.endRunLoop();
|
|
164
|
+
//remove possible IE7 leak
|
|
165
|
+
b = null;
|
|
166
|
+
queue = null;
|
|
167
|
+
func = null;
|
|
153
168
|
},
|
|
154
169
|
|
|
155
170
|
// this will take a URL of any type and convert it to a fully qualified URL.
|
|
File without changes
|
|
@@ -87,7 +87,7 @@ SC.Application = SC.Responder.extend(
|
|
|
87
87
|
|
|
88
88
|
/**
|
|
89
89
|
* Route an action message to the appropriate responder
|
|
90
|
-
* @param {String} action The action to perform
|
|
90
|
+
* @param {String} action The action to perform - this is a method name.
|
|
91
91
|
* @param {SC.Responder} target The object to perform the action upon. Set to null to search the Responder chain for a receiver.
|
|
92
92
|
* @param {Object} sender The sender of the action
|
|
93
93
|
* @returns return value info
|
|
@@ -104,8 +104,8 @@ SC.Application = SC.Responder.extend(
|
|
|
104
104
|
// no action, no target...
|
|
105
105
|
if (!action || ($type(action) != T_STRING)) return null;
|
|
106
106
|
|
|
107
|
-
// an explicit target was passed...
|
|
108
|
-
if (target) return target.respondsTo(action) ? target : null;
|
|
107
|
+
// an explicit target was passed...
|
|
108
|
+
if (target) return target.respondsTo(action) ? target : null ;
|
|
109
109
|
|
|
110
110
|
// ok, no target was passed... try to find one in the responder chain
|
|
111
111
|
var keyPane = this.get('keyPane');
|
|
@@ -86,7 +86,7 @@ SC.Benchmark = {
|
|
|
86
86
|
var stat = this._statFor(key) ;
|
|
87
87
|
var start = stat._starts.pop() ;
|
|
88
88
|
if (!start) {
|
|
89
|
-
console.log('
|
|
89
|
+
console.log('SC.Benchmark "%@" ended without a matching start. No information was saved.'.fmt(key));
|
|
90
90
|
return ;
|
|
91
91
|
}
|
|
92
92
|
|
|
@@ -49,9 +49,21 @@ SC.NodeDescriptor = {
|
|
|
49
49
|
childNodes.each(function(desc) {
|
|
50
50
|
ret.appendChild(that.create(desc)) ;
|
|
51
51
|
}) ;
|
|
52
|
+
that=null;
|
|
53
|
+
childNodes=null;
|
|
52
54
|
}
|
|
53
55
|
|
|
54
|
-
|
|
56
|
+
try{
|
|
57
|
+
return ret ;
|
|
58
|
+
}finally{
|
|
59
|
+
//ie7 memory leaks
|
|
60
|
+
tag=null;
|
|
61
|
+
className=null;
|
|
62
|
+
elementId=null;
|
|
63
|
+
style=null;
|
|
64
|
+
innerHTML=null;
|
|
65
|
+
ret=null;
|
|
66
|
+
}
|
|
55
67
|
},
|
|
56
68
|
|
|
57
69
|
ignoredProperties: ['tag','cssClass','id','style','childNodes','innerHTML']
|
|
@@ -28,7 +28,7 @@ SC.Page = SC.Object.extend(
|
|
|
28
28
|
}
|
|
29
29
|
ret.awake() ;
|
|
30
30
|
return ret ;
|
|
31
|
-
} else return
|
|
31
|
+
} else return sc_super() ;
|
|
32
32
|
},
|
|
33
33
|
|
|
34
34
|
// in addition to activating bindings, calling awake on the page object
|
|
@@ -43,10 +43,11 @@ SC.Page = SC.Object.extend(
|
|
|
43
43
|
},
|
|
44
44
|
|
|
45
45
|
init: function() {
|
|
46
|
-
|
|
46
|
+
sc_super() ;
|
|
47
47
|
var el = this.rootElement = $('resources') ;
|
|
48
48
|
SC.callOnLoad(function() {
|
|
49
49
|
if (el && el.parentNode) el.parentNode.removeChild(el) ;
|
|
50
|
+
el = null;
|
|
50
51
|
}) ;
|
|
51
52
|
},
|
|
52
53
|
|
|
@@ -32,61 +32,76 @@ NO_LIMIT = 10000 ;
|
|
|
32
32
|
*/
|
|
33
33
|
SC.PathModule = {
|
|
34
34
|
|
|
35
|
+
// NOTE: The code below simulates having document.rootElement = document.
|
|
36
|
+
// we can't actually do this assignment because it will leak memory in IE.
|
|
37
|
+
|
|
35
38
|
$$func: function(func, levels, max, nest) {
|
|
36
|
-
|
|
39
|
+
var el = (this.rootElement) ? this.rootElement : (this === document) ? document : null ;
|
|
40
|
+
return SC._PathModule.$$func(el,func,levels,max,nest);
|
|
37
41
|
},
|
|
38
42
|
|
|
39
43
|
$$C: function(className, levels, max, nest) {
|
|
40
|
-
|
|
44
|
+
var el = (this.rootElement) ? this.rootElement : (this === document) ? document : null ;
|
|
45
|
+
return SC._PathModule.$$C(el,className,levels,max,nest);
|
|
41
46
|
},
|
|
42
47
|
|
|
43
48
|
$$T: function(tagName, levels, max, nest) {
|
|
44
|
-
|
|
49
|
+
var el = (this.rootElement) ? this.rootElement : (this === document) ? document : null ;
|
|
50
|
+
return SC._PathModule.$$T(el,tagName,levels,max,nest);
|
|
45
51
|
},
|
|
46
52
|
|
|
47
53
|
$$P: function(property, value, levels, max, nest) {
|
|
48
|
-
|
|
54
|
+
var el = (this.rootElement) ? this.rootElement : (this === document) ? document : null ;
|
|
55
|
+
return SC._PathModule.$$P(el, property, value, levels, max, nest);
|
|
49
56
|
},
|
|
50
57
|
|
|
51
58
|
$$S: function(selector, levels, max, nest) {
|
|
52
|
-
|
|
59
|
+
var el = (this.rootElement) ? this.rootElement : (this === document) ? document : null ;
|
|
60
|
+
return SC._PathModule.$$S(el, selector, levels, max, nest);
|
|
53
61
|
},
|
|
54
62
|
|
|
55
63
|
// finds the first node for which func returns true.
|
|
56
64
|
$func: function(func, levels) {
|
|
57
|
-
|
|
65
|
+
var el = (this.rootElement) ? this.rootElement : (this === document) ? document : null ;
|
|
66
|
+
return SC._PathModule.$func(el, func, levels);
|
|
58
67
|
},
|
|
59
68
|
|
|
60
69
|
// finds the first node with class name. returns element, not array.
|
|
61
70
|
$C: function(className, levels) {
|
|
62
|
-
|
|
71
|
+
var el = (this.rootElement) ? this.rootElement : (this === document) ? document : null ;
|
|
72
|
+
return SC._PathModule.$C(el, className, levels);
|
|
63
73
|
},
|
|
64
74
|
|
|
65
75
|
// finds the first node with tag name. returns element, not array.
|
|
66
76
|
$T: function(tagName, levels) {
|
|
67
|
-
|
|
77
|
+
var el = (this.rootElement) ? this.rootElement : (this === document) ? document : null ;
|
|
78
|
+
return SC._PathModule.$T(el, tagName, levels);
|
|
68
79
|
},
|
|
69
80
|
|
|
70
81
|
// find first node with an attribute matching then named value.
|
|
71
82
|
$P: function(attr, value, levels) {
|
|
72
|
-
|
|
83
|
+
var el = (this.rootElement) ? this.rootElement : (this === document) ? document : null ;
|
|
84
|
+
return SC._PathModule.$P(el, attr, value, levels);
|
|
73
85
|
},
|
|
74
86
|
|
|
75
87
|
// find first node matching the specified class selector.
|
|
76
88
|
$S: function(selector, levels) {
|
|
77
|
-
|
|
89
|
+
var el = (this.rootElement) ? this.rootElement : (this === document) ? document : null ;
|
|
90
|
+
return SC._PathModule.$S(el, selector, levels);
|
|
78
91
|
},
|
|
79
92
|
|
|
80
93
|
// find an element and configure it as the named view if it is not already
|
|
81
94
|
// configured.
|
|
82
95
|
$$view: function(selector, viewClass, levels, max, nest) {
|
|
83
|
-
|
|
96
|
+
var el = (this.rootElement) ? this.rootElement : (this === document) ? document : null ;
|
|
97
|
+
return SC._PathModule.$$view(el, selector, viewClass, levels, max, nest) ;
|
|
84
98
|
},
|
|
85
99
|
|
|
86
100
|
// find the first element matching the selector and create a view if it is
|
|
87
101
|
// not already configured.
|
|
88
102
|
$view: function(selector, viewClass, levels) {
|
|
89
|
-
|
|
103
|
+
var el = (this.rootElement) ? this.rootElement : (this === document) ? document : null ;
|
|
104
|
+
return SC._PathModule.$view(el, selector, viewClass, levels) ;
|
|
90
105
|
}
|
|
91
106
|
|
|
92
107
|
};
|
|
@@ -219,7 +234,7 @@ SC._PathModule = {
|
|
|
219
234
|
|
|
220
235
|
// convert star to NO_LIMIT
|
|
221
236
|
if (blevels == '*') blevels = NO_LIMIT ;
|
|
222
|
-
if (bmax == '*')
|
|
237
|
+
if (bmax == '*') bmax = NO_LIMIT ;
|
|
223
238
|
|
|
224
239
|
// prepare the selector info.
|
|
225
240
|
// q tells us how to process the first part.
|
|
@@ -247,6 +262,7 @@ SC._PathModule = {
|
|
|
247
262
|
if (fret == null) {
|
|
248
263
|
fret = [] ;
|
|
249
264
|
for(var i=0;i<ret.length;i++) {
|
|
265
|
+
|
|
250
266
|
var found = SC._PathModule.$$func(ret[i],function(node) {
|
|
251
267
|
var match ;
|
|
252
268
|
switch(q) {
|
|
@@ -269,7 +285,8 @@ SC._PathModule = {
|
|
|
269
285
|
}
|
|
270
286
|
|
|
271
287
|
// if the first item matched, verify that the others match as well.
|
|
272
|
-
|
|
288
|
+
var ilen = bits.length ;
|
|
289
|
+
for(var i=0; match && i < ilen; i++) {
|
|
273
290
|
if (!Element.hasClassName(node,bits[i])) match = false ;
|
|
274
291
|
}
|
|
275
292
|
return match ;
|
|
@@ -283,7 +300,8 @@ SC._PathModule = {
|
|
|
283
300
|
// now follow indicies, if there are any
|
|
284
301
|
if (indicies && indicies.length > 0 && ret) {
|
|
285
302
|
ret = ret.map(function(el){
|
|
286
|
-
|
|
303
|
+
var iloclen = indicies.length ;
|
|
304
|
+
for(var iloc=0; el && (iloc < iloclen); iloc++) {
|
|
287
305
|
el = el.childNodes[indicies[iloc]] ;
|
|
288
306
|
}
|
|
289
307
|
return el;
|
|
@@ -393,7 +411,6 @@ if (typeof HTMLElement != 'undefined') {
|
|
|
393
411
|
|
|
394
412
|
// applies to document
|
|
395
413
|
Object.extend(document,SC.PathModule) ;
|
|
396
|
-
document.rootElement = document ;
|
|
397
414
|
|
|
398
415
|
// applies to window.
|
|
399
416
|
Object.extend(Object.extend(window,SC.PathModule), {
|
|
@@ -246,7 +246,7 @@ SC.runLoop = SC.Object.create({
|
|
|
246
246
|
|
|
247
247
|
// find next timer to trigger. If the first unpaused timer.
|
|
248
248
|
var rec = this._next ;
|
|
249
|
-
while(rec && rec.timer.get('isPaused')) rec = rec.next ;
|
|
249
|
+
while(rec && (!rec.timer || rec.timer.get('isPaused')) ) rec = rec.next ;
|
|
250
250
|
|
|
251
251
|
// if no next timer was found, then cancel any timer.
|
|
252
252
|
if (!rec) {
|