plug 0.1.14 → 0.1.15
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 +4 -4
- data/README.md +10 -0
- data/app/assets/stylesheets/plug/application.scss +2 -1
- data/app/assets/stylesheets/plug/blocks/_menu.scss +11 -0
- 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 +1 -0
- data/app/controllers/plug/site_notices_controller.rb +69 -0
- data/app/models/plug/concerns/model_helpers.rb +45 -0
- data/app/models/plug/feature.rb +1 -25
- data/app/models/plug/resources/site_notice.rb +15 -0
- data/app/models/plug/site_notice.rb +6 -0
- data/app/views/plug/features/index.html.haml +12 -9
- data/app/views/plug/shared/_nav.html.haml +8 -5
- data/app/views/plug/site_notices/_form.html.haml +22 -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 -1
- data/db/migrate/20180403024712_create_plug_site_notices.rb +15 -0
- data/lib/plug/configuration.rb +2 -1
- data/lib/plug/version.rb +1 -1
- metadata +33 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e17ce17b82f86550c238b434a1524e79de09d603
|
4
|
+
data.tar.gz: 484c4c279b9a86e58b1297581cbd1e2a8537d2b2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 736df38bac871297d9680d4a00ba0647cdffc5dfe91f2e2b7a10953bc6d7e18d7f2cb59fa87670fda467b9ef735657aea2fb111b2ac5c22b899cd5c9a0c1cb0c
|
7
|
+
data.tar.gz: f90d239f21f388e90c02b6b780da25ff987c347a86bbbe51854707ce306cd3866c90d207e58881adce76f5a50de238c993f9530e2248477cf049c385791852db
|
data/README.md
CHANGED
@@ -32,6 +32,7 @@ And run the install generator:
|
|
32
32
|
```bash
|
33
33
|
→ rails g plug:install
|
34
34
|
→ rails g 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
|
@@ -81,6 +82,15 @@ Add buttons to the config block to perform rake tasks from the plug dashboard
|
|
81
82
|
]
|
82
83
|
```
|
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
|
+
```
|
93
|
+
|
84
94
|
### Running the tests
|
85
95
|
|
86
96
|
```bash
|
@@ -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
|
@@ -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)
|
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
|
@@ -1,15 +1,15 @@
|
|
1
|
-
|
2
|
-
.
|
3
|
-
- if notice
|
4
|
-
%p.notice= sanitize(notice)
|
1
|
+
- if notice
|
2
|
+
%p.notice= sanitize(notice)
|
5
3
|
|
6
|
-
|
7
|
-
|
4
|
+
- if alert
|
5
|
+
%p.alert= sanitize(alert)
|
8
6
|
|
9
|
-
|
10
|
-
|
11
|
-
|
7
|
+
.row
|
8
|
+
.column
|
9
|
+
= render partial: 'task', collection: Plug.buttons
|
12
10
|
|
11
|
+
.row
|
12
|
+
.column
|
13
13
|
.clearfix
|
14
14
|
.float-left
|
15
15
|
%h4 Features
|
@@ -23,6 +23,9 @@
|
|
23
23
|
%th Description
|
24
24
|
%th Slug
|
25
25
|
%th State
|
26
|
+
|
27
|
+
- if Plug.allow_delete
|
28
|
+
%th Actions
|
26
29
|
|
27
30
|
%tbody
|
28
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,22 @@
|
|
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
|
+
.actions.clearfix
|
19
|
+
.float-left
|
20
|
+
= link_to 'Back', site_notices_path, class: 'button'
|
21
|
+
.float-right
|
22
|
+
= 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,6 +1,16 @@
|
|
1
1
|
Plug::Engine.routes.draw do
|
2
2
|
root to: 'features#index'
|
3
3
|
|
4
|
-
|
4
|
+
# Features
|
5
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
|
6
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.15
|
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: 2018-
|
12
|
+
date: 2018-04-06 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
|
@@ -197,6 +211,7 @@ files:
|
|
197
211
|
- app/assets/stylesheets/plug/_settings.scss
|
198
212
|
- app/assets/stylesheets/plug/application.scss
|
199
213
|
- app/assets/stylesheets/plug/blocks/_alert.scss
|
214
|
+
- app/assets/stylesheets/plug/blocks/_menu.scss
|
200
215
|
- app/assets/stylesheets/plug/blocks/_nav.scss
|
201
216
|
- app/assets/stylesheets/plug/blocks/_notice.scss
|
202
217
|
- app/assets/stylesheets/plug/blocks/_state.scss
|
@@ -209,12 +224,18 @@ files:
|
|
209
224
|
- app/assets/stylesheets/plug/partials/_utils.scss
|
210
225
|
- app/assets/stylesheets/plug/variables/_colors.scss
|
211
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
|
212
229
|
- app/controllers/plug/application_controller.rb
|
213
230
|
- app/controllers/plug/features_controller.rb
|
231
|
+
- app/controllers/plug/site_notices_controller.rb
|
214
232
|
- app/helpers/plug/application_helper.rb
|
215
233
|
- app/mailers/plug/application_mailer.rb
|
216
234
|
- app/models/plug/application_record.rb
|
235
|
+
- app/models/plug/concerns/model_helpers.rb
|
217
236
|
- app/models/plug/feature.rb
|
237
|
+
- app/models/plug/resources/site_notice.rb
|
238
|
+
- app/models/plug/site_notice.rb
|
218
239
|
- app/views/layouts/plug/application.html.haml
|
219
240
|
- app/views/plug/features/_form.html.haml
|
220
241
|
- app/views/plug/features/_task.html.haml
|
@@ -223,9 +244,14 @@ files:
|
|
223
244
|
- app/views/plug/features/new.html.haml
|
224
245
|
- app/views/plug/shared/_head.html.haml
|
225
246
|
- app/views/plug/shared/_nav.html.haml
|
247
|
+
- app/views/plug/site_notices/_form.html.haml
|
248
|
+
- app/views/plug/site_notices/edit.html.haml
|
249
|
+
- app/views/plug/site_notices/index.html.haml
|
250
|
+
- app/views/plug/site_notices/new.html.haml
|
226
251
|
- config/routes.rb
|
227
252
|
- db/migrate/20171207020316_create_plug_features.rb
|
228
253
|
- db/migrate/20180128202026_add_notice_to_plug_features.rb
|
254
|
+
- db/migrate/20180403024712_create_plug_site_notices.rb
|
229
255
|
- lib/generators/plug/install_generator.rb
|
230
256
|
- lib/generators/plug/templates/plug.rb
|
231
257
|
- lib/plug.rb
|
@@ -254,7 +280,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
254
280
|
version: '0'
|
255
281
|
requirements: []
|
256
282
|
rubyforge_project:
|
257
|
-
rubygems_version: 2.6.
|
283
|
+
rubygems_version: 2.6.13
|
258
284
|
signing_key:
|
259
285
|
specification_version: 4
|
260
286
|
summary: Rails engine that can plug/unplug features
|