refinerycms-pc_banners 2.0.0
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/refinery/banners/admin/banners_controller.rb +12 -0
- data/app/controllers/refinery/banners/banners_controller.rb +34 -0
- data/app/models/refinery/banners/banner.rb +27 -0
- data/app/views/refinery/banners/admin/banners/_actions.html.erb +25 -0
- data/app/views/refinery/banners/admin/banners/_banner.html.erb +20 -0
- data/app/views/refinery/banners/admin/banners/_banners.html.erb +2 -0
- data/app/views/refinery/banners/admin/banners/_form.html.erb +74 -0
- data/app/views/refinery/banners/admin/banners/_records.html.erb +18 -0
- data/app/views/refinery/banners/admin/banners/_sortable_list.html.erb +5 -0
- data/app/views/refinery/banners/admin/banners/edit.html.erb +1 -0
- data/app/views/refinery/banners/admin/banners/index.html.erb +7 -0
- data/app/views/refinery/banners/admin/banners/new.html.erb +1 -0
- data/app/views/refinery/banners/shared/_banner_image.html.erb +1 -0
- data/app/views/refinery/banners/shared/_banners.html.erb +9 -0
- data/config/locales/en.yml +35 -0
- data/config/locales/es.yml +36 -0
- data/config/locales/fr.yml +35 -0
- data/config/locales/nb.yml +35 -0
- data/config/locales/nl.yml +35 -0
- data/config/routes.rb +19 -0
- data/db/migrate/1_create_banners_banners.rb +34 -0
- data/db/migrate/2_create_banners_banners_pages.rb +15 -0
- data/db/seeds.rb +23 -0
- data/lib/generators/refinery/banners_generator.rb +18 -0
- data/lib/page_extensions.rb +17 -0
- data/lib/refinery/banners/engine.rb +32 -0
- data/lib/refinery/banners.rb +21 -0
- data/lib/refinerycms-pc_banners.rb +1 -0
- data/lib/tasks/refinery/banners.rake +13 -0
- data/readme.md +51 -0
- metadata +106 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
module Refinery
|
|
2
|
+
module Banners
|
|
3
|
+
class BannersController < ::ApplicationController
|
|
4
|
+
|
|
5
|
+
before_filter :find_all_banners
|
|
6
|
+
before_filter :find_page
|
|
7
|
+
|
|
8
|
+
def index
|
|
9
|
+
# you can use meta fields from your model instead (e.g. browser_title)
|
|
10
|
+
# by swapping @page for @banner in the line below:
|
|
11
|
+
present(@page)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def show
|
|
15
|
+
@banner = Banner.find(params[:id])
|
|
16
|
+
|
|
17
|
+
# you can use meta fields from your model instead (e.g. browser_title)
|
|
18
|
+
# by swapping @page for @banner in the line below:
|
|
19
|
+
present(@page)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
protected
|
|
23
|
+
|
|
24
|
+
def find_all_banners
|
|
25
|
+
@banners = Banner.order('position ASC')
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def find_page
|
|
29
|
+
@page = ::Refinery::Page.where(:link_url => "/banners").first
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
module Refinery
|
|
2
|
+
module Banners
|
|
3
|
+
class Banner < Refinery::Core::BaseModel
|
|
4
|
+
self.table_name = 'refinery_banners'
|
|
5
|
+
|
|
6
|
+
acts_as_indexed :fields => [:name, :url, :title, :description]
|
|
7
|
+
|
|
8
|
+
validates :name, :presence => true
|
|
9
|
+
validates_presence_of :start_date
|
|
10
|
+
validates_length_of :title, :in => 0..255, :allow_nil => true
|
|
11
|
+
validates_length_of :description, :in => 0..255, :allow_nil => true
|
|
12
|
+
|
|
13
|
+
belongs_to :image, :class_name => '::Refinery::Image'
|
|
14
|
+
has_and_belongs_to_many :pages, :class_name => '::Refinery::Page', :join_table => 'refinery_banners_pages'
|
|
15
|
+
|
|
16
|
+
scope :not_expired, lambda {
|
|
17
|
+
banners = Arel::Table.new(::Refinery::Banners::Banner.table_name)
|
|
18
|
+
where(banners[:expiry_date].eq(nil).or(banners[:expiry_date].gt(Time.now)))
|
|
19
|
+
}
|
|
20
|
+
scope :active, where(:is_active => true)
|
|
21
|
+
scope :published, lambda {
|
|
22
|
+
not_expired.active.where("start_date <= ?", Time.now).order(:position)
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
<ul>
|
|
2
|
+
<% if ::Refinery::Banners::Admin::BannersController.searchable? %>
|
|
3
|
+
<li>
|
|
4
|
+
<%= render '/refinery/admin/search', :url => refinery.banners_admin_banners_path %>
|
|
5
|
+
</li>
|
|
6
|
+
<% end %>
|
|
7
|
+
<li>
|
|
8
|
+
<%= link_to t('.create_new'), refinery.new_banners_admin_banner_path,
|
|
9
|
+
:class => "add_icon" %>
|
|
10
|
+
</li>
|
|
11
|
+
<% if !searching? && ::Refinery::Banners::Admin::BannersController.sortable? && ::Refinery::Banners::Banner.any? %>
|
|
12
|
+
<li>
|
|
13
|
+
<%= link_to t('.reorder', :what => "Banners"),
|
|
14
|
+
refinery.banners_admin_banners_path,
|
|
15
|
+
:id => "reorder_action",
|
|
16
|
+
:class => "reorder_icon" %>
|
|
17
|
+
|
|
18
|
+
<%= link_to t('.reorder_done', :what => "Banners"),
|
|
19
|
+
refinery.banners_admin_banners_path,
|
|
20
|
+
:id => "reorder_action_done",
|
|
21
|
+
:style => "display: none;",
|
|
22
|
+
:class => "reorder_icon" %>
|
|
23
|
+
</li>
|
|
24
|
+
<% end %>
|
|
25
|
+
</ul>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<li class='clearfix record <%= cycle("on", "on-hover") %>' id="<%= dom_id(banner) -%>">
|
|
2
|
+
<span class='title'>
|
|
3
|
+
<%= banner.name %>
|
|
4
|
+
|
|
5
|
+
</span>
|
|
6
|
+
<span class='actions'>
|
|
7
|
+
|
|
8
|
+
<%= link_to refinery_icon_tag("application_go.png"), refinery.banners_banner_path(banner),
|
|
9
|
+
:title => t('.view_live_html'),
|
|
10
|
+
:target => "_blank" %>
|
|
11
|
+
|
|
12
|
+
<%= link_to refinery_icon_tag("application_edit.png"), refinery.edit_banners_admin_banner_path(banner),
|
|
13
|
+
:title => t('.edit') %>
|
|
14
|
+
<%= link_to refinery_icon_tag("delete.png"), refinery.banners_admin_banner_path(banner),
|
|
15
|
+
:class => "cancel confirm-delete",
|
|
16
|
+
:title => t('.delete'),
|
|
17
|
+
:confirm => t('message', :scope => 'refinery.admin.delete', :title => banner.name),
|
|
18
|
+
:method => :delete %>
|
|
19
|
+
</span>
|
|
20
|
+
</li>
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
<%= form_for [refinery, :banners_admin, @banner] do |f| -%>
|
|
2
|
+
<%= render '/refinery/admin/error_messages',
|
|
3
|
+
:object => @banner,
|
|
4
|
+
:include_object_name => true %>
|
|
5
|
+
|
|
6
|
+
<%= hidden_field_tag 'banner[page_ids][]' %>
|
|
7
|
+
|
|
8
|
+
<div class='field'>
|
|
9
|
+
<%= f.label :name -%>
|
|
10
|
+
<%= f.text_field :name, :class => 'larger widest' -%>
|
|
11
|
+
|
|
12
|
+
</div>
|
|
13
|
+
|
|
14
|
+
<div class='field'>
|
|
15
|
+
<%= f.label :title -%>
|
|
16
|
+
<%= f.text_field :title -%>
|
|
17
|
+
|
|
18
|
+
</div>
|
|
19
|
+
|
|
20
|
+
<div class='field'>
|
|
21
|
+
<%= f.label :description -%>
|
|
22
|
+
<%= f.text_field :description -%>
|
|
23
|
+
|
|
24
|
+
</div>
|
|
25
|
+
|
|
26
|
+
<div class='field'>
|
|
27
|
+
<%= f.label :image -%>
|
|
28
|
+
<%= render '/refinery/admin/image_picker',
|
|
29
|
+
:f => f,
|
|
30
|
+
:field => :image_id,
|
|
31
|
+
:image => @banner.image,
|
|
32
|
+
:toggle_image_display => false %>
|
|
33
|
+
|
|
34
|
+
</div>
|
|
35
|
+
|
|
36
|
+
<div class='field'>
|
|
37
|
+
<%= f.label :url -%>
|
|
38
|
+
<%= f.text_field :url -%>
|
|
39
|
+
|
|
40
|
+
</div>
|
|
41
|
+
|
|
42
|
+
<div class='field'>
|
|
43
|
+
<%= f.label :is_active -%>
|
|
44
|
+
<%= f.check_box :is_active, :checked => @banner[:is_active] -%>
|
|
45
|
+
|
|
46
|
+
</div>
|
|
47
|
+
|
|
48
|
+
<div class='field'>
|
|
49
|
+
<%= f.label :start_date -%>
|
|
50
|
+
<%= f.date_select :start_date -%>
|
|
51
|
+
|
|
52
|
+
</div>
|
|
53
|
+
|
|
54
|
+
<div class='field'>
|
|
55
|
+
<%= f.label :expiry_date -%>
|
|
56
|
+
<%= f.date_select :expiry_date -%>
|
|
57
|
+
|
|
58
|
+
</div>
|
|
59
|
+
|
|
60
|
+
<div class="field">
|
|
61
|
+
<%= f.label :pages %>
|
|
62
|
+
<% Refinery::Page.all.each do |page| %>
|
|
63
|
+
<div>
|
|
64
|
+
<%= check_box_tag "banner[page_ids][]", page.id, @banner.pages.include?(page) %>
|
|
65
|
+
<%= page.title %>
|
|
66
|
+
</div>
|
|
67
|
+
<% end %>
|
|
68
|
+
</div>
|
|
69
|
+
|
|
70
|
+
<%= render '/refinery/admin/form_actions', :f => f,
|
|
71
|
+
:continue_editing => false,
|
|
72
|
+
:delete_title => t('delete', :scope => 'refinery.banners.admin.banners.banner'),
|
|
73
|
+
:delete_confirmation => t('message', :scope => 'refinery.admin.delete', :title => @banner.name) %>
|
|
74
|
+
<% end -%>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<% if searching? %>
|
|
2
|
+
<h2><%= t('results_for', :scope => 'refinery.admin.search', :query => params[:search]) %></h2>
|
|
3
|
+
<% end %>
|
|
4
|
+
<div class='pagination_container'>
|
|
5
|
+
<% if @banners.any? %>
|
|
6
|
+
<%= render 'banners' %>
|
|
7
|
+
<% else %>
|
|
8
|
+
<p>
|
|
9
|
+
<% unless searching? %>
|
|
10
|
+
<strong>
|
|
11
|
+
<%= t('.no_items_yet') %>
|
|
12
|
+
</strong>
|
|
13
|
+
<% else %>
|
|
14
|
+
<%= t('no_results', :scope => 'refinery.admin.search') %>
|
|
15
|
+
<% end %>
|
|
16
|
+
</p>
|
|
17
|
+
<% end %>
|
|
18
|
+
</div>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<%= render 'form' %>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<section id='records'>
|
|
2
|
+
<%= render 'records' %>
|
|
3
|
+
</section>
|
|
4
|
+
<aside id='actions'>
|
|
5
|
+
<%= render 'actions' %>
|
|
6
|
+
</aside>
|
|
7
|
+
<%= render '/refinery/admin/make_sortable', :tree => false if !searching? and ::Refinery::Banners::Admin::BannersController.sortable? and ::Refinery::Banners::Banner.count > 1 %>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<%= render 'form' %>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<%= image_fu(banner_image.image, '960x310#c') %>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<div id="slider">
|
|
2
|
+
<% if @page.present? and @page.banners.published.present? %>
|
|
3
|
+
<%= render :partial => 'refinery/banners/shared/banner_image', :collection => @page.banners.published %>
|
|
4
|
+
<% elsif @banners.present? then %>
|
|
5
|
+
<%= render :partial => 'refinery/banners/shared/banner_image', :collection => @banners %>
|
|
6
|
+
<% else %>
|
|
7
|
+
<!--todo: insert static images here-->
|
|
8
|
+
<% end %>
|
|
9
|
+
</div>
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
en:
|
|
2
|
+
refinery:
|
|
3
|
+
plugins:
|
|
4
|
+
banners:
|
|
5
|
+
title: Banners
|
|
6
|
+
banners:
|
|
7
|
+
admin:
|
|
8
|
+
banners:
|
|
9
|
+
actions:
|
|
10
|
+
create_new: Add New Banner
|
|
11
|
+
reorder: Reorder Banners
|
|
12
|
+
reorder_done: Done Reordering Banners
|
|
13
|
+
records:
|
|
14
|
+
title: Banners
|
|
15
|
+
sorry_no_results: Sorry! There are no results found.
|
|
16
|
+
no_items_yet: There are no Banners yet. Click "Add New Banner" to add your first banner.
|
|
17
|
+
banner:
|
|
18
|
+
view_live_html: View this banner live <br/><em>(opens in a new window)</em>
|
|
19
|
+
edit: Edit this banner
|
|
20
|
+
delete: Remove this banner forever
|
|
21
|
+
banners:
|
|
22
|
+
show:
|
|
23
|
+
other: Other Banners
|
|
24
|
+
activerecord:
|
|
25
|
+
attributes:
|
|
26
|
+
'refinery/banners/banner':
|
|
27
|
+
name: Name
|
|
28
|
+
title: Title
|
|
29
|
+
description: Description
|
|
30
|
+
image: Image
|
|
31
|
+
url: Url
|
|
32
|
+
is_active: Is Active
|
|
33
|
+
start_date: Start Date
|
|
34
|
+
expiry_date: Expiry Date
|
|
35
|
+
position: Position
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
es:
|
|
2
|
+
refinery:
|
|
3
|
+
plugins:
|
|
4
|
+
banners:
|
|
5
|
+
title: Banners
|
|
6
|
+
# article: masculino/femenino
|
|
7
|
+
banners:
|
|
8
|
+
admin:
|
|
9
|
+
banners:
|
|
10
|
+
actions:
|
|
11
|
+
create_new: Crear nuevo banner
|
|
12
|
+
reorder: Reordenar banners
|
|
13
|
+
reorder_done: Reordenación de banners completada
|
|
14
|
+
records:
|
|
15
|
+
title: Banners
|
|
16
|
+
sorry_no_results: Lo siento, no hay resultados
|
|
17
|
+
no_items_yet: No hay banners todavía. Pulsa en "Crear nuevo Banner" para crear tu primer banner.
|
|
18
|
+
banner:
|
|
19
|
+
view_live_html: Ver este banner como abierto al público <br/><em>(abre en ventana nueva)</em>
|
|
20
|
+
edit: Editar este banner
|
|
21
|
+
delete: Borrar este banner para siempre
|
|
22
|
+
banners:
|
|
23
|
+
show:
|
|
24
|
+
other: Otros banners
|
|
25
|
+
activerecord:
|
|
26
|
+
attributes:
|
|
27
|
+
'refinery/banners/banner':
|
|
28
|
+
name: Name
|
|
29
|
+
title: Title
|
|
30
|
+
description: Description
|
|
31
|
+
image: Image
|
|
32
|
+
url: Url
|
|
33
|
+
is_active: Is Active
|
|
34
|
+
start_date: Start Date
|
|
35
|
+
expiry_date: Expiry Date
|
|
36
|
+
position: Position
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
fr:
|
|
2
|
+
refinery:
|
|
3
|
+
plugins:
|
|
4
|
+
banners:
|
|
5
|
+
title: Banners
|
|
6
|
+
banners:
|
|
7
|
+
admin:
|
|
8
|
+
banners:
|
|
9
|
+
actions:
|
|
10
|
+
create_new: Créer un(e) nouve(au/l/lle) Banner
|
|
11
|
+
reorder: Réordonner les Banners
|
|
12
|
+
reorder_done: Fin de réordonnancement des Banners
|
|
13
|
+
records:
|
|
14
|
+
title: Banners
|
|
15
|
+
sorry_no_results: "Désolé ! Aucun résultat."
|
|
16
|
+
no_items_yet: 'Il n''y a actuellement aucun(e) Banner. Cliquer sur "Créer un(e) nouve(au/l/lle) Banner" pour créer votre premi(er/ère) banner.'
|
|
17
|
+
banner:
|
|
18
|
+
view_live_html: Voir ce(t/tte) banner <br/><em>(Ouvre une nouvelle fenêtre)</em>
|
|
19
|
+
edit: Modifier ce(t/tte) banner
|
|
20
|
+
delete: Supprimer définitivement ce(t/tte) banner
|
|
21
|
+
banners:
|
|
22
|
+
show:
|
|
23
|
+
other: Autres Banners
|
|
24
|
+
activerecord:
|
|
25
|
+
attributes:
|
|
26
|
+
'refinery/banners/banner':
|
|
27
|
+
name: Name
|
|
28
|
+
title: Title
|
|
29
|
+
description: Description
|
|
30
|
+
image: Image
|
|
31
|
+
url: Url
|
|
32
|
+
is_active: Is Active
|
|
33
|
+
start_date: Start Date
|
|
34
|
+
expiry_date: Expiry Date
|
|
35
|
+
position: Position
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
nb:
|
|
2
|
+
refinery:
|
|
3
|
+
plugins:
|
|
4
|
+
banners:
|
|
5
|
+
title: Banners
|
|
6
|
+
banners:
|
|
7
|
+
admin:
|
|
8
|
+
banners:
|
|
9
|
+
actions:
|
|
10
|
+
create_new: Lag en ny Banner
|
|
11
|
+
reorder: Endre rekkefølgen på Banners
|
|
12
|
+
reorder_done: Ferdig å endre rekkefølgen Banners
|
|
13
|
+
records:
|
|
14
|
+
title: Banners
|
|
15
|
+
sorry_no_results: Beklager! Vi fant ikke noen resultater.
|
|
16
|
+
no_items_yet: Det er ingen Banners enda. Klikk på "Lag en ny Banner" for å legge til din første banner.
|
|
17
|
+
banner:
|
|
18
|
+
view_live_html: Vis hvordan denne banner ser ut offentlig <br/><em>(åpner i et nytt vindu)</em>
|
|
19
|
+
edit: Rediger denne banner
|
|
20
|
+
delete: Fjern denne banner permanent
|
|
21
|
+
banners:
|
|
22
|
+
show:
|
|
23
|
+
other: Andre Banners
|
|
24
|
+
activerecord:
|
|
25
|
+
attributes:
|
|
26
|
+
'refinery/banners/banner':
|
|
27
|
+
name: Name
|
|
28
|
+
title: Title
|
|
29
|
+
description: Description
|
|
30
|
+
image: Image
|
|
31
|
+
url: Url
|
|
32
|
+
is_active: Is Active
|
|
33
|
+
start_date: Start Date
|
|
34
|
+
expiry_date: Expiry Date
|
|
35
|
+
position: Position
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
nl:
|
|
2
|
+
refinery:
|
|
3
|
+
plugins:
|
|
4
|
+
banners:
|
|
5
|
+
title: Banners
|
|
6
|
+
banners:
|
|
7
|
+
admin:
|
|
8
|
+
banners:
|
|
9
|
+
actions:
|
|
10
|
+
create_new: Maak een nieuwe Banner
|
|
11
|
+
reorder: Wijzig de volgorde van de Banners
|
|
12
|
+
reorder_done: Klaar met het wijzingen van de volgorde van de Banners
|
|
13
|
+
records:
|
|
14
|
+
title: Banners
|
|
15
|
+
sorry_no_results: Helaas! Er zijn geen resultaten gevonden.
|
|
16
|
+
no_items_yet: Er zijn nog geen Banners. Druk op 'Maak een nieuwe Banner' om de eerste aan te maken.
|
|
17
|
+
banner:
|
|
18
|
+
view_live_html: Bekijk deze banner op de website <br/><em>(opent een nieuw venster)</em>
|
|
19
|
+
edit: Bewerk deze banner
|
|
20
|
+
delete: Verwijder deze banner voor eeuwig
|
|
21
|
+
banners:
|
|
22
|
+
show:
|
|
23
|
+
other: Andere Banners
|
|
24
|
+
activerecord:
|
|
25
|
+
attributes:
|
|
26
|
+
'refinery/banners/banner':
|
|
27
|
+
name: Name
|
|
28
|
+
title: Title
|
|
29
|
+
description: Description
|
|
30
|
+
image: Image
|
|
31
|
+
url: Url
|
|
32
|
+
is_active: Is Active
|
|
33
|
+
start_date: Start Date
|
|
34
|
+
expiry_date: Expiry Date
|
|
35
|
+
position: Position
|
data/config/routes.rb
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
Refinery::Core::Engine.routes.append do
|
|
2
|
+
|
|
3
|
+
# Frontend routes
|
|
4
|
+
namespace :banners do
|
|
5
|
+
resources :banners, :path => '', :only => [:index, :show]
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
# Admin routes
|
|
9
|
+
namespace :banners, :path => '' do
|
|
10
|
+
namespace :admin, :path => 'refinery' do
|
|
11
|
+
resources :banners, :except => :show do
|
|
12
|
+
collection do
|
|
13
|
+
post :update_positions
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
class CreateBannersBanners < ActiveRecord::Migration
|
|
2
|
+
|
|
3
|
+
def up
|
|
4
|
+
create_table :refinery_banners do |t|
|
|
5
|
+
t.string :name
|
|
6
|
+
t.string :title
|
|
7
|
+
t.string :description
|
|
8
|
+
t.integer :image_id
|
|
9
|
+
t.string :url
|
|
10
|
+
t.boolean :is_active
|
|
11
|
+
t.date :start_date
|
|
12
|
+
t.date :expiry_date
|
|
13
|
+
t.integer :position
|
|
14
|
+
t.integer :position
|
|
15
|
+
|
|
16
|
+
t.timestamps
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def down
|
|
22
|
+
if defined?(::Refinery::UserPlugin)
|
|
23
|
+
::Refinery::UserPlugin.destroy_all({:name => "refinerycms-banners"})
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
if defined?(::Refinery::Page)
|
|
27
|
+
::Refinery::Page.delete_all({:link_url => "/banners/banners"})
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
drop_table :refinery_banners
|
|
31
|
+
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
class CreateBannersBannersPages < ActiveRecord::Migration
|
|
2
|
+
def self.up
|
|
3
|
+
create_table :refinery_banners_pages, :id => false do |t|
|
|
4
|
+
t.integer :page_id
|
|
5
|
+
t.integer :banner_id
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
add_index :refinery_banners_pages, :page_id
|
|
9
|
+
add_index :refinery_banners_pages, :banner_id
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def self.down
|
|
13
|
+
drop_table :refinery_banners_pages
|
|
14
|
+
end
|
|
15
|
+
end
|
data/db/seeds.rb
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
if defined?(::Refinery::User)
|
|
2
|
+
::Refinery::User.all.each do |user|
|
|
3
|
+
if user.plugins.where(:name => 'refinerycms-banners').blank?
|
|
4
|
+
user.plugins.create(:name => 'refinerycms-banners',
|
|
5
|
+
:position => (user.plugins.maximum(:position) || -1) +1)
|
|
6
|
+
end
|
|
7
|
+
end
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
#url = "/banners"
|
|
12
|
+
#if defined?(::Refinery::Page) && ::Refinery::Page.where(:link_url => url).empty?
|
|
13
|
+
# page = ::Refinery::Page.create(
|
|
14
|
+
# :title => 'Banners',
|
|
15
|
+
# :link_url => url,
|
|
16
|
+
# :deletable => false,
|
|
17
|
+
# :menu_match => "^#{url}(\/|\/.+?|)$"
|
|
18
|
+
# )
|
|
19
|
+
# Refinery::Pages.default_parts.each do |default_page_part|
|
|
20
|
+
# page.parts.create(:title => default_page_part, :body => nil)
|
|
21
|
+
# end
|
|
22
|
+
#end
|
|
23
|
+
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
module Refinery
|
|
2
|
+
class BannersGenerator < Rails::Generators::Base
|
|
3
|
+
|
|
4
|
+
def rake_db
|
|
5
|
+
rake("refinery_banners:install:migrations")
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def append_load_seed_data
|
|
9
|
+
create_file 'db/seeds.rb' unless File.exists?(File.join(destination_root, 'db', 'seeds.rb'))
|
|
10
|
+
append_file 'db/seeds.rb', :verbose => true do
|
|
11
|
+
<<-EOH
|
|
12
|
+
|
|
13
|
+
Refinery::Banners::Engine.load_seed
|
|
14
|
+
EOH
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
module Refinery
|
|
2
|
+
module Banners
|
|
3
|
+
module Extensions
|
|
4
|
+
module Page
|
|
5
|
+
module ClassMethods
|
|
6
|
+
def add_banners_relationship
|
|
7
|
+
has_and_belongs_to_many :banners, :class_name => '::Refinery::Banners::Banner', :join_table => 'refinery_banners_pages'
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def self.included(base)
|
|
12
|
+
base.extend(ClassMethods).add_banners_relationship
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
module Refinery
|
|
2
|
+
module Banners
|
|
3
|
+
class Engine < Rails::Engine
|
|
4
|
+
include Refinery::Engine
|
|
5
|
+
isolate_namespace Refinery::Banners
|
|
6
|
+
|
|
7
|
+
engine_name :refinery_banners
|
|
8
|
+
|
|
9
|
+
initializer "register refinerycms_banners plugin" do
|
|
10
|
+
Refinery::Plugin.register do |plugin|
|
|
11
|
+
plugin.name = "banners"
|
|
12
|
+
plugin.url = proc { Refinery::Core::Engine.routes.url_helpers.banners_admin_banners_path }
|
|
13
|
+
plugin.pathname = root
|
|
14
|
+
plugin.activity = {
|
|
15
|
+
:class_name => :'refinery/banners/banner',
|
|
16
|
+
:title => 'name'
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
config.to_prepare do
|
|
23
|
+
require 'page_extensions'
|
|
24
|
+
Refinery::Page.send :include, Refinery::Banners::Extensions::Page
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
config.after_initialize do
|
|
28
|
+
Refinery.register_extension(Refinery::Banners)
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
require 'refinerycms-core'
|
|
2
|
+
|
|
3
|
+
module Refinery
|
|
4
|
+
autoload :BannersGenerator, 'generators/refinery/banners_generator'
|
|
5
|
+
|
|
6
|
+
module Banners
|
|
7
|
+
require 'refinery/banners/engine'
|
|
8
|
+
|
|
9
|
+
class << self
|
|
10
|
+
attr_writer :root
|
|
11
|
+
|
|
12
|
+
def root
|
|
13
|
+
@root ||= Pathname.new(File.expand_path('../../../', __FILE__))
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def factory_paths
|
|
17
|
+
@factory_paths ||= [ root.join('spec', 'factories').to_s ]
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require 'refinery/banners'
|
data/readme.md
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Refinery CMS Banners
|
|
2
|
+
|
|
3
|
+
Simple banners engine for [Refinery CMS](http://refinerycms.com). Creates a many-to-many relationship between Pages and Banners, allowing an Image to be assigned to a Banner as well.
|
|
4
|
+
|
|
5
|
+
This version of `refinerycms-pc_banners` supports Rails 3.
|
|
6
|
+
|
|
7
|
+
## Requirements
|
|
8
|
+
|
|
9
|
+
Refinery CMS version 2.0.0 and above.
|
|
10
|
+
|
|
11
|
+
## Install
|
|
12
|
+
|
|
13
|
+
Open up your ``Gemfile`` and add the following:
|
|
14
|
+
|
|
15
|
+
gem 'refinerycms-pc_banners', '2.0.0', :git => 'git://github.com/julesce/refinerycms-pc_banners.git'
|
|
16
|
+
|
|
17
|
+
Now, run:
|
|
18
|
+
|
|
19
|
+
bundle install
|
|
20
|
+
|
|
21
|
+
Next, run:
|
|
22
|
+
|
|
23
|
+
rails generate refinery:banners
|
|
24
|
+
|
|
25
|
+
Migrate your database:
|
|
26
|
+
|
|
27
|
+
rake db:migrate
|
|
28
|
+
|
|
29
|
+
And let's hook up the seed data:
|
|
30
|
+
|
|
31
|
+
rake db:seed
|
|
32
|
+
|
|
33
|
+
## Usage
|
|
34
|
+
|
|
35
|
+
It is up to you to make use of the banners assigned to your pages. To get the published banners for your current page:
|
|
36
|
+
|
|
37
|
+
@page.banners.published
|
|
38
|
+
|
|
39
|
+
Let's say you are using the [Nivo Slider](http://nivo.dev7studios.com/) for your banners in your views, you could do the following:
|
|
40
|
+
|
|
41
|
+
<div id="nivo_slider">
|
|
42
|
+
<% if @page.present? and @page.banners.published.present? %>
|
|
43
|
+
<% @page.banners.published.each do |banner| %>
|
|
44
|
+
<%= image_fu(banner.image, '960x310#c') %>
|
|
45
|
+
<% end %>
|
|
46
|
+
<% end %>
|
|
47
|
+
</div>
|
|
48
|
+
|
|
49
|
+
Or you can use the following to accomplish something very similar to the above:
|
|
50
|
+
|
|
51
|
+
<%= render :partial => 'refinery/banners/shared/banners' %>
|
metadata
ADDED
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: refinerycms-pc_banners
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 2.0.0
|
|
5
|
+
prerelease:
|
|
6
|
+
platform: ruby
|
|
7
|
+
authors:
|
|
8
|
+
- James Thompson
|
|
9
|
+
autorequire:
|
|
10
|
+
bindir: bin
|
|
11
|
+
cert_chain: []
|
|
12
|
+
date: 2012-03-11 00:00:00.000000000Z
|
|
13
|
+
dependencies:
|
|
14
|
+
- !ruby/object:Gem::Dependency
|
|
15
|
+
name: refinerycms-core
|
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
|
17
|
+
none: false
|
|
18
|
+
requirements:
|
|
19
|
+
- - ~>
|
|
20
|
+
- !ruby/object:Gem::Version
|
|
21
|
+
version: 2.0.1
|
|
22
|
+
type: :runtime
|
|
23
|
+
prerelease: false
|
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
25
|
+
none: false
|
|
26
|
+
requirements:
|
|
27
|
+
- - ~>
|
|
28
|
+
- !ruby/object:Gem::Version
|
|
29
|
+
version: 2.0.1
|
|
30
|
+
- !ruby/object:Gem::Dependency
|
|
31
|
+
name: refinerycms-testing
|
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
|
33
|
+
none: false
|
|
34
|
+
requirements:
|
|
35
|
+
- - ~>
|
|
36
|
+
- !ruby/object:Gem::Version
|
|
37
|
+
version: 2.0.1
|
|
38
|
+
type: :development
|
|
39
|
+
prerelease: false
|
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
41
|
+
none: false
|
|
42
|
+
requirements:
|
|
43
|
+
- - ~>
|
|
44
|
+
- !ruby/object:Gem::Version
|
|
45
|
+
version: 2.0.1
|
|
46
|
+
description: Ruby on Rails Banners extension for Refinery CMS
|
|
47
|
+
email: james.b.thompson@gmail.com
|
|
48
|
+
executables: []
|
|
49
|
+
extensions: []
|
|
50
|
+
extra_rdoc_files: []
|
|
51
|
+
files:
|
|
52
|
+
- app/controllers/refinery/banners/admin/banners_controller.rb
|
|
53
|
+
- app/controllers/refinery/banners/banners_controller.rb
|
|
54
|
+
- app/models/refinery/banners/banner.rb
|
|
55
|
+
- app/views/refinery/banners/admin/banners/edit.html.erb
|
|
56
|
+
- app/views/refinery/banners/admin/banners/index.html.erb
|
|
57
|
+
- app/views/refinery/banners/admin/banners/new.html.erb
|
|
58
|
+
- app/views/refinery/banners/admin/banners/_actions.html.erb
|
|
59
|
+
- app/views/refinery/banners/admin/banners/_banner.html.erb
|
|
60
|
+
- app/views/refinery/banners/admin/banners/_banners.html.erb
|
|
61
|
+
- app/views/refinery/banners/admin/banners/_form.html.erb
|
|
62
|
+
- app/views/refinery/banners/admin/banners/_records.html.erb
|
|
63
|
+
- app/views/refinery/banners/admin/banners/_sortable_list.html.erb
|
|
64
|
+
- app/views/refinery/banners/shared/_banners.html.erb
|
|
65
|
+
- app/views/refinery/banners/shared/_banner_image.html.erb
|
|
66
|
+
- config/locales/en.yml
|
|
67
|
+
- config/locales/es.yml
|
|
68
|
+
- config/locales/fr.yml
|
|
69
|
+
- config/locales/nb.yml
|
|
70
|
+
- config/locales/nl.yml
|
|
71
|
+
- config/routes.rb
|
|
72
|
+
- db/migrate/1_create_banners_banners.rb
|
|
73
|
+
- db/migrate/2_create_banners_banners_pages.rb
|
|
74
|
+
- db/seeds.rb
|
|
75
|
+
- lib/generators/refinery/banners_generator.rb
|
|
76
|
+
- lib/page_extensions.rb
|
|
77
|
+
- lib/refinery/banners/engine.rb
|
|
78
|
+
- lib/refinery/banners.rb
|
|
79
|
+
- lib/refinerycms-pc_banners.rb
|
|
80
|
+
- lib/tasks/refinery/banners.rake
|
|
81
|
+
- readme.md
|
|
82
|
+
homepage: https://github.com/julesce/refinerycms-pods
|
|
83
|
+
licenses: []
|
|
84
|
+
post_install_message:
|
|
85
|
+
rdoc_options: []
|
|
86
|
+
require_paths:
|
|
87
|
+
- lib
|
|
88
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
89
|
+
none: false
|
|
90
|
+
requirements:
|
|
91
|
+
- - ! '>='
|
|
92
|
+
- !ruby/object:Gem::Version
|
|
93
|
+
version: '0'
|
|
94
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
95
|
+
none: false
|
|
96
|
+
requirements:
|
|
97
|
+
- - ! '>='
|
|
98
|
+
- !ruby/object:Gem::Version
|
|
99
|
+
version: '0'
|
|
100
|
+
requirements: []
|
|
101
|
+
rubyforge_project:
|
|
102
|
+
rubygems_version: 1.8.18
|
|
103
|
+
signing_key:
|
|
104
|
+
specification_version: 3
|
|
105
|
+
summary: Banners extension for Refinery CMS
|
|
106
|
+
test_files: []
|