admin_interface 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +87 -0
- data/admin_interface.gemspec +17 -0
- data/lib/generators/admin_interface/USAGE +1 -0
- data/lib/generators/admin_interface/admin_interface_generator.rb +42 -0
- data/lib/generators/admin_interface/templates/INSTALL +10 -0
- data/lib/generators/admin_interface/templates/controllers/base_controller.rb +32 -0
- data/lib/generators/admin_interface/templates/controllers/resource_controller.rb +92 -0
- data/lib/generators/admin_interface/templates/helpers/admin_helper.rb +24 -0
- data/lib/generators/admin_interface/templates/images/1downarrow.png +0 -0
- data/lib/generators/admin_interface/templates/images/1uparrow.png +0 -0
- data/lib/generators/admin_interface/templates/images/22x22/.svn/all-wcprops +89 -0
- data/lib/generators/admin_interface/templates/images/22x22/.svn/entries +210 -0
- data/lib/generators/admin_interface/templates/images/22x22/.svn/format +1 -0
- data/lib/generators/admin_interface/templates/images/22x22/.svn/prop-base/authent.png.svn-base +5 -0
- data/lib/generators/admin_interface/templates/images/22x22/.svn/prop-base/comment.png.svn-base +5 -0
- data/lib/generators/admin_interface/templates/images/22x22/.svn/prop-base/file.png.svn-base +5 -0
- data/lib/generators/admin_interface/templates/images/22x22/.svn/prop-base/info.png.svn-base +5 -0
- data/lib/generators/admin_interface/templates/images/22x22/.svn/prop-base/notifications.png.svn-base +5 -0
- data/lib/generators/admin_interface/templates/images/22x22/.svn/prop-base/options.png.svn-base +5 -0
- data/lib/generators/admin_interface/templates/images/22x22/.svn/prop-base/package.png.svn-base +5 -0
- data/lib/generators/admin_interface/templates/images/22x22/.svn/prop-base/plugin.png.svn-base +5 -0
- data/lib/generators/admin_interface/templates/images/22x22/.svn/prop-base/projects.png.svn-base +5 -0
- data/lib/generators/admin_interface/templates/images/22x22/.svn/prop-base/role.png.svn-base +5 -0
- data/lib/generators/admin_interface/templates/images/22x22/.svn/prop-base/settings.png.svn-base +5 -0
- data/lib/generators/admin_interface/templates/images/22x22/.svn/prop-base/tracker.png.svn-base +5 -0
- data/lib/generators/admin_interface/templates/images/22x22/.svn/prop-base/users.png.svn-base +5 -0
- data/lib/generators/admin_interface/templates/images/22x22/.svn/prop-base/workflow.png.svn-base +5 -0
- data/lib/generators/admin_interface/templates/images/22x22/.svn/text-base/authent.png.svn-base +0 -0
- data/lib/generators/admin_interface/templates/images/22x22/.svn/text-base/comment.png.svn-base +0 -0
- data/lib/generators/admin_interface/templates/images/22x22/.svn/text-base/file.png.svn-base +0 -0
- data/lib/generators/admin_interface/templates/images/22x22/.svn/text-base/info.png.svn-base +0 -0
- data/lib/generators/admin_interface/templates/images/22x22/.svn/text-base/notifications.png.svn-base +0 -0
- data/lib/generators/admin_interface/templates/images/22x22/.svn/text-base/options.png.svn-base +0 -0
- data/lib/generators/admin_interface/templates/images/22x22/.svn/text-base/package.png.svn-base +0 -0
- data/lib/generators/admin_interface/templates/images/22x22/.svn/text-base/plugin.png.svn-base +0 -0
- data/lib/generators/admin_interface/templates/images/22x22/.svn/text-base/projects.png.svn-base +0 -0
- data/lib/generators/admin_interface/templates/images/22x22/.svn/text-base/role.png.svn-base +0 -0
- data/lib/generators/admin_interface/templates/images/22x22/.svn/text-base/settings.png.svn-base +0 -0
- data/lib/generators/admin_interface/templates/images/22x22/.svn/text-base/tracker.png.svn-base +0 -0
- data/lib/generators/admin_interface/templates/images/22x22/.svn/text-base/users.png.svn-base +0 -0
- data/lib/generators/admin_interface/templates/images/22x22/.svn/text-base/workflow.png.svn-base +0 -0
- data/lib/generators/admin_interface/templates/images/22x22/authent.png +0 -0
- data/lib/generators/admin_interface/templates/images/22x22/comment.png +0 -0
- data/lib/generators/admin_interface/templates/images/22x22/file.png +0 -0
- data/lib/generators/admin_interface/templates/images/22x22/info.png +0 -0
- data/lib/generators/admin_interface/templates/images/22x22/notifications.png +0 -0
- data/lib/generators/admin_interface/templates/images/22x22/options.png +0 -0
- data/lib/generators/admin_interface/templates/images/22x22/package.png +0 -0
- data/lib/generators/admin_interface/templates/images/22x22/plugin.png +0 -0
- data/lib/generators/admin_interface/templates/images/22x22/projects.png +0 -0
- data/lib/generators/admin_interface/templates/images/22x22/role.png +0 -0
- data/lib/generators/admin_interface/templates/images/22x22/settings.png +0 -0
- data/lib/generators/admin_interface/templates/images/22x22/tracker.png +0 -0
- data/lib/generators/admin_interface/templates/images/22x22/users.png +0 -0
- data/lib/generators/admin_interface/templates/images/22x22/workflow.png +0 -0
- data/lib/generators/admin_interface/templates/images/2downarrow.png +0 -0
- data/lib/generators/admin_interface/templates/images/2uparrow.png +0 -0
- data/lib/generators/admin_interface/templates/images/add.png +0 -0
- data/lib/generators/admin_interface/templates/images/arrow_collapsed.png +0 -0
- data/lib/generators/admin_interface/templates/images/arrow_down.png +0 -0
- data/lib/generators/admin_interface/templates/images/arrow_expanded.png +0 -0
- data/lib/generators/admin_interface/templates/images/attachment.png +0 -0
- data/lib/generators/admin_interface/templates/images/bullet_add.png +0 -0
- data/lib/generators/admin_interface/templates/images/bullet_arrow_left.png +0 -0
- data/lib/generators/admin_interface/templates/images/bullet_arrow_right.png +0 -0
- data/lib/generators/admin_interface/templates/images/bullet_black.png +0 -0
- data/lib/generators/admin_interface/templates/images/bullet_blue.png +0 -0
- data/lib/generators/admin_interface/templates/images/bullet_delete.png +0 -0
- data/lib/generators/admin_interface/templates/images/bullet_diamond.png +0 -0
- data/lib/generators/admin_interface/templates/images/bullet_end.png +0 -0
- data/lib/generators/admin_interface/templates/images/bullet_go.png +0 -0
- data/lib/generators/admin_interface/templates/images/bullet_orange.png +0 -0
- data/lib/generators/admin_interface/templates/images/bullet_purple.png +0 -0
- data/lib/generators/admin_interface/templates/images/bullet_toggle_minus.png +0 -0
- data/lib/generators/admin_interface/templates/images/bullet_toggle_plus.png +0 -0
- data/lib/generators/admin_interface/templates/images/calendar.png +0 -0
- data/lib/generators/admin_interface/templates/images/cancel.png +0 -0
- data/lib/generators/admin_interface/templates/images/changeset.png +0 -0
- data/lib/generators/admin_interface/templates/images/close.png +0 -0
- data/lib/generators/admin_interface/templates/images/close_hl.png +0 -0
- data/lib/generators/admin_interface/templates/images/comment.png +0 -0
- data/lib/generators/admin_interface/templates/images/comments.png +0 -0
- data/lib/generators/admin_interface/templates/images/copy.png +0 -0
- data/lib/generators/admin_interface/templates/images/database_key.png +0 -0
- data/lib/generators/admin_interface/templates/images/delete.png +0 -0
- data/lib/generators/admin_interface/templates/images/destroy.png +0 -0
- data/lib/generators/admin_interface/templates/images/document.png +0 -0
- data/lib/generators/admin_interface/templates/images/download.png +0 -0
- data/lib/generators/admin_interface/templates/images/draft.png +0 -0
- data/lib/generators/admin_interface/templates/images/duplicate.png +0 -0
- data/lib/generators/admin_interface/templates/images/edit.png +0 -0
- data/lib/generators/admin_interface/templates/images/email.png +0 -0
- data/lib/generators/admin_interface/templates/images/exclamation.png +0 -0
- data/lib/generators/admin_interface/templates/images/external.png +0 -0
- data/lib/generators/admin_interface/templates/images/false.png +0 -0
- data/lib/generators/admin_interface/templates/images/fav.png +0 -0
- data/lib/generators/admin_interface/templates/images/fav_off.png +0 -0
- data/lib/generators/admin_interface/templates/images/feed.png +0 -0
- data/lib/generators/admin_interface/templates/images/files/c.png +0 -0
- data/lib/generators/admin_interface/templates/images/files/csharp.png +0 -0
- data/lib/generators/admin_interface/templates/images/files/default.png +0 -0
- data/lib/generators/admin_interface/templates/images/files/image.png +0 -0
- data/lib/generators/admin_interface/templates/images/files/pdf.png +0 -0
- data/lib/generators/admin_interface/templates/images/files/php.png +0 -0
- data/lib/generators/admin_interface/templates/images/files/ruby.png +0 -0
- data/lib/generators/admin_interface/templates/images/files/text.png +0 -0
- data/lib/generators/admin_interface/templates/images/files/xml.png +0 -0
- data/lib/generators/admin_interface/templates/images/files/zip.png +0 -0
- data/lib/generators/admin_interface/templates/images/folder.png +0 -0
- data/lib/generators/admin_interface/templates/images/folder_open.png +0 -0
- data/lib/generators/admin_interface/templates/images/folder_open_add.png +0 -0
- data/lib/generators/admin_interface/templates/images/folder_open_orange.png +0 -0
- data/lib/generators/admin_interface/templates/images/group.png +0 -0
- data/lib/generators/admin_interface/templates/images/help.png +0 -0
- data/lib/generators/admin_interface/templates/images/history.png +0 -0
- data/lib/generators/admin_interface/templates/images/jstoolbar/bt_bq.png +0 -0
- data/lib/generators/admin_interface/templates/images/jstoolbar/bt_bq_remove.png +0 -0
- data/lib/generators/admin_interface/templates/images/jstoolbar/bt_code.png +0 -0
- data/lib/generators/admin_interface/templates/images/jstoolbar/bt_del.png +0 -0
- data/lib/generators/admin_interface/templates/images/jstoolbar/bt_em.png +0 -0
- data/lib/generators/admin_interface/templates/images/jstoolbar/bt_h1.png +0 -0
- data/lib/generators/admin_interface/templates/images/jstoolbar/bt_h2.png +0 -0
- data/lib/generators/admin_interface/templates/images/jstoolbar/bt_h3.png +0 -0
- data/lib/generators/admin_interface/templates/images/jstoolbar/bt_img.png +0 -0
- data/lib/generators/admin_interface/templates/images/jstoolbar/bt_ins.png +0 -0
- data/lib/generators/admin_interface/templates/images/jstoolbar/bt_link.png +0 -0
- data/lib/generators/admin_interface/templates/images/jstoolbar/bt_ol.png +0 -0
- data/lib/generators/admin_interface/templates/images/jstoolbar/bt_pre.png +0 -0
- data/lib/generators/admin_interface/templates/images/jstoolbar/bt_strong.png +0 -0
- data/lib/generators/admin_interface/templates/images/jstoolbar/bt_ul.png +0 -0
- data/lib/generators/admin_interface/templates/images/lightning.png +0 -0
- data/lib/generators/admin_interface/templates/images/link.png +0 -0
- data/lib/generators/admin_interface/templates/images/loading.gif +0 -0
- data/lib/generators/admin_interface/templates/images/locked.png +0 -0
- data/lib/generators/admin_interface/templates/images/message.png +0 -0
- data/lib/generators/admin_interface/templates/images/milestone.png +0 -0
- data/lib/generators/admin_interface/templates/images/move.png +0 -0
- data/lib/generators/admin_interface/templates/images/news.png +0 -0
- data/lib/generators/admin_interface/templates/images/openid-bg.gif +0 -0
- data/lib/generators/admin_interface/templates/images/package.png +0 -0
- data/lib/generators/admin_interface/templates/images/page_go.png +0 -0
- data/lib/generators/admin_interface/templates/images/plugin.png +0 -0
- data/lib/generators/admin_interface/templates/images/projects.png +0 -0
- data/lib/generators/admin_interface/templates/images/reload.png +0 -0
- data/lib/generators/admin_interface/templates/images/report.png +0 -0
- data/lib/generators/admin_interface/templates/images/save.png +0 -0
- data/lib/generators/admin_interface/templates/images/search.png +0 -0
- data/lib/generators/admin_interface/templates/images/server_key.png +0 -0
- data/lib/generators/admin_interface/templates/images/sort_asc.png +0 -0
- data/lib/generators/admin_interface/templates/images/sort_desc.png +0 -0
- data/lib/generators/admin_interface/templates/images/stats.png +0 -0
- data/lib/generators/admin_interface/templates/images/table_multiple.png +0 -0
- data/lib/generators/admin_interface/templates/images/task_done.png +0 -0
- data/lib/generators/admin_interface/templates/images/task_late.png +0 -0
- data/lib/generators/admin_interface/templates/images/task_parent_end.png +0 -0
- data/lib/generators/admin_interface/templates/images/task_todo.png +0 -0
- data/lib/generators/admin_interface/templates/images/text_list_bullets.png +0 -0
- data/lib/generators/admin_interface/templates/images/textfield.png +0 -0
- data/lib/generators/admin_interface/templates/images/ticket.png +0 -0
- data/lib/generators/admin_interface/templates/images/ticket_checked.png +0 -0
- data/lib/generators/admin_interface/templates/images/ticket_edit.png +0 -0
- data/lib/generators/admin_interface/templates/images/ticket_go.png +0 -0
- data/lib/generators/admin_interface/templates/images/ticket_note.png +0 -0
- data/lib/generators/admin_interface/templates/images/time.png +0 -0
- data/lib/generators/admin_interface/templates/images/time_add.png +0 -0
- data/lib/generators/admin_interface/templates/images/toggle_check.png +0 -0
- data/lib/generators/admin_interface/templates/images/true.png +0 -0
- data/lib/generators/admin_interface/templates/images/unlock.png +0 -0
- data/lib/generators/admin_interface/templates/images/user.png +0 -0
- data/lib/generators/admin_interface/templates/images/user_go.png +0 -0
- data/lib/generators/admin_interface/templates/images/warning.png +0 -0
- data/lib/generators/admin_interface/templates/images/wiki_edit.png +0 -0
- data/lib/generators/admin_interface/templates/images/zoom_in.png +0 -0
- data/lib/generators/admin_interface/templates/images/zoom_in_g.png +0 -0
- data/lib/generators/admin_interface/templates/images/zoom_out.png +0 -0
- data/lib/generators/admin_interface/templates/images/zoom_out_g.png +0 -0
- data/lib/generators/admin_interface/templates/javascripts/jquery.admin.js +25 -0
- data/lib/generators/admin_interface/templates/views/admin.css +921 -0
- data/lib/generators/admin_interface/templates/views/index.html.erb +42 -0
- data/lib/generators/admin_interface/templates/views/layout.html.erb +52 -0
- data/lib/generators/admin_scaffold/USAGE +20 -0
- data/lib/generators/admin_scaffold/admin_scaffold_generator.rb +135 -0
- data/lib/generators/admin_scaffold/templates/INSTALL +8 -0
- data/lib/generators/admin_scaffold/templates/controller.rb +5 -0
- data/lib/generators/admin_scaffold/templates/functional_test.rb +45 -0
- data/lib/generators/admin_scaffold/templates/helper.rb +2 -0
- data/lib/generators/admin_scaffold/templates/helper_test.rb +4 -0
- data/lib/generators/admin_scaffold/templates/layout.html.erb +17 -0
- data/lib/generators/admin_scaffold/templates/style.css +54 -0
- data/lib/generators/admin_scaffold/templates/view_edit.html.erb +15 -0
- data/lib/generators/admin_scaffold/templates/view_form_partial.html.erb +16 -0
- data/lib/generators/admin_scaffold/templates/view_index.html.erb +59 -0
- data/lib/generators/admin_scaffold/templates/view_new.html.erb +10 -0
- data/lib/generators/admin_scaffold/templates/view_show.html.erb +18 -0
- metadata +249 -0
@@ -0,0 +1,42 @@
|
|
1
|
+
<h2>Overview</h2>
|
2
|
+
|
3
|
+
<div class="splitcontentleft">
|
4
|
+
<p>
|
5
|
+
Welcome to the admin area!
|
6
|
+
This file is in <%= link_to('/app/views/admin/index.html.erb', "file://#{File.join(RAILS_ROOT, '/app/views/admin/index.html.erb')}", :class => 'external') %>.<br />You should change it.
|
7
|
+
</p>
|
8
|
+
Styling is pretty simpel but useful. It all comes from Redmine :).
|
9
|
+
<ul>
|
10
|
+
<li>Google: <a href="http://www.google.com">http://www.google.com</a></li>
|
11
|
+
<li>More links:
|
12
|
+
<a href="#">Something</a>,
|
13
|
+
<a href="#">Something</a>
|
14
|
+
</li>
|
15
|
+
</ul>
|
16
|
+
|
17
|
+
<div class="box">
|
18
|
+
<h3 class="icon22 icon22-tracker">Nice boxes</h3>
|
19
|
+
<ul>
|
20
|
+
<li>
|
21
|
+
<a href="#">Something</a>:
|
22
|
+
info
|
23
|
+
</li>
|
24
|
+
<li>
|
25
|
+
<a href="#">Something</a>:
|
26
|
+
info
|
27
|
+
</li>
|
28
|
+
</ul>
|
29
|
+
<p><a href="#">View all</a></p>
|
30
|
+
</div>
|
31
|
+
</div>
|
32
|
+
|
33
|
+
<div class="splitcontentright">
|
34
|
+
<div class="box">
|
35
|
+
<h3 class="icon22 icon22-users">More boxes</h3>
|
36
|
+
<p>
|
37
|
+
This: <a href="#">Something</a>, <a href="#">Something</a><br />
|
38
|
+
</p>
|
39
|
+
</div>
|
40
|
+
</div>
|
41
|
+
|
42
|
+
<div style="clear:both;"></div>
|
@@ -0,0 +1,52 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
2
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
3
|
+
<html xmlns="http://www.w3.org/1999/xhtml">
|
4
|
+
<head>
|
5
|
+
<meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
|
6
|
+
<title>Admin</title>
|
7
|
+
<%= stylesheet_link_tag('admin') %>
|
8
|
+
<%= javascript_include_tag :defaults %>
|
9
|
+
<%= javascript_include_tag 'jquery.admin.js' %>
|
10
|
+
<%= csrf_meta_tag %>
|
11
|
+
</head>
|
12
|
+
<body>
|
13
|
+
<a name="top"></a>
|
14
|
+
<div id="wrapper">
|
15
|
+
<div id="top-menu">
|
16
|
+
<div id="loggedas">
|
17
|
+
Signed in as <%= '-put code here-' || link_to(current_user, current_user) -%>
|
18
|
+
<%= '-logout-' || link_to('logout', logout_path) %>
|
19
|
+
</div>
|
20
|
+
<ul><li><a class="home" href="/">Back to main site</a></li></ul>
|
21
|
+
</div>
|
22
|
+
<div id="header">
|
23
|
+
<h1><%= link_to 'Admin', admin_root_path %></h1>
|
24
|
+
<div id="main-menu">
|
25
|
+
<div class="tabs" id="admin_tabnav">
|
26
|
+
<ul>
|
27
|
+
<%= content_tag(:li, link_to('Overview', '/admin', :class => ((controller_name == 'admin') ? 'selected' : ''))) %>
|
28
|
+
<% Admin::BaseController.tabs.each do |tab| %>
|
29
|
+
<%= content_tag(:li, link_to(tab.humanize, {:controller => "admin/#{tab}"}, :class => ((controller_name == tab) ? 'active' : ''))) %>
|
30
|
+
<% end %>
|
31
|
+
</ul>
|
32
|
+
</div>
|
33
|
+
</div>
|
34
|
+
</div>
|
35
|
+
<%= tag('div', {:id => 'main', :class => (has_content?(:sidebar) ? '' : 'nosidebar')}, true) %>
|
36
|
+
<div id="sidebar">
|
37
|
+
<%= yield :sidebar %>
|
38
|
+
</div>
|
39
|
+
<div id="content">
|
40
|
+
<%= render_flash_messages %>
|
41
|
+
<%= yield %>
|
42
|
+
</div>
|
43
|
+
</div>
|
44
|
+
|
45
|
+
<div id="ajax-indicator" style="display:none;"><span>Loading...</span></div>
|
46
|
+
|
47
|
+
<div id="footer">
|
48
|
+
Powered by <a href="mailto:team@truvolabs.com">TruvoLabs</a> © 2009
|
49
|
+
</div>
|
50
|
+
</div>
|
51
|
+
</body>
|
52
|
+
</html>
|
@@ -0,0 +1,20 @@
|
|
1
|
+
Description:
|
2
|
+
Similar to original Rails scaffold generator but for admin interface.
|
3
|
+
Does NOT create model since you probably have it already.
|
4
|
+
|
5
|
+
Scaffolds controller and views for use in your admin view. The resource is
|
6
|
+
ready to use as a starting point for your RESTful, resource-oriented
|
7
|
+
application.
|
8
|
+
|
9
|
+
Pass the name of the model (in singular form), either CamelCased or
|
10
|
+
under_scored, as the first argument, and an optional list of attribute
|
11
|
+
pairs.
|
12
|
+
|
13
|
+
Attribute pairs are column_name:sql_type arguments specifying the
|
14
|
+
model's attributes. Timestamps are added by default, so you don't have to
|
15
|
+
specify them by hand as 'created_at:datetime updated_at:datetime'.
|
16
|
+
|
17
|
+
Examples:
|
18
|
+
`./script/generate admin_scaffold post`
|
19
|
+
`./script/generate admin_scaffold post title:string body:text published:boolean`
|
20
|
+
`./script/generate admin_scaffold purchase order_id:integer amount:decimal`
|
@@ -0,0 +1,135 @@
|
|
1
|
+
require 'rails/generators/resource_helpers'
|
2
|
+
class AdminScaffoldGenerator < Rails::Generators::NamedBase
|
3
|
+
|
4
|
+
# See: http://railsapi.com/doc/rails-v3.0.7/classes/Rails/Generators/ResourceHelpers.html
|
5
|
+
include Rails::Generators::ResourceHelpers
|
6
|
+
argument :attributes, :type => :array, :default => [], :banner => "field:type field:type"
|
7
|
+
|
8
|
+
source_root File.expand_path("../templates", __FILE__)
|
9
|
+
|
10
|
+
CONTROLLER_PATH = 'app/controllers/admin'
|
11
|
+
# MODEL_PATH = 'app/models/admin'
|
12
|
+
VIEW_PATH = 'app/views/admin'
|
13
|
+
|
14
|
+
# default_options :skip_timestamps => false, :skip_migration => false, :force_plural => false
|
15
|
+
|
16
|
+
def controller_plural_name
|
17
|
+
@name.pluralize.downcase
|
18
|
+
end
|
19
|
+
|
20
|
+
alias_method :controller_file_name, :controller_file_name
|
21
|
+
alias_method :controller_table_name, :controller_plural_name
|
22
|
+
|
23
|
+
def create_admin_scaffold
|
24
|
+
@name = file_name
|
25
|
+
|
26
|
+
if @name == @name.pluralize && !options[:force_plural]
|
27
|
+
puts "Plural version of the model detected, using singularized version. Override with --force-plural."
|
28
|
+
@name = @name.singularize
|
29
|
+
end
|
30
|
+
|
31
|
+
for action in scaffold_views
|
32
|
+
template(
|
33
|
+
"view_#{action}.html.erb",
|
34
|
+
File.join(VIEW_PATH, controller_class_path, controller_file_name, "#{action}.html.erb")
|
35
|
+
)
|
36
|
+
end
|
37
|
+
template 'view_form_partial.html.erb', File.join(VIEW_PATH, controller_class_path, controller_file_name, "_form.html.erb")
|
38
|
+
|
39
|
+
readme 'INSTALL'
|
40
|
+
end
|
41
|
+
|
42
|
+
private
|
43
|
+
|
44
|
+
def scaffold_views
|
45
|
+
%w[ index show new edit ]
|
46
|
+
end
|
47
|
+
|
48
|
+
# def create_admin_scaffold
|
49
|
+
# @name = file_name
|
50
|
+
#
|
51
|
+
# if @name == @name.pluralize && !options[:force_plural]
|
52
|
+
# logger.warning "Plural version of the model detected, using singularized version. Override with --force-plural."
|
53
|
+
# @name = @name.singularize
|
54
|
+
# end
|
55
|
+
#
|
56
|
+
# @controller_name = @name.pluralize
|
57
|
+
#
|
58
|
+
# base_name, @controller_class_path, @controller_file_path, @controller_class_nesting, @controller_class_nesting_depth = extract_modules(@controller_name)
|
59
|
+
# @controller_class_name_without_nesting, @controller_underscore_name, @controller_plural_name = inflect_names(base_name)
|
60
|
+
# @controller_singular_name=base_name.singularize
|
61
|
+
# if @controller_class_nesting.empty?
|
62
|
+
# @controller_class_name = @controller_class_name_without_nesting
|
63
|
+
# else
|
64
|
+
# @controller_class_name = "#{@controller_class_nesting}::#{@controller_class_name_without_nesting}"
|
65
|
+
# end
|
66
|
+
# end
|
67
|
+
#
|
68
|
+
# def manifest
|
69
|
+
# # Check for class naming collisions.
|
70
|
+
# # m.class_collisions("Admin::#{controller_class_name}Controller")
|
71
|
+
# # m.class_collisions(class_name)
|
72
|
+
#
|
73
|
+
# # Controller, helper, views, test and stylesheets directories.
|
74
|
+
# # m.directory(File.join('app/models', class_path))
|
75
|
+
# directory(File.join(CONTROLLER_PATH, controller_class_path))
|
76
|
+
# # m.directory(File.join('app/helpers', controller_class_path))
|
77
|
+
# directory(File.join(VIEW_PATH, controller_class_path, controller_file_name))
|
78
|
+
# # m.directory(File.join('app/views/layouts', controller_class_path))
|
79
|
+
# # m.directory(File.join('test/functional', controller_class_path))
|
80
|
+
# # m.directory(File.join('test/unit', class_path))
|
81
|
+
# # m.directory(File.join('test/unit/helpers', class_path))
|
82
|
+
# # m.directory(File.join('public/stylesheets', class_path))
|
83
|
+
#
|
84
|
+
# for action in scaffold_views
|
85
|
+
# template(
|
86
|
+
# "view_#{action}.html.erb",
|
87
|
+
# File.join(VIEW_PATH, controller_class_path, controller_file_name, "#{action}.html.erb")
|
88
|
+
# )
|
89
|
+
# end
|
90
|
+
# template 'view_form_partial.html.erb', File.join(VIEW_PATH, controller_class_path, controller_file_name, "_form.html.erb")
|
91
|
+
#
|
92
|
+
# # Layout and stylesheet.
|
93
|
+
# # m.template('layout.html.erb', File.join('app/views/layouts', controller_class_path, "#{controller_file_name}.html.erb"))
|
94
|
+
# # m.template('style.css', 'public/stylesheets/scaffold.css')
|
95
|
+
#
|
96
|
+
# template(
|
97
|
+
# 'controller.rb', File.join(CONTROLLER_PATH, controller_class_path, "#{controller_file_name}_controller.rb")
|
98
|
+
# )
|
99
|
+
#
|
100
|
+
# # m.template('functional_test.rb', File.join('test/functional', controller_class_path, "#{controller_file_name}_controller_test.rb"))
|
101
|
+
# # m.template('helper.rb', File.join('app/helpers', controller_class_path, "#{controller_file_name}_helper.rb"))
|
102
|
+
# # m.template('helper_test.rb', File.join('test/unit/helpers', controller_class_path, "#{controller_file_name}_helper_test.rb"))
|
103
|
+
#
|
104
|
+
# # m.route_resources controller_file_name
|
105
|
+
#
|
106
|
+
# # m.dependency 'model', [name] + @args, :collision => :skip
|
107
|
+
#
|
108
|
+
# readme 'INSTALL'
|
109
|
+
# end
|
110
|
+
#
|
111
|
+
# protected
|
112
|
+
# # Override with your own usage banner.
|
113
|
+
# def banner
|
114
|
+
# "Usage: #{$0} scaffold ModelName [field:type, field:type]"
|
115
|
+
# end
|
116
|
+
#
|
117
|
+
# def add_options!(opt)
|
118
|
+
# opt.separator ''
|
119
|
+
# opt.separator 'Options:'
|
120
|
+
# opt.on("--skip-timestamps",
|
121
|
+
# "Don't add timestamps to the migration file for this model") { |v| options[:skip_timestamps] = v }
|
122
|
+
# opt.on("--skip-migration",
|
123
|
+
# "Don't generate a migration file for this model") { |v| options[:skip_migration] = v }
|
124
|
+
# opt.on("--force-plural",
|
125
|
+
# "Forces the generation of a plural ModelName") { |v| options[:force_plural] = v }
|
126
|
+
# end
|
127
|
+
#
|
128
|
+
# def scaffold_views
|
129
|
+
# %w[ index show new edit ]
|
130
|
+
# end
|
131
|
+
#
|
132
|
+
# def model_name
|
133
|
+
# class_name.demodulize
|
134
|
+
# end
|
135
|
+
end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
Add following routes to config/routes.rb
|
2
|
+
|
3
|
+
map.admin 'admin', :controller => 'admin'
|
4
|
+
map.namespace :admin do |admin|
|
5
|
+
# Add the following after you've used the admin_scaffold generator
|
6
|
+
# admin.resources :model, :collection => {:destroy_all => :delete}
|
7
|
+
end
|
8
|
+
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class <%= controller_class_name %>ControllerTest < ActionController::TestCase
|
4
|
+
test "should get index" do
|
5
|
+
get :index
|
6
|
+
assert_response :success
|
7
|
+
assert_not_nil assigns(:<%= table_name %>)
|
8
|
+
end
|
9
|
+
|
10
|
+
test "should get new" do
|
11
|
+
get :new
|
12
|
+
assert_response :success
|
13
|
+
end
|
14
|
+
|
15
|
+
test "should create <%= file_name %>" do
|
16
|
+
assert_difference('<%= class_name %>.count') do
|
17
|
+
post :create, :<%= file_name %> => { }
|
18
|
+
end
|
19
|
+
|
20
|
+
assert_redirected_to <%= file_name %>_path(assigns(:<%= file_name %>))
|
21
|
+
end
|
22
|
+
|
23
|
+
test "should show <%= file_name %>" do
|
24
|
+
get :show, :id => <%= table_name %>(:one).to_param
|
25
|
+
assert_response :success
|
26
|
+
end
|
27
|
+
|
28
|
+
test "should get edit" do
|
29
|
+
get :edit, :id => <%= table_name %>(:one).to_param
|
30
|
+
assert_response :success
|
31
|
+
end
|
32
|
+
|
33
|
+
test "should update <%= file_name %>" do
|
34
|
+
put :update, :id => <%= table_name %>(:one).to_param, :<%= file_name %> => { }
|
35
|
+
assert_redirected_to <%= file_name %>_path(assigns(:<%= file_name %>))
|
36
|
+
end
|
37
|
+
|
38
|
+
test "should destroy <%= file_name %>" do
|
39
|
+
assert_difference('<%= class_name %>.count', -1) do
|
40
|
+
delete :destroy, :id => <%= table_name %>(:one).to_param
|
41
|
+
end
|
42
|
+
|
43
|
+
assert_redirected_to <%= table_name %>_path
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
2
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
3
|
+
|
4
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
5
|
+
<head>
|
6
|
+
<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
|
7
|
+
<title><%= controller_class_name %>: <%%= controller.action_name %></title>
|
8
|
+
<%%= stylesheet_link_tag 'scaffold' %>
|
9
|
+
</head>
|
10
|
+
<body>
|
11
|
+
|
12
|
+
<p style="color: green"><%%= flash[:notice] %></p>
|
13
|
+
|
14
|
+
<%%= yield %>
|
15
|
+
|
16
|
+
</body>
|
17
|
+
</html>
|
@@ -0,0 +1,54 @@
|
|
1
|
+
body { background-color: #fff; color: #333; }
|
2
|
+
|
3
|
+
body, p, ol, ul, td {
|
4
|
+
font-family: verdana, arial, helvetica, sans-serif;
|
5
|
+
font-size: 13px;
|
6
|
+
line-height: 18px;
|
7
|
+
}
|
8
|
+
|
9
|
+
pre {
|
10
|
+
background-color: #eee;
|
11
|
+
padding: 10px;
|
12
|
+
font-size: 11px;
|
13
|
+
}
|
14
|
+
|
15
|
+
a { color: #000; }
|
16
|
+
a:visited { color: #666; }
|
17
|
+
a:hover { color: #fff; background-color:#000; }
|
18
|
+
|
19
|
+
.fieldWithErrors {
|
20
|
+
padding: 2px;
|
21
|
+
background-color: red;
|
22
|
+
display: table;
|
23
|
+
}
|
24
|
+
|
25
|
+
#errorExplanation {
|
26
|
+
width: 400px;
|
27
|
+
border: 2px solid red;
|
28
|
+
padding: 7px;
|
29
|
+
padding-bottom: 12px;
|
30
|
+
margin-bottom: 20px;
|
31
|
+
background-color: #f0f0f0;
|
32
|
+
}
|
33
|
+
|
34
|
+
#errorExplanation h2 {
|
35
|
+
text-align: left;
|
36
|
+
font-weight: bold;
|
37
|
+
padding: 5px 5px 5px 15px;
|
38
|
+
font-size: 12px;
|
39
|
+
margin: -7px;
|
40
|
+
background-color: #c00;
|
41
|
+
color: #fff;
|
42
|
+
}
|
43
|
+
|
44
|
+
#errorExplanation p {
|
45
|
+
color: #333;
|
46
|
+
margin-bottom: 0;
|
47
|
+
padding: 5px;
|
48
|
+
}
|
49
|
+
|
50
|
+
#errorExplanation ul li {
|
51
|
+
font-size: 12px;
|
52
|
+
list-style: square;
|
53
|
+
}
|
54
|
+
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<div class="contextual">
|
2
|
+
<%%= link_to 'Show', [:admin, @<%= singular_name %>], :class => 'icon icon-details' %>
|
3
|
+
<%%= link_to 'Destroy', [:admin, @<%= singular_name %>], :confirm => 'Are you sure?', :method => :delete, :class => 'icon icon-del' %>
|
4
|
+
</div>
|
5
|
+
|
6
|
+
<h2>Editing <%= singular_name %></h2>
|
7
|
+
|
8
|
+
<%%= form_for(@<%= singular_name %>, :url => [:admin, @<%= singular_name %>], :html => {:class => 'tabular'}) do |form| %>
|
9
|
+
<%%= form.error_messages %>
|
10
|
+
|
11
|
+
<%%= render :partial => form %>
|
12
|
+
|
13
|
+
<%%= form.submit 'Update' %>
|
14
|
+
<%%= link_to 'Back', admin_<%= plural_name %>_path %>
|
15
|
+
<%% end %>
|
@@ -0,0 +1,16 @@
|
|
1
|
+
<%% content_for(:sidebar) do %>
|
2
|
+
<h3>Sidebar</h3>
|
3
|
+
You can add information in the sidebar if you like.
|
4
|
+
|
5
|
+
<h3>Or not</h3>
|
6
|
+
Or you can leave it out by removing content_for.
|
7
|
+
<%% end %>
|
8
|
+
|
9
|
+
<div class="box">
|
10
|
+
<% for attribute in attributes -%>
|
11
|
+
<p>
|
12
|
+
<%%= form.label :<%= attribute.name %> %>
|
13
|
+
<%%= form.<%= attribute.field_type %> :<%= attribute.name %> %>
|
14
|
+
</p>
|
15
|
+
<% end -%>
|
16
|
+
</div>
|
@@ -0,0 +1,59 @@
|
|
1
|
+
<div class="contextual">
|
2
|
+
<%%= link_to 'New <%= singular_name %>', new_admin_<%= singular_name %>_path, :class => 'icon icon-add' %>
|
3
|
+
</div>
|
4
|
+
|
5
|
+
<h2><%= plural_name.humanize %></h2>
|
6
|
+
|
7
|
+
<%% if @<%= plural_name %>.blank? %>
|
8
|
+
<p class="nodata">No data to display</p>
|
9
|
+
<%% else %>
|
10
|
+
<table class="list issues">
|
11
|
+
<thead>
|
12
|
+
<tr>
|
13
|
+
<th class="checkbox"><%%= image_tag "admin/true.png" %></th>
|
14
|
+
<% for attribute in attributes -%>
|
15
|
+
<% if defined?(Searchlogic) -%>
|
16
|
+
<th><%%= order(@search, {:by => :<%= attribute.name %>}) %></th>
|
17
|
+
<% else -%>
|
18
|
+
<th><%= attribute.human_name %></th>
|
19
|
+
<% end -%>
|
20
|
+
<% end -%>
|
21
|
+
<th></th>
|
22
|
+
</tr>
|
23
|
+
</thead>
|
24
|
+
|
25
|
+
<%%= form_tag(destroy_all_admin_<%= plural_name %>_path, :method => :delete) do %>
|
26
|
+
<tbody>
|
27
|
+
<%% @<%= plural_name %>.each do |<%= singular_name %>| %>
|
28
|
+
<tr class="<%%= cycle('odd', 'even') %>">
|
29
|
+
<td class="checkbox">
|
30
|
+
<%%= check_box_tag('ids[]', <%= singular_name %>.id, nil, :id => "ids_#{<%= singular_name %>.id}") %>
|
31
|
+
</td>
|
32
|
+
<% for attribute in attributes -%>
|
33
|
+
<td><%%=h <%= singular_name %>.<%= attribute.name %> %></td>
|
34
|
+
<% end -%>
|
35
|
+
<td class="buttons">
|
36
|
+
<%%= link_to 'Show', [:admin, <%= singular_name %>], :class => 'icon icon-details' %>
|
37
|
+
<%%= link_to 'Edit', edit_admin_<%= singular_name %>_path(<%= singular_name %>), :class => 'icon icon-edit' %>
|
38
|
+
<%%= link_to 'Destroy', [:admin, <%= singular_name %>], :confirm => 'Are you sure?', :method => :delete, :class => 'icon icon-del' %>
|
39
|
+
</td>
|
40
|
+
</tr>
|
41
|
+
<%% end %>
|
42
|
+
</tbody>
|
43
|
+
<tfoot>
|
44
|
+
<tr>
|
45
|
+
<th></th>
|
46
|
+
<th colspan="<%= attributes.size %>"><%%= submit_tag "Delete", :confirm => 'Are you sure?' %></th>
|
47
|
+
<th></th>
|
48
|
+
</tr>
|
49
|
+
</tfoot>
|
50
|
+
<%% end %>
|
51
|
+
</table>
|
52
|
+
<%% end %>
|
53
|
+
<%
|
54
|
+
# Remove unneeded stuff here
|
55
|
+
if defined?(Searchlogic) || defined?(WillPaginate)
|
56
|
+
# If you have WillPaginate installed (you should!)
|
57
|
+
%>
|
58
|
+
<%%= will_paginate(@<%= plural_name %>) %>
|
59
|
+
<% end %>
|