rails_notice 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (76) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +165 -0
  3. data/README.md +76 -0
  4. data/Rakefile +37 -0
  5. data/app/assets/config/rails_notice_manifest.js +3 -0
  6. data/app/assets/javascripts/controllers/notifications/index.js +0 -0
  7. data/app/assets/javascripts/controllers/rails_notice_admin/notification_settings/index.js +17 -0
  8. data/app/assets/javascripts/controllers/rails_notice_admin/notifications/index.js +15 -0
  9. data/app/assets/javascripts/controllers/rails_notice_admin/notify_settings/edit.js +3 -0
  10. data/app/assets/javascripts/controllers/rails_notice_admin/notify_settings/index.js +17 -0
  11. data/app/assets/javascripts/controllers/rails_notice_admin/notify_settings/new.js +18 -0
  12. data/app/assets/javascripts/rails_notice/cable.js +19 -0
  13. data/app/assets/javascripts/rails_notice/channels/notices.js +39 -0
  14. data/app/assets/javascripts/rails_notice/messenger-theme-future.js +33 -0
  15. data/app/assets/javascripts/rails_notice/messenger.min.js +2 -0
  16. data/app/assets/stylesheets/the_notify/cable.css +9 -0
  17. data/app/assets/stylesheets/the_notify/messenger-theme-air.css +357 -0
  18. data/app/assets/stylesheets/the_notify/messenger.css +105 -0
  19. data/app/channels/notices_channel.rb +7 -0
  20. data/app/channels/the_notify_connection.rb +30 -0
  21. data/app/controllers/concerns/rails_notice_controller.rb +18 -0
  22. data/app/controllers/rails_notice_admin/base_controller.rb +6 -0
  23. data/app/controllers/rails_notice_admin/notification_settings_controller.rb +55 -0
  24. data/app/controllers/rails_notice_admin/notifications_controller.rb +71 -0
  25. data/app/controllers/rails_notice_my/base_controller.rb +5 -0
  26. data/app/controllers/rails_notice_my/notification_settings_controller.rb +28 -0
  27. data/app/controllers/rails_notice_my/notifications_controller.rb +78 -0
  28. data/app/controllers/receivers_controller.rb +12 -0
  29. data/app/jobs/notification_job.rb +17 -0
  30. data/app/mailers/rails_notice_mailer.rb +21 -0
  31. data/app/models/annunciation.rb +4 -0
  32. data/app/models/concerns/i18n_helper.rb +14 -0
  33. data/app/models/concerns/the_notifiable.rb +33 -0
  34. data/app/models/concerns/the_publishable.rb +9 -0
  35. data/app/models/concerns/the_receivable.rb +17 -0
  36. data/app/models/notification.rb +156 -0
  37. data/app/models/notification_setting.rb +8 -0
  38. data/app/views/rails_notice/_link.html.erb +6 -0
  39. data/app/views/rails_notice_admin/base/_nav.html.erb +16 -0
  40. data/app/views/rails_notice_admin/notification_settings/_form.html.erb +7 -0
  41. data/app/views/rails_notice_admin/notification_settings/_search_form.html.erb +11 -0
  42. data/app/views/rails_notice_admin/notification_settings/edit.html.erb +14 -0
  43. data/app/views/rails_notice_admin/notification_settings/index.html.erb +52 -0
  44. data/app/views/rails_notice_admin/notification_settings/new.html.erb +13 -0
  45. data/app/views/rails_notice_admin/notification_settings/show.html.erb +0 -0
  46. data/app/views/rails_notice_admin/notifications/_form.html.erb +6 -0
  47. data/app/views/rails_notice_admin/notifications/_menu.html.erb +6 -0
  48. data/app/views/rails_notice_admin/notifications/_search_form.html.erb +11 -0
  49. data/app/views/rails_notice_admin/notifications/edit.html.erb +14 -0
  50. data/app/views/rails_notice_admin/notifications/index.html.erb +44 -0
  51. data/app/views/rails_notice_admin/notifications/new.html.erb +15 -0
  52. data/app/views/rails_notice_mailer/notify.html.erb +35 -0
  53. data/app/views/rails_notice_my/base/_nav_my.html.erb +4 -0
  54. data/app/views/rails_notice_my/notification_settings/_form.html.erb +5 -0
  55. data/app/views/rails_notice_my/notification_settings/show.html.erb +5 -0
  56. data/app/views/rails_notice_my/notifications/_navbar.html.erb +13 -0
  57. data/app/views/rails_notice_my/notifications/_notifications.html.erb +17 -0
  58. data/app/views/rails_notice_my/notifications/edit.html.erb +2 -0
  59. data/app/views/rails_notice_my/notifications/index.html.erb +28 -0
  60. data/app/views/rails_notice_my/notifications/index.js.erb +13 -0
  61. data/app/views/rails_notice_my/notifications/new.html.erb +1 -0
  62. data/app/views/rails_notice_my/notifications/read.js.erb +2 -0
  63. data/app/views/rails_notice_my/notifications/read_all.js.erb +2 -0
  64. data/app/views/rails_notice_my/notifications/show.html.erb +7 -0
  65. data/config/locales/en.yml +7 -0
  66. data/config/locales/zh.yml +7 -0
  67. data/config/routes.rb +29 -0
  68. data/db/migrate/20170110025557_create_notification.rb +21 -0
  69. data/db/migrate/20170209025946_create_notification_settings.rb +23 -0
  70. data/lib/rails_notice.rb +13 -0
  71. data/lib/rails_notice/active_record.rb +18 -0
  72. data/lib/rails_notice/config.rb +13 -0
  73. data/lib/rails_notice/engine.rb +9 -0
  74. data/lib/rails_notice/version.rb +3 -0
  75. data/lib/tasks/the_notify_tasks.rake +4 -0
  76. metadata +132 -0
