spud_core 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (190) hide show
  1. data/README.markdown +41 -0
  2. data/app/assets/images/back_disabled.jpg +0 -0
  3. data/app/assets/images/back_enabled.jpg +0 -0
  4. data/app/assets/images/favicon.ico +0 -0
  5. data/app/assets/images/forward_disabled.jpg +0 -0
  6. data/app/assets/images/forward_enabled.jpg +0 -0
  7. data/app/assets/images/sort_asc.png +0 -0
  8. data/app/assets/images/sort_asc_disabled.png +0 -0
  9. data/app/assets/images/sort_both.png +0 -0
  10. data/app/assets/images/sort_desc.png +0 -0
  11. data/app/assets/images/sort_desc_disabled.png +0 -0
  12. data/app/assets/images/spud/admin/flick/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  13. data/app/assets/images/spud/admin/flick/ui-bg_flat_0_eeeeee_40x100.png +0 -0
  14. data/app/assets/images/spud/admin/flick/ui-bg_flat_55_ffffff_40x100.png +0 -0
  15. data/app/assets/images/spud/admin/flick/ui-bg_flat_75_ffffff_40x100.png +0 -0
  16. data/app/assets/images/spud/admin/flick/ui-bg_glass_65_ffffff_1x400.png +0 -0
  17. data/app/assets/images/spud/admin/flick/ui-bg_highlight-soft_100_f6f6f6_1x100.png +0 -0
  18. data/app/assets/images/spud/admin/flick/ui-bg_highlight-soft_25_0073ea_1x100.png +0 -0
  19. data/app/assets/images/spud/admin/flick/ui-bg_highlight-soft_50_dddddd_1x100.png +0 -0
  20. data/app/assets/images/spud/admin/flick/ui-icons_0073ea_256x240.png +0 -0
  21. data/app/assets/images/spud/admin/flick/ui-icons_454545_256x240.png +0 -0
  22. data/app/assets/images/spud/admin/flick/ui-icons_666666_256x240.png +0 -0
  23. data/app/assets/images/spud/admin/flick/ui-icons_ff0084_256x240.png +0 -0
  24. data/app/assets/images/spud/admin/flick/ui-icons_ffffff_256x240.png +0 -0
  25. data/app/assets/images/spud/admin/users_thumb.png +0 -0
  26. data/app/assets/javascripts/spud/admin/application.js +90 -0
  27. data/app/assets/javascripts/spud/admin/jquery.dataTables.min.js +151 -0
  28. data/app/assets/javascripts/spud/admin/settings.js +2 -0
  29. data/app/assets/javascripts/spud/admin/users.js +2 -0
  30. data/app/assets/javascripts/spud/setup.js +2 -0
  31. data/app/assets/javascripts/spud/sitemaps.js +2 -0
  32. data/app/assets/javascripts/spud/user_sessions.js +2 -0
  33. data/app/assets/javascripts/spud/users.js +2 -0
  34. data/app/assets/javascripts/wymeditor/iframe/default/lbl-article.png +0 -0
  35. data/app/assets/javascripts/wymeditor/iframe/default/lbl-aside.png +0 -0
  36. data/app/assets/javascripts/wymeditor/iframe/default/lbl-blockquote.png +0 -0
  37. data/app/assets/javascripts/wymeditor/iframe/default/lbl-command.png +0 -0
  38. data/app/assets/javascripts/wymeditor/iframe/default/lbl-details.png +0 -0
  39. data/app/assets/javascripts/wymeditor/iframe/default/lbl-figcaption.png +0 -0
  40. data/app/assets/javascripts/wymeditor/iframe/default/lbl-figure.png +0 -0
  41. data/app/assets/javascripts/wymeditor/iframe/default/lbl-footer.png +0 -0
  42. data/app/assets/javascripts/wymeditor/iframe/default/lbl-h1.png +0 -0
  43. data/app/assets/javascripts/wymeditor/iframe/default/lbl-h2.png +0 -0
  44. data/app/assets/javascripts/wymeditor/iframe/default/lbl-h3.png +0 -0
  45. data/app/assets/javascripts/wymeditor/iframe/default/lbl-h4.png +0 -0
  46. data/app/assets/javascripts/wymeditor/iframe/default/lbl-h5.png +0 -0
  47. data/app/assets/javascripts/wymeditor/iframe/default/lbl-h6.png +0 -0
  48. data/app/assets/javascripts/wymeditor/iframe/default/lbl-header.png +0 -0
  49. data/app/assets/javascripts/wymeditor/iframe/default/lbl-hgroup.png +0 -0
  50. data/app/assets/javascripts/wymeditor/iframe/default/lbl-mark.png +0 -0
  51. data/app/assets/javascripts/wymeditor/iframe/default/lbl-meter.png +0 -0
  52. data/app/assets/javascripts/wymeditor/iframe/default/lbl-nav.png +0 -0
  53. data/app/assets/javascripts/wymeditor/iframe/default/lbl-p.png +0 -0
  54. data/app/assets/javascripts/wymeditor/iframe/default/lbl-pre.png +0 -0
  55. data/app/assets/javascripts/wymeditor/iframe/default/lbl-progress.png +0 -0
  56. data/app/assets/javascripts/wymeditor/iframe/default/lbl-rp.png +0 -0
  57. data/app/assets/javascripts/wymeditor/iframe/default/lbl-rt.png +0 -0
  58. data/app/assets/javascripts/wymeditor/iframe/default/lbl-ruby.png +0 -0
  59. data/app/assets/javascripts/wymeditor/iframe/default/lbl-section.png +0 -0
  60. data/app/assets/javascripts/wymeditor/iframe/default/lbl-summary.png +0 -0
  61. data/app/assets/javascripts/wymeditor/iframe/default/lbl-time.png +0 -0
  62. data/app/assets/javascripts/wymeditor/iframe/default/readme.md +1 -0
  63. data/app/assets/javascripts/wymeditor/iframe/default/wymiframe.css +91 -0
  64. data/app/assets/javascripts/wymeditor/iframe/default/wymiframe.html +26 -0
  65. data/app/assets/javascripts/wymeditor/jquery.wymeditor.js +9983 -0
  66. data/app/assets/javascripts/wymeditor/jquery.wymeditor.min.js +34 -0
  67. data/app/assets/javascripts/wymeditor/lang/bg.js +45 -0
  68. data/app/assets/javascripts/wymeditor/lang/ca.js +45 -0
  69. data/app/assets/javascripts/wymeditor/lang/cs.js +45 -0
  70. data/app/assets/javascripts/wymeditor/lang/cy.js +45 -0
  71. data/app/assets/javascripts/wymeditor/lang/de.js +45 -0
  72. data/app/assets/javascripts/wymeditor/lang/en.js +45 -0
  73. data/app/assets/javascripts/wymeditor/lang/es.js +45 -0
  74. data/app/assets/javascripts/wymeditor/lang/fa.js +46 -0
  75. data/app/assets/javascripts/wymeditor/lang/fi.js +44 -0
  76. data/app/assets/javascripts/wymeditor/lang/fr.js +45 -0
  77. data/app/assets/javascripts/wymeditor/lang/gl.js +45 -0
  78. data/app/assets/javascripts/wymeditor/lang/he.js +45 -0
  79. data/app/assets/javascripts/wymeditor/lang/hr.js +45 -0
  80. data/app/assets/javascripts/wymeditor/lang/hu.js +45 -0
  81. data/app/assets/javascripts/wymeditor/lang/it.js +45 -0
  82. data/app/assets/javascripts/wymeditor/lang/ja.js +44 -0
  83. data/app/assets/javascripts/wymeditor/lang/lt.js +45 -0
  84. data/app/assets/javascripts/wymeditor/lang/nb.js +45 -0
  85. data/app/assets/javascripts/wymeditor/lang/nl.js +45 -0
  86. data/app/assets/javascripts/wymeditor/lang/nn.js +45 -0
  87. data/app/assets/javascripts/wymeditor/lang/pl.js +45 -0
  88. data/app/assets/javascripts/wymeditor/lang/pt-br.js +45 -0
  89. data/app/assets/javascripts/wymeditor/lang/pt.js +45 -0
  90. data/app/assets/javascripts/wymeditor/lang/ru.js +45 -0
  91. data/app/assets/javascripts/wymeditor/lang/sv.js +46 -0
  92. data/app/assets/javascripts/wymeditor/lang/tr.js +45 -0
  93. data/app/assets/javascripts/wymeditor/lang/zh_cn.js +47 -0
  94. data/app/assets/javascripts/wymeditor/plugins/embed/jquery.wymeditor.embed.js +82 -0
  95. data/app/assets/javascripts/wymeditor/plugins/fullscreen/icon_fullscreen.gif +0 -0
  96. data/app/assets/javascripts/wymeditor/plugins/fullscreen/jquery.wymeditor.fullscreen.js +124 -0
  97. data/app/assets/javascripts/wymeditor/plugins/hovertools/jquery.wymeditor.hovertools.js +49 -0
  98. data/app/assets/javascripts/wymeditor/plugins/list/jquery.wymeditor.list.js +60 -0
  99. data/app/assets/javascripts/wymeditor/plugins/rdfa/jquery.wymeditor.rdfa.js +186 -0
  100. data/app/assets/javascripts/wymeditor/plugins/resizable/jquery.wymeditor.resizable.js +77 -0
  101. data/app/assets/javascripts/wymeditor/plugins/resizable/readme.txt +124 -0
  102. data/app/assets/javascripts/wymeditor/plugins/table/jquery.wymeditor.table.js +721 -0
  103. data/app/assets/javascripts/wymeditor/plugins/table/table_delete_column.png +0 -0
  104. data/app/assets/javascripts/wymeditor/plugins/table/table_delete_row.png +0 -0
  105. data/app/assets/javascripts/wymeditor/plugins/table/table_insert_column.png +0 -0
  106. data/app/assets/javascripts/wymeditor/plugins/table/table_insert_row.png +0 -0
  107. data/app/assets/javascripts/wymeditor/plugins/table/table_join_row.png +0 -0
  108. data/app/assets/javascripts/wymeditor/plugins/tidy/README +19 -0
  109. data/app/assets/javascripts/wymeditor/plugins/tidy/jquery.wymeditor.tidy.js +78 -0
  110. data/app/assets/javascripts/wymeditor/plugins/tidy/tidy.php +58 -0
  111. data/app/assets/javascripts/wymeditor/plugins/tidy/wand.png +0 -0
  112. data/app/assets/javascripts/wymeditor/skins/compact/icons.png +0 -0
  113. data/app/assets/javascripts/wymeditor/skins/compact/skin.css +134 -0
  114. data/app/assets/javascripts/wymeditor/skins/compact/skin.js +37 -0
  115. data/app/assets/javascripts/wymeditor/skins/default/icons.png +0 -0
  116. data/app/assets/javascripts/wymeditor/skins/default/skin.css +133 -0
  117. data/app/assets/javascripts/wymeditor/skins/default/skin.js +40 -0
  118. data/app/assets/javascripts/wymeditor/skins/minimal/images/bg.header.gif +0 -0
  119. data/app/assets/javascripts/wymeditor/skins/minimal/images/bg.selector.silver.gif +0 -0
  120. data/app/assets/javascripts/wymeditor/skins/minimal/images/bg.wymeditor.png +0 -0
  121. data/app/assets/javascripts/wymeditor/skins/minimal/images/icons.silver.gif +0 -0
  122. data/app/assets/javascripts/wymeditor/skins/minimal/skin.css +131 -0
  123. data/app/assets/javascripts/wymeditor/skins/minimal/skin.js +30 -0
  124. data/app/assets/javascripts/wymeditor/skins/silver/COPYING +674 -0
  125. data/app/assets/javascripts/wymeditor/skins/silver/README +27 -0
  126. data/app/assets/javascripts/wymeditor/skins/silver/images/bg.header.gif +0 -0
  127. data/app/assets/javascripts/wymeditor/skins/silver/images/bg.selector.silver.gif +0 -0
  128. data/app/assets/javascripts/wymeditor/skins/silver/images/bg.wymeditor.png +0 -0
  129. data/app/assets/javascripts/wymeditor/skins/silver/images/icons.silver.gif +0 -0
  130. data/app/assets/javascripts/wymeditor/skins/silver/skin.css +297 -0
  131. data/app/assets/javascripts/wymeditor/skins/silver/skin.js +61 -0
  132. data/app/assets/javascripts/wymeditor/skins/twopanels/icons.png +0 -0
  133. data/app/assets/javascripts/wymeditor/skins/twopanels/skin.css +134 -0
  134. data/app/assets/javascripts/wymeditor/skins/twopanels/skin.js +39 -0
  135. data/app/assets/javascripts/wymeditor/skins/wymeditor_icon.png +0 -0
  136. data/app/assets/stylesheets/spud/admin/application.css +464 -0
  137. data/app/assets/stylesheets/spud/admin/jquery-ui.css +568 -0
  138. data/app/assets/stylesheets/spud/admin/settings.css +4 -0
  139. data/app/assets/stylesheets/spud/admin/users.css +4 -0
  140. data/app/assets/stylesheets/spud/forms.css +108 -0
  141. data/app/assets/stylesheets/spud/login/application.css +302 -0
  142. data/app/assets/stylesheets/spud/login.css +58 -0
  143. data/app/assets/stylesheets/spud/setup.css +4 -0
  144. data/app/assets/stylesheets/spud/sitemaps.css +4 -0
  145. data/app/assets/stylesheets/spud/user_sessions.css +4 -0
  146. data/app/assets/stylesheets/spud/users.css +4 -0
  147. data/app/controllers/spud/admin/application_controller.rb +19 -0
  148. data/app/controllers/spud/admin/dashboard_controller.rb +7 -0
  149. data/app/controllers/spud/admin/settings_controller.rb +15 -0
  150. data/app/controllers/spud/admin/users_controller.rb +111 -0
  151. data/app/controllers/spud/application_controller.rb +48 -0
  152. data/app/controllers/spud/setup_controller.rb +22 -0
  153. data/app/controllers/spud/sitemaps_controller.rb +6 -0
  154. data/app/controllers/spud/user_sessions_controller.rb +28 -0
  155. data/app/controllers/spud/users_controller.rb +21 -0
  156. data/app/helpers/spud/admin/application_helper.rb +17 -0
  157. data/app/helpers/spud/admin/settings_helper.rb +2 -0
  158. data/app/helpers/spud/admin/users_helper.rb +2 -0
  159. data/app/helpers/spud/setup_helper.rb +2 -0
  160. data/app/helpers/spud/sitemaps_helper.rb +2 -0
  161. data/app/helpers/spud/user_sessions_helper.rb +2 -0
  162. data/app/helpers/spud/users_helper.rb +2 -0
  163. data/app/models/spud_admin_permission.rb +2 -0
  164. data/app/models/spud_setting.rb +2 -0
  165. data/app/models/spud_user.rb +16 -0
  166. data/app/models/spud_user_session.rb +3 -0
  167. data/app/views/layouts/spud/admin/application.html.erb +44 -0
  168. data/app/views/layouts/spud/admin/detail.html.erb +31 -0
  169. data/app/views/layouts/spud/login/application.html.erb +17 -0
  170. data/app/views/layouts/spud/setup.html.erb +47 -0
  171. data/app/views/spud/admin/dashboard/index.html.erb +11 -0
  172. data/app/views/spud/admin/users/_edit.html.erb +14 -0
  173. data/app/views/spud/admin/users/_form.html.erb +51 -0
  174. data/app/views/spud/admin/users/_new.html.erb +14 -0
  175. data/app/views/spud/admin/users/index.html.erb +41 -0
  176. data/app/views/spud/admin/users/show.html.erb +17 -0
  177. data/app/views/spud/setup/index.html.erb +25 -0
  178. data/app/views/spud/sitemaps/show.xml.builder +12 -0
  179. data/app/views/spud/user_sessions/new.html.erb +22 -0
  180. data/app/views/spud/users/_form.html.erb +35 -0
  181. data/app/views/spud/users/settings.html.erb +14 -0
  182. data/config/application.rb +48 -0
  183. data/config/boot.rb +6 -0
  184. data/config/routes.rb +15 -0
  185. data/lib/spud_core/belongs_to_app.rb +54 -0
  186. data/lib/spud_core/configuration.rb +9 -0
  187. data/lib/spud_core/engine.rb +34 -0
  188. data/lib/spud_core/test_files.rb +25 -0
  189. data/lib/spud_core.rb +8 -0
  190. metadata +311 -0
