georgia 0.7.3 → 0.7.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +6 -9
  3. data/app/assets/javascripts/georgia/ckeditor/config.js +0 -2
  4. data/app/controllers/georgia/dashboard_controller.rb +4 -2
  5. data/app/mailers/georgia/notifier.rb +0 -2
  6. data/app/models/acts_as_taggable_on/tag.rb +9 -0
  7. data/app/models/ckeditor/asset.rb +6 -3
  8. data/app/models/georgia/page.rb +6 -1
  9. data/config/routes.rb +0 -12
  10. data/lib/georgia.rb +2 -2
  11. data/lib/georgia/engine.rb +0 -10
  12. data/lib/georgia/indexer.rb +25 -7
  13. data/lib/georgia/indexer/extensions/solr_adapter/acts_as_taggable_on_tag.rb +21 -0
  14. data/lib/georgia/indexer/extensions/solr_adapter/ckeditor_asset.rb +46 -0
  15. data/lib/georgia/indexer/extensions/solr_adapter/georgia_page.rb +75 -0
  16. data/lib/georgia/indexer/extensions/tire_adapter/acts_as_taggable_on_tag.rb +24 -0
  17. data/lib/georgia/indexer/extensions/tire_adapter/ckeditor_asset.rb +41 -0
  18. data/lib/georgia/indexer/extensions/tire_adapter/georgia_page.rb +55 -0
  19. data/lib/georgia/indexer/solr_adapter.rb +9 -16
  20. data/lib/georgia/indexer/tire_adapter.rb +8 -14
  21. data/lib/georgia/version.rb +1 -1
  22. metadata +17 -89
  23. data/app/assets/javascripts/georgia/components/tables/messages.js.coffee +0 -59
  24. data/app/controllers/georgia/messages_controller.rb +0 -66
  25. data/app/controllers/messages_controller.rb +0 -29
  26. data/app/decorators/georgia/message_decorator.rb +0 -21
  27. data/app/decorators/georgia/messages_decorator.rb +0 -4
  28. data/app/helpers/georgia/messages_helper.rb +0 -9
  29. data/app/models/georgia/message.rb +0 -30
  30. data/app/presenters/georgia/message_actions_presenter.rb +0 -51
  31. data/app/views/georgia/header/_messages.html.erb +0 -3
  32. data/app/views/georgia/messages/_message.html.erb +0 -26
  33. data/app/views/georgia/messages/destroy.js.erb +0 -3
  34. data/app/views/georgia/messages/search.html.erb +0 -58
  35. data/app/views/georgia/messages/show.html.erb +0 -46
  36. data/app/views/messages/create.js.erb +0 -0
  37. data/app/workers/spam_worker.rb +0 -12
  38. data/lib/georgia/indexer/adapter.rb +0 -10
  39. data/lib/georgia/indexer/solr/acts_as_taggable_on/tag.rb +0 -17
  40. data/lib/georgia/indexer/solr/ckeditor/asset.rb +0 -43
  41. data/lib/georgia/indexer/solr/georgia/message.rb +0 -31
  42. data/lib/georgia/indexer/solr/georgia/page.rb +0 -71
  43. data/lib/georgia/indexer/tire/ckeditor/asset.rb +0 -38
  44. data/lib/georgia/indexer/tire/georgia/message.rb +0 -41
  45. data/lib/georgia/indexer/tire/georgia/page.rb +0 -54
@@ -0,0 +1,55 @@
1
+ require 'active_support/concern'
2
+
3
+ module Georgia
4
+ module Indexer
5
+ class TireAdapter
6
+ module GeorgiaPageExtension
7
+
8
+ extend ActiveSupport::Concern
9
+
10
+ included do
11
+
12
+ include ::Tire::Model::Search
13
+ include ::Tire::Model::Callbacks
14
+
15
+ def to_indexed_json
16
+ keywords = current_revision.present? ? current_revision.contents.map(&:keyword_list).flatten.uniq.join(', ') : ""
17
+ tags = tag_list.join(', ')
18
+ class_name = self.class.name
19
+
20
+ indexed_hash = {
21
+ title: title,
22
+ text: text,
23
+ excerpt: excerpt,
24
+ keywords: keywords,
25
+ url: url,
26
+ template: template,
27
+ tags: tags,
28
+ tag_list: tag_list,
29
+ publish_state: publish_state,
30
+ class_name: class_name,
31
+ updated_at: updated_at.strftime('%F'),
32
+ revision_id: revision_id
33
+ }
34
+ indexed_hash.to_json
35
+ end
36
+
37
+ def self.search model, params
38
+ model.tire.search(page: (params[:page] || 1), per_page: (params[:per] || 25)) do
39
+ if params[:query].present?
40
+ query do
41
+ boolean do
42
+ must { string params[:query], default_operator: "AND" }
43
+ end
44
+ end
45
+ sort { by (params[:o] || :updated_at), (params[:dir] || :desc) }
46
+ end
47
+ end.results
48
+ end
49
+
50
+ end
51
+
52
+ end
53
+ end
54
+ end
55
+ end
@@ -1,23 +1,16 @@
1
1
  require 'sunspot_rails'
