cortex-reaver 0.0.9 → 0.1.0

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 (77) hide show
  1. data/bin/cortex_reaver +7 -2
  2. data/lib/cortex_reaver.rb +51 -71
  3. data/lib/cortex_reaver/config.rb +23 -7
  4. data/lib/cortex_reaver/controller/admin.rb +6 -8
  5. data/lib/cortex_reaver/controller/comment.rb +17 -17
  6. data/lib/cortex_reaver/controller/config.rb +3 -2
  7. data/lib/cortex_reaver/controller/controller.rb +22 -0
  8. data/lib/cortex_reaver/controller/documentation.rb +1 -3
  9. data/lib/cortex_reaver/controller/journal.rb +13 -12
  10. data/lib/cortex_reaver/controller/main.rb +36 -29
  11. data/lib/cortex_reaver/controller/page.rb +15 -11
  12. data/lib/cortex_reaver/controller/photograph.rb +21 -15
  13. data/lib/cortex_reaver/controller/project.rb +16 -13
  14. data/lib/cortex_reaver/controller/tag.rb +16 -14
  15. data/lib/cortex_reaver/controller/user.rb +11 -13
  16. data/lib/cortex_reaver/helper/attachments.rb +18 -12
  17. data/lib/cortex_reaver/helper/auth.rb +2 -2
  18. data/lib/cortex_reaver/helper/canonical.rb +2 -2
  19. data/lib/cortex_reaver/helper/crud.rb +78 -38
  20. data/lib/cortex_reaver/helper/feeds.rb +2 -5
  21. data/lib/cortex_reaver/helper/form.rb +1 -1
  22. data/lib/cortex_reaver/helper/navigation.rb +1 -1
  23. data/lib/cortex_reaver/helper/photographs.rb +12 -3
  24. data/lib/cortex_reaver/helper/template.rb +37 -0
  25. data/lib/cortex_reaver/{view/blank_layout.rhtml → layout/blank.rhtml} +1 -1
  26. data/lib/cortex_reaver/{view/text_layout.rhtml → layout/text.rhtml} +1 -1
  27. data/lib/cortex_reaver/migrations/013_draft.rb +17 -0
  28. data/lib/cortex_reaver/model/comment.rb +64 -53
  29. data/lib/cortex_reaver/model/journal.rb +23 -21
  30. data/lib/cortex_reaver/model/model.rb +9 -0
  31. data/lib/cortex_reaver/model/page.rb +24 -42
  32. data/lib/cortex_reaver/model/photograph.rb +17 -17
  33. data/lib/cortex_reaver/model/project.rb +21 -18
  34. data/lib/cortex_reaver/model/tag.rb +12 -8
  35. data/lib/cortex_reaver/model/user.rb +79 -41
  36. data/lib/cortex_reaver/public/css/main.css +4 -0
  37. data/lib/cortex_reaver/snippets/numeric.rb +15 -0
  38. data/lib/cortex_reaver/snippets/ramaze/cache/memcached.rb +14 -0
  39. data/lib/cortex_reaver/support/attachments.rb +113 -105
  40. data/lib/cortex_reaver/support/cached_rendering.rb +65 -62
  41. data/lib/cortex_reaver/support/canonical.rb +82 -85
  42. data/lib/cortex_reaver/support/comments.rb +57 -51
  43. data/lib/cortex_reaver/support/cortex_reaver_validation_helpers.rb +13 -0
  44. data/lib/cortex_reaver/support/sequenceable.rb +202 -203
  45. data/lib/cortex_reaver/support/tags.rb +103 -94
  46. data/lib/cortex_reaver/support/timestamps.rb +27 -21
  47. data/lib/cortex_reaver/support/viewable.rb +17 -0
  48. data/lib/cortex_reaver/version.rb +3 -3
  49. data/lib/cortex_reaver/view/admin/index.rhtml +2 -2
  50. data/lib/cortex_reaver/view/comments/comment.rhtml +4 -1
  51. data/lib/cortex_reaver/view/comments/list.rhtml +1 -1
  52. data/lib/cortex_reaver/view/comments/post_form.rhtml +1 -1
  53. data/lib/cortex_reaver/view/journals/form.rhtml +3 -1
  54. data/lib/cortex_reaver/view/journals/journal.rhtml +6 -4
  55. data/lib/cortex_reaver/view/journals/list.rhtml +2 -2
  56. data/lib/cortex_reaver/view/journals/show.rhtml +1 -1
  57. data/lib/cortex_reaver/view/pages/form.rhtml +2 -1
  58. data/lib/cortex_reaver/view/pages/list.rhtml +2 -2
  59. data/lib/cortex_reaver/view/pages/show.rhtml +1 -1
  60. data/lib/cortex_reaver/view/photographs/form.rhtml +7 -3
  61. data/lib/cortex_reaver/view/photographs/list.rhtml +1 -1
  62. data/lib/cortex_reaver/view/photographs/show.rhtml +7 -7
  63. data/lib/cortex_reaver/view/projects/form.rhtml +1 -0
  64. data/lib/cortex_reaver/view/projects/list.rhtml +3 -3
  65. data/lib/cortex_reaver/view/projects/show.rhtml +5 -2
  66. data/lib/cortex_reaver/view/tags/list.rhtml +6 -2
  67. data/lib/cortex_reaver/view/tags/show.rhtml +10 -5
  68. data/lib/cortex_reaver/view/users/form.rhtml +1 -1
  69. data/lib/cortex_reaver/view/users/list.rhtml +5 -2
  70. data/lib/cortex_reaver/view/users/login.rhtml +1 -1
  71. data/lib/cortex_reaver/view/users/show.rhtml +5 -1
  72. metadata +159 -149
  73. data/lib/cortex_reaver/public/dispatch.fcgi +0 -11
  74. data/lib/cortex_reaver/snippets/ramaze/dispatcher/file.rb +0 -37
  75. data/lib/cortex_reaver/support/pagination.rb +0 -38
  76. data/lib/cortex_reaver/view/error.rhtml +0 -72
  77. data/lib/cortex_reaver/view/photographs/short.rhtml +0 -3
