sushifish 0.0.1 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. data/lib/generators/USAGE +8 -0
  2. data/lib/generators/sushi/sushi_generator.rb +117 -0
  3. data/lib/generators/sushi/templates/_admin_nav.html.haml +3 -0
  4. data/lib/generators/sushi/templates/_footer.html.haml +1 -0
  5. data/lib/generators/sushi/templates/_form.html.erb +75 -0
  6. data/lib/generators/sushi/templates/_header.html.haml +1 -0
  7. data/lib/generators/sushi/templates/_navigation.html.haml +12 -0
  8. data/lib/generators/sushi/templates/_page.html.haml +9 -0
  9. data/lib/generators/sushi/templates/_sidebar.html.haml +0 -0
  10. data/lib/generators/sushi/templates/admin.sass +284 -0
  11. data/lib/generators/sushi/templates/admin_pages_controller.rb +46 -0
  12. data/lib/generators/sushi/templates/application.html.haml +22 -0
  13. data/lib/generators/sushi/templates/application_controller.rb +15 -0
  14. data/lib/generators/sushi/templates/dashboard_controller.rb +7 -0
  15. data/lib/generators/sushi/templates/edit.html.erb +5 -0
  16. data/lib/generators/sushi/templates/edit.html.haml +7 -0
  17. data/lib/generators/sushi/templates/index.html.haml +1 -0
  18. data/lib/generators/sushi/templates/indexes_and_defaults.rb +11 -0
  19. data/lib/generators/sushi/templates/layout.sass +17 -0
  20. data/lib/generators/sushi/templates/migrations/ancestry_migration.rb +11 -0
  21. data/lib/generators/sushi/templates/new.html.erb +5 -0
  22. data/lib/generators/sushi/templates/open.css.erb +1 -0
  23. data/lib/generators/sushi/templates/page.html.haml +27 -0
  24. data/lib/generators/sushi/templates/page.rb +60 -0
  25. data/lib/generators/sushi/templates/page_controller.rb +10 -0
  26. data/lib/generators/sushi/templates/page_helper.rb +31 -0
  27. data/lib/generators/sushi/templates/pages_index.html.haml +26 -0
  28. data/lib/generators/sushi/templates/reset.sass +21 -0
  29. data/lib/generators/sushi/templates/show.html.erb +20 -0
  30. data/lib/generators/sushi/templates/show.html.haml +9 -0
  31. data/lib/generators/sushi/templates/style.css.scss +3 -0
  32. data/lib/generators/sushi/templates/style.sass +56 -0
  33. data/lib/generators/sushi/templates/stylesheets_controller.rb +27 -0
  34. data/lib/generators/sushi/templates/superfish.sass +81 -0
  35. data/lib/sushifish/version.rb +1 -1
  36. data/sushifish.gemspec +2 -2
  37. metadata +39 -5
