plug 0.1.12 → 0.1.19
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.
- checksums.yaml +5 -5
- data/README.md +21 -1
- data/app/assets/images/favicon.png +0 -0
- data/app/assets/stylesheets/plug/application.scss +3 -0
- data/app/assets/stylesheets/plug/blocks/_alert.scss +5 -0
- data/app/assets/stylesheets/plug/blocks/_menu.scss +11 -0
- data/app/assets/stylesheets/plug/blocks/_task-button.scss +3 -0
- data/app/assets/stylesheets/plug/variables/_colors.scss +2 -1
- data/app/controllers/plug/api/api_controller.rb +7 -0
- data/app/controllers/plug/api/site_notices_controller.rb +21 -0
- data/app/controllers/plug/features_controller.rb +15 -1
- data/app/controllers/plug/site_notices_controller.rb +69 -0
- data/app/models/plug/concerns/model_helpers.rb +45 -0
- data/app/models/plug/concerns/themeable.rb +16 -0
- data/app/models/plug/feature.rb +1 -25
- data/app/models/plug/resources/site_notice.rb +17 -0
- data/app/models/plug/site_notice.rb +7 -0
- data/app/services/plug/task_execution_service.rb +18 -0
- data/app/views/layouts/plug/application.html.haml +2 -1
- data/app/views/plug/features/_task.html.haml +4 -0
- data/app/views/plug/features/index.html.haml +12 -2
- data/app/views/plug/shared/_nav.html.haml +8 -5
- data/app/views/plug/site_notices/_form.html.haml +25 -0
- data/app/views/plug/site_notices/edit.html.haml +5 -0
- data/app/views/plug/site_notices/index.html.haml +41 -0
- data/app/views/plug/site_notices/new.html.haml +7 -0
- data/config/routes.rb +11 -0
- data/db/migrate/20180403024712_create_plug_site_notices.rb +15 -0
- data/db/migrate/20180424015828_add_theme_to_plug_site_notice.rb +5 -0
- data/lib/plug/configuration.rb +4 -1
- data/lib/plug/version.rb +1 -1
- metadata +40 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: a3e56677db5277835599245727b8f5a1ddc7b089a9261f788971c6de539279cd
|
4
|
+
data.tar.gz: 619eb3d58765d7fe2ae88e0d4cc784ce0df8cea15e2e580ce0228f335da1f175
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3993e47bb2626186d6057b0aed81651a3ae46d7daec51b56dfe9a8cfbe0a46c242edfc95a6080cefe651d641092b3e157746df03c2a6595a72e96b9b32bc0a56
|
7
|
+
data.tar.gz: 210f55299e22933f46c48d469fc423ec3b7c85cd8be76d7eddeee93ce96efab89f50f11ed2598d530911eb208057c9c6691114d38beba6ff9425fc6b3fc60386
|
data/README.md
CHANGED
@@ -31,7 +31,8 @@ And run the install generator:
|
|
31
31
|
|
32
32
|
```bash
|
33
33
|
→ rails g plug:install
|
34
|
-
→ rails
|
34
|
+
→ rails plug:install:migrations
|
35
|
+
→ rake plug:install:migrations # For Rails <= 3.x
|
35
36
|
→ rails db:migrate # Newer version of Rails
|
36
37
|
→ rake db:migrate # Older version of Rails
|
37
38
|
→ rails s
|
@@ -72,6 +73,25 @@ If you have custom HTML for notice, you can pass a block.
|
|
72
73
|
<% end %>
|
73
74
|
```
|
74
75
|
|
76
|
+
#### Buttons
|
77
|
+
Add buttons to the config block to perform rake tasks from the plug dashboard
|
78
|
+
|
79
|
+
```ruby
|
80
|
+
config.buttons = [
|
81
|
+
{ label: 'Clear cache', task: 'tmp:cache:clear' }
|
82
|
+
]
|
83
|
+
```
|
84
|
+
|
85
|
+
### Creating new migrations
|
86
|
+
|
87
|
+
```bash
|
88
|
+
→ rails g migration MyAwesomeMigration
|
89
|
+
→ rails g model MyModel name:string slug:string:index
|
90
|
+
→ rails db:migrate
|
91
|
+
→ rails db:migrate RAILS_ENV=test
|
92
|
+
→ rake plug:install:migrations # Run this on the app to copy the new migrations
|
93
|
+
```
|
94
|
+
|
75
95
|
### Running the tests
|
76
96
|
|
77
97
|
```bash
|
Binary file
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require_dependency 'plug/application_controller'
|
2
|
+
|
3
|
+
module Plug
|
4
|
+
module Api
|
5
|
+
class SiteNoticesController < ApiController
|
6
|
+
# GET /site_notices.json
|
7
|
+
def index
|
8
|
+
@site_notices = SiteNotice.all
|
9
|
+
|
10
|
+
render json: @site_notices
|
11
|
+
end
|
12
|
+
|
13
|
+
# GET /site_notices/slug.json
|
14
|
+
def show
|
15
|
+
@site_notice = SiteNotice.slug_and_name(params[:slug]).first
|
16
|
+
|
17
|
+
render json: @site_notice
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -50,6 +50,20 @@ module Plug
|
|
50
50
|
redirect_to features_url, notice: 'Feature was successfully destroyed.'
|
51
51
|
end
|
52
52
|
|
53
|
+
# POST /task
|
54
|
+
# TODO: Move this to a separate controller e.g. `tasks_controller.rb`
|
55
|
+
def task_execution
|
56
|
+
begin
|
57
|
+
Plug::TaskExecutionService.new(name: params[:task]).call
|
58
|
+
rescue StandardError => e
|
59
|
+
flash[:alert] = e.message
|
60
|
+
else
|
61
|
+
flash[:notice] = "Task: #{params[:task]} has completed"
|
62
|
+
end
|
63
|
+
|
64
|
+
redirect_to root_path
|
65
|
+
end
|
66
|
+
|
53
67
|
private
|
54
68
|
# Use callbacks to share common setup or constraints between actions.
|
55
69
|
def set_feature
|
@@ -62,7 +76,7 @@ module Plug
|
|
62
76
|
if Rails.version.to_i < 5
|
63
77
|
ActiveSupport::HashWithIndifferentAccess.new(params[:feature])
|
64
78
|
else
|
65
|
-
params.require(:feature).permit(:name, :description, :state)
|
79
|
+
params.require(:feature).permit(:name, :description, :state, :notice)
|
66
80
|
end
|
67
81
|
end
|
68
82
|
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
require_dependency 'plug/application_controller'
|
2
|
+
|
3
|
+
module Plug
|
4
|
+
class SiteNoticesController < ApplicationController
|
5
|
+
if Rails.version.to_i < 5
|
6
|
+
before_filter :set_site_notice, only: [:edit, :update, :destroy]
|
7
|
+
else
|
8
|
+
before_action :set_site_notice, only: [:edit, :update, :destroy]
|
9
|
+
end
|
10
|
+
|
11
|
+
# GET /site_notices
|
12
|
+
def index
|
13
|
+
@site_notices = SiteNotice.all
|
14
|
+
end
|
15
|
+
|
16
|
+
# GET /site_notices/1
|
17
|
+
# def show; end
|
18
|
+
|
19
|
+
# GET /site_notices/new
|
20
|
+
def new
|
21
|
+
@site_notice = SiteNotice.new
|
22
|
+
end
|
23
|
+
|
24
|
+
# GET /site_notices/1/edit
|
25
|
+
def edit; end
|
26
|
+
|
27
|
+
# POST /site_notices
|
28
|
+
def create
|
29
|
+
@site_notice = SiteNotice.new(site_notice_params)
|
30
|
+
|
31
|
+
if @site_notice.save
|
32
|
+
redirect_to site_notices_path, notice: 'Site Notice was successfully created.'
|
33
|
+
else
|
34
|
+
render :new
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
# PATCH/PUT /site_notices/1
|
39
|
+
def update
|
40
|
+
if @site_notice.update_attributes(site_notice_params)
|
41
|
+
redirect_to site_notices_path, notice: 'Site Notice was successfully updated.'
|
42
|
+
else
|
43
|
+
render :edit
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
# DELETE /site_notices/1
|
48
|
+
def destroy
|
49
|
+
@site_notice.destroy
|
50
|
+
redirect_to site_notices_url, notice: 'Site Notice was successfully destroyed.'
|
51
|
+
end
|
52
|
+
|
53
|
+
private
|
54
|
+
# Use callbacks to share common setup or constraints between actions.
|
55
|
+
def set_site_notice
|
56
|
+
@site_notice = SiteNotice.find(params[:id])
|
57
|
+
end
|
58
|
+
|
59
|
+
# Only allow a trusted parameter "white list" through.
|
60
|
+
# TODO: Strong params not available for older Rails
|
61
|
+
def site_notice_params
|
62
|
+
if Rails.version.to_i < 5
|
63
|
+
ActiveSupport::HashWithIndifferentAccess.new(params[:site_notice])
|
64
|
+
else
|
65
|
+
params.require(:site_notice).permit(:name, :notice, :state, :theme)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require 'active_support/concern'
|
2
|
+
|
3
|
+
module Plug
|
4
|
+
module Concerns
|
5
|
+
module ModelHelpers
|
6
|
+
extend ActiveSupport::Concern
|
7
|
+
|
8
|
+
included do
|
9
|
+
include AASM
|
10
|
+
|
11
|
+
# Validations
|
12
|
+
validates :name, presence: { message: "#{self.humanized_class_name} name is required" },
|
13
|
+
uniqueness: { message: "#{self.humanized_class_name} name must be unique", case_sensitive: false }
|
14
|
+
validates :state, presence: { message: "#{self.humanized_class_name} state is required" }
|
15
|
+
|
16
|
+
# Callbacks
|
17
|
+
before_save { self.slug = name.parameterize }
|
18
|
+
|
19
|
+
# Scopes
|
20
|
+
scope :slug_and_name, ->(arg) { where('slug = ? OR name = ?', arg, arg) }
|
21
|
+
|
22
|
+
# States
|
23
|
+
aasm column: :state do
|
24
|
+
state :enabled, initial: true
|
25
|
+
state :disabled
|
26
|
+
|
27
|
+
event :enable do
|
28
|
+
transitions from: :disabled, to: :enabled
|
29
|
+
end
|
30
|
+
|
31
|
+
event :disable do
|
32
|
+
transitions from: :enabled, to: :disabled
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
|
38
|
+
module ClassMethods
|
39
|
+
def humanized_class_name
|
40
|
+
self.name.demodulize.underscore.humanize.capitalize
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
data/app/models/plug/feature.rb
CHANGED
@@ -1,30 +1,6 @@
|
|
1
1
|
module Plug
|
2
2
|
class Feature < ApplicationRecord
|
3
3
|
include AASM
|
4
|
-
|
5
|
-
# Validations
|
6
|
-
validates :name, presence: { message: 'Feature name is required' },
|
7
|
-
uniqueness: { message: 'Feature name must be unique', case_sensitive: false }
|
8
|
-
validates :state, presence: { message: 'Feature state is required' }
|
9
|
-
|
10
|
-
# Callbacks
|
11
|
-
before_save { self.slug = name.parameterize }
|
12
|
-
|
13
|
-
# Scopes
|
14
|
-
scope :slug_and_name, ->(arg) { where('slug = ? OR name = ?', arg, arg) }
|
15
|
-
|
16
|
-
# States
|
17
|
-
aasm column: :state do
|
18
|
-
state :enabled, initial: true
|
19
|
-
state :disabled
|
20
|
-
|
21
|
-
event :enable do
|
22
|
-
transitions from: :disabled, to: :enabled
|
23
|
-
end
|
24
|
-
|
25
|
-
event :disable do
|
26
|
-
transitions from: :enabled, to: :disabled
|
27
|
-
end
|
28
|
-
end
|
4
|
+
include Plug::Concerns::ModelHelpers
|
29
5
|
end
|
30
6
|
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Plug
|
2
|
+
module Resources
|
3
|
+
class SiteNotice < ActiveResource::Base
|
4
|
+
include Plug::Concerns::Themeable
|
5
|
+
|
6
|
+
self.site = Plug.api_path
|
7
|
+
|
8
|
+
def enabled?
|
9
|
+
state == 'enabled'
|
10
|
+
end
|
11
|
+
|
12
|
+
def disabled?
|
13
|
+
state == 'disabled'
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'rake'
|
2
|
+
|
3
|
+
module Plug
|
4
|
+
class TaskExecutionService
|
5
|
+
attr_reader :name
|
6
|
+
|
7
|
+
def initialize(name: nil)
|
8
|
+
raise 'Task name is required' if name.nil?
|
9
|
+
|
10
|
+
@name = name
|
11
|
+
end
|
12
|
+
|
13
|
+
def call
|
14
|
+
Rails.application.load_tasks
|
15
|
+
Rake::Task[name].execute
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -1,8 +1,15 @@
|
|
1
|
+
- if notice
|
2
|
+
%p.notice= sanitize(notice)
|
3
|
+
|
4
|
+
- if alert
|
5
|
+
%p.alert= sanitize(alert)
|
6
|
+
|
1
7
|
.row
|
2
8
|
.column
|
3
|
-
|
4
|
-
%p.notice= notice
|
9
|
+
= render partial: 'task', collection: Plug.buttons
|
5
10
|
|
11
|
+
.row
|
12
|
+
.column
|
6
13
|
.clearfix
|
7
14
|
.float-left
|
8
15
|
%h4 Features
|
@@ -16,6 +23,9 @@
|
|
16
23
|
%th Description
|
17
24
|
%th Slug
|
18
25
|
%th State
|
26
|
+
|
27
|
+
- if Plug.allow_delete
|
28
|
+
%th Actions
|
19
29
|
|
20
30
|
%tbody
|
21
31
|
- @features.each do |feature|
|
@@ -1,6 +1,9 @@
|
|
1
1
|
%nav.clearfix.nav
|
2
|
-
.
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
2
|
+
.float-left
|
3
|
+
%h3
|
4
|
+
= link_to 'Plug', plug.root_path, class: 'nav__logo'
|
5
|
+
%small /unplug features
|
6
|
+
.float-right
|
7
|
+
%ul.menu
|
8
|
+
%li= link_to 'Features', plug.root_path
|
9
|
+
%li= link_to 'Site Notices', plug.site_notices_path
|
@@ -0,0 +1,25 @@
|
|
1
|
+
= form_for @site_notice do |f|
|
2
|
+
- if @site_notice.errors.any?
|
3
|
+
#error_explanation
|
4
|
+
%h2= "#{pluralize(@site_notice.errors.count, "error")} prohibited this feature from being saved:"
|
5
|
+
%ul
|
6
|
+
- @site_notice.errors.full_messages.each do |message|
|
7
|
+
%li= message
|
8
|
+
|
9
|
+
.field
|
10
|
+
= f.label :name
|
11
|
+
= f.text_field :name
|
12
|
+
.field
|
13
|
+
= f.label :notice
|
14
|
+
= f.text_area :notice, rows: 10
|
15
|
+
.field
|
16
|
+
= f.label :state
|
17
|
+
= f.select :state, ['enabled', 'disabled']
|
18
|
+
.field
|
19
|
+
= f.label :theme
|
20
|
+
= f.select :theme, Plug.themes.map { |theme| [theme[:name], "#{theme[:style].to_a.map { |s| s.join(':') }.join(';')}"] }
|
21
|
+
.actions.clearfix
|
22
|
+
.float-left
|
23
|
+
= link_to 'Back', site_notices_path, class: 'button'
|
24
|
+
.float-right
|
25
|
+
= f.submit 'Save'
|
@@ -0,0 +1,41 @@
|
|
1
|
+
.row
|
2
|
+
.column
|
3
|
+
- if notice
|
4
|
+
%p.notice= sanitize(notice)
|
5
|
+
|
6
|
+
- if alert
|
7
|
+
%p.alert= sanitize(alert)
|
8
|
+
|
9
|
+
.clearfix
|
10
|
+
.float-left
|
11
|
+
%h4 Site Notices
|
12
|
+
.float-right
|
13
|
+
= link_to 'New Site Notice', new_site_notice_path, class: 'button'
|
14
|
+
|
15
|
+
%table
|
16
|
+
%thead
|
17
|
+
%tr
|
18
|
+
%th Name
|
19
|
+
%th Notice
|
20
|
+
%th Slug
|
21
|
+
%th State
|
22
|
+
|
23
|
+
- if Plug.allow_delete
|
24
|
+
%th Actions
|
25
|
+
|
26
|
+
%tbody
|
27
|
+
- @site_notices.each do |site_notice|
|
28
|
+
%tr
|
29
|
+
%td= link_to site_notice.name, edit_site_notice_path(site_notice), class: 'strong'
|
30
|
+
%td= site_notice.notice
|
31
|
+
%td= site_notice.slug
|
32
|
+
%td
|
33
|
+
- if site_notice.state == 'enabled'
|
34
|
+
%i.fas.fa-check-circle.fa-2x.state__enabled
|
35
|
+
- else
|
36
|
+
%i.fas.fa-times-circle.fa-2x.state__disabled
|
37
|
+
|
38
|
+
- if Plug.allow_delete
|
39
|
+
%td= link_to 'Destroy', site_notice, method: :delete, data: { confirm: 'Are you sure?' }
|
40
|
+
|
41
|
+
|
data/config/routes.rb
CHANGED
@@ -1,5 +1,16 @@
|
|
1
1
|
Plug::Engine.routes.draw do
|
2
2
|
root to: 'features#index'
|
3
3
|
|
4
|
+
# Features
|
4
5
|
resources :features, except: :show
|
6
|
+
|
7
|
+
# Site notices
|
8
|
+
resources :site_notices, except: :show
|
9
|
+
|
10
|
+
namespace :api, defaults: { format: :json } do
|
11
|
+
get '/site_notices/:slug', to: 'site_notices#show'
|
12
|
+
get '/site_notices', to: 'site_notices#index'
|
13
|
+
end
|
14
|
+
|
15
|
+
post '/task', to: 'features#task_execution', as: :task_execution
|
5
16
|
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
class CreatePlugSiteNotices < ActiveRecord::Migration
|
2
|
+
def change
|
3
|
+
create_table :plug_site_notices do |t|
|
4
|
+
t.string :name
|
5
|
+
t.string :slug
|
6
|
+
t.text :notice
|
7
|
+
t.string :state
|
8
|
+
|
9
|
+
t.timestamps
|
10
|
+
end
|
11
|
+
|
12
|
+
add_index :plug_site_notices, :name
|
13
|
+
add_index :plug_site_notices, :slug
|
14
|
+
end
|
15
|
+
end
|
data/lib/plug/configuration.rb
CHANGED
data/lib/plug/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: plug
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.19
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ben
|
@@ -9,22 +9,22 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2020-06-04 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
|
-
- - "
|
18
|
+
- - ">="
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version:
|
20
|
+
version: '0'
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
|
-
- - "
|
25
|
+
- - ">="
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version:
|
27
|
+
version: '0'
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: sass-rails
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
@@ -81,6 +81,20 @@ dependencies:
|
|
81
81
|
- - ">="
|
82
82
|
- !ruby/object:Gem::Version
|
83
83
|
version: '0'
|
84
|
+
- !ruby/object:Gem::Dependency
|
85
|
+
name: activeresource
|
86
|
+
requirement: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - ">="
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '0'
|
91
|
+
type: :runtime
|
92
|
+
prerelease: false
|
93
|
+
version_requirements: !ruby/object:Gem::Requirement
|
94
|
+
requirements:
|
95
|
+
- - ">="
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: '0'
|
84
98
|
- !ruby/object:Gem::Dependency
|
85
99
|
name: sqlite3
|
86
100
|
requirement: !ruby/object:Gem::Requirement
|
@@ -191,13 +205,17 @@ files:
|
|
191
205
|
- README.md
|
192
206
|
- Rakefile
|
193
207
|
- app/assets/config/plug_manifest.js
|
208
|
+
- app/assets/images/favicon.png
|
194
209
|
- app/assets/javascripts/plug/application.js
|
195
210
|
- app/assets/javascripts/plug/features.js
|
196
211
|
- app/assets/stylesheets/plug/_settings.scss
|
197
212
|
- app/assets/stylesheets/plug/application.scss
|
213
|
+
- app/assets/stylesheets/plug/blocks/_alert.scss
|
214
|
+
- app/assets/stylesheets/plug/blocks/_menu.scss
|
198
215
|
- app/assets/stylesheets/plug/blocks/_nav.scss
|
199
216
|
- app/assets/stylesheets/plug/blocks/_notice.scss
|
200
217
|
- app/assets/stylesheets/plug/blocks/_state.scss
|
218
|
+
- app/assets/stylesheets/plug/blocks/_task-button.scss
|
201
219
|
- app/assets/stylesheets/plug/foundation_and_overrides.scss
|
202
220
|
- app/assets/stylesheets/plug/milligram.scss
|
203
221
|
- app/assets/stylesheets/plug/mixins/_bem.scss
|
@@ -206,22 +224,37 @@ files:
|
|
206
224
|
- app/assets/stylesheets/plug/partials/_utils.scss
|
207
225
|
- app/assets/stylesheets/plug/variables/_colors.scss
|
208
226
|
- app/assets/stylesheets/plug/variables/_typography.scss
|
227
|
+
- app/controllers/plug/api/api_controller.rb
|
228
|
+
- app/controllers/plug/api/site_notices_controller.rb
|
209
229
|
- app/controllers/plug/application_controller.rb
|
210
230
|
- app/controllers/plug/features_controller.rb
|
231
|
+
- app/controllers/plug/site_notices_controller.rb
|
211
232
|
- app/helpers/plug/application_helper.rb
|
212
233
|
- app/mailers/plug/application_mailer.rb
|
213
234
|
- app/models/plug/application_record.rb
|
235
|
+
- app/models/plug/concerns/model_helpers.rb
|
236
|
+
- app/models/plug/concerns/themeable.rb
|
214
237
|
- app/models/plug/feature.rb
|
238
|
+
- app/models/plug/resources/site_notice.rb
|
239
|
+
- app/models/plug/site_notice.rb
|
240
|
+
- app/services/plug/task_execution_service.rb
|
215
241
|
- app/views/layouts/plug/application.html.haml
|
216
242
|
- app/views/plug/features/_form.html.haml
|
243
|
+
- app/views/plug/features/_task.html.haml
|
217
244
|
- app/views/plug/features/edit.html.haml
|
218
245
|
- app/views/plug/features/index.html.haml
|
219
246
|
- app/views/plug/features/new.html.haml
|
220
247
|
- app/views/plug/shared/_head.html.haml
|
221
248
|
- app/views/plug/shared/_nav.html.haml
|
249
|
+
- app/views/plug/site_notices/_form.html.haml
|
250
|
+
- app/views/plug/site_notices/edit.html.haml
|
251
|
+
- app/views/plug/site_notices/index.html.haml
|
252
|
+
- app/views/plug/site_notices/new.html.haml
|
222
253
|
- config/routes.rb
|
223
254
|
- db/migrate/20171207020316_create_plug_features.rb
|
224
255
|
- db/migrate/20180128202026_add_notice_to_plug_features.rb
|
256
|
+
- db/migrate/20180403024712_create_plug_site_notices.rb
|
257
|
+
- db/migrate/20180424015828_add_theme_to_plug_site_notice.rb
|
225
258
|
- lib/generators/plug/install_generator.rb
|
226
259
|
- lib/generators/plug/templates/plug.rb
|
227
260
|
- lib/plug.rb
|
@@ -249,8 +282,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
249
282
|
- !ruby/object:Gem::Version
|
250
283
|
version: '0'
|
251
284
|
requirements: []
|
252
|
-
|
253
|
-
rubygems_version: 2.6.13
|
285
|
+
rubygems_version: 3.0.3
|
254
286
|
signing_key:
|
255
287
|
specification_version: 4
|
256
288
|
summary: Rails engine that can plug/unplug features
|