blog_basic 0.1.6
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.
- data/Gemfile +24 -0
- data/MIT-LICENSE +20 -0
- data/Manifest +0 -0
- data/README.md +186 -0
- data/Rakefile +47 -0
- data/app/admin/blog_basic_blog_posts.rb +9 -0
- data/app/admin/dashboards.rb +38 -0
- data/app/assets/images/rails.png +0 -0
- data/app/assets/javascripts/active_admin.js +1 -0
- data/app/assets/javascripts/application.js +9 -0
- data/app/assets/stylesheets/active_admin.css.scss +6 -0
- data/app/assets/stylesheets/application.css +7 -0
- data/app/controllers/application_controller.rb +3 -0
- data/app/controllers/blog_basic/app_controller.rb +27 -0
- data/app/controllers/blog_basic/application_controller.rb +4 -0
- data/app/controllers/blog_basic/blog_comments_controller.rb +69 -0
- data/app/controllers/blog_basic/blog_posts_controller.rb +149 -0
- data/app/controllers/blog_basic/sessions_controller.rb +32 -0
- data/app/controllers/blog_basic/tags_controller.rb +11 -0
- data/app/helpers/application_helper.rb +2 -0
- data/app/helpers/blog_basic/application_helper.rb +21 -0
- data/app/helpers/blog_basic/blog_posts_helper.rb +17 -0
- data/app/helpers/blog_basic/shared_helper.rb +36 -0
- data/app/helpers/blog_basic/tags_helper.rb +5 -0
- data/app/models/admin_user.rb +9 -0
- data/app/models/blog_basic/blog_comment.rb +78 -0
- data/app/models/blog_basic/blog_content.rb +4 -0
- data/app/models/blog_basic/blog_image.rb +23 -0
- data/app/models/blog_basic/blog_post.rb +104 -0
- data/app/models/blog_basic/session.rb +5 -0
- data/app/models/blog_basic/user.rb +22 -0
- data/app/views/blog_basic/blog_comments/_new_blog_comment.html.erb +43 -0
- data/app/views/blog_basic/blog_posts/_admin_links.html.erb +9 -0
- data/app/views/blog_basic/blog_posts/_blog_post.html.erb +62 -0
- data/app/views/blog_basic/blog_posts/_comment.html.erb +18 -0
- data/app/views/blog_basic/blog_posts/_comments.html.erb +6 -0
- data/app/views/blog_basic/blog_posts/_form.html.erb +133 -0
- data/app/views/blog_basic/blog_posts/_image.html.erb +20 -0
- data/app/views/blog_basic/blog_posts/drafts.html.erb +21 -0
- data/app/views/blog_basic/blog_posts/edit.html.erb +6 -0
- data/app/views/blog_basic/blog_posts/index.atom.builder +12 -0
- data/app/views/blog_basic/blog_posts/index.html.erb +31 -0
- data/app/views/blog_basic/blog_posts/new.html.erb +6 -0
- data/app/views/blog_basic/blog_posts/show.html.erb +8 -0
- data/app/views/blog_basic/shared/_footer.html.erb +15 -0
- data/app/views/blog_basic/shared/_index_top.html.erb +12 -0
- data/app/views/blog_basic/shared/_topbar.html.erb +24 -0
- data/app/views/layouts/application.html.erb +14 -0
- data/blog_basic.gemspec +57 -0
- data/config/routes.rb +21 -0
- data/db/migrate/1_blog_tables.rb +86 -0
- data/init.rb +9 -0
- data/lib/akismetor.rb +77 -0
- data/lib/blog_basic/active_admin.rb +103 -0
- data/lib/blog_basic/blog_basic_model_helper.rb +85 -0
- data/lib/blog_basic/blog_conf.rb +36 -0
- data/lib/blog_basic/engine.rb +13 -0
- data/lib/blog_basic/engine.rb.backup +80 -0
- data/lib/blog_basic.rb +16 -0
- data/lib/generators/blog_basic/create_assets/blog_assets_generator.rb +49 -0
- data/lib/generators/blog_basic/create_assets/templates/blog_comments_migration.rb +23 -0
- data/lib/generators/blog_basic/create_assets/templates/blog_images_migration.rb +19 -0
- data/lib/generators/blog_basic/create_assets/templates/blog_posts_migration.rb +17 -0
- data/lib/generators/blog_basic/create_assets/templates/config/blog_basic.yml +52 -0
- data/lib/generators/blog_basic/create_assets/templates/syntax/active4d.css +114 -0
- data/lib/generators/blog_basic/create_assets/templates/syntax/all_hallows_eve.css +72 -0
- data/lib/generators/blog_basic/create_assets/templates/syntax/amy.css +147 -0
- data/lib/generators/blog_basic/create_assets/templates/syntax/blackboard.css +88 -0
- data/lib/generators/blog_basic/create_assets/templates/syntax/brilliance_black.css +605 -0
- data/lib/generators/blog_basic/create_assets/templates/syntax/brilliance_dull.css +599 -0
- data/lib/generators/blog_basic/create_assets/templates/syntax/cobalt.css +149 -0
- data/lib/generators/blog_basic/create_assets/templates/syntax/dawn.css +121 -0
- data/lib/generators/blog_basic/create_assets/templates/syntax/eiffel.css +121 -0
- data/lib/generators/blog_basic/create_assets/templates/syntax/espresso_libre.css +109 -0
- data/lib/generators/blog_basic/create_assets/templates/syntax/idle.css +62 -0
- data/lib/generators/blog_basic/create_assets/templates/syntax/iplastic.css +80 -0
- data/lib/generators/blog_basic/create_assets/templates/syntax/lazy.css +73 -0
- data/lib/generators/blog_basic/create_assets/templates/syntax/mac_classic.css +123 -0
- data/lib/generators/blog_basic/create_assets/templates/syntax/magicwb_amiga.css +104 -0
- data/lib/generators/blog_basic/create_assets/templates/syntax/pastels_on_dark.css +188 -0
- data/lib/generators/blog_basic/create_assets/templates/syntax/slush_poppies.css +85 -0
- data/lib/generators/blog_basic/create_assets/templates/syntax/spacecadet.css +51 -0
- data/lib/generators/blog_basic/create_assets/templates/syntax/sunburst.css +180 -0
- data/lib/generators/blog_basic/create_assets/templates/syntax/twilight.css +137 -0
- data/lib/generators/blog_basic/create_assets/templates/syntax/zenburnesque.css +91 -0
- data/lib/generators/blog_basic/install/install_generator.rb +53 -0
- data/lib/generators/blog_basic/install/templates/active_admin.rb +103 -0
- data/lib/generators/blog_basic/install/templates/blog_basic.yml +52 -0
- data/lib/generators/blog_basic/install/templates/blog_kit.css +75 -0
- data/lib/generators/blog_basic/install/templates/devise.en.yml +58 -0
- data/lib/generators/blog_basic/install/templates/devise.rb +209 -0
- data/lib/generators/blog_basic/install/templates/migrations/1_blog_tables.rb +86 -0
- data/lib/generators/blog_basic/install/templates/migrations/20111213104240_devise_create_admin_users.rb +28 -0
- data/lib/generators/blog_basic/install/templates/migrations/20111213114257_create_admin_notes.rb +16 -0
- data/lib/generators/blog_basic/install/templates/migrations/20111213114258_move_admin_notes_to_comments.rb +25 -0
- data/lib/generators/blog_basic/install/templates/omniauth.rb.erb +10 -0
- data/lib/tasks/blog_basic_tasks.rake +0 -0
- data/lib/url_validator.rb +24 -0
- data/test/database.yml +4 -0
- data/test/fixtures/admin_users.yml +11 -0
- data/test/functional/blog_assets_generator_test.rb +35 -0
- data/test/functional/blog_comments_controller_test.rb +0 -0
- data/test/functional/blog_posts_controller_test.rb +84 -0
- data/test/performance/browsing_test.rb +12 -0
- data/test/schema.rb +61 -0
- data/test/test_helper.rb +13 -0
- data/test/unit/admin_user_test.rb +7 -0
- data/uninstall.rb +1 -0
- metadata +310 -0
data/Gemfile
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
source :rubygems
|
|
2
|
+
gemspec
|
|
3
|
+
|
|
4
|
+
gem 'json'
|
|
5
|
+
gem 'sass'
|
|
6
|
+
gem 'coffee-script'
|
|
7
|
+
gem 'uglifier'
|
|
8
|
+
gem 'jquery-rails'
|
|
9
|
+
|
|
10
|
+
gem 'acts-as-taggable-on'
|
|
11
|
+
gem 'sass-rails'
|
|
12
|
+
gem "meta_search", '>= 1.1.0.pre'
|
|
13
|
+
|
|
14
|
+
gem "bluecloth", "~> 2.2.0"
|
|
15
|
+
gem 'will_paginate'
|
|
16
|
+
gem "paperclip", "~> 2.3"
|
|
17
|
+
|
|
18
|
+
gem "omniauth", "~> 1.0.0"
|
|
19
|
+
gem "omniauth-openid", "~> 1.0.0"
|
|
20
|
+
gem "omniauth-github", "~> 1.0.0"
|
|
21
|
+
|
|
22
|
+
gem 'activeadmin'
|
|
23
|
+
gem 'sass-rails'
|
|
24
|
+
gem 'meta_search', '>= 1.1.0.pre'
|
data/MIT-LICENSE
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
Copyright (c) 2010 [name of plugin creator]
|
|
2
|
+
|
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
4
|
+
a copy of this software and associated documentation files (the
|
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
|
9
|
+
the following conditions:
|
|
10
|
+
|
|
11
|
+
The above copyright notice and this permission notice shall be
|
|
12
|
+
included in all copies or substantial portions of the Software.
|
|
13
|
+
|
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/Manifest
ADDED
|
File without changes
|
data/README.md
ADDED
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
blog_basic
|
|
2
|
+
=======
|
|
3
|
+
|
|
4
|
+
blog_basic is a fork of the rails plugin BlogKit (https://github.com/ryanstout/blog_kit)
|
|
5
|
+
|
|
6
|
+
While I really liked the idea if BlogKit it was unmaintained, lacked some essential features and had a few
|
|
7
|
+
security vurnabilities which has not been adressed yet.
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
blog_basic
|
|
11
|
+
========
|
|
12
|
+
|
|
13
|
+
BlogKitty is a rails plugin to add a blog to your application. The goal is to provide common blog
|
|
14
|
+
functionality that integrates into your existing app while keeping things simple.
|
|
15
|
+
|
|
16
|
+
BlogKitty has the following features.
|
|
17
|
+
|
|
18
|
+
+ Admin for Blog Articles
|
|
19
|
+
+ Search engine friendly urls
|
|
20
|
+
+ Uses existing user model
|
|
21
|
+
+ Comments via existing user model
|
|
22
|
+
+ Uses your existing layouts
|
|
23
|
+
+ Easily customizable css
|
|
24
|
+
+ Akismet (spam filtering) Support
|
|
25
|
+
+ Markdown (default) or just plain html parsing
|
|
26
|
+
+ Image and Gravatar support
|
|
27
|
+
+ Anonymous Comments (optional)
|
|
28
|
+
+ Atom Feeds
|
|
29
|
+
+ Tags
|
|
30
|
+
+ Image upload (via paperclip, or something that adds has_attached_file to models)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
Install for Rails3
|
|
34
|
+
==================
|
|
35
|
+
|
|
36
|
+
Add blog_basic to your Gemfile
|
|
37
|
+
|
|
38
|
+
gem 'blog_basic'
|
|
39
|
+
|
|
40
|
+
then run "bundle install" to make sure you are up to date. Install blog_basic my running the generator blog_basic:install
|
|
41
|
+
|
|
42
|
+
rails g blog_basic:install
|
|
43
|
+
|
|
44
|
+
and migrate your database
|
|
45
|
+
|
|
46
|
+
rake db:migrate
|
|
47
|
+
|
|
48
|
+
Now adjust config/routes.rb for your desired path and config/blog_basic.yml for the rest of the configuration
|
|
49
|
+
|
|
50
|
+
Assumptions
|
|
51
|
+
===========
|
|
52
|
+
|
|
53
|
+
BlogKit makes the following assumptions
|
|
54
|
+
|
|
55
|
+
+ flash messages displaying is handled via the layout
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
Setup
|
|
59
|
+
=====
|
|
60
|
+
|
|
61
|
+
BlogKit is designed to work with your existing user model, at the moment, it assumes this will be
|
|
62
|
+
called User. Your User class and application controller simply need to respond to some methods to
|
|
63
|
+
be able to use BlogKit. These methods, while not standardized are very common, and come with plugins
|
|
64
|
+
like Authlogic and restful_authentication.
|
|
65
|
+
|
|
66
|
+
ApplicationController should respond to:
|
|
67
|
+
#require_user
|
|
68
|
+
#current_user
|
|
69
|
+
#title - (optional passes in the pages title as the first argument)
|
|
70
|
+
|
|
71
|
+
User model should respond to:
|
|
72
|
+
#admin? - returns true if the user can edit posts and delete comments
|
|
73
|
+
#name - the users name
|
|
74
|
+
#blog_image_url (optional, the users photo, show next to comments/posts)
|
|
75
|
+
#email (options - for gravatar support)
|
|
76
|
+
|
|
77
|
+
Once you have everything setup, you can see and manage the blog at /blog_posts Make sure that you have
|
|
78
|
+
all of the requirements below met.
|
|
79
|
+
|
|
80
|
+
Rails 3 is supported via the rails3 branch, if you are using legacy routing, you may need to copy in routes
|
|
81
|
+
from config/routes.rb to your main routes.rb file.
|
|
82
|
+
|
|
83
|
+
To be able to use the delete links on posts, you will need to add the following to the top of your layout:
|
|
84
|
+
|
|
85
|
+
<%= csrf_meta_tag %>
|
|
86
|
+
|
|
87
|
+
Also be sure that you have the proper javascript handling code for link_to '', :method => destroy
|
|
88
|
+
|
|
89
|
+
Requirements
|
|
90
|
+
============
|
|
91
|
+
|
|
92
|
+
Rails 3.x
|
|
93
|
+
|
|
94
|
+
- Will_Paginate
|
|
95
|
+
|
|
96
|
+
Optional:
|
|
97
|
+
|
|
98
|
+
- Ultraviolet (and its deps, for code highlighting)
|
|
99
|
+
|
|
100
|
+
Install Oniguruma if 1.8.x
|
|
101
|
+
http://www.geocities.jp/kosako3/oniguruma/
|
|
102
|
+
|
|
103
|
+
source 'http://gems.github.com'
|
|
104
|
+
gem "spox-ultraviolet", :require => false
|
|
105
|
+
|
|
106
|
+
- BlueCloth 2 (for markdown)
|
|
107
|
+
|
|
108
|
+
gem 'bluecloth'
|
|
109
|
+
|
|
110
|
+
- Paperclip
|
|
111
|
+
|
|
112
|
+
gem 'paperclip', :git => 'http://github.com/thoughtbot/paperclip.git', :branch => 'rails3'
|
|
113
|
+
|
|
114
|
+
Customization
|
|
115
|
+
=============
|
|
116
|
+
|
|
117
|
+
Be sure to edit config/blog_kit.yml, many common settings can be changed there.
|
|
118
|
+
|
|
119
|
+
** View Customization **
|
|
120
|
+
|
|
121
|
+
BlogKit is built as a rails engine plugin (for rails 2.3.x, not the previous engines plugin). You can see
|
|
122
|
+
the models, views, and controllers in vendor/plugins/blog_kit/app/ You can change them by copying any of
|
|
123
|
+
them into your apps /app directory. Rails will look in /app before looking in vendor/plugins/blog_kit/app/
|
|
124
|
+
Once they are copied into /app, you can customize the appearance/behavior of the blog pages.
|
|
125
|
+
|
|
126
|
+
Troubleshooting
|
|
127
|
+
===============
|
|
128
|
+
|
|
129
|
+
Q. Creating a blog post does not work, it instead renders the index page.
|
|
130
|
+
A. Make sure you aren't using the old style default routes in rails (match '/:controller(/:action(/:id))')
|
|
131
|
+
If you are using default routes, then simply copy the following into your routes.rb file before the default route
|
|
132
|
+
|
|
133
|
+
resources :blog_posts do
|
|
134
|
+
resources :blog_comments
|
|
135
|
+
resources :blog_images
|
|
136
|
+
|
|
137
|
+
collection do
|
|
138
|
+
get :drafts
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
member do
|
|
142
|
+
get :tag
|
|
143
|
+
end
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
Tag List
|
|
147
|
+
========
|
|
148
|
+
|
|
149
|
+
By default, the layout does not display a list of all tags. This can be easily added to any layout in the
|
|
150
|
+
application by including this in the controller:
|
|
151
|
+
|
|
152
|
+
helper :blog
|
|
153
|
+
|
|
154
|
+
Then in the view:
|
|
155
|
+
|
|
156
|
+
<%= blog_tags_list %>
|
|
157
|
+
|
|
158
|
+
You can optionally pass in a limit on the number of tags to show.
|
|
159
|
+
|
|
160
|
+
Also keep in mind that you can specify a layout just for the blog kit pages.
|
|
161
|
+
|
|
162
|
+
Titles
|
|
163
|
+
======
|
|
164
|
+
|
|
165
|
+
You can have blog_kit set the page title, just create a method in application_helper like:
|
|
166
|
+
|
|
167
|
+
def title(ttl)
|
|
168
|
+
@page_title = ttl
|
|
169
|
+
end
|
|
170
|
+
|
|
171
|
+
If anyone knows of a better convention for this, let me know. This is what nifty_generators uses
|
|
172
|
+
|
|
173
|
+
Code Highlighting Example
|
|
174
|
+
=========================
|
|
175
|
+
|
|
176
|
+
To get code highlighted, place the following tag:
|
|
177
|
+
|
|
178
|
+
<code lang="ruby">
|
|
179
|
+
|
|
180
|
+
</code>
|
|
181
|
+
|
|
182
|
+
You can find a list of languages (syntaxes) under doc/SYNTAXES and a list of themes (colors) under
|
|
183
|
+
doc/THEMES
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
Copyright (c) 2010 Ryan Stout, released under the MIT license
|
data/Rakefile
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
require 'rake'
|
|
2
|
+
require "bundler/gem_tasks"
|
|
3
|
+
require 'rake/testtask'
|
|
4
|
+
#require 'rdoc/task'
|
|
5
|
+
#require 'spec'
|
|
6
|
+
#require 'spec/rake/spectask'
|
|
7
|
+
|
|
8
|
+
require 'rubygems'
|
|
9
|
+
require 'echoe'
|
|
10
|
+
|
|
11
|
+
Echoe.new('blog_basic', '0.1.6') do |p|
|
|
12
|
+
p.description = "Sets up a basic but functional blogging platform."
|
|
13
|
+
p.url = "http://bottiger.org/made/blog_basic"
|
|
14
|
+
p.author = "Arvid Boettiger"
|
|
15
|
+
p.email = "bottiger@gmail.com"
|
|
16
|
+
p.ignore_pattern = ["tmp/*", "script/*"]
|
|
17
|
+
p.runtime_dependencies = ['bluecloth ~>2.2.0', 'will_paginate', "paperclip >=2.3", "sass-rails", "meta_search ~>1.1.1", "acts-as-taggable-on ~>2.1.1", "omniauth ~>1.0.0", "omniauth-openid ~>1.0.0", "omniauth-github ~>1.0.0"]
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
Dir["#{File.dirname(__FILE__)}/tasks/*.rake"].sort.each { |ext| load ext }
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
#desc 'Test the blog_kit plugin.'
|
|
24
|
+
#Rake::TestTask.new(:test) do |t|
|
|
25
|
+
# t.libs << 'lib'
|
|
26
|
+
# t.libs << 'test'
|
|
27
|
+
# t.pattern = 'test/**/*_test.rb'
|
|
28
|
+
# t.verbose = true
|
|
29
|
+
#end
|
|
30
|
+
|
|
31
|
+
desc 'Generate documentation for the blog_basic plugin.'
|
|
32
|
+
RDoc::Task.new(:rdoc) do |rdoc|
|
|
33
|
+
rdoc.rdoc_dir = 'rdoc'
|
|
34
|
+
rdoc.title = 'BlogBasic'
|
|
35
|
+
rdoc.options << '--line-numbers' << '--inline-source'
|
|
36
|
+
rdoc.rdoc_files.include('README')
|
|
37
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
#desc 'Default: run specs.'
|
|
41
|
+
#task :default => :spec
|
|
42
|
+
|
|
43
|
+
#desc "Run the specs under spec/models"
|
|
44
|
+
#Spec::Rake::SpecTask.new do |t|
|
|
45
|
+
# t.spec_opts = ['--options', "spec/spec.opts"]
|
|
46
|
+
# t.spec_files = FileList['spec/*_spec.rb', 'spec/**/*_spec.rb']
|
|
47
|
+
#end
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
#ActiveAdmin::Dashboards.build do
|
|
2
|
+
|
|
3
|
+
# Define your dashboard sections here. Each block will be
|
|
4
|
+
# rendered on the dashboard in the context of the view. So just
|
|
5
|
+
# return the content which you would like to display.
|
|
6
|
+
|
|
7
|
+
# == Simple Dashboard Section
|
|
8
|
+
# Here is an example of a simple dashboard section
|
|
9
|
+
#
|
|
10
|
+
# section "Recent Posts" do
|
|
11
|
+
# ul do
|
|
12
|
+
# Post.recent(5).collect do |post|
|
|
13
|
+
# li link_to(post.title, admin_post_path(post))
|
|
14
|
+
# end
|
|
15
|
+
# end
|
|
16
|
+
# end
|
|
17
|
+
|
|
18
|
+
# == Render Partial Section
|
|
19
|
+
# The block is rendered within the context of the view, so you can
|
|
20
|
+
# easily render a partial rather than build content in ruby.
|
|
21
|
+
#
|
|
22
|
+
# section "Recent Posts" do
|
|
23
|
+
# div do
|
|
24
|
+
# render 'recent_posts' # => this will render /app/views/admin/dashboard/_recent_posts.html.erb
|
|
25
|
+
# end
|
|
26
|
+
# end
|
|
27
|
+
|
|
28
|
+
# == Section Ordering
|
|
29
|
+
# The dashboard sections are ordered by a given priority from top left to
|
|
30
|
+
# bottom right. The default priority is 10. By giving a section numerically lower
|
|
31
|
+
# priority it will be sorted higher. For example:
|
|
32
|
+
#
|
|
33
|
+
# section "Recent Posts", :priority => 10
|
|
34
|
+
# section "Recent User", :priority => 1
|
|
35
|
+
#
|
|
36
|
+
# Will render the "Recent Users" then the "Recent Posts" sections on the dashboard.
|
|
37
|
+
|
|
38
|
+
#end
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//= require active_admin/base
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// This is a manifest file that'll be compiled into including all the files listed below.
|
|
2
|
+
// Add new JavaScript/Coffee code in separate files in this directory and they'll automatically
|
|
3
|
+
// be included in the compiled file accessible from http://example.com/assets/application.js
|
|
4
|
+
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
|
|
5
|
+
// the compiled file.
|
|
6
|
+
//
|
|
7
|
+
//= require jquery
|
|
8
|
+
//= require jquery_ujs
|
|
9
|
+
//= require_tree .
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This is a manifest file that'll automatically include all the stylesheets available in this directory
|
|
3
|
+
* and any sub-directories. You're free to add application-wide styles to this file and they'll appear at
|
|
4
|
+
* the top of the compiled file, but it's generally better to create a new file per style scope.
|
|
5
|
+
*= require_self
|
|
6
|
+
*= require_tree .
|
|
7
|
+
*/
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
module BlogBasic
|
|
2
|
+
class AppController < ActionController::Base
|
|
3
|
+
protect_from_forgery
|
|
4
|
+
helper :all
|
|
5
|
+
|
|
6
|
+
def require_user
|
|
7
|
+
User.new
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def signed_in?
|
|
11
|
+
!session[:user_id].nil?
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def current_user
|
|
15
|
+
logger.info "Current user ID: " + session[:user_id].to_s
|
|
16
|
+
if signed_in?
|
|
17
|
+
@current_user ||= User.find(session[:user_id])
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# def current_user
|
|
22
|
+
# logger.info "(from app_controller.rb) Current user ID: " + session[:user_id].to_s
|
|
23
|
+
# return session[:user_id].nil? ? User.new : User.find(session[:user_id])
|
|
24
|
+
# end
|
|
25
|
+
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
module BlogBasic
|
|
2
|
+
class BlogCommentsController < ApplicationController
|
|
3
|
+
unloadable
|
|
4
|
+
|
|
5
|
+
helper :blog
|
|
6
|
+
|
|
7
|
+
layout(BlogConf.data['layout'] || 'application')
|
|
8
|
+
|
|
9
|
+
before_filter :require_user, :only => [:destroy]
|
|
10
|
+
before_filter :require_admin, :only => [:destroy]
|
|
11
|
+
before_filter :require_blog_post
|
|
12
|
+
|
|
13
|
+
def create
|
|
14
|
+
@blog_comment = @blog_post.blog_comments.new(params[:blog_comment])
|
|
15
|
+
@blog_comment.user_id = current_user.id if current_user
|
|
16
|
+
@blog_comment.request = request
|
|
17
|
+
|
|
18
|
+
respond_to do |format|
|
|
19
|
+
if @blog_comment.save
|
|
20
|
+
flash[:notice] = 'Your comments has been posted.'
|
|
21
|
+
format.html { redirect_to(@blog_post) }
|
|
22
|
+
format.xml { render :xml => @blog_comment, :status => :created, :location => @blog_comment }
|
|
23
|
+
else
|
|
24
|
+
format.html do
|
|
25
|
+
@blog_comments = @blog_post.blog_comments.paginate(:page => params[:page], :order => 'created_at DESC')
|
|
26
|
+
render :template => '../views/blog_posts/show.html.erb'
|
|
27
|
+
end
|
|
28
|
+
format.xml { render :xml => @blog_comment.errors, :status => :unprocessable_entity }
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def destroy
|
|
35
|
+
@blog_comment = BlogComment.find(params[:id])
|
|
36
|
+
@blog_comment.destroy
|
|
37
|
+
|
|
38
|
+
flash[:notice] = 'The comment has been deleted'
|
|
39
|
+
|
|
40
|
+
respond_to do |format|
|
|
41
|
+
format.html { redirect_to(blog_post_url(@blog_post)) }
|
|
42
|
+
format.xml { head :ok }
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
private
|
|
47
|
+
def require_blog_post
|
|
48
|
+
@blog_post = BlogPost.find(params[:blog_post_id])
|
|
49
|
+
|
|
50
|
+
unless @blog_post
|
|
51
|
+
flash[:notice] = 'The post you were looking for could not be found'
|
|
52
|
+
redirect_to :controller => 'blog_posts'
|
|
53
|
+
return false
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
return true
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def require_admin
|
|
60
|
+
if !current_user || !current_user.admin?
|
|
61
|
+
flash[:notice] = 'You must be an admin to view this page'
|
|
62
|
+
redirect_to blog_posts_path
|
|
63
|
+
return false
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
return true
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
module BlogBasic
|
|
2
|
+
class BlogPostsController < AppController
|
|
3
|
+
unloadable
|
|
4
|
+
|
|
5
|
+
helper :all #blog, shared
|
|
6
|
+
#include BlogBasic::Helpers
|
|
7
|
+
|
|
8
|
+
layout :choose_layout
|
|
9
|
+
|
|
10
|
+
before_filter :require_full_url, :only => [:show]
|
|
11
|
+
before_filter :require_user, :except => [:index, :show]
|
|
12
|
+
before_filter :require_admin, :except => [:index, :show]
|
|
13
|
+
before_filter :setup_image_template, :only => [:new, :edit, :create, :update]
|
|
14
|
+
|
|
15
|
+
def index
|
|
16
|
+
@blog_posts = BlogPost.published.paginate(:page => params[:page], :per_page => 5)
|
|
17
|
+
@index_title = BlogConf.data['blog_name'] || 'Blog'
|
|
18
|
+
@ads = false
|
|
19
|
+
|
|
20
|
+
respond_to do |format|
|
|
21
|
+
format.html # index.html.erb
|
|
22
|
+
format.xml { render :xml => @blog_posts }
|
|
23
|
+
format.atom
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def drafts
|
|
28
|
+
@blog_posts = BlogPost.drafts.paginate(:page => params[:page], :order => 'updated_at DESC')
|
|
29
|
+
|
|
30
|
+
respond_to do |format|
|
|
31
|
+
format.html # index.html.erb
|
|
32
|
+
format.xml { render :xml => @blog_posts }
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def show
|
|
37
|
+
@blog_post = BlogPost.find(params[:id])
|
|
38
|
+
|
|
39
|
+
unless @blog_post.published == 1
|
|
40
|
+
return unless require_admin
|
|
41
|
+
end
|
|
42
|
+
@blog_comment = @blog_post.blog_comments.new
|
|
43
|
+
@blog_comments = @blog_post.blog_comments.paginate(:page => params[:page], :order => 'created_at DESC')
|
|
44
|
+
@ads = true
|
|
45
|
+
respond_to do |format|
|
|
46
|
+
format.html # show.html.erb
|
|
47
|
+
format.xml { render :xml => @blog_post }
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def new
|
|
52
|
+
@blog_post = BlogPost.new
|
|
53
|
+
|
|
54
|
+
respond_to do |format|
|
|
55
|
+
format.html # new.html.erb
|
|
56
|
+
format.xml { render :xml => @blog_post }
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def edit
|
|
61
|
+
@blog_post = BlogPost.find(params[:id])
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def create
|
|
65
|
+
@blog_post = BlogPost.new(params[:blog_post])
|
|
66
|
+
@blog_post.user_id = current_user.id
|
|
67
|
+
logger.debug "value: #{params[:blog_post][:published]}"
|
|
68
|
+
@blog_post.published_at = Time.now if params[:blog_post][:published].to_i > 0 && @blog_post.published_at.nil?
|
|
69
|
+
|
|
70
|
+
respond_to do |format|
|
|
71
|
+
if @blog_post.save
|
|
72
|
+
flash[:notice] = 'BlogPost was successfully created.'
|
|
73
|
+
format.html { redirect_to(@blog_post) }
|
|
74
|
+
format.xml { render :xml => @blog_post, :status => :created, :location => @blog_post }
|
|
75
|
+
else
|
|
76
|
+
format.html { render :action => "new" }
|
|
77
|
+
format.xml { render :xml => @blog_post.errors, :status => :unprocessable_entity }
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
def update
|
|
83
|
+
@blog_post = BlogPost.find(params[:id])
|
|
84
|
+
|
|
85
|
+
blog_log = BlogContent.create()
|
|
86
|
+
blog_log.title = @blog_post.title
|
|
87
|
+
blog_log.content = @blog_post.body
|
|
88
|
+
blog_log.blog_post_id = params[:id]
|
|
89
|
+
blog_log.save
|
|
90
|
+
|
|
91
|
+
respond_to do |format|
|
|
92
|
+
@blog_post.published_at = Time.now if params[:blog_post][:published].to_i > 0 && @blog_post.published_at.nil?
|
|
93
|
+
if @blog_post.update_attributes(params[:blog_post])
|
|
94
|
+
flash[:notice] = 'BlogPost was successfully updated.'
|
|
95
|
+
format.html { redirect_to(@blog_post) }
|
|
96
|
+
format.xml { head :ok }
|
|
97
|
+
else
|
|
98
|
+
format.html { render :action => "edit" }
|
|
99
|
+
format.xml { render :xml => @blog_post.errors, :status => :unprocessable_entity }
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
def destroy
|
|
105
|
+
@blog_post = BlogPost.find(params[:id])
|
|
106
|
+
#@blog_post.destroy
|
|
107
|
+
|
|
108
|
+
flash[:notice] = 'The blog post has been deleted'
|
|
109
|
+
|
|
110
|
+
respond_to do |format|
|
|
111
|
+
format.html { redirect_to(blog_posts_url) }
|
|
112
|
+
format.xml { head :ok }
|
|
113
|
+
end
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
private
|
|
117
|
+
def require_full_url
|
|
118
|
+
if params[:id].to_i.to_s == params[:id]
|
|
119
|
+
redirect_to BlogPost.find(params[:id]), :status => 301
|
|
120
|
+
return true
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
return false
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
def require_admin
|
|
127
|
+
if !current_user || !current_user.admin?
|
|
128
|
+
flash[:notice] = 'You must be an admin to view this page'
|
|
129
|
+
redirect_to blog_posts_path
|
|
130
|
+
return false
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
return true
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
def choose_layout
|
|
137
|
+
if ['new', 'edit', 'create', 'update'].include?(params[:action])
|
|
138
|
+
BlogConf.data['admin_layout'] || 'application'
|
|
139
|
+
else
|
|
140
|
+
BlogConf.data['layout'] || 'application'
|
|
141
|
+
end
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
def setup_image_template
|
|
145
|
+
@empty_blog_post = BlogPost.new
|
|
146
|
+
@empty_blog_post.blog_images.build
|
|
147
|
+
end
|
|
148
|
+
end
|
|
149
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
module BlogBasic
|
|
2
|
+
class SessionsController < ApplicationController
|
|
3
|
+
skip_before_filter :verify_authenticity_token
|
|
4
|
+
|
|
5
|
+
def new
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def create
|
|
9
|
+
auth = request.env["omniauth.auth"]
|
|
10
|
+
logger.debug "Auth:" + auth.inspect
|
|
11
|
+
user = User.where(:identifier_url => auth["uid"].to_s).first
|
|
12
|
+
logger.debug "newlinedddd"
|
|
13
|
+
logger.debug "Here, uid:" + auth["uid"].to_s + ", email:" + auth["info"].inspect
|
|
14
|
+
user ||= User.create!(:identifier_url => auth["uid"].to_s)
|
|
15
|
+
logger.debug "userid" + user.id.to_s
|
|
16
|
+
#user ||= User.create!(:identifier_url => auth["uid"],
|
|
17
|
+
# :email => auth["info"]["email"],
|
|
18
|
+
# :first_name => auth["info"]["first_name"],
|
|
19
|
+
# :last_name => auth["info"]["last_name"])
|
|
20
|
+
#user = User.create_with_omniauth(auth)
|
|
21
|
+
session[:user_id] = user.id
|
|
22
|
+
logger.debug "before"
|
|
23
|
+
redirect_to '/', :notice => "Signed in!"
|
|
24
|
+
logger.debug "after"
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def destroy
|
|
28
|
+
session[:user_id] = nil
|
|
29
|
+
redirect_to main_app.root_url, :notice => "Signed out!"
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
module BlogBasic
|
|
2
|
+
class TagsController < AppController
|
|
3
|
+
layout 'application'
|
|
4
|
+
|
|
5
|
+
def show
|
|
6
|
+
@blog_posts = BlogPost.published.tagged_with(params[:id]).paginate(:page => params[:page], :per_page => 5)
|
|
7
|
+
render :template => 'blog_basic/blog_posts/index', :layout => true
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
end
|
|
11
|
+
end
|