spud_core 0.4.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.
- data/README.markdown +41 -0
- data/app/assets/images/back_disabled.jpg +0 -0
- data/app/assets/images/back_enabled.jpg +0 -0
- data/app/assets/images/favicon.ico +0 -0
- data/app/assets/images/forward_disabled.jpg +0 -0
- data/app/assets/images/forward_enabled.jpg +0 -0
- data/app/assets/images/sort_asc.png +0 -0
- data/app/assets/images/sort_asc_disabled.png +0 -0
- data/app/assets/images/sort_both.png +0 -0
- data/app/assets/images/sort_desc.png +0 -0
- data/app/assets/images/sort_desc_disabled.png +0 -0
- data/app/assets/images/spud/admin/flick/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- data/app/assets/images/spud/admin/flick/ui-bg_flat_0_eeeeee_40x100.png +0 -0
- data/app/assets/images/spud/admin/flick/ui-bg_flat_55_ffffff_40x100.png +0 -0
- data/app/assets/images/spud/admin/flick/ui-bg_flat_75_ffffff_40x100.png +0 -0
- data/app/assets/images/spud/admin/flick/ui-bg_glass_65_ffffff_1x400.png +0 -0
- data/app/assets/images/spud/admin/flick/ui-bg_highlight-soft_100_f6f6f6_1x100.png +0 -0
- data/app/assets/images/spud/admin/flick/ui-bg_highlight-soft_25_0073ea_1x100.png +0 -0
- data/app/assets/images/spud/admin/flick/ui-bg_highlight-soft_50_dddddd_1x100.png +0 -0
- data/app/assets/images/spud/admin/flick/ui-icons_0073ea_256x240.png +0 -0
- data/app/assets/images/spud/admin/flick/ui-icons_454545_256x240.png +0 -0
- data/app/assets/images/spud/admin/flick/ui-icons_666666_256x240.png +0 -0
- data/app/assets/images/spud/admin/flick/ui-icons_ff0084_256x240.png +0 -0
- data/app/assets/images/spud/admin/flick/ui-icons_ffffff_256x240.png +0 -0
- data/app/assets/images/spud/admin/users_thumb.png +0 -0
- data/app/assets/javascripts/spud/admin/application.js +90 -0
- data/app/assets/javascripts/spud/admin/jquery.dataTables.min.js +151 -0
- data/app/assets/javascripts/spud/admin/settings.js +2 -0
- data/app/assets/javascripts/spud/admin/users.js +2 -0
- data/app/assets/javascripts/spud/setup.js +2 -0
- data/app/assets/javascripts/spud/sitemaps.js +2 -0
- data/app/assets/javascripts/spud/user_sessions.js +2 -0
- data/app/assets/javascripts/spud/users.js +2 -0
- data/app/assets/javascripts/wymeditor/iframe/default/lbl-article.png +0 -0
- data/app/assets/javascripts/wymeditor/iframe/default/lbl-aside.png +0 -0
- data/app/assets/javascripts/wymeditor/iframe/default/lbl-blockquote.png +0 -0
- data/app/assets/javascripts/wymeditor/iframe/default/lbl-command.png +0 -0
- data/app/assets/javascripts/wymeditor/iframe/default/lbl-details.png +0 -0
- data/app/assets/javascripts/wymeditor/iframe/default/lbl-figcaption.png +0 -0
- data/app/assets/javascripts/wymeditor/iframe/default/lbl-figure.png +0 -0
- data/app/assets/javascripts/wymeditor/iframe/default/lbl-footer.png +0 -0
- data/app/assets/javascripts/wymeditor/iframe/default/lbl-h1.png +0 -0
- data/app/assets/javascripts/wymeditor/iframe/default/lbl-h2.png +0 -0
- data/app/assets/javascripts/wymeditor/iframe/default/lbl-h3.png +0 -0
- data/app/assets/javascripts/wymeditor/iframe/default/lbl-h4.png +0 -0
- data/app/assets/javascripts/wymeditor/iframe/default/lbl-h5.png +0 -0
- data/app/assets/javascripts/wymeditor/iframe/default/lbl-h6.png +0 -0
- data/app/assets/javascripts/wymeditor/iframe/default/lbl-header.png +0 -0
- data/app/assets/javascripts/wymeditor/iframe/default/lbl-hgroup.png +0 -0
- data/app/assets/javascripts/wymeditor/iframe/default/lbl-mark.png +0 -0
- data/app/assets/javascripts/wymeditor/iframe/default/lbl-meter.png +0 -0
- data/app/assets/javascripts/wymeditor/iframe/default/lbl-nav.png +0 -0
- data/app/assets/javascripts/wymeditor/iframe/default/lbl-p.png +0 -0
- data/app/assets/javascripts/wymeditor/iframe/default/lbl-pre.png +0 -0
- data/app/assets/javascripts/wymeditor/iframe/default/lbl-progress.png +0 -0
- data/app/assets/javascripts/wymeditor/iframe/default/lbl-rp.png +0 -0
- data/app/assets/javascripts/wymeditor/iframe/default/lbl-rt.png +0 -0
- data/app/assets/javascripts/wymeditor/iframe/default/lbl-ruby.png +0 -0
- data/app/assets/javascripts/wymeditor/iframe/default/lbl-section.png +0 -0
- data/app/assets/javascripts/wymeditor/iframe/default/lbl-summary.png +0 -0
- data/app/assets/javascripts/wymeditor/iframe/default/lbl-time.png +0 -0
- data/app/assets/javascripts/wymeditor/iframe/default/readme.md +1 -0
- data/app/assets/javascripts/wymeditor/iframe/default/wymiframe.css +91 -0
- data/app/assets/javascripts/wymeditor/iframe/default/wymiframe.html +26 -0
- data/app/assets/javascripts/wymeditor/jquery.wymeditor.js +9983 -0
- data/app/assets/javascripts/wymeditor/jquery.wymeditor.min.js +34 -0
- data/app/assets/javascripts/wymeditor/lang/bg.js +45 -0
- data/app/assets/javascripts/wymeditor/lang/ca.js +45 -0
- data/app/assets/javascripts/wymeditor/lang/cs.js +45 -0
- data/app/assets/javascripts/wymeditor/lang/cy.js +45 -0
- data/app/assets/javascripts/wymeditor/lang/de.js +45 -0
- data/app/assets/javascripts/wymeditor/lang/en.js +45 -0
- data/app/assets/javascripts/wymeditor/lang/es.js +45 -0
- data/app/assets/javascripts/wymeditor/lang/fa.js +46 -0
- data/app/assets/javascripts/wymeditor/lang/fi.js +44 -0
- data/app/assets/javascripts/wymeditor/lang/fr.js +45 -0
- data/app/assets/javascripts/wymeditor/lang/gl.js +45 -0
- data/app/assets/javascripts/wymeditor/lang/he.js +45 -0
- data/app/assets/javascripts/wymeditor/lang/hr.js +45 -0
- data/app/assets/javascripts/wymeditor/lang/hu.js +45 -0
- data/app/assets/javascripts/wymeditor/lang/it.js +45 -0
- data/app/assets/javascripts/wymeditor/lang/ja.js +44 -0
- data/app/assets/javascripts/wymeditor/lang/lt.js +45 -0
- data/app/assets/javascripts/wymeditor/lang/nb.js +45 -0
- data/app/assets/javascripts/wymeditor/lang/nl.js +45 -0
- data/app/assets/javascripts/wymeditor/lang/nn.js +45 -0
- data/app/assets/javascripts/wymeditor/lang/pl.js +45 -0
- data/app/assets/javascripts/wymeditor/lang/pt-br.js +45 -0
- data/app/assets/javascripts/wymeditor/lang/pt.js +45 -0
- data/app/assets/javascripts/wymeditor/lang/ru.js +45 -0
- data/app/assets/javascripts/wymeditor/lang/sv.js +46 -0
- data/app/assets/javascripts/wymeditor/lang/tr.js +45 -0
- data/app/assets/javascripts/wymeditor/lang/zh_cn.js +47 -0
- data/app/assets/javascripts/wymeditor/plugins/embed/jquery.wymeditor.embed.js +82 -0
- data/app/assets/javascripts/wymeditor/plugins/fullscreen/icon_fullscreen.gif +0 -0
- data/app/assets/javascripts/wymeditor/plugins/fullscreen/jquery.wymeditor.fullscreen.js +124 -0
- data/app/assets/javascripts/wymeditor/plugins/hovertools/jquery.wymeditor.hovertools.js +49 -0
- data/app/assets/javascripts/wymeditor/plugins/list/jquery.wymeditor.list.js +60 -0
- data/app/assets/javascripts/wymeditor/plugins/rdfa/jquery.wymeditor.rdfa.js +186 -0
- data/app/assets/javascripts/wymeditor/plugins/resizable/jquery.wymeditor.resizable.js +77 -0
- data/app/assets/javascripts/wymeditor/plugins/resizable/readme.txt +124 -0
- data/app/assets/javascripts/wymeditor/plugins/table/jquery.wymeditor.table.js +721 -0
- data/app/assets/javascripts/wymeditor/plugins/table/table_delete_column.png +0 -0
- data/app/assets/javascripts/wymeditor/plugins/table/table_delete_row.png +0 -0
- data/app/assets/javascripts/wymeditor/plugins/table/table_insert_column.png +0 -0
- data/app/assets/javascripts/wymeditor/plugins/table/table_insert_row.png +0 -0
- data/app/assets/javascripts/wymeditor/plugins/table/table_join_row.png +0 -0
- data/app/assets/javascripts/wymeditor/plugins/tidy/README +19 -0
- data/app/assets/javascripts/wymeditor/plugins/tidy/jquery.wymeditor.tidy.js +78 -0
- data/app/assets/javascripts/wymeditor/plugins/tidy/tidy.php +58 -0
- data/app/assets/javascripts/wymeditor/plugins/tidy/wand.png +0 -0
- data/app/assets/javascripts/wymeditor/skins/compact/icons.png +0 -0
- data/app/assets/javascripts/wymeditor/skins/compact/skin.css +134 -0
- data/app/assets/javascripts/wymeditor/skins/compact/skin.js +37 -0
- data/app/assets/javascripts/wymeditor/skins/default/icons.png +0 -0
- data/app/assets/javascripts/wymeditor/skins/default/skin.css +133 -0
- data/app/assets/javascripts/wymeditor/skins/default/skin.js +40 -0
- data/app/assets/javascripts/wymeditor/skins/minimal/images/bg.header.gif +0 -0
- data/app/assets/javascripts/wymeditor/skins/minimal/images/bg.selector.silver.gif +0 -0
- data/app/assets/javascripts/wymeditor/skins/minimal/images/bg.wymeditor.png +0 -0
- data/app/assets/javascripts/wymeditor/skins/minimal/images/icons.silver.gif +0 -0
- data/app/assets/javascripts/wymeditor/skins/minimal/skin.css +131 -0
- data/app/assets/javascripts/wymeditor/skins/minimal/skin.js +30 -0
- data/app/assets/javascripts/wymeditor/skins/silver/COPYING +674 -0
- data/app/assets/javascripts/wymeditor/skins/silver/README +27 -0
- data/app/assets/javascripts/wymeditor/skins/silver/images/bg.header.gif +0 -0
- data/app/assets/javascripts/wymeditor/skins/silver/images/bg.selector.silver.gif +0 -0
- data/app/assets/javascripts/wymeditor/skins/silver/images/bg.wymeditor.png +0 -0
- data/app/assets/javascripts/wymeditor/skins/silver/images/icons.silver.gif +0 -0
- data/app/assets/javascripts/wymeditor/skins/silver/skin.css +297 -0
- data/app/assets/javascripts/wymeditor/skins/silver/skin.js +61 -0
- data/app/assets/javascripts/wymeditor/skins/twopanels/icons.png +0 -0
- data/app/assets/javascripts/wymeditor/skins/twopanels/skin.css +134 -0
- data/app/assets/javascripts/wymeditor/skins/twopanels/skin.js +39 -0
- data/app/assets/javascripts/wymeditor/skins/wymeditor_icon.png +0 -0
- data/app/assets/stylesheets/spud/admin/application.css +464 -0
- data/app/assets/stylesheets/spud/admin/jquery-ui.css +568 -0
- data/app/assets/stylesheets/spud/admin/settings.css +4 -0
- data/app/assets/stylesheets/spud/admin/users.css +4 -0
- data/app/assets/stylesheets/spud/forms.css +108 -0
- data/app/assets/stylesheets/spud/login/application.css +302 -0
- data/app/assets/stylesheets/spud/login.css +58 -0
- data/app/assets/stylesheets/spud/setup.css +4 -0
- data/app/assets/stylesheets/spud/sitemaps.css +4 -0
- data/app/assets/stylesheets/spud/user_sessions.css +4 -0
- data/app/assets/stylesheets/spud/users.css +4 -0
- data/app/controllers/spud/admin/application_controller.rb +19 -0
- data/app/controllers/spud/admin/dashboard_controller.rb +7 -0
- data/app/controllers/spud/admin/settings_controller.rb +15 -0
- data/app/controllers/spud/admin/users_controller.rb +111 -0
- data/app/controllers/spud/application_controller.rb +48 -0
- data/app/controllers/spud/setup_controller.rb +22 -0
- data/app/controllers/spud/sitemaps_controller.rb +6 -0
- data/app/controllers/spud/user_sessions_controller.rb +28 -0
- data/app/controllers/spud/users_controller.rb +21 -0
- data/app/helpers/spud/admin/application_helper.rb +17 -0
- data/app/helpers/spud/admin/settings_helper.rb +2 -0
- data/app/helpers/spud/admin/users_helper.rb +2 -0
- data/app/helpers/spud/setup_helper.rb +2 -0
- data/app/helpers/spud/sitemaps_helper.rb +2 -0
- data/app/helpers/spud/user_sessions_helper.rb +2 -0
- data/app/helpers/spud/users_helper.rb +2 -0
- data/app/models/spud_admin_permission.rb +2 -0
- data/app/models/spud_setting.rb +2 -0
- data/app/models/spud_user.rb +16 -0
- data/app/models/spud_user_session.rb +3 -0
- data/app/views/layouts/spud/admin/application.html.erb +44 -0
- data/app/views/layouts/spud/admin/detail.html.erb +31 -0
- data/app/views/layouts/spud/login/application.html.erb +17 -0
- data/app/views/layouts/spud/setup.html.erb +47 -0
- data/app/views/spud/admin/dashboard/index.html.erb +11 -0
- data/app/views/spud/admin/users/_edit.html.erb +14 -0
- data/app/views/spud/admin/users/_form.html.erb +51 -0
- data/app/views/spud/admin/users/_new.html.erb +14 -0
- data/app/views/spud/admin/users/index.html.erb +41 -0
- data/app/views/spud/admin/users/show.html.erb +17 -0
- data/app/views/spud/setup/index.html.erb +25 -0
- data/app/views/spud/sitemaps/show.xml.builder +12 -0
- data/app/views/spud/user_sessions/new.html.erb +22 -0
- data/app/views/spud/users/_form.html.erb +35 -0
- data/app/views/spud/users/settings.html.erb +14 -0
- data/config/application.rb +48 -0
- data/config/boot.rb +6 -0
- data/config/routes.rb +15 -0
- data/lib/spud_core/belongs_to_app.rb +54 -0
- data/lib/spud_core/configuration.rb +9 -0
- data/lib/spud_core/engine.rb +34 -0
- data/lib/spud_core/test_files.rb +25 -0
- data/lib/spud_core.rb +8 -0
- metadata +311 -0
|
@@ -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,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,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> | <%=link_to "Settings", spud_settings_path%> | <%=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%> <%=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"%> | <%=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
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
|
+
|