atreides 2.0.1 → 2.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -835,79 +835,10 @@ td.items_field a {
835
835
  line-height:30px;
836
836
  }
837
837
 
838
- /*
839
- * Comments
840
- *
841
- */
842
-
843
- #comments_list {
844
- border-top:1px solid #ccc;
845
- }
846
-
847
- #comments_list .comment {
848
- clear:left;
849
- border-bottom:1px solid #eee;
850
- padding: 1em 0;
851
- }
852
-
853
- #comments_list .comment:hover {
854
- background:#f5f5f5;
855
- }
856
-
857
- #comments_list .comment-avatar {
858
- float:left;
859
- }
860
-
861
- #comments_list .comment-name {
862
- font-weight:bold;
863
- }
864
-
865
- #comments_list .comment-avatar img {
866
- margin-right:0.5em;
867
- margin-bottom:0.5em;
868
- }
869
-
870
- #comments_list .comment-excerpt p {
871
- margin-bottom:0.5em;
872
- }
873
-
874
- .comment-time {
875
- clear:left;
876
- }
877
-
878
- .comment-actions-left ul {
879
- margin:0;
880
- padding:0;
881
- list-style:none;
882
- }
883
-
884
- .comment-actions-left li {
885
- float:left;
886
- margin-right:0.5em;
887
- }
888
-
889
- fieldset#comment_buttons {
890
- border:none;
891
- width:100%;
892
- margin-top:1em;
893
- }
894
-
895
- #comment_buttons ol {
896
- list-style:none;
897
- margin:0;
898
- padding:0;
899
- }
900
-
901
838
  #sidebar #filter-list ul {
902
839
  padding:0;
903
840
  }
904
841
 
