sferik-merb-admin 0.1.7 → 0.1.8

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 CHANGED
@@ -8,15 +8,13 @@ It currently offers the features listed [here](http://sferik.tadalist.com/lists/
8
8
 
9
9
  At the command prompt, type:
10
10
 
11
- git clone git://github.com/sferik/merb-admin.git
12
- cd merb-admin
13
- sudo rake install
11
+ sudo gem install sferik-merb-admin -s http://gems.github.com
14
12
 
15
13
  ## Install it
16
14
 
17
15
  In your app, add the following dependency to `config/dependencies.rb`:
18
16
 
19
- dependency "merb-admin", "0.1.7"
17
+ dependency "sferik-merb-admin", "0.1.8", :require_as => "merb-admin"
20
18
 
21
19
  Add the following route to `config/router.rb`:
22
20
 
data/Rakefile CHANGED
@@ -12,7 +12,7 @@ AUTHOR = "Erik Michaels-Ober"
12
12
  EMAIL = "sferik@gmail.com"
13
13
  HOMEPAGE = "http://twitter.com/sferik"
14
14
  SUMMARY = "MerbAdmin is a merb slice that provides an easy-to-use interface for managing your data."
15
- GEM_VERSION = "0.1.7"
15
+ GEM_VERSION = "0.1.8"
16
16
 
17
17
  spec = Gem::Specification.new do |s|
18
18
  s.rubyforge_project = "merb"
@@ -9,13 +9,29 @@ class MerbAdmin::Forms < MerbAdmin::Application
9
9
  end
10
10
 
11
11
  def list
12
+ options = {}
13
+ filters = params[:filter] || {}
14
+ filters.each_pair do |key, value|
15
+ if @model.properties[key].primitive.to_s == "TrueClass"
16
+ options.merge!(key.to_sym => (value == "true" ? true : false))
17
+ elsif @model.properties[key].primitive.to_s == "Integer" && @model.properties[key].type.respond_to?(:flag_map)
18
+ options.merge!(key.to_sym => value.to_sym)
19
+ end
20
+ end
12
21
  if params[:all]
13
- @instances = @model.all(:limit => 200).reverse
22
+ options = {
23
+ :limit => 200,
24
+ }.merge(options)
25
+ @instances = @model.all(options).reverse
14
26
  else
15
27
  # monkey patch pagination
16
28
  @model.class_eval("is_paginated") unless @model.respond_to?(:paginated)
17
29
  @current_page = (params[:page] || 1).to_i
18
- @page_count, @instances = @model.paginated(:page => @current_page, :per_page => 100)
30
+ options = {
31
+ :page => @current_page,
32
+ :per_page => 100,
33
+ }.merge(options)
34
+ @page_count, @instances = @model.paginated(options)
19
35
  end
20
36
  render(:layout => "list")
21
37
  end
@@ -59,8 +59,6 @@ module Merb
59
59
  ::MerbAdmin.slice_path_for(type, *segments)
60
60
  end
61
61
 
62
-
63
-
64
62
  end
65
63
  end
66
64
  end
@@ -2,6 +2,7 @@ require 'builder'
2
2
  module Merb
3
3
  module MerbAdmin
4
4
  module FormsHelper
5
+
5
6
  # Given a page count and the current page, we generate a set of pagination
6
7
  # links.
7
8
  #
@@ -107,6 +108,7 @@ module Merb
107
108
  def infinity
108
109
  1.0 / 0
109
110
  end
111
+
110
112
  end
111
113
  end
112
114
  end
@@ -1,7 +1,7 @@
1
1
  <p>Are you sure you want to delete the <%= @model_name.snake_case.gsub('_', ' ') %>? All of the following related items will be deleted:</p>
2
2
  <ul>
3
3
  <li>
4
- <a href="<%= slice_url(:admin_edit, :model_name => @model_name.snake_case, :id => @instance.id) %>"><%= @model_name %></a>
4
+ <%= link_to(@model_name, slice_url(:admin_edit, :model_name => @model_name.snake_case, :id => @instance.id))%>
5
5
  </li>
6
6
  </ul>
7
7
  <%= form_for(@instance, :action => slice_url(:admin_destroy, :model_name => @model_name.snake_case, :id => @instance.id), :method => :delete) do %>
@@ -1,6 +1,8 @@
1
1
  <div id="content-main">
2
2
  <ul class="object-tools">
3
- <li><a href="<%= "/#{@model_name.snake_case}/#{@instance.id}" %>" target="_blank" class="viewsitelink">View on site</a></li>
3
+ <li>
4
+ <%= link_to("View on site", "/#{@model_name.snake_case}/#{@instance.id}", :target => "_blank", :class => "viewsitelink") %>
5
+ </li>
4
6
  </ul>
5
7
  <%= form_for(@instance, :action => slice_url(:admin_update, :model_name => @model_name.snake_case, :id => @instance.id)) do %>
6
8
  <div>
@@ -13,7 +15,9 @@
13
15
  </fieldset>
14
16
  <div class="submit-row" >
15
17
  <%= submit "Save", :class => "default", :name => "_save" %>
16
- <p class="deletelink-box"><a href="<%= slice_url(:admin_delete, :model_name => @model_name.snake_case, :id => @instance.id) %>" class="deletelink">Delete</a></p>
18
+ <p class="deletelink-box">
19
+ <%= link_to("Delete", slice_url(:admin_delete, :model_name => @model_name.snake_case, :id => @instance.id), :class => "deletelink") %>
20
+ </p>
17
21
  <%= submit "Save and add another", :name => "_add_another" %>
18
22
  <%= submit "Save and continue editing", :name => "_continue" %>
19
23
  </div>
@@ -1,12 +1,20 @@
1
1
  <div id="content-main">
2
2
  <div class="module">
3
3
  <table summary="Models available in the application.">
4
- <caption><a href="<%= slice_url(:admin_dashboard) %>" class="section">Models</a></caption>
4
+ <caption>
5
+ <%= link_to("Models", slice_url(:admin_dashboard), :class => "section") %>
6
+ </caption>
5
7
  <% @models.map{|m| m.to_s}.each do |model_name| %>
6
8
  <tr>
7
- <th scope="row"><a href="<%= slice_url(:admin_list, :model_name => model_name.snake_case) %>"><%=h model_name.pluralize %></a></th>
8
- <td><a href="<%= slice_url(:admin_new, :model_name => model_name.snake_case) %>" class="addlink">Add</a></td>
9
- <td><a href="<%= slice_url(:admin_list, :model_name => model_name.snake_case) %>" class="changelink">Edit</a></td>
9
+ <th scope="row">
10
+ <%= link_to(model_name.pluralize, slice_url(:admin_list, :model_name => model_name.snake_case)) %>
11
+ </th>
12
+ <td>
13
+ <%= link_to("Add", slice_url(:admin_new, :model_name => model_name.snake_case), :class => "addlink") %>
14
+ </td>
15
+ <td>
16
+ <%= link_to("Edit", slice_url(:admin_list, :model_name => model_name.snake_case), :class => "changelink") %>
17
+ </td>
10
18
  </tr>
11
19
  <% end %>
12
20
  </table>
@@ -1,10 +1,42 @@
1
1
  <div id="content-main">
2
2
  <ul class="object-tools">
3
3
  <li>
4
- <a href="<%= slice_url(:admin_new, :model_name => @model_name.snake_case) %>" class="addlink">Add <%=h @model_name.snake_case.gsub('_', ' ') %></a>
4
+ <%= link_to("Add #{@model_name.snake_case.gsub('_', ' ')}", slice_url(:admin_new, :model_name => @model_name.snake_case), :class => "addlink") %>
5
5
  </li>
6
6
  </ul>
7
7
  <div class="module filtered" id="changelist">
8
+ <div id="changelist-filter">
9
+ <h2>Filter</h2>
10
+ <% params = request.params.except(:action, :controller, :model_name) %>
11
+ <% @properties.each do |property| %>
12
+ <% if property.primitive.to_s == "TrueClass" %>
13
+ <h3>By <%= property.field.gsub('_', ' ') %></h3>
14
+ <ul>
15
+ <li<%= params[:filter].nil? || params[:filter][property.name].blank? ? ' class="selected"' : nil %>>
16
+ <a href="?<%= Merb::Parse.params_to_query_string(params.merge(:filter => (params[:filter] || {}).reject{|key, value| key.to_sym == property.name})) %>">All</a>
17
+ </li>
18
+ <li<%= params[:filter] && params[:filter][property.name] == "true" ? ' class="selected"' : nil %>>
19
+ <a href="?<%= Merb::Parse.params_to_query_string(params.merge(:filter => (params[:filter] || {}).merge({property.name => true}))) %>">Yes</a>
20
+ </li>
21
+ <li<%= params[:filter] && params[:filter][property.name] == "false" ? ' class="selected"' : nil %>>
22
+ <a href="?<%= Merb::Parse.params_to_query_string(params.merge(:filter => (params[:filter] || {}).merge({property.name => false}))) %>">No</a>
23
+ </li>
24
+ </ul>
25
+ <% elsif property.primitive.to_s == "Integer" && property.type.respond_to?(:flag_map) %>
26
+ <h3>By <%= property.field.gsub('_', ' ') %></h3>
27
+ <ul>
28
+ <li<%= params[:filter].nil? || params[:filter][property.name].blank? ? ' class="selected"' : nil %>>
29
+ <a href="?<%= Merb::Parse.params_to_query_string(params.merge(:filter => (params[:filter] || {}).reject{|key, value| key.to_sym == property.name})) %>">All</a>
30
+ </li>
31
+ <% property.type.flag_map.each do |value, name| %>
32
+ <li<%= params[:filter] && params[:filter][property.name] == name.to_s ? ' class="selected"' : nil %>>
33
+ <a href="?<%= Merb::Parse.params_to_query_string(params.merge(:filter => (params[:filter] || {}).merge({property.name => name}))) %>"><%= name.to_s.capitalize.gsub('_', ' ')%></a>
34
+ </li>
35
+ <% end %>
36
+ </ul>
37
+ <% end %>
38
+ <% end %>
39
+ </div>
8
40
  <table cellspacing="0">
9
41
  <thead>
10
42
  <tr>
@@ -55,9 +87,13 @@
55
87
  </tbody>
56
88
  </table>
57
89
  <p class="paginator">
58
- <%= paginate(@current_page, @page_count, :url => slice_url(:admin_list, :model_name => @model_name.snake_case)) if @page_count.to_i > 1 %>
90
+ <% if @page_count.to_i > 1 %>
91
+ <%= paginate(@current_page, @page_count, :url => slice_url(:admin_list, :model_name => @model_name.snake_case)) %>
92
+ <% end %>
59
93
  <%= @model.count %> <%= @model.count == 1 ? @model_name.snake_case.gsub('_', ' ') : @model_name.snake_case.gsub('_', ' ').pluralize %>
60
- <%= "<a href=\"#{slice_url(:admin_list, :model_name => @model_name.snake_case, :all => true)}\" class=\"showall\">Show all</a>" if @page_count.to_i == 2 %>
94
+ <% if @page_count.to_i == 2 %>
95
+ <%= link_to("Show all", slice_url(:admin_list, :model_name => @model_name.snake_case, :all => true), :class => "showall") %>
96
+ <% end %>
61
97
  </p>
62
98
  </div>
63
99
  </div>
@@ -21,7 +21,7 @@
21
21
  </h1>
22
22
  </div>
23
23
  <div id="user-tools">
24
- Welcome, <strong><%= %></strong>. <a href="<%= %>">Log out</a>
24
+ <!-- Welcome, <strong></strong>. <a href="">Log out</a> -->
25
25
  </div>
26
26
  </div>
27
27
  <%= partial 'layout/message' -%>
@@ -30,12 +30,12 @@
30
30
  </h1>
31
31
  </div>
32
32
  <div id="user-tools">
33
- Welcome, <strong><%= %></strong>. <a href="<%= %>">Log out</a>
33
+ <!-- Welcome, <strong></strong>. <a href="">Log out</a> -->
34
34
  </div>
35
35
  </div>
36
36
  <div class="breadcrumbs">
37
- <a href="<%= url(:admin_dashboard) %>">Home</a> &rsaquo;
38
- <a href="<%= url(:admin_list, :model_name => @model_name.snake_case) %>"><%=h @model_name.pluralize %></a> &rsaquo;
37
+ <%= link_to("Home", url(:admin_dashboard)) %> &rsaquo;
38
+ <%= link_to(@model_name.pluralize, url(:admin_list, :model_name => @model_name.snake_case)) %> &rsaquo;
39
39
  <%= page_name %>
40
40
  </div>
41
41
  <%= partial 'layout/message' -%>
@@ -25,11 +25,11 @@
25
25
  </h1>
26
26
  </div>
27
27
  <div id="user-tools">
28
- Welcome, <strong><%= %></strong>. <a href="<%= %>">Log out</a>
28
+ <!-- Welcome, <strong></strong>. <a href="">Log out</a> -->
29
29
  </div>
30
30
  </div>
31
31
  <div class="breadcrumbs">
32
- <a href="<%= url(:admin_dashboard) %>">Home</a> &rsaquo;
32
+ <%= link_to("Home", url(:admin_dashboard)) %> &rsaquo;
33
33
  <%=h @model_name.pluralize %>
34
34
  </div>
35
35
  <%= partial 'layout/message' -%>
data/lib/merb-admin.rb CHANGED
@@ -22,7 +22,7 @@ if defined?(Merb::Plugins)
22
22
 
23
23
  # Slice metadata
24
24
  self.description = "MerbAdmin is a merb slice that uses your DataMapper models to provide an easy-to-use, Django-style interface for content managers."
25
- self.version = "0.1.7"
25
+ self.version = "0.1.8"
26
26
  self.author = "Erik Michaels-Ober"
27
27
 
28
28
  # Stub classes loaded hook - runs before LoadClasses BootLoader
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sferik-merb-admin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Erik Michaels-Ober
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-08-06 00:00:00 -07:00
12
+ date: 2009-08-08 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency