th_simple_content_management 0.2.2 → 0.2.3

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.
Files changed (39) hide show
  1. checksums.yaml +15 -0
  2. data/app/assets/javascripts/simple_content_management/simple_pages/form.js +4 -0
  3. data/app/assets/javascripts/th-page-editor/column.js +65 -6
  4. data/app/assets/javascripts/th-page-editor/index.js +244 -12
  5. data/app/assets/javascripts/th-page-editor/row.js +71 -1
  6. data/app/assets/stylesheets/simple_content_management/simple_menus.css.scss +1 -1
  7. data/app/assets/stylesheets/simple_content_management/simple_pages.css.scss +52 -20
  8. data/app/controllers/redactor_rails/documents_controller.rb +1 -2
  9. data/app/controllers/redactor_rails/pictures_controller.rb +1 -2
  10. data/app/controllers/simple_content_management/link_banners_controller.rb +14 -0
  11. data/app/controllers/simple_content_management/simple_menus_controller.rb +2 -0
  12. data/app/controllers/simple_content_management/simple_pages_controller.rb +7 -0
  13. data/app/controllers/simple_content_management/simple_posts_controller.rb +8 -0
  14. data/app/helpers/simple_content_management/simple_menus_helper.rb +1 -5
  15. data/app/helpers/simple_content_management/simple_pages_helper.rb +2 -2
  16. data/app/models/simple_content_management/image_uploader.rb +13 -0
  17. data/app/models/simple_content_management/link_banner.rb +13 -0
  18. data/app/models/simple_content_management/simple_menu_item.rb +14 -0
  19. data/app/models/simple_content_management/simple_page.rb +23 -9
  20. data/app/models/simple_content_management/simple_route.rb +1 -2
  21. data/app/views/simple_content_management/link_banners/_form.html.erb +26 -0
  22. data/app/views/simple_content_management/link_banners/edit.html.erb +2 -0
  23. data/app/views/simple_content_management/link_banners/new.html.erb +2 -0
  24. data/app/views/simple_content_management/link_banners/show.html.erb +3 -0
  25. data/app/views/simple_content_management/simple_menus/show.html.erb +1 -1
  26. data/app/views/simple_content_management/simple_pages/_form.html.erb +167 -10
  27. data/app/views/simple_content_management/simple_pages/index.html.erb +4 -2
  28. data/app/views/simple_content_management/simple_pages/show.html.erb +9 -1
  29. data/app/views/simple_content_management/simple_posts/preview.html.erb +13 -0
  30. data/config/locales/simple_content_management/nl/layouts.yml +6 -0
  31. data/config/locales/simple_content_management/nl/models/link_banner.yml +13 -0
  32. data/config/locales/simple_content_management/nl/models/simple_page.yml +3 -1
  33. data/config/routes.rb +7 -1
  34. data/lib/simple_content_management/breadcrumbs.rb +13 -0
  35. data/lib/simple_content_management/content_text.rb +2 -1
  36. data/lib/simple_content_management/version.rb +1 -1
  37. data/lib/simple_content_management.rb +1 -0
  38. data/vendor/assets/javascripts/jquery.ajaxform.js +1190 -0
  39. metadata +82 -83
@@ -4,8 +4,7 @@ class RedactorRails::DocumentsController < ApplicationController
4
4
  before_filter :redactor_authenticate_user! if RedactorRails.document_model.new.respond_to?(RedactorRails.devise_user)
5
5
 
6
6
  def index
7
- @documents = RedactorRails.document_model.where(
8
- RedactorRails.document_model.new.respond_to?(RedactorRails.devise_user) ? { RedactorRails.devise_user_key => redactor_current_user.id } : { })
7
+ @documents = RedactorRails.document_model.all
9
8
  render :json => @documents.to_json
10
9
  end
11
10
 
@@ -4,8 +4,7 @@ class RedactorRails::PicturesController < ApplicationController
4
4
  before_filter :redactor_authenticate_user! if RedactorRails.picture_model.new.respond_to?(RedactorRails.devise_user)
5
5
 