@@ -0,0 +1,22 @@
1
+ module CortexReaver
2
+ class Controller < Ramaze::Controller
3
+ trait :app => :cortex_reaver
4
+ engine :Erubis
5
+ layout :text
6
+ helper :form, :auth, :navigation, :template, :workflow, :error
7
+ end
8
+ end
9
+
10
+ # Require controllers
11
+ module CortexReaver
12
+ require File.join(LIB_DIR, 'controller', 'main')
13
+ require File.join(LIB_DIR, 'controller', 'user')
14
+ require File.join(LIB_DIR, 'controller', 'page')
15
+ require File.join(LIB_DIR, 'controller', 'journal')
16
+ require File.join(LIB_DIR, 'controller', 'photograph')
17
+ require File.join(LIB_DIR, 'controller', 'project')
18
+ require File.join(LIB_DIR, 'controller', 'comment')
19
+ require File.join(LIB_DIR, 'controller', 'tag')
20
+ require File.join(LIB_DIR, 'controller', 'documentation')
21
+ require File.join(LIB_DIR, 'controller', 'admin')
22
+ end
@@ -1,8 +1,6 @@
1
1
  module CortexReaver
2
- class DocumentationController < Ramaze::Controller
2
+ class DocumentationController < Controller
3
3
  map '/documentation'
4
- layout '/text_layout'
5
- engine :Erubis
6
4
 
7
5
  def formatting
8
6
  end
@@ -1,19 +1,17 @@
1
1
  module CortexReaver
2
- class JournalController < Ramaze::Controller
2
+ class JournalController < Controller
3
3
  MODEL = Journal
4
4
 
5
5
  map '/journals'
6
- layout '/text_layout'
7
- template :edit, :form
8
- template :new, :form
9
- engine :Erubis
6
+
7
+ layout(:text) do |name, wish|
8
+ !request.xhr? and name != 'atom'
9
+ end
10
+
11
+ alias_view :edit, :form
12
+ alias_view :new, :form
10
13
 
11
14
  helper :cache,
12
- :error,
13
- :auth,
14
- :form,
15
- :workflow,
16
- :navigation,
17
15
  :date,
18
16
  :tags,
19
17
  :canonical,
@@ -21,19 +19,22 @@ module CortexReaver
21
19
  :attachments,
22
20
  :feeds
23
21
 
24
- cache :index, :ttl => 60
22
+ cache_action(:method => :index, :ttl => 120) do
23
+ user.id.to_i.to_s + flash.inspect
24
+ end
25
25
 
26
26
  on_second_save do |journal, request|
27
27
  journal.tags = request[:tags]
28
28
  add_attachments(journal, request[:attachments])
29
29
  journal.body = request[:body]