@@ -0,0 +1,8 @@
1
+ Description:
2
+ Explain the generator
3
+
4
+ Example:
5
+ rails generate sushi Thing
6
+
7
+ This will create:
8
+ what/will/it/create
@@ -0,0 +1,117 @@
1
+ require 'rails/generators'
2
+ require 'rails/generators/migration'
3
+
4
+ class SushiGenerator < Rails::Generators::Base
5
+ include Rails::Generators::Migration
6
+ source_root File.expand_path('../templates', __FILE__)
7
+ argument :app_name, :type => :string, :default => "website"
8
+
9
+ # http://stackoverflow.com/questions/6199301/global-access-to-rake-dsl-methods-is-deprecated
10
+ # https://github.com/rails/rails/commit/83f257fc4862642af29056cb5b7dfef6e1303754
11
+ # Fixed in Rails 3.1?
12
+ # def rake_dsl_fix
13
+ # gsub_file "Rakefile", "require File.expand_path('../config/application', __FILE__)", "require File.expand_path('../config/application', __FILE__)\nrequire 'rake/dsl_definition'"
14
+ #
15
+ # gsub_file "Rakefile", "require 'rake'", "require 'rake'\ninclude Rake::DSL"
16
+ # end
17
+
18
+ def create_models
19
+ generate :model, 'page name:string content:text page_title:string meta_keywords:text meta_description:text sidebar_html:text ancestry:string short_nav:string order_by:integer show_in_nav:boolean'
20
+ generate :model, 'stylesheet body:text'
21
+ rake 'db:migrate'
22
+ remove_file '/app/models/page.rb'
23
+ copy_file 'page.rb', 'app/models/page.rb'
24
+ end
25
+
26
+ def indexes_and_defaults
27
+ migration_template 'indexes_and_defaults.rb', 'db/migrate/indexes_and_defaults.rb'
28
+ rake 'db:migrate'
29
+ end
30
+
31
+ def remove_files
32
+ remove_file 'public/index.html' if File.exists?('public/index.html')
33
+ remove_file 'app/views/layouts/application.html.erb' if File.exists?('app/views/layouts/application.html.erb')
34
+ remove_file 'public/images/rails.png' if File.exists?('public/images/rails.png')
35
+ end
36
+
37
+ def add_routes
38
+ route "root :to => 'page#show#index', :page => 'index'"
39
+ route "match ':section(/:page)' => 'page#show#:page', :as => :link"
40
+ route "resources :pages, :module => 'admin'"
41
+ route "resources :messages, :module => 'admin'"
42
+ route "resource :stylesheet"
43
+ route "get 'stylesheets/open'"
44
+ end
45
+
46
+ def copy_files
47
+ copy_file 'admin_pages_controller.rb', 'app/controllers/admin/pages_controller.rb'
48
+ copy_file 'application_controller.rb', 'app/controllers/application_controller.rb'
49
+ copy_file 'dashboard_controller.rb', 'app/controllers/dashboard_controller.rb'
50
+ copy_file 'stylesheets_controller.rb', 'app/controllers/stylesheets_controller.rb'
51
+ copy_file 'page_controller.rb', 'app/controllers/page_controller.rb'
52
+ copy_file 'page_helper.rb', 'app/helpers/page_helper.rb'
53
+ copy_file 'index.html.haml', 'app/views/page/index.html.haml'
54
+ copy_file 'page.html.haml', 'app/views/layouts/page.html.haml'
55
+ template 'application.html.haml', 'app/views/layouts/application.html.haml'
56
+ # copy_file 'style.sass', 'public/stylesheets/sass/style.sass'
57
+ # copy_file 'reset.sass', 'public/stylesheets/sass/reset.sass'
58
+ # copy_file 'admin.sass', 'public/stylesheets/sass/admin.sass'
59
+ # copy_file 'layout.sass', 'public/stylesheets/sass/layout.sass'
60
+ # copy_file 'superfish.sass', 'public/stylesheets/sass/superfish.sass'
61
+ copy_file 'style.css.scss', 'app/assets/stylesheets/style.css.scss'
62
+ copy_file 'show.html.haml', 'app/views/page/show.html.haml'
63
+ copy_file '_header.html.haml', 'app/views/page/_header.html.haml'
64
+ copy_file '_navigation.html.haml', 'app/views/page/_navigation.html.haml'
65
+ copy_file '_sidebar.html.haml', 'app/views/page/_sidebar.html.haml'
66
+ copy_file '_footer.html.haml', 'app/views/page/_footer.html.haml'
67
+ copy_file 'edit.html.erb', 'app/views/admin/pages/edit.html.erb'
68
+ copy_file 'edit.html.haml', 'app/views/stylesheets/edit.html.haml'
69
+ copy_file 'open.css.erb', 'app/views/stylesheets/open.css.erb'
70
+ copy_file 'pages_index.html.haml', 'app/views/admin/pages/index.html.haml'
71
+ copy_file 'new.html.erb', 'app/views/admin/pages/new.html.erb'
72
+ copy_file 'show.html.erb', 'app/views/admin/pages/show.html.erb'
73
+ copy_file '_admin_nav.html.haml', 'app/views/layouts/_admin_nav.html.haml'
74
+ copy_file '_form.html.erb', 'app/views/admin/pages/_form.html.erb'
75
+ end
76
+
77
+ def git_some
78
+ run 'git init'
79
+ run 'git add .'
80
+ run "gc -m 'inital commit'"
81
+ end
82
+
83
+ # def gems
84
+ # gem 'haml', '2.2.24'
85
+ # gem 'jquery-rails'
86
+ # gem 'ancestry'
87
+ #
88
+ # gsub_file "Gemfile", /#.*\n/, "\n"
89
+ # gsub_file "Gemfile", /\n+/, "\n"
90
+ #
91
+ # run 'bundle'
92
+ # end
93
+
94
+ # def jquery_setup
95
+ # generate 'jquery:install --ui'
96
+ # end
97
+
98
+ def seed_data
99
+ append_file 'db/seeds.rb', "Stylesheet.create! :body => '/* inject style here. */'\n"
100
+ append_file 'db/seeds.rb', "Page.create! :name => 'index', :content => 'i am index. i have no data.'"
101
+ rake 'db:seed'
102
+ end
103
+
104
+ def blast_off
105
+ run 'touch tmp/restart.txt'
106
+ end
107
+
108
+ private
109
+
110
+ def self.next_migration_number(dirname)
111
+ if ActiveRecord::Base.timestamped_migrations
112
+ Time.now.utc.strftime("%Y%m%d%H%M%S")
113
+ else
114
+ "%.3d" % (current_migration_number(dirname) + 1)
115
+ end
116
+ end
117
+ end
@@ -0,0 +1,3 @@
1
+ %ul
2
+ %li= link_to "Pages", pages_path
3
+ %li= link_to "Style", edit_stylesheet_path
@@ -0,0 +1,75 @@
1
+ <%= form_for(@page) do |f| %>
2
+ <fieldset class="inputs">
3
+ <% if @page.errors.any? %>
4
+ <div id="error_explanation">
5
+ <h2><%= pluralize(@page.errors.count, "error") %> prohibited this page from being saved:</h2>
6
+
7
+ <ul>
8
+ <% @page.errors.full_messages.each do |msg| %>
9
+ <li><%= msg %></li>
10
+ <% end %>
11
+ </ul>
12
+ </div>
13
+ <% end %>
14
+
15
+ <ol class="main">
16
+
17
+ <li class="string required title">
18
+ <%= f.label :Location %><br />
19
+ <%= f.collection_select :parent_id, Page.all(:order => "name"), :id, :name, :include_blank => true %> /
20
+ <%= f.text_field :name %>
21
+ </li>
22
+ <li class="title">
23
+ <ul class="check_boxes">
24
+ <li class="field">
25
+ <%= f.label "Show in navigation?" %>
26
+ <%= f.check_box :show_in_nav %>
27
+ <p class="inline-hints">check box for item to appear in navigation</p>
28
+ </li>
29
+ </ul>
30
+ </li>
31
+ <li class="string required title">
32
+ <%= f.label :short_nav %><br />
33
+ <%= f.text_field :short_nav %>
34
+ </li>
35
+ <li class="string required title">
36
+ <%= f.label :order %><br />
37
+ <%= f.text_field :order_by %>
38
+ <p class="inline-hints">this will appear in title</p>
39
+ </li>
40
+
41
+ <li class="string required title">
42
+ <%= f.label :title %><br />
43
+ <%= f.text_field :page_title %>
44
+ <p class="inline-hints">this will appear in title</p>
45
+ </li>
46
+ <li class="string required title">
47
+ <%= f.label :meta_keywords %><br />
48
+ <%= f.text_area :meta_keywords, :class => 'small' %>
49
+ </li>
50
+ <li class="string required title">
51
+ <%= f.label :meta_description %><br />
52
+ <%= f.text_area :meta_description, :class => 'small' %>
53
+ </li>
54
+ <li class="string required title">
55
+ <%= f.label :content %><br />
56
+ <%= f.text_area :content %>
57
+ </li>
58
+ <li class="string required title">
59
+ </li>
60
+ <hr>
61
+ <li class="buttons">
62
+ <%= f.submit %>
63
+ </li>
64
+ </ol>
65
+ <div class="sidebar">
66
+ <ol>
67
+ <li class="select required">
68
+ <%= f.label :sidebar %><br />
69
+ <%= f.text_area :sidebar_html %>
70
+ </li>
71
+ </ol>
72
+ </div>
73
+
74
+ </fieldset>
75
+ <% end %>
@@ -0,0 +1,12 @@
1
+ %ul{ :class => "sf-menu" }
2
+ - Page.navigation.each do |root|
3
+ %li
4
+ = link_to root.link, link_path(root.name)
5
+ %ul
6
+ - root.children.show_in_nav.each do |item|
7
+ %li
8
+ = nav_link(item)
9
+ - unless item.children.empty?
10
+ %ul
11
+ - item.children.each do |item|
12
+ %li= nav_link(item)
@@ -0,0 +1,9 @@
1
+ = title @page.page_title
2
+ = page_name @page.name
3
+
4
+ = meta_keywords @page.meta_keywords
5
+ = meta_desc @page.meta_description
6
+
7
+ = @page.content
8
+
9
+ / = sidebar @page.sidebar
@@ -0,0 +1,284 @@
1
+ html
2
+ color: #222
3
+ font-size: 13px
4
+ font-family: "Helvetica Neue", "Lucida Grande", Helvetica, Arial, Verdana, sans-serif
5
+ body
6
+ background-color: #ccc
7
+ #container
8
+ width: 1024px
9
+ margin: 0 auto
10
+ padding: 0
11
+ #header
12
+ background-color: #09275e
13
+ color: #fff
14
+ padding: 10px 25px
15
+ height: 20px
16
+ .user_nav
17
+ float: right
18
+ font-size: 15px
19
+ #navigation
20
+ background-color: #666
21
+ padding: 0 0 0 10px
22
+ margin: 0
23
+ height: 30px
24
+ font-size: 110%
25
+ ul
26
+ margin: 0 0 0 0px
27
+ li
28
+ padding: 6px 0
29
+ float: left
30
+ margin: 0 15px 0 0
31
+ a, a:visited
32
+ color: #fff
33
+ text-decoration: none
34
+ padding: 7px 15px
35
+ a:hover
36
+ background: #999
37
+ color: #333
38
+ padding: 7px 15px
39
+ #flash
40
+ background-color: #000000
41
+ #content
42
+ background-color: #fff
43
+ padding: 10px 20px 25px 20px
44
+ margin: 0
45
+ a, a:visited
46
+ color: #09275e
47
+ text-decoration: none
48
+ font-weight: bold
49
+ ol.main
50
+ float: left
51
+ width: 620px
52
+ ul
53
+ li
54
+ line-height: 17px
55
+ letter-spacing: .2px
56
+ .sidebar
57
+ border-left: 1px solid #c8c8c8
58
+ width: 290px
59
+ margin: 0 0 0 10px
60
+ padding: 0 0 0 10px
61
+ float: right
62
+ #footer
63
+ background-color: #09275e
64
+ color: #fff
65
+ padding: 10px 20px
66
+
67
+ h1
68
+ font-size: 140%
69
+ margin: 15px 0
70
+
71
+
72
+ table
73
+ margin-bottom: 2em
74
+ width: 100%
75
+
76
+ th
77
+ border-bottom: 2px solid #ccc
78
+ font-weight: bold
79
+ text-align: left
80
+
81
+ td
82
+ border-bottom: 1px solid #ddd
83
+
84
+ caption, th, td
85
+ padding: 4px 10px 4px 0
86
+
87
+ caption
88
+ background: #f1f1f1
89
+ padding: 10px 0
90
+ margin-bottom: 1em
91
+
92
+ tr, td, th
93
+ vertical-align: middle
94
+
95
+
96
+ /* Forms
97
+
98
+ input[type="submit"]::-moz-focus-inner
99
+ border: none
100
+
101
+ /*removes dotted outline on submit buttons when clicking in firefox
102
+
103
+ form ol.main
104
+ list-style: none
105
+ margin: 0 0 1em 0
106
+ ol
107
+ margin-left: 0
108
+ li
109
+ margin: 0 0 1em 0
110
+ list-style-position: outside
111
+ ol li
112
+ margin: 0 0 .25em 0
113
+ list-style-position: outside
114
+ li.error input
115
+ background: #FBE3E4
116
+
117
+ form ol
118
+ list-style: none
119
+ margin: 0 0 1em 0
120
+ ol
121
+ margin-left: 0
122
+ li
123
+ margin: 0 0 1em 0
124
+ list-style-position: outside
125
+ ol li
126
+ margin: 0 0 .25em 0
127
+ list-style-position: outside
128
+ li.error input
129
+ background: #FBE3E4
130
+
131
+
132
+
133
+ /*list-style-position fixes IE label margin bug
134
+
135
+ p.inline-errors
136
+ color: #D12F19
137
+
138
+ form
139
+ ol li.file
140
+ background: #e1e1e1
141
+ border: 1px solid #c8c8c8
142
+ padding: 10px
143
+ abbr
144
+ border-bottom: 0
145
+
146
+ label
147
+ display: block
148
+
149
+ .required label
150
+ font-weight: bold
151
+
152
+ .checkbox_field label, .radio_field label
153
+ font-weight: normal
154
+
155
+ a.cancel
156
+ color: #7d0d0d
157
+
158
+ .inline-hints
159
+ font-size: 0.8em
160
+ color: #666
161
+ margin-bottom: 0.25em
162
+
163
+ /* Fieldsets
164
+
165
+ fieldset
166
+ margin: 0 0 1.5em 0
167
+ background: #f1f1f1
168
+ padding: 1.5em 1.5em 1em 1.5em
169
+ border: 1px solid #e3e3e3
170
+ fieldset
171
+ padding: 0
172
+ border: 0
173
+ fieldset
174
+ padding: 0
175
+ border: 0
176
+
177
+ legend
178
+ font-weight: bold
179
+
180
+ fieldset.buttons
181
+ background: inherit
182
+ border: 0
183
+ padding: 0
184
+ li
185
+ display: inline
186
+
187
+ .radio fieldset
188
+ padding: 0
189
+ margin: 0
190
+
191
+ /* Text fields
192
+
193
+ input
194
+ &[type="text"], &[type="password"]
195
+ width: 300px
196
+ padding: 3px 2px
197
+ font-size: inherit
198
+ &[disabled='disabled']
199
+ background-color: #fcfcfc
200
+ cursor: default
201
+ &[type="checkbox"], &[type="radio"]
202
+ margin: 0 3px 0 0
203
+ vertical-align: middle
204
+ position: relative
205
+ top: -2px
206
+
207
+ .check_boxes
208
+ label
209
+ vertical-align: middle
210
+ padding: 0
211
+ display: inline
212
+ font-weight: bold
213
+ margin: 0
214
+ padding: 0
215
+ li
216
+ list-style: none
217
+
218
+ .check
219
+ input
220
+ vertical-align: top
221
+
222
+
223
+ .radio label
224
+ padding: 0
225
+
226
+ /* Textareas
227
+
228
+ textarea
229
+ width: 90%
230
+ height: 200px
231
+ margin: 0 0.5em 0.5em 0
232
+ padding: 5px
233
+ font-size: inherit
234
+
235
+ textarea.wide
236
+ width: 840px
237
+ height: 200px
238
+ margin: 0 0.5em 0.5em 0
239
+ padding: 5px
240
+ font-size: inherit
241
+
242
+ textarea.stylesheet
243
+ width: 100%
244
+ height: 450px
245
+ margin: 0 0.5em 0.5em 0
246
+ padding: 5px
247
+ font-size: 120%
248
+
249
+
250
+ /* Select fields
251
+
252
+ fieldset .select select
253
+ width: 200px
254
+ font-size: 0.9em
255
+
256
+ optgroup
257
+ margin: 0 0 .5em 0
258
+
259
+ /* Date & Time
260
+
261
+ form ol li
262
+ &.date ol li, &.time ol li
263
+ display: inline
264
+ &.datetime
265
+ ol li
266
+ display: inline-block
267
+ select
268
+ display: inline
269
+ width: auto
270
+ &.date select, &.time select
271
+ display: inline
272
+ width: auto
273
+ &.date label, &.time label
274
+ display: none
275
+
276
+ #flash
277
+ margin: 0px 0 10px 0
278
+ width: 620px
279
+ color: #0f0f0f
280
+ font-size: 16px
281
+ .alert, .notice
282
+ background-color: #f5df94
283
+ border: solid 5px #f5d671
284
+ padding: 7px
@@ -0,0 +1,46 @@
1
+ class Admin::PagesController < ApplicationController
2
+ before_filter :authenticate
3
+
4
+ def index
5
+ @pages = Page.order('updated_at desc')
6
+ end
7
+
8
+ def show
9
+ @page = Page.find(params[:id])
10
+ end
11
+
12
+ def new
13
+ @page = Page.new
14
+ end
15
+
16
+ def edit
17
+ @page = Page.find(params[:id])
18
+ end
19
+
20
+ def create
21
+ @page = Page.new(params[:page])
22
+
23
+ if @page.save
24
+ redirect_to(pages_path, :notice => 'Page was successfully created.')
25
+ else
26
+ render :action => "new"
27
+ end
28
+ end
29
+
30
+ def update
31
+ @page = Page.find(params[:id])
32
+
33
+ if @page.update_attributes(params[:page])
34
+ redirect_to(pages_path, :notice => 'Page was successfully updated.')
35
+ else
36
+ render :action => "edit"
37
+ end
38
+ end
39
+
40
+ def destroy
41
+ @page = Page.find(params[:id])
42
+ @page.destroy
43
+
44
+ redirect_to(pages_path, :notice => 'Page was successfully removed.')
45
+ end
46
+ end
@@ -0,0 +1,22 @@
1
+ !!! 5
2
+
3
+ %html
4
+ %head
5
+ %title <%= app_name %>
6
+ = stylesheet_link_tag 'reset','admin'
7
+ = javascript_include_tag :defaults
8
+ = csrf_meta_tag
9
+
10
+ %body{:id => "dashboard"}
11
+ #container
12
+ #header
13
+ <%= app_name %>
14
+ .user_nav
15
+ #navigation
16
+ = render :partial => "layouts/admin_nav"
17
+ #content
18
+ / =render :partial => "layouts/flashes"
19
+ = yield
20
+ #footer
21
+ / =render :partial => "layouts/footer"
22
+ / =render :partial => "layouts/tracking"
@@ -0,0 +1,15 @@
1
+ class ApplicationController < ActionController::Base
2
+ protect_from_forgery
3
+
4
+ protected
5
+
6
+ def authenticate
7
+ authenticate_or_request_with_http_basic do |username, password|
8
+ username == "admin" && password == "p4ss"
9
+ end
10
+ # Only needed if Devise is running
11
+ # warden.custom_failure! if performed?
12
+ end
13
+
14
+
15
+ end
@@ -0,0 +1,7 @@
1
+ class DashboardController < ApplicationController
2
+ before_filter :authenticate
3
+
4
+ def show
5
+ render :action => params[:page]
6
+ end
7
+ end
@@ -0,0 +1,5 @@
1
+ <h1>Editing page</h1>
2
+
3
+ <%= render 'form' %>
4
+
5
+ <%= link_to 'Back', pages_path %>
@@ -0,0 +1,7 @@
1
+ - if notice
2
+ %p.notice= notice
3
+
4
+ = form_for @stylesheet do |f|
5
+ = f.label "Dynamic stylesheet:"
6
+ = f.text_area :body, :class => 'stylesheet'
7
+ = f.submit
@@ -0,0 +1,11 @@
1
+ class IndexesAndDefaults < ActiveRecord::Migration
2
+ def self.up
3
+ change_column_default :pages, :show_in_nav, true
4
+ add_index :pages, :ancestry
5
+ end
6
+
7
+ def self.down
8
+ change_column_default :pages, :show_in_nav, nil
9
+ remove_index :pages, :ancestry
10
+ end
11
+ end
@@ -0,0 +1,17 @@
1
+ !minimum_height = 140px
2
+ html body
3
+ #container
4
+ margin: 0 auto
5
+ width: 980px
6
+ #header
7
+ #navigation
8
+ width: 100%
9
+ height: 35px
10
+ #flash
11
+ #content
12
+ min-height = !minimum_height
13
+ #sidebar
14
+ float: left
15
+ min-height = !minimum_height
16
+ #footer
17
+ clear: both
@@ -0,0 +1,11 @@
1
+ class AddAncestryToPages < ActiveRecord::Migration
2
+ def self.up
3
+ add_column :pages, :ancestry, :string
4
+ add_index :pages, :ancestry
5
+ end
6
+
7
+ def self.down
8
+ remove_column :pages, :ancestry
9
+ remove_index :pages, :ancestry
10
+ end
11
+ end
@@ -0,0 +1,5 @@
1
+ <h1>New page</h1>
2
+
3
+ <%= render 'form' %>
4
+
5
+ <%= link_to 'Back', pages_path %>
@@ -0,0 +1 @@
1
+ <%= @style %>
@@ -0,0 +1,27 @@
1
+ !!! 5
2
+
3
+ %html
4
+ %head
5
+ %title= yield(:title) || "Website"
6
+ %meta{:name => 'description', :content => "#{yield(:meta_desc)}"}
7
+ %meta{:name => "keywords", :content => "#{yield(:meta_keywords)}"}
8
+
9
+ = stylesheet_link_tag 'superfish', 'open'
10
+ = javascript_include_tag :defaults
11
+ = csrf_meta_tag
12
+
13
+ %body{:id => "#{yield(:page_name)}" || "default"}
14
+
15
+ #container
16
+ #header
17
+ = render 'header'
18
+ #navigation
19
+ = render 'navigation'
20
+ #content
21
+ = yield
22
+ #sidebar
23
+ = render 'sidebar'
24
+ #sidebar_html
25
+ #{yield(:sidebar)}
26
+ #footer
27
+ = render 'footer'
@@ -0,0 +1,60 @@
1
+ class Page < ActiveRecord::Base
2
+ validates_presence_of :name
3
+ validates_uniqueness_of :name
4
+ before_save :downcase_name
5
+ has_ancestry
6
+
7
+ def title
8
+ name.titleize
9
+ end
10
+
11
+ def search_result_title
12
+ r = page_title.split(' | ')
13
+ r[0]
14
+ end
15
+
16
+ def title
17
+ name.titleize
18
+ end
19
+
20
+ def link
21
+ short_nav.blank? ? title : short_nav
22
+ end
23
+
24
+ def nav_path
25
+ name
26
+ # if nominal
27
+ # if children.count > 0
28
+ # children.first.name
29
+ # else
30
+ # ""
31
+ # end
32
+ # else
33
+ # name
34
+ # end
35
+ end
36
+
37
+ scope :visible, where("visible = ?", true).order('id')
38
+ scope :home, where("page_type = ?", 'home')
39
+ scope :has_ancestors, where(:ancestry => nil)
40
+ scope :show_in_nav, where("show_in_nav = ?", true)
41
+ scope :sorted, order("order_by")
42
+
43
+ def self.navigation
44
+ has_ancestors.show_in_nav.sorted
45
+ end
46
+
47
+ def self.search(search)
48
+ if search
49
+ find(:all, :conditions => ['name LIKE ? OR content LIKE ? OR page_title LIKE ? OR meta_keywords LIKE ? OR meta_description LIKE ?', "%#{search}%", "%#{search}%", "%#{search}%", "%#{search}%", "%#{search}%"])
50
+ else
51
+ find(:all)
52
+ end
53
+ end
54
+
55
+ private
56
+
57
+ def downcase_name
58
+ self.name.downcase! unless self.name.blank?
59
+ end
60
+ end
@@ -0,0 +1,10 @@
1
+ class PageController < ApplicationController
2
+ def show
3
+ page = params[:page] || params[:section]
4
+ @page = Page.find_by_name page
5
+
6
+ if !@page
7
+ render :action => params[:page]
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,31 @@
1
+ module PageHelper
2
+ def title(page_title)
3
+ content_for(:title) { page_title.to_s + " | Application Name" }
4
+ end
5
+
6
+ def page_name(name)
7
+ content_for(:page_name) { name.to_s }
8
+ end
9
+
10
+ def meta_desc(desc)
11
+ content_for(:meta_desc) { desc.to_s }
12
+ end
13
+
14
+ def meta_keywords(desc)
15
+ content_for(:meta_keywords) { desc.to_s }
16
+ end
17
+
18
+ def sidebar(content)
19
+ content_for(:sidebar) { content.to_s }
20
+ end
21
+
22
+ def nav_link(page)
23
+ # link_to page.titleize, page_path(page.downcase), :id => page
24
+ if page.nav_path == ""
25
+ link_to page.link, '#'
26
+ else
27
+ link_to page.link, link_path(page.root.name, page.nav_path)
28
+ end
29
+ end
30
+
31
+ end
@@ -0,0 +1,26 @@
1
+ %h1 Listing pages
2
+
3
+ %table{:class => "tablesorter"}
4
+ %thead
5
+ %tr
6
+ %th{:width => 200} Name
7
+ %th{:width => 290} Content
8
+ / %th{:width => 100} Type
9
+ / %th{:width => 120} Visible
10
+ / %th{:width => 170} Section
11
+ %th
12
+ %th
13
+ %tbody
14
+ - @pages.each do |page|
15
+ %tr
16
+ %td= page.name
17
+ %td= truncate page.content, :length => 60
18
+ / %td= page.page_type
19
+ / %td= page.visible
20
+ / %td= page.section
21
+ / %td= page.contactform
22
+ / %td= page.accordion
23
+ %td= link_to 'Edit', edit_page_path(page)
24
+ %td= link_to 'Destroy', [page], :confirm => 'Are you sure?', :method => :delete
25
+
26
+ = link_to 'New Page', new_page_path
@@ -0,0 +1,21 @@
1
+ html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, font, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td
2
+ margin: 0
3
+ padding: 0
4
+ font-size: 100%
5
+ vertical-align: baseline
6
+ border: 0
7
+ outline: 0
8
+ background: transparent
9
+
10
+ ol, ul
11
+ list-style: none
12
+
13
+ blockquote, q
14
+ quotes: none
15
+
16
+ \:focus
17
+ outline: 0
18
+
19
+ table
20
+ border-collapse: collapse
21
+ border-spacing: 0
@@ -0,0 +1,20 @@
1
+ <p id="notice"><%= notice %></p>
2
+
3
+ <p>
4
+ <b>Name:</b>
5
+ <%= @page.name %>
6
+ </p>
7
+
8
+ <p>
9
+ <b>Content:</b>
10
+ <%= @page.content %>
11
+ </p>
12
+
13
+ <p>
14
+ <b>Visible:</b>
15
+ <%= @page.visible %>
16
+ </p>
17
+
18
+
19
+ <%= link_to 'Edit', edit_page_path(@page) %> |
20
+ <%= link_to 'Back', pages_path %>
@@ -0,0 +1,9 @@
1
+ = title @page.title
2
+ = page_name @page.name
3
+
4
+ = meta_keywords @page.meta_keywords
5
+ = meta_desc @page.meta_description
6
+
7
+ = @page.content.html_safe
8
+
9
+ = sidebar @page.sidebar_html.html_safe if @page.sidebar_html
@@ -0,0 +1,3 @@
1
+ html{
2
+ font: 13px/1.5em "Lucida Grande", calibri, Tahoma, Arial
3
+ }
@@ -0,0 +1,56 @@
1
+ @import layout.sass
2
+
3
+ html
4
+ font: 13px/1.5em "Lucida Grande", calibri, Tahoma, Arial
5
+ body
6
+ #container
7
+ font-size: 1em
8
+ #header
9
+ color: #fff
10
+ #navigation
11
+ ul
12
+ float: left
13
+ #content
14
+ float: left
15
+ padding: 10px
16
+ h1, h2
17
+ margin: 10px 0 15px
18
+ p
19
+ margin: 10px 0 15px 0
20
+ #sidebar
21
+ color: #aaa
22
+ float: left
23
+ #footer
24
+ color: #aaa
25
+ clear: both
26
+
27
+ a,a:visited
28
+ color: #003399
29
+ text-decoration: none
30
+
31
+ h1, h2, h3, h4, h5, h6
32
+ font-family: helvetica, arial, verdana, sans-serif
33
+ font-weight: normal
34
+
35
+ h1
36
+ font-size: 208%
37
+
38
+ h2
39
+ font-size: 164%
40
+
41
+ h3
42
+ font-size: 145%
43
+
44
+ h4
45
+ font-size: 118%
46
+
47
+
48
+ // #flash
49
+ // margin: 10px 0
50
+ // width: 720px
51
+ // color: #0f0f0f
52
+ // font-size: 16px
53
+ // .alert, .notice
54
+ // background-color: #F5DF94
55
+ // border: solid 5px #F5D671
56
+ // padding: 7px
@@ -0,0 +1,27 @@
1
+ class StylesheetsController < ApplicationController
2
+ def open
3
+ stylesheet = get_stylesheet
4
+ @style = stylesheet.body
5
+ end
6
+
7
+ def edit
8
+ @stylesheet = get_stylesheet
9
+ end
10
+
11
+ def update
12
+ @stylesheet = get_stylesheet
13
+
14
+ if @stylesheet.update_attributes(params[:stylesheet])
15
+ redirect_to(edit_stylesheet_path, :notice => 'Stylesheet was successfully updated.')
16
+ else
17
+ render :action => "edit"
18
+ end
19
+
20
+ end
21
+
22
+ private
23
+
24
+ def get_stylesheet
25
+ Stylesheet.first
26
+ end
27
+ end
@@ -0,0 +1,81 @@
1
+ /*** ESSENTIAL STYLES **
2
+ !ul_width = 16em
3
+
4
+ .sf-menu
5
+ margin: 0
6
+ padding: 0
7
+ list-style: none
8
+ *
9
+ margin: 0
10
+ padding: 0
11
+ list-style: none
12
+ line-height: 1em
13
+ ul
14
+ position: absolute
15
+ top: -999em
16
+ width: !ul_width
17
+ /* left offset of submenus need to match (see below)
18
+ li
19
+ width: 100%
20
+ li
21
+ &:hover
22
+ visibility: inherit
23
+ /* fixes IE7 'sticky bug'
24
+ float: left
25
+ position: relative
26
+ a
27
+ display: block
28
+ position: relative
29
+ li
30
+ &:hover ul, &.sfHover ul
31
+ left: 0
32
+ top: 2.7em
33
+ /* match top ul list item height
34
+ z-index: 99
35
+
36
+ ul.sf-menu li
37
+ &:hover li ul, &.sfHover li ul
38
+ top: -999em
39
+ li
40
+ &:hover ul, &.sfHover ul
41
+ left: !ul_width
42
+ /* match ul width
43
+ top: 0
44
+ &:hover li ul, &.sfHover li ul
45
+ top: -999em
46
+ li
47
+ &:hover ul, &.sfHover ul
48
+ left: !ul_width
49
+ /* match ul width
50
+ top: 0
51
+
52
+ /*** Styling **
53
+
54
+ .sf-menu
55
+ float: left
56
+ margin-bottom: 1em
57
+ a
58
+ padding: .4em .85em
59
+ text-decoration: none
60
+ /* visited pseudo selector so IE6 applies text colour
61
+ color: #fff
62
+ &:visited
63
+ /* visited pseudo selector so IE6 applies text colour
64
+ color: #fff
65
+ li
66
+ background: #000
67
+ padding: .4em 0
68
+ margin: 0
69
+ li
70
+ background: #000
71
+ padding: .4em 0
72
+ margin: 0
73
+ li
74
+ background: #000
75
+ &:hover, &.sfHover
76
+ background: #666
77
+ outline: 0
78
+ a
79
+ &:focus, &:hover, &:active
80
+ background: #666
81
+ outline: 0
@@ -1,3 +1,3 @@
1
1
  module Sushifish
2
- VERSION = "0.0.1"
2
+ VERSION = "0.9.0"
3
3
  end
@@ -8,8 +8,8 @@ Gem::Specification.new do |s|
8
8
  s.authors = ["Travis"]
9
9
  s.email = ["travis@impossiblecreature.com"]
10
10
  s.homepage = ""
11
- s.summary = %q{This is the new and improved Creature CMS.}
12
- s.description = %q{This is the new and improved Creature CMS that will likely power many of the straight up content websites we build for our clients.}
11
+ s.summary = %q{The firt public version of the infamous Sushi Gem.}
12
+ s.description = %q{Sushi Fish is a generator that gives a raw rails app ready for content. It is a great starting point to a CMS driven site.}
13
13
 
14
14
  s.rubyforge_project = "sushifish"
15
15
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sushifish
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
4
+ hash: 59
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
+ - 9
8
9
  - 0
9
- - 1
10
- version: 0.0.1
10
+ version: 0.9.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Travis
@@ -19,7 +19,7 @@ date: 2012-02-06 00:00:00 -06:00
19
19
  default_executable:
20
20
  dependencies: []
21
21
 
22
- description: This is the new and improved Creature CMS that will likely power many of the straight up content websites we build for our clients.
22
+ description: Sushi Fish is a generator that gives a raw rails app ready for content. It is a great starting point to a CMS driven site.
23
23
  email:
24
24
  - travis@impossiblecreature.com
25
25
  executables: []
@@ -32,6 +32,40 @@ files:
32
32
  - .gitignore
33
33
  - Gemfile
34
34
  - Rakefile
35
+ - lib/generators/USAGE
36
+ - lib/generators/sushi/sushi_generator.rb
37
+ - lib/generators/sushi/templates/_admin_nav.html.haml
38
+ - lib/generators/sushi/templates/_footer.html.haml
39
+ - lib/generators/sushi/templates/_form.html.erb
40
+ - lib/generators/sushi/templates/_header.html.haml
41
+ - lib/generators/sushi/templates/_navigation.html.haml
42
+ - lib/generators/sushi/templates/_page.html.haml
43
+ - lib/generators/sushi/templates/_sidebar.html.haml
44
+ - lib/generators/sushi/templates/admin.sass
45
+ - lib/generators/sushi/templates/admin_pages_controller.rb
46
+ - lib/generators/sushi/templates/application.html.haml
47
+ - lib/generators/sushi/templates/application_controller.rb
48
+ - lib/generators/sushi/templates/dashboard_controller.rb
49
+ - lib/generators/sushi/templates/edit.html.erb
50
+ - lib/generators/sushi/templates/edit.html.haml
51
+ - lib/generators/sushi/templates/index.html.haml
52
+ - lib/generators/sushi/templates/indexes_and_defaults.rb
53
+ - lib/generators/sushi/templates/layout.sass
54
+ - lib/generators/sushi/templates/migrations/ancestry_migration.rb
55
+ - lib/generators/sushi/templates/new.html.erb
56
+ - lib/generators/sushi/templates/open.css.erb
57
+ - lib/generators/sushi/templates/page.html.haml
58
+ - lib/generators/sushi/templates/page.rb
59
+ - lib/generators/sushi/templates/page_controller.rb
60
+ - lib/generators/sushi/templates/page_helper.rb
61
+ - lib/generators/sushi/templates/pages_index.html.haml
62
+ - lib/generators/sushi/templates/reset.sass
63
+ - lib/generators/sushi/templates/show.html.erb
64
+ - lib/generators/sushi/templates/show.html.haml
65
+ - lib/generators/sushi/templates/style.css.scss
66
+ - lib/generators/sushi/templates/style.sass
67
+ - lib/generators/sushi/templates/stylesheets_controller.rb
68
+ - lib/generators/sushi/templates/superfish.sass
35
69
  - lib/sushifish.rb
36
70
  - lib/sushifish/version.rb
37
71
  - sushifish.gemspec
@@ -68,6 +102,6 @@ rubyforge_project: sushifish
68
102
  rubygems_version: 1.4.1
69
103
  signing_key:
70
104
  specification_version: 3
71
- summary: This is the new and improved Creature CMS.
105
+ summary: The firt public version of the infamous Sushi Gem.
72
106
  test_files: []
73
107