plug 0.1.14 → 0.1.15
Sign up to get free protection for your applications and to get access to all the features.
- 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
|