30
30
 
31
- MainController.send(:action_cache).clear
31
+ Ramaze::Cache.action.clear
32
32
  end
33
33
 
34
34
  on_save do |journal, request|
35
35
  journal.title = request[:title]
36
36
  journal.name = Journal.canonicalize(request[:name], :id => journal.id)
37
+ journal.draft = request[:draft]
37
38
  end
38
39
 
39
40
  on_create do |journal, request|
@@ -1,23 +1,22 @@
1
1
  require 'builder'
2
2
 
3
3
  module CortexReaver
4
- class MainController < Ramaze::Controller
4
+ class MainController < Controller
5
5
  map '/'
6
- layout '/text_layout'
6
+
7
+ layout(:text) do |name, wish|
8
+ !request.xhr? and name != 'atom'
9
+ end
10
+
7
11
  helper :cache,
8
- :workflow,
9
- :auth,
10
- :error,
11
- :navigation,
12
12
  :date,
13
13
  :tags,
14
- :form,
15
14
  :feeds,
16
15
  :pages
17
16
 
18
- engine :Erubis
19
-
20
- cache :index, :ttl => 60
17
+ # cache_action(:method => :index, :ttl => 120) do
18
+ # user.id.to_i.to_s + flash.inspect
19
+ # end
21
20
 
22
21
  # the index action is called automatically when no other action is specified
23
22
  def index(*ids)
@@ -26,45 +25,48 @@ module CortexReaver
26
25
  @title = @page.title
27
26
 
28
27
  if user.can_edit? Page.new
29
- workflow "Edit this page", R(PageController, :edit, @page.id)
28
+ workflow "Edit this page", PageController.r(:edit, @page.id)
30
29
  end
31
30
  if user.can_delete? Page.new
32
- workflow "Delete this page", R(PageController, :delete, @page.id)
31
+ workflow "Delete this page", PageController.r(:delete, @page.id)
33
32
  end
34
33
 
35
- render_template 'pages/show'
34
+ PageController.render_view('show')
36
35
  elsif not ids.empty?
37
36
  # Didn't have that page
38
37
  error_404
39
38
  else
40
39
  # Default welcome page
41
- @photographs = Photograph.recent
42
- @journals = Journal.recent
43
-
44
- if @photographs.size > 0
40
+ @photographs = Photograph.recent.viewable_by(user)
41
+ @journals = Journal.recent.viewable_by(user)
42
+
43
+ if @photographs.count > 0
44
+ # Show sidebar
45
45
  @sidebar ||= []
46
- @sidebar.unshift render_template('photographs/sidebar.rhtml')
46
+ @sidebar.unshift PhotographController.render_view('sidebar')
47
47
  end
48
48
 
49
+ # Workflows
49
50
  if user.can_create? Journal.new
50
- workflow "New Journal", R(JournalController, :new)
51
+ workflow "New Journal", JournalController.r(:new)
51
52
  end
52
53
  if user.can_create? Page.new
53
- workflow "New Page", R(PageController, :new)
54
+ workflow "New Page", PageController.r(:new)
54
55
  end
55
56
  if user.can_create? Photograph.new
56
- workflow "New Photograph", R(PhotographController, :new)
57
- end
58
- if user.can_create? Project.new
59
- workflow "New Project", R(ProjectController, :new)
57
+ workflow "New Photograph", PhotographController.r(:new)
60
58
  end
59
+ # if user.can_create? Project.new
60
+ # workflow "New Project", ProjectController.r(:new)
61
+ # end
61
62
 
62
- feed 'Photographs', Rs(PhotographController, :atom)
63
- feed 'Journals', Rs(JournalController, :atom)
64
- feed 'Projects', Rs(ProjectController, :atom)
65
- feed 'Comments', Rs(CommentController, :atom)
63
+ # Feeds
64
+ feed 'Photographs', PhotographController.r(:atom)
65
+ feed 'Journals', JournalController.r(:atom)
66
+ # feed 'Projects', ProjectController.r(:atom)
67
+ feed 'Comments', CommentController.r(:atom)
66
68
 
67
- render_template 'journals/list.rhtml'
69
+ JournalController.render_view('list', :journals => @journals)
68
70
  end
69
71
  end
70
72
 
@@ -73,6 +75,11 @@ module CortexReaver
73
75
  error_404
74
76
  end
75
77
 
78
+ def clear
79
+ Ramaze::Cache.action.clear
80
+ respond "cache cleared"
81
+ end
82
+
76
83
  private
77
84
 
78
85
  # the string returned at the end of the function is used as the html body
@@ -1,18 +1,17 @@
1
1
  module CortexReaver
2
- class PageController < Ramaze::Controller
2
+ class PageController < Controller
3
3
  MODEL = Page
4
4
 
5
5
  map '/pages'
6
- layout '/text_layout'
7
- template :edit, :form
8
- template :new, :form
9
- engine :Erubis
10
-
11
- helper :error,
12
- :auth,
13
- :form,
14
- :workflow,
15
- :navigation,
6
+
7
+ layout(:text) do |name, wish|
8
+ not request.xhr? and name != :atom
9
+ end
10
+
11
+ alias_view :edit, :form
12
+ alias_view :new, :form
13
+
14
+ helper :cache,
16
15
  :date,
17
16
  :tags,
18
17
  :canonical,
@@ -20,6 +19,10 @@ module CortexReaver
20
19
  :attachments,
21
20
  :pages
22
21
 
22
+ cache_action(:method => :show, :ttl => 120) do
23
+ user.id.to_i.to_s + flash.inspect
24
+ end
25
+
23
26
  on_second_save do |page, request|
24
27
  page.tags = request[:tags]
25
28
  add_attachments(page, request[:attachments])
@@ -29,6 +32,7 @@ module CortexReaver
29
32
  page.title = request[:title]
30
33
  page.page_id = request[:page_id]
31
34
  page.name = Page.canonicalize request[:name], :id => page.id, :page_id => page.page_id
35
+ page.draft = request[:draft]
32
36
  page.body = request[:body]
33
37
  end
34
38
 
@@ -1,23 +1,25 @@
1
1
  require 'exifr'
2
2
  require 'RMagick'
3
3
  module CortexReaver
4
- class PhotographController < Ramaze::Controller
4
+ class PhotographController < Controller
5
5
  MODEL = Photograph
6
6
 
7
7
  map '/photographs'
8
- layout '/blank_layout'
9
- layout '/text_layout' => [:index, :edit, :new, :page]
10
- template_paths << 'view'
11
- template :edit, :form
12
- template :new, :form
13
- engine :Erubis
8
+
9
+ layout do |name, wish|
10
+ if ['index', 'edit', 'new', 'page'].include? name
11
+ :text
12
+ elsif request.xhr? or name == 'atom'
13
+ nil
14
+ else
15
+ :blank
16
+ end
17
+ end
18
+
19
+ alias_view :edit, :form
20
+ alias_view :new, :form
14
21
 
15
22
  helper :cache,
16
- :error,
17
- :auth,
18
- :form,
19
- :workflow,
20
- :navigation,
21
23
  :date,
22
24
  :tags,
23
25
  :canonical,
@@ -26,11 +28,14 @@ module CortexReaver
26
28
  :photographs,
27
29
  :feeds
28
30
 
29
- cache :index, :ttl => 60
31
+ cache_action(:method => :index, :ttl => 120) do
32
+ user.id.to_i.to_s + flash.inspect
33
+ end
30
34
 
31
35
  on_save do |photograph, request|
32
36
  photograph.title = request[:title]
33
37
  photograph.name = Photograph.canonicalize request[:name], :id => photograph.id
38
+ photograph.draft = request[:draft]
34
39
  end
35
40
 
36
41
  on_second_save do |photograph, request|
@@ -38,7 +43,7 @@ module CortexReaver
38
43
  photograph.image = request[:image][:tempfile] if request[:image]
39
44
  photograph.infer_date_from_exif! if request[:infer_date]
40
45
 
41
- MainController.send(:action_cache).clear
46
+ Ramaze::Cache.action.clear
42
47
  end
43
48
 
44
49
  on_create do |photograph, request|
@@ -52,7 +57,8 @@ module CortexReaver
52
57
  for_feed do |photograph, x|
53
58
  p photograph
54
59
  x.content(
55
- render_template('atom_fragment.rhtml', :photograph => photograph),
60
+ #render_view('atom_fragment.rhtml', :photograph => photograph),
61
+ "a",
56
62
  :type => 'html'
57
63
  )
58
64
  end
@@ -1,19 +1,17 @@
1
1
  module CortexReaver
2
- class ProjectController < Ramaze::Controller
2
+ class ProjectController < Controller
3
3
  MODEL = Project
4
4
 