6
6
  def index
7
- @pictures = RedactorRails.picture_model.where(
8
- RedactorRails.picture_model.new.respond_to?(RedactorRails.devise_user) ? { RedactorRails.devise_user_key => redactor_current_user.id } : { })
7
+ @pictures = RedactorRails.picture_model.all
9
8
  render :json => @pictures.to_json
10
9
  end
11
10
 
@@ -0,0 +1,14 @@
1
+ class SimpleContentManagement::LinkBannersController < InheritedResources::Base
2
+ defaults :resource_class => SimpleContentManagement::LinkBanner
3
+ include SimpleAdminPanel::ControllerExtensions
4
+ alias_method_chain :collection, :search_and_pagination
5
+ layout false
6
+
7
+ def create
8
+ create! do |success, failure|
9
+ success.html do
10
+ render "show" and return
11
+ end
12
+ end
13
+ end
14
+ end
@@ -1,10 +1,12 @@
1
1
  class SimpleContentManagement::SimpleMenusController< InheritedResources::Base
2
2
  defaults :resource_class => SimpleContentManagement::SimpleMenu
3
3
  include SimpleAdminPanel::ControllerExtensions
4
+ include SimpleContentManagement::Breadcrumbs
4
5
  actions :index, :show, :update
5
6
 
6
7
  def update
7
8
  update!
9
+ reconstruct_breadcrumbs
8
10
  flash[:success] = "Menu gewijzigd."
9
11
  end
10
12
 
@@ -2,6 +2,13 @@ class SimpleContentManagement::SimplePagesController < InheritedResources::Base
2
2
  defaults :resource_class => SimpleContentManagement::SimplePage
3
3
  include SimpleAdminPanel::ControllerExtensions
4
4
  alias_method_chain :collection, :search_and_pagination
5
+ custom_actions resource: [:refresh]
6
+
7
+ def refresh
8
+ refresh! do
9
+ render "edit" and return
10
+ end
11
+ end
5
12
 
6
13
  protected
7
14
  def end_of_association_chain
@@ -0,0 +1,8 @@
1
+ class SimpleContentManagement::SimplePostsController < ApplicationController
2
+ include SimpleAdminPanel::ControllerExtensions
3
+
4
+ def preview
5
+ @simple_post = SimpleBlog::SimplePost.find params[:id]
6
+ render "preview", layout: request.xhr? ? false : "iframe"
7
+ end
8
+ end
@@ -12,16 +12,12 @@ module SimpleContentManagement::SimpleMenusHelper
12
12
  def simple_menu_item_link_for smi
13
13
  if smi.uri[0] == "$"
14
14
  smc = SimpleContentManagement::SimpleMenu.find_registered_menu_item smi.uri[1..-1]
15
- if self.instance_eval &smc.condition
15
+ if smc.condition.nil? || self.instance_eval(&smc.condition)
16
16
  link_to smi.name, *self.instance_eval(&smc.link)
17
17
  end
18
18
  else
19
19
  options = {}
20
20
  options[:target] = "_blank" if smi.is_target_blank?
21
- if smi.children.any?
22
- options[:class] = "dropdown-toggle"
23
- options[:"data-toggle"] = "dropdown"
24
- end
25
21
  link_to smi.name, smi.uri, options
26
22
  end
27
23
  end
@@ -1,9 +1,9 @@
1
1
  module SimpleContentManagement::SimplePagesHelper
2
2
  def render_page_by_name name
3
- SimpleContentManagement::SimplePage.where(name: name).first.try(:content_html).try(:html_safe)
3
+ SimpleContentManagement::SimplePage.active.where(name: name).first.try(:content_html).try(:html_safe)
4
4
  end
5
5
 
6
6
  def render_page_by_path path
7
- SimpleContentManagement::SimplePage.search(simple_routes_path_equals: path).first.try(:content_html).try(:html_safe)
7
+ SimpleContentManagement::SimplePage.active.search(simple_routes_path_equals: path).first.try(:content_html).try(:html_safe)
8
8
  end
9
9
  end