905
- .comments-panel-wrapper li.machine_tag {
906
- float:none;
907
- width:100%;
908
- margin-bottom:0.5em;
909
- }
910
-
911
842
  /*
912
843
  * Features
913
844
  *
@@ -19,7 +19,6 @@ class Atreides::ContentPart < Atreides::Base
19
19
  # Behaviours
20
20
  #
21
21
 
22
- #XXX acts_as_commentable
23
22
  accepts_nested_attributes_for :photos, :allow_destroy => true
24
23
  accepts_nested_attributes_for :videos, :allow_destroy => true
25
24
 
@@ -62,9 +62,9 @@ class Atreides::Post < Atreides::Base
62
62
  scope :popular_photos, lambda {
63
63
  now = Time.zone.now
64
64
  joins("INNER JOIN photos ON photos.photoable_type = 'Atreides::Post' AND photos.photoable_id = posts.id").
65
- select("posts.*, ((comments_count*2)+likes_count) as final_count").
65
+ select("posts.*, likes_count").
66
66
  where("posts.state = 'published' AND posts.published_at < ? AND posts.published_at < ?", now-1.week, now).
67
- order("final_count desc, published_at desc").
67
+ order("likes_count desc, published_at desc").
68
68
  group("posts.id").
69
69
  limit(6)
70
70
  }
@@ -21,7 +21,7 @@ class Atreides::User < Atreides::Base
21
21
  #
22
22
  # Associatons
23
23
  #
24
- has_many :comments
24
+
25
25
  has_many :line_items
26
26
  has_many :cart_items, :class_name => "LineItem", :conditions => "order_id is null"
27
27
  has_many :orders
@@ -17,7 +17,6 @@
17
17
  %li.divider
18
18
  %li= ttt(:'.sort_by')
19
19
  %li= link_to_function ttt(:'.sort_by_date'), ""
20
- %li= link_to_function ttt(:'.sort_by_comments'), ""
21
20
  %li= link_to_function ttt(:'.sort_by_likes'), ""
22
21
  %li.divider
23
22
  %li #{ttt :'.filter'}
@@ -5,4 +5,3 @@
5
5
  %li.features= link_to ttt(:features), admin_features_path
6
6
  %li.archives= link_to ttt(:archives), admin_posts_path
7
7
  %li.pages= link_to ttt(:pages), admin_pages_path
8
- %li.comments= link_to ttt(:comments), admin_comments_path
@@ -5,19 +5,4 @@
5
5
 
6
6
  #page_nav
7
7
  = link_to tt(".arrow_previous"), previous_post_path(resource), :class => "left" if resource.previous
8
- = link_to tt(".arrow_next"), next_post_path(resource), :class => "right" if resource.next
9
-
10
- .clear
11
-
12
- #disqus_thread
13
- :javascript
14
- var disqus_shortname = 'testatreides';
15
- var disqus_developer = 1;
16
- (function() {
17
- var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
18
- dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js';
19
- (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
20
- })();
21
- %noscript Please enable JavaScript to view the #{link_to 'http://disqus.com/?ref_noscript', 'comments powered by Disqus.' }
22
- = link_to 'http://disqus.com', :class => 'dsq-brlink' do
23
- blog comments powered by <span class="logo-disqus">Disqus</span>
8
+ = link_to tt(".arrow_next"), next_post_path(resource), :class => "right" if resource.next
@@ -69,36 +69,6 @@ en:
69
69
  reset: reset
70
70
 
71
71
  atreides:
72
- comments:
73
- index:
74
- comments: comments
75
- approve: approve
76
- 'mark as spam': mark as spam
77
- delete: delete
78
- line:
79
- 'mark spam': mark as spam
80
- 'show comments only from this thread': show comments only from this thread
81
- 'this comment is': this comment is
82
- 'add commenter to': "add commenter to %{list}"
83
- 'all comments from': "all comments from"
84
- 'this thread': this thread
85
- see_also: See other comments from
86
- approved: approved
87
- approve: approve
88
- context: context
89
- delete: delete
90
- reply: reply
91
- edit: edit
92
- find: find
93
- sidebar:
94
- filter: filter
95
- approved: approved
96
- unapproved: unapproved
97
- flagged: flagged
98
- spam: spam
99
- deleted: deleted
100
- submit: submit
101
-
102
72
  features:
103
73
  index:
104
74
  drafted: Drafted
@@ -50,10 +50,6 @@ Rails.application.routes.draw do
50
50
  end
51
51
  resource :photos, :controller => "atreides/photos"
52
52
  end
53
- resources :comments, :controller => "atreides/comments" do
54
- put :update_many, :on => :collection
55
- delete :delete_many, :on => :collection
56
- end
57
53
  resources :videos, :only => [:index, :destroy], :controller => "atreides/videos" do
58
54
  post :reorder, :on => :collection
59
55
  end
@@ -3,7 +3,6 @@ require 'haml'
3
3
  require 'formtastic'
4
4
  require 'settingslogic'
5
5
  require 'will_paginate'
6
- require 'acts_as_commentable'
7
6
  require 'validates_email_format_of'
8
7
  require 'dropbox_sdk'
9
8
  require 'analytical'
@@ -1,4 +1,4 @@
1
1
  # Version string of the Atreides engine
2
2
  module Atreides
3
- VERSION = "2.0.1".freeze
3
+ VERSION = "2.0.2".freeze
4
4
  end
@@ -28,7 +28,7 @@ module Atreides
28
28
  generate('devise:install')
29
29
 
30
30
  %w(create_videos create_photos create_orders create_posts
31
- create_pages create_likes create_comments create_messages
31
+ create_pages create_likes create_messages
32
32
  create_features create_products create_line_items create_links
33
33
  create_votes create_tweets create_sessions create_sites
34
34
  create_content_parts add_userid_to_resources devise_create_users
@@ -47,7 +47,6 @@ module Atreides
47
47
  copy_file 'settings.yml', 'config/settings.yml'
48
48
  copy_file 'oembed.yml', 'config/oembed.yml'
49
49
  copy_file 'delayed_job.rb', 'config/initializers/delayed_job.rb'
50
- copy_file 'disqussion.rb', 'config/initializers/disqussion.rb'
51
50
  copy_file 'Procfile', 'Procfile'
52
51
  gsub_file 'config/application.rb', 'config.active_record.whitelist_attributes = true', 'config.active_record.whitelist_attributes = false'
53
52
  remove_file 'public/index.html'
@@ -9,7 +9,6 @@ class CreatePages < ActiveRecord::Migration
9
9
  t.timestamps
10
10
 
11
11
  t.integer :likes_count, :default => 0
12
- t.integer :comments_count, :default => 0
13
12
  t.integer :votes_count, :default => 0
14
13
 
15
14
  t.integer :parent_id
@@ -19,7 +18,6 @@ class CreatePages < ActiveRecord::Migration
19
18
  end
20
19
  add_index :pages, :slug
21
20
  add_index :pages, :likes_count
22
- add_index :pages, :comments_count
23
21
  add_index :pages, :votes_count
24
22
  add_index :pages, :parent_id
25
23
  add_index :pages, :post_id
@@ -10,7 +10,6 @@ class CreatePosts < ActiveRecord::Migration
10
10
  t.timestamps
11
11
  t.integer :tumblr_id, :limit => 8 # BigInt because new tumblr ids are longer
12
12
  t.integer :likes_count, :default => 0
13
- t.integer :comments_count, :default => 0
14
13
  t.integer :votes_count, :default => 0
15
14
  t.integer :twitter_id
16
15
  t.integer :facebook_id
@@ -25,7 +24,6 @@ class CreatePosts < ActiveRecord::Migration
25
24
  end
26
25
  add_index :posts, :slug
27
26
  add_index :posts, :likes_count
28
- add_index :posts, :comments_count
29
27
  add_index :posts, :votes_count
30
28
  add_index :posts, :twitter_id
31
29
  add_index :posts, :linkable_id
@@ -8,12 +8,10 @@ class CreateProducts < ActiveRecord::Migration
8
8
  t.string :price_currency
9
9
  t.string :state
10
10
  t.datetime :published_at
11
- t.integer :comments_count, :default => 0
12
11
  t.integer :likes_count, :default => 0
13
12
  t.integer :votes_count, :default => 0
14
13
  t.timestamps
15
14
  end
16
- add_index :products, :comments_count
17
15
  add_index :products, :likes_count
18
16
  add_index :products, :votes_count
19
17
  end
@@ -11,10 +11,6 @@ common: &common
11
11
  password:
12
12
  profile_id:
13
13
  domain: atreides.dev
14
- disqus:
15
- key:
16
- secret:
17
- forum:
18
14
  tumblr:
19
15
  blog:
20
16
  email:
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: atreides
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: 2.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -16,35 +16,19 @@ dependencies:
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
- - - ~>
19
+ - - ! '>='
20
20
  - !ruby/object:Gem::Version
21
- version: 3.0.0
21
+ version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  none: false
26
26
  requirements:
27
- - - ~>
27
+ - - ! '>='
28
28
  - !ruby/object:Gem::Version
29
- version: 3.0.0
29
+ version: '0'
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: acts-as-taggable-on
32
- requirement: !ruby/object:Gem::Requirement
33
- none: false
34
- requirements:
35
- - - ~>
36
- - !ruby/object:Gem::Version
37
- version: 2.3.3
38
- type: :runtime
39
- prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - ~>
44
- - !ruby/object:Gem::Version
45
- version: 2.3.3
46
- - !ruby/object:Gem::Dependency
47
- name: acts_as_commentable
48
32
  requirement: !ruby/object:Gem::Requirement
49
33
  none: false
50
34
  requirements:
@@ -205,22 +189,6 @@ dependencies:
205
189
  version: '0'
206
190
  - !ruby/object:Gem::Dependency
207
191
  name: devise
208
- requirement: !ruby/object:Gem::Requirement
209
- none: false
210
- requirements:
211
- - - ~>
212
- - !ruby/object:Gem::Version
213
- version: 2.1.2
214
- type: :runtime
215
- prerelease: false
216
- version_requirements: !ruby/object:Gem::Requirement
217
- none: false
218
- requirements:
219
- - - ~>
220
- - !ruby/object:Gem::Version
221
- version: 2.1.2
222
- - !ruby/object:Gem::Dependency
223
- name: disqussion
224
192
  requirement: !ruby/object:Gem::Requirement
225
193
  none: false
226
194
  requirements:
@@ -320,17 +288,17 @@ dependencies:
320
288
  requirement: !ruby/object:Gem::Requirement
321
289
  none: false
322
290
  requirements:
323
- - - ~>
291
+ - - ! '>='
324
292
  - !ruby/object:Gem::Version
325
- version: 2.2.1
293
+ version: '0'
326
294
  type: :runtime
327
295
  prerelease: false
328
296
  version_requirements: !ruby/object:Gem::Requirement
329
297
  none: false
330
298
  requirements:
331
- - - ~>
299
+ - - ! '>='
332
300
  - !ruby/object:Gem::Version
333
- version: 2.2.1
301
+ version: '0'
334
302
  - !ruby/object:Gem::Dependency
335
303
  name: grackle
336
304
  requirement: !ruby/object:Gem::Requirement
@@ -512,17 +480,17 @@ dependencies:
512
480
  requirement: !ruby/object:Gem::Requirement
513
481
  none: false
514
482
  requirements:
515
- - - ! '>='
483
+ - - '='
516
484
  - !ruby/object:Gem::Version
517
- version: '0'
485
+ version: 3.1.4
518
486
  type: :runtime
519
487
  prerelease: false
520
488
  version_requirements: !ruby/object:Gem::Requirement
521
489
  none: false
522
490
  requirements:
523
- - - ! '>='
491
+ - - '='
524
492
  - !ruby/object:Gem::Version
525
- version: '0'
493
+ version: 3.1.4
526
494
  - !ruby/object:Gem::Dependency
527
495
  name: rails
528
496
  requirement: !ruby/object:Gem::Requirement
@@ -640,33 +608,33 @@ dependencies:
640
608
  requirement: !ruby/object:Gem::Requirement
641
609
  none: false
642
610
  requirements:
643
- - - ~>
611
+ - - ! '>='
644
612
  - !ruby/object:Gem::Version
645
- version: 2.1.0
613
+ version: '0'
646
614
  type: :runtime
647
615
  prerelease: false
648
616
  version_requirements: !ruby/object:Gem::Requirement
649
617
  none: false
650
618
  requirements:
651
- - - ~>
619
+ - - ! '>='
652
620
  - !ruby/object:Gem::Version
653
- version: 2.1.0
621
+ version: '0'
654
622
  - !ruby/object:Gem::Dependency
655
623
  name: twitter
656
624
  requirement: !ruby/object:Gem::Requirement
657
625
  none: false
658
626
  requirements:
659
- - - ~>
627
+ - - ! '>='
660
628
  - !ruby/object:Gem::Version
661
- version: 3.6.0
629
+ version: '0'
662
630
  type: :runtime
663
631
  prerelease: false
664
632
  version_requirements: !ruby/object:Gem::Requirement
665
633
  none: false
666
634
  requirements:
667
- - - ~>
635
+ - - ! '>='
668
636
  - !ruby/object:Gem::Version
669
- version: 3.6.0
637
+ version: '0'
670
638
  - !ruby/object:Gem::Dependency
671
639
  name: uglifier
672
640
  requirement: !ruby/object:Gem::Requirement
@@ -1222,7 +1190,6 @@ files:
1222
1190
  - lib/generators/atreides/USAGE
1223
1191
  - lib/generators/templates/add_role_to_users.rb
1224
1192
  - lib/generators/templates/add_userid_to_resources.rb
1225
- - lib/generators/templates/create_comments.rb
1226
1193
  - lib/generators/templates/create_content_parts.rb
1227
1194
  - lib/generators/templates/create_features.rb
1228
1195
  - lib/generators/templates/create_likes.rb
@@ -1243,7 +1210,6 @@ files:
1243
1210
  - lib/generators/templates/create_votes.rb
1244
1211
  - lib/generators/templates/delayed_job.rb
1245
1212
  - lib/generators/templates/devise_create_users.rb
1246
- - lib/generators/templates/disqussion.rb
1247
1213
  - lib/generators/templates/em-net-http_override.rb
1248
1214
  - lib/generators/templates/initializer.rb
1249
1215
  - lib/generators/templates/new_relic.rb
@@ -1261,7 +1227,6 @@ files:
1261
1227
  - app/assets/javascripts/atreides/admin_base.js.erb
1262
1228
  - app/assets/javascripts/atreides/admin_edit.js
1263
1229
  - app/assets/javascripts/atreides/application.js
1264
- - app/assets/javascripts/atreides/comments.coffee
1265
1230
  - app/assets/javascripts/atreides/public.js
1266
1231
  - app/assets/javascripts/atreides/public_base.js.erb
1267
1232
  - app/assets/javascripts/atreides/terryblr.js
@@ -1274,7 +1239,6 @@ files:
1274
1239
  - app/assets/stylesheets/atreides/public.css
1275
1240
  - app/assets/stylesheets/atreides/public_base.css
1276
1241
  - app/assets/stylesheets/atreides/swfupload.css.erb
1277
- - app/controllers/admin/atreides/comments_controller.rb
1278
1242
  - app/controllers/admin/atreides/content_parts_controller.rb
1279
1243
  - app/controllers/admin/atreides/dropbox_controller.rb
1280
1244
  - app/controllers/admin/atreides/facebook_controller.rb
@@ -1295,13 +1259,11 @@ files:
1295
1259
  - app/controllers/atreides/admin_controller.rb
1296
1260
  - app/controllers/atreides/admin_home_controller.rb
1297
1261
  - app/controllers/atreides/application_controller.rb
1298
- - app/controllers/atreides/comments_controller.rb
1299
1262
  - app/controllers/atreides/home_controller.rb
1300
1263
  - app/controllers/atreides/likes_controller.rb
1301
1264
  - app/controllers/atreides/pages_controller.rb
1302
1265
  - app/controllers/atreides/posts_controller.rb
1303
1266
  - app/controllers/atreides/public_controller.rb
1304
- - app/helpers/admin/atreides/comments_helper.rb
1305
1267
  - app/helpers/admin/atreides/dropbox_helper.rb
1306
1268
  - app/helpers/admin/atreides/features_helper.rb
1307
1269
  - app/helpers/admin/atreides/github_helper.rb
@@ -1325,7 +1287,6 @@ files:
1325
1287
  - app/inputs/price_input.rb
1326
1288
  - app/inputs/underline_input.rb
1327
1289
  - app/models/atreides/ability.rb
1328
- - app/models/atreides/comment.rb
1329
1290
  - app/models/atreides/content_part.rb
1330
1291
  - app/models/atreides/facebook_user.rb
1331
1292
  - app/models/atreides/feature.rb
@@ -1352,10 +1313,6 @@ files:
1352
1313
  - app/models/tumblr_post_publisher_job.rb
1353
1314
  - app/models/tw_post_publisher_job.rb
1354
1315
  - app/views/admin/_edit_head_content.html.haml
1355
- - app/views/admin/atreides/comments/_line.html.haml
1356
- - app/views/admin/atreides/comments/_sidebar.html.haml
1357
- - app/views/admin/atreides/comments/create.js.haml
1358
- - app/views/admin/atreides/comments/index.html.haml
1359
1316
  - app/views/admin/atreides/content_parts/_form.html.haml
1360
1317
  - app/views/admin/atreides/content_parts/_photos.html.haml
1361
1318
  - app/views/admin/atreides/content_parts/_text.html.haml
@@ -1,50 +0,0 @@
1
- $('#filter-list').change () ->
2
- console.log 'go..'
3
- self = $(this)
4
- setTimeout () ->
5
- self.submit()
6
- , 30
7
-
8
- # set up comment expand/collapse links.
9
- $('.comment').each (index, comment) ->
10
- # Don't create a new event for comments that have already been loaded.
11
- return true if comment._loaded
12
- comment._loaded = true;
13
-
14
- $(this).click (event) ->
15
- comment = $(this)
16
-
17
- # Allow any user interact-able object (links, inputs, etc.) to function normally.
18
- if ($(event.target).is('a,:input') || $(event.target).closest('a,:input').length > 0)
19
- return true
20
-
21
- if (comment.hasClass('expanded'))
22
- comment.removeClass('expanded')
23
- else
24
- comment.addClass('expanded').removeClass('unread')
25
- return false
26
-
27
- if $('#expandall').hasClass('collapseall')
28
- for post in posts
29
- $('#comment-' + post.id).find('.comment-excerpt-block').click()
30
-
31
- # $('.comment').live 'click', () ->
32
- # $(this).toggleClass "expanded"
33
-
34
- $('.actions form input[type=button]').click () ->
35
- unless _.isEmpty getSelectedCommentId()
36
- els = createInputCommentIds()
37
- $(this).parent('form').append(els).submit()
38
- else
39
- console.log "Please select at least one comment."
40
- return false
41
-
42
- createInputCommentIds = () ->
43
- els = ''
44
- _.each getSelectedCommentId(), (cid) ->
45
- els += "<input type='hidden' name='comment_ids[]' value='" + cid + "'>"
46
- return els
47
-
48
- getSelectedCommentId = () ->
49
- _.map $('.comment-select input[type=checkbox]:checked'), (el) ->
50
- $(el).attr("id").split("-")[1]
@@ -1,47 +0,0 @@
1
- require 'disqussion'
2
- class Admin::Atreides::CommentsController < Atreides::AdminController
3
-
4
- def index
5
- super
6
- end
7
-
8
- def update_many
9
- posts = Disqussion::Posts.new
10
- case params[:comment_action]
11
- when 'approve'
12
- posts.approve params[:comment_ids] if params[:comment_ids]
13
- when 'mark-spam'
14
- posts.spam params[:comment_ids] if params[:comment_ids]
15
- end if params[:comment_action]
16
- redirect_to admin_comments_path
17
- end
18
-
19
- def delete_many
20
- Disqussion::Posts.new.remove params[:comment_ids] if params[:comment_ids]
21
- redirect_to admin_comments_path
22
- end
23
-
24
- private
25
-
26
- # Query options are passed this way:
27
- # from:username
28
- # email:joe@bar.com
29
- # ip:127.0.0.1
30
- # thread:29372
31
- def extract_options
32
- @options ||= begin
33
- opts = {}
34
- opts[:query] = params[:query] if params.has_key?(:query) && %w(from email ip thread).include?(params[:query].split(':').first)
35
- opts[:include] = params[:filter] if params.has_key?(:filter)
36
- opts[:cursor] = params[:cursor] if params.has_key?(:cursor)
37
- opts[:limit] = params[:limit] if params.has_key?(:limit)
38
- opts
39
- end
40
- end
41
-
42
- def collection
43
- @collection ||= Disqussion::Forums.new.listPosts(Settings.disqus.forum, extract_options)
44
- end
45
-
46
- include Atreides::Extendable
47
- end
@@ -1,43 +0,0 @@
1
- class Atreides::CommentsController < Atreides::PublicController
2
- helper "Atreides::Posts"
3
- before_filter :require_user, :only => [:create, :update]
4
-
5
- def index
6
- super do |wants|
7
- wants.html { head :not_found }
8
- wants.json { render :json => collection.to_json }
9
- wants.xml { render :xml => collection.to_xml }
10
- end
11
- end
12
-
13
- def create
14
- build_resource.request = request
15
- super do |success, failure|
16
- success.html { head :ok, :location => post_path(parent) }
17
- success.js
18
- failure.wants.html { head :error, :message => resource.errors.full_messages.to_sentence }
19
- failure.wants.js
20
- end
21
- end
22
-
23
- private
24
-
25
- def resource
26
- @comment ||= parent.comments.find params[:id]
27
- end
28
-
29
- def build_resource
30
- @comment ||= Comment.new params[:comment].update(:user => current_user, :commentable => parent)
31
- end
32
-
33
- def collection
34
- @comments ||= parent.comments.approved.paginate :page => params[:page]
35
- end
36
-
37
- def parent
38
- @parent ||= Atreides::Post.find_by_slug!(params[:post_id]) ||
39
- Atreides::Post.find(params[:post_id])
40
- end
41
-
42
- include Atreides::Extendable
43
- end
@@ -1,8 +0,0 @@
1
- module Admin::Atreides::CommentsHelper
2
-
3
- def author_column(comment)
4
- comment.user ? comment.user.full_name : "Anonymous"
5
- end
6
-
7
- include Atreides::Extendable
8
- end
@@ -1,93 +0,0 @@
1
- class Atreides::Comment < Atreides::Base
2
-
3
- acts_as_commentable
4
-
5
- #
6
- # Constants
7
- #
8
-
9
- #
10
- # Associatons
11
- #
12
- belongs_to :commentable, :polymorphic => true, :counter_cache => true
13
- belongs_to :user
14
-
15
- #
16
- # Validations
17
- #
18
- validates_presence_of :comment
19
- validate :spam_filter, :on => :create
20
-
21
- def spam_filter
22
- errors.add(:base, "Unfortunately this comment is considered spam by Akismet. It will show up once it has been approved by the administrator.") if spam?
23
- end
24
-
25
- #
26
- # Scopes
27
- #
28
- default_scope order('created_at ASC')
29
- scope :moderated, where("moderated_at is not null")
30
- scope :approved, where("moderated_at is null")
31
-
32
- #
33
- # Callbacks
34
- #
35
-
36
- #
37
- # Class Methods
38
- #
39
- class << self
40
- def base_class
41
- self
42
- end
43
- end
44
-
45
- #
46
- # Instance Methods
47
- #
48
- def moderated?
49
- moderated_at?
50
- end
51
-
52
- def moderate!
53
- update_attributes!(:moderated_at => Time.zone.now)
54
- end
55
-
56
- def request=(request)
57
- @user_ip = request.remote_ip
58
- @user_agent = request.env['HTTP_USER_AGENT']
59
- @referrer = request.env['HTTP_REFERER']
60
- @has_request = true
61
- end
62
-
63
- def spam?
64
- result = @has_request ? Akismetor.spam?(akismet_attributes) : false
65
- moderate! if result
66
- result
67
- end
68
-
69
- def akismet_attributes
70
- {
71
- :key => 'abc123',
72
- :blog => "http://#{Settings.domain}",
73
- :user_ip => @user_ip,
74
- :user_agent => @user_agent,
75
- :comment_author => user.full_name,
76
- :comment_author_email => user.email,
77
- # :comment_author_url => site_url,
78
- :comment_content => comment
79
- }
80
- end
81
-
82
- def mark_as_spam!
83
- moderate!
84
- Akismetor.submit_spam(akismet_attributes)
85
- end
86
-
87
- def mark_as_ham!
88
- update_attribute(:moderated_at, nil)
89
- Akismetor.submit_ham(akismet_attributes)
90
- end
91
-
92
- include Atreides::Extendable
93
- end
@@ -1,60 +0,0 @@
1
- .comment.span-17{:id => "comment-#{comment.id}", :class => "#{'approved' if comment.isApproved}"}
2
- %label.span-1.comment-select.approved{:for => "check-#{comment.id}"}
3
- = check_box_tag "", nil, false, :id => "check-#{comment.id}"
4
- = hidden_field_tag "", comment.id
5
- / Excerpt block. This is shown by default and hidden when the parent is given the class "expanded"
6
- .comment-excerpt-block.span-16.last
7
- .comment-avatar
8
- = image_tag comment.author.avatar.cache, :class => "comment-avatar", :size => "32x32"
9
- .comment-excerpt
10
- %p
11
- %span.comment-name
12
- = comment.author.name
13
- %span
14
- = "(#{comment.author.email}):" unless comment.author.email.blank?
15
- %span.comment-body= comment.raw_message
16
- .comment-time
17
- Posted
18
- = distance_of_time_in_words seconds_from_now(Time.parse(comment.createdAt))
19
- ago.
20
- .clear
21
- / End excerpt block
22
- / hidden by default, shown by javascript when expanded.
23
- .comment-header{:style => "display:none"}
24
- .comment-user
25
- %a{:href => "#", :rel => "userlist"}
26
- = image_tag comment.author.avatar.cache, :class => "comment-avatar", :size => "32x32"
27
- .comment-name
28
- = link_to comment.author.name, comment.author.url, :class => "profile-launcher", "data-profile-username" => comment.author.username, :target => "_blank"
29
- %span
30
- != "(#{mail_to(comment.author.email)})" unless comment.author.email.blank?
31
- / %small
32
- / = link_to "#{comment.ipAddress}.", "?query=ip:#{comment.ipAddress}"
33
- / = link_to comment.author.url, comment.author.url, :target => "_blank"
34
- .comment-time
35
- Posted
36
- = distance_of_time_in_words seconds_from_now(Time.parse(comment.createdAt))
37
- ago.
38
- .clear
39
- / hidden by default, shown by javascript when expanded.
40
- .comment-body{:style => "display:none"}
41
- .content
42
- .content-wrapper
43
- %p= comment.raw_message
44
- .media
45
- / hidden by default, shown by javascript when expanded.
46
- .comment-footer.clear
47
- .comment-actions-left.span-12.prepend-1
48
- = ttc(".see_also")
49
- \:
50
- = link_to comment.author.email, "?query=email:#{comment.author.email}"
51
- = link_to comment.ipAddress, "?query=ip:#{comment.ipAddress}"
52
- = link_to tt(".this thread"), "?query=thread:#{comment.thread}"
53
-
54
- .comment-actions-left.span-4.last
55
- = ttc ".this comment is"
56
- %span.txt-approved= comment.isApproved ? tt('.approved') : tt('.not yet approved')
57
- %a.add-userlist.blacklist{:href => "#", :style => "display: none; "}
58
- = ttc ".add commenter to", :list => content_tag(:strong, "Blacklist")
59
- %a.add-userlist.whitelist{:href => "#", :style => "display: none; "}
60
- = ttc ".add commenter to", :list => content_tag(:strong, "Whitelist")
@@ -1,52 +0,0 @@
1
- - content_for :sidebar do
2
- #filters.comments-panel-wrapper
3
- %ul.summary
4
- %li.new-content
5
- = link_to "Disqus.com", "http://#{Settings.disqus.forum}.disqus.com/admin/moderate/"
6
-
7
- %li.divider
8
- %li
9
- %h3= ttt '.filter'
10
- = form_tag '', :method => :get, :id => "filter-list", :class => 'formtastic' do
11
- %ul
12
- %li.machine_tag
13
- %label#filter-approved{:for => "show_approved"}
14
- / Filter's default to "approved"
15
- - if !params.has_key?(:filter) || params.has_key?(:filter) && params[:filter].include?("approved")
16
- %input#show_approved{:checked => "checked", :type => "checkbox", :name => "filter[]", :value => "approved"}/
17
- - else
18
- %input#show_approved{:type => "checkbox", :name => "filter[]", :value => "approved"}/
19
- = ttt ".approved"
20
-
21
- %li.machine_tag
22
- %label#filter-unapproved{:for => "show_unapproved"}
23
- - if params.has_key?(:filter) && params[:filter].include?("unapproved")
24
- %input#show_unapproved{:checked => "checked", :type => "checkbox", :name => "filter[]", :value => "unapproved"}/
25
- - else
26
- %input#show_unapproved{:type => "checkbox", :name => "filter[]", :value => "unapproved"}/
27
- = ttt ".unapproved"
28
- %li.machine_tag
29
- %label#filter-flagged{:for => "show_flagged"}
30
- - if params.has_key?(:filter) && params[:filter].include?("flagged")
31
- %input#show_flagged{:checked => "checked", :type => "checkbox", :name => "filter[]", :value => "flagged"}/
32
- - else
33
- %input#show_flagged{:type => "checkbox", :name => "filter[]", :value => "flagged"}/
34
- = ttt ".flagged"
35
- %li.machine_tag
36
- %label#filter-spam.hidden{:for => "show_spam"}
37
- - if params.has_key?(:filter) && params[:filter].include?("spam")
38
- %input#show_spam{:checked => "checked", :type => "checkbox", :type => "checkbox", :name => "filter[]", :value => "spam"}/
39
- - else
40
- %input#show_spam{:type => "checkbox", :type => "checkbox", :name => "filter[]", :value => "spam"}/
41
- = ttt ".spam"
42
- %li.machine_tag
43
- %label#filter-deleted.hidden{:for => "show_deleted"}
44
- - if params.has_key?(:filter) && params[:filter].include?("deleted")
45
- %input#show_spam{:checked => "checked", :type => "checkbox", :type => "checkbox", :name => "filter[]", :value => "deleted"}/
46
- - else
47
- %input#show_spam{:type => "checkbox", :type => "checkbox", :name => "filter[]", :value => "deleted"}/
48
- = ttt ".deleted"
49
- %li.machine_tag
50
- %label#filter-button.hidden{:for => "submit_button", :style => "display:none"}
51
- %input#submit_button{:type => "submit"}
52
- = ttt ".submit"
@@ -1 +0,0 @@
1
- $("##{parent_object.dom_id('comments')}").html("#{escape_javascript(comment_item(resource))}")
@@ -1,34 +0,0 @@
1
- = render :partial => 'sidebar'
2
-
3
- %h2 #{ttt :'.comments'}
4
-
5
- .clear
6
-
7
- #comments_list
8
- - @collection.response.each do |comment|
9
- = render :partial => 'line', :locals => { :comment => comment}
10
-
11
- .clear
12
-
13
- %fieldset#comment_buttons.buttons.actions
14
- %ol
15
- %li.commit
16
- = form_tag '/admin/comments/update_many', :method => :put do
17
- = hidden_field_tag "comment_action", "approve"
18
- %input#approve-selected.create{:type => "button", :value => ttc(".approve")}
19
- %li.delete
20
- = form_tag '/admin/comments/delete_many', :method => :delete do
21
- %input#delete-selected.cancel{:type => "button", :value => ttc(".delete")}
22
- %li.cancel
23
- = form_tag '/admin/comments/update_many', :method => :put do
24
- = hidden_field_tag "comment_action", "mark-spam"
25
- %input#mark-as-spam-selected.cancel{:type => "button", :value => ttc(".mark as spam")}
26
-
27
- #pagination.pagination.clear
28
- - if @collection.cursor.hasPrev
29
- .previous= link_to tt("Previous"), admin_comments_path(params.merge(:cursor => @collection.cursor.prev))
30
- - if @collection.cursor.hasNext
31
- .next= link_to tt("Next"), admin_comments_path(params.merge(:cursor => @collection.cursor.next))
32
-
33
- - content_for :js do
34
- = javascript_include_tag 'atreides/comments'
@@ -1,19 +0,0 @@
1
- class CreateComments < ActiveRecord::Migration
2
- def self.up
3
- create_table :comments, :force => true do |t|
4
- t.string :title, :limit => 50, :default => ""
5
- t.text :comment, :default => ""
6
- t.references :commentable, :polymorphic => true
7
- t.integer :user_id
8
- t.datetime :moderated_at
9
- t.timestamps
10
- end
11
- add_index :comments, :commentable_type
12
- add_index :comments, :commentable_id
13
- add_index :comments, :user_id
14
- end
15
-
16
- def self.down
17
- drop_table :comments
18
- end
19
- end
@@ -1,30 +0,0 @@
1
- require 'disqussion'
2
-
3
- Disqussion.configure do |config|
4
- config.api_key = Settings.disqus.key
5
- config.api_secret = Settings.disqus.secret
6
- # config.adapter = :em_synchrony
7
- end
8
-
9
- Disqussion::Posts.class_eval %Q{
10
- class << self
11
- def columns_hash
12
- a = {}
13
- self.column_names.each do |key|
14
- a.merge! key.to_sym => String
15
- end
16
- a
17
- end
18
-
19
- def column_names
20
- ["isJuliaFlagged","isFlagged","forum","parent","media","isApproved","dislikes","raw_message","isSpam","thread","points","createdAt","message","isHighlighted","ipAddress","id","isDeleted","likes","author"]
21
- end
22
- end
23
- }
24
-
25
- require 'hashie/rash'
26
- Hashie::Rash.class_eval %Q{
27
- def dom_id(prefix)
28
- prefix + "_" + self.id
29
- end
30
- }