@@ -0,0 +1,5 @@
1
+ <%= form_with model: notification_setting, url: notification_settings_path(receiver: params[:receiver]), method: 'patch' do |f| %>
2
+ <%= f.number_field :showtime %>
3
+ <%= f.check_box :accept_email %>
4
+ <%= f.submit 'save' %>
5
+ <% end %>
@@ -0,0 +1,5 @@
1
+ <%= render 'rails_notice_my/notifications/navbar' %>
2
+
3
+ <div class="ui bottom attached segment">
4
+ <%= render 'form', notification_setting: @notification_setting %>
5
+ </div>
@@ -0,0 +1,13 @@
1
+ <div class="ui tabular top attached menu">
2
+ <%= link_to t('rails_notice.all_notification'), notifications_path(receiver: params[:receiver]), class: active_helper(notifications: 'index', active_class: 'item active', item_class: 'item') %>
3
+ <%= link_to t('rails_notice.notification_setting'), notification_settings_path(receiver: params[:receiver]), class: active_helper(controllers: ['notification_settings']) %>
4
+ <div class="right menu">
5
+ <% unless params[:scope] == 'have_read' %>
6
+ <%= link_to read_all_notifications_path(receiver: params[:receiver]), class: 'item', remote: true do %>
7
+ <i class="checkmark box icon"></i>Mark All
8
+ <% end %>
9
+ <% end %>
10
+ </div>
11
+ </div>
12
+
13
+
@@ -0,0 +1,17 @@
1
+ <div class="ui popup" id="notify_container">
2
+ <div class="ui divided items">
3
+ <% @notifications.limit(5).each do |notification| %>
4
+ <div class="item">
5
+ <div class="content">
6
+ <i class="bell icon"></i>
7
+ <%= link_to notification.title, url_notification_path(notification) %>
8
+ <p><%= notification.body %></p>
9
+ <div class="extra content">
10
+ <span><time><%= notification.created_at.to_s(:rfc822) %></time></span>
11
+ </div>
12
+ </div>
13
+ </div>
14
+ <% end %>
15
+ </div>
16
+ <%= link_to t('rails_notice.all_notification'), notifications_path(receiver: params[:receiver]), target: '_blank', class: 'ui right floated tiny button' %>
17
+ </div>
@@ -0,0 +1,2 @@
1
+ <%= render 'form' %>
2
+
@@ -0,0 +1,28 @@
1
+ <%= render 'navbar' %>
2
+
3
+ <div class="ui divided items bottom attached segment">
4
+ <% @notifications.each do |notification| %>
5
+ <div class="ui info item">
6
+ <div class="content">
7
+ <% if notification.title %>
8
+ <div class="header">
9
+ <%= link_to notification.title, url_notification_path(notification) %>
10
+ </div>
11
+ <% end %>
12
+ <div class="description">
13
+ <%= link_to notification.body, url_notification_path(notification) %>
14
+ </div>
15
+ <div class="extra">
16
+ Created At: <time><%= notification.created_at.to_s(:rfc822) %></time>
17
+ <% unless params[:scope] == 'have_read' %>
18
+ <%= link_to read_notification_path(notification), class: 'right floated notification', id: "check_#{notification.id}", remote: true do %>
19
+ <i class="checkmark red icon"></i>Mark
20
+ <% end %>
21
+ <% end %>
22
+ </div>
23
+ </div>
24
+ </div>
25
+ <% end %>
26
+ </div>
27
+
28
+ <%= paginate @notifications %>
@@ -0,0 +1,13 @@
1
+ if ($('#notify_container').length === 0) {
2
+ $('body').append('<%= j(render 'notifications') %>');
3
+ } else {
4
+ $('#notify_container').replaceWith('<%= j(render 'notifications') %>');
5
+ }
6
+
7
+ $('#notify_show').popup({
8
+ popup: '#notify_container',
9
+ position: 'bottom right',
10
+ on: 'click'
11
+ }).popup('toggle');
12
+
13
+ timeForLocalized()
@@ -0,0 +1 @@
1
+ <%= render 'form' %>
@@ -0,0 +1,2 @@
1
+ $('#check_<%= @notification.id %>').html('<i class="checkmark light grey icon"></i>');
2
+ $('#notice_count').html('<%= @notification.unread_count %>')
@@ -0,0 +1,2 @@
1
+ $('.notification').html('<i class="checkmark light grey icon"></i>');
2
+ $('#notice_count').html('<%= @count %>')
@@ -0,0 +1,7 @@
1
+ <div class="toolbar">
2
+ <%= link_to '修改', edit_notification_path(@notification), class: "btn btn-sm btn-success" %>
3
+ <%= link_to '返回', notifications_path, class: "btn btn-sm btn-default" %>
4
+ </div>
5
+
6
+ <div id="notification">
7
+ </div>
@@ -0,0 +1,7 @@
1
+ en:
2
+ rails_notice:
3
+ all_notification: All Notifications
4
+ unread: Unread
5
+ readed: Have Readed
6
+ notification_setting: Notification Settings
7
+ detail: Detail
@@ -0,0 +1,7 @@
1
+ zh:
2
+ rails_notice:
3
+ all_notification: 全部通知
4
+ unread: 未读
5
+ readed: 已读
6
+ notification_setting: 通知设置
7
+ detail: 详情请点击
@@ -0,0 +1,29 @@
1
+ Rails.application.routes.draw do
2
+
3
+ scope :admin, as: 'admin', module: 'rails_notice_admin' do
4
+ resources :notifications do
5
+ patch :push, on: :member
6
+ patch :email, on: :member
7
+ end
8
+ resources :notify_settings do
9
+ get :columns, on: :collection
10
+ end
11
+ resources :notification_settings
12
+ end
13
+
14
+ scope module: 'rails_notice_my' do
15
+ resources :notifications do
16
+ get :url, on: :member
17
+ get :read, on: :member
18
+ get :read_all, on: :collection
19
+ end
20
+ resource :notification_settings, only: [:show, :edit, :update]
21
+ end
22
+
23
+ resources :receivers do
24
+ get :search, on: :collection
25
+ end
26
+
27
+ mount ActionCable.server => '/cable'
28
+
29
+ end
@@ -0,0 +1,21 @@
1
+ class CreateNotification < ActiveRecord::Migration[5.0]
2
+ def change
3
+ drop_table :notifications, if_exists: true
4
+ create_table :notifications do |t|
5
+ t.references :receiver, polymorphic: true
6
+ t.references :notifiable, polymorphic: true
7
+ t.string :code
8
+ t.integer :state, default: 0
9
+ t.string :title
10
+ t.string :body, limit: 5000
11
+ t.string :link
12
+ t.datetime :sending_at
13
+ t.datetime :sent_at
14
+ t.string :sent_result
15
+ t.datetime :read_at, index: true
16
+ t.boolean :verbose, default: false
17
+ t.string :cc_emails
18
+ t.timestamps
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,23 @@
1
+ class CreateNotificationSettings < ActiveRecord::Migration[5.0]
2
+ def change
3
+ create_table :notification_settings do |t|
4
+ t.references :receiver, polymorphic: true, index: true
5
+ t.string :notifiable_types
6
+ t.integer :showtime
7
+ t.boolean :accept_email, default: true
8
+ t.timestamps
9
+ end
10
+
11
+ create_table :notify_settings do |t|
12
+ t.string :notifiable_type
13
+ t.string :code
14
+ t.string :notify_mailer
15
+ t.string :notify_method
16
+ t.string :only_verbose_columns
17
+ t.string :except_verbose_columns
18
+ t.string :cc_emails
19
+ t.timestamps
20
+ end
21
+
22
+ end
23
+ end
@@ -0,0 +1,13 @@
1
+ require 'rails_notice/engine'
2
+ require 'rails_notice/config'
3
+ require 'rails_notice/active_record'
4
+
5
+ module RailsNotice
6
+ mattr_writer :notifiable_types do
7
+ []
8
+ end
9
+
10
+ def self.notifiable_types
11
+ (@@notifiable_types + RailsNotice.config.default_notifiable_types).uniq
12
+ end
13
+ end
@@ -0,0 +1,18 @@
1
+ module RailsNotice::ActiveRecord
2
+
3
+ # notify_mailer
4
+ # notify_method
5
+ # only
6
+ # except
7
+ # cc_emails
8
+ # tr_values
9
+ def acts_as_notify(code = 'default', **options)
10
+ include TheNotifiable
11
+ notifies[code.to_sym] = options
12
+ end
13
+
14
+ end
15
+
16
+ ActiveSupport.on_load :active_record do
17
+ extend RailsNotice::ActiveRecord
18
+ end
@@ -0,0 +1,13 @@
1
+ require 'active_support/configurable'
2
+
3
+ module RailsNotice
4
+ include ActiveSupport::Configurable
5
+
6
+ configure do |config|
7
+ config.admin_class = 'Admin::BaseController'
8
+ config.my_class = 'My::BaseController'
9
+ config.default_notifiable_types = []
10
+ config.default_send_email = true
11
+ end
12
+
13
+ end
@@ -0,0 +1,9 @@
1
+ module RailsNotice
2
+ class Engine < ::Rails::Engine
3
+
4
+ initializer 'rails_notice.assets.precompile' do |app|
5
+ app.config.assets.precompile += ['rails_notice_manifest.js']
6
+ end
7
+
8
+ end
9
+ end
@@ -0,0 +1,3 @@
1
+ module RailsNotice
2
+ VERSION = '0.1.0'
3
+ end
@@ -0,0 +1,4 @@
1
+ # desc "Explaining what the task does"
2
+ # task :rails_notice do
3
+ # # Task goes here
4
+ # end
metadata ADDED
@@ -0,0 +1,132 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rails_notice
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - qinmingyuan
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-09-19 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 5.0.1
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 5.0.1
27
+ description: Description of RailsNotice.
28
+ email:
29
+ - mingyuan0715@foxmail.com
30
+ executables: []
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - LICENSE
35
+ - README.md
36
+ - Rakefile
37
+ - app/assets/config/rails_notice_manifest.js
38
+ - app/assets/javascripts/controllers/notifications/index.js
39
+ - app/assets/javascripts/controllers/rails_notice_admin/notification_settings/index.js
40
+ - app/assets/javascripts/controllers/rails_notice_admin/notifications/index.js
41
+ - app/assets/javascripts/controllers/rails_notice_admin/notify_settings/edit.js
42
+ - app/assets/javascripts/controllers/rails_notice_admin/notify_settings/index.js
43
+ - app/assets/javascripts/controllers/rails_notice_admin/notify_settings/new.js
44
+ - app/assets/javascripts/rails_notice/cable.js
45
+ - app/assets/javascripts/rails_notice/channels/notices.js
46
+ - app/assets/javascripts/rails_notice/messenger-theme-future.js
47
+ - app/assets/javascripts/rails_notice/messenger.min.js
48
+ - app/assets/stylesheets/the_notify/cable.css
49
+ - app/assets/stylesheets/the_notify/messenger-theme-air.css
50
+ - app/assets/stylesheets/the_notify/messenger.css
51
+ - app/channels/notices_channel.rb
52
+ - app/channels/the_notify_connection.rb
53
+ - app/controllers/concerns/rails_notice_controller.rb
54
+ - app/controllers/rails_notice_admin/base_controller.rb
55
+ - app/controllers/rails_notice_admin/notification_settings_controller.rb
56
+ - app/controllers/rails_notice_admin/notifications_controller.rb
57
+ - app/controllers/rails_notice_my/base_controller.rb
58
+ - app/controllers/rails_notice_my/notification_settings_controller.rb
59
+ - app/controllers/rails_notice_my/notifications_controller.rb
60
+ - app/controllers/receivers_controller.rb
61
+ - app/jobs/notification_job.rb
62
+ - app/mailers/rails_notice_mailer.rb
63
+ - app/models/annunciation.rb
64
+ - app/models/concerns/i18n_helper.rb
65
+ - app/models/concerns/the_notifiable.rb
66
+ - app/models/concerns/the_publishable.rb
67
+ - app/models/concerns/the_receivable.rb
68
+ - app/models/notification.rb
69
+ - app/models/notification_setting.rb
70
+ - app/views/rails_notice/_link.html.erb
71
+ - app/views/rails_notice_admin/base/_nav.html.erb
72
+ - app/views/rails_notice_admin/notification_settings/_form.html.erb
73
+ - app/views/rails_notice_admin/notification_settings/_search_form.html.erb
74
+ - app/views/rails_notice_admin/notification_settings/edit.html.erb
75
+ - app/views/rails_notice_admin/notification_settings/index.html.erb
76
+ - app/views/rails_notice_admin/notification_settings/new.html.erb
77
+ - app/views/rails_notice_admin/notification_settings/show.html.erb
78
+ - app/views/rails_notice_admin/notifications/_form.html.erb
79
+ - app/views/rails_notice_admin/notifications/_menu.html.erb
80
+ - app/views/rails_notice_admin/notifications/_search_form.html.erb
81
+ - app/views/rails_notice_admin/notifications/edit.html.erb
82
+ - app/views/rails_notice_admin/notifications/index.html.erb
83
+ - app/views/rails_notice_admin/notifications/new.html.erb
84
+ - app/views/rails_notice_mailer/notify.html.erb
85
+ - app/views/rails_notice_my/base/_nav_my.html.erb
86
+ - app/views/rails_notice_my/notification_settings/_form.html.erb
87
+ - app/views/rails_notice_my/notification_settings/show.html.erb
88
+ - app/views/rails_notice_my/notifications/_navbar.html.erb
89
+ - app/views/rails_notice_my/notifications/_notifications.html.erb
90
+ - app/views/rails_notice_my/notifications/edit.html.erb
91
+ - app/views/rails_notice_my/notifications/index.html.erb
92
+ - app/views/rails_notice_my/notifications/index.js.erb
93
+ - app/views/rails_notice_my/notifications/new.html.erb
94
+ - app/views/rails_notice_my/notifications/read.js.erb
95
+ - app/views/rails_notice_my/notifications/read_all.js.erb
96
+ - app/views/rails_notice_my/notifications/show.html.erb
97
+ - config/locales/en.yml
98
+ - config/locales/zh.yml
99
+ - config/routes.rb
100
+ - db/migrate/20170110025557_create_notification.rb
101
+ - db/migrate/20170209025946_create_notification_settings.rb
102
+ - lib/rails_notice.rb
103
+ - lib/rails_notice/active_record.rb
104
+ - lib/rails_notice/config.rb
105
+ - lib/rails_notice/engine.rb
106
+ - lib/rails_notice/version.rb
107
+ - lib/tasks/the_notify_tasks.rake
108
+ homepage: https://github.com/yougexiangfa/rails_notice
109
+ licenses:
110
+ - MIT
111
+ metadata: {}
112
+ post_install_message:
113
+ rdoc_options: []
114
+ require_paths:
115
+ - lib
116
+ required_ruby_version: !ruby/object:Gem::Requirement
117
+ requirements:
118
+ - - ">="
119
+ - !ruby/object:Gem::Version
120
+ version: '0'
121
+ required_rubygems_version: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - ">="
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ requirements: []
127
+ rubyforge_project:
128
+ rubygems_version: 2.7.7
129
+ signing_key:
130
+ specification_version: 4
131
+ summary: Summary of RailsNotice.
132
+ test_files: []