@@ -0,0 +1,13 @@
1
+ # encoding: utf-8
2
+ class SimpleContentManagement::ImageUploader < CarrierWave::Uploader::Base
3
+ include CarrierWave::MiniMagick
4
+ storage :file
5
+
6
+ def store_dir
7
+ "system/redactor_assets/pictures/#{model.id}"
8
+ end
9
+
10
+ def extension_white_list
11
+ RedactorRails.image_file_types
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ class SimpleContentManagement::LinkBanner < ActiveRecord::Base
2
+ mount_uploader :background_image, SimpleContentManagement::ImageUploader
3
+
4
+ SIZES = {
5
+ "sub" => { w: 295, h: 160 },
6
+ "main" => { w: 895, h: 290 }
7
+ }
8
+
9
+ attr_accessible :secondary_title, :primary_title, :uri, :size, :background_image, :background_image_cache
10
+
11
+ validates_presence_of :background_image, :secondary_title, :primary_title, :uri, :size
12
+ validates_inclusion_of :size, in: SIZES.keys
13
+ end
@@ -9,4 +9,18 @@ class SimpleContentManagement::SimpleMenuItem < ActiveRecord::Base
9
9
  attr_accessible :name, :uri, :is_target_blank, :position, :simple_menu_id, :parent_id, :method
10
10
 
11
11
  scope :ordered, order("position")
12
+
13
+ def simple_menu
14
+ SimpleContentManagement::SimpleMenu.find simple_menu_id
15
+ end
16
+
17
+ def parents
18
+ parents = []
19
+ parent = self
20
+ while parent.parent.present?
21
+ parents << parent.parent
22
+ parent = self.parent
23
+ end
24
+ return parents
25
+ end
12
26
  end
@@ -1,12 +1,19 @@
1
1
  class SimpleContentManagement::SimplePage < ActiveRecord::Base
2
2
  include SimpleContentManagement::ContentText
3
+ include SimpleContentManagement::Breadcrumbs
3
4
 
4
5
  has_many :simple_routes, conditions: { deleted: false }, class_name: "SimpleContentManagement::SimpleRoute"
6
+ belongs_to :preferred_menu_item, class_name: "SimpleContentManagement::SimpleMenuItem"
5
7
 
6
- attr_accessible :name, :title, :content_html, :simple_routes_list
7
-
8
+ attr_accessible :name, :title, :content_html, :simple_routes_list, :section, :preferred_menu_item_id, :meta_description, :meta_keywords
8
9
  scope :active, where(deleted: false)
9
10
 
11
+ before_save :reconstruct_breadcrumbs
12
+
13
+ def simple_menu_items
14
+ SimpleContentManagement::SimpleMenuItem.where(uri: path_names.map{ |path| "/#{path}.html" } + (path_names.include?("prive") ? ["/"] : []))
15
+ end
16
+
10
17
  def simple_routes_list
11
18
  path_names.join ","
12
19
  end
@@ -16,15 +23,18 @@ class SimpleContentManagement::SimplePage < ActiveRecord::Base
16
23
 
17
24
  # destroy routes that are no longer required
18
25
  self.simple_routes.each do |simple_route|
19
- simple_route.destroy unless path_names.include? simple_route.path
26
+ if path_names.include? simple_route.path
27
+ path_names.delete simple_route.path
28
+ else
29
+ simple_route.destroy
30
+ end
20
31
  end
21
32
 
22
33
  # ensure any existing routes are set active to the current page.
23
- SimpleContentManagement::SimpleRoute.where(path: path_names).each do |simple_route|
24
- simple_route.simple_page = self
25
- simple_route.deleted = false
26
- simple_route.save
27
- path_names.delete simple_route.path
34
+ if id.nil?
35
+ SimpleContentManagement::SimpleRoute.where(path: path_names, deleted: false).update_all deleted: true
36
+ else
37
+ SimpleContentManagement::SimpleRoute.where(path: path_names, deleted: false).where("simple_page_id <> ?", id).update_all deleted: true
28
38
  end
29
39
 
30
40
  # create the remaining routes
