refinerycms-snippets 0.2 → 0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -2,6 +2,6 @@ module Admin
2
2
  class SnippetsController < Admin::BaseController
3
3
 
4
4
  crudify :snippet, :xhr_paging => true
5
-
5
+
6
6
  end
7
7
  end
@@ -0,0 +1,31 @@
1
+ module Admin
2
+ class SnippetsPagesController < Admin::BaseController
3
+ def index
4
+
5
+ @page = Page.find(params[:page_id])
6
+ @do = 'nothing'
7
+
8
+ if params[:add].to_i > 0
9
+ @do = 'add'
10
+ sp = SnippetPage.new(:page => @page, :snippet => Snippet.find(params[:add].to_i))
11
+
12
+ if sp.save
13
+ flash[:notice] = 'Snippet was successfully added to page.'
14
+ end
15
+ else
16
+ if params[:remove].to_i > 0
17
+ @do = 'remove'
18
+ sp = SnippetPage.where(:page_id => @page.id, :snippet_id => params[:remove].to_i)
19
+ removed = sp.first.delete() unless sp.empty?
20
+
21
+ if removed
22
+ flash[:notice] = 'Snippet was successfully removed from page.'
23
+ end
24
+ end
25
+ end
26
+
27
+ render :layout => false if request.xhr?
28
+
29
+ end
30
+ end
31
+ end
@@ -1,11 +1,20 @@
1
1
  class Snippet < ActiveRecord::Base
2
-
2
+
3
3
  acts_as_indexed :fields => [:title, :body]
4
4
 
5
5
  validates :title, :presence => true, :uniqueness => true
6
6
 
7
7
  translates :body
8
8
 
9
+ # has_many :pages, :through => :snippets_pages
10
+
11
+ def self.inactive(page)
12
+ @page = page
13
+ snippets = scoped
14
+ snippets = snippets.where('id NOT IN (?)', @page.snippets) unless @page.snippets.empty?
15
+ snippets
16
+ end
17
+
9
18
  # rejects any page that has not been translated to the current locale.
10
19
  scope :translated, lambda {
11
20
  pages = Arel::Table.new(Snippet.table_name)
@@ -1,10 +1,14 @@
1
1
  class SnippetPage < ActiveRecord::Base
2
-
3
- belongs_to :snippet
4
- belongs_to :page
2
+
3
+ set_table_name 'snippets_pages'
4
+
5
+ belongs_to :snippet, :foreign_key => :snippet_id, :dependent => :destroy
6
+ belongs_to :page, :foreign_key => :page_id, :dependent => :destroy
7
+
8
+ validates_uniqueness_of(:snippet_id, :scope => :page_id)
5
9
 
6
10
  before_save do |snippet_page|
7
- snippet_page.position = (SnippetPage.maximum(:position) || -1) + 1
11
+ snippet_page.position = (SnippetPage.where('page_id = ?', snippet_page.page_id).maximum(:position) || -1) + 1
8
12
  end
9
-
13
+
10
14
  end
@@ -1,12 +1,7 @@
1
- <div class='wym_skin_refinery page_part' id='page_image_picker'>
2
- <%= render :partial => '/admin/pages/tabs/snippets_bar', :locals => {:f => f} %>
3
- <%= render :partial => '/admin/pages/tabs/snippets_field', :locals => {:f => f} %>
1
+ <div class='wym_skin_refinery page_part' id='page_snippet_picker' style="padding: 5px;">
2
+ <%= render :partial => '/admin/pages/tabs/snippets_content', :locals => {:f => f} %>
4
3
  </div>
5
4
 
6
- <%# content_for :stylesheets do %>
7
- <%#= stylesheet_link_tag 'page-image-picker' %>
8
- <%# end %>
9
-
10
- <%# content_for :javascripts do %>
11
- <%#= javascript_include_tag 'page-image-picker' %>
12
- <%# end %>
5
+ <% content_for :javascripts do %>
6
+ <%= javascript_include_tag 'page-snippet-picker' %>
7
+ <% end %>
@@ -1,9 +1,12 @@
1
1
  <div class='wym_area_top'>
2
- <span class='clearfix label_inline_with_link'>-t- todo add snippet link
3
- <%#= link_to t('.add'), insert_admin_images_url({
4
- :dialog => true, :width => 950, :height => 510,
5
- :callback => "image_added"
6
- }),
7
- :id => "add_image_link" %>
8
- </span>
2
+ <div style="padding: 5px 0;">
3
+ <%
4
+
5
+ inactive_snippets = Snippet.inactive(@page).map { |snippet| [snippet.title, snippet.id] }
6
+ inactive_snippets.unshift(['Select snippet', ''])
7
+
8
+ %>
9
+ <%= select_tag(:inactive_snippets, options_for_select(inactive_snippets)) %>
10
+ <a href="<%= admin_snippets_pages_path(:page_id => @page.id.to_s) %>" id="add-snippet" class="add_icon" style="background-repeat: no-repeat; background-position: left center;border: none; padding: 2px 12px 2px 20px">Add</a>
11
+ </div>
9
12
  </div>