5
5
  map '/projects'
6
- layout '/text_layout'
7
- template :edit, :form
8
- template :new, :form
9
- engine :Erubis
6
+
7
+ layout(:text) do |name, wish|
8
+ !request.xhr? and name != 'atom'
9
+ end
10
10
 
11
+ alias_view :edit, :form
12
+ alias_view :new, :form
13
+
11
14
  helper :cache,
12
- :error,
13
- :auth,
14
- :form,
15
- :workflow,
16
- :navigation,
17
15
  :date,
18
16
  :tags,
19
17
  :canonical,
@@ -21,18 +19,23 @@ module CortexReaver
21
19
  :attachments,
22
20
  :feeds
23
21
 
24
- cache :index, :ttl => 60
22
+ cache_action(:method => :index, :ttl => 120) do
23
+ user.id.to_i.to_s + flash.inspect
24
+ end
25
25
 
26
26
  on_second_save do |project, request|
27
27
  project.tags = request[:tags]
28
28
  add_attachments(project, request[:attachments])
29
+ project.body = request[:body]
30
+
31
+ Ramaze::Cache.action.clear
29
32
  end
30
33
 
31
34
  on_save do |project, request|
32
35
  project.title = request[:title]
33
- project.description = request[:description]
34
36
  project.name = Project.canonicalize request[:name], :id => project.id
35
- project.body = request[:body]
37
+ project.description = request[:description]
38
+ project.draft = request[:draft]
36
39
  end
37
40
 
38
41
  on_create do |project, request|
@@ -1,24 +1,27 @@
1
1
  module CortexReaver
2
- class TagController < Ramaze::Controller
2
+ class TagController < Controller
3
3
  MODEL = Tag
4
4
 
5
5
  map '/tags'
6
- layout '/text_layout'
7
- template :edit, :form
8
- template :new, :form
9
- engine :Erubis
6
+
7
+ layout(:text) do |name, wish|
8
+ !request.xhr?
9
+ end
10
10
 
11
+ alias_view :index, :list
12
+ alias_view :edit, :form
13
+ alias_view :new, :form
14
+
11
15
  helper :cache,
12
- :error,
13
- :auth,
14
- :form,
15
- :workflow,
16
- :navigation,
17
16
  :canonical,
18
17
  :crud
19
18
 
20
- cache :index, :ttl => 60
21
- cache :show, :ttl => 60
19
+ cache_action(:method => :index, :ttl => 120) do
20
+ user.id.to_i.to_s + flash.inspect
21
+ end
22
+ cache_action(:method => :show, :ttl => 120) do
23
+ user.id.to_i.to_s + flash.inspect
24
+ end
22
25
 
23
26
  on_save do |tag, request|
24
27
  tag.title = request[:title]
@@ -27,12 +30,11 @@ module CortexReaver
27
30
 
28
31
  def index(*ids)
29
32
  if ids.size > 0
30
- raw_redirect Rs([:show] + ids), :status => 301
33
+ raw_redirect rs([:show] + ids), :status => 301
31
34
  else
32
35
  # Index
33
36
  @title = "All Tags"
34
37
  @tags = Tag.order(:count).reverse
35
- render_template :list
36
38
  end
37
39
  end
38
40
 
@@ -1,19 +1,17 @@
1
1
  module CortexReaver
2
- class UserController < Ramaze::Controller
2
+ class UserController < Controller
3
3
  MODEL = User
4
4
 
5
5
  map '/users'
6
- layout '/text_layout'
7
- template :edit, :form
8
- template :new, :form
9
- engine :Erubis
6
+
7
+ layout(:text) do |name, wish|
8
+ !request.xhr?
9
+ end
10
+
11
+ alias_view :edit, :form
12
+ alias_view :new, :form
10
13
 
11
- helper :error,
12
- :auth,
13
- :form,
14
- :workflow,
15
- :navigation,
16
- :date,
14
+ helper :date,
17
15
  :tags,
18
16
  :canonical,
19
17
  :crud,
@@ -56,12 +54,12 @@ module CortexReaver
56
54
  redirect uri
57
55
  else
58
56
  # Try the main page.
59
- redirect R(:/)
57
+ redirect MainController.r
60
58
  end
61
59
  else
62
60
  # Nope, no login.
63
61
  flash[:error] = "Wrong username or password."
64
- redirect Rs(:login)
62
+ redirect rs(:login)
65
63
  end
66
64
  end
67
65
  end