@@ -34,7 +44,7 @@ class SimpleContentManagement::SimplePage < ActiveRecord::Base
34
44
  end
35
45
 
36
46
  def path_names
37
- simple_routes.pluck("path")
47
+ new_record? ? simple_routes.map(&:path) : simple_routes.active.pluck("path")
38
48
  end
39
49
 
40
50
  def destroy
@@ -45,6 +55,10 @@ class SimpleContentManagement::SimplePage < ActiveRecord::Base
45
55
  title
46
56
  end
47
57
 
58
+ def reconstruct_breadcrumbs
59
+ self.preferred_menu_item = simple_menu_items.first unless preferred_menu_item.present? || simple_menu_items.first.nil?
60
+ end
61
+
48
62
  class << self
49
63
  def registered_content_pages
50
64
  @registered_content_pages ||= YAML.load_file File.join Rails.root, "config", "content_pages.yml"
@@ -1,6 +1,4 @@
1
1
  class SimpleContentManagement::SimpleRoute < ActiveRecord::Base
2
- validates_uniqueness_of :path
3
-
4
2
  belongs_to :simple_page, class_name: "SimpleContentManagement::SimplePage"
5
3
 
6
4
  attr_accessible :path
@@ -16,5 +14,6 @@ class SimpleContentManagement::SimpleRoute < ActiveRecord::Base
16
14
  private
17
15
  def inform_simple_pages_constraint
18
16
  SimpleContentManagement::SimplePagesConstraint.instance.route_created_or_updated self
17
+ true
19
18
  end
20
19
  end
@@ -0,0 +1,26 @@
1
+ <%= simple_form_for @link_banner, remote: true do |f| %>
2
+ <div class="errors"><%= f.object.errors.full_messages.to_sentence %></div>
3
+ <%= f.input :secondary_title %>
4
+ <%= f.input :primary_title %>
5
+ <%= f.input :size, as: :radio_buttons, collection: SimpleContentManagement::LinkBanner::SIZES.map{ |name, size| ["#{size[:w]}x#{size[:h]}", name] } %>
6
+
7
+ <%= f.input :quick_search, label: "Bestaande link" do %>
8
+ <select id="link-banner-quick-select" data-placeholder="Kies een bestaande link">
9
+ <option></option>
10
+ <optgroup label="Pagina's">
11
+ <% SimpleContentManagement::SimplePage.includes(:simple_routes).where("name IS NULL").active.each do |simple_page| %>
12
+ <%= content_tag :option, simple_page.title, data: { routes: simple_page.path_names.map{ |path| "/#{path}.html" }.to_json, name: simple_page.title } %>
13
+ <% end %>
14
+ </optgroup>
15
+ </select>
16
+ <% end %>
17
+
18
+ <%= f.input :uri %>
19
+
20
+ <%= f.input :background_image, hint: "De achtergrond afbeelding van de linkbanner. Je afbeelding's afmetingen moeten gelijk zijn aan de gekozen afmeting van de linkbanner." do %>
21
+ <%= image_tag resource.background_image.url if resource.background_image.present? %>
22
+ <br>
23
+ <%= f.input_field :background_image %>
24
+ <%= f.hidden_field :background_image_cache %>
25
+ <% end %>
26
+ <% end %>
@@ -0,0 +1,2 @@
1
+ <h2>Linkbanner bewerken</h2>
2
+ <%= render "form" %>
@@ -0,0 +1,2 @@
1
+ <h2>Linkbanner invoegen</h2>
2
+ <%= render "form" %>
@@ -0,0 +1,3 @@
1
+ <div data-link-banner-id="<%= @link_banner.id %>">
2
+ <%= render "shared/#{@link_banner.size}_bloc", primary_title: @link_banner.primary_title, secondary_title: @link_banner.secondary_title, target: @link_banner.uri, background_image: @link_banner.background_image.url %>
3
+ </div>
@@ -33,7 +33,7 @@
33
33
  <% end %>
34
34
  </optgroup>
35
35
  <optgroup label="Pagina's">
