refinerycms-members 0.2
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 +30 -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 +18 -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 +39 -0
- data/config/locales/en.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_members_generator.rb +55 -0
- data/lib/generators/templates/db/migrate/migration_number_create_members.rb +26 -0
- data/lib/generators/templates/db/seeds/members.rb +17 -0
- data/lib/refinerycms-members.rb +21 -0
- data/lib/tasks/members.rake +13 -0
- metadata +89 -0
@@ -0,0 +1,30 @@
|
|
1
|
+
class MembersController < ApplicationController
|
2
|
+
|
3
|
+
before_filter :find_all_members
|
4
|
+
before_filter :find_page
|
5
|
+
|
6
|
+
def index
|
7
|
+
# you can use meta fields from your model instead (e.g. browser_title)
|
8
|
+
# by swapping @page for @member in the line below:
|
9
|
+
present(@page)
|
10
|
+
end
|
11
|
+
|
12
|
+
def show
|
13
|
+
@member = Member.find(params[:id])
|
14
|
+
|
15
|
+
# you can use meta fields from your model instead (e.g. browser_title)
|
16
|
+
# by swapping @page for @member in the line below:
|
17
|
+
present(@page)
|
18
|
+
end
|
19
|
+
|
20
|
+
protected
|
21
|
+
|
22
|
+
def find_all_members
|
23
|
+
@members = Member.order('position ASC')
|
24
|
+
end
|
25
|
+
|
26
|
+
def find_page
|
27
|
+
@page = Page.where(:link_url => "/members").first
|
28
|
+
end
|
29
|
+
|
30
|
+
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_url
|
7
|
+
} %>
|
8
|
+
</li>
|
9
|
+
<% end %>
|
10
|
+
<li>
|
11
|
+
<%= link_to t('.create_new'), new_admin_member_url,
|
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_url,
|
18
|
+
:id => "reorder_action",
|
19
|
+
:class => "reorder_icon" %>
|
20
|
+
|
21
|
+
<%= link_to t('.reorder_done', :what => "Members"),
|
22
|
+
admin_members_url,
|
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 :name -%>
|
9
|
+
<%= f.text_field :name, :class => 'larger widest' -%>
|
10
|
+
</div>
|
11
|
+
|
12
|
+
<div class='field'>
|
13
|
+
<%= f.label :photo -%>
|
14
|
+
<%= render :partial => "/shared/admin/image_picker", :locals => {
|
15
|
+
:f => f,
|
16
|
+
:field => :photo_id,
|
17
|
+
:image => @member.photo,
|
18
|
+
:toggle_image_display => false
|
19
|
+
} %>
|
20
|
+
</div>
|
21
|
+
|
22
|
+
<div class='field'>
|
23
|
+
<%= f.label :description -%>
|
24
|
+
<%= f.text_field :description -%>
|
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.name)
|
33
|
+
} %>
|
34
|
+
<% end -%>
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<li class='clearfix record <%= cycle("on", "on-hover") %>' id="<%= dom_id(member) -%>">
|
2
|
+
<span class='title'>
|
3
|
+
<%= member.name %>
|
4
|
+
<span class="preview"> </span>
|
5
|
+
</span>
|
6
|
+
<span class='actions'>
|
7
|
+
<%= link_to refinery_icon_tag("application_go.png"), member_url(member),
|
8
|
+
:title => t('.view_live_html'),
|
9
|
+
:target => "_blank" %>
|
10
|
+
<%= link_to refinery_icon_tag("application_edit.png"), edit_admin_member_path(member),
|
11
|
+
:title => t('.edit') %>
|
12
|
+
<%= link_to refinery_icon_tag("delete.png"), admin_member_path(member),
|
13
|
+
:class => "cancel confirm-delete",
|
14
|
+
:title => t('.delete'),
|
15
|
+
:confirm => t('message', :scope => 'shared.admin.delete', :title => member.name),
|
16
|
+
:method => :delete %>
|
17
|
+
</span>
|
18
|
+
</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,39 @@
|
|
1
|
+
<% content_for :body_content_title do %>
|
2
|
+
<%= @member.name %>
|
3
|
+
<% end %>
|
4
|
+
|
5
|
+
<% content_for :body_content_left do %>
|
6
|
+
<section>
|
7
|
+
<h1>Name</h1>
|
8
|
+
<p>
|
9
|
+
<%=raw @member.name %>
|
10
|
+
</p>
|
11
|
+
</section>
|
12
|
+
<section>
|
13
|
+
<h1>Photo</h1>
|
14
|
+
<p>
|
15
|
+
<%= image_fu @member.photo, nil %>
|
16
|
+
</p>
|
17
|
+
</section>
|
18
|
+
<section>
|
19
|
+
<h1>Description</h1>
|
20
|
+
<p>
|
21
|
+
<%=raw @member.description %>
|
22
|
+
</p>
|
23
|
+
</section>
|
24
|
+
<% end %>
|
25
|
+
|
26
|
+
<% content_for :body_content_right do %>
|
27
|
+
<aside>
|
28
|
+
<h2><%= t('.other') %></h2>
|
29
|
+
<ul id="members">
|
30
|
+
<% @members.each do |member| %>
|
31
|
+
<li>
|
32
|
+
<%= link_to member.name, member_url(member) %>
|
33
|
+
</li>
|
34
|
+
<% end %>
|
35
|
+
</ul>
|
36
|
+
</aside>
|
37
|
+
<% end %>
|
38
|
+
|
39
|
+
<%= 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
|
+
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,55 @@
|
|
1
|
+
require 'rails/generators/migration'
|
2
|
+
|
3
|
+
class RefinerycmsMembersGenerator < Rails::Generators::NamedBase
|
4
|
+
|
5
|
+
include Rails::Generators::Migration
|
6
|
+
|
7
|
+
source_root File.expand_path('../templates', __FILE__)
|
8
|
+
argument :name, :type => :string, :default => 'members'
|
9
|
+
|
10
|
+
def generate
|
11
|
+
Dir.glob(File.expand_path('../templates/**/**', __FILE__)).each do |path|
|
12
|
+
template path, plugin_path_for(path) unless File.directory?(path)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
protected
|
17
|
+
|
18
|
+
def plugin_path_for(path)
|
19
|
+
path = path.gsub(File.dirname(__FILE__) + "/templates/", "vendor/engines/#{plural_name}/")
|
20
|
+
path = path.gsub("plural_name", plural_name)
|
21
|
+
path = path.gsub("singular_name", singular_name)
|
22
|
+
path = path.gsub(".migration", '')
|
23
|
+
|
24
|
+
# hack can be removed after issue is fixed
|
25
|
+
next_migration_number = ActiveRecord::Generators::Base.next_migration_number(File.dirname(__FILE__))
|
26
|
+
path = path.gsub("migration_number", next_migration_number)
|
27
|
+
|
28
|
+
# replace our local db path with the app one instead.
|
29
|
+
path = path.gsub("/db/", "/../../../db/")
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
require 'rails/generators/named_base'
|
35
|
+
require 'rails/generators/migration'
|
36
|
+
require 'rails/generators/active_model'
|
37
|
+
require 'active_record'
|
38
|
+
|
39
|
+
module ActiveRecord
|
40
|
+
module Generators
|
41
|
+
class Base < Rails::Generators::NamedBase #:nodoc:
|
42
|
+
include Rails::Generators::Migration
|
43
|
+
|
44
|
+
# Implement the required interface for Rails::Generators::Migration.
|
45
|
+
def self.next_migration_number(dirname) #:nodoc:
|
46
|
+
next_migration_number = current_migration_number(dirname) + 1
|
47
|
+
if ActiveRecord::Base.timestamped_migrations
|
48
|
+
[Time.now.utc.strftime("%Y%m%d%H%M%S"), "%.14d" % next_migration_number].max
|
49
|
+
else
|
50
|
+
"%.3d" % next_migration_number
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
class CreateMembers < ActiveRecord::Migration
|
2
|
+
|
3
|
+
def self.up
|
4
|
+
create_table :members do |t|
|
5
|
+
t.string :name
|
6
|
+
t.integer :photo_id
|
7
|
+
t.string :description
|
8
|
+
t.integer :position
|
9
|
+
|
10
|
+
t.timestamps
|
11
|
+
end
|
12
|
+
|
13
|
+
add_index :members, :id
|
14
|
+
|
15
|
+
load(Rails.root.join('db', 'seeds', 'members.rb'))
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.down
|
19
|
+
UserPlugin.destroy_all({:name => "members"})
|
20
|
+
|
21
|
+
Page.delete_all({:link_url => "/members"})
|
22
|
+
|
23
|
+
drop_table :members
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
User.all.each do |user|
|
2
|
+
if user.plugins.where(:name => 'members').blank?
|
3
|
+
user.plugins.create(:name => 'members',
|
4
|
+
:position => (user.plugins.maximum(:position) || -1) +1)
|
5
|
+
end
|
6
|
+
end
|
7
|
+
|
8
|
+
page = Page.create(
|
9
|
+
:title => 'Members',
|
10
|
+
:link_url => '/members',
|
11
|
+
:deletable => false,
|
12
|
+
:position => ((Page.maximum(:position, :conditions => {:parent_id => nil}) || -1)+1),
|
13
|
+
:menu_match => '^/members(\/|\/.+?|)$'
|
14
|
+
)
|
15
|
+
Page.default_parts.each do |default_page_part|
|
16
|
+
page.parts.create(:title => default_page_part, :body => nil)
|
17
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'refinerycms-base'
|
2
|
+
|
3
|
+
module Refinery
|
4
|
+
module Members
|
5
|
+
class Engine < Rails::Engine
|
6
|
+
initializer "static assets" do |app|
|
7
|
+
app.middleware.insert_after ::ActionDispatch::Static, ::ActionDispatch::Static, "#{root}/public"
|
8
|
+
end
|
9
|
+
|
10
|
+
config.after_initialize do
|
11
|
+
Refinery::Plugin.register do |plugin|
|
12
|
+
plugin.name = "members"
|
13
|
+
plugin.activity = {
|
14
|
+
:class => Member,
|
15
|
+
:title => 'name'
|
16
|
+
}
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
metadata
ADDED
@@ -0,0 +1,89 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: refinerycms-members
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 15
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 2
|
9
|
+
version: "0.2"
|
10
|
+
platform: ruby
|
11
|
+
authors:
|
12
|
+
- Surat Pyari
|
13
|
+
autorequire:
|
14
|
+
bindir: bin
|
15
|
+
cert_chain: []
|
16
|
+
|
17
|
+
date: 2011-04-19 00:00:00 +05:30
|
18
|
+
default_executable:
|
19
|
+
dependencies: []
|
20
|
+
|
21
|
+
description: Ruby on Rails Members engine for Refinery CMS. This engine allows you to add members to your application.
|
22
|
+
email: suratpyari.db21@gmail.com
|
23
|
+
executables: []
|
24
|
+
|
25
|
+
extensions: []
|
26
|
+
|
27
|
+
extra_rdoc_files: []
|
28
|
+
|
29
|
+
files:
|
30
|
+
- lib/generators/refinerycms_members_generator.rb
|
31
|
+
- lib/generators/templates/db/migrate/migration_number_create_members.rb
|
32
|
+
- lib/generators/templates/db/seeds/members.rb
|
33
|
+
- lib/refinerycms-members.rb
|
34
|
+
- lib/tasks/members.rake
|
35
|
+
- config/locales/en.yml
|
36
|
+
- config/locales/lolcat.yml
|
37
|
+
- config/locales/nb.yml
|
38
|
+
- config/locales/nl.yml
|
39
|
+
- config/routes.rb
|
40
|
+
- app/controllers/admin/members_controller.rb
|
41
|
+
- app/controllers/members_controller.rb
|
42
|
+
- app/models/member.rb
|
43
|
+
- app/views/admin/members/_actions.html.erb
|
44
|
+
- app/views/admin/members/_form.html.erb
|
45
|
+
- app/views/admin/members/_member.html.erb
|
46
|
+
- app/views/admin/members/_members.html.erb
|
47
|
+
- app/views/admin/members/_records.html.erb
|
48
|
+
- app/views/admin/members/_sortable_list.html.erb
|
49
|
+
- app/views/admin/members/edit.html.erb
|
50
|
+
- app/views/admin/members/index.html.erb
|
51
|
+
- app/views/admin/members/new.html.erb
|
52
|
+
- app/views/members/index.html.erb
|
53
|
+
- app/views/members/show.html.erb
|
54
|
+
has_rdoc: true
|
55
|
+
homepage:
|
56
|
+
licenses: []
|
57
|
+
|
58
|
+
post_install_message:
|
59
|
+
rdoc_options: []
|
60
|
+
|
61
|
+
require_paths:
|
62
|
+
- lib
|
63
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
64
|
+
none: false
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
hash: 3
|
69
|
+
segments:
|
70
|
+
- 0
|
71
|
+
version: "0"
|
72
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ">="
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
hash: 3
|
78
|
+
segments:
|
79
|
+
- 0
|
80
|
+
version: "0"
|
81
|
+
requirements: []
|
82
|
+
|
83
|
+
rubyforge_project:
|
84
|
+
rubygems_version: 1.6.2
|
85
|
+
signing_key:
|
86
|
+
specification_version: 3
|
87
|
+
summary: Members engine for Refinery CMS
|
88
|
+
test_files: []
|
89
|
+
|