@@ -0,0 +1,2 @@
1
+ <%= render :partial => '/admin/pages/tabs/snippets_bar' %>
2
+ <%= render :partial => '/admin/pages/tabs/snippets_field' %>
@@ -1,3 +1,28 @@
1
- <div class="wym_box field snippets_field" >
2
- -t- todo page snippets body
1
+ <div class="wym_box field snippets_field" id="snippets-holder">
2
+ <% if @page.snippets.any? %>
3
+ <ul style="padding: 10px; background: #fff; margin: 5px 0;">
4
+ <% @page.snippets.each do |snippet| %>
5
+ <li class='clearfix record <%= cycle("on", "on-hover") %>' id="<%= dom_id(snippet) -%>">
6
+ <span class='title'>
7
+ <%= snippet.title %>
8
+ <% if ::Refinery::I18n.frontend_locales.many? and
9
+ (locales = snippet.translations.collect{|t| t.locale}).present? %>
10
+ <span class='preview'>
11
+ <% locales.each do |locale| %>
12
+ <%= refinery_icon_tag "flags/#{locale}.png", :size => '16x11' %>
13
+ <% end %>
14
+ </span>
15
+ <% end %>
16
+ </span>
17
+ <span class='actions'>
18
+ <%= link_to refinery_icon_tag("application_edit.png"), edit_admin_snippet_path(snippet),
19
+ :title => t('.edit') %>
20
+ <%= link_to refinery_icon_tag("delete.png"), admin_snippets_pages_path(:page_id => @page.id, 'remove' => snippet.id),
21
+ :title => t('.remove'),
22
+ :class => 'remove-snippet' %>
23
+ </span>
24
+ </li>
25
+ <% end %>
26
+ </ul>
27
+ <% end %>
3
28
  </div>
@@ -3,6 +3,7 @@
3
3
  :object => @snippet,
4
4
  :include_object_name => true
5
5
  } %>
6
+
6
7
 
7
8
  <%= render :partial => "locale_picker",
