smart_list 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/README.md ADDED
@@ -0,0 +1,67 @@
1
+ # FRIENDS-Smart-List
2
+ SmartList Plug-In - Part of FRIENDS SmartConcepts
3
+ (c) 2011 Florian Eck, FRIENDS Financial Coaching
4
+
5
+ ## About
6
+
7
+ This is my SmartList plugin, kinda raw, not yet test-covered or anything, but works good as hell.
8
+ Its kinda similar to acts_as_list, but it does the following things (better in my opinion, thats why i wrote it;-):
9
+
10
+ ## Example:
11
+
12
+ Class UserStuff < ActiveRecord::Base
13
+
14
+ smart_list :group => :user_id, :base_class => 'UserStuff' # => shiity thing which needs to be fixed - always must pass the model name !
15
+ # default value for ordering stuff is 'order_bit', could be anything else, like 'created_at' or what ever
16
+ # u can ignore ':group' if u just want a whole table as one list
17
+
18
+ end
19
+
20
+ You have the following data in your user stuff table:
21
+
22
+ id user_id some_data order_bit
23
+ 1 1 'bli' 100
24
+ 2 2 'bla' 100
25
+ 3 3 'blubb' 100
26
+ 4 1 'blibla' 101
27
+ 5 1 'blubbblubb' 102
28
+ 6 1 'abc' 103
29
+ 7 2 'blubbbla' 101
30
+ 8 3 'def' 101
31
+
32
+
33
+ Now u can do:
34
+
35
+ stuff = UserStuff.find_by_user_id(1) # stuff is <UserStuff #1>
36
+
37
+ ### Get all items in group
38
+ stuff.group_list_items #=> returns [<UserStuff #1>, <UserStuff #4>, <UserStuff #5>, <UserStuff #6>]
39
+
40
+ ### Or u do
41
+ UserStuff.grouped_list(1) # Get all items with user_id 1
42
+
43
+ ### if u have an item of a list, you can do:
44
+
45
+ item.move_up! # Move item up in oder position
46
+ item.move_down! # Move item down in oder position
47
+
48
+ item.pre # Get previous item in list, returns self when no other item is available
49
+ item.post # Get next item in list, returns self when no other item is available
50
+
51
+ item.followers # check which items are next in list
52
+ item.group_list_items # show all items in group
53
+
54
+
55
+ ### Includes Helpers, Partials and Controllers to do:
56
+
57
+
58
+ <%= smart_list_links(item, options = {:uplink => {:text => "<", :class => nil}, :downlink => {:text => ">", :class => nil}}) %>
59
+ will render a button box for controlling the list items (movin up and down)
60
+
61
+ ## Notes
62
+ No test coverage yet, hope u like it anyway
63
+
64
+
65
+
66
+
67
+
@@ -0,0 +1,50 @@
1
+ # -*- encoding : utf-8 -*-
2
+ class SmartListController < ApplicationController
3
+
4
+ before_filter :check_smart_list
5
+
6
+ def move_up
7
+ begin
8
+ @item.move_up!
9
+ flash[:notice] = "Item moved up"
10
+ rescue
11
+ flash[:error] = "Item could not be moved"
12
+ end
13
+ redirect_to :back
14
+ end
15
+
16
+ def move_down
17
+ begin
18
+ @item.move_down!
19
+ flash[:notice] = "Item moved down"
20
+ rescue
21
+ flash[:error] = "Item could not be moved"
22
+ end
23
+ redirect_to :back
24
+ end
25
+
26
+
27
+ private
28
+
29
+ # Verify data
30
+ def check_smart_list
31
+ params[:type] = $active_smart_lists[params[:type]]
32
+ if params[:type].blank? || params[:id].blank?
33
+ flash[:error] = "You need to specify a :type and an :id"
34
+ redirect_to :back
35
+ elsif !(params[:type].constantize.is_smart_list? rescue false )
36
+ flash[:error] = "#{params[:type]} is not a smart_list item"
37
+ redirect_to :back
38
+ else
39
+ @item = params[:type].constantize.find(params[:id]) rescue nil
40
+ if @item.nil?
41
+ flash[:error] = "Item not found"
42
+ else
43
+ return true
44
+ end
45
+ end
46
+
47
+
48
+ end
49
+
50
+ end
@@ -0,0 +1,6 @@
1
+ <span class="smart-up">
2
+ <%= link_to (raw((options[:uplink][:text] rescue "&uarr;"))), {:controller => "/smart_list", :action => "move_up", :id => item.id, :type =>item.class_name_sha}, :class => ((options[:uplink][:class] rescue nil)) %>
3
+ </span>
4
+ <span class="smart-down">
5
+ <%= link_to (raw((options[:downlink][:text] rescue "&darr;"))), {:controller => "/smart_list", :action => "move_down", :id => item.id, :type => item.class_name_sha}, :class => ((options[:downlink][:class] rescue nil)) %>
6
+ </span>
data/lib/smart_list.rb CHANGED
@@ -183,7 +183,7 @@ module SmartList
183
183
  end
184
184
 
185
185
  def class_name_sha
186
- Digest::SHA1(self.class.name)
186
+ Digest::SHA1.hexdigest(self.class.name)
187
187
  end
188
188
 
189
189
  end
@@ -0,0 +1,12 @@
1
+ # -*- encoding : utf-8 -*-
2
+ module SmartListHelper
3
+
4
+ def render_list(list)
5
+
6
+ end
7
+
8
+ def smart_list_links(item, options = {:uplink => {:text => "&uarr;", :class => nil}, :downlink => {:text => "&darr;", :class => nil}})
9
+ render :partial => "/smart_links/move_links", :locals => {:item => item, :options => options}
10
+ end
11
+
12
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: smart_list
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -20,6 +20,10 @@ extra_rdoc_files: []
20
20
  files:
21
21
  - lib/smart_list.rb
22
22
  - lib/add_order_bit.rb
23
+ - lib/smart_list_helper.rb
24
+ - app/controllers/smart_list_controller.rb
25
+ - app/views/smart_links/_move_links.html.erb
26
+ - README.md
23
27
  homepage: https://github.com/florianeck/smart_list
24
28
  licenses: []
25
29
  post_install_message: