goldberg_generator 0.2.2

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 (186) hide show
  1. data/USAGE +34 -0
  2. data/goldberg_generator.rb +463 -0
  3. data/templates/README_GOLDBERG +22 -0
  4. data/templates/app/views/layouts/application.rhtml +80 -0
  5. data/templates/layouts/ewnf/README +8 -0
  6. data/templates/layouts/ewnf/app/views/layouts/application.rhtml +74 -0
  7. data/templates/layouts/ewnf/public/images/bg.gif +0 -0
  8. data/templates/layouts/ewnf/public/images/daddy_rightarrow.gif +0 -0
  9. data/templates/layouts/ewnf/public/images/sample.jpg +0 -0
  10. data/templates/layouts/ewnf/public/images/title_img.jpg +0 -0
  11. data/templates/layouts/ewnf/public/stylesheets/layout.css +223 -0
  12. data/templates/layouts/snooker/app/views/layouts/application.rhtml +74 -0
  13. data/templates/layouts/snooker/public/images/column_200.png +0 -0
  14. data/templates/layouts/snooker/public/images/daddy_rightarrow.gif +0 -0
  15. data/templates/layouts/snooker/public/images/footer_bg.png +0 -0
  16. data/templates/layouts/snooker/public/images/logo.jpg +0 -0
  17. data/templates/layouts/snooker/public/stylesheets/layout.css +183 -0
  18. data/templates/layouts/spoiled_brat/LICENSE.txt +211 -0
  19. data/templates/layouts/spoiled_brat/README +8 -0
  20. data/templates/layouts/spoiled_brat/app/views/layouts/application.rhtml +71 -0
  21. data/templates/layouts/spoiled_brat/public/images/blockquote-bg.gif +0 -0
  22. data/templates/layouts/spoiled_brat/public/images/body-bg.jpg +0 -0
  23. data/templates/layouts/spoiled_brat/public/images/centerColumn-bg.jpg +0 -0
  24. data/templates/layouts/spoiled_brat/public/images/daddy_leftarrow.gif +0 -0
  25. data/templates/layouts/spoiled_brat/public/images/h2-bg.gif +0 -0
  26. data/templates/layouts/spoiled_brat/public/images/h3-bg.gif +0 -0
  27. data/templates/layouts/spoiled_brat/public/images/header-bg.jpg +0 -0
  28. data/templates/layouts/spoiled_brat/public/images/hr-bg.jpg +0 -0
  29. data/templates/layouts/spoiled_brat/public/images/logo.jpg +0 -0
  30. data/templates/layouts/spoiled_brat/public/stylesheets/layout.css +379 -0
  31. data/templates/public/goldberg/images/action.png +0 -0
  32. data/templates/public/goldberg/images/add.png +0 -0
  33. data/templates/public/goldberg/images/bodybg.jpg +0 -0
  34. data/templates/public/goldberg/images/delete.png +0 -0
  35. data/templates/public/goldberg/images/down.png +0 -0
  36. data/templates/public/goldberg/images/footerbg.jpg +0 -0
  37. data/templates/public/goldberg/images/logo_right.jpg +0 -0
  38. data/templates/public/goldberg/images/menuhover.jpg +0 -0
  39. data/templates/public/goldberg/images/page.png +0 -0
  40. data/templates/public/goldberg/images/permission.png +0 -0
  41. data/templates/public/goldberg/images/role.png +0 -0
  42. data/templates/public/goldberg/images/up.png +0 -0
  43. data/templates/public/goldberg/javascripts/suckerfish.js +12 -0
  44. data/templates/public/goldberg/stylesheets/goldberg.css +142 -0
  45. data/templates/public/goldberg/stylesheets/layout.css +321 -0
  46. data/templates/public/goldberg/stylesheets/suckerfish.css +124 -0
  47. data/templates/vendor/plugins/goldberg/app/controllers/goldberg/auth_controller.rb +104 -0
  48. data/templates/vendor/plugins/goldberg/app/controllers/goldberg/content_pages_controller.rb +197 -0
  49. data/templates/vendor/plugins/goldberg/app/controllers/goldberg/controller_actions_controller.rb +134 -0
  50. data/templates/vendor/plugins/goldberg/app/controllers/goldberg/menu_items_controller.rb +184 -0
  51. data/templates/vendor/plugins/goldberg/app/controllers/goldberg/permissions_controller.rb +60 -0
  52. data/templates/vendor/plugins/goldberg/app/controllers/goldberg/roles_controller.rb +85 -0
  53. data/templates/vendor/plugins/goldberg/app/controllers/goldberg/roles_permissions_controller.rb +65 -0
  54. data/templates/vendor/plugins/goldberg/app/controllers/goldberg/site_controllers_controller.rb +157 -0
  55. data/templates/vendor/plugins/goldberg/app/controllers/goldberg/system_settings_controller.rb +75 -0
  56. data/templates/vendor/plugins/goldberg/app/controllers/goldberg/users_controller.rb +293 -0
  57. data/templates/vendor/plugins/goldberg/app/helpers/goldberg/auth_helper.rb +4 -0
  58. data/templates/vendor/plugins/goldberg/app/helpers/goldberg/content_pages_helper.rb +23 -0
  59. data/templates/vendor/plugins/goldberg/app/helpers/goldberg/controller_actions_helper.rb +5 -0
  60. data/templates/vendor/plugins/goldberg/app/helpers/goldberg/menu_items_helper.rb +4 -0
  61. data/templates/vendor/plugins/goldberg/app/helpers/goldberg/permissions_helper.rb +4 -0
  62. data/templates/vendor/plugins/goldberg/app/helpers/goldberg/roles_helper.rb +4 -0
  63. data/templates/vendor/plugins/goldberg/app/helpers/goldberg/roles_permissions_helper.rb +4 -0
  64. data/templates/vendor/plugins/goldberg/app/helpers/goldberg/site_controllers_helper.rb +4 -0
  65. data/templates/vendor/plugins/goldberg/app/helpers/goldberg/system_settings_helper.rb +4 -0
  66. data/templates/vendor/plugins/goldberg/app/helpers/goldberg/users_helper.rb +4 -0
  67. data/templates/vendor/plugins/goldberg/app/models/goldberg/content_page.rb +134 -0
  68. data/templates/vendor/plugins/goldberg/app/models/goldberg/controller_action.rb +86 -0
  69. data/templates/vendor/plugins/goldberg/app/models/goldberg/credentials.rb +128 -0
  70. data/templates/vendor/plugins/goldberg/app/models/goldberg/menu.rb +198 -0
  71. data/templates/vendor/plugins/goldberg/app/models/goldberg/menu_item.rb +127 -0
  72. data/templates/vendor/plugins/goldberg/app/models/goldberg/permission.rb +37 -0
  73. data/templates/vendor/plugins/goldberg/app/models/goldberg/role.rb +68 -0
  74. data/templates/vendor/plugins/goldberg/app/models/goldberg/roles_permission.rb +18 -0
  75. data/templates/vendor/plugins/goldberg/app/models/goldberg/site_controller.rb +59 -0
  76. data/templates/vendor/plugins/goldberg/app/models/goldberg/system_settings.rb +112 -0
  77. data/templates/vendor/plugins/goldberg/app/models/goldberg/user.rb +69 -0
  78. data/templates/vendor/plugins/goldberg/app/models/goldberg/user_mailer.rb +43 -0
  79. data/templates/vendor/plugins/goldberg/app/views/goldberg/auth/_login.rhtml +15 -0
  80. data/templates/vendor/plugins/goldberg/app/views/goldberg/auth/login.rhtml +22 -0
  81. data/templates/vendor/plugins/goldberg/app/views/goldberg/auth/logout.rhtml +2 -0
  82. data/templates/vendor/plugins/goldberg/app/views/goldberg/content_pages/_fck_create_folder.rxml +6 -0
  83. data/templates/vendor/plugins/goldberg/app/views/goldberg/content_pages/_fck_files.rxml +19 -0
  84. data/templates/vendor/plugins/goldberg/app/views/goldberg/content_pages/_form.rhtml +32 -0
  85. data/templates/vendor/plugins/goldberg/app/views/goldberg/content_pages/edit.rhtml +10 -0
  86. data/templates/vendor/plugins/goldberg/app/views/goldberg/content_pages/fck_speller_pages.rhtml +58 -0
  87. data/templates/vendor/plugins/goldberg/app/views/goldberg/content_pages/list.rhtml +22 -0
  88. data/templates/vendor/plugins/goldberg/app/views/goldberg/content_pages/new.rhtml +8 -0
  89. data/templates/vendor/plugins/goldberg/app/views/goldberg/content_pages/show.rhtml +57 -0
  90. data/templates/vendor/plugins/goldberg/app/views/goldberg/content_pages/view.rhtml +1 -0
  91. data/templates/vendor/plugins/goldberg/app/views/goldberg/content_pages/view_default.rhtml +1 -0
  92. data/templates/vendor/plugins/goldberg/app/views/goldberg/controller_actions/_form.rhtml +53 -0
  93. data/templates/vendor/plugins/goldberg/app/views/goldberg/controller_actions/edit.rhtml +9 -0
  94. data/templates/vendor/plugins/goldberg/app/views/goldberg/controller_actions/list.rhtml +27 -0
  95. data/templates/vendor/plugins/goldberg/app/views/goldberg/controller_actions/new.rhtml +10 -0
  96. data/templates/vendor/plugins/goldberg/app/views/goldberg/controller_actions/show.rhtml +13 -0
  97. data/templates/vendor/plugins/goldberg/app/views/goldberg/layouts/_tabpanel_js.rhtml +52 -0
  98. data/templates/vendor/plugins/goldberg/app/views/goldberg/layouts/_tabpanel_list.rhtml +7 -0
  99. data/templates/vendor/plugins/goldberg/app/views/goldberg/menu_items/_breadcrumbs.rhtml +5 -0
  100. data/templates/vendor/plugins/goldberg/app/views/goldberg/menu_items/_form.rhtml +42 -0
  101. data/templates/vendor/plugins/goldberg/app/views/goldberg/menu_items/_item_list.rhtml +52 -0
  102. data/templates/vendor/plugins/goldberg/app/views/goldberg/menu_items/_item_parent_list.rhtml +15 -0
  103. data/templates/vendor/plugins/goldberg/app/views/goldberg/menu_items/_menubar.rhtml +21 -0
  104. data/templates/vendor/plugins/goldberg/app/views/goldberg/menu_items/_suckerfish.rhtml +14 -0
  105. data/templates/vendor/plugins/goldberg/app/views/goldberg/menu_items/edit.rhtml +10 -0
  106. data/templates/vendor/plugins/goldberg/app/views/goldberg/menu_items/list-original.rhtml +27 -0
  107. data/templates/vendor/plugins/goldberg/app/views/goldberg/menu_items/list.rhtml +16 -0
  108. data/templates/vendor/plugins/goldberg/app/views/goldberg/menu_items/new.rhtml +9 -0
  109. data/templates/vendor/plugins/goldberg/app/views/goldberg/menu_items/show.rhtml +8 -0
  110. data/templates/vendor/plugins/goldberg/app/views/goldberg/permissions/_form.rhtml +7 -0
  111. data/templates/vendor/plugins/goldberg/app/views/goldberg/permissions/edit.rhtml +9 -0
  112. data/templates/vendor/plugins/goldberg/app/views/goldberg/permissions/list.rhtml +14 -0
  113. data/templates/vendor/plugins/goldberg/app/views/goldberg/permissions/new.rhtml +8 -0
  114. data/templates/vendor/plugins/goldberg/app/views/goldberg/permissions/show.rhtml +38 -0
  115. data/templates/vendor/plugins/goldberg/app/views/goldberg/roles/_form.rhtml +18 -0
  116. data/templates/vendor/plugins/goldberg/app/views/goldberg/roles/edit.rhtml +9 -0
  117. data/templates/vendor/plugins/goldberg/app/views/goldberg/roles/list.rhtml +21 -0
  118. data/templates/vendor/plugins/goldberg/app/views/goldberg/roles/new.rhtml +8 -0
  119. data/templates/vendor/plugins/goldberg/app/views/goldberg/roles/show.rhtml +79 -0
  120. data/templates/vendor/plugins/goldberg/app/views/goldberg/roles_permissions/_form.rhtml +13 -0
  121. data/templates/vendor/plugins/goldberg/app/views/goldberg/roles_permissions/edit.rhtml +9 -0
  122. data/templates/vendor/plugins/goldberg/app/views/goldberg/roles_permissions/list.rhtml +24 -0
  123. data/templates/vendor/plugins/goldberg/app/views/goldberg/roles_permissions/new.rhtml +8 -0
  124. data/templates/vendor/plugins/goldberg/app/views/goldberg/roles_permissions/new_permission_for_role.rhtml +8 -0
  125. data/templates/vendor/plugins/goldberg/app/views/goldberg/roles_permissions/show.rhtml +8 -0
  126. data/templates/vendor/plugins/goldberg/app/views/goldberg/site_controllers/_form.rhtml +15 -0
  127. data/templates/vendor/plugins/goldberg/app/views/goldberg/site_controllers/_list.rhtml +26 -0
  128. data/templates/vendor/plugins/goldberg/app/views/goldberg/site_controllers/edit.rhtml +9 -0
  129. data/templates/vendor/plugins/goldberg/app/views/goldberg/site_controllers/list.rhtml +107 -0
  130. data/templates/vendor/plugins/goldberg/app/views/goldberg/site_controllers/new.rhtml +8 -0
  131. data/templates/vendor/plugins/goldberg/app/views/goldberg/site_controllers/show.rhtml +38 -0
  132. data/templates/vendor/plugins/goldberg/app/views/goldberg/system_settings/_form.rhtml +71 -0
  133. data/templates/vendor/plugins/goldberg/app/views/goldberg/system_settings/edit.rhtml +9 -0
  134. data/templates/vendor/plugins/goldberg/app/views/goldberg/system_settings/list.rhtml +27 -0
  135. data/templates/vendor/plugins/goldberg/app/views/goldberg/system_settings/new.rhtml +8 -0
  136. data/templates/vendor/plugins/goldberg/app/views/goldberg/system_settings/show.rhtml +189 -0
  137. data/templates/vendor/plugins/goldberg/app/views/goldberg/user_mailer/confirmation_request.rhtml +19 -0
  138. data/templates/vendor/plugins/goldberg/app/views/goldberg/user_mailer/reset_password.rhtml +17 -0
  139. data/templates/vendor/plugins/goldberg/app/views/goldberg/user_mailer/reset_password_request.rhtml +23 -0
  140. data/templates/vendor/plugins/goldberg/app/views/goldberg/users/_form.rhtml +53 -0
  141. data/templates/vendor/plugins/goldberg/app/views/goldberg/users/confirm_registration.rhtml +26 -0
  142. data/templates/vendor/plugins/goldberg/app/views/goldberg/users/confirm_registration_submit.rhtml +4 -0
  143. data/templates/vendor/plugins/goldberg/app/views/goldberg/users/create.rhtml +19 -0
  144. data/templates/vendor/plugins/goldberg/app/views/goldberg/users/edit.rhtml +11 -0
  145. data/templates/vendor/plugins/goldberg/app/views/goldberg/users/forgot_password.rhtml +27 -0
  146. data/templates/vendor/plugins/goldberg/app/views/goldberg/users/forgot_password_submit.rhtml +4 -0
  147. data/templates/vendor/plugins/goldberg/app/views/goldberg/users/list.rhtml +18 -0
  148. data/templates/vendor/plugins/goldberg/app/views/goldberg/users/new.rhtml +19 -0
  149. data/templates/vendor/plugins/goldberg/app/views/goldberg/users/reset_password.rhtml +11 -0
  150. data/templates/vendor/plugins/goldberg/app/views/goldberg/users/reset_password_submit.rhtml +3 -0
  151. data/templates/vendor/plugins/goldberg/app/views/goldberg/users/show.rhtml +33 -0
  152. data/templates/vendor/plugins/goldberg/db/ContentPage.yml +466 -0
  153. data/templates/vendor/plugins/goldberg/db/ControllerAction.yml +162 -0
  154. data/templates/vendor/plugins/goldberg/db/MenuItem.yml +109 -0
  155. data/templates/vendor/plugins/goldberg/db/Permission.yml +21 -0
  156. data/templates/vendor/plugins/goldberg/db/Role.yml +493 -0
  157. data/templates/vendor/plugins/goldberg/db/RolesPermission.yml +26 -0
  158. data/templates/vendor/plugins/goldberg/db/SiteController.yml +61 -0
  159. data/templates/vendor/plugins/goldberg/db/SystemSettings.yml +21 -0
  160. data/templates/vendor/plugins/goldberg/db/User.yml +15 -0
  161. data/templates/vendor/plugins/goldberg/db/migrate/001_initial_setup.rb +128 -0
  162. data/templates/vendor/plugins/goldberg/db/migrate/002_menu_rest_items_users_cached_content_pages.rb +26 -0
  163. data/templates/vendor/plugins/goldberg/db/migrate/003_self_registration.rb +54 -0
  164. data/templates/vendor/plugins/goldberg/db/migrate/004_column_fixes.rb +119 -0
  165. data/templates/vendor/plugins/goldberg/init.rb +13 -0
  166. data/templates/vendor/plugins/goldberg/lib/goldberg.rb +37 -0
  167. data/templates/vendor/plugins/goldberg/lib/goldberg/controller.rb +11 -0
  168. data/templates/vendor/plugins/goldberg/lib/goldberg/filters.rb +197 -0
  169. data/templates/vendor/plugins/goldberg/lib/goldberg/helper.rb +66 -0
  170. data/templates/vendor/plugins/goldberg/lib/goldberg/migration.rb +113 -0
  171. data/templates/vendor/plugins/goldberg/lib/goldberg/migrator.rb +128 -0
  172. data/templates/vendor/plugins/goldberg/lib/goldberg/model.rb +110 -0
  173. data/templates/vendor/plugins/goldberg/lib/goldberg/routes.rb +49 -0
  174. data/templates/vendor/plugins/goldberg/lib/goldberg/test_helper.rb +82 -0
  175. data/templates/vendor/plugins/goldberg/tasks/goldberg_tasks.rake +47 -0
  176. data/templates/vendor/plugins/goldberg/test/functional/content_pages_controller_test.rb +31 -0
  177. data/templates/vendor/plugins/goldberg/test/integration/security_test.rb +134 -0
  178. data/templates/vendor/plugins/goldberg/test/test_helper.rb +40 -0
  179. data/templates/vendor/plugins/goldberg/test/unit/content_page_test.rb +87 -0
  180. data/templates/vendor/plugins/goldberg/test/unit/controller_action_test.rb +85 -0
  181. data/templates/vendor/plugins/goldberg/test/unit/menu_item_test.rb +46 -0
  182. data/templates/vendor/plugins/goldberg/test/unit/permission_test.rb +35 -0
  183. data/templates/vendor/plugins/goldberg/test/unit/site_controller_test.rb +53 -0
  184. data/templates/vendor/plugins/goldberg/test/unit/system_settings_test.rb +71 -0
  185. data/templates/vendor/plugins/goldberg/test/unit/user_test.rb +104 -0
  186. metadata +310 -0
@@ -0,0 +1,197 @@
1
+ module Goldberg
2
+ class ContentPagesController < ApplicationController
3
+ include Goldberg::Controller
4
+
5
+ # GETs should be safe (see http://www.w3.org/2001/tag/doc/whenToUseGet.html)
6
+ verify :method => :post, :only => [ :destroy, :create, :update ],
7
+ :redirect_to => { :action => :list }
8
+
9
+ def index
10
+ list
11
+ render :action => 'list'
12
+ end
13
+
14
+ def list
15
+ @content_pages = ContentPage.find(:all, :order => 'name')
16
+ end
17
+
18
+ def show
19
+ @content_page = ContentPage.find(params[:id])
20
+ foreign
21
+ end
22
+
23
+ def view
24
+ @content_page = ContentPage.find_by_name(params[:page_name].join('/'))
25
+ if not @content_page
26
+ if Goldberg.settings
27
+ @content_page = ContentPage.find(Goldberg.settings.not_found_page_id)
28
+ else
29
+ @content_page = ContentPage.new(:id => nil,
30
+ :content => '(no such page)')
31
+ end
32
+ end
33
+ end
34
+
35
+ def view_default
36
+ if Goldberg.settings
37
+ @content_page = ContentPage.find(Goldberg.settings.site_default_page_id)
38
+ else
39
+ @content_page = ContentPage.new(:id => nil,
40
+ :content => '(Site not configured)')
41
+ end
42
+ end
43
+
44
+ def new
45
+ @content_page = ContentPage.new
46
+ foreign
47
+ @content_page.markup_style = @markup_styles.first
48
+ end
49
+
50
+ def create
51
+ @content_page = ContentPage.new(params[:content_page])
52
+ if @content_page.save
53
+ flash[:notice] = 'ContentPage was successfully created.'
54
+ Role.rebuild_cache
55
+ redirect_to :action => 'list'
56
+ else
57
+ foreign
58
+ render :action => 'new'
59
+ end
60
+ end
61
+
62
+ def edit
63
+ @content_page = ContentPage.find(params[:id])
64
+ foreign()
65
+ end
66
+
67
+ def update
68
+ @content_page = ContentPage.find(params[:id])
69
+ if @content_page.update_attributes(params[:content_page])
70
+ flash[:notice] = 'ContentPage was successfully updated.'
71
+ Role.rebuild_cache
72
+ redirect_to :action => 'show', :id => @content_page
73
+ else
74
+ foreign
75
+ render :action => 'edit'
76
+ end
77
+ end
78
+
79
+ def destroy
80
+ @content_page = ContentPage.find(params[:id])
81
+ foreign
82
+
83
+ if @menu_items.length == 0 and not @system_pages
84
+ @content_page.destroy
85
+ Role.rebuild_cache
86
+ redirect_to :action => 'list'
87
+ else
88
+ flash.now[:error] = "Cannot delete this Content Page as it has dependants (see below)"
89
+ render :action => 'show'
90
+ end
91
+ end
92
+
93
+ # Entry point for any FCKeditor file operations.
94
+ def fck_filemanager
95
+ @command = params['Command']
96
+ @type = (params['Type'] == 'File' ? '' : params['Type'])
97
+ @subdir = params['CurrentFolder']
98
+ @path = File.join('/files', @type, @subdir)
99
+ @dir = File.join(RAILS_ROOT, 'public', @path)
100
+
101
+ @incl_files = false
102
+
103
+ case @command
104
+ when 'GetFolders'
105
+ fck_files
106
+ when 'GetFoldersAndFiles'
107
+ @incl_files = true
108
+ fck_files
109
+ when 'CreateFolder'
110
+ fck_create_folder
111
+ when 'FileUpload'
112
+ fck_file_upload
113
+ else # huh?
114
+ render :nothing => true, :status => 400
115
+ end
116
+ end
117
+
118
+ # Invoked by FCKeditor spell check. Returns a HTML document
119
+ # containing Javascript with spelling suggestions.
120
+ def fck_speller_pages
121
+ @textinputs = params['textinputs'][0]
122
+ @suggestions = ContentPage.speller_pages( CGI.unescape(@textinputs) )
123
+ render :action => 'fck_speller_pages', :layout => false
124
+ end
125
+
126
+ protected
127
+
128
+ def fck_files
129
+ @dirs = []
130
+ @files = {}
131
+ if File.directory? @dir
132
+ Dir.glob( File.join(@dir, '*') ) do |file|
133
+ if File.directory? file
134
+ @dirs << File.basename(file)
135
+ else
136
+ @files[File.basename(file)] = File.stat(file).size / 1024
137
+ end
138
+ end
139
+ end
140
+
141
+ render :partial => 'fck_files'
142
+ end
143
+
144
+ def fck_create_folder
145
+ @newdir = File.join(@dir, params['NewFolderName'])
146
+ @error = 0
147
+ if not ( File.directory?(@dir) and File.writable?(@dir) )
148
+ @error = 103 # "You have no permissions to create the folder."
149
+ elsif ( File.exists?(@newdir) )
150
+ @error = 101 # "Folder already exists."
151
+ elsif ( params['NewFolderName'].length == 0 or
152
+ params['NewFolderName'] =~ /[\/\\:\'\"]/ )
153
+ @error = 102 # "Invalid folder name."
154
+ else # New directory will *probably* be okay.
155
+ begin
156
+ Dir.mkdir @newdir
157
+ rescue
158
+ @error = 110 # "Unknown error creating folder."
159
+ end
160
+ end
161
+
162
+ render :partial => 'fck_create_folder'
163
+ end
164
+
165
+ # This method needs better handling: needs to be made more robust,
166
+ # and compliant with the spec at
167
+ # http://fckeditor.wikiwikiweb.de/Developer's_Guide/Participating/Server_Side_Integration#Upload
168
+ def fck_file_upload
169
+ @mime_file = params['NewFile']
170
+ @file_name = @mime_file.original_filename
171
+ @file_url = File.join(@path, @file_name)
172
+ @new_file = File.join(@dir, @file_name)
173
+ File.open(@new_file, 'wb') do |file|
174
+ FileUtils.copy_stream(@mime_file, file)
175
+ end
176
+
177
+ render :text => <<-END
178
+ <script type="text/javascript">
179
+ window.parent.frames['frmUpload'].OnUploadCompleted(0, '#{@file_url}', '#{@file_name}', '');
180
+ </script>
181
+ END
182
+ end
183
+
184
+ def foreign
185
+ @markup_styles = ContentPage.markup_styles
186
+ @permissions = Permission.find(:all, :order => 'name')
187
+ if @content_page.id
188
+ @menu_items = MenuItem.find(:all,
189
+ :order => 'label',
190
+ :conditions => ['content_page_id=?',
191
+ @content_page.id])
192
+ @system_pages = Goldberg.settings.system_pages @content_page.id
193
+ end
194
+ end
195
+
196
+ end
197
+ end
@@ -0,0 +1,134 @@
1
+ module Goldberg
2
+ class ControllerActionsController < ApplicationController
3
+ include Goldberg::Controller
4
+
5
+ # GETs should be safe (see http://www.w3.org/2001/tag/doc/whenToUseGet.html)
6
+ verify :method => :post, :only => [ :destroy, :create, :update ],
7
+ :redirect_to => { :action => :list }
8
+
9
+
10
+ def index
11
+ list
12
+ render :action => 'list'
13
+ end
14
+
15
+
16
+ def list
17
+ @controller_actions = ControllerAction.find(:all, :order => 'name')
18
+ end
19
+
20
+
21
+ def show
22
+ @controller_action = ControllerAction.find(params[:id])
23
+ if @controller_action.permission_id
24
+ @permission = Permission.find(@controller_action.permission_id)
25
+ else
26
+ @permission = Permission.new(:id => nil, :name => '(default)')
27
+ end
28
+ end
29
+
30
+
31
+ def new
32
+ @controller_action = ControllerAction.new
33
+ foreign
34
+ end
35
+
36
+
37
+ def new_for
38
+ @controller_action = ControllerAction.new
39
+ @controller_action.site_controller_id = params[:id]
40
+ @site_controller = SiteController.find(params[:id])
41
+ if @site_controller
42
+ @actions = class_actions(@site_controller.name)
43
+ end
44
+ foreign
45
+ render :action => 'new'
46
+ end
47
+
48
+
49
+ def create
50
+ if params[:controller_action][:specific_name] and
51
+ params[:controller_action][:specific_name].length > 0
52
+ params[:controller_action][:name] =
53
+ params[:controller_action][:specific_name]
54
+ end
55
+ @controller_action = ControllerAction.new(params[:controller_action])
56
+ if @controller_action.save
57
+ flash[:notice] = 'ControllerAction was successfully created.'
58
+ Role.rebuild_cache
59
+ redirect_to :controller => 'site_controllers', :action => 'show',
60
+ :id => @controller_action.site_controller_id
61
+ else
62
+ foreign
63
+ render :action => 'new'
64
+ end
65
+ end
66
+
67
+
68
+ def edit
69
+ @controller_action = ControllerAction.find(params[:id])
70
+ foreign
71
+ end
72
+
73
+
74
+ def update
75
+ @controller_action = ControllerAction.find(params[:id])
76
+ if @controller_action.update_attributes(params[:controller_action])
77
+ flash[:notice] = 'ControllerAction was successfully updated.'
78
+ Role.rebuild_cache
79
+ redirect_to :controller => 'site_controllers', :action => 'show',
80
+ :id => @controller_action.site_controller_id
81
+ else
82
+ foreign
83
+ render :action => 'edit'
84
+ end
85
+ end
86
+
87
+
88
+ def destroy
89
+ @controller_action = ControllerAction.find(params[:id])
90
+ site_controller_id = @controller_action.site_controller_id
91
+ @controller_action.destroy
92
+ Role.rebuild_cache
93
+ redirect_to :controller => 'site_controllers', :action => 'show',
94
+ :id => @controller_action.site_controller_id
95
+ end
96
+
97
+
98
+ protected
99
+
100
+
101
+ def foreign
102
+ @controllers = SiteController.find(:all, :order => 'name')
103
+
104
+ @permissions = Permission.find(:all, :order => 'name')
105
+ @permissions.unshift Permission.new(:id => nil, :name => '(default)')
106
+ end
107
+
108
+
109
+ def class_actions(classname)
110
+ classes = SiteController.classes
111
+ actions = Hash.new()
112
+
113
+ if classes.has_key? classname
114
+ controller = classes[classname]
115
+
116
+ for method in controller.public_instance_methods do
117
+ actions[method] = true
118
+ end
119
+
120
+ for hidden in controller.hidden_actions do
121
+ actions.delete hidden
122
+ end
123
+ end
124
+
125
+ action_collection = Array.new
126
+ for action in actions.keys.sort do
127
+ action_collection << ControllerAction.new(:name => action)
128
+ end
129
+
130
+ return action_collection
131
+ end
132
+
133
+ end
134
+ end
@@ -0,0 +1,184 @@
1
+ module Goldberg
2
+ class MenuItemsController < ApplicationController
3
+ include Goldberg::Controller
4
+
5
+ # GETs should be safe (see http://www.w3.org/2001/tag/doc/whenToUseGet.html)
6
+ verify :method => :post, :only => [ :destroy, :create, :update,
7
+ :move_up, :move_down ],
8
+ :redirect_to => { :action => :list }
9
+
10
+ def index
11
+ list
12
+ render :action => 'list'
13
+ end
14
+
15
+ def list
16
+ @menu = Menu.new
17
+ @items = @menu.get_menu(0)
18
+ end
19
+
20
+ def show
21
+ @menu_item = MenuItem.find(params[:id])
22
+ end
23
+
24
+ def new
25
+ @menu_item = MenuItem.new
26
+ @menu = Menu.new
27
+ @items = @menu.get_menu(0)
28
+ foreign
29
+ @can_change_parent = false
30
+ end
31
+
32
+ def new_for
33
+ @parent_item = MenuItem.find(params[:id])
34
+ @menu_item = MenuItem.new
35
+ @menu_item.parent_id = @parent_item.id
36
+ foreign
37
+ @can_change_parent = false
38
+ render :action => 'new'
39
+ end
40
+
41
+ def create
42
+ # Flash an error if neither an action nor a page has been selected
43
+ if (params[:menu_item][:controller_action_id] == nil or
44
+ params[:menu_item][:controller_action_id].length == 0 ) and
45
+ (params[:menu_item][:content_page_id] == nil or
46
+ params[:menu_item][:content_page_id].length == 0 )
47
+ flash[:error] = "You must specify either an Action or a Page!"
48
+ @menu_item = MenuItem.new(params[:menu_item])
49
+ @parent_item = MenuItem.find(params[:menu_item][:parent_id])
50
+ foreign
51
+ @can_change_parent = false
52
+ render :action => 'new', :id => params[:id]
53
+ return
54
+ end
55
+
56
+ @menu_item = MenuItem.new(params[:menu_item])
57
+ @menu_item.seq = MenuItem.next_seq(@menu_item.parent_id)
58
+
59
+ if @menu_item.save
60
+ flash[:notice] = 'MenuItem was successfully created.'
61
+ Role.rebuild_cache
62
+ redirect_to :action => 'list'
63
+ else
64
+ foreign
65
+ render :action => 'new'
66
+ end
67
+ end
68
+
69
+ def edit
70
+ @menu_item = MenuItem.find(params[:id])
71
+ foreign
72
+ @menu = Menu.new
73
+ @items = @menu.get_menu(0)
74
+ @can_change_parent = true
75
+ end
76
+
77
+ def update
78
+ # Flash an error if neither an action nor a page has been selected
79
+ if (params[:menu_item][:controller_action_id] == nil or
80
+ params[:menu_item][:controller_action_id].length == 0 ) and
81
+ (params[:menu_item][:content_page_id] == nil or
82
+ params[:menu_item][:content_page_id].length == 0 )
83
+ flash[:error] = "You must specify either an Action or a Page!"
84
+ edit
85
+ render :action => 'edit'
86
+ return
87
+ end
88
+
89
+ @menu_item = MenuItem.find(params[:id])
90
+ # If this has been moved from another parent, need to repack
91
+ # that parent
92
+ if params[:parent_id] != @menu_item.parent_id
93
+ do_repack = true
94
+ repack_for = @menu_item.parent_id
95
+ # Put at the end of new parent's list
96
+ params[:menu_item][:seq] = MenuItem.next_seq(params[:menu_item][:parent_id])
97
+ else
98
+ do_repack = false
99
+ end
100
+
101
+ if @menu_item.update_attributes(params[:menu_item])
102
+ flash[:notice] = 'MenuItem was successfully updated.'
103
+ if do_repack
104
+ MenuItem.repack(repack_for)
105
+ end
106
+ Role.rebuild_cache
107
+ # redirect_to :action => 'show', :id => @menu_item
108
+ redirect_to :action => 'list'
109
+ else
110
+ foreign
111
+ render :action => 'edit'
112
+ end
113
+ end
114
+
115
+ def move_up
116
+ @menu_item = MenuItem.find(params[:id])
117
+ @above = @menu_item.above
118
+
119
+ if @above
120
+ @menu_item.update_attribute :seq, (@menu_item.seq - 1)
121
+ @above.update_attribute :seq, (@above.seq + 1)
122
+ Role.rebuild_cache
123
+ end
124
+ redirect_to :action => 'list'
125
+ end
126
+
127
+ def move_down
128
+ @menu_item = MenuItem.find(params[:id])
129
+ @below = @menu_item.below
130
+
131
+ if @below
132
+ @menu_item.update_attribute :seq, (@menu_item.seq + 1)
133
+ @below.update_attribute :seq, (@below.seq - 1)
134
+ Role.rebuild_cache
135
+ end
136
+ redirect_to :action => 'list'
137
+ end
138
+
139
+ def destroy
140
+ @menu_item = MenuItem.find(params[:id])
141
+ repack_for = @menu_item.parent_id
142
+ @menu_item.destroy
143
+ MenuItem.repack(repack_for)
144
+ Role.rebuild_cache
145
+ redirect_to :action => 'list'
146
+ end
147
+
148
+ def link
149
+ item_name = params[:name].join('/')
150
+ node = Goldberg.menu.select(item_name)
151
+ if node
152
+ session[:goldberg][:menu_item] = item_name
153
+ session[:goldberg][:menu_history] ||= Hash.new
154
+ session[:goldberg][:menu_history][node.url] = item_name
155
+ redirect_to node.url
156
+ else
157
+ logger.error "(error in menu)"
158
+ redirect_to "/"
159
+ end
160
+ end
161
+
162
+
163
+ protected
164
+
165
+ def foreign
166
+ if self.id
167
+ @parents = MenuItem.find(:all,
168
+ :conditions => ['id not in (?)', self.id],
169
+ :order => 'name')
170
+ else
171
+ @parents = MenuItem.find(:all,
172
+ :order => 'name')
173
+ end
174
+ @parents.unshift MenuItem.new(:id => nil, :name => '(root)')
175
+ @actions = ControllerAction.find(:all, :order => 'site_controller_id, name')
176
+ @actions.unshift ControllerAction.new(:id => nil,
177
+ :name => '(none)')
178
+
179
+ @pages = ContentPage.find(:all, :order => 'name')
180
+ @pages.unshift ContentPage.new(:id => nil, :name => '(none)')
181
+ end
182
+
183
+ end
184
+ end