8
9
  :locals => {
@@ -13,7 +14,6 @@
13
14
  <%= f.label :title -%>
14
15
  <%= f.text_field :title, :class => 'larger widest' -%>
15
16
  </div>
16
-
17
17
  <div class='field'>
18
18
  <div id='page-tabs' class='clearfix ui-tabs ui-widget ui-widget-content ui-corner-all'>
19
19
  <ul id='page_parts'>
@@ -0,0 +1,2 @@
1
+ <%= render :partial => '/admin/pages/tabs/snippets_content' %>
2
+ <%#= debug @do %>
data/config/routes.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  Refinery::Application.routes.draw do
2
- resources :snippets, :only => [:index, :show]
2
+ resources :snippets, :only => [:index, :show]
3
3
 
4
4
  scope(:path => 'refinery', :as => 'admin', :module => 'admin') do
5
5
  resources :snippets, :except => :show do
@@ -7,5 +7,8 @@ Refinery::Application.routes.draw do
7
7
  post :update_positions
8
8
  end
9
9
  end
10
+
11
+ resources :snippets_pages
10
12
  end
13
+
11
14
  end
@@ -2,14 +2,14 @@ class CreateSnippets < ActiveRecord::Migration
2
2
 
3
3
  def self.up
4
4
  create_table :snippets do |t|
5
- t.string :title
5
+ t.string :title, :limit => 36, :null => false
6
6
  t.text :body
7
- t.integer :position
8
-
7
+ t.integer :position, :null => false, :default => 0
9
8
  t.timestamps
10
9
  end
11
10
 
12
- add_index :snippets, :id
11
+ # we have primary key, thus we don't need duplicate index with them
12
+ # add_index :snippets, :id
13
13
 
14
14
  load(Rails.root.join('db', 'seeds', 'snippets.rb'))
15
15
  end
@@ -17,7 +17,7 @@ class CreateSnippets < ActiveRecord::Migration
17
17
  def self.down
18
18
  UserPlugin.destroy_all({:name => "snippets"})
19
19
 
20
- # Page.delete_all({:link_url => "/snippets"})
20
+ Page.delete_all({:link_url => "/snippets"})
21
21
 
22
22
  drop_table :snippets
23
23
  end
@@ -0,0 +1,18 @@
1
+ class CreateSnippetsPages < ActiveRecord::Migration
2
+
3
+ def self.up
4
+ create_table :snippets_pages do |t|
5
+ t.integer :snippet_id, :null => false, :references => [:snippets, :id]
6
+ t.integer :page_id, :null => false, :references => [:pages, :id]
7
+ t.integer :position, :null => false, :default => 0
8
+ end
9
+
10
+ # add_index :snippets_pages, :snippet_id
11
+ add_index :snippets_pages, :page_id
12
+ end
13
+
14
+ def self.down
15
+ drop_table :snippets_pages
16
+ end
17
+
18
+ end
data/db/seeds/snippets.rb CHANGED
@@ -5,14 +5,16 @@ User.all.each do |user|
5
5
  end
6
6
  end
7
7
 
8
- page = Page.create(
9
- :title => 'Snippets',
10
- :link_url => '/snippets',
11
- :show_in_menu => false,
12
- :deletable => false,
13
- :position => ((Page.maximum(:position, :conditions => {:parent_id => nil}) || -1)+1),
14
- :menu_match => '^/snippets(\/|\/.+?|)$'
15
- )
16
- Page.default_parts.each do |default_page_part|
17
- page.parts.create(:title => default_page_part, :body => nil)
18
- end
8
+ # we don't need this on frontend
9
+ #page = Page.create(
10
+ # :title => 'Snippets',
11
+ # :link_url => '/snippets',
12
+ # :show_in_menu => false,
13
+ # :deletable => false,
14
+ # :position => ((Page.maximum(:position, :conditions => {:parent_id => nil}) || -1)+1),
15
+ # :menu_match => '^/snippets(\/|\/.+?|)$'
16
+ #)
17
+ #
18
+ #Page.default_parts.each do |default_page_part|
19
+ # page.parts.create(:title => default_page_part, :body => nil)
20
+ #end
@@ -9,8 +9,8 @@ module Refinery
9
9
 
10
10
  config.to_prepare do
11
11
  Page.module_eval do
12
- has_many :snippet_pages
13
- has_many :snippets, :through => :snippet_pages, :order => 'position ASC'
12
+ has_many :snippet_page
13
+ has_many :snippets, :through => :snippet_page, :order => 'position ASC'
14
14
  end
15
15
  end
16
16
 
@@ -21,9 +21,13 @@ module Refinery
21
21
  end
22
22
  Refinery::Plugin.register do |plugin|
23
23
  plugin.name = "snippets"
24
- plugin.activity = {
24
+ plugin.url = {:controller => '/admin/snippets'}
25
+ plugin.menu_match = /^\/?(admin|refinery)\/snippets/
26
+ plugin.activity = [{
25
27
  :class => Snippet
26
- }
28
+ }, {
29
+ :class => SnippetPage
30
+ }]
27
31
  end
28
32
  end
29
33
  end
metadata CHANGED
@@ -1,12 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: refinerycms-snippets
3
3
  version: !ruby/object:Gem::Version
4
- hash: 15
4
+ hash: 13
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 2
9
- version: "0.2"
8
+ - 3
9
+ version: "0.3"
10
10
  platform: ruby
11
11
  authors:
12
12
  - Marek L.
@@ -37,6 +37,7 @@ files:
37
37
  - config/locales/nl.yml
38
38
  - app/controllers/snippets_controller.rb
39
39
  - app/controllers/admin/snippets_controller.rb
40
+ - app/controllers/admin/snippets_pages_controller.rb
40
41
  - app/models/snippet_page.rb
41
42
  - app/models/snippet.rb
42
43
  - app/views/snippets/show.html.erb
@@ -53,8 +54,10 @@ files:
53
54
  - app/views/admin/snippets/_snippet.html.erb
54
55
  - app/views/admin/pages/tabs/_snippets.html.erb
55
56
  - app/views/admin/pages/tabs/_snippets_bar.html.erb
57
+ - app/views/admin/pages/tabs/_snippets_content.html.erb
56
58
  - app/views/admin/pages/tabs/_snippets_field.html.erb
57
- - db/migrate/2_create_page_snippets.rb
59
+ - app/views/admin/snippets_pages/index.html.erb
60
+ - db/migrate/2_create_snippets_pages.rb
58
61
  - db/migrate/1_create_snippets.rb
59
62
  - db/migrate/3_translate_snippets.rb
60
63
  - db/seeds/snippets.rb
@@ -1,18 +0,0 @@
1
- class CreatePageSnippets < ActiveRecord::Migration
2
-
3
- def self.up
4
- create_table :snippet_pages, :id => false do |t|
5
- t.integer :snippet_id
6
- t.integer :page_id
7
- t.integer :position
8
- end
9
-
10
- add_index :snippet_pages, :snippet_id
11
- add_index :snippet_pages, :page_id
12
- end
13
-
14
- def self.down
15
- drop_table :snippet_pages
16
- end
17
-
18
- end