blogaze 0.0.1 → 0.0.2

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 (51) hide show
  1. data/README.md +12 -13
  2. data/blogaze.gemspec +1 -0
  3. data/lib/blogaze.rb +2 -2
  4. data/lib/blogaze/bin/create.rb +6 -0
  5. data/lib/blogaze/controllers/admin/comments.rb +43 -0
  6. data/lib/blogaze/controllers/admin/dashboard.rb +25 -0
  7. data/lib/blogaze/controllers/admin/init.rb +30 -0
  8. data/lib/blogaze/controllers/admin/pages.rb +95 -0
  9. data/lib/blogaze/controllers/admin/posts.rb +125 -0
  10. data/lib/blogaze/controllers/admin/settings.rb +41 -0
  11. data/lib/blogaze/{controller → controllers}/init.rb +1 -1
  12. data/lib/blogaze/controllers/main_controller.rb +35 -0
  13. data/lib/blogaze/controllers/pages.rb +39 -0
  14. data/lib/blogaze/controllers/posts.rb +77 -0
  15. data/lib/blogaze/controllers/sessions.rb +50 -0
  16. data/lib/blogaze/controllers/users.rb +41 -0
  17. data/lib/blogaze/models/comment.rb +28 -0
  18. data/lib/blogaze/{model → models}/group.rb +6 -4
  19. data/lib/blogaze/{model → models}/init.rb +0 -0
  20. data/lib/blogaze/models/page.rb +29 -0
  21. data/lib/blogaze/models/post.rb +95 -0
  22. data/lib/blogaze/models/tag.rb +25 -0
  23. data/lib/blogaze/{model → models}/tags_relationship.rb +6 -4
  24. data/lib/blogaze/models/user.rb +43 -0
  25. data/lib/blogaze/routes.rb +4 -0
  26. data/lib/blogaze/theme.rb +17 -0
  27. data/lib/blogaze/version.rb +1 -1
  28. data/proto/public/css/master.less +16 -12
  29. data/proto/themes/default/admin/index.xhtml +4 -4
  30. data/proto/themes/default/admin/settings/index.xhtml +1 -1
  31. data/proto/themes/default/index.xhtml +6 -3
  32. data/proto/themes/default/layouts/admin.xhtml +2 -2
  33. data/proto/themes/default/layouts/default.xhtml +1 -1
  34. data/proto/themes/default/posts/view.xhtml +3 -3
  35. metadata +37 -21
  36. data/lib/blogaze/controller/admin/comments.rb +0 -32
  37. data/lib/blogaze/controller/admin/init.rb +0 -28
  38. data/lib/blogaze/controller/admin/main.rb +0 -20
  39. data/lib/blogaze/controller/admin/pages.rb +0 -75
  40. data/lib/blogaze/controller/admin/posts.rb +0 -103
  41. data/lib/blogaze/controller/admin/settings.rb +0 -33
  42. data/lib/blogaze/controller/main.rb +0 -30
  43. data/lib/blogaze/controller/pages.rb +0 -34
  44. data/lib/blogaze/controller/posts.rb +0 -43
  45. data/lib/blogaze/controller/sessions.rb +0 -39
  46. data/lib/blogaze/controller/users.rb +0 -39
  47. data/lib/blogaze/model/comment.rb +0 -26
  48. data/lib/blogaze/model/page.rb +0 -27
  49. data/lib/blogaze/model/post.rb +0 -79
  50. data/lib/blogaze/model/tag.rb +0 -19
  51. data/lib/blogaze/model/user.rb +0 -41
data/README.md CHANGED
@@ -11,23 +11,22 @@ Blogaze is currently in development, use at your own risk.
11
11
  Setup
12
12
  ------
13
13
 
14
- 1. Rename the config files in the `config` directory to remove `.default` from the filenames.
15
- 2. Enter your database information in the `config/database.rb` file.
16
- 3. Run `rake db:migrate` and `rake db:defaults`
17
- 4. Run `ruby start.rb` or `thin start` or whatever your preferred way is.
14
+ Install the gem:
18
15
 
19
- The default admin account username is `admin` and the password is `myadmin`.
16
+ gem install blogaze
20
17
 
21
- Todo
22
- ------
18
+ Or install from the repository
23
19
 
24
- Things that still need to be done.
20
+ rake install
21
+
22
+ Create a new installation
25
23
 
26
- 1. Post tags
27
- 2. User manager
28
- 3. Profile manager
24
+ blogaze create my_blog
29
25
 
30
- Gem?
26
+ Todo
31
27
  ------
32
28
 