36
- <% SimpleContentManagement::SimplePage.includes(:simple_routes).where("name IS NULL").each do |simple_page| %>
36
+ <% SimpleContentManagement::SimplePage.active.includes(:simple_routes).where("name IS NULL").each do |simple_page| %>
37
37
  <%= content_tag :option, simple_page.title, data: { routes: simple_page.path_names.map{ |path| "/#{path}.html" }.to_json, name: simple_page.title } %>
38
38
  <% end %>
39
39
  </optgroup>
@@ -2,9 +2,22 @@
2
2
  <%= simple_form_for [:admin, @simple_page], url: @simple_page.new_record? ? simple_content_management_simple_pages_path : simple_content_management_simple_page_path(@simple_page), html: { class: "simple-page-form" } do |f| %>
3
3
  <%= f.input :simple_routes_list, input_html: { data: { simple_routes_list: true } }, wrapper_html: { class: "simple-routes-list" }, hint: "Voeg één of meerdere URL paden toe." %>
4
4
  <%= f.input :title, hint: "Wordt gebruikt als HTML titel." %>
5
+ <%= f.input :meta_description, as: :string, input_html: { class: "input-xxlarge" } %>
6
+ <%= f.input :meta_keywords, as: :string, input_html: { class: "input-xxlarge" } %>
7
+ <% if @simple_page.simple_menu_items.any? %>
8
+ <%= f.input :preferred_menu_item_id, include_blank: false, collection: @simple_page.simple_menu_items.map{ |smi| ["#{[smi.simple_menu.name, *smi.parents.map(&:name).reverse, smi.name].join(" / ")}", smi.id] } %>
9
+ <% else %>
10
+ <%= f.input :preferred_menu_item_id do %>
11
+ <div style="padding-top: 5px;">
12
+ Voeg deze pagina toe aan een menu om breadcrumbs ervoor te maken.
13
+ <br>Indien er meer dan één menuitem linkt naar deze pagina kan hier gekozen worden welke bepalend is voor de breadcrumbs.
14
+ </div>
15
+ <% end %>
16
+ <% end %>
17
+ <%= f.input :section, hint: "Bepalend voor welk menu er getoond wordt.", as: :radio_buttons, collection: { "Prive" => "private", "Zakelijk" => "corporate" } %>
5
18
  <%= f.input :content_html, as: :hidden %>
6
19
 
7
- <div class="content-html-container">
20
+ <div class="content-html-container content-html-preview">
8
21
  <%== @simple_page.content_html %>
9
22
  </div>
10
23
 
@@ -19,15 +32,22 @@
19
32
  <h3 id="content-editor-label">Inhoud bewerken</h3>
20
33
  <ul class="nav nav-tabs">
21
34
  <li class="active"><a href="#editor-html-content" data-toggle="tab">Tekst</a></li>
22
- <li><a href="#editor-container" data-toggle="tab">Container</a></li>
23
- <li><a href="#editor-bloc-component" data-toggle="tab">Linkbanner</a></li>
35
+ <li><a href="#editor-container" data-toggle="tab">Container</a></li>
36
+ <li><a href="#editor-link-banner" data-toggle="tab" data-path="<%= new_simple_content_management_link_banner_path %>">Linkbanner</a></li>
37
+ <li><a href="#editor-blog-links" data-toggle="tab">Bloglinks</a></li>
38
+ <li><a href="#editor-link-list" data-toggle="tab">Linklijst</a></li>
39
+ <li><a href="#editor-appointment" data-toggle="tab">Agenda</a></li>
40
+ <li><a href="#editor-blog-post-preview" data-toggle="tab">Blogpost</a></li>
41
+ <li><a href="#editor-offer" data-toggle="tab">Offerte</a></li>
24
42
  </ul>
25
43
  </div>
26
44
  <div class="modal-body">
27
45
  <div class="tab-content">
46
+
28
47
  <div class="tab-pane active" id="editor-html-content">
29
48
  <textarea cols=140 rows=12></textarea>
30
49
  </div>
50
+
31
51
  <div class="tab-pane" id="editor-container">
