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.
@@ -0,0 +1,8 @@
1
+ module Admin
2
+ class MembersController < Admin::BaseController
3
+
4
+ crudify :member,
5
+ :title_attribute => 'name', :xhr_paging => true
6
+
7
+ end
8
+ end
@@ -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,8 @@
1
+ class Member < ActiveRecord::Base
2
+
3
+ acts_as_indexed :fields => [:name, :description]
4
+
5
+ validates :name, :presence => true, :uniqueness => true
6
+
7
+ belongs_to :photo, :class_name => 'Image'
8
+ 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">&nbsp;</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,2 @@
1
+ <%= will_paginate @members %>
2
+ <%= render :partial => "sortable_list" %>
@@ -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,11 @@
1
+ <% content_for :body_content_left do %>
2
+ <ul id="members">
3
+ <% @members.each do |member| %>
4
+ <li>
5
+ <%= link_to member.name, member_url(member) %>
6
+ </li>
7
+ <% end %>
8
+ </ul>
9
+ <% end %>
10
+
11
+ <%= render :partial => "/shared/content_page" %>
@@ -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
@@ -0,0 +1,13 @@
1
+ namespace :refinery do
2
+
3
+ namespace :members do
4
+
5
+ # call this task my running: rake refinery:members:my_task
6
+ # desc "Description of my task below"
7
+ # task :my_task => :environment do
8
+ # # add your logic here
9
+ # end
10
+
11
+ end
12
+
13
+ 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
+