33
- Someday.
29
+ Things that still need to be done.
30
+
31
+ 1. User manager
32
+ 2. Profile manager
data/blogaze.gemspec CHANGED
@@ -21,4 +21,5 @@ Gem::Specification.new do |gem|
21
21
  gem.add_dependency 'sequel', ['~> 3.43.0']
22
22
  gem.add_dependency 'maruku', ['~> 0.6.1']
23
23
  gem.add_dependency 'time-lord', ['~> 0.2.5']
24
+ gem.add_dependency 'shebang', ['~> 0.1']
24
25
  end
data/lib/blogaze.rb CHANGED
@@ -27,13 +27,13 @@ module Blogaze
27
27
  # Sets database and loads models
28
28
  def database=(database)
29
29
  @database = database
30
- require 'blogaze/model/init'
30
+ require 'blogaze/models/init'
31
31
  end
32
32
 
33
33
  # Loads routes and controllers
34
34
  def start
35
35
  require 'blogaze/routes'
36
- require 'blogaze/controller/init'
36
+ require 'blogaze/controllers/init'
37
37
  end
38
38
  end
39
39
  end
@@ -17,24 +17,30 @@ module Blogaze
17
17
  PROTOTYPE = __DIR__('../../../proto')
18
18
 
19
19
  def index
20
+ # Require the name argument
20
21
  if ARGV[0] == '' or ARGV[0].nil?
21
22
  puts "Missing argument [NAME]"
22
23
  return
23
24
  end
24
25
 
26
+ # Destination to copy files
25
27
  destination = File.join(Dir.pwd, ARGV[0])
26
28
 
29
+ # Make sure the destination doesn't exist
27
30
  if File.directory?(destination) and !option(:f)
28
31
  puts "Directory already exists with name: #{ARGV[0]}"
29
32
  return
30
33
  else
34
+ # Copy files
31
35
  puts 'Copying files...'
32
36
  FileUtils.cp_r(PROTOTYPE, destination)
33
37
 
38
+ # Rename config files
34
39
  ['config.default.rb', 'database.default.rb'].each do |config|
35
40
  FileUtils.mv(destination + "/config/#{config}", destination + "/config/" + config.gsub('.default', ''))
36
41
  end
37
42
 
43
+ # Tell the user what to do next
38
44
  puts 'Done.'
39
45
  puts
40
46
  puts "You will need to enter your database information"
