milk 0.0.8 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
data/.document ADDED
@@ -0,0 +1,5 @@
1
+ README.rdoc
2
+ lib/**/*.rb
3
+ bin/*
4
+ features/**/*.feature
5
+ LICENSE
data/.gitignore ADDED
@@ -0,0 +1,7 @@
1
+ *.sw?
2
+ .DS_Store
3
+ coverage
4
+ rdoc
5
+ pkg
6
+ .bzr
7
+ .bzrignore
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2009, Creationix
1
+ Copyright (c) 2009, Tim Caswell
2
2
  All rights reserved.
3
3
 
4
4
  Redistribution and use in source and binary forms, with or without modification,
@@ -6,13 +6,13 @@ are permitted provided that the following conditions are met:
6
6
 
7
7
  * Redistributions of source code must retain the above copyright notice,
8
8
  this list of conditions and the following disclaimer.
9
-
9
+
10
10
  * Redistributions in binary form must reproduce the above copyright notice,
11
11
  this list of conditions and the following disclaimer in the documentation
12
12
  and/or other materials provided with the distribution.
13
-
14
- * Neither the name of Creationix nor the names of its contributors may be
15
- used to endorse or promote products derived from this software without
13
+
14
+ * Neither the name of the Creationix nor the names of its contributors may
15
+ be used to endorse or promote products derived from this software without
16
16
  specific prior written permission.
17
17
 
18
18
  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
data/README.rdoc ADDED
@@ -0,0 +1,7 @@
1
+ = milk
2
+
3
+ Description goes here.
4
+
5
+ == Copyright
6
+
7
+ Copyright (c) 2009 Tim Caswell. See LICENSE for details.
data/Rakefile CHANGED
@@ -1,16 +1,62 @@
1
- desc "Build gem"
2
- task :gem do
3
- exec "gem build milk.gemspec"
1
+ require 'rubygems'
2
+ require 'rake'
3
+
4
+ begin
5
+ require 'jeweler'
6
+ Jeweler::Tasks.new do |gem|
7
+ gem.name = "milk"
8
+ gem.summary = %Q{Milk is a rack based content management system built for ease of use and simplicity. Milk tastes great with and without cookies.}
9
+ gem.email = "tim@creationix.com"
10
+ gem.homepage = "http://github.com/creationix/milk"
11
+ gem.authors = ["Tim Caswell"]
12
+ gem.rubyforge_project = "milk"
13
+ gem.required_ruby_version = '>=1.9'
14
+ gem.add_dependency('rack', '>= 1.0.0')
15
+ gem.add_dependency('maruku', '>= 0.6.0')
16
+ gem.add_dependency('haml', '>= 2.0.9')
17
+ # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
18
+ end
19
+
20
+ Jeweler::RubyforgeTasks.new
21
+ rescue LoadError
22
+ puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
4
23
  end
5
24
 
6
- desc "Delete gems"
7
- task :clean do
8
- exec "rm *.gem"
25
+ require 'rake/testtask'
26
+ Rake::TestTask.new(:test) do |test|
27
+ test.libs << 'lib' << 'test'
28
+ test.pattern = 'test/**/*_test.rb'
29
+ test.verbose = true
9
30
  end
10
31
 
11
- desc "Run Sample site to test framework"
12
- task :sample_test do
13
- exec "thin -R site_template/config.ru start"
32
+ begin
33
+ require 'rcov/rcovtask'
34
+ Rcov::RcovTask.new do |test|
35
+ test.libs << 'test'
36
+ test.pattern = 'test/**/*_test.rb'
37
+ test.verbose = true
38
+ end
39
+ rescue LoadError
40
+ task :rcov do
41
+ abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
42
+ end
14
43
  end
15
44
 
16
45
 
46
+ task :default => :test
47
+
48
+ require 'rake/rdoctask'
49
+ Rake::RDocTask.new do |rdoc|
50
+ if File.exist?('VERSION.yml')
51
+ config = YAML.load(File.read('VERSION.yml'))
52
+ version = "#{config[:major]}.#{config[:minor]}.#{config[:patch]}"
53
+ else
54
+ version = ""
55
+ end
56
+
57
+ rdoc.rdoc_dir = 'rdoc'
58
+ rdoc.title = "milk #{version}"
59
+ rdoc.rdoc_files.include('README*')
60
+ rdoc.rdoc_files.include('lib/**/*.rb')
61
+ end
62
+
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.0.9
data/milk.gemspec CHANGED
@@ -1,22 +1,137 @@
1
+ # -*- encoding: utf-8 -*-
2
+
1
3
  Gem::Specification.new do |s|