2
- require 'georgia/indexer/solr/georgia/page'
3
- require 'georgia/indexer/solr/georgia/message'
4
- require 'georgia/indexer/solr/ckeditor/asset'
5
- require 'georgia/indexer/solr/acts_as_taggable_on/tag'
2
+ Dir[File.join(File.dirname(__FILE__), 'extensions', 'solr_adapter', '*.rb')].each {|file| require file }
6
3
 
7
- module Georgia::Indexer
8
- class SolrAdapter < Adapter
4
+ module Georgia
5
+ module Indexer
6
+ class SolrAdapter
9
7
 
10
- def initialize
11
- extend_models
12
- end
13
-
14
- private
8
+ # Delegate search_index to the model
9
+ # Search method is taken by Sunspot
10
+ def search model, params
11
+ model.search_index model, params
12
+ end
15
13
 
16
- def extend_models
17
- ::Georgia::Page.send(:extend, Georgia::Indexer::Solr::Georgia::Page)
18
- ::Georgia::Message.send(:extend, Georgia::Indexer::Solr::Georgia::Message)
19
- ::Ckeditor::Asset.send(:extend, Georgia::Indexer::Solr::Ckeditor::Asset)
20
- ::ActsAsTaggableOn::Tag.send(:extend, Georgia::Indexer::Solr::ActsAsTaggableOn::Tag)
21
14
  end
22
15
  end
23
16
  end
@@ -1,21 +1,15 @@
1
1
  require 'tire'
2
- require 'georgia/indexer/tire/georgia/page'
3
- require 'georgia/indexer/tire/georgia/message'
4
- require 'georgia/indexer/tire/ckeditor/asset'
2
+ Dir[File.join(File.dirname(__FILE__), 'extensions', 'tire_adapter', '*.rb')].each {|file| require file }
5
3
 
6
- module Georgia::Indexer
7
- class TireAdapter < Adapter
4
+ module Georgia
5
+ module Indexer
6
+ class TireAdapter
8
7
 
9
- def initialize
10
- extend_models
11
- end
12
-
13
- private
8
+ # Delegate search to the model
9
+ def search model, params
10
+ model.search model, params
11
+ end
14
12
 
15
- def extend_models
16
- ::Georgia::Page.send(:extend, Georgia::Indexer::Tire::Georgia::Page)
17
- ::Georgia::Message.send(:extend, Georgia::Indexer::Tire::Georgia::Message)
18
- ::Ckeditor::Asset.send(:extend, Georgia::Indexer::Tire::Ckeditor::Asset)
19
13
  end
20
14
  end
21
15
  end
@@ -1,3 +1,3 @@
1
1
  module Georgia
2
- VERSION = "0.7.3"
2
+ VERSION = "0.7.4"
3
3
  end
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: georgia
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.3
4
+ version: 0.7.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mathieu Gagné
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-30 00:00:00.000000000 Z
11
+ date: 2014-02-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - '>='
18
18
  - !ruby/object:Gem::Version
19
- version: 3.2.1
19
+ version: 3.2.6
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - '>='
25
25
  - !ruby/object:Gem::Version
26
- version: 3.2.1
26
+ version: 3.2.6
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: jquery-rails
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -168,16 +168,16 @@ dependencies:
168
168
  name: ckeditor
169
169
  requirement: !ruby/object:Gem::Requirement
170
170
  requirements:
171
- - - '>='
171
+ - - '='
172
172
  - !ruby/object:Gem::Version
173
- version: '0'
173
+ version: 4.0.8
174
174
  type: :runtime
175
175
  prerelease: false
176
176
  version_requirements: !ruby/object:Gem::Requirement
177
177
  requirements:
178
- - - '>='
178
+ - - '='
179
179
  - !ruby/object:Gem::Version
180
- version: '0'
180
+ version: 4.0.8
181
181
  - !ruby/object:Gem::Dependency
182
182
  name: carrierwave
183
183
  requirement: !ruby/object:Gem::Requirement
@@ -346,20 +346,6 @@ dependencies:
346
346
  - - '>'
