refinerycms-simple_members 0.1.4
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/app/controllers/admin/members_controller.rb +8 -0
- data/app/controllers/members_controller.rb +24 -0
- data/app/models/member.rb +8 -0
- data/app/views/admin/members/_actions.html.erb +28 -0
- data/app/views/admin/members/_form.html.erb +34 -0
- data/app/views/admin/members/_member.html.erb +15 -0
- data/app/views/admin/members/_members.html.erb +2 -0
- data/app/views/admin/members/_records.html.erb +18 -0
- data/app/views/admin/members/_sortable_list.html.erb +7 -0
- data/app/views/admin/members/edit.html.erb +1 -0
- data/app/views/admin/members/index.html.erb +10 -0
- data/app/views/admin/members/new.html.erb +1 -0
- data/app/views/members/index.html.erb +11 -0
- data/app/views/members/show.html.erb +45 -0
- data/config/locales/en.yml +25 -0
- data/config/locales/fr.yml +25 -0
- data/config/locales/lolcat.yml +25 -0
- data/config/locales/nb.yml +21 -0
- data/config/locales/nl.yml +21 -0
- data/config/routes.rb +11 -0
- data/lib/generators/refinerycms_simple_members_generator.rb +6 -0
- data/lib/members_from_csv.rb +36 -0
- data/lib/refinerycms-simple_members.rb +30 -0
- data/lib/tasks/members.rake +15 -0
- metadata +68 -0
@@ -0,0 +1,24 @@
|
|
1
|
+
class MembersController < ApplicationController
|
2
|
+
|
3
|
+
before_filter :find_all_members
|
4
|
+
before_filter :find_page
|
5
|
+
|
6
|
+
def index
|
7
|
+
redirect_to root_url
|
8
|
+
end
|
9
|
+
|
10
|
+
def show
|
11
|
+
redirect_to root_url
|
12
|
+
end
|
13
|
+
|
14
|
+
protected
|
15
|
+
|
16
|
+
def find_all_members
|
17
|
+
@members = Member.order('position ASC')
|
18
|
+
end
|
19
|
+
|
20
|
+
def find_page
|
21
|
+
@page = Page.where(:link_url => "/members").first
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
<ul>
|
2
|
+
<% if Admin::MembersController.searchable? %>
|
3
|
+
<li>
|
4
|
+
<%= render :partial => "/shared/admin/search",
|
5
|
+
:locals => {
|
6
|
+
:url => admin_members_path
|
7
|
+
} %>
|
8
|
+
</li>
|
9
|
+
<% end %>
|
10
|
+
<li>
|
11
|
+
<%= link_to t('.create_new'), new_admin_member_path,
|
12
|
+
:class => "add_icon" %>
|
13
|
+
</li>
|
14
|
+
<% if !searching? and Admin::MembersController.sortable? and Member.count > 1 %>
|
15
|
+
<li>
|
16
|
+
<%= link_to t('.reorder', :what => "Members"),
|
17
|
+
admin_members_path,
|
18
|
+
:id => "reorder_action",
|
19
|
+
:class => "reorder_icon" %>
|
20
|
+
|
21
|
+
<%= link_to t('.reorder_done', :what => "Members"),
|
22
|
+
admin_members_path,
|
23
|
+
:id => "reorder_action_done",
|
24
|
+
:style => "display: none;",
|
25
|
+
:class => "reorder_icon" %>
|
26
|
+
</li>
|
27
|
+
<% end %>
|
28
|
+
</ul>
|
@@ -0,0 +1,34 @@
|
|
1
|
+
<%= form_for [:admin, @member] do |f| -%>
|
2
|
+
<%= render :partial => "/shared/admin/error_messages", :locals => {
|
3
|
+
:object => @member,
|
4
|
+
:include_object_name => true
|
5
|
+
} %>
|
6
|
+
|
7
|
+
<div class='field'>
|
8
|
+
<%= f.label :first_name -%>
|
9
|
+
<%= f.text_field :first_name -%>
|
10
|
+
</div>
|
11
|
+
|
12
|
+
<div class='field'>
|
13
|
+
<%= f.label :last_name -%>
|
14
|
+
<%= f.text_field :last_name -%>
|
15
|
+
</div>
|
16
|
+
|
17
|
+
<div class='field'>
|
18
|
+
<%= f.label :email -%>
|
19
|
+
<%= f.text_field :email -%>
|
20
|
+
</div>
|
21
|
+
|
22
|
+
<div class='field'>
|
23
|
+
<%= f.label :unique_identifier -%>
|
24
|
+
<%= f.text_field :unique_identifier -%>
|
25
|
+
</div>
|
26
|
+
|
27
|
+
<%= render :partial => "/shared/admin/form_actions",
|
28
|
+
:locals => {
|
29
|
+
:f => f,
|
30
|
+
:continue_editing => false,
|
31
|
+
:delete_title => t('delete', :scope => 'admin.members.member'),
|
32
|
+
:delete_confirmation => t('message', :scope => 'shared.admin.delete', :title => @member.first_name)
|
33
|
+
} %>
|
34
|
+
<% end -%>
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<li class='clearfix record <%= cycle("on", "on-hover") %>' id="<%= dom_id(member) -%>">
|
2
|
+
<span class='title'>
|
3
|
+
<%= member.last_name %>, <%= member.first_name %>
|
4
|
+
<span class="preview"> </span>
|
5
|
+
</span>
|
6
|
+
<span class='actions'>
|
7
|
+
<%= link_to refinery_icon_tag("application_edit.png"), edit_admin_member_path(member),
|
8
|
+
:title => t('.edit') %>
|
9
|
+
<%= link_to refinery_icon_tag("delete.png"), admin_member_path(member),
|
10
|
+
:class => "cancel confirm-delete",
|
11
|
+
:title => t('.delete'),
|
12
|
+
:confirm => t('message', :scope => 'shared.admin.delete', :title => member.first_name),
|
13
|
+
:method => :delete %>
|
14
|
+
</span>
|
15
|
+
</li>
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<% if searching? %>
|
2
|
+
<h2><%= t('results_for', :scope => 'shared.admin.search', :query => params[:search]) %></h2>
|
3
|
+
<% end %>
|
4
|
+
<% if @members.any? %>
|
5
|
+
<div class='pagination_container'>
|
6
|
+
<%= render :partial => 'members' %>
|
7
|
+
</div>
|
8
|
+
<% else %>
|
9
|
+
<p>
|
10
|
+
<% unless searching? %>
|
11
|
+
<strong>
|
12
|
+
<%= t('.no_items_yet') %>
|
13
|
+
</strong>
|
14
|
+
<% else %>
|
15
|
+
<%= t('no_results', :scope => 'shared.admin.search') %>
|
16
|
+
<% end %>
|
17
|
+
</p>
|
18
|
+
<% end %>
|
@@ -0,0 +1,7 @@
|
|
1
|
+
<ul id='sortable_list'>
|
2
|
+
<%= render :partial => 'member', :collection => @members %>
|
3
|
+
</ul>
|
4
|
+
<%= render :partial => "/shared/admin/sortable_list",
|
5
|
+
:locals => {
|
6
|
+
:continue_reordering => (local_assigns.keys.include?(:continue_reordering)) ? continue_reordering : true
|
7
|
+
} %>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= render :partial => "form" %>
|
@@ -0,0 +1,10 @@
|
|
1
|
+
<section id='records'>
|
2
|
+
<%= render :partial => 'records' %>
|
3
|
+
</section>
|
4
|
+
<aside id='actions'>
|
5
|
+
<%= render :partial => 'actions' %>
|
6
|
+
</aside>
|
7
|
+
<%= render :partial => '/shared/admin/make_sortable',
|
8
|
+
:locals => {
|
9
|
+
:tree => false
|
10
|
+
} if !searching? and Admin::MembersController.sortable? and Member.count > 1 %>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= render :partial => "form" %>
|
@@ -0,0 +1,45 @@
|
|
1
|
+
<% content_for :body_content_title do %>
|
2
|
+
<%= @member.first_name %>
|
3
|
+
<% end %>
|
4
|
+
|
5
|
+
<% content_for :body_content_left do %>
|
6
|
+
<section>
|
7
|
+
<h1>First Name</h1>
|
8
|
+
<p>
|
9
|
+
<%=raw @member.first_name %>
|
10
|
+
</p>
|
11
|
+
</section>
|
12
|
+
<section>
|
13
|
+
<h1>Last Name</h1>
|
14
|
+
<p>
|
15
|
+
<%=raw @member.last_name %>
|
16
|
+
</p>
|
17
|
+
</section>
|
18
|
+
<section>
|
19
|
+
<h1>Email</h1>
|
20
|
+
<p>
|
21
|
+
<%=raw @member.email %>
|
22
|
+
</p>
|
23
|
+
</section>
|
24
|
+
<section>
|
25
|
+
<h1>Unique Identifier</h1>
|
26
|
+
<p>
|
27
|
+
<%=raw @member.unique_identifier %>
|
28
|
+
</p>
|
29
|
+
</section>
|
30
|
+
<% end %>
|
31
|
+
|
32
|
+
<% content_for :body_content_right do %>
|
33
|
+
<aside>
|
34
|
+
<h2><%= t('.other') %></h2>
|
35
|
+
<ul id="members">
|
36
|
+
<% @members.each do |member| %>
|
37
|
+
<li>
|
38
|
+
<%= link_to member.first_name, member_path(member) %>
|
39
|
+
</li>
|
40
|
+
<% end %>
|
41
|
+
</ul>
|
42
|
+
</aside>
|
43
|
+
<% end %>
|
44
|
+
|
45
|
+
<%= render :partial => "/shared/content_page" %>
|
@@ -0,0 +1,25 @@
|
|
1
|
+
en:
|
2
|
+
shared:
|
3
|
+
admin:
|
4
|
+
image_picker:
|
5
|
+
image: image
|
6
|
+
plugins:
|
7
|
+
members:
|
8
|
+
title: Members
|
9
|
+
admin:
|
10
|
+
members:
|
11
|
+
actions:
|
12
|
+
create_new: Add New Member
|
13
|
+
reorder: Reorder Members
|
14
|
+
reorder_done: Done Reordering Members
|
15
|
+
records:
|
16
|
+
title: Members
|
17
|
+
sorry_no_results: Sorry! There are no results found.
|
18
|
+
no_items_yet: There are no Members yet. Click "Add New Member" to add your first member.
|
19
|
+
member:
|
20
|
+
view_live_html: View this member live <br/><em>(opens in a new window)</em>
|
21
|
+
edit: Edit this member
|
22
|
+
delete: Remove this member forever
|
23
|
+
members:
|
24
|
+
show:
|
25
|
+
other: Other Members
|
@@ -0,0 +1,25 @@
|
|
1
|
+
fr:
|
2
|
+
shared:
|
3
|
+
admin:
|
4
|
+
image_picker:
|
5
|
+
image: image
|
6
|
+
plugins:
|
7
|
+
members:
|
8
|
+
title: Members
|
9
|
+
admin:
|
10
|
+
members:
|
11
|
+
actions:
|
12
|
+
create_new: Créer un(e) nouve(au/l/lle) Member
|
13
|
+
reorder: Réordonner les Members
|
14
|
+
reorder_done: Fin de réordonnancement des Members
|
15
|
+
records:
|
16
|
+
title: Members
|
17
|
+
sorry_no_results: "Désolé ! Aucun résultat."
|
18
|
+
no_items_yet: 'Il n''y a actuellement aucun(e) Member. Cliquer sur "Créer un(e) nouve(au/l/lle) Member" pour créer votre premi(er/ère) member.'
|
19
|
+
member:
|
20
|
+
view_live_html: Voir ce(t/tte) member <br/><em>(Ouvre une nouvelle fenêtre)</em>
|
21
|
+
edit: Modifier ce(t/tte) member
|
22
|
+
delete: Supprimer définitivement ce(t/tte) member
|
23
|
+
members:
|
24
|
+
show:
|
25
|
+
other: Autres Members
|
@@ -0,0 +1,25 @@
|
|
1
|
+
lolcat:
|
2
|
+
shared:
|
3
|
+
admin:
|
4
|
+
image_picker:
|
5
|
+
image: IMAGE
|
6
|
+
plugins:
|
7
|
+
members:
|
8
|
+
title: Members
|
9
|
+
admin:
|
10
|
+
members:
|
11
|
+
actions:
|
12
|
+
create_new: CREATE NEW Member
|
13
|
+
reorder: REORDR Members
|
14
|
+
reorder_done: DUN REORDERIN Members
|
15
|
+
records:
|
16
|
+
title: Members
|
17
|
+
sorry_no_results: SRY! THAR R NO RESULTS FINDZ.
|
18
|
+
no_items_yet: THAR R NO Members YET. CLICK "CREATE NEW Member" 2 ADD UR FURST member.
|
19
|
+
member:
|
20
|
+
view_live_html: VIEW DIS member LIV <BR/><EM>(OPENS IN NEW WINDOW)</EM>
|
21
|
+
edit: EDIT DIS member
|
22
|
+
delete: REMOOV DIS member FOREVR
|
23
|
+
members:
|
24
|
+
show:
|
25
|
+
other: OTHR Members
|
@@ -0,0 +1,21 @@
|
|
1
|
+
nb:
|
2
|
+
plugins:
|
3
|
+
members:
|
4
|
+
title: Members
|
5
|
+
admin:
|
6
|
+
members:
|
7
|
+
actions:
|
8
|
+
create_new: Lag en ny Member
|
9
|
+
reorder: Endre rekkefølgen på Members
|
10
|
+
reorder_done: Ferdig å endre rekkefølgen Members
|
11
|
+
records:
|
12
|
+
title: Members
|
13
|
+
sorry_no_results: Beklager! Vi fant ikke noen resultater.
|
14
|
+
no_items_yet: Det er ingen Members enda. Klikk på "Lag en ny Member" for å legge til din første member.
|
15
|
+
member:
|
16
|
+
view_live_html: Vis hvordan denne member ser ut offentlig <br/><em>(åpner i et nytt vindu)</em>
|
17
|
+
edit: Rediger denne member
|
18
|
+
delete: Fjern denne member permanent
|
19
|
+
members:
|
20
|
+
show:
|
21
|
+
other: Andre Members
|
@@ -0,0 +1,21 @@
|
|
1
|
+
nl:
|
2
|
+
plugins:
|
3
|
+
members:
|
4
|
+
title: Members
|
5
|
+
admin:
|
6
|
+
members:
|
7
|
+
actions:
|
8
|
+
create_new: Maak een nieuwe Member
|
9
|
+
reorder: Wijzig de volgorde van de Members
|
10
|
+
reorder_done: Klaar met het wijzingen van de volgorde van de Members
|
11
|
+
records:
|
12
|
+
title: Members
|
13
|
+
sorry_no_results: Helaas! Er zijn geen resultaten gevonden.
|
14
|
+
no_items_yet: Er zijn nog geen Members. Druk op 'Maak een nieuwe Member' om de eerste aan te maken.
|
15
|
+
member:
|
16
|
+
view_live_html: Bekijk deze member op de website <br/><em>(opent een nieuw venster)</em>
|
17
|
+
edit: Bewerk deze member
|
18
|
+
delete: Verwijder deze member voor eeuwig
|
19
|
+
members:
|
20
|
+
show:
|
21
|
+
other: Andere Members
|
data/config/routes.rb
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
::Refinery::Application.routes.draw do
|
2
|
+
resources :members, :only => [:index, :show]
|
3
|
+
|
4
|
+
scope(:path => 'refinery', :as => 'admin', :module => 'admin') do
|
5
|
+
resources :members, :except => :show do
|
6
|
+
collection do
|
7
|
+
post :update_positions
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module MembersFromCSV
|
2
|
+
extend self
|
3
|
+
|
4
|
+
def populate(file)
|
5
|
+
require 'csv'
|
6
|
+
CSV.new(file).drop(1).each do |last_name, first_name, unique_identifier|
|
7
|
+
add_member_from_csv first_name, last_name, unique_identifier
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
def add_member_from_csv(first_name, last_name, unique_identifier)
|
14
|
+
if unique_identifier.nil?
|
15
|
+
return if db_already_has_someone_named? first_name, last_name
|
16
|
+
unique_identifier = mock_unique_identifier
|
17
|
+
warn_that_we_mocked_unique_identifier_for first_name, last_name, unique_identifier
|
18
|
+
end
|
19
|
+
Member.create :first_name => first_name, :last_name => last_name, :unique_identifier => unique_identifier
|
20
|
+
end
|
21
|
+
|
22
|
+
def warn_that_we_mocked_unique_identifier_for(first_name, last_name, unique_identifier)
|
23
|
+
$stderr.puts "#{first_name}, #{last_name} has been assigned the identifier #{unique_identifier} as theirs is missing from the CSV file.\n"
|
24
|
+
end
|
25
|
+
|
26
|
+
def db_already_has_someone_named?(first_name, last_name)
|
27
|
+
Member.where(:first_name => first_name, :last_name => last_name).first
|
28
|
+
end
|
29
|
+
|
30
|
+
def mock_unique_identifier
|
31
|
+
(1..Float::INFINITY).find do |potential_identifier|
|
32
|
+
!Member.find_by_unique_identifier(potential_identifier)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'refinerycms-base'
|
2
|
+
|
3
|
+
module Refinery
|
4
|
+
module SimpleMembers
|
5
|
+
|
6
|
+
class << self
|
7
|
+
attr_accessor :root
|
8
|
+
def root
|
9
|
+
@root ||= Pathname.new(File.expand_path('../../', __FILE__))
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
class Engine < Rails::Engine
|
14
|
+
initializer "static assets" do |app|
|
15
|
+
app.middleware.insert_after ::ActionDispatch::Static, ::ActionDispatch::Static, "#{root}/public"
|
16
|
+
end
|
17
|
+
|
18
|
+
config.after_initialize do
|
19
|
+
Refinery::Plugin.register do |plugin|
|
20
|
+
plugin.name = "members"
|
21
|
+
plugin.pathname = root
|
22
|
+
plugin.activity = {
|
23
|
+
:class => Member,
|
24
|
+
:title => 'first_name'
|
25
|
+
}
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
namespace :refinery do
|
2
|
+
namespace :simple_members do
|
3
|
+
|
4
|
+
desc 'Populate the database from a CSV file where each line is a member of the format "last_name,first_name,unique_id"'
|
5
|
+
task :populate_from_csv => :environment do
|
6
|
+
require 'member'
|
7
|
+
require 'members_from_csv'
|
8
|
+
csv_name = ENV['csv']
|
9
|
+
unless csv_name && File.exists?(csv_name)
|
10
|
+
raise "Invoke like `$ rake refinery:simple_members:populate_from_csv csv=BlueMaxRoster.csv`\nNOTE: should be relative to dir of Rakefile"
|
11
|
+
end
|
12
|
+
File.open csv_name, &MembersFromCSV.method(:populate)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
metadata
ADDED
@@ -0,0 +1,68 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: refinerycms-simple_members
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.4
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Josh Cheek
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2011-09-19 00:00:00.000000000 Z
|
13
|
+
dependencies: []
|
14
|
+
description: Ruby on Rails Members engine for Refinery CMS
|
15
|
+
email:
|
16
|
+
executables: []
|
17
|
+
extensions: []
|
18
|
+
extra_rdoc_files: []
|
19
|
+
files:
|
20
|
+
- lib/generators/refinerycms_simple_members_generator.rb
|
21
|
+
- lib/members_from_csv.rb
|
22
|
+
- lib/refinerycms-simple_members.rb
|
23
|
+
- lib/tasks/members.rake
|
24
|
+
- config/locales/en.yml
|
25
|
+
- config/locales/fr.yml
|
26
|
+
- config/locales/lolcat.yml
|
27
|
+
- config/locales/nb.yml
|
28
|
+
- config/locales/nl.yml
|
29
|
+
- config/routes.rb
|
30
|
+
- app/controllers/admin/members_controller.rb
|
31
|
+
- app/controllers/members_controller.rb
|
32
|
+
- app/models/member.rb
|
33
|
+
- app/views/admin/members/_actions.html.erb
|
34
|
+
- app/views/admin/members/_form.html.erb
|
35
|
+
- app/views/admin/members/_member.html.erb
|
36
|
+
- app/views/admin/members/_members.html.erb
|
37
|
+
- app/views/admin/members/_records.html.erb
|
38
|
+
- app/views/admin/members/_sortable_list.html.erb
|
39
|
+
- app/views/admin/members/edit.html.erb
|
40
|
+
- app/views/admin/members/index.html.erb
|
41
|
+
- app/views/admin/members/new.html.erb
|
42
|
+
- app/views/members/index.html.erb
|
43
|
+
- app/views/members/show.html.erb
|
44
|
+
homepage:
|
45
|
+
licenses: []
|
46
|
+
post_install_message:
|
47
|
+
rdoc_options: []
|
48
|
+
require_paths:
|
49
|
+
- lib
|
50
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
51
|
+
none: false
|
52
|
+
requirements:
|
53
|
+
- - ! '>='
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '0'
|
56
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
requirements: []
|
63
|
+
rubyforge_project:
|
64
|
+
rubygems_version: 1.8.10
|
65
|
+
signing_key:
|
66
|
+
specification_version: 3
|
67
|
+
summary: Simple list of members that have first/last name, email, and a unique identifier.
|
68
|
+
test_files: []
|