drg_blog_news_forum 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +4 -16
- data/app/assets/stylesheets/drg_blog_news_forum.css +3 -6
- data/app/controllers/drgcms_controls/dc_news_dc_reply_control.rb +50 -0
- data/app/forms/cms_menu.yml +13 -1
- data/app/forms/dc_reply.yml +9 -6
- data/app/helpers/dc_news_renderer.rb +75 -0
- data/app/models/dc_news.rb +2 -0
- data/app/models/dc_reply.rb +3 -2
- data/app/views/dc_blog/_blogers.html.erb +3 -0
- data/app/views/dc_blog/_entry.html.erb +2 -1
- data/app/views/dc_forum/_forums.html.erb +2 -2
- data/app/views/dc_news/_entries.html.erb +13 -0
- data/app/views/dc_news/_entry.html.erb +21 -0
- data/app/views/dc_news/_news.html.erb +24 -0
- data/config/locales/dc_forum_en.yml +2 -0
- data/config/locales/dc_forum_sl.yml +2 -0
- data/lib/drg_blog_news_forum/version.rb +1 -1
- metadata +9 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d4837fd6c77dad9f6f476277d07d9ed7cbebaa9a
|
4
|
+
data.tar.gz: aaa48e13bb70f838d7a2ffdc2a8fb61455e84564
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fe493dfb684ef435a6b428fd433655e960543c00af1e938d724e8fd0756d023b47b4a734cbaf23d65880002b2bb2f1b292fc8ec8988c2248d90f4da6644c3cdc
|
7
|
+
data.tar.gz: 11c27a3adc9b8a012837ec3f5ce9fb419e59152eb25d8b15a56ce17e51f8e3db66465371e6f3230a7eeef4640fe735ed0ad40648c6da3d71ee1e89608e7f6744
|
data/README.md
CHANGED
@@ -1,29 +1,17 @@
|
|
1
1
|
# DrgBlogNewsForum
|
2
2
|
|
3
|
-
DRG CMS DrgBlogNewsForum plugin implements basic funcionality for enabling blog, news or forum on
|
3
|
+
DRG CMS DrgBlogNewsForum plugin implements basic funcionality for enabling blog, news or forum on DRG CMS enabled web site.
|
4
4
|
|
5
5
|
Configuration
|
6
6
|
----------------
|
7
7
|
|
8
|
-
Add this line to your
|
8
|
+
Add this line to your Gemfile:
|
9
9
|
```ruby
|
10
10
|
gem 'drg_blog_news_forum'
|
11
11
|
```
|
12
12
|
|
13
|
-
Usage:
|
14
|
-
|
15
|
-
fields:
|
16
|
-
10:
|
17
|
-
name: body
|
18
|
-
type: html_field
|
19
|
-
options: "height: 500, width: 550, toolbar: 'basic'"
|
20
|
-
|
21
|
-
20:
|
22
|
-
name: picture
|
23
|
-
type: file_select
|
24
|
-
html:
|
25
|
-
size: 50
|
26
|
-
```
|
13
|
+
Usage: Add this line to design.
|
14
|
+
div id="dc-blog"><%= dc_render(:dc_blog) %></div>
|
27
15
|
|
28
16
|
Optional configuration in Site document:
|
29
17
|
```yaml
|
@@ -142,11 +142,10 @@ color: #aaa;
|
|
142
142
|
.blog-body {
|
143
143
|
}
|
144
144
|
.blog-replies {
|
145
|
-
margin: 5px;
|
146
145
|
}
|
147
146
|
.reply-top-even {
|
148
147
|
padding:5px;
|
149
|
-
background-color: #
|
148
|
+
background-color: #fff;
|
150
149
|
}
|
151
150
|
.reply-top-odd {
|
152
151
|
padding:5px;
|
@@ -161,10 +160,8 @@ font-weight: bold;
|
|
161
160
|
}
|
162
161
|
|
163
162
|
.social-sites {
|
164
|
-
margin-top:
|
165
|
-
margin-bottom:
|
163
|
+
margin-top: 30px;
|
164
|
+
margin-bottom: 40px;
|
166
165
|
padding-top: 5px;
|
167
166
|
padding-bottom: 5px;
|
168
|
-
border-top: 1px solid #888;
|
169
|
-
border-bottom: 1px solid #888;
|
170
167
|
}
|
@@ -0,0 +1,50 @@
|
|
1
|
+
#encoding: utf-8
|
2
|
+
#--
|
3
|
+
# Copyright (c) 2014+ Damjan Rems
|
4
|
+
#
|
5
|
+
# Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
# a copy of this software and associated documentation files (the
|
7
|
+
# "Software"), to deal in the Software without restriction, including
|
8
|
+
# without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
# distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
# permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
# the following conditions:
|
12
|
+
#
|
13
|
+
# The above copyright notice and this permission notice shall be
|
14
|
+
# included in all copies or substantial portions of the Software.
|
15
|
+
#
|
16
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
23
|
+
#++
|
24
|
+
|
25
|
+
######################################################################
|
26
|
+
# DrgcmsControls for DcBlog.DcReply form
|
27
|
+
######################################################################
|
28
|
+
module DrgcmsControls::DcNewsDcReplyControl
|
29
|
+
|
30
|
+
######################################################################
|
31
|
+
# Called when new empty record is created
|
32
|
+
######################################################################
|
33
|
+
def dc_new_record()
|
34
|
+
# fill with quote when reply_to is present
|
35
|
+
if params[:reply_to]
|
36
|
+
replyto = @record._parent.dc_replies.find(params[:reply_to])
|
37
|
+
@record.subject = "Re: #{replyto.subject}"
|
38
|
+
@record.body = "<div class='dc-forum-quote'>#{replyto.body}</div><br>"
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
######################################################################
|
43
|
+
# Called before save. Reloads browser.
|
44
|
+
######################################################################
|
45
|
+
def dc_before_save()
|
46
|
+
@record.created_by_name = session[:user_name]
|
47
|
+
params[:return_to] = 'parent.reload'
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
data/app/forms/cms_menu.yml
CHANGED
@@ -27,7 +27,19 @@ menu:
|
|
27
27
|
10:
|
28
28
|
caption: helpers.label.dc_forum.tabletitle
|
29
29
|
controller: cmsedit
|
30
|
-
picture:
|
30
|
+
picture: forum.png
|
31
31
|
params:
|
32
32
|
table: dc_forum
|
33
|
+
20:
|
34
|
+
caption: helpers.label.dc_blog.tabletitle
|
35
|
+
controller: cmsedit
|
36
|
+
picture: blog.png
|
37
|
+
params:
|
38
|
+
table: dc_blog
|
39
|
+
30:
|
40
|
+
caption: helpers.label.dc_news.tabletitle
|
41
|
+
controller: cmsedit
|
42
|
+
picture: news.png
|
43
|
+
params:
|
44
|
+
table: dc_news
|
33
45
|
|
data/app/forms/dc_reply.yml
CHANGED
@@ -3,23 +3,26 @@
|
|
3
3
|
table: dc_reply
|
4
4
|
|
5
5
|
form:
|
6
|
-
height:
|
6
|
+
height: 750
|
7
7
|
labels_pos: top
|
8
8
|
actions:
|
9
9
|
1: save
|
10
10
|
|
11
11
|
fields:
|
12
12
|
10:
|
13
|
+
name: created_by_name
|
14
|
+
type: text_field
|
15
|
+
html:
|
16
|
+
size: 30
|
17
|
+
|
18
|
+
20:
|
13
19
|
name: subject
|
14
20
|
type: text_field
|
15
21
|
html:
|
16
22
|
size: 80
|
17
23
|
|
18
|
-
|
24
|
+
30:
|
19
25
|
name: body
|
20
26
|
type: html_field
|
21
|
-
options: "height: 420, toolbar: 'basic'"
|
27
|
+
options: "height: 420, toolbar: 'basic', allowedContent: false"
|
22
28
|
|
23
|
-
110:
|
24
|
-
name: created_by_name
|
25
|
-
type: hidden_field
|
@@ -0,0 +1,75 @@
|
|
1
|
+
#--
|
2
|
+
# Copyright (c) 2014+ Damjan Rems
|
3
|
+
#
|
4
|
+
# Permission is hereby granted, free of charge, to any person obtaining
|
5
|
+
# a copy of this software and associated documentation files (the
|
6
|
+
# "Software"), to deal in the Software without restriction, including
|
7
|
+
# without limitation the rights to use, copy, modify, merge, publish,
|
8
|
+
# distribute, sublicense, and/or sell copies of the Software, and to
|
9
|
+
# permit persons to whom the Software is furnished to do so, subject to
|
10
|
+
# the following conditions:
|
11
|
+
#
|
12
|
+
# The above copyright notice and this permission notice shall be
|
13
|
+
# included in all copies or substantial portions of the Software.
|
14
|
+
#
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
16
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
17
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
18
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
19
|
+
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
20
|
+
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
21
|
+
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
22
|
+
#++
|
23
|
+
|
24
|
+
########################################################################
|
25
|
+
#
|
26
|
+
########################################################################
|
27
|
+
class DcNewsRenderer < DcRenderer
|
28
|
+
include DcApplicationHelper
|
29
|
+
|
30
|
+
########################################################################
|
31
|
+
# Show one blog entry
|
32
|
+
########################################################################
|
33
|
+
def show_entry
|
34
|
+
# blog = @parent.params[:blog_id] ? DcNews.find(@parent.params[:blog_id]) : DcNews.last
|
35
|
+
entry = DcNews.find_by(created_by_name: @parent.params[:name], link: @parent.params[:link])
|
36
|
+
return t('dc_blog.entry_not_found') if entry.nil?
|
37
|
+
|
38
|
+
replies = entry.dc_replies.where(active: true).order(created_at: 1).
|
39
|
+
page(@parent.params[:page]).per(5)
|
40
|
+
@parent.render partial: 'dc_news/entry', formats: [:html],
|
41
|
+
locals: { entry: entry, replies: replies, opts: @opts }
|
42
|
+
end
|
43
|
+
|
44
|
+
########################################################################
|
45
|
+
# List all blogs from one bloger
|
46
|
+
########################################################################
|
47
|
+
def list_all
|
48
|
+
entries = DcNews.only(:created_by_name, :link, :subject, :created_at)
|
49
|
+
.where(created_by_name: @parent.params[:name]).order_by(created_at: -1)
|
50
|
+
.page(@parent.params[:page]).per(10)
|
51
|
+
@parent.render partial: 'dc_news/entries', formats: [:html], locals: { entries: entries }
|
52
|
+
end
|
53
|
+
|
54
|
+
########################################################################
|
55
|
+
# List all blogers
|
56
|
+
########################################################################
|
57
|
+
def list_blogers
|
58
|
+
blogers = DcNews.all.distinct(:created_by_name)
|
59
|
+
@parent.render partial: 'dc_news/blogers', formats: [:html], locals: { blogers: blogers }
|
60
|
+
end
|
61
|
+
|
62
|
+
########################################################################
|
63
|
+
# Default method will dispatch to proper method.
|
64
|
+
########################################################################
|
65
|
+
def default
|
66
|
+
if @parent.params[:name].nil?
|
67
|
+
list_blogers
|
68
|
+
elsif @parent.params[:link].nil? or @parent.params[:link] == 'all'
|
69
|
+
list_all
|
70
|
+
else
|
71
|
+
show_entry
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
end
|
data/app/models/dc_news.rb
CHANGED
data/app/models/dc_reply.rb
CHANGED
@@ -34,6 +34,7 @@ class DcReply
|
|
34
34
|
|
35
35
|
embedded_in :replies, polymorphic: true
|
36
36
|
|
37
|
-
validates_length_of :subject,
|
38
|
-
validates_length_of :body,
|
37
|
+
validates_length_of :subject, minimum: 4
|
38
|
+
validates_length_of :body, minimum: 10
|
39
|
+
validates_length_of :created_by_name, minimum: 5
|
39
40
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
|
2
|
-
<% if
|
2
|
+
<% if session[:edit_mode] > 1 %>
|
3
3
|
<%= dc_link_for_create(controller: 'cmsedit', table: 'dc_blog', title: 'dc_blog.new_entry' ) %>
|
4
4
|
<br><br>
|
5
5
|
<%= dc_link_for_edit(controller: 'cmsedit', table: 'dc_blog', title: 'dc_blog.edit_entry', id: entry.id ) %>
|
@@ -12,6 +12,7 @@
|
|
12
12
|
<div class="social-sites"><%= social_sites %></div>
|
13
13
|
|
14
14
|
<div class="blog-replies">
|
15
|
+
<h2><%= t('dc_blog.comments') %></h2>
|
15
16
|
<%= render partial: 'dc_replay/reply', formats: [:html],
|
16
17
|
locals: { replies: replies, parent_id: entry.id, parent_document: 'dc_blog' } %>
|
17
18
|
</div>
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<%= if
|
1
|
+
<%= if session[:edit_mode] > 1
|
2
2
|
dc_link_for_create(controller: 'cmsedit', table: 'dc_forum', title: 'dc_forum.add_new_forum' )
|
3
3
|
end %>
|
4
4
|
|
@@ -9,7 +9,7 @@
|
|
9
9
|
|
10
10
|
<% for forum in forums %>
|
11
11
|
<div class="topic-<%= cycle("odd", "even") %>">
|
12
|
-
<%= if
|
12
|
+
<%= if session[:edit_mode] > 1 then
|
13
13
|
dc_link_for_edit(controller: 'cmsedit', table: 'dc_forum', id: forum._id, title: 'dc_forum.edit_forum' ); end %>
|
14
14
|
<div class="name">
|
15
15
|
<%= link_to(forum.name,{ path: params[:path], forum: forum.id} ) %>
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<div class="blog-title">
|
2
|
+
<h1><%= params[:name] %>, <%= t('dc_blog.my_blog') %></h1>
|
3
|
+
</div>
|
4
|
+
<% for entry in entries %>
|
5
|
+
|
6
|
+
<div class="blog-entry">
|
7
|
+
|
8
|
+
<%= link_to( entry.subject,
|
9
|
+
{ path: 'blog', name: params[:name], link: entry.link } )%>
|
10
|
+
|
11
|
+
<div class="blog-date"><h3><%= dc_pretty_date(entry.created_at) %></h3></div>
|
12
|
+
</div>
|
13
|
+
<% end %>
|
@@ -0,0 +1,21 @@
|
|
1
|
+
|
2
|
+
<% if session[:edit_mode] > 1 %>
|
3
|
+
<%= dc_link_for_create(controller: 'cmsedit', table: 'dc_news', title: 'dc_news.new_entry' ) %>
|
4
|
+
<br><br>
|
5
|
+
<%= dc_link_for_edit(controller: 'cmsedit', table: 'dc_news', title: 'dc_news.edit_entry', id: entry.id ) %>
|
6
|
+
<% end %>
|
7
|
+
|
8
|
+
<div class="news-subject"><h1><%= entry.subject %></h1></div>
|
9
|
+
<div class="news-date"><h3><%= t('dc_blog.author') + ' ' + dc_pretty_date(entry.created_at) %></h3></div>
|
10
|
+
<div class="news-date"><h3><%= t('dc_blog.published') + ' ' + dc_pretty_date(entry.created_by_name) %></h3></div>
|
11
|
+
|
12
|
+
<div class="news-body"><%= entry.body.html_safe %></div>
|
13
|
+
<div class="social-sites"><%= social_sites %></div>
|
14
|
+
|
15
|
+
<div class="news-replies">
|
16
|
+
<h2><%= t('dc_blog.comments') %></h2>
|
17
|
+
<%= render partial: 'dc_replay/reply', formats: [:html],
|
18
|
+
locals: { replies: replies, parent_id: entry.id, parent_document: 'dc_news' } %>
|
19
|
+
</div>
|
20
|
+
|
21
|
+
<iframe id="iframe_edit" name="iframe_edit" scrolling="no"></iframe>
|
@@ -0,0 +1,24 @@
|
|
1
|
+
<div class="news-title">
|
2
|
+
<%= title %>
|
3
|
+
</div>
|
4
|
+
|
5
|
+
<%= if session[:edit_mode] > 1
|
6
|
+
dc_link_for_create(controller: 'cmsedit', table: 'dc_news', title: 'dc_blog.new_entry' )
|
7
|
+
end %>
|
8
|
+
|
9
|
+
<% if news %>
|
10
|
+
<div class="news-date"><%= dc_pretty_date(news.created_at) %></div>
|
11
|
+
<div class="news-subject"><%= news.subject %></div>
|
12
|
+
<div style="clear:both;"></div>
|
13
|
+
|
14
|
+
<div class="news-body"><%= news.body%></div>
|
15
|
+
|
16
|
+
<div class="news-replies">
|
17
|
+
<%= render partial: 'dc_reply/reply', formats: [:html],
|
18
|
+
locals: { replies: replies, parent_id: news.id } %>
|
19
|
+
</div>
|
20
|
+
|
21
|
+
<iframe id="iframe_edit" name="iframe_edit" scrolling="no"></iframe>
|
22
|
+
<% else %>
|
23
|
+
<br><br><br>Sorry no news. Yet ;-)
|
24
|
+
<% end %>
|
@@ -24,6 +24,7 @@
|
|
24
24
|
# English (en) localization for dc_forum
|
25
25
|
en:
|
26
26
|
dc_forum:
|
27
|
+
menu_caption: Forums, news and blogs
|
27
28
|
forums_list: All forums
|
28
29
|
new_reply: New reply
|
29
30
|
new_topic: New topic
|
@@ -41,5 +42,6 @@ en:
|
|
41
42
|
edit_entry: Edit blog entry
|
42
43
|
entry_not_found: Blog entry not found
|
43
44
|
my_blog: my blog
|
45
|
+
comments: Comments
|
44
46
|
|
45
47
|
|
@@ -24,6 +24,7 @@
|
|
24
24
|
# Slovenian (sl) localization for dc_forum
|
25
25
|
sl:
|
26
26
|
dc_forum:
|
27
|
+
menu_caption: Forumi, novice and blogi
|
27
28
|
forums_list: Vsi forumi
|
28
29
|
new_reply: Nov odgovor
|
29
30
|
new_topic: Nova tema
|
@@ -41,6 +42,7 @@ sl:
|
|
41
42
|
edit_entry: Uredi vpis v blog
|
42
43
|
entry_not_found: Vpis v blog ne obstaja
|
43
44
|
my_blog: moj blog
|
45
|
+
comments: Komentarji
|
44
46
|
|
45
47
|
|
46
48
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: drg_blog_news_forum
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Damjan Rems
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-04-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -38,8 +38,8 @@ dependencies:
|
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
|
-
description:
|
42
|
-
news or forum
|
41
|
+
description: 'DRG CMS: drg_blog_news_forum plugin implements basic funcionality for
|
42
|
+
enabling blog, news or forum.'
|
43
43
|
email:
|
44
44
|
- damjan.rems@gmail.com
|
45
45
|
executables: []
|
@@ -53,6 +53,7 @@ files:
|
|
53
53
|
- app/controllers/drgcms_controls/dc_blog_dc_reply_control.rb
|
54
54
|
- app/controllers/drgcms_controls/dc_forum_topic_control.rb
|
55
55
|
- app/controllers/drgcms_controls/dc_forum_topic_dc_reply_control.rb
|
56
|
+
- app/controllers/drgcms_controls/dc_news_dc_reply_control.rb
|
56
57
|
- app/forms/cms_menu.yml
|
57
58
|
- app/forms/dc_blog.yml
|
58
59
|
- app/forms/dc_forum.yml
|
@@ -63,6 +64,7 @@ files:
|
|
63
64
|
- app/helpers/dc_blog_renderer.rb
|
64
65
|
- app/helpers/dc_forum_helper.rb
|
65
66
|
- app/helpers/dc_forum_renderer.rb
|
67
|
+
- app/helpers/dc_news_renderer.rb
|
66
68
|
- app/models/dc_blog.rb
|
67
69
|
- app/models/dc_forum.rb
|
68
70
|
- app/models/dc_forum_policy_rule.rb
|
@@ -77,6 +79,9 @@ files:
|
|
77
79
|
- app/views/dc_forum/_forums.html.erb
|
78
80
|
- app/views/dc_forum/_topic.html.erb
|
79
81
|
- app/views/dc_forum/_topics.html.erb
|
82
|
+
- app/views/dc_news/_entries.html.erb
|
83
|
+
- app/views/dc_news/_entry.html.erb
|
84
|
+
- app/views/dc_news/_news.html.erb
|
80
85
|
- app/views/dc_replay/_reply.html.erb
|
81
86
|
- config/locales/dc_forum_en.yml
|
82
87
|
- config/locales/dc_forum_sl.yml
|