@@ -0,0 +1,6 @@
1
+ class Spud::SitemapsController < Spud::ApplicationController
2
+ caches_page :show,:expires_in => 1.day
3
+ def show
4
+ @sitemap_urls = Spud::Core.sitemap_urls
5
+ end
6
+ end
@@ -0,0 +1,28 @@
1
+ class Spud::UserSessionsController < Spud::ApplicationController
2
+ before_filter :require_no_user, :only => [:new, :create]
3
+ before_filter :require_user, :only => :destroy
4
+ layout 'spud/login/application'
5
+ def new
6
+ if SpudUser.count == 0
7
+ redirect_to spud_setup_url() and return
8
+ end
9
+
10
+ @user_session = SpudUserSession.new
11
+ end
12
+
13
+ def create
14
+ @user_session = SpudUserSession.new(params[:spud_user_session])
15
+ if @user_session.save
16
+ flash[:notice] = "Login successful!"
17
+ redirect_back_or_default root_url
18
+ else
19
+ render :action => :new
20
+ end
21
+ end
22
+
23
+ def destroy
24
+ current_user_session.destroy
25
+ flash[:notice] = "Logout successful!"
26
+ redirect_back_or_default new_spud_user_session_url
27
+ end
28
+ end
@@ -0,0 +1,21 @@
1
+ class Spud::UsersController < Spud::ApplicationController
2
+ before_filter :require_user
3
+ layout 'spud/admin/detail'
4
+ add_breadcrumb "Settings", :spud_settings_path
5
+ def settings
6
+ @page_thumbnail = "spud/admin/users_thumb.png"
7
+ @page_name = "Settings"
8
+ end
9
+
10
+ def update
11
+ @page_thumbnail = "spud/admin/users_thumb.png"
12
+ @page_name = "Settings"
13
+ if @current_user.update_attributes(params[:spud_user])
14
+ flash[:notice] = "User settings saved successfully."
15
+ redirect_to spud_admin_root_url()
16
+ else
17
+ flash[:error] = "There was an error while saving the user."
18
+ render :action => "settings"
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,17 @@
1
+ module Spud::Admin::ApplicationHelper
2
+ def timestamp(timedate)
3
+ return "Never" if timedate.blank?
4
+ return Time.now() - timedate > 604800 ? timedate.strftime("%B %d") + ' at ' + timedate.strftime("%I:%M %p") : time_ago_in_words(timedate) + ' ago'
5
+ end
6
+ def link_to_remove_fields(name, f)
7
+ f.hidden_field(:_destroy) + link_to_function(name, "remove_fields(this)")
8
+ end
9
+
10
+ def link_to_add_fields(name, f, association)
11
+ new_object = f.object.class.reflect_on_association(association).klass.new
12
+ fields = f.fields_for(association, new_object, :child_index => "new_#{association}") do |builder|
13
+ render(association.to_s.singularize + "_fields", :f => builder)
14
+ end
15
+ link_to_function(name, "add_fields(this, \"#{association}\", \"#{escape_javascript(fields)}\")")
16
+ end
17
+ end
@@ -0,0 +1,2 @@
1
+ module Spud::Admin::SettingsHelper
2
+ end
@@ -0,0 +1,2 @@
1
+ module Spud::Admin::UsersHelper
2
+ end
@@ -0,0 +1,2 @@
1
+ module Spud::SetupHelper
2
+ end
@@ -0,0 +1,2 @@
1
+ module Spud::SitemapsHelper
2
+ end
@@ -0,0 +1,2 @@
1
+ module Spud::UserSessionsHelper
2
+ end
@@ -0,0 +1,2 @@
1
+ module Spud::UsersHelper
2
+ end
@@ -0,0 +1,2 @@
1
+ class SpudAdminPermission < ActiveRecord::Base
2
+ end
@@ -0,0 +1,2 @@
1
+ class SpudSetting < ActiveRecord::Base
2
+ end
@@ -0,0 +1,16 @@
1
+ class SpudUser < ActiveRecord::Base
2
+ has_many :spud_admin_permissions,:foreign_key => :user_id
3
+ accepts_nested_attributes_for :spud_admin_permissions, :allow_destroy => true
4
+ attr_protected :super_admin
5
+
6
+ acts_as_authentic do |c|
7
+ # c.my_config_option = my_value # for available options see documentation in: Authlogic::ActsAsAuthentic
8
+ end # block optional
9
+
10
+ def full_name
11
+ if first_name.blank? && last_name.blank?
12
+ return self.login
13
+ end
14
+ return "#{self.first_name} #{self.last_name}"
15
+ end
16
+ end
@@ -0,0 +1,3 @@
1
+ class SpudUserSession < Authlogic::Session::Base
2
+ # configuration here, see documentation for sub modules of Authlogic::Session
3
+ end
@@ -0,0 +1,44 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>Spud Admin</title>
5
+ <%= stylesheet_link_tag "spud/admin/application" %>
6
+ <%= javascript_include_tag "spud/admin/application" %>
7
+ <%= csrf_meta_tags %>
8
+ <%=yield :head%>
9
+ </head>
10
+ <body>
11
+ <div id="header">
12
+ <h1>Spud Admin</h1>
13
+ <div id="user_meta">
14
+ <span class="greeting">Hello <%=@current_user.login%></span>&nbsp;|&nbsp;<%=link_to "Settings", spud_settings_path%>&nbsp;|&nbsp;<%=link_to "Logout",spud_user_session_url,:method => :delete%></a>
15
+ </div>
16
+ </div>
17
+ <div id="breadcrumbs">
18
+ <%= render_breadcrumbs :separator => ' / ' %>
19
+ </div>
20
+ <div id="content">
21
+ <% if flash[:notice] %>
22
+ <div class="flash notice"><%= flash[:notice] %></div>
23
+ <% end %>
24
+ <% if flash[:warning] %>
25
+ <div class="flash warning"><%= flash[:warning] %></div>
26
+ <% end %>
27
+ <% if flash[:error] || @error_object_name.nil? == false %>
28
+ <div class="flash error">
29
+ <%= flash[:error] %>
30
+ <%-unless @error_object_name.nil?%>
31
+ <%-if @error_object_name.is_a?(Array)%>
32
+ <%=error_messages_for @error_object_name[0], :header_message => @error_object_name[1], :message => @error_object_name[2]%>
33
+ <%-else%>
34
+ <%=error_messages_for @error_object_name%>
35
+ <%-end%>
36
+
37
+ <%-end%>
38
+ </div>
39
+ <%-end%>
40
+ <%= content_for?(:content) ? yield(:content) : yield %>
41
+ </div>
42
+
43
+ </body>
44
+ </html>
@@ -0,0 +1,31 @@
1
+ <%=content_for :content do %>
2
+ <div id="detail_wrapper">
3
+ <span class="data_controls">
4
+ <%=yield :data_controls%>
5
+ </span>
6
+ <h2>
7
+ <%if @page_thumbnail%>
8
+ <span class="thumb_wrapper"><%=image_tag(@page_thumbnail)%></span>
9
+ <%end%>
10
+ <%=@page_name%>
11
+ </h2>
12
+
13
+ <div id="details">
14
+ <%if content_for?(:detail_nav)%>
15
+ <div id="detail_nav_wrapper">
16
+ <div id="detail_nav">
17
+ <%= yield(:detail_nav)%>
18
+ </div>
19
+ </div>
20
+ <div id="detail_main_wrapper">
21
+ <div id="detail_main">
22
+ <%= content_for?(:detail) ? yield(:detail) : yield %></div>
23
+ </div>
24
+ <br style="clear:both;"/>
25
+ <%else%>
26
+ <%= content_for?(:detail) ? yield(:detail) : yield %>
27
+ <%end%>
28
+ </div>
29
+ </div>
30
+ <%end%>
31
+ <%= render :template => 'layouts/spud/admin/application' %>
@@ -0,0 +1,17 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>Spud Admin</title>
5
+ <%= stylesheet_link_tag("spud/login/application") %>
6
+
7
+ <%= csrf_meta_tags %>
8
+ <%=content_for :head%>
9
+ </head>
10
+ <body>
11
+
12
+ <div id="content_wrapper">
13
+ <div id="content"><%=yield%></div>
14
+ </div>
15
+
16
+ </body>
17
+ </html>
@@ -0,0 +1,47 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>Spud Admin</title>
5
+ <%= stylesheet_link_tag "spud/admin/application" %>
6
+ <%= javascript_include_tag "spud/admin/application" %>
7
+ <%= csrf_meta_tags %>
8
+ <%=content_for :head%>
9
+ </head>
10
+ <body>
11
+ <div id="header">
12
+ <h1>Spud First Time Setup</h1>
13
+
14
+ </div>
15
+ <div id="breadcrumbs">
16
+ <%= render_breadcrumbs :separator => ' / ' %>
17
+ </div>
18
+ <div id="content">
19
+ <div id="detail_wrapper">
20
+ <h2>
21
+ <%if @page_thumbnail%>
22
+ <span class="thumb_wrapper"><%=image_tag(@page_thumbnail)%></span>
23
+ <%end%>
24
+ <%=@page_name%>
25
+ </h2>
26
+
27
+ <div id="details">
28
+ <%if content_for?(:detail_nav)%>
29
+ <div id="detail_nav_wrapper">
30
+ <div id="detail_nav">
31
+ <%= yield(:detail_nav)%></div>
32
+
33
+ </div>
34
+ <div id="detail_main_wrapper">
35
+ <div id="detail_main">
36
+ <%= content_for?(:detail) ? yield(:detail) : yield %></div>
37
+ </div>
38
+ <br style="clear:both;"/>
39
+ <%else%>
40
+ <%= content_for?(:detail) ? yield(:detail) : yield %>
41
+ <%end%>
42
+ </div>
43
+ </div>
44
+ </div>
45
+
46
+ </body>
47
+ </html>
@@ -0,0 +1,11 @@
1
+
2
+
3
+ <%@admin_applications.sort_by{|obj| obj[:order]}.each do |admin_application|%>
4
+
5
+ <div class="admin_application"><a href="<%=admin_application[:url]%>">
6
+ <div class="image_wrapper"><%=image_tag(admin_application[:thumbnail])%></div>
7
+ <span class="application_name"><%=admin_application[:name]%></span>
8
+ </a>
9
+ </div>
10
+
11
+ <%end%>
@@ -0,0 +1,14 @@
1
+
2
+
3
+ <p> Fill in all information pertaining to the current user you wish to modify. Fields marked with * are required and must be filled out.</p>
4
+
5
+ <%=form_for @user,:url => spud_admin_user_path(:id => @user.id),:html=>{:class=>"right_aligned_form"} do |f|%>
6
+ <%=render :partial => "form",:locals => {:f => f}%>
7
+ <fieldset class="submit"><%=f.submit%> or <%=link_to "cancel","#",:class => "close_dialog"%></fieldset>
8
+ <%end%>
9
+
10
+ <script type="text/javascript">
11
+ $('input[type=submit],.close_dialog').button();
12
+
13
+ </script>
14
+
@@ -0,0 +1,51 @@
1
+ <fieldset>
2
+ <legend>User Details</legend>
3
+ <ol>
4
+ <li><%=f.label :login, :required=>true%>
5
+ <%=f.text_field :login,:title => "",:size=>25%>
6
+ <%=error_message_on "user","login"%>
7
+ </li>
8
+ <li><%=f.label :email%>
9
+ <%=f.text_field :email, :title => "",:size => 25%>
10
+ <%=error_message_on "user","email"%>
11
+ </li>
12
+ <li><%=f.label :first_name%>
13
+ <%=f.text_field :first_name, :title => "",:size => 25%>
14
+ <%=error_message_on "user","first_name"%>
15
+ </li>
16
+ <li><%=f.label :last_name%>
17
+ <%=f.text_field :last_name, :title => "",:size => 25%>
18
+ <%=error_message_on "user","last_name"%>
19
+ </li>
20
+
21
+ </ol>
22
+ </fieldset>
23
+ <fieldset>
24
+ <legend>Credentials</legend>
25
+ <ol>
26
+ <li><%=f.label :password%>
27
+ <%=f.password_field :password, :title => "",:size => 25%>
28
+ <%=error_message_on "user","password"%>
29
+ </li>
30
+ <li><%=f.label :password_confirmation,"Confirm"%>
31
+ <%=f.password_field :password_confirmation, :title => "",:size => 25%>
32
+ <%=error_message_on "user","password_confirmation"%>
33
+ </li>
34
+ <li><%=f.label :super_admin,"Super Admin"%>
35
+ <%=f.check_box :super_admin, :title => ""%>
36
+ </li>
37
+ </ol>
38
+ </fieldset>
39
+ <fieldset>
40
+ <legend>Permissions</legend>
41
+ <ol>
42
+ <%=f.fields_for :spud_admin_permissions do |builder|%>
43
+
44
+ <li>
45
+ <%=builder.hidden_field :name%>
46
+ <%=builder.label :access,builder.object.name%>
47
+ <%=builder.check_box :access%>
48
+ </li>
49
+ <%end%>
50
+ </ol>
51
+ </fieldset>
@@ -0,0 +1,14 @@
1
+
2
+
3
+ <p> Fill in all information pertaining to the new user you wish to create. Fields marked with * are required and must be filled out.</p>
4
+
5
+ <%=form_for @user,:url => spud_admin_users_path(),:html=>{:class=>"right_aligned_form"} do |f|%>
6
+ <%=render :partial => "form",:locals => {:f => f}%>
7
+ <fieldset class="submit"><%=f.submit%> or <%=link_to "cancel","#",:class => "close_dialog"%></fieldset>
8
+ <%end%>
9
+
10
+ <script type="text/javascript">
11
+ $('input[type=submit],.close_dialog').button();
12
+
13
+ </script>
14
+
@@ -0,0 +1,41 @@
1
+ <%=content_for :data_controls do%>
2
+ <%=link_to "New User",new_spud_admin_user_path(),:class => "ajax button",:title => "New User"%>
3
+ <%end%>
4
+ <%=content_for :detail do%>
5
+ <table class="admin-table data-table" id="usertable">
6
+ <thead>
7
+ <tr>
8
+
9
+ <th>Login</th>
10
+ <th>Email</th>
11
+ <th>Name</th>
12
+
13
+ <th>Last Login</th>
14
+ <th>Date Created</th>
15
+ <th></th>
16
+ </tr>
17
+ </thead>
18
+ <tbody>
19
+ <%@users.each do |user|%>
20
+ <tr id="row_user_<%=user.id%>">
21
+
22
+ <td><%=link_to user.login,spud_admin_user_path(:id => user.id)%></td>
23
+ <td><%=user.email%></td>
24
+ <td><%=user.first_name%>&nbsp;<%=user.last_name%></td>
25
+
26
+ <td><%=timestamp user.last_login_at%></td>
27
+ <td><%=timestamp user.created_at%></td>
28
+ <td align="right"><%=link_to "Edit",edit_spud_admin_user_path(:id => user.id),:class => "ajax", :title => "Edit User"%>&nbsp;|&nbsp;<%=link_to "Remove",spud_admin_user_path(:id => user.id),:method => :delete,:remote => true,:confirm => "Are you sure you want to remove this user?"%></td>
29
+ </tr>
30
+ <%end%>
31
+ </tbody>
32
+ <tfoot>
33
+ <tr>
34
+ <td colspan="6">
35
+ <%=will_paginate @users%>
36
+ </td>
37
+ </tr>
38
+ </tfoot>
39
+ </table>
40
+
41
+ <%end%>
@@ -0,0 +1,17 @@
1
+ <%=content_for :data_controls do%>
2
+ <%=link_to "Edit",edit_spud_admin_user_path(:id => @user.id),:class => "ajax",:title => "Edit User"%> | <%=link_to "Remove",spud_admin_user_path(:id => @user.id),:method => :delete,:title => "Remove User",:confirm => "Are you sure you wish to remove this user?"%>
3
+ <%end%>
4
+ <%=content_for :detail_nav do%>
5
+ <ul class="detail_nav">
6
+ <li><%=link_to "Permissions","#"%></li>
7
+ </ul>
8
+ <%end%>
9
+
10
+ <%=content_for :detail do%>
11
+ <div class="info_card">
12
+ <p><strong>Login:</strong> <%=@user.login%> <%="(Super Administrator)" if @user.super_admin%></p>
13
+ <p><strong>Email:</strong> <%=link_to @user.email, "mailto:#{@user.email}"%></p>
14
+ <p><strong>Last Login:</strong> <span title="IP: <%=@user.last_login_ip%>"><%=timestamp @user.last_login_at%></span></p>
15
+ <p><strong>Created:</strong> <%=timestamp @user.created_at%></p>
16
+ </div>
17
+ <%end%>
@@ -0,0 +1,25 @@
1
+ <%content_for :detail do%>
2
+ <%=form_tag "/spud/setup",:method => :post,:class=>"right_aligned_form" do %>
3
+ <fieldset>
4
+ <legend>New Admin Account</legend>
5
+ <ol>
6
+ <li><%=label_tag "Login"%>
7
+ <%=text_field_tag :login,nil,:title => "",:size=>25%>
8
+ </li>
9
+ <li><%=label_tag "Email"%>
10
+ <%=text_field_tag :email,nil,:title => "",:size=>25%>
11
+ </li>
12
+ <li><%=label_tag "Password"%>
13
+ <%=password_field_tag :password,nil,:title => "",:size=>25%>
14
+ </li>
15
+ <li><%=label_tag "Confirm"%>
16
+ <%=password_field_tag :password_confirmation,nil,:title => "",:size=>25%>
17
+ </li>
18
+
19
+
20
+ </ol>
21
+ </fieldset>
22
+ <fieldset class="submit"><%=submit_tag "Create Admin Account"%></fieldset>
23
+ <%end%>
24
+ <br/>
25
+ <%end%>
@@ -0,0 +1,12 @@
1
+
2
+ xml.instruct! :xml, :version => '1.0', :encoding => 'UTF-8'
3
+
4
+ # create the urlset
5
+ xml.sitemapindex :xmlns => 'http://www.sitemaps.org/schemas/sitemap/0.9' do
6
+ @sitemap_urls.each do |map|
7
+ xml.sitemap do
8
+ xml.loc eval(map.to_s + " :format => :xml")
9
+ xml.lastmod Time.now.utc
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,22 @@
1
+ <div class="login-form">
2
+ <h1>Spud CMS Admin</h1>
3
+ <%= form_for @user_session, url: spud_user_session_path do |f| %>
4
+ <div>
5
+ <%= f.error_messages %>
6
+ </div>
7
+ <div class="field-group">
8
+ <%= f.label :login %>
9
+ <%= f.text_field :login %>
10
+ </div>
11
+ <div class="field-group">
12
+ <%= f.label :password %>
13
+ <%= f.password_field :password %>
14
+ </div>
15
+ <div class="field-group">
16
+ <%= f.check_box :remember_me %> <%= f.label :remember_me, class: 'inline' %>
17
+ </div>
18
+ <div class="field-group">
19
+ <%= f.submit "Login" %>
20
+ </div>
21
+ <% end %>
22
+ </div>
@@ -0,0 +1,35 @@
1
+ <fieldset>
2
+ <legend>User Details</legend>
3
+ <ol>
4
+ <li><%=f.label :login, :required=>true%>
5
+ <%=f.text_field :login,:title => "",:size=>25%>
6
+ <%=error_message_on "user","login"%>
7
+ </li>
8
+ <li><%=f.label :email%>
9
+ <%=f.text_field :email, :title => "",:size => 25%>
10
+ <%=error_message_on "user","email"%>
11
+ </li>
12
+ <li><%=f.label :first_name%>
13
+ <%=f.text_field :first_name, :title => "",:size => 25%>
14
+ <%=error_message_on "user","first_name"%>
15
+ </li>
16
+ <li><%=f.label :last_name%>
17
+ <%=f.text_field :last_name, :title => "",:size => 25%>
18
+ <%=error_message_on "user","last_name"%>
19
+ </li>
20
+
21
+ </ol>
22
+ </fieldset>
23
+ <fieldset>
24
+ <legend>Credentials</legend>
25
+ <ol>
26
+ <li><%=f.label :password%>
27
+ <%=f.password_field :password, :title => "",:size => 25%>
28
+ <%=error_message_on "user","password"%>
29
+ </li>
30
+ <li><%=f.label :password_confirmation,"Confirm"%>
31
+ <%=f.password_field :password_confirmation, :title => "",:size => 25%>
32
+ <%=error_message_on "user","password_confirmation"%>
33
+ </li>
34
+ </ol>
35
+ </fieldset>
@@ -0,0 +1,14 @@
1
+
2
+
3
+ <p>Fields marked with * are required and must be filled out.</p>
4
+
5
+ <%=form_for @current_user,:url => spud_user_path(),:html=>{:class=>"right_aligned_form"} do |f|%>
6
+ <%=render :partial => "form",:locals => {:f => f}%>
7
+ <fieldset class="submit"><%=f.submit "Save Settings"%> or <%=link_to "cancel",request.referer,:class => "close_dialog"%></fieldset>
8
+ <%end%>
9
+
10
+ <script type="text/javascript">
11
+ $('input[type=submit],.close_dialog').button();
12
+
13
+ </script>
14
+
@@ -0,0 +1,48 @@
1
+ require File.expand_path('../boot', __FILE__)
2
+
3
+ require 'rails/all'
4
+
5
+ if defined?(Bundler)
6
+ # If you precompile assets before deploying to production, use this line
7
+ Bundler.require *Rails.groups(:assets => %w(development test))
8
+ # If you want your assets lazily compiled in production, use this line
9
+ # Bundler.require(:default, :assets, Rails.env)
10
+ end
11
+
12
+ module SpudTest
13
+ class Application < Rails::Application
14
+ # Settings in config/environments/* take precedence over those specified here.
15
+ # Application configuration should go into files in config/initializers
16
+ # -- all .rb files in that directory are automatically loaded.
17
+
18
+ # Custom directories with classes and modules you want to be autoloadable.
19
+ # config.autoload_paths += %W(#{config.root}/extras)
20
+
21
+ # Only load the plugins named here, in the order given (default is alphabetical).
22
+ # :all can be used as a placeholder for all plugins not explicitly named.
23
+ # config.plugins = [ :exception_notification, :ssl_requirement, :all ]
24
+
25
+ # Activate observers that should always be running.
26
+ # config.active_record.observers = :cacher, :garbage_collector, :forum_observer
27
+
28
+ # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
29
+ # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
30
+ # config.time_zone = 'Central Time (US & Canada)'
31
+
32
+ # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
33
+ # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
34
+ # config.i18n.default_locale = :de
35
+
36
+ # Configure the default encoding used in templates for Ruby 1.9.
37
+ config.encoding = "utf-8"
38
+
39
+ # Configure sensitive parameters which will be filtered from the log file.
40
+ config.filter_parameters += [:password]
41
+
42
+ # Enable the asset pipeline
43
+ config.assets.enabled = true
44
+
45
+ # Version of your assets, change this if you want to expire all your assets
46
+ config.assets.version = '1.0'
47
+ end
48
+ end
data/config/boot.rb ADDED
@@ -0,0 +1,6 @@
1
+ require 'rubygems'
2
+
3
+ # Set up gems listed in the Gemfile.
4
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
5
+
6
+ require 'bundler/setup' if File.exists?(ENV['BUNDLE_GEMFILE'])
data/config/routes.rb ADDED
@@ -0,0 +1,15 @@
1
+ Rails.application.routes.draw do
2
+ namespace :spud do
3
+ resource :user_session
4
+ resource :user
5
+ match 'settings' => "users#settings"
6
+ namespace :admin do
7
+ root :to => "dashboard#index"
8
+ resources :users
9
+ end
10
+ resource :sitemap,:only => [:show]
11
+ match 'setup' => 'setup#index'
12
+ end
13
+
14
+ end
15
+