@@ -0,0 +1,43 @@
1
+ #
2
+ # Blogaze
3
+ # Copyright (C) 2011-2013 Jack Polgar
4
+ #
5
+ # Blogaze is released under the BSD 3-clause license.
6
+ # @license http://opensource.org/licenses/BSD-3-Clause
7
+ #
8
+
9
+ module Blogaze
10
+ module Controllers
11
+ module Admin
12
+ class Comments < Controller
13
+ map '/admin/comments'
14
+
15
+ ##
16
+ # List comments
17
+ #
18
+ def index
19
+ @comments = ::Blogaze::Models::Comment.all
20
+ respond(view_file('admin/comments/index'))
21
+ end
22
+
23
+ ##
24
+ # Approve comment
25
+ #
26
+ def approve(comment_id)
27
+ ::Blogaze::Models::Comment[comment_id].update(:in_moderation => 0).save
28
+ flash[:success] = "Comment approved"
29
+ redirect r('/')
30
+ end
31
+
32
+ ##
33
+ # Delete comment
34
+ #
35
+ def delete(comment_id)
36
+ ::Blogaze::Models::Comment[comment_id].delete
37
+ flash[:success] = "Comment deleted"
38
+ redirect r('/')
39
+ end
40
+ end # Comments
41
+ end # Admin
42
+ end # Controllers
43
+ end # Blogaze
@@ -0,0 +1,25 @@
1
+ #
2
+ # Blogaze
3
+ # Copyright (C) 2011-2013 Jack Polgar
4
+ #
5
+ # Blogaze is released under the BSD 3-clause license.
6
+ # @license http://opensource.org/licenses/BSD-3-Clause
7
+ #
8
+
9
+ module Blogaze
10
+ module Controllers
11
+ module Admin
12
+ class Dashboard < Controller
13
+ map '/admin'
14
+
15
+ ##
16
+ # Admin index
17
+ #
18
+ def index
19
+ @title = "Admin - #{@settings[:title]}"
20
+ respond(view_file('admin/index'))
21
+ end
22
+ end # Dashboard
23
+ end # Admin
24
+ end # Controllers
25
+ end # Blogaze
@@ -0,0 +1,30 @@
1
+ #
2
+ # Blogaze
3
+ # Copyright (C) 2011-2013 Jack Polgar
4
+ #
5
+ # Blogaze is released under the BSD 3-clause license.
6
+ # @license http://opensource.org/licenses/BSD-3-Clause
7
+ #
8
+
9
+ module Blogaze
10
+ module Controllers
11
+ module Admin
12
+ class Controller < ::Blogaze::Controller
13
+ layout 'admin'
14
+ helper :blue_form
15
+
16
+ def initialize
17
+ super
18
+
19
+ if !@userinfo.respond_to?('group') or !@userinfo.group.is_admin
20
+ redirect '/login'
21
+ end
22
+ end
23
+ end # Controller
24
+ end # Admin
25
+ end # Controllers
26
+ end # Blogaze
27
+
28
+ Dir.glob(File.dirname(__FILE__) + '/*.rb').each do |controller|
29
+ require(controller)
30
+ end
@@ -0,0 +1,95 @@
1
+ #
2
+ # Blogaze
3
+ # Copyright (C) 2011-2013 Jack Polgar
4
+ #
5
+ # Blogaze is released under the BSD 3-clause license.
6
+ # @license http://opensource.org/licenses/BSD-3-Clause
7
+ #
8
+
9
+ module Blogaze
10
+ module Controllers
11
+ module Admin
12
+ class Pages < Controller
13
+ map '/admin/pages'
14
+
15
+ ##
16
+ # Page listing
17
+ #
18
+ def index
19
+ @pages = ::Blogaze::Models::Page.order(:title.asc).all
20
+ respond(view_file('admin/pages/index'))
21
+ end
22
+
23
+ ##
24
+ # New page form
25
+ #
26
+ def new
27
+ @title = "New Page - Pages - Admin - #{@settings[:title]}"
28
+ @page = ::Blogaze::Models::Page.new
29
+ respond(view_file('admin/pages/new'))
30
+ end
31
+
32
+ ##
33
+ # Create page
34
+ #
35
+ def create
36
+ @title = "New Page - Pages - Admin - #{@settings[:title]}"
37
+ data = {
38
+ :title => request[:title],
39
+ :slug => request[:slug],
40
+ :body => request[:body],
41
+ :on_menu => request[:on_menu]
42
+ }
43
+
44
+ @page = ::Blogaze::Models::Page.new(data)
45
+
46
+ if @page.valid?
47
+ @page.save
48
+ flash[:success] = "Page created successfully"
49
+ redirect Pages.r('/')
50
+ else
51
+ respond(view_file('admin/pages/new'))
52
+ end
53
+ end
54
+
55
+ ##
56
+ # Edit page
57
+ #
58
+ def edit(page_id)
59
+ @title = "Edit Page - Pages - Admin - #{@settings[:title]}"
60
+ @page = ::Blogaze::Models::Page[page_id]
61
+ respond(view_file('admin/pages/edit'))
62
+ end
63
+
64
+ ##
65
+ # Save page
66
+ #
67
+ def save(page_id)
68
+ @title = "Edit Page - Pages - Admin - #{@settings[:title]}"
69
+ @page = ::Blogaze::Models::Page[page_id]
70
+ @page.title = request[:title]
71
+ @page.slug = request[:slug]
72
+ @page.body = request[:body]
73
+ @page.on_menu = request[:on_menu]
74
+
75
+ if @page.valid?
76
+ @page.save
77
+ flash[:success] = "Page saved successfully"
78
+ redirect Pages.r('/')
79
+ else
80
+ respond(view_file('admin/pages/edit'))
81
+ end
82
+ end
83
+
84
+ ##
85
+ # Delete page
86
+ #
87
+ def delete(page_id)
88
+ P::Blogaze::Models::age[page_id].delete
89
+ flash[:success] = "Page deleted successfully"
90
+ redirect Pages.r('/')
91
+ end
92
+ end # Pages
93
+ end # Admin
94
+ end # Controllers
95
+ end # Blogaze
@@ -0,0 +1,125 @@
1
+ #
2
+ # Blogaze
3
+ # Copyright (C) 2011-2013 Jack Polgar
4
+ #
5
+ # Blogaze is released under the BSD 3-clause license.
6
+ # @license http://opensource.org/licenses/BSD-3-Clause
7
+ #
8
+
9
+ module Blogaze
10
+ module Controllers
11
+ module Admin
12
+ class Posts < Controller
13
+ map '/admin/posts'
14
+
15
+ before :new, :create do
16
+ if !@userinfo.group.create_posts
17
+ flash[:error] = "You don't have permission to do that."
18
+ redirect '/login'
19
+ end
20
+ end
21
+
22
+ before :edit, :save do
23
+ if !@userinfo.group.edit_posts
24
+ flash[:error] = "You don't have permission to do that."
25
+ redirect '/login'
26
+ end
27
+ end
28
+
29
+ before :delete do
30
+ if !@userinfo.group.delete_posts
31
+ flash[:error] = "You don't have permission to do that."
32
+ redirect '/login'
33
+ end
34
+ end
35
+
36
+ ##
37
+ # Post listing
38
+ #
39
+ def index
40
+ @title = "Posts - Admin - #{@settings[:title]}"
41
+ @posts = ::Blogaze::Models::Post.order(:id.desc).all
42
+ respond(view_file('admin/posts/index'))
43
+ end
44
+
45
+ ##
46
+ # New post form
47
+ #
48
+ def new
49
+ @title = "New Post - Posts - Admin - #{@settings[:title]}"
50
+ @post = ::Blogaze::Models::Post.new
51
+ respond(view_file('admin/posts/new'))
52
+ end
53
+
54
+ ##
55
+ # Create post
56
+ #
57
+ def create
58
+ @title = "New Post - Posts - Admin - #{@settings[:title]}"
59
+ data = {
60
+ :title => request[:title],
61
+ :body => request[:body],
62
+ :user_id => @userinfo.id,
63
+ :post_tags => request[:post_tags].is_a?(String) ? request[:post_tags].gsub(', ', ',').split(',') : []
64
+ }
65
+ @post = ::Blogaze::Models::Post.new(data)
66
+
67
+ if @post.valid?
68
+ @post.save
69
+ flash[:success] = "Post created successfully"
70
+ redirect Posts.r('/')
71
+ else
72
+ @post.post_tags = @post.post_tags.join(', ')
73
+ respond(view_file('admin/posts/new'))
74
+ end
75
+ end
76
+
77
+ ##
78
+ # Edit post
79
+ #
80
+ def edit(post_id)
81
+ @title = "Edit Post - Posts - Admin - #{@settings[:title]}"
82
+ @post = ::Blogaze::Models::Post[post_id]
83
+
84
+ post_tags = []
85
+ @post.tags.each do |tag|
86
+ post_tags.push tag.name
87
+ end
88
+ @post.post_tags = post_tags.join(', ')
89
+
90
+ respond(view_file('admin/posts/edit'))
91
+ end
92
+
93
+ ##
94
+ # Save post
95
+ #
96
+ def save(post_id)
97
+ @title = "Edit Post - Posts - Admin - #{@settings[:title]}"
98
+ @post = ::Blogaze::Models::Post[post_id]
99
+ @post.title = request[:title]
100
+ @post.body = request[:body]
101
+ @post.post_tags = request[:post_tags].is_a?(String) ? request[:post_tags].gsub(', ', ',').split(',') : []
102
+
103
+ if @post.valid?
104
+ @post.save
105
+ flash[:success] = "Post saved successfully"
106
+ redirect Posts.r('/')
107
+ else
108
+ respond(view_file('admin/posts/edit'))
109
+ end
110
+ end
111
+
112
+ ##
113
+ # Delete post
114
+ #
115
+ def delete(post_id)
116
+ post = ::Blogaze::Models::Post[post_id]
117
+ post.delete
118
+ ::Blogaze::Models::TagsRelationship.where(:object_type => 'post', :object_id => post.id).delete
119
+ flash[:success] = "Post deleted successfully"
120
+ redirect Posts.r('/')
121
+ end
122
+ end # Posts
123
+ end # Admin
124
+ end # Controllers
125
+ end # Blogaze
@@ -0,0 +1,41 @@
1
+ #
2
+ # Blogaze
3
+ # Copyright (C) 2011-2013 Jack Polgar
4
+ #
5
+ # Blogaze is released under the BSD 3-clause license.
6
+ # @license http://opensource.org/licenses/BSD-3-Clause
7
+ #
8
+
9
+ module Blogaze
10
+ module Controllers
11
+ module Admin
12
+ class Settings < Controller
13
+ map '/admin/settings'
14
+
15
+ ##
16
+ # Settings form
17
+ #
18
+ def index
19
+ # Get themes
20
+ @themes = []
21
+
22
+ ::Blogaze::Theme.registered.each do |theme|
23
+ @themes.push theme[0].to_s
24
+ end
25
+
26
+ respond(view_file('admin/settings/index'))
27
+ end
28
+
29
+ ##
30
+ # Save settings
31
+ #
32
+ def save
33
+ request[:settings].each do |setting, value|
34
+ ::Blogaze.database[:settings].where(:setting => setting).update(:value => value)
35
+ end
36
+ redirect Settings.r('/')
37
+ end
38
+ end # Settings
39
+ end # Admin
40
+ end # Controllers
41
+ end # Blogaze