static_blocks 1.0.3 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -1,12 +1,12 @@
1
1
  # Static Blocks
2
2
 
3
- Static Blocks is an ultra light-weight CMS for Ruby on Rails.
3
+ Static Blocks is a light-weight CMS for Ruby on Rails.
4
4
 
5
5
  Create snippets of content. Place them anywhere in your views.
6
6
 
7
7
  ## Features
8
8
  * Simple admin interface
9
- * i18n internationalization support
9
+ * i18n multilingual support
10
10
  * Optional http basic authentication
11
11
  * Search
12
12
  * wysihtml5 editor
@@ -14,19 +14,19 @@ Create snippets of content. Place them anywhere in your views.
14
14
 
15
15
  ## Installation
16
16
 
17
- Add the following to Gemfile:
17
+ Add the following to `Gemfile`:
18
18
 
19
19
  ```ruby
20
20
  gem 'static_blocks'
21
21
  ```
22
22
 
23
- Run bundle from shell:
23
+ Run bundle:
24
24
 
25
25
  ```shell
26
26
  bundle install
27
27
  ```
28
28
 
29
- Run static blocks install generator from shell:
29
+ Run static blocks install generator:
30
30
 
31
31
  ```shell
32
32
  rails generate static_blocks:install
@@ -38,7 +38,7 @@ Run migrations:
38
38
  rake db:migrate
39
39
  ```
40
40
 
41
- Ensure that engine is mounted in routes.rb:
41
+ Check that Engine has been mounted in `config/routes.rb`:
42
42
 
43
43
  ```ruby
44
44
  mount StaticBlocks::Engine => "/static_blocks"
@@ -57,36 +57,65 @@ Use the `snippet_for` method or it's alias `s` to output a block onto any view t
57
57
 
58
58
  ## Configuration
59
59
 
60
- When you ran the install generator, a configuration file should have been created in config/initializers/static_blocks.rb:
60
+ During installation, a configuration file should have been created in `config/initializers/static_blocks.rb`:
61
61
 
62
62
  ```ruby
63
63
  StaticBlocks.config do |config|
64
- config.locales = ['en']
65
64
  config.http_auth = false
66
65
  config.username = ENV['STATIC_BLOCKS_USERNAME']
67
66
  config.password = ENV['STATIC_BLOCKS_PASSWORD']
68
67
  config.wysihtml5 = true
68
+ config.globalize = false
69
+ config.locales = ['en']
69
70
  end
70
71
  ```
71
72
 
72
73
  ### i18n Internationalization
73
74
 
74
- Static Blocks supports i18n internationalization. Pass in an array of locales to it's config option:
75
+ Static Blocks supports i18n internationalization. To active, follow the steps below:
76
+
77
+ #### Step 1
78
+
79
+ Set globalize option to true.
80
+
81
+ ```ruby
82
+ config.globalize = true
83
+ ```
84
+
85
+ #### Step 2
86
+
87
+ Pass in an array of locales.
75
88
 
76
89
  ```ruby
77
90
  config.locales = ['en', 'wk', 'pirate']
78
91
  ```
79
92
 
93
+ #### Step 3
94
+
95
+ Skip this step if you are starting without any existing snippets. If you are enabling i18n on a site with existing snippets, you must export and import the snippets in order to copy them to the default locale.
96
+
80
97
  ### Optional http basic authentication
81
98
 
82
- Static Blocks has an optional http basic authentication which is turned off by default. To activate, set the config option to true and create environment variables for the username and password.
99
+ Static Blocks has an optional http basic authentication which is turned off by default. To activate, set the http_auth option to true and create environment variables for the username and password.
83
100
 
84
101
  ```ruby
85
102
  config.http_auth = true
