tkh_content 0.9.7 → 0.9.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/app/controllers/blog_controller.rb +7 -92
- data/app/models/tag.rb +6 -0
- data/app/views/blog/_admin_context_menu.html.erb +13 -0
- data/app/views/blog/_all_tags_list.html.erb +10 -0
- data/app/views/blog/_individual_tag.html.erb +1 -0
- data/app/views/blog/by_tag.html.erb +23 -0
- data/app/views/blog/index.html.erb +5 -1
- data/app/views/pages/_blog_post_meta.html.erb +13 -7
- data/app/views/pages/_form.html.erb +8 -7
- data/app/views/pages/show.html.erb +2 -0
- data/config/routes.rb +6 -6
- data/lib/generators/tkh_content/create_or_update_files/templates/blog.html.erb +9 -9
- data/lib/tkh_content/version.rb +1 -1
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5aa776dd50acb59c951e8fd0506a2af67d60aa50
|
4
|
+
data.tar.gz: 3ecdb0062469aae86f29403e5fa710a8f36a8c5c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ccff788f856910f0b2b1b6478d5495917a0e72c9c082afd69c3a94cdd734dad97e6d7896a3ca43c26395e208635920c1bf3de3887017e179e5f43d61edb5a1c9
|
7
|
+
data.tar.gz: f3edf90b3b14d5b35314dd59119b7619236c320dded4c8416308f1bc19fa31adec1e3aad8acd2f9f0f8b317c124b727b1f4ebc83cdbd14b4f0231b5366e3f90c
|
data/CHANGELOG.md
CHANGED
@@ -1,102 +1,17 @@
|
|
1
1
|
class BlogController < ApplicationController
|
2
|
-
|
2
|
+
|
3
3
|
def index
|
4
|
-
|
5
|
-
@posts = Page.for_blog.published.order('published_at desc').paginate(:page => params[:page], :per_page => 20)
|
6
|
-
else
|
7
|
-
@posts = Page.for_blog.published.tagged_with(params[:tag]).order('published_at desc').paginate(:page => params[:page], :per_page => 20)
|
8
|
-
end
|
4
|
+
@posts = Page.for_blog.published.order('published_at desc').paginate(:page => params[:page], :per_page => 20)
|
9
5
|
respond_to do |format|
|
10
6
|
format.html { render :layout => 'blog' }
|
11
7
|
format.atom
|
12
8
|
end
|
13
9
|
end
|
14
|
-
|
15
|
-
# This is temporary and only to complete the import to SA's site.
|
16
|
-
def update_data
|
17
|
-
|
18
|
-
@count = 0
|
19
|
-
@pages = Array.new
|
20
|
-
|
21
|
-
Page.all.each do |page|
|
22
|
-
# determine whether page contains path
|
23
|
-
if page.body.match /src="\/system\/photos\/.*\.jpg/
|
24
|
-
# extract string to be changed
|
25
|
-
# match_data = page.body.match /src="\/system\/photos\/.*\.jpg/
|
26
|
-
# # extract an image name with jpg extension in the blog/2006 section
|
27
|
-
# extracted_image = match_data.to_s.sub("src=\"/images/photos/", '')
|
28
|
-
# # find the corresponding illustration
|
29
|
-
# illustration = Illustration.find_by_name(extracted_image)
|
30
|
-
# if illustration
|
31
|
-
# # change the image path
|
32
|
-
# page.body = page.body.sub("/images/blog/2007/", "/system/images/illustration/#{illustration.id}/large_")
|
33
|
-
# # save the page with new path
|
34
|
-
# page.save
|
35
|
-
# end
|
36
|
-
@count += 1
|
37
|
-
@pages << page
|
38
|
-
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
# @list_of_files = Array.new
|
43
|
-
|
44
|
-
# @count = 0
|
45
|
-
|
46
|
-
# Illustration.all.each do |illustration|
|
47
|
-
#
|
48
|
-
# if illustration.name == 'No name given'
|
49
|
-
#
|
50
|
-
# illustration.destroy
|
51
|
-
# @count += 1
|
52
|
-
#
|
53
|
-
# end
|
54
|
-
#
|
55
|
-
# # # extract an image name with jpg extension in the blog/2006 section
|
56
|
-
# # extracted_image = page.body.match(/src="\/images\/blog\/2006\/.*\.jpg/).to_s.sub("src=\"/images/blog/2006/", '')
|
57
|
-
# #
|
58
|
-
# # if extracted_image
|
59
|
-
# #
|
60
|
-
# # # find the corresponding illustration
|
61
|
-
# # @illustration = Illustration.find_by_image(File.basename("/Users/swamiatma/Documents/railsapps/aya/public/images/blog/2006/#{extracted_image}"))
|
62
|
-
# #
|
63
|
-
# # if @illustration
|
64
|
-
# # # change the path of the image
|
65
|
-
# # page.body = page.body.sub("/images/blog/2006/", "/system/images/illustration/#{@illustration.id}/large_")
|
66
|
-
# # # save the page with new path
|
67
|
-
# # page.save
|
68
|
-
# #
|
69
|
-
# # count += 1
|
70
|
-
# # extracted_image = nil
|
71
|
-
# # end
|
72
|
-
# #
|
73
|
-
# # end
|
74
|
-
#
|
75
|
-
# end
|
76
|
-
|
77
|
-
# # take a blog post as an example
|
78
|
-
# @page = Page.find(9)
|
79
10
|
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
#
|
85
|
-
# Dir["/Users/swamiatma/Documents/railsapps/aya/public/images/photos/*.*"].each do |file|
|
86
|
-
#
|
87
|
-
# illustration = Illustration.new
|
88
|
-
# illustration.image = File.open(file)
|
89
|
-
# illustration.name = "photos-#{File.basename(file)}"
|
90
|
-
# illustration.save
|
91
|
-
#
|
92
|
-
# count += 1
|
93
|
-
#
|
94
|
-
# end
|
95
|
-
#
|
96
|
-
#
|
97
|
-
# redirect_to illustrations_path, notice: "#{count} new illustrations should be uploaded"
|
98
|
-
|
99
|
-
|
11
|
+
def by_tag
|
12
|
+
@tag = Tag.where('name = ?', params[:id]).first
|
13
|
+
@posts = @tag.pages.order('published_at desc').paginate(:page => params[:page], :per_page => 20)
|
14
|
+
render :layout => 'blog'
|
100
15
|
end
|
101
|
-
|
16
|
+
|
102
17
|
end
|
data/app/models/tag.rb
CHANGED
@@ -18,4 +18,10 @@ class Tag < ActiveRecord::Base
|
|
18
18
|
name ? "#{id}-#{name.to_url}" : id
|
19
19
|
end
|
20
20
|
|
21
|
+
def self.with_taggings
|
22
|
+
taggings = Tagging.select("DISTINCT tag_id")
|
23
|
+
ids = taggings.map { |tagging| tagging.tag_id }
|
24
|
+
tags = Tag.order('name').find(ids)
|
25
|
+
end
|
26
|
+
|
21
27
|
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<% if administrator? %>
|
2
|
+
|
3
|
+
<% content_for :admin_context_menu do %>
|
4
|
+
|
5
|
+
<h2><%= t('admin_section') %></h2>
|
6
|
+
<ul class="list-group">
|
7
|
+
<li class="list-group-item"><%= link_to t('admin_panel'), pages_path %></li>
|
8
|
+
<%= content_tag :li, link_to( "#{t('activerecord.models.comments').capitalize} <span class='badge'>#{Comment.pending.count}</span>".html_safe, pending_comments_path ), class: 'list-group-item' if Comment.pending.count > 0 %>
|
9
|
+
</ul>
|
10
|
+
|
11
|
+
<% end -%>
|
12
|
+
|
13
|
+
<% end -%>
|
@@ -0,0 +1,10 @@
|
|
1
|
+
<% content_for :all_tags_list do %>
|
2
|
+
<h2>étiquettes</h2>
|
3
|
+
<% if Tag.count > 0 %>
|
4
|
+
<p class="all-tags-list">
|
5
|
+
<%= render :partial => 'blog/individual_tag', collection: Tag.with_taggings, as: :tag %>
|
6
|
+
</p>
|
7
|
+
<% else %>
|
8
|
+
<p>There are currently no tags to display</p>
|
9
|
+
<% end %>
|
10
|
+
<% end %>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= content_tag :span, link_to(tag.name, blog_by_tag_path(tag.name)), class: 'individual-tag' %>
|
@@ -0,0 +1,23 @@
|
|
1
|
+
<% content_for :meta_title, Setting.first.try(:company_name) %>
|
2
|
+
<% content_for :meta_description, "Blog posts with the '#{@tag.name}' tag." %>
|
3
|
+
<% content_for :canonical_link, link_to('', blog_path, rel: 'canonical') %>
|
4
|
+
|
5
|
+
<div class="panel panel-info">
|
6
|
+
<div class="panel-heading">
|
7
|
+
<h3 class="panel-title"><%= @tag.name %></h3>
|
8
|
+
</div>
|
9
|
+
<div class="panel-body">
|
10
|
+
Liste des articles avec cette étiquette
|
11
|
+
</div>
|
12
|
+
</div>
|
13
|
+
|
14
|
+
<% for post in @posts %>
|
15
|
+
<%= render '/pages/individual_blog_post_in_list', post: post %>
|
16
|
+
<% end %>
|
17
|
+
|
18
|
+
<%= will_paginate @posts %>
|
19
|
+
|
20
|
+
<%= render 'all_tags_list' %>
|
21
|
+
<%= render( 'admin_context_menu', page: @page) %>
|
22
|
+
<%# partial in tkh_menus gem or has to be added in host app %>
|
23
|
+
<%= render './shared/menus' %>
|
@@ -7,5 +7,9 @@
|
|
7
7
|
<%= render '/pages/individual_blog_post_in_list', post: post %>
|
8
8
|
<% end %>
|
9
9
|
|
10
|
-
|
11
10
|
<%= will_paginate @posts %>
|
11
|
+
|
12
|
+
<%= render 'all_tags_list' %>
|
13
|
+
<%= render( 'admin_context_menu', page: @page) %>
|
14
|
+
<%# partial in tkh_menus gem or has to be added in host app %>
|
15
|
+
<%= render './shared/menus' %>
|
@@ -1,9 +1,15 @@
|
|
1
|
-
<p class="meta-info">
|
2
|
-
<%= post.author.name %>
|
3
|
-
<%= post.published_at ? link_to(l(post.published_at, format: :tkh_default), post) : t('pages.not_published_yet') %>
|
4
|
-
<%= "#{t('activerecord.models.comments')}#{t('colon')} #{post.comments.showable.for_locale(I18n.locale.to_s).count}" %>
|
5
|
-
|
6
|
-
|
7
|
-
|
1
|
+
<p class="post-meta-info">
|
2
|
+
<%= content_tag :span, post.author.name, class: 'author-name' %>
|
3
|
+
<%= content_tag :span, (post.published_at ? link_to(l(post.published_at, format: :tkh_default), post) : t('pages.not_published_yet')), class: 'published-date' %>
|
4
|
+
<%= content_tag :span, "#{t('activerecord.models.comments')}#{t('colon')} #{post.comments.showable.for_locale(I18n.locale.to_s).count}", class: 'comment-count' %>
|
5
|
+
|
6
|
+
<% if post.tags.count > 0 %>
|
7
|
+
<span class="tag-list">
|
8
|
+
<%= render :partial => 'blog/individual_tag', collection: post.tags.alphabetically, as: :tag %>
|
9
|
+
</span>
|
10
|
+
<% end %>
|
11
|
+
|
12
|
+
<% if administrator? %>
|
13
|
+
<%= content_tag :span, (link_to t('edit'), edit_page_path(post), class: 'btn btn-xs btn-primary'), class: 'edit-button' %>
|
8
14
|
<% end %>
|
9
15
|
</p>
|
@@ -1,10 +1,12 @@
|
|
1
1
|
<%= simple_form_for @page, :html => { class: 'form-horizontal', role: 'form' } do |f| %>
|
2
2
|
<%= f.error_notification %>
|
3
3
|
|
4
|
-
|
5
|
-
|
4
|
+
<%= f.input :title,
|
5
|
+
label: t('activerecord.attributes.pages.title'),
|
6
|
+
hint: t('pages.hint.title'),
|
7
|
+
input_html: { size: 45 } %>
|
6
8
|
<%= f.input :for_blog, label: t('activerecord.attributes.pages.for_the_blog') %>
|
7
|
-
<%= f.input :tag_list, hint: 'space separated', :wrapper_html => { :id => 'page-tag-list' } %>
|
9
|
+
<%= f.input :tag_list, hint: 'space separated', :wrapper_html => { :id => 'page-tag-list' }, input_html: { size: 45 } %>
|
8
10
|
<%= f.input :short_title, label: t('activerecord.attributes.pages.short_title'), hint: t('pages.hint.short_title'), :wrapper_html => { :id => 'page-short-title' } %>
|
9
11
|
<%= f.input :parent_page_title,
|
10
12
|
as: :string,
|
@@ -15,7 +17,7 @@
|
|
15
17
|
:data => { provide: 'typeahead',
|
16
18
|
source: Page.not_for_blog.by_title.map(&:title).to_json }
|
17
19
|
} %>
|
18
|
-
<%= f.input :description, label: t('activerecord.attributes.pages.description'), :input_html => { :rows
|
20
|
+
<%= f.input :description, label: t('activerecord.attributes.pages.description'), :input_html => { cols: 45, rows: 3 } %>
|
19
21
|
<%= f.input :body, label: t('activerecord.attributes.pages.body'), :input_html => { :rows => 35, :class => 'ckeditor' } %>
|
20
22
|
|
21
23
|
<% if controller.action_name == 'edit' # the current_user is the page creator in create method %>
|
@@ -24,14 +26,13 @@
|
|
24
26
|
:wrapper_html => { :id => 'author-name' },
|
25
27
|
label: "author name",
|
26
28
|
:input_html => {
|
29
|
+
size: 45,
|
27
30
|
:autocomplete => 'off',
|
28
31
|
:data => { source: User.administrators.alphabetically.map(&:formal_name).to_json }
|
29
32
|
} %>
|
30
33
|
<% end -%>
|
31
|
-
</div>
|
32
34
|
|
33
|
-
|
35
|
+
<br />
|
34
36
|
<%= f.button :submit, :class => 'btn btn-primary' %>
|
35
|
-
</div>
|
36
37
|
|
37
38
|
<% end %>
|
@@ -13,9 +13,11 @@
|
|
13
13
|
<%= render '/pages/blog_post_meta', post: @page %>
|
14
14
|
<%= raw tkhed(@page.body) %>
|
15
15
|
<%= render 'comment_section' if Setting.first.enable_comments_in_blog? %>
|
16
|
+
<%= render 'blog/all_tags_list' %>
|
16
17
|
|
17
18
|
<% end -%>
|
18
19
|
|
19
20
|
<%= render( 'admin_context_menu', page: @page) %>
|
20
21
|
<%# partial in tkh_menus gem or has to be added in host app %>
|
21
22
|
<%= render './shared/menus' %>
|
23
|
+
|
data/config/routes.rb
CHANGED
@@ -6,13 +6,13 @@ Rails.application.routes.draw do
|
|
6
6
|
post :unpublish
|
7
7
|
post :toggle_for_blog
|
8
8
|
end
|
9
|
-
collection do
|
9
|
+
collection do
|
10
10
|
post :sort
|
11
11
|
end
|
12
12
|
end
|
13
|
-
|
13
|
+
|
14
14
|
resources :contacts
|
15
|
-
|
15
|
+
|
16
16
|
resources :comments do
|
17
17
|
collection do
|
18
18
|
get :pending
|
@@ -26,7 +26,7 @@ Rails.application.routes.draw do
|
|
26
26
|
end
|
27
27
|
end
|
28
28
|
get 'blog' => 'blog#index', as: :blog
|
29
|
-
get '
|
30
|
-
|
29
|
+
get 'blog_by_tag/:id', :to => 'blog#by_tag', :as => 'blog_by_tag'
|
30
|
+
|
31
31
|
end
|
32
|
-
end
|
32
|
+
end
|
@@ -3,11 +3,11 @@
|
|
3
3
|
<head>
|
4
4
|
<title>
|
5
5
|
<% if defined?(SETTINGS) && SETTINGS['site_name'] %>
|
6
|
-
<%= @meta_title ? "#{@meta_title} | #{SETTINGS['site_name']}" : SETTINGS['site_name'] %>
|
6
|
+
<%= @meta_title ? "#{@meta_title} | #{SETTINGS['site_name']}" : SETTINGS['site_name'] %>
|
7
7
|
<% else %>
|
8
8
|
<%= @meta_title ? @meta_tile : 'A web site powered by tkh_cms' %>
|
9
9
|
<% end -%>
|
10
|
-
- The blog</title>
|
10
|
+
- The blog</title>
|
11
11
|
<meta name="description" content="<%= @meta_description -%>">
|
12
12
|
<%= stylesheet_link_tag "application", :media => "all" %>
|
13
13
|
<%= favicon_link_tag '/favicon.ico' %>
|
@@ -16,23 +16,23 @@
|
|
16
16
|
<body>
|
17
17
|
|
18
18
|
<div id="content">
|
19
|
-
|
20
|
-
<article>
|
19
|
+
|
20
|
+
<article>
|
21
21
|
<% flash.each do |name, msg| %>
|
22
22
|
<%= content_tag :div, msg, :id => "flash_#{name}" %>
|
23
23
|
<% end %>
|
24
|
-
|
24
|
+
|
25
25
|
<h1>The blog</h1>
|
26
|
-
|
26
|
+
|
27
27
|
<%= yield %>
|
28
28
|
</article>
|
29
|
-
|
29
|
+
|
30
30
|
<aside>
|
31
31
|
<%# = render 'shared/sidebar' %>
|
32
32
|
</aside>
|
33
|
-
|
33
|
+
|
34
34
|
</div>
|
35
|
-
|
35
|
+
|
36
36
|
<%= javascript_include_tag "application" %>
|
37
37
|
</body>
|
38
38
|
</html>
|
data/lib/tkh_content/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tkh_content
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Swami Atma
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-03-
|
11
|
+
date: 2014-03-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -160,6 +160,10 @@ files:
|
|
160
160
|
- app/models/page.rb
|
161
161
|
- app/models/tag.rb
|
162
162
|
- app/models/tagging.rb
|
163
|
+
- app/views/blog/_admin_context_menu.html.erb
|
164
|
+
- app/views/blog/_all_tags_list.html.erb
|
165
|
+
- app/views/blog/_individual_tag.html.erb
|
166
|
+
- app/views/blog/by_tag.html.erb
|
163
167
|
- app/views/blog/index.atom.builder
|
164
168
|
- app/views/blog/index.html.erb
|
165
169
|
- app/views/comments/_form.html.erb
|