32
52
  <h2>Converteer dit blok naar een container</h2>
33
53
  <p class=lead>
@@ -37,13 +57,150 @@
37
57
  Klik op toepassen om dit blok te converteren. Er zal geen informatie verloren gaan, maar deze actie kan niet ongedaan worden.
38
58
  </p>
39
59
  </div>
40
- <div class="tab-pane" id="editor-bloc-component">
41
- <h2>Linkbanner</h2>
42
- Hier komen nog invulvelden voor:<br>
43
- - afbeelding<br>
44
- - koptekst regel 1 &amp; 2<br>
45
- - link
46
- - formaat (groot, 9 kolommen of klein, 3 kolommen)
60
+
61
+ <div class="tab-pane" id="editor-link-banner"></div>
62
+
63
+ <div class="tab-pane" id="editor-offer">
64
+ <h2>Offerte</h2>
65
+ <p class=lead>
66
+ Plaatst een offerte-berekenaar in dit blok.
67
+ </p>
68
+ <div style="display: none;">
69
+ <% @offer = Offer.new %>
70
+ <%= render "offers/form" %>
71
+ </div>
72
+ </div>
73
+
74
+ <div class="tab-pane" id="editor-link-list">
75
+ <h2>Linklijst</h2>
76
+ <p class="lead">
77
+ Blok met kopje en een lijst aan links.
78
+ </p>
79
+
80
+ <form target="#" id="editor-link-list-form" class="form-horizontal">
81
+
82
+ <div class="control-group">
83
+ <label class="control-label" for="editor-link-list-title">Titel</label>
84
+ <div class="controls">
85
+ <input type="text" id="editor-link-list-title" name="title">
86
+ </div>
87
+ </div>
88
+
89
+ <div class="control-group">
90
+ <label class="control-label" for="editor-link-list-title">Lijsttype</label>
91
+ <div class="controls">
92
+ <label class="radio"><input type="radio" name="listtype" value="linklist" checked="checked"> Linklijst</label>
93
+ <label class="radio"><input type="radio" name="listtype" value="dropdown"> Dropdown</label>
94
+ </div>
95
+ </div>
96
+
97
+ <h3>
98
+ <a href="#" id="add-link-button" class="pull-right btn btn-mini"><i class="icon-plus"></i> toevoegen</a>
99
+ Links
100
+ </h3>
101
+ <table class="table table-condensed" id="links-table">
102
+ <thead>
103
+ <tr>
104
+ <th>Bestaande link</th>
105
+ <th>Naam</th>
106
+ <th>URL</th>
107
+ </tr>
108
+ </thead>
109
+ <tbody>
110
+ <tr class="link-list-quick-select-container">
111
+ <td>
112
+ <select data-placeholder="Kies een bestaande link">
113
+ <option></option>
114
+ <optgroup label="Pagina's">
115
+ <% SimpleContentManagement::SimplePage.includes(:simple_routes).where("name IS NULL").active.each do |simple_page| %>
116
+ <%= content_tag :option, simple_page.title, data: { routes: simple_page.path_names.map{ |path| "/#{path}.html" }.to_json, name: simple_page.title } %>
117
+ <% end %>
118
+ </optgroup>
119
+ </select>
120
+ </td>
121
+ <td>
122
+ <input type="text" name="link-label[]">
123
+ </td>
124
+ <td>
125
+ <input type="text" name="link-uri[]">
126
+ </td>
127
+ </tr>
128
+ </tbody>
129
+ </table>
130
+
131
+ </form>
132
+ </div>
133
+
134
+ <div class="tab-pane" id="editor-blog-post-preview" data-path="<%= preview_simple_content_management_simple_post_path("simple_post_id") %>">
135
+ <h2>Blogpost preview blokje</h2>
136
+ <p class="lead">
137
+ Een blogpost preview blokje ter grootte van een kleine linkbanner.
138
+ </p>
139
+ <p>
140
+ <strong>Blogpost:</strong>
141
+ </p>
142
+ <%= select "", "blog_post_id", SimpleBlog::SimplePost.order("published_at desc").collect{ |p| [p.title, p.id] }, include_blank: true %>
143
+ </div>
144
+
145
+ <div class="tab-pane" id="editor-appointment">
146
+ <h2>Afspraak agenda</h2>
147
+ <p class="lead">
148
+ Een formulier met een grote agenda voor het maken van een afspraak op een datum en tijd.
149
+ </p>
150
+ <% @appointment_request = AppointmentRequest.new %>
151
+ <div style="display: none;">
152
+ <%= render "appointment_request/form" %>
153
+ </div>
154
+ </div>
155
+
156
+ <div class="tab-pane" id="editor-blog-links">
157
+ <h2>Blogposts linklijst</h2>
158
+ <p class="lead">
159
+ Blok met een kopje, links naar blogposts en een "alle openen" link.
160
+ </p>
161
+
162
+ <form target="#" id="editor-blog-links-form" class="form-horizontal">
163
+
164
+ <div class="control-group">
165
+ <label class="control-label" for="editor-blog-links-title">Titel</label>
166
+ <div class="controls">
167
+ <input type="text" id="editor-blog-links-title">
168
+ </div>
169
+ </div>
170
+
171
+ <div class="control-group">
172
+ <label class="control-label" for="editor-blog-links-title">Tags</label>
173
+ <div class="controls">
174
+ <select id="editor-blog-links-tags" multiple="multiple">
175
+ <% SimpleBlog::SimplePostTag.find_each do |tag| %>
176
+ <%= content_tag :option, tag.name, value: tag.id %>
177
+ <% end %>
178
+ </select>
179
+ <p class="help-block">
180
+ Kies één of meerdere tags waarvan de blogposts weergegeven moeten worden.
181
+ Alle posts met tenminste één van deze tags wordt toegevoegd. Laat leeg om alle posts te laden.
182
+ </p>
183
+ </div>
184
+ </div>
185
+
186
+ <div class="control-group">
187
+ <label class="control-label" for="editor-blog-links-amount">Aantal blogpost links</label>
188
+ <div class="controls">
189
+ <input type="number" id="editor-blog-links-amount" value="6" class="input-small">
190
+ </div>
191
+ </div>
192
+
193
+ <div class="control-group">
194
+ <label class="control-label" for="editor-blog-links-open-all">"Alle openen" link</label>
195
+ <div class="controls">
196
+ <input type="text" id="editor-blog-links-open-all" placeholder="Meer lezen...">
197
+ <p class="help-block">
198
+ Vul hier een naam in voor de link naar alle blogposts met de opgegeven tags. Laat leeg om geen link toe te voegen.
199
+ </p>
200
+ </div>
201
+ </div>
202
+
203
+ </form>
47
204
  </div>