86
103
  ```
87
104
 
105
+ If you are using Devise and prefer to use that instead, you could probably do something like this in `config/routes.rb`:
106
+
107
+ ```ruby
108
+ authenticate :admin_user do
109
+ mount StaticBlocks::Engine => "/static_blocks"
110
+ end
111
+ ```
112
+
88
113
  ### wysihtml5 editor
89
- Static Blocks uses the wysihtml5 editor which is turned on by default. To deactive, set the config option to false.
114
+ Static Blocks uses the wysihtml5 editor which is turned on by default. To deactive, set the wysihtml5 option to false.
115
+
116
+ ```ruby
117
+ config.wysihtml5 = false
118
+ ```
90
119
 
91
120
  ## Credits
92
121
  Created by Travis Luong
@@ -67,7 +67,7 @@ module StaticBlocks
67
67
  # GET /static_blocks.json
68
68
  def index
69
69
  @search = Snippet.order('title asc').search(params[:q])
70
- @snippets = @search.result.per_page_kaminari(params[:page]).per(10)
70
+ @snippets = @search.result(distinct: true).per_page_kaminari(params[:page]).per(10)
71
71
 
72
72
  respond_to do |format|
73
73
  format.html # index.html.erb
@@ -3,7 +3,7 @@ module StaticBlocks
3
3
  attr_accessible :content, :status, :title
4
4
  after_save :clear_cache
5
5
  scope :published, where(:status => 'published')
6
- translates :content
6
+ translates :content if StaticBlocks.config.globalize
7
7
  validates :title, uniqueness: true
8
8
 
9
9
  def to_s
@@ -17,7 +17,9 @@
17
17
  <li><%= link_to "List snippets", snippets_path %></li>
18
18
  <li><%= link_to "New snippet", new_snippet_path %></li>
19
19
  <li><%= link_to "Export snippets", export_snippets_path(:format => :csv) %></li>
20
- <li><%= link_to "Export translations", export_translations_snippets_path(:format => :csv) %></li> </ul>
20
+ <% if StaticBlocks.config.globalize %>
21
+ <li><%= link_to "Export translations", export_translations_snippets_path(:format => :csv) %></li> </ul>
22
+ <% end %>
21
23
  </div><!--/.nav-collapse -->
22
24
  </div>
23
25
  </div>
@@ -34,13 +36,15 @@
34
36
  <% end %>
35
37
  <% end %>
36
38
 
37
- <div id="locale" class="well well-small">
38
- <strong>Locale:</strong>
39
+ <% if StaticBlocks.config.globalize %>
40
+ <div id="locale" class="well well-small">
41
+ <strong>Locale:</strong>
39
42
 
40
- <% StaticBlocks.config.locales.each do |loc| %>
41
- &nbsp;<%= link_to_unless_current loc, locale: loc %>
42
- <% end %>
43
- </div>
43
+ <% StaticBlocks.config.locales.each do |loc| %>
44
+ &nbsp;<%= link_to_unless_current loc, locale: loc %>
45
+ <% end %>
46
+ </div>
47
+ <% end %>
44
48
 
45
49
  <%= yield %>
46
50
 
@@ -0,0 +1,37 @@
1
+ <% if StaticBlocks.config.globalize %>
2
+
3
+ <%= search_form_for @search do |f| %>
4
+ <div class="field">
5
+ <%= f.label :title_cont, "Title contains" %>
6
+ <%= f.text_field :title_cont %>
7
+ </div>
8
+ <div class="field">
9
+ <%= f.label :translations_content_cont, "Content contains" %>
10
+ <%= f.text_field :translations_content_cont %>
11
+ </div>
12
+ <div class="field">
13
+ <%= f.label :status_cont, "Status contains" %>
14
+ <%= f.select(:status_cont, [['', ''], ['Draft', 'draft'], ['Published', 'published']]) %>
15
+ </div>
16
+ <div class="actions"><%= f.submit "Search" %></div>
17
+ <% end %>
18
+
19
+ <% else %>
20
+
21
+ <%= search_form_for @search do |f| %>
22
+ <div class="field">
23
+ <%= f.label :title_cont, "Title contains" %>
24
+ <%= f.text_field :title_cont %>
25
+ </div>
26
+ <div class="field">
27
+ <%= f.label :content_cont, "Content contains" %>
28
+ <%= f.text_field :content_cont %>
29
+ </div>
30
+ <div class="field">
31
+ <%= f.label :status_cont, "Status contains" %>
32
+ <%= f.select(:status_cont, [['', ''], ['Draft', 'draft'], ['Published', 'published']]) %>
33
+ </div>
34
+ <div class="actions"><%= f.submit "Search" %></div>
35
+ <% end %>
36
+
37
+ <% end %>
@@ -2,21 +2,7 @@
2
2
  <div class="row">
3
3
  <div class="span6">
4
4
  <h2>Search</h2>
5
- <%= search_form_for @search do |f| %>
6
- <div class="field">
7
- <%= f.label :title_cont, "Title contains" %>
8
- <%= f.text_field :title_cont %>
9
- </div>
10
- <div class="field">
11
- <%= f.label :translations_content_cont, "Content contains" %>
12
- <%= f.text_field :translations_content_cont %>
13
- </div>
14
- <div class="field">
15
- <%= f.label :status_cont, "Status contains" %>
16
- <%= f.select(:status_cont, [['', ''], ['Draft', 'draft'], ['Published', 'published']]) %>
17
- </div>
18
- <div class="actions"><%= f.submit "Search" %></div>
19
- <% end %>
5
+ <%= render 'search' %>
20
6
  </div>
21
7
  <div class="span6">
22
8
  <h2>Import snippets</h2>
@@ -24,10 +10,12 @@
24
10
  <%= file_field_tag :file %>
25
11
  <%= submit_tag "Import snippets" %>
26
12
  <% end %>
27
- <h2>Import translations</h2>
28
- <%= form_tag import_translations_snippets_path, multipart: true do %>
29
- <%= file_field_tag :file %>
30
- <%= submit_tag "Import translations" %>
13
+ <% if StaticBlocks.config.globalize %>
14
+ <h2>Import translations</h2>
15
+ <%= form_tag import_translations_snippets_path, multipart: true do %>
16
+ <%= file_field_tag :file %>
17
+ <%= submit_tag "Import translations" %>
18
+ <% end %>
31
19
  <% end %>
32
20
  <p class="help-block">*If you are using translations, you must import snippets first and then translations.</p>
33
21
  </div>
@@ -24,11 +24,12 @@ module StaticBlocks
24
24
  def self.config(&block)
25
25
  unless defined? @@config
26
26
  @@config ||= StaticBlocks::Engine::Configuration.new
27
- @@config.locales = ['en']
28
27
  @@config.http_auth = false
29
28
  @@config.username = "admin"
30
29
  @@config.password = "password"
31
30
  @@config.wysihtml5 = true
31
+ @@config.globalize = false
32
+ @@config.locales = ['en']
32
33
  end
33
34
 
34
35
  yield @@config if block
@@ -1,3 +1,3 @@
1
1
  module StaticBlocks
2
- VERSION = "1.0.3"
2
+ VERSION = "1.1.0"
3
3
  end
@@ -1,7 +1,8 @@
1
1
  StaticBlocks.config do |config|
2
- config.locales = ['en']
3
2
  config.http_auth = false
4
3
  config.username = ENV['STATIC_BLOCKS_USERNAME']
5
4
  config.password = ENV['STATIC_BLOCKS_PASSWORD']
6
5
  config.wysihtml5 = true
6
+ config.globalize = false
7
+ config.locales = ['en']
7
8
  end
@@ -1,7 +1,8 @@
1
1
  StaticBlocks.config do |config|
2
- config.locales = ['en', 'wk']
3
2
  config.http_auth = false
4
3
  config.username = "frodo"
5
4
  config.password = "thering"
6
5
  config.wysihtml5 = true
6
+ config.globalize = true
7
+ config.locales = ['en', 'wk']
7
8
  end
Binary file