347
347
  - !ruby/object:Gem::Version
348
348
  version: '1'
349
- - !ruby/object:Gem::Dependency
350
- name: cloudfiles
351
- requirement: !ruby/object:Gem::Requirement
352
- requirements:
353
- - - '>='
354
- - !ruby/object:Gem::Version
355
- version: '0'
356
- type: :runtime
357
- prerelease: false
358
- version_requirements: !ruby/object:Gem::Requirement
359
- requirements:
360
- - - '>='
361
- - !ruby/object:Gem::Version
362
- version: '0'
363
349
  - !ruby/object:Gem::Dependency
364
350
  name: mousetrap-rails
365
351
  requirement: !ruby/object:Gem::Requirement
@@ -388,20 +374,6 @@ dependencies:
388
374
  - - '>='
389
375
  - !ruby/object:Gem::Version
390
376
  version: '0'
391
- - !ruby/object:Gem::Dependency
392
- name: sendgrid
393
- requirement: !ruby/object:Gem::Requirement
394
- requirements:
395
- - - '>='
396
- - !ruby/object:Gem::Version
397
- version: '0'
398
- type: :runtime
399
- prerelease: false
400
- version_requirements: !ruby/object:Gem::Requirement
401
- requirements:
402
- - - '>='
403
- - !ruby/object:Gem::Version
404
- version: '0'
405
377
  - !ruby/object:Gem::Dependency
406
378
  name: routing_concerns
407
379
  requirement: !ruby/object:Gem::Requirement
@@ -416,34 +388,6 @@ dependencies:
416
388
  - - '>='
417
389
  - !ruby/object:Gem::Version
418
390
  version: '0'
419
- - !ruby/object:Gem::Dependency
420
- name: rakismet
421
- requirement: !ruby/object:Gem::Requirement
422
- requirements:
423
- - - '>='
424
- - !ruby/object:Gem::Version
425
- version: '0'
426
- type: :runtime
427
- prerelease: false
428
- version_requirements: !ruby/object:Gem::Requirement
429
- requirements:
430
- - - '>='
431
- - !ruby/object:Gem::Version
432
- version: '0'
433
- - !ruby/object:Gem::Dependency
434
- name: sidekiq
435
- requirement: !ruby/object:Gem::Requirement
436
- requirements:
437
- - - '>='
438
- - !ruby/object:Gem::Version
439
- version: '0'
440
- type: :runtime
441
- prerelease: false
442
- version_requirements: !ruby/object:Gem::Requirement
443
- requirements:
444
- - - '>='
445
- - !ruby/object:Gem::Version
446
- version: '0'
447
391
  description: This is simply the best CMS in town. User authentication, widgets, slideshows,
448
392
  easy UI with drag and drop, publishing system, versioning, etc.
449
393
  email:
@@ -460,7 +404,6 @@ files:
460
404
  - app/assets/javascripts/georgia/components/tags.js.coffee
461
405
  - app/assets/javascripts/georgia/components/media-library.js.coffee
462
406
  - app/assets/javascripts/georgia/components/flash.js.coffee
463
- - app/assets/javascripts/georgia/components/tables/messages.js.coffee
464
407
  - app/assets/javascripts/georgia/components/tables/media.js.coffee
465
408
  - app/assets/javascripts/georgia/components/tables/pages.js.coffee
466
409
  - app/assets/javascripts/georgia/components/tables/checkbox.js.coffee
@@ -586,9 +529,7 @@ files:
586
529
  - app/decorators/georgia/pages_decorator.rb
587
530
  - app/decorators/georgia/application_decorator.rb
588
531
  - app/decorators/georgia/revision_decorator.rb
589
- - app/decorators/georgia/message_decorator.rb
590
532
  - app/decorators/georgia/links_decorator.rb
591
- - app/decorators/georgia/messages_decorator.rb
592
533
  - app/decorators/ckeditor/assets_decorator.rb
593
534
  - app/decorators/ckeditor/asset_decorator.rb
594
535
  - app/decorators/ckeditor/pictures_decorator.rb
@@ -614,10 +555,10 @@ files:
614
555
  - app/models/georgia/menu.rb
615
556
  - app/models/georgia/slide.rb
616
557
  - app/models/georgia/ui_section.rb
617
- - app/models/georgia/message.rb
618
558
  - app/models/georgia/revision.rb
619
559
  - app/models/georgia/status.rb
620
560
  - app/models/ability.rb
561
+ - app/models/acts_as_taggable_on/tag.rb
621
562
  - app/models/ckeditor/attachment_file.rb