2
- s.rubyforge_project = "milk"
3
- s.name = "milk"
4
- s.summary = "Milk is a rack based content management system built for ease of use and simplicity. Milk tastes great with and without cookies."
5
- s.description= "Milk is a rack based cms system built for ease of use and simplicity. Milk
6
- tastes great with and without cookies. The public facing aspect is static html
7
- files, and the admin side is super easy to use."
8
- s.requirements << 'none'
9
- s.version = "0.0.8"
10
- s.author = "Tim Caswell"
11
- s.email = "tim@creationix.com"
12
- s.homepage = "http://milk.rubyforge.org"
13
- s.platform = Gem::Platform::RUBY
14
- s.required_ruby_version = '>=1.9'
15
- s.files = Dir['**/**']
16
- s.add_dependency('rack', '>= 1.0.0')
17
- s.add_dependency('maruku', '>= 0.6.0')
18
- s.add_dependency('haml', '>= 2.0.9')
19
- s.has_rdoc = true
20
- s.executables = ['milk']
21
- end
4
+ s.name = %q{milk}
5
+ s.version = "0.0.9"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["Tim Caswell"]
9
+ s.date = %q{2009-06-25}
10
+ s.default_executable = %q{milk}
11
+ s.email = %q{tim@creationix.com}
12
+ s.executables = ["milk"]
13
+ s.extra_rdoc_files = [
14
+ "LICENSE",
15
+ "README.rdoc"
16
+ ]
17
+ s.files = [
18
+ ".document",
19
+ ".gitignore",
20
+ "LICENSE",
21
+ "README.rdoc",
22
+ "Rakefile",
23
+ "VERSION",
24
+ "bin/milk",
25
+ "lib/milk.rb",
26
+ "lib/milk/application.rb",
27
+ "lib/milk/component.rb",
28
+ "lib/milk/field.rb",
29
+ "lib/milk/fields/component.haml",
30
+ "lib/milk/fields/component_array.haml",
31
+ "lib/milk/fields/component_array.rb",
32
+ "lib/milk/fields/image_chooser.haml",
33
+ "lib/milk/fields/image_chooser.rb",
34
+ "lib/milk/fields/login.haml",
35
+ "lib/milk/fields/markdown_field.haml",
36
+ "lib/milk/fields/markdown_field.rb",
37
+ "lib/milk/fields/page_chooser.haml",
38
+ "lib/milk/fields/page_chooser.rb",
39
+ "lib/milk/fields/sprite_chooser.haml",
40
+ "lib/milk/fields/sprite_chooser.rb",
41
+ "lib/milk/fields/text_field.haml",
42
+ "lib/milk/fields/text_field.rb",
43
+ "lib/milk/fields/xhtml.haml",
44
+ "lib/milk/haxe.rb",
45
+ "lib/milk/page.rb",
46
+ "lib/milk/tasks.rb",
47
+ "milk.gemspec",
48
+ "site_template/Rakefile",
49
+ "site_template/config.ru",
50
+ "site_template/config/config.yaml",
51
+ "site_template/config/foot.yaml",
52
+ "site_template/config/head.yaml",
53
+ "site_template/config/users.yaml",
54
+ "site_template/design/0-reset.sass",
55
+ "site_template/design/1-text.sass",
56
+ "site_template/design/960.sass",
57
+ "site_template/design/body.haml",
58
+ "site_template/design/body.rb",
59
+ "site_template/design/button.haml",
60
+ "site_template/design/button.rb",
61
+ "site_template/design/foot.haml",
62
+ "site_template/design/foot.rb",
63
+ "site_template/design/foot.sass",
64
+ "site_template/design/head.haml",
65
+ "site_template/design/head.rb",
66
+ "site_template/design/head.sass",
67
+ "site_template/design/page.haml",
68
+ "site_template/design/page.sass",
69
+ "site_template/design/sprites.sass",
70
+ "site_template/design/xhtml.haml",
71
+ "site_template/pages/About.yaml",
72
+ "site_template/pages/Home.yaml",
73
+ "site_template/pages/News.yaml",
74
+ "site_template/pages/NotFound.yaml",
75
+ "site_template/pages/Products.yaml",
76
+ "site_template/public/cache/About/index.html",
77
+ "site_template/public/cache/Home/index.html",
78
+ "site_template/public/cache/News/index.html",
79
+ "site_template/public/cache/Products/index.html",
80
+ "site_template/public/favicon.ico",
81
+ "site_template/public/images/README.txt",
82
+ "site_template/public/js/jquery-1.3.2.min.js",
83
+ "site_template/public/js/jquery-ui-1.7.2.custom.min.js",
84
+ "site_template/public/js/jquery.json-1.3.min.js",
85
+ "site_template/public/robots.txt",
86
+ "site_template/public/skin/images/ui-bg_diagonals-thick_18_b81900_40x40.png",
87
+ "site_template/public/skin/images/ui-bg_diagonals-thick_20_666666_40x40.png",
88
+ "site_template/public/skin/images/ui-bg_flat_10_000000_40x100.png",
89
+ "site_template/public/skin/images/ui-bg_glass_100_f6f6f6_1x400.png",
90
+ "site_template/public/skin/images/ui-bg_glass_100_fdf5ce_1x400.png",
91
+ "site_template/public/skin/images/ui-bg_glass_65_ffffff_1x400.png",
92
+ "site_template/public/skin/images/ui-bg_gloss-wave_35_f6a828_500x100.png",
93
+ "site_template/public/skin/images/ui-bg_highlight-soft_100_eeeeee_1x100.png",
94
+ "site_template/public/skin/images/ui-bg_highlight-soft_75_ffe45c_1x100.png",
95
+ "site_template/public/skin/images/ui-icons_222222_256x240.png",
96
+ "site_template/public/skin/images/ui-icons_228ef1_256x240.png",
97
+ "site_template/public/skin/images/ui-icons_ef8c08_256x240.png",
98
+ "site_template/public/skin/images/ui-icons_ffd27a_256x240.png",
99
+ "site_template/public/skin/images/ui-icons_ffffff_256x240.png",
100
+ "site_template/public/skin/jquery-ui-1.7.2.custom.css",
101
+ "site_template/public/style/style.css",
102
+ "site_template/tmp/restart.txt",
103
+ "test/milk_test.rb",
104
+ "test/test_helper.rb"
105
+ ]
106
+ s.has_rdoc = true
107
+ s.homepage = %q{http://github.com/creationix/milk}
108
+ s.rdoc_options = ["--charset=UTF-8"]
109
+ s.require_paths = ["lib"]
110
+ s.required_ruby_version = Gem::Requirement.new(">= 1.9")
111
+ s.rubyforge_project = %q{milk}
112
+ s.rubygems_version = %q{1.3.1}
113
+ s.summary = %q{Milk is a rack based content management system built for ease of use and simplicity. Milk tastes great with and without cookies.}
114
+ s.test_files = [
115
+ "test/test_helper.rb",
116
+ "test/milk_test.rb"
117
+ ]
22
118
 
119
+ if s.respond_to? :specification_version then
120
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
121
+ s.specification_version = 2
122
+
123
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
124
+ s.add_runtime_dependency(%q<rack>, [">= 1.0.0"])
125
+ s.add_runtime_dependency(%q<maruku>, [">= 0.6.0"])
126
+ s.add_runtime_dependency(%q<haml>, [">= 2.0.9"])
127
+ else
128
+ s.add_dependency(%q<rack>, [">= 1.0.0"])
129
+ s.add_dependency(%q<maruku>, [">= 0.6.0"])
130
+ s.add_dependency(%q<haml>, [">= 2.0.9"])
131
+ end
132
+ else
133
+ s.add_dependency(%q<rack>, [">= 1.0.0"])
134
+ s.add_dependency(%q<maruku>, [">= 0.6.0"])
135
+ s.add_dependency(%q<haml>, [">= 2.0.9"])
136
+ end
137
+ end
@@ -25,7 +25,7 @@ SECRET: "098f6bcd4621d373cade4e832627b4f6ad0234829205b9033196ba818f7a872b"
25
25
  # # Enable loading page cache files directly
26
26
  # rewrite ^/$ /cache/Home/index.html;
27
27
  # rewrite ^((/[A-Z][A-Za-z]*)+)$ /cache/$1/index.html;
28
- USE_CACHE: true
28
+ USE_CACHE: false
29
29
 
30
- # This is used in some views to show the site name
30
+ # You can create any other site wide globals for use in templates here
31
31
  SITE_NAME: "Sample Site"
@@ -12,7 +12,7 @@
12
12
  <ul class='grid_12' id='head'>
13
13
  <li>
14
14
  <a class='ui-corner-all' href='/Home' title='Description of home page'>
15
- Home
15
+ Home2
16
16
  </a>
17
17
  </li>
18
18
  <li>
data/test/milk_test.rb ADDED
@@ -0,0 +1,7 @@
1
+ require 'test_helper'
2
+
3
+ class MilkTest < Test::Unit::TestCase
4
+ should "probably rename this file and start testing for real" do
5
+ flunk "hey buddy, you should probably rename this file and start testing for real"
6
+ end
7
+ end
@@ -0,0 +1,10 @@
1
+ require 'rubygems'
2
+ require 'test/unit'
3
+ require 'shoulda'
4
+
5
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
6
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
7
+ require 'milk'
8
+
9
+ class Test::Unit::TestCase
10
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: milk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tim Caswell
@@ -10,7 +10,7 @@ bindir: bin
10
10
  cert_chain: []
11
11
 
12
12
  date: 2009-06-25 00:00:00 -05:00
13
- default_executable:
13
+ default_executable: milk
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rack
@@ -42,138 +42,108 @@ dependencies:
42
42
  - !ruby/object:Gem::Version
43
43
  version: 2.0.9
44
44
  version:
45
- description: Milk is a rack based cms system built for ease of use and simplicity. Milk tastes great with and without cookies. The public facing aspect is static html files, and the admin side is super easy to use.
45
+ description:
46
46
  email: tim@creationix.com
47
47
  executables:
48
48
  - milk
49
49
  extensions: []
50
50
 
51
- extra_rdoc_files: []
52
-
51
+ extra_rdoc_files:
52
+ - LICENSE
53
+ - README.rdoc
53
54
  files:
54
- - site_template
55
- - site_template/public
56
- - site_template/public/skin
57
- - site_template/public/skin/images
55
+ - .document
56
+ - .gitignore
57
+ - LICENSE
58
+ - README.rdoc
59
+ - Rakefile
60
+ - VERSION
61
+ - bin/milk
62
+ - lib/milk.rb
63
+ - lib/milk/application.rb
64
+ - lib/milk/component.rb
65
+ - lib/milk/field.rb
66
+ - lib/milk/fields/component.haml
67
+ - lib/milk/fields/component_array.haml
68
+ - lib/milk/fields/component_array.rb
69
+ - lib/milk/fields/image_chooser.haml
70
+ - lib/milk/fields/image_chooser.rb
71
+ - lib/milk/fields/login.haml
72
+ - lib/milk/fields/markdown_field.haml
73
+ - lib/milk/fields/markdown_field.rb
74
+ - lib/milk/fields/page_chooser.haml
75
+ - lib/milk/fields/page_chooser.rb
76
+ - lib/milk/fields/sprite_chooser.haml
77
+ - lib/milk/fields/sprite_chooser.rb
78
+ - lib/milk/fields/text_field.haml
79
+ - lib/milk/fields/text_field.rb
80
+ - lib/milk/fields/xhtml.haml
81
+ - lib/milk/haxe.rb
82
+ - lib/milk/page.rb
83
+ - lib/milk/tasks.rb
84
+ - milk.gemspec
85
+ - site_template/Rakefile
86
+ - site_template/config.ru
87
+ - site_template/config/config.yaml
88
+ - site_template/config/foot.yaml
89
+ - site_template/config/head.yaml
90
+ - site_template/config/users.yaml
91
+ - site_template/design/0-reset.sass
92
+ - site_template/design/1-text.sass
93
+ - site_template/design/960.sass
94
+ - site_template/design/body.haml
95
+ - site_template/design/body.rb
96
+ - site_template/design/button.haml
97
+ - site_template/design/button.rb
98
+ - site_template/design/foot.haml
99
+ - site_template/design/foot.rb
100
+ - site_template/design/foot.sass
101
+ - site_template/design/head.haml
102
+ - site_template/design/head.rb
103
+ - site_template/design/head.sass
104
+ - site_template/design/page.haml
105
+ - site_template/design/page.sass
106
+ - site_template/design/sprites.sass
107
+ - site_template/design/xhtml.haml
108
+ - site_template/pages/About.yaml
109
+ - site_template/pages/Home.yaml
110
+ - site_template/pages/News.yaml
111
+ - site_template/pages/NotFound.yaml
112
+ - site_template/pages/Products.yaml
113
+ - site_template/public/cache/About/index.html
114
+ - site_template/public/cache/Home/index.html
115
+ - site_template/public/cache/News/index.html
116
+ - site_template/public/cache/Products/index.html
117
+ - site_template/public/favicon.ico
118
+ - site_template/public/images/README.txt
119
+ - site_template/public/js/jquery-1.3.2.min.js
120
+ - site_template/public/js/jquery-ui-1.7.2.custom.min.js
121
+ - site_template/public/js/jquery.json-1.3.min.js
122
+ - site_template/public/robots.txt
123
+ - site_template/public/skin/images/ui-bg_diagonals-thick_18_b81900_40x40.png
58
124
  - site_template/public/skin/images/ui-bg_diagonals-thick_20_666666_40x40.png
59
- - site_template/public/skin/images/ui-icons_ffd27a_256x240.png
60
- - site_template/public/skin/images/ui-bg_gloss-wave_35_f6a828_500x100.png
61
- - site_template/public/skin/images/ui-bg_glass_100_f6f6f6_1x400.png
62
125
  - site_template/public/skin/images/ui-bg_flat_10_000000_40x100.png
63
- - site_template/public/skin/images/ui-bg_highlight-soft_100_eeeeee_1x100.png
64
- - site_template/public/skin/images/ui-icons_ffffff_256x240.png
126
+ - site_template/public/skin/images/ui-bg_glass_100_f6f6f6_1x400.png
65
127
  - site_template/public/skin/images/ui-bg_glass_100_fdf5ce_1x400.png
66
- - site_template/public/skin/images/ui-bg_diagonals-thick_18_b81900_40x40.png
67
128
  - site_template/public/skin/images/ui-bg_glass_65_ffffff_1x400.png
68
- - site_template/public/skin/images/ui-icons_228ef1_256x240.png
129
+ - site_template/public/skin/images/ui-bg_gloss-wave_35_f6a828_500x100.png
130
+ - site_template/public/skin/images/ui-bg_highlight-soft_100_eeeeee_1x100.png
69
131
  - site_template/public/skin/images/ui-bg_highlight-soft_75_ffe45c_1x100.png
70
132
  - site_template/public/skin/images/ui-icons_222222_256x240.png
133
+ - site_template/public/skin/images/ui-icons_228ef1_256x240.png
71
134
  - site_template/public/skin/images/ui-icons_ef8c08_256x240.png
135
+ - site_template/public/skin/images/ui-icons_ffd27a_256x240.png
136
+ - site_template/public/skin/images/ui-icons_ffffff_256x240.png
72
137
  - site_template/public/skin/jquery-ui-1.7.2.custom.css
73
- - site_template/public/robots.txt
74
- - site_template/public/style
75
138
  - site_template/public/style/style.css
76
- - site_template/public/js
77
- - site_template/public/js/jquery.json-1.3.min.js
78
- - site_template/public/js/jquery-1.3.2.min.js
79
- - site_template/public/js/jquery-ui-1.7.2.custom.min.js
80
- - site_template/public/images
81
- - site_template/public/images/README.txt
82
- - site_template/public/cache
83
- - site_template/public/cache/Home
84
- - site_template/public/cache/Home/index.html
85
- - site_template/public/cache/Products
86
- - site_template/public/cache/Products/index.html
87
- - site_template/public/cache/News
88
- - site_template/public/cache/News/index.html
89
- - site_template/public/cache/About
90
- - site_template/public/cache/About/index.html
91
- - site_template/public/favicon.ico
92
- - site_template/tmp
93
139
  - site_template/tmp/restart.txt
94
- - site_template/config.ru
95
- - site_template/design
96
- - site_template/design/head.sass
97
- - site_template/design/foot.haml
98
- - site_template/design/body.rb
99
- - site_template/design/head.rb
100
- - site_template/design/1-text.sass
101
- - site_template/design/960.sass
102
- - site_template/design/sprites.sass
103
- - site_template/design/head.haml
104
- - site_template/design/page.sass
105
- - site_template/design/foot.rb
106
- - site_template/design/page.haml
107
- - site_template/design/xhtml.haml
108
- - site_template/design/button.haml
109
- - site_template/design/foot.sass
110
- - site_template/design/0-reset.sass
111
- - site_template/design/body.haml
112
- - site_template/design/button.rb
113
- - site_template/pages
114
- - site_template/pages/Home.yaml.~5~
115
- - site_template/pages/News.yaml
116
- - site_template/pages/Home.yaml.~1~
117
- - site_template/pages/Home.yaml.~4~
118
- - site_template/pages/NotFound.yaml
119
- - site_template/pages/Home.yaml.~3~
120
- - site_template/pages/Home.yaml
121
- - site_template/pages/Products.yaml
122
- - site_template/pages/About.yaml
123
- - site_template/pages/Home.yaml.~2~
124
- - site_template/config
125
- - site_template/config/foot.yaml.~5~
126
- - site_template/config/foot.yaml.~4~
127
- - site_template/config/head.yaml
128
- - site_template/config/head.yaml.~5~
129
- - site_template/config/head.yaml.~1~
130
- - site_template/config/users.yaml
131
- - site_template/config/head.yaml.~2~
132
- - site_template/config/config.yaml
133
- - site_template/config/head.yaml.~4~
134
- - site_template/config/foot.yaml.~1~
135
- - site_template/config/foot.yaml
136
- - site_template/config/foot.yaml.~2~
137
- - site_template/config/foot.yaml.~3~
138
- - site_template/config/head.yaml.~3~
139
- - site_template/Rakefile
140
- - lib
141
- - lib/milk
142
- - lib/milk/page.rb
143
- - lib/milk/haxe.rb
144
- - lib/milk/tasks.rb
145
- - lib/milk/field.rb
146
- - lib/milk/fields
147
- - lib/milk/fields/markdown_field.haml
148
- - lib/milk/fields/page_chooser.haml
149
- - lib/milk/fields/text_field.rb
150
- - lib/milk/fields/image_chooser.haml
151
- - lib/milk/fields/login.haml
152
- - lib/milk/fields/text_field.haml
153
- - lib/milk/fields/sprite_chooser.rb
154
- - lib/milk/fields/xhtml.haml
155
- - lib/milk/fields/component_array.rb
156
- - lib/milk/fields/page_chooser.rb
157
- - lib/milk/fields/image_chooser.rb
158
- - lib/milk/fields/sprite_chooser.haml
159
- - lib/milk/fields/markdown_field.rb
160
- - lib/milk/fields/component_array.haml
161
- - lib/milk/fields/component.haml
162
- - lib/milk/component.rb.~1~
163
- - lib/milk/page.rb.~1~
164
- - lib/milk/component.rb
165
- - lib/milk/application.rb
166
- - lib/milk.rb
167
- - LICENSE
168
- - Rakefile
169
- - milk.gemspec
170
- - bin
171
- - bin/milk
140
+ - test/milk_test.rb
141
+ - test/test_helper.rb
172
142
  has_rdoc: true
173
- homepage: http://milk.rubyforge.org
143
+ homepage: http://github.com/creationix/milk
174
144
  post_install_message:
175
- rdoc_options: []
176
-
145
+ rdoc_options:
146
+ - --charset=UTF-8
177
147
  require_paths:
178
148
  - lib
179
149
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -188,12 +158,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
188
158
  - !ruby/object:Gem::Version
189
159
  version: "0"
190
160
  version:
191
- requirements:
192
- - none
161
+ requirements: []
162
+
193
163
  rubyforge_project: milk
194
164
  rubygems_version: 1.3.1
195
165
  signing_key:
196
166
  specification_version: 2
197
167
  summary: Milk is a rack based content management system built for ease of use and simplicity. Milk tastes great with and without cookies.
198
- test_files: []
199
-
168
+ test_files:
169
+ - test/test_helper.rb
170
+ - test/milk_test.rb
@@ -1,141 +0,0 @@
1
- module Milk
2
- class Component
3
-
4
- @@local_flag = {}
5
-
6
- attr_accessor :parent
7
- @parent = nil
8
-
9
-
10
- # Don't store global properties or backreferences to the parent
11
- def to_yaml_properties
12
- (if respond_to? :global_properties
13
- instance_variables.reject { |name| global_properties.member?(name) }
14
- else
15
- instance_variables
16
- end).reject { |name| name == :@parent }
17
- end
18
-
19
- def app
20
- page.app
21
- end
22
-
23
- def page
24
- if @parent.class == Milk::Page
25
- @parent
26
- else
27
- @parent.page
28
- end
29
- end
30
-
31
- def self.local_properties(*props)
32
- end
33
-
34
- def self.global_properties(*props)
35
- globals = props.collect{|name|"@#{name}".to_sym}
36
- class_def :global_properties do
37
- globals
38
- end
39
- end
40
-
41
- def name
42
- self.class.to_s
43
- end
44
-
45
- # All Components start out with default of no fields
46
- def self.fields
47
- []
48
- end
49
-
50
- # Assume no defaults
51
- def self.defaults
52
- {}
53
- end
54
-
55
- # Metaclass black magic to simulate appending items to a list
56
- # This works by getting the old result of the fields class method
57
- # and stores it in a closure, and then redefines the method, but with
58
- # a new item appended.
59
- def self.add_field(klass, field, label, options={})
60
-
61
- # Merge in assumes options
62
- options[:field] = field
63
- options[:label] = label
64
-
65
- # Fill in blanks with defaults
66
- defaults.each do |k, v|
67
- options[k] ||= v
68
- end
69
-
70
- field = klass.new(options)
71
-
72
- newfields = self.fields + [field]
73
- meta_def("fields") do
74
- newfields
75
- end
76
- end
77
-
78
- def self.method_missing(method, *args)
79
- raise "Missing '#{method}' method" unless File.file? FIELDS_DIR+"/#{method}.rb"
80
- klass = eval("Fields::" + method.to_s.gsub(/(^|_)(.)/) { $2.upcase })
81
- add_field(klass, *args)
82
- end
83
-
84
- def save_settings
85
- return unless respond_to? :global_properties
86
- yaml_file = Milk::CONFIG_DIR + "/#{system_name}.yaml"
87
- data = {}
88
- instance_variables.each do |name|
89
- data[name] = instance_variable_get(name)
90
- end
91
- File.open(yaml_file, "w") do |file|
92
- file.write(data)
93
- end
94
- end
95
-
96
- def system_name
97
- self.class.to_s.gsub(/([a-z])([A-Z])/) { "#{$1}_#{$2}" }.downcase
98
- end
99
-
100
- def load_settings
101
- yaml_file = Milk::CONFIG_DIR + "/#{system_name}.yaml"
102
- if File.file? yaml_file
103
- YAML.load_file(yaml_file).each_pair do |key, value|
104
- instance_variable_set("@#{key}".to_sym, value)
105
- end
106
- end
107
- end
108
-
109
- def haml(filename, context=self, extras={})
110
- if block_given?
111
- Page.haml(filename, context, extras) { yield }
112
- else
113
- Page.haml(filename, context, extras)
114
- end
115
- end
116
-
117
- def partial(filename, vars, extras={})
118
- obj = self.dup
119
- vars.each do |key, value|
120
- obj.instance_variable_set("@#{key}", value)
121
- end
122
- haml(filename, obj, extras)
123
- end
124
-
125
-
126
- def edit(prefix)
127
- @prefix = prefix
128
- haml_file = FIELDS_DIR + "/component.haml"
129
- ::Haml::Engine.new(File.read(haml_file), :filename => haml_file).render(self)
130
- end
131
-
132
- def view
133
- haml_file = Milk::COMPONENTS_DIR + "/" + system_name + ".haml"
134
- raise "Missing template \"" + haml_file + "\"" unless File.file? haml_file
135
- ::Haml::Engine.new(File.read(haml_file), :filename => haml_file).render(self)
136
- end
137
-
138
- end
139
- end
140
-
141
-
data/lib/milk/page.rb.~1~ DELETED
@@ -1,118 +0,0 @@
1
- module Milk
2
- class Page
3
-
4
- attr_reader :title
5
- attr_reader :description
6
- attr_reader :pagename
7
-
8
- def self.find(pagename)
9
- yaml_file = Milk::PAGES_DIR + "/" + pagename + ".yaml"
10
- raise PageNotFoundError unless File.readable? yaml_file
11
- page = YAML.load_file(yaml_file)
12
- page.instance_variable_set('@pagename', pagename)
13
- page.load_settings
14
- page
15
- end
16
-
17
- def self.haml(filename, context, extras)
18
- if block_given?
19
- ::Haml::Engine.new(File.read(filename), :filename => filename).render(context, extras) do
20
- yield
21
- end
22
- else
23
- ::Haml::Engine.new(File.read(filename), :filename => filename).render(context, extras)
24
- end
25
- end
26
-
27
- def haml(filename, context=self, extras={})
28
- if block_given?
29
- Page.haml(filename, context, extras) { yield }
30
- else
31
- Page.haml(filename, context, extras)
32
- end
33
- end
34
-
35
- def to_yaml_properties
36
- [:@components, :@title, :@keywords, :@description]
37
- end
38
-
39
- def save
40
- save_settings
41
- yaml_file = Milk::PAGES_DIR + "/" + @pagename + ".yaml"
42
- data = YAML.dump(self)
43
- File.open(yaml_file, "w") do |file|
44
- file.write(data)
45
- end
46
- data
47
- end
48
-
49
- def self.json_unserialize(data, pagename=nil)
50
- class_name = data.delete('class')
51
- obj = class_name.constantize.allocate
52
- data.each do |key, value|
53
- if value.class == Array
54
- value.collect! { |item| json_unserialize(item) }
55
- end
56
- obj.instance_variable_set("@#{key}", value)
57
- end
58
- obj.instance_variable_set("@pagename", pagename) if obj.class == Milk::Page
59
- obj
60
- end
61
-
62
- def load_settings
63
- @components.each do |component|
64
- component.load_settings
65
- end
66
- end
67
-
68
- def save_settings
69
- @components.each do |component|
70
- component.save_settings
71
- end
72
- end
73
-
74
- def edit
75
- haml(FIELDS_DIR + "/xhtml.haml", self)
76
- end
77
-
78
- def preview
79
- haml(Milk::COMPONENTS_DIR + "/page.haml", self) do
80
- (@components.collect do |component|
81
- component.view
82
- end).join("")
83
- end + @app.req.env.inspect
84
- end
85
-
86
- def view
87
- haml(Milk::COMPONENTS_DIR + "/xhtml.haml", self) do
88
- preview
89
- end
90
- end
91
-
92
- def link_to
93
- if @pagename == "Home"
94
- "/"
95
- else
96
- "/#{@pagename}"
97
- end
98
- end
99
-
100
- def link_to?(url)
101
- (@pagename == "Home" && url == '/') || url == "/#{@pagename}"
102
- end
103
-
104
- def save_to_cache(html=nil)
105
- html ||= view
106
- folder = Milk::PUBLIC_DIR + "/cache/" + @pagename
107
- cache_file = folder + "/index.html"
108
-
109
- # Make the folder if it doesn't exist
110
- FileUtils.mkdir_p folder
111
- open(cache_file, "w") { |file| file.write html }
112
- end
113
-
114
- end
115
- end
116
-
117
-
118
-
@@ -1,2 +0,0 @@
1
- --- !ruby/object:Foot {}
2
-
@@ -1,2 +0,0 @@
1
- --- !ruby/object:Foot {}
2
-
@@ -1 +0,0 @@
1
- {:@markdown=>"© 2009 Your company name here. - Hosted on the [Milk] framework.\n\n[Milk]: http://milk.rubyforge.org/"}
@@ -1,3 +0,0 @@
1
- ---
2
- :@markdown: "\xC2\xA9 2009 Your company name here. - Hosted on the [Milk] framework.\n\n\
3
- [Milk]: http://milk.rubyforge.org/"
@@ -1,3 +0,0 @@
1
- ---
2
- markdown: "\xC2\xA9 2009 Your company name here. - Hosted on the [Milk] framework.\n\n\
3
- [Milk]: http://milk.rubyforge.org/"
@@ -1,2 +0,0 @@
1
- --- !ruby/object:Head {}
2
-
@@ -1,2 +0,0 @@
1
- --- !ruby/object:Head {}
2
-
@@ -1 +0,0 @@
1
- {:@buttons=>[#<Button:0x00000002722278 @href="/Home", @title="Home relabeled", @description="Description of home page", @parent=#<Head:0x00000002722368 @buttons=[...], @parent=#<Milk::Page:0x00000002722548 @components=[#<Head:0x00000002722368 ...>, #<Body:0x00000002721a30 @markdown="# Home more\n\nDescription of home page", @parent=#<Milk::Page:0x00000002722548 ...>>, #<Foot:0x00000002721918 @markdown="© 2009 Your company name here. - Hosted on the [Milk] framework.\n\n[Milk]: http://milk.rubyforge.org/", @parent=#<Milk::Page:0x00000002722548 ...>>], @title="Home", @keywords="keywords, that, are, relevent, to, search, engines", @description="This is a description of this site.", @pagename="Home", @parent=#<Milk::Application:0x00000001677f90 @require_ssl=false, @req=#<Rack::Request:0x00000002729410 @env={"SERVER_SOFTWARE"=>"thin 1.2.2 codename I Find Your Lack of Sauce Disturbing", "SERVER_NAME"=>"localhost", "rack.input"=>#<Rack::Lint::InputWrapper:0x00000002729de8 @input=#<StringIO:0x000000023d2758>>, "rack.version"=>[1, 0], "rack.errors"=>#<Rack::Lint::ErrorWrapper:0x00000002729d70 @error=#<IO:<STDERR>>>, "rack.multithread"=>false, "rack.multiprocess"=>false, "rack.run_once"=>false, "REQUEST_METHOD"=>"PUT", "REQUEST_PATH"=>"/Home", "PATH_INFO"=>"/Home", "REQUEST_URI"=>"/Home", "HTTP_VERSION"=>"HTTP/1.1", "HTTP_HOST"=>"localhost:9292", "HTTP_USER_AGENT"=>"Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.11) Gecko/2009060309 Ubuntu/9.04 (jaunty) Firefox/3.0.11", "HTTP_ACCEPT"=>"*/*", "HTTP_ACCEPT_LANGUAGE"=>"en-us,en;q=0.5", "HTTP_ACCEPT_ENCODING"=>"gzip,deflate", "HTTP_ACCEPT_CHARSET"=>"ISO-8859-1,utf-8;q=0.7,*;q=0.7", "HTTP_KEEP_ALIVE"=>"300", "HTTP_CONNECTION"=>"keep-alive", "HTTP_X_REQUESTED_WITH"=>"XMLHttpRequest", "HTTP_REFERER"=>"http://localhost:9292/Home/edit", "HTTP_COOKIE"=>"auth=UV1VD1giBhxVW0JdAR1UXA4%3D%0A", "CONTENT_LENGTH"=>"840", "CONTENT_TYPE"=>"application/json; charset=UTF-8", "GATEWAY_INTERFACE"=>"CGI/1.2", "SERVER_PORT"=>"9292", "QUERY_STRING"=>"", "SERVER_PROTOCOL"=>"HTTP/1.1", "rack.url_scheme"=>"http", "SCRIPT_NAME"=>"", "REMOTE_ADDR"=>"127.0.0.1", "async.callback"=>#<Method: Thin::Connection#post_process>, "async.close"=>#<EventMachine::DefaultDeferrable:0x000000023f1b30>, "rack.request"=>#<Rack::Request:0x00000002729410 ...>, "rack.request.cookie_string"=>"auth=UV1VD1giBhxVW0JdAR1UXA4%3D%0A", "rack.request.cookie_hash"=>{"auth"=>"UV1VD1giBhxVW0JdAR1UXA4=\n"}}>, @resp=#<Rack::Response:0x000000027293c0 @status=200, @header={"Content-Type"=>"text/html"}, @writer=#<Proc:0x00000002729168@/home/tim/local/lib/ruby/gems/1.9.1/gems/rack-1.0.0/lib/rack/response.rb:26 (lambda)>, @block=nil, @length=0, @body=[]>, @user={"name"=>"Sample Admin", "hash"=>"098f6bcd4621d373cade4e832627b4f6"}, @page=#<Milk::Page:0x00000002722548 ...>, @_haml_locals={:_hamlout=>#<Haml::Buffer:0x0000000225db20 @active=true, @upper=nil, @options={:attr_wrapper=>"'", :ugly=>false, :format=>:xhtml, :autoclose=>["meta", "img", "link", "br", "hr", "input", "area", "param", "col", "base"], :preserve=>["textarea", "pre"]}, @buffer="<?xml version='1.0' encoding='utf-8' ?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">\n<html xmlns='http://www.w3.org/1999/xhtml'>\n <head>\n <title>Please Login</title>\n <style type='text/css'>\n table, #shadow, .ui-widget-shadow {\n width: 400px;\n height: 160px; }\n \n table#login, #shadow {\n font-size: 15px;\n position: absolute;\n top: 50%;\n left: 50%;\n margin-top: -80px;\n margin-left: -200px; }\n \n table#login td, table#login th {\n vertical-align: middle; }\n \n #login tr.ui-state-error {\n font-size: 12px; }\n #login tr.ui-state-error td {\n padding: 5px 10px; }\n #login tr.ui-state-error span {\n float: left;\n margin-right: 0.3em; }\n #login .ui-widget-header {\n line-height: 2em;\n height: 2em; }\n #login button {\n font-size: 12px;\n cursor: pointer;\n line-height: 1em;\n padding: 2px 5px 2px 2px; }\n #login button .ui-icon {\n float: left;\n line-height: 1em; }\n </style>\n <link href='/favicon.ico' rel='shortcut icon' type='image/x-icon' />\n <link href='/skin/jquery-ui-1.7.2.custom.css' media='screen' rel='stylesheet' type='text/css' />\n <link href='/style/style.css' media='screen' rel='stylesheet' type='text/css' />\n <script src='/js/jquery-1.3.2.min.js' type='text/javascript'></script>\n <script src='/js/jquery.json-1.3.min.js' type='text/javascript'></script>\n <script src='/js/jquery-ui-1.7.2.custom.min.js' type='text/javascript'></script>\n </head>\n <body>\n <div class='ui-widget-overlay'></div>\n <form action='/login' method='post'>\n <input name='dest' type='hidden' value='/Home/edit' />\n <div id='shadow'>\n <div class='ui-widget-shadow'></div>\n </div>\n <table class='ui-widget ui-widget-content ui-corner-all' id='login'>\n <thead>\n <tr>\n <th class='ui-widget-header ui-corner-top' colspan='2'>\n Please Login to edit 'Home'\n </th>\n </tr>\n </thead>\n <tr>\n <th>Email</th>\n <td>\n <input name='email' />\n </td>\n </tr>\n <tr>\n <th>Password</th>\n <td>\n <input name='password' type='password' />\n </td>\n </tr>\n <tr>\n <th></th>\n <td>\n <button title='Login to the backend to edit this page.' type='submit'>\n <span class='ui-icon ui-icon-unlocked'></span>\n Login\n </button>\n </td>\n </tr>\n </table>\n </form>\n <script type='text/javascript'>\n //<![CDATA[\n $(function() {\n $(\"button\")\n .addClass(\"ui-state-default ui-corner-all\")\n .hover(\n function() { $(this).addClass('ui-state-hover'); },\n function() { $(this).removeClass('ui-state-hover'); }\n );\n });\n //]]>\n </script>\n </body>\n</html>\n", @tabulation=0, @real_tabs=0, @dont_tab_up_next_line=false>, :_erbout=>"<?xml version='1.0' encoding='utf-8' ?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">\n<html xmlns='http://www.w3.org/1999/xhtml'>\n <head>\n <title>Please Login</title>\n <style type='text/css'>\n table, #shadow, .ui-widget-shadow {\n width: 400px;\n height: 160px; }\n \n table#login, #shadow {\n font-size: 15px;\n position: absolute;\n top: 50%;\n left: 50%;\n margin-top: -80px;\n margin-left: -200px; }\n \n table#login td, table#login th {\n vertical-align: middle; }\n \n #login tr.ui-state-error {\n font-size: 12px; }\n #login tr.ui-state-error td {\n padding: 5px 10px; }\n #login tr.ui-state-error span {\n float: left;\n margin-right: 0.3em; }\n #login .ui-widget-header {\n line-height: 2em;\n height: 2em; }\n #login button {\n font-size: 12px;\n cursor: pointer;\n line-height: 1em;\n padding: 2px 5px 2px 2px; }\n #login button .ui-icon {\n float: left;\n line-height: 1em; }\n </style>\n <link href='/favicon.ico' rel='shortcut icon' type='image/x-icon' />\n <link href='/skin/jquery-ui-1.7.2.custom.css' media='screen' rel='stylesheet' type='text/css' />\n <link href='/style/style.css' media='screen' rel='stylesheet' type='text/css' />\n <script src='/js/jquery-1.3.2.min.js' type='text/javascript'></script>\n <script src='/js/jquery.json-1.3.min.js' type='text/javascript'></script>\n <script src='/js/jquery-ui-1.7.2.custom.min.js' type='text/javascript'></script>\n </head>\n <body>\n <div class='ui-widget-overlay'></div>\n <form action='/login' method='post'>\n <input name='dest' type='hidden' value='/Home/edit' />\n <div id='shadow'>\n <div class='ui-widget-shadow'></div>\n </div>\n <table class='ui-widget ui-widget-content ui-corner-all' id='login'>\n <thead>\n <tr>\n <th class='ui-widget-header ui-corner-top' colspan='2'>\n Please Login to edit 'Home'\n </th>\n </tr>\n </thead>\n <tr>\n <th>Email</th>\n <td>\n <input name='email' />\n </td>\n </tr>\n <tr>\n <th>Password</th>\n <td>\n <input name='password' type='password' />\n </td>\n </tr>\n <tr>\n <th></th>\n <td>\n <button title='Login to the backend to edit this page.' type='submit'>\n <span class='ui-icon ui-icon-unlocked'></span>\n Login\n </button>\n </td>\n </tr>\n </table>\n </form>\n <script type='text/javascript'>\n //<![CDATA[\n $(function() {\n $(\"button\")\n .addClass(\"ui-state-default ui-corner-all\")\n .hover(\n function() { $(this).addClass('ui-state-hover'); },\n function() { $(this).removeClass('ui-state-hover'); }\n );\n });\n //]]>\n </script>\n </body>\n</html>\n"}, @haml_buffer=nil>>>>, #<Button:0x000000027220c0 @href="/News", @title="News", @description="Description of news page", @parent=#<Head:0x00000002722368 @buttons=[...], @parent=#<Milk::Page:0x00000002722548 @components=[#<Head:0x00000002722368 ...>, #<Body:0x00000002721a30 @markdown="# Home more\n\nDescription of home page", @parent=#<Milk::Page:0x00000002722548 ...>>, #<Foot:0x00000002721918 @markdown="© 2009 Your company name here. - Hosted on the [Milk] framework.\n\n[Milk]: http://milk.rubyforge.org/", @parent=#<Milk::Page:0x00000002722548 ...>>], @title="Home", @keywords="keywords, that, are, relevent, to, search, engines", @description="This is a description of this site.", @pagename="Home", @parent=#<Milk::Application:0x00000001677f90 @require_ssl=false, @req=#<Rack::Request:0x00000002729410 @env={"SERVER_SOFTWARE"=>"thin 1.2.2 codename I Find Your Lack of Sauce Disturbing", "SERVER_NAME"=>"localhost", "rack.input"=>#<Rack::Lint::InputWrapper:0x00000002729de8 @input=#<StringIO:0x000000023d2758>>, "rack.version"=>[1, 0], "rack.errors"=>#<Rack::Lint::ErrorWrapper:0x00000002729d70 @error=#<IO:<STDERR>>>, "rack.multithread"=>false, "rack.multiprocess"=>false, "rack.run_once"=>false, "REQUEST_METHOD"=>"PUT", "REQUEST_PATH"=>"/Home", "PATH_INFO"=>"/Home", "REQUEST_URI"=>"/Home", "HTTP_VERSION"=>"HTTP/1.1", "HTTP_HOST"=>"localhost:9292", "HTTP_USER_AGENT"=>"Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.11) Gecko/2009060309 Ubuntu/9.04 (jaunty) Firefox/3.0.11", "HTTP_ACCEPT"=>"*/*", "HTTP_ACCEPT_LANGUAGE"=>"en-us,en;q=0.5", "HTTP_ACCEPT_ENCODING"=>"gzip,deflate", "HTTP_ACCEPT_CHARSET"=>"ISO-8859-1,utf-8;q=0.7,*;q=0.7", "HTTP_KEEP_ALIVE"=>"300", "HTTP_CONNECTION"=>"keep-alive", "HTTP_X_REQUESTED_WITH"=>"XMLHttpRequest", "HTTP_REFERER"=>"http://localhost:9292/Home/edit", "HTTP_COOKIE"=>"auth=UV1VD1giBhxVW0JdAR1UXA4%3D%0A", "CONTENT_LENGTH"=>"840", "CONTENT_TYPE"=>"application/json; charset=UTF-8", "GATEWAY_INTERFACE"=>"CGI/1.2", "SERVER_PORT"=>"9292", "QUERY_STRING"=>"", "SERVER_PROTOCOL"=>"HTTP/1.1", "rack.url_scheme"=>"http", "SCRIPT_NAME"=>"", "REMOTE_ADDR"=>"127.0.0.1", "async.callback"=>#<Method: Thin::Connection#post_process>, "async.close"=>#<EventMachine::DefaultDeferrable:0x000000023f1b30>, "rack.request"=>#<Rack::Request:0x00000002729410 ...>, "rack.request.cookie_string"=>"auth=UV1VD1giBhxVW0JdAR1UXA4%3D%0A", "rack.request.cookie_hash"=>{"auth"=>"UV1VD1giBhxVW0JdAR1UXA4=\n"}}>, @resp=#<Rack::Response:0x000000027293c0 @status=200, @header={"Content-Type"=>"text/html"}, @writer=#<Proc:0x00000002729168@/home/tim/local/lib/ruby/gems/1.9.1/gems/rack-1.0.0/lib/rack/response.rb:26 (lambda)>, @block=nil, @length=0, @body=[]>, @user={"name"=>"Sample Admin", "hash"=>"098f6bcd4621d373cade4e832627b4f6"}, @page=#<Milk::Page:0x00000002722548 ...>, @_haml_locals={:_hamlout=>#<Haml::Buffer:0x0000000225db20 @active=true, @upper=nil, @options={:attr_wrapper=>"'", :ugly=>false, :format=>:xhtml, :autoclose=>["meta", "img", "link", "br", "hr", "input", "area", "param", "col", "base"], :preserve=>["textarea", "pre"]}, @buffer="<?xml version='1.0' encoding='utf-8' ?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">\n<html xmlns='http://www.w3.org/1999/xhtml'>\n <head>\n <title>Please Login</title>\n <style type='text/css'>\n table, #shadow, .ui-widget-shadow {\n width: 400px;\n height: 160px; }\n \n table#login, #shadow {\n font-size: 15px;\n position: absolute;\n top: 50%;\n left: 50%;\n margin-top: -80px;\n margin-left: -200px; }\n \n table#login td, table#login th {\n vertical-align: middle; }\n \n #login tr.ui-state-error {\n font-size: 12px; }\n #login tr.ui-state-error td {\n padding: 5px 10px; }\n #login tr.ui-state-error span {\n float: left;\n margin-right: 0.3em; }\n #login .ui-widget-header {\n line-height: 2em;\n height: 2em; }\n #login button {\n font-size: 12px;\n cursor: pointer;\n line-height: 1em;\n padding: 2px 5px 2px 2px; }\n #login button .ui-icon {\n float: left;\n line-height: 1em; }\n </style>\n <link href='/favicon.ico' rel='shortcut icon' type='image/x-icon' />\n <link href='/skin/jquery-ui-1.7.2.custom.css' media='screen' rel='stylesheet' type='text/css' />\n <link href='/style/style.css' media='screen' rel='stylesheet' type='text/css' />\n <script src='/js/jquery-1.3.2.min.js' type='text/javascript'></script>\n <script src='/js/jquery.json-1.3.min.js' type='text/javascript'></script>\n <script src='/js/jquery-ui-1.7.2.custom.min.js' type='text/javascript'></script>\n </head>\n <body>\n <div class='ui-widget-overlay'></div>\n <form action='/login' method='post'>\n <input name='dest' type='hidden' value='/Home/edit' />\n <div id='shadow'>\n <div class='ui-widget-shadow'></div>\n </div>\n <table class='ui-widget ui-widget-content ui-corner-all' id='login'>\n <thead>\n <tr>\n <th class='ui-widget-header ui-corner-top' colspan='2'>\n Please Login to edit 'Home'\n </th>\n </tr>\n </thead>\n <tr>\n <th>Email</th>\n <td>\n <input name='email' />\n </td>\n </tr>\n <tr>\n <th>Password</th>\n <td>\n <input name='password' type='password' />\n </td>\n </tr>\n <tr>\n <th></th>\n <td>\n <button title='Login to the backend to edit this page.' type='submit'>\n <span class='ui-icon ui-icon-unlocked'></span>\n Login\n </button>\n </td>\n </tr>\n </table>\n </form>\n <script type='text/javascript'>\n //<![CDATA[\n $(function() {\n $(\"button\")\n .addClass(\"ui-state-default ui-corner-all\")\n .hover(\n function() { $(this).addClass('ui-state-hover'); },\n function() { $(this).removeClass('ui-state-hover'); }\n );\n });\n //]]>\n </script>\n </body>\n</html>\n", @tabulation=0, @real_tabs=0, @dont_tab_up_next_line=false>, :_erbout=>"<?xml version='1.0' encoding='utf-8' ?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">\n<html xmlns='http://www.w3.org/1999/xhtml'>\n <head>\n <title>Please Login</title>\n <style type='text/css'>\n table, #shadow, .ui-widget-shadow {\n width: 400px;\n height: 160px; }\n \n table#login, #shadow {\n font-size: 15px;\n position: absolute;\n top: 50%;\n left: 50%;\n margin-top: -80px;\n margin-left: -200px; }\n \n table#login td, table#login th {\n vertical-align: middle; }\n \n #login tr.ui-state-error {\n font-size: 12px; }\n #login tr.ui-state-error td {\n padding: 5px 10px; }\n #login tr.ui-state-error span {\n float: left;\n margin-right: 0.3em; }\n #login .ui-widget-header {\n line-height: 2em;\n height: 2em; }\n #login button {\n font-size: 12px;\n cursor: pointer;\n line-height: 1em;\n padding: 2px 5px 2px 2px; }\n #login button .ui-icon {\n float: left;\n line-height: 1em; }\n </style>\n <link href='/favicon.ico' rel='shortcut icon' type='image/x-icon' />\n <link href='/skin/jquery-ui-1.7.2.custom.css' media='screen' rel='stylesheet' type='text/css' />\n <link href='/style/style.css' media='screen' rel='stylesheet' type='text/css' />\n <script src='/js/jquery-1.3.2.min.js' type='text/javascript'></script>\n <script src='/js/jquery.json-1.3.min.js' type='text/javascript'></script>\n <script src='/js/jquery-ui-1.7.2.custom.min.js' type='text/javascript'></script>\n </head>\n <body>\n <div class='ui-widget-overlay'></div>\n <form action='/login' method='post'>\n <input name='dest' type='hidden' value='/Home/edit' />\n <div id='shadow'>\n <div class='ui-widget-shadow'></div>\n </div>\n <table class='ui-widget ui-widget-content ui-corner-all' id='login'>\n <thead>\n <tr>\n <th class='ui-widget-header ui-corner-top' colspan='2'>\n Please Login to edit 'Home'\n </th>\n </tr>\n </thead>\n <tr>\n <th>Email</th>\n <td>\n <input name='email' />\n </td>\n </tr>\n <tr>\n <th>Password</th>\n <td>\n <input name='password' type='password' />\n </td>\n </tr>\n <tr>\n <th></th>\n <td>\n <button title='Login to the backend to edit this page.' type='submit'>\n <span class='ui-icon ui-icon-unlocked'></span>\n Login\n </button>\n </td>\n </tr>\n </table>\n </form>\n <script type='text/javascript'>\n //<![CDATA[\n $(function() {\n $(\"button\")\n .addClass(\"ui-state-default ui-corner-all\")\n .hover(\n function() { $(this).addClass('ui-state-hover'); },\n function() { $(this).removeClass('ui-state-hover'); }\n );\n });\n //]]>\n </script>\n </body>\n</html>\n"}, @haml_buffer=nil>>>>, #<Button:0x00000002721e68 @href="/Products", @title="Products", @description="Description of products page", @parent=#<Head:0x00000002722368 @buttons=[...], @parent=#<Milk::Page:0x00000002722548 @components=[#<Head:0x00000002722368 ...>, #<Body:0x00000002721a30 @markdown="# Home more\n\nDescription of home page", @parent=#<Milk::Page:0x00000002722548 ...>>, #<Foot:0x00000002721918 @markdown="© 2009 Your company name here. - Hosted on the [Milk] framework.\n\n[Milk]: http://milk.rubyforge.org/", @parent=#<Milk::Page:0x00000002722548 ...>>], @title="Home", @keywords="keywords, that, are, relevent, to, search, engines", @description="This is a description of this site.", @pagename="Home", @parent=#<Milk::Application:0x00000001677f90 @require_ssl=false, @req=#<Rack::Request:0x00000002729410 @env={"SERVER_SOFTWARE"=>"thin 1.2.2 codename I Find Your Lack of Sauce Disturbing", "SERVER_NAME"=>"localhost", "rack.input"=>#<Rack::Lint::InputWrapper:0x00000002729de8 @input=#<StringIO:0x000000023d2758>>, "rack.version"=>[1, 0], "rack.errors"=>#<Rack::Lint::ErrorWrapper:0x00000002729d70 @error=#<IO:<STDERR>>>, "rack.multithread"=>false, "rack.multiprocess"=>false, "rack.run_once"=>false, "REQUEST_METHOD"=>"PUT", "REQUEST_PATH"=>"/Home", "PATH_INFO"=>"/Home", "REQUEST_URI"=>"/Home", "HTTP_VERSION"=>"HTTP/1.1", "HTTP_HOST"=>"localhost:9292", "HTTP_USER_AGENT"=>"Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.11) Gecko/2009060309 Ubuntu/9.04 (jaunty) Firefox/3.0.11", "HTTP_ACCEPT"=>"*/*", "HTTP_ACCEPT_LANGUAGE"=>"en-us,en;q=0.5", "HTTP_ACCEPT_ENCODING"=>"gzip,deflate", "HTTP_ACCEPT_CHARSET"=>"ISO-8859-1,utf-8;q=0.7,*;q=0.7", "HTTP_KEEP_ALIVE"=>"300", "HTTP_CONNECTION"=>"keep-alive", "HTTP_X_REQUESTED_WITH"=>"XMLHttpRequest", "HTTP_REFERER"=>"http://localhost:9292/Home/edit", "HTTP_COOKIE"=>"auth=UV1VD1giBhxVW0JdAR1UXA4%3D%0A", "CONTENT_LENGTH"=>"840", "CONTENT_TYPE"=>"application/json; charset=UTF-8", "GATEWAY_INTERFACE"=>"CGI/1.2", "SERVER_PORT"=>"9292", "QUERY_STRING"=>"", "SERVER_PROTOCOL"=>"HTTP/1.1", "rack.url_scheme"=>"http", "SCRIPT_NAME"=>"", "REMOTE_ADDR"=>"127.0.0.1", "async.callback"=>#<Method: Thin::Connection#post_process>, "async.close"=>#<EventMachine::DefaultDeferrable:0x000000023f1b30>, "rack.request"=>#<Rack::Request:0x00000002729410 ...>, "rack.request.cookie_string"=>"auth=UV1VD1giBhxVW0JdAR1UXA4%3D%0A", "rack.request.cookie_hash"=>{"auth"=>"UV1VD1giBhxVW0JdAR1UXA4=\n"}}>, @resp=#<Rack::Response:0x000000027293c0 @status=200, @header={"Content-Type"=>"text/html"}, @writer=#<Proc:0x00000002729168@/home/tim/local/lib/ruby/gems/1.9.1/gems/rack-1.0.0/lib/rack/response.rb:26 (lambda)>, @block=nil, @length=0, @body=[]>, @user={"name"=>"Sample Admin", "hash"=>"098f6bcd4621d373cade4e832627b4f6"}, @page=#<Milk::Page:0x00000002722548 ...>, @_haml_locals={:_hamlout=>#<Haml::Buffer:0x0000000225db20 @active=true, @upper=nil, @options={:attr_wrapper=>"'", :ugly=>false, :format=>:xhtml, :autoclose=>["meta", "img", "link", "br", "hr", "input", "area", "param", "col", "base"], :preserve=>["textarea", "pre"]}, @buffer="<?xml version='1.0' encoding='utf-8' ?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">\n<html xmlns='http://www.w3.org/1999/xhtml'>\n <head>\n <title>Please Login</title>\n <style type='text/css'>\n table, #shadow, .ui-widget-shadow {\n width: 400px;\n height: 160px; }\n \n table#login, #shadow {\n font-size: 15px;\n position: absolute;\n top: 50%;\n left: 50%;\n margin-top: -80px;\n margin-left: -200px; }\n \n table#login td, table#login th {\n vertical-align: middle; }\n \n #login tr.ui-state-error {\n font-size: 12px; }\n #login tr.ui-state-error td {\n padding: 5px 10px; }\n #login tr.ui-state-error span {\n float: left;\n margin-right: 0.3em; }\n #login .ui-widget-header {\n line-height: 2em;\n height: 2em; }\n #login button {\n font-size: 12px;\n cursor: pointer;\n line-height: 1em;\n padding: 2px 5px 2px 2px; }\n #login button .ui-icon {\n float: left;\n line-height: 1em; }\n </style>\n <link href='/favicon.ico' rel='shortcut icon' type='image/x-icon' />\n <link href='/skin/jquery-ui-1.7.2.custom.css' media='screen' rel='stylesheet' type='text/css' />\n <link href='/style/style.css' media='screen' rel='stylesheet' type='text/css' />\n <script src='/js/jquery-1.3.2.min.js' type='text/javascript'></script>\n <script src='/js/jquery.json-1.3.min.js' type='text/javascript'></script>\n <script src='/js/jquery-ui-1.7.2.custom.min.js' type='text/javascript'></script>\n </head>\n <body>\n <div class='ui-widget-overlay'></div>\n <form action='/login' method='post'>\n <input name='dest' type='hidden' value='/Home/edit' />\n <div id='shadow'>\n <div class='ui-widget-shadow'></div>\n </div>\n <table class='ui-widget ui-widget-content ui-corner-all' id='login'>\n <thead>\n <tr>\n <th class='ui-widget-header ui-corner-top' colspan='2'>\n Please Login to edit 'Home'\n </th>\n </tr>\n </thead>\n <tr>\n <th>Email</th>\n <td>\n <input name='email' />\n </td>\n </tr>\n <tr>\n <th>Password</th>\n <td>\n <input name='password' type='password' />\n </td>\n </tr>\n <tr>\n <th></th>\n <td>\n <button title='Login to the backend to edit this page.' type='submit'>\n <span class='ui-icon ui-icon-unlocked'></span>\n Login\n </button>\n </td>\n </tr>\n </table>\n </form>\n <script type='text/javascript'>\n //<![CDATA[\n $(function() {\n $(\"button\")\n .addClass(\"ui-state-default ui-corner-all\")\n .hover(\n function() { $(this).addClass('ui-state-hover'); },\n function() { $(this).removeClass('ui-state-hover'); }\n );\n });\n //]]>\n </script>\n </body>\n</html>\n", @tabulation=0, @real_tabs=0, @dont_tab_up_next_line=false>, :_erbout=>"<?xml version='1.0' encoding='utf-8' ?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">\n<html xmlns='http://www.w3.org/1999/xhtml'>\n <head>\n <title>Please Login</title>\n <style type='text/css'>\n table, #shadow, .ui-widget-shadow {\n width: 400px;\n height: 160px; }\n \n table#login, #shadow {\n font-size: 15px;\n position: absolute;\n top: 50%;\n left: 50%;\n margin-top: -80px;\n margin-left: -200px; }\n \n table#login td, table#login th {\n vertical-align: middle; }\n \n #login tr.ui-state-error {\n font-size: 12px; }\n #login tr.ui-state-error td {\n padding: 5px 10px; }\n #login tr.ui-state-error span {\n float: left;\n margin-right: 0.3em; }\n #login .ui-widget-header {\n line-height: 2em;\n height: 2em; }\n #login button {\n font-size: 12px;\n cursor: pointer;\n line-height: 1em;\n padding: 2px 5px 2px 2px; }\n #login button .ui-icon {\n float: left;\n line-height: 1em; }\n </style>\n <link href='/favicon.ico' rel='shortcut icon' type='image/x-icon' />\n <link href='/skin/jquery-ui-1.7.2.custom.css' media='screen' rel='stylesheet' type='text/css' />\n <link href='/style/style.css' media='screen' rel='stylesheet' type='text/css' />\n <script src='/js/jquery-1.3.2.min.js' type='text/javascript'></script>\n <script src='/js/jquery.json-1.3.min.js' type='text/javascript'></script>\n <script src='/js/jquery-ui-1.7.2.custom.min.js' type='text/javascript'></script>\n </head>\n <body>\n <div class='ui-widget-overlay'></div>\n <form action='/login' method='post'>\n <input name='dest' type='hidden' value='/Home/edit' />\n <div id='shadow'>\n <div class='ui-widget-shadow'></div>\n </div>\n <table class='ui-widget ui-widget-content ui-corner-all' id='login'>\n <thead>\n <tr>\n <th class='ui-widget-header ui-corner-top' colspan='2'>\n Please Login to edit 'Home'\n </th>\n </tr>\n </thead>\n <tr>\n <th>Email</th>\n <td>\n <input name='email' />\n </td>\n </tr>\n <tr>\n <th>Password</th>\n <td>\n <input name='password' type='password' />\n </td>\n </tr>\n <tr>\n <th></th>\n <td>\n <button title='Login to the backend to edit this page.' type='submit'>\n <span class='ui-icon ui-icon-unlocked'></span>\n Login\n </button>\n </td>\n </tr>\n </table>\n </form>\n <script type='text/javascript'>\n //<![CDATA[\n $(function() {\n $(\"button\")\n .addClass(\"ui-state-default ui-corner-all\")\n .hover(\n function() { $(this).addClass('ui-state-hover'); },\n function() { $(this).removeClass('ui-state-hover'); }\n );\n });\n //]]>\n </script>\n </body>\n</html>\n"}, @haml_buffer=nil>>>>, #<Button:0x00000002721cb0 @href="/About", @title="About Us", @description="Description of about page", @parent=#<Head:0x00000002722368 @buttons=[...], @parent=#<Milk::Page:0x00000002722548 @components=[#<Head:0x00000002722368 ...>, #<Body:0x00000002721a30 @markdown="# Home more\n\nDescription of home page", @parent=#<Milk::Page:0x00000002722548 ...>>, #<Foot:0x00000002721918 @markdown="© 2009 Your company name here. - Hosted on the [Milk] framework.\n\n[Milk]: http://milk.rubyforge.org/", @parent=#<Milk::Page:0x00000002722548 ...>>], @title="Home", @keywords="keywords, that, are, relevent, to, search, engines", @description="This is a description of this site.", @pagename="Home", @parent=#<Milk::Application:0x00000001677f90 @require_ssl=false, @req=#<Rack::Request:0x00000002729410 @env={"SERVER_SOFTWARE"=>"thin 1.2.2 codename I Find Your Lack of Sauce Disturbing", "SERVER_NAME"=>"localhost", "rack.input"=>#<Rack::Lint::InputWrapper:0x00000002729de8 @input=#<StringIO:0x000000023d2758>>, "rack.version"=>[1, 0], "rack.errors"=>#<Rack::Lint::ErrorWrapper:0x00000002729d70 @error=#<IO:<STDERR>>>, "rack.multithread"=>false, "rack.multiprocess"=>false, "rack.run_once"=>false, "REQUEST_METHOD"=>"PUT", "REQUEST_PATH"=>"/Home", "PATH_INFO"=>"/Home", "REQUEST_URI"=>"/Home", "HTTP_VERSION"=>"HTTP/1.1", "HTTP_HOST"=>"localhost:9292", "HTTP_USER_AGENT"=>"Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.11) Gecko/2009060309 Ubuntu/9.04 (jaunty) Firefox/3.0.11", "HTTP_ACCEPT"=>"*/*", "HTTP_ACCEPT_LANGUAGE"=>"en-us,en;q=0.5", "HTTP_ACCEPT_ENCODING"=>"gzip,deflate", "HTTP_ACCEPT_CHARSET"=>"ISO-8859-1,utf-8;q=0.7,*;q=0.7", "HTTP_KEEP_ALIVE"=>"300", "HTTP_CONNECTION"=>"keep-alive", "HTTP_X_REQUESTED_WITH"=>"XMLHttpRequest", "HTTP_REFERER"=>"http://localhost:9292/Home/edit", "HTTP_COOKIE"=>"auth=UV1VD1giBhxVW0JdAR1UXA4%3D%0A", "CONTENT_LENGTH"=>"840", "CONTENT_TYPE"=>"application/json; charset=UTF-8", "GATEWAY_INTERFACE"=>"CGI/1.2", "SERVER_PORT"=>"9292", "QUERY_STRING"=>"", "SERVER_PROTOCOL"=>"HTTP/1.1", "rack.url_scheme"=>"http", "SCRIPT_NAME"=>"", "REMOTE_ADDR"=>"127.0.0.1", "async.callback"=>#<Method: Thin::Connection#post_process>, "async.close"=>#<EventMachine::DefaultDeferrable:0x000000023f1b30>, "rack.request"=>#<Rack::Request:0x00000002729410 ...>, "rack.request.cookie_string"=>"auth=UV1VD1giBhxVW0JdAR1UXA4%3D%0A", "rack.request.cookie_hash"=>{"auth"=>"UV1VD1giBhxVW0JdAR1UXA4=\n"}}>, @resp=#<Rack::Response:0x000000027293c0 @status=200, @header={"Content-Type"=>"text/html"}, @writer=#<Proc:0x00000002729168@/home/tim/local/lib/ruby/gems/1.9.1/gems/rack-1.0.0/lib/rack/response.rb:26 (lambda)>, @block=nil, @length=0, @body=[]>, @user={"name"=>"Sample Admin", "hash"=>"098f6bcd4621d373cade4e832627b4f6"}, @page=#<Milk::Page:0x00000002722548 ...>, @_haml_locals={:_hamlout=>#<Haml::Buffer:0x0000000225db20 @active=true, @upper=nil, @options={:attr_wrapper=>"'", :ugly=>false, :format=>:xhtml, :autoclose=>["meta", "img", "link", "br", "hr", "input", "area", "param", "col", "base"], :preserve=>["textarea", "pre"]}, @buffer="<?xml version='1.0' encoding='utf-8' ?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">\n<html xmlns='http://www.w3.org/1999/xhtml'>\n <head>\n <title>Please Login</title>\n <style type='text/css'>\n table, #shadow, .ui-widget-shadow {\n width: 400px;\n height: 160px; }\n \n table#login, #shadow {\n font-size: 15px;\n position: absolute;\n top: 50%;\n left: 50%;\n margin-top: -80px;\n margin-left: -200px; }\n \n table#login td, table#login th {\n vertical-align: middle; }\n \n #login tr.ui-state-error {\n font-size: 12px; }\n #login tr.ui-state-error td {\n padding: 5px 10px; }\n #login tr.ui-state-error span {\n float: left;\n margin-right: 0.3em; }\n #login .ui-widget-header {\n line-height: 2em;\n height: 2em; }\n #login button {\n font-size: 12px;\n cursor: pointer;\n line-height: 1em;\n padding: 2px 5px 2px 2px; }\n #login button .ui-icon {\n float: left;\n line-height: 1em; }\n </style>\n <link href='/favicon.ico' rel='shortcut icon' type='image/x-icon' />\n <link href='/skin/jquery-ui-1.7.2.custom.css' media='screen' rel='stylesheet' type='text/css' />\n <link href='/style/style.css' media='screen' rel='stylesheet' type='text/css' />\n <script src='/js/jquery-1.3.2.min.js' type='text/javascript'></script>\n <script src='/js/jquery.json-1.3.min.js' type='text/javascript'></script>\n <script src='/js/jquery-ui-1.7.2.custom.min.js' type='text/javascript'></script>\n </head>\n <body>\n <div class='ui-widget-overlay'></div>\n <form action='/login' method='post'>\n <input name='dest' type='hidden' value='/Home/edit' />\n <div id='shadow'>\n <div class='ui-widget-shadow'></div>\n </div>\n <table class='ui-widget ui-widget-content ui-corner-all' id='login'>\n <thead>\n <tr>\n <th class='ui-widget-header ui-corner-top' colspan='2'>\n Please Login to edit 'Home'\n </th>\n </tr>\n </thead>\n <tr>\n <th>Email</th>\n <td>\n <input name='email' />\n </td>\n </tr>\n <tr>\n <th>Password</th>\n <td>\n <input name='password' type='password' />\n </td>\n </tr>\n <tr>\n <th></th>\n <td>\n <button title='Login to the backend to edit this page.' type='submit'>\n <span class='ui-icon ui-icon-unlocked'></span>\n Login\n </button>\n </td>\n </tr>\n </table>\n </form>\n <script type='text/javascript'>\n //<![CDATA[\n $(function() {\n $(\"button\")\n .addClass(\"ui-state-default ui-corner-all\")\n .hover(\n function() { $(this).addClass('ui-state-hover'); },\n function() { $(this).removeClass('ui-state-hover'); }\n );\n });\n //]]>\n </script>\n </body>\n</html>\n", @tabulation=0, @real_tabs=0, @dont_tab_up_next_line=false>, :_erbout=>"<?xml version='1.0' encoding='utf-8' ?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">\n<html xmlns='http://www.w3.org/1999/xhtml'>\n <head>\n <title>Please Login</title>\n <style type='text/css'>\n table, #shadow, .ui-widget-shadow {\n width: 400px;\n height: 160px; }\n \n table#login, #shadow {\n font-size: 15px;\n position: absolute;\n top: 50%;\n left: 50%;\n margin-top: -80px;\n margin-left: -200px; }\n \n table#login td, table#login th {\n vertical-align: middle; }\n \n #login tr.ui-state-error {\n font-size: 12px; }\n #login tr.ui-state-error td {\n padding: 5px 10px; }\n #login tr.ui-state-error span {\n float: left;\n margin-right: 0.3em; }\n #login .ui-widget-header {\n line-height: 2em;\n height: 2em; }\n #login button {\n font-size: 12px;\n cursor: pointer;\n line-height: 1em;\n padding: 2px 5px 2px 2px; }\n #login button .ui-icon {\n float: left;\n line-height: 1em; }\n </style>\n <link href='/favicon.ico' rel='shortcut icon' type='image/x-icon' />\n <link href='/skin/jquery-ui-1.7.2.custom.css' media='screen' rel='stylesheet' type='text/css' />\n <link href='/style/style.css' media='screen' rel='stylesheet' type='text/css' />\n <script src='/js/jquery-1.3.2.min.js' type='text/javascript'></script>\n <script src='/js/jquery.json-1.3.min.js' type='text/javascript'></script>\n <script src='/js/jquery-ui-1.7.2.custom.min.js' type='text/javascript'></script>\n </head>\n <body>\n <div class='ui-widget-overlay'></div>\n <form action='/login' method='post'>\n <input name='dest' type='hidden' value='/Home/edit' />\n <div id='shadow'>\n <div class='ui-widget-shadow'></div>\n </div>\n <table class='ui-widget ui-widget-content ui-corner-all' id='login'>\n <thead>\n <tr>\n <th class='ui-widget-header ui-corner-top' colspan='2'>\n Please Login to edit 'Home'\n </th>\n </tr>\n </thead>\n <tr>\n <th>Email</th>\n <td>\n <input name='email' />\n </td>\n </tr>\n <tr>\n <th>Password</th>\n <td>\n <input name='password' type='password' />\n </td>\n </tr>\n <tr>\n <th></th>\n <td>\n <button title='Login to the backend to edit this page.' type='submit'>\n <span class='ui-icon ui-icon-unlocked'></span>\n Login\n </button>\n </td>\n </tr>\n </table>\n </form>\n <script type='text/javascript'>\n //<![CDATA[\n $(function() {\n $(\"button\")\n .addClass(\"ui-state-default ui-corner-all\")\n .hover(\n function() { $(this).addClass('ui-state-hover'); },\n function() { $(this).removeClass('ui-state-hover'); }\n );\n });\n //]]>\n </script>\n </body>\n</html>\n"}, @haml_buffer=nil>>>>]}
@@ -1,18 +0,0 @@
1
- ---
2
- :@buttons:
3
- - !ruby/object:Button
4
- href: /Home
5
- title: Home relabeled
6
- description: Description of home page
7
- - !ruby/object:Button
8
- href: /News
9
- title: News
10
- description: Description of news page
11
- - !ruby/object:Button
12
- href: /Products
13
- title: Products
14
- description: Description of products page
15
- - !ruby/object:Button
16
- href: /About
17
- title: About Us
18
- description: Description of about page
@@ -1,18 +0,0 @@
1
- ---
2
- buttons:
3
- - !ruby/object:Button
4
- href: /Home
5
- title: Home relabeled
6
- description: Description of home page
7
- - !ruby/object:Button
8
- href: /News
9
- title: News
10
- description: Description of news page
11
- - !ruby/object:Button
12
- href: /Products
13
- title: Products
14
- description: Description of products page
15
- - !ruby/object:Button
16
- href: /About
17
- title: About Us
18
- description: Description of about page
@@ -1,14 +0,0 @@
1
- --- !ruby/object:Milk::Page
2
- components:
3
- - !ruby/object:Head {}
4
-
5
- - !ruby/object:Body
6
- markdown: |-
7
- # Home more
8
-
9
- Description of home page
10
- - !ruby/object:Foot {}
11
-
12
- title: Home
13
- keywords: keywords, that, are, relevent, to, search, engines
14
- description: This is a description of this site.
@@ -1,14 +0,0 @@
1
- --- !ruby/object:Milk::Page
2
- components:
3
- - !ruby/object:Head {}
4
-
5
- - !ruby/object:Body
6
- markdown: |-
7
- # Home more
8
-
9
- Description of home page
10
- - !ruby/object:Foot {}
11
-
12
- title: Home
13
- keywords: keywords, that, are, relevent, to, search, engines
14
- description: This is a description of this site.
@@ -1,14 +0,0 @@
1
- --- !ruby/object:Milk::Page
2
- components:
3
- - !ruby/object:Head {}
4
-
5
- - !ruby/object:Body
6
- markdown: |-
7
- # Home more
8
-
9
- Description of home page
10
- - !ruby/object:Foot {}
11
-
12
- title: Home
13
- keywords: keywords, that, are, relevent, to, search, engines
14
- description: This is a description of this site.
@@ -1,14 +0,0 @@
1
- --- !ruby/object:Milk::Page
2
- components:
3
- - !ruby/object:Head {}
4
-
5
- - !ruby/object:Body
6
- markdown: |-
7
- # Home more
8
-
9
- Description of home page
10
- - !ruby/object:Foot {}
11
-
12
- title: Home
13
- keywords: keywords, that, are, relevent, to, search, engines
14
- description: This is a description of this site.
@@ -1,14 +0,0 @@
1
- --- !ruby/object:Milk::Page
2
- components:
3
- - !ruby/object:Head {}
4
-
5
- - !ruby/object:Body
6
- markdown: |-
7
- # Home more
8
-
9
- Description of home page
10
- - !ruby/object:Foot {}
11
-
12
- title: Home
13
- keywords: keywords, that, are, relevent, to, search, engines
14
- description: This is a description of this site.