48
205
  </div>
49
206
  </div>
@@ -1,4 +1,6 @@
1
- <%= table_list_for @simple_pages, sortable: false, resource_class: SimpleContentManagement::SimplePage do |t| %>
1
+ <%= paginate @simple_pages %>
2
+ <%= table_list_for @simple_pages, resource_class: SimpleContentManagement::SimplePage do |t| %>
2
3
  <%= t.item :title, as: :link %>
3
4
  <%= t.item as: :actions %>
4
- <% end %>
5
+ <% end %>
6
+ <%= paginate @simple_pages %>
@@ -2,4 +2,12 @@
2
2
  <%= link_to "/#{simple_route.path}.html", "/#{simple_route.path}.html", class: "btn btn-small", target: "_blank" %>
3
3
  <% end %>
4
4
 
5
- <%= @simple_page.content_html.html_safe %>
5
+ <br>
6
+ <br>
7
+
8
+ <pre>&lt;meta name="description" content="<%= CGI.escape_html @simple_page.meta_description %>"&gt;
9
+ &lt;meta name="keywords" content="<%= CGI.escape_html @simple_page.meta_keywords %>"&gt;</pre>
10
+
11
+ <div class="content-html-preview">
12
+ <%= @simple_page.content_html.html_safe %>
13
+ </div>
@@ -0,0 +1,13 @@
1
+ <div class="simple-post-preview">
2
+ <h3 class="title"><%= @simple_post.title.truncate(50) %></h3>
3
+
4
+ <div class="info">
5
+ Geschreven door <strong><%= @simple_post.author_name %></strong> op <strong><%= l @simple_post.published_at, format: :short %></strong>
6
+ </div>
7
+
8
+ <div class="content">
9
+ <%= @simple_post.content_text.truncate(150) %>
10
+ </div>
11
+
12
+ <%= link_to "&raquo; lees meer".html_safe, simple_post_path(@simple_post), class: "pull-right read-more" %>
13
+ </div>
@@ -0,0 +1,6 @@
1
+ nl:
2
+ layouts:
3
+ simple_admin_panel:
4
+ breadcrumb:
5
+ actions:
6
+ refresh: Verversen
@@ -0,0 +1,13 @@
1
+ nl:
2
+ activerecord:
3
+ models:
4
+ simple_content_management/link_banner:
5
+ one: Linkbanner
6
+ other: Linkbanners
7
+ attributes:
8
+ simple_content_management/link_banner:
9
+ primary_title: "Koptitel (regel 2)"
10
+ secondary_title: "Subtitel (regel 1)"
11
+ size: Formaat
12
+ uri: "URL"
13
+ background: Achtergrond afbeelding
@@ -9,4 +9,6 @@ nl:
9
9
  content_html: Inhoud