622
563
  - app/models/ckeditor/picture.rb
623
564
  - app/models/ckeditor/asset.rb
@@ -636,19 +577,15 @@ files:
636
577
  - app/controllers/georgia/links_controller.rb
637
578
  - app/controllers/georgia/slides_controller.rb
638
579
  - app/controllers/georgia/pages_controller.rb
639
- - app/controllers/georgia/messages_controller.rb
640
580
  - app/controllers/georgia/widgets_controller.rb
641
- - app/controllers/messages_controller.rb
642
581
  - app/views/menus/_dropdown_link.html.erb
643
582
  - app/views/menus/_link.html.erb
644
583
  - app/views/menus/_menu.html.erb
645
584
  - app/views/menus/_dropdown_group.html.erb
646
585
  - app/views/menus/_dropdown_menu.html.erb
647
- - app/views/messages/create.js.erb
648
586
  - app/views/georgia/api/media/pictures.html.erb
649
587
  - app/views/georgia/header/_pages.html.erb
650
588
  - app/views/georgia/header/_dashboard.html.erb
651
- - app/views/georgia/header/_messages.html.erb
652
589
  - app/views/georgia/header/_media.html.erb
653
590
  - app/views/georgia/header/_widgets.html.erb
654
591
  - app/views/georgia/header/_users.html.erb
@@ -662,10 +599,6 @@ files:
662
599
  - app/views/georgia/dashboard/show.html.erb
663
600
  - app/views/georgia/dashboard/panels/_messages.html.erb
664
601
  - app/views/georgia/dashboard/panels/_reviews.html.erb
665
- - app/views/georgia/messages/_message.html.erb
666
- - app/views/georgia/messages/destroy.js.erb
667
- - app/views/georgia/messages/show.html.erb
668
- - app/views/georgia/messages/search.html.erb
669
602
  - app/views/georgia/users/_user.html.erb
670
603
  - app/views/georgia/users/edit.html.erb
671
604
  - app/views/georgia/users/_form.html.erb
@@ -721,7 +654,6 @@ files:
721
654
  - app/views/layouts/georgia/application.html.erb
722
655
  - app/views/layouts/georgia/_footer.html.erb
723
656
  - app/views/layouts/georgia/_sidebar.html.erb
724
- - app/workers/spam_worker.rb
725
657
  - app/policies/georgia/revision_policy.rb
726
658
  - app/policies/georgia/policy.rb
727
659
  - app/mailers/georgia/notifier.rb
@@ -739,7 +671,6 @@ files:
739
671
  - app/presenters/georgia/active_facet_presenter.rb
740
672
  - app/presenters/georgia/portlet.rb
741
673
  - app/presenters/georgia/warning_message.rb
742
- - app/presenters/georgia/message_actions_presenter.rb
743
674
  - app/presenters/georgia/subpage_portlet.rb
744
675
  - app/presenters/georgia/pagination_presenter.rb
745
676
  - app/helpers/georgia/states_helper.rb
@@ -747,7 +678,6 @@ files:
747
678
  - app/helpers/georgia/pages_helper.rb
748
679
  - app/helpers/georgia/pagination_helper.rb
749
680
  - app/helpers/georgia/meta_tags_helper.rb
750
- - app/helpers/georgia/messages_helper.rb
751
681
  - app/helpers/georgia/devise_helper.rb
752
682
  - app/helpers/georgia/ui_helper.rb
753
683
  - app/helpers/georgia/sidebar_helper.rb
@@ -805,14 +735,12 @@ files:
805
735
  - lib/georgia/assets.rb
806
736
  - lib/georgia/indexer/tire_adapter.rb
807
737
  - lib/georgia/indexer/solr_adapter.rb
808
- - lib/georgia/indexer/tire/georgia/page.rb
809
- - lib/georgia/indexer/tire/georgia/message.rb
810
- - lib/georgia/indexer/tire/ckeditor/asset.rb
811
- - lib/georgia/indexer/solr/georgia/page.rb
812
- - lib/georgia/indexer/solr/georgia/message.rb
813
- - lib/georgia/indexer/solr/acts_as_taggable_on/tag.rb
814
- - lib/georgia/indexer/solr/ckeditor/asset.rb
815
- - lib/georgia/indexer/adapter.rb
738
+ - lib/georgia/indexer/extensions/solr_adapter/georgia_page.rb
739
+ - lib/georgia/indexer/extensions/solr_adapter/ckeditor_asset.rb
740
+ - lib/georgia/indexer/extensions/solr_adapter/acts_as_taggable_on_tag.rb
741
+ - lib/georgia/indexer/extensions/tire_adapter/georgia_page.rb
742
+ - lib/georgia/indexer/extensions/tire_adapter/ckeditor_asset.rb
743
+ - lib/georgia/indexer/extensions/tire_adapter/acts_as_taggable_on_tag.rb
816
744
  - MIT-LICENSE
817
745
  - Rakefile
818
746
  - README.md
@@ -1,59 +0,0 @@
1
- class @MessagesTable
2
-
3
- constructor: (element) ->
4
- @element = $(element)
5
- @checkboxes = @element.find("input:checkbox")
6
- @deleteBtn = @element.find('.js-delete')
7
- @spamBtn = @element.find('.js-spam')
8
- @hamBtn = @element.find('.js-ham')
9
- @setBindings()
10
-
11
- setBindings: () =>
12
- @checkboxes.on('change', @update)
13
- @deleteBtn.on('click', @delete)
14
- @spamBtn.on('click', @spam)
15
- @hamBtn.on('click', @ham)
16
-
17
- update: () =>
18
- if @getChecked().length then @enableActions() else @disableActions()
19
-
20
- delete: (event) =>
21
- @stopEvent(event)
22
- $.ajax(
23
- url: "/admin/messages/#{@getIds()}"
24
- type: 'DELETE'
25
- )
26
-
27
- spam: (event) ->
28
- @stopEvent(event)
29
- # TODO: send event to controller
30
-
31
- ham: (event) ->
32
- @stopEvent(event)
33
- # TODO: send event to controller
34
-
35
- enableActions: () =>
36
- @spamBtn.removeClass('disabled').addClass('btn-warning')
37
- @hamBtn.removeClass('disabled').addClass('btn-warning')
38
- @deleteBtn.removeClass('disabled').addClass('btn-danger')
39
-
40
- disableActions: () =>
41
- @spamBtn.addClass('disabled').removeClass('btn-warning')
42
- @hamBtn.addClass('disabled').removeClass('btn-warning')
43
- @deleteBtn.addClass('disabled').removeClass('btn-danger')
44
-
45
- stopEvent: (event) ->
46
- event.stopPropagation()
47
- event.preventDefault()
48
-
49
- getChecked: () => @element.find("input:checkbox:checked[data-checkbox='child']")
50
- getId: (c) => $(c).data('id')
51
- getIds: () => $.map(@getChecked(), (c) => @getId(c))
52
-
53
- $.fn.actsAsMessagesTable = () ->
54
- @each ->
55
- new MessagesTable($(this))
56
-
57
- jQuery ->
58
- $("table.messages.js-checkboxable").each ->
59
- $(this).actsAsMessagesTable()
@@ -1,66 +0,0 @@
1
- module Georgia
2
- class MessagesController < ApplicationController
3
-
4
- load_and_authorize_resource class: Georgia::Message
5
-
6
- before_filter :prepare_search, only: [:search, :show, :spam, :ham]
7
-
8
-
9
- def index
10
- redirect_to action: :search
11
- end
12
-
13
- def search
14
- end
15
-
16
- # Destroy multiple assets
17
- def destroy
18
- ids = params[:id].split(',')
19
- if @messages = Message.destroy(ids)
20
- render layout: false
21
- else
22
- head :internal_server_error
23
- end
24
- end
25
-
26
- def destroy_all_spam
27
- if Message.spam.destroy_all
28
- redirect_to :back, notice: 'All spam messages have been successfully deleted.'
29
- else
30
- redirect_to :back, alert: 'Oups. Something went wrong.'
31
- end
32
- end
33
-
34
- def show
35
- @message = Message.find(params[:id]).decorate
36
- end
37
-
38
- def spam
39
- @message = Message.find(params[:id])
40
- if @message.spam!
41
- @message.update_attribute(:spam, true)
42
- redirect_to :back, notice: 'Message successfully marked as spam.'
43
- else
44
- redirect_to :back, alert: 'Oups. Something went wrong.'
45
- end
46
- end
47
-
48
- def ham
49
- @message = Message.find(params[:id])
50
- if @message.ham! == false
51
- @message.update_attribute(:spam, false)
52
- redirect_to :back, notice: 'Message successfully marked as ham.'
53
- else
54
- redirect_to :back, alert: 'Oups. Something went wrong.'
55
- end
56
- end
57
-
58
- private
59
-
60
- def prepare_search
61
- @results = Georgia::Indexer.adapter.search(Georgia::Message, params)
62
- @messages = Georgia::MessageDecorator.decorate_collection(@results)
63
- end
64
-
65
- end
66
- end