10
10
  title: Pagina titel
11
11
  name: Naam
12
- simple_routes_list: Routes
12
+ simple_routes_list: Routes
13
+ section: Afdeling
14
+ preferred_menu_item_id: Breadcrumbs
data/config/routes.rb CHANGED
@@ -5,7 +5,13 @@ Rails.application.routes.draw do
5
5
  end
6
6
  namespace :simple_content_management, path: "admin" do
7
7
  resources :simple_content_pages
8
- resources :simple_pages
8
+ resources :simple_pages do
9
+ get :refresh, on: :member
10
+ end
9
11
  resources :simple_menus
12
+ resources :link_banners, only: [:new, :create, :edit, :update, :show]
13
+ resources :simple_posts, only: [] do
14
+ get :preview, on: :member
15
+ end
10
16
  end
11
17
  end
@@ -0,0 +1,13 @@
1
+ module SimpleContentManagement::Breadcrumbs
2
+ def reconstruct_breadcrumbs
3
+ pages = SimpleContentManagement::SimplePage.active.all
4
+ menu_items = SimpleContentManagement::SimpleMenuItem.all
5
+ menu_item_ids = menu_items.map(&:id)
6
+
7
+ pages.each do |page|
8
+ next if menu_item_ids.include?(page.preferred_menu_item_id) || page.simple_menu_items.first.nil?
9
+ page.preferred_menu_item_id = page.simple_menu_items.first.id
10
+ page.save
11
+ end
12
+ end
13
+ end
@@ -15,7 +15,8 @@ module SimpleContentManagement::ContentText
15
15
  begin
16
16
  tmpfile.write self.content_html
17
17
  tmpfile.flush
18
- self.content_text = `lynx -dump -force_html "#{tmpfile.path}"`
18
+ # IO.popen for safe execution of commands within JRuby. backticks + utf8 = error
19
+ self.content_text = IO.popen(%{lynx -dump -force_html "#{tmpfile.path}"}, "rb").read
19
20
  ensure
20
21
  tmpfile.close true # `true` also deletes (unlinks) the file
21
22
  end
@@ -1,3 +1,3 @@
1
1
  module SimpleContentManagement
2
- VERSION = "0.2.2"
2
+ VERSION = "0.2.3"
3
3
  end
@@ -5,6 +5,7 @@ require "redactor_rails_document_uploader"
5
5
  require "redactor_rails_picture_uploader"
6
6
 
7
7
  module SimpleContentManagement
8
+ require "simple_content_management/breadcrumbs"
8
9
  require "simple_content_management/content_text"
9
10
  require "simple_content_management/simple_pages_constraint"
10
11
  end