dokno 1.0.0
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 +7 -0
- data/MIT-LICENSE +20 -0
- data/README.md +130 -0
- data/Rakefile +22 -0
- data/app/assets/config/dokno_manifest.js +3 -0
- data/app/assets/javascripts/dokno.js +144 -0
- data/app/assets/javascripts/dokno/application.js +15 -0
- data/app/assets/javascripts/feather.min.js +13 -0
- data/app/assets/javascripts/init.js +5 -0
- data/app/assets/stylesheets/dokno/application.css +137 -0
- data/app/assets/stylesheets/dokno/tailwind.min.css +1 -0
- data/app/controllers/dokno/application_controller.rb +7 -0
- data/app/controllers/dokno/articles_controller.rb +115 -0
- data/app/controllers/dokno/categories_controller.rb +63 -0
- data/app/controllers/dokno/pagination_concern.rb +15 -0
- data/app/controllers/dokno/user_concern.rb +38 -0
- data/app/helpers/dokno/application_helper.rb +17 -0
- data/app/models/dokno/application_record.rb +5 -0
- data/app/models/dokno/article.rb +215 -0
- data/app/models/dokno/article_slug.rb +7 -0
- data/app/models/dokno/category.rb +100 -0
- data/app/models/dokno/log.rb +7 -0
- data/app/views/dokno/_article_formatting.html.erb +89 -0
- data/app/views/dokno/_article_panel.html.erb +112 -0
- data/app/views/dokno/_panel_formatting.html.erb +95 -0
- data/app/views/dokno/_reset_formatting.html.erb +55 -0
- data/app/views/dokno/articles/_article_form.html.erb +60 -0
- data/app/views/dokno/articles/edit.html.erb +7 -0
- data/app/views/dokno/articles/new.html.erb +7 -0
- data/app/views/dokno/articles/show.html.erb +130 -0
- data/app/views/dokno/categories/_category_form.html.erb +33 -0
- data/app/views/dokno/categories/edit.html.erb +7 -0
- data/app/views/dokno/categories/index.html.erb +96 -0
- data/app/views/dokno/categories/new.html.erb +7 -0
- data/app/views/layouts/dokno/application.html.erb +100 -0
- data/app/views/partials/_form_errors.html.erb +18 -0
- data/app/views/partials/_logs.html.erb +52 -0
- data/app/views/partials/_pagination.html.erb +35 -0
- data/config/routes.rb +11 -0
- data/db/migrate/20201203190330_baseline.rb +62 -0
- data/lib/dokno.rb +4 -0
- data/lib/dokno/config/config.rb +73 -0
- data/lib/dokno/engine.rb +27 -0
- data/lib/dokno/version.rb +3 -0
- data/lib/generators/dokno/install/install_generator.rb +13 -0
- data/lib/generators/dokno/templates/config/dokno_template.md +5 -0
- data/lib/generators/dokno/templates/config/initializers/dokno.rb +14 -0
- data/lib/tasks/dokno_tasks.rake +4 -0
- metadata +253 -0
@@ -0,0 +1,18 @@
|
|
1
|
+
<div id="error_explanation" class="bg-white mb-10">
|
2
|
+
<i data-feather="alert-octagon" class="float-right"></i>
|
3
|
+
<h2 class="font-semibold">
|
4
|
+
There
|
5
|
+
<% if errors.count == 1 %>
|
6
|
+
is a problem
|
7
|
+
<% else %>
|
8
|
+
are <%= pluralize(errors.count, "problem") %>
|
9
|
+
<% end %>
|
10
|
+
that must be resolved before saving:
|
11
|
+
</h2>
|
12
|
+
|
13
|
+
<ul class="mt-5 list-disc list-inside bg-gray-100 p-5 rounded">
|
14
|
+
<% errors.full_messages.each do |message| %>
|
15
|
+
<li><%= message %></li>
|
16
|
+
<% end %>
|
17
|
+
</ul>
|
18
|
+
</div>
|
@@ -0,0 +1,52 @@
|
|
1
|
+
<% if article&.logs.present? %>
|
2
|
+
<div class="py-10 px-16 text-gray-200 bg-gray-900">
|
3
|
+
<div class="w-full max-w-screen-xl m-auto">
|
4
|
+
<div class="text-xl text-gray-600 cursor-pointer" onclick="toggleVisibility('change-log');">
|
5
|
+
Change log for this article
|
6
|
+
|
7
|
+
<div class="inline toggle-visibility-indicator-container change-log">
|
8
|
+
<i data-feather="chevron-left" class="inline toggle-visibility-indicator change-log"></i>
|
9
|
+
</div>
|
10
|
+
</div>
|
11
|
+
|
12
|
+
<div id="change-log" class="bg-gray-800 px-10 mt-8 rounded hidden text-gray-500">
|
13
|
+
<ul>
|
14
|
+
<% article.logs.includes(article: :categories).each do |log| %>
|
15
|
+
<li class="my-10">
|
16
|
+
<div>
|
17
|
+
<% if article.blank? %>
|
18
|
+
<div class="text-white text-xl"><a href="<%= article_path log.article.slug %>" title="View Article"><%= log.article.title %></a></div>
|
19
|
+
<div class="mb-5"><%= log.article.category_name_list %></div>
|
20
|
+
<% end %>
|
21
|
+
|
22
|
+
<div class="text-gray-500 bg-gray-700 p-5 pr-10 rounded <%= 'cursor-pointer' if log.diff_left != log.diff_right %> flex items-center" onclick="toggleVisibility('article-diff-<%= log.id %>');" title="Show / Hide Diff">
|
23
|
+
<div class="w-4/5">
|
24
|
+
<%= time_ago_in_words log.created_at %> ago
|
25
|
+
<% if log.username.present? %>
|
26
|
+
by <%= log.username %>
|
27
|
+
<% end %>
|
28
|
+
|
29
|
+
<% if log.meta.present? %>
|
30
|
+
<br /><span class="text-gray-300"><%= log.meta %></span>
|
31
|
+
<% end %>
|
32
|
+
</div>
|
33
|
+
|
34
|
+
<div class="w-1/5 text-right toggle-visibility-indicator-container article-diff-<%= log.id %>">
|
35
|
+
<% if log.diff_left != log.diff_right %><i data-feather="chevron-left" class="inline toggle-visibility-indicator article-diff-<%= log.id %>"></i><% end %>
|
36
|
+
</div>
|
37
|
+
</div>
|
38
|
+
|
39
|
+
<% if log.diff_left != log.diff_right %>
|
40
|
+
<div id="article-diff-<%= log.id %>" class="flex hidden">
|
41
|
+
<div class="w-1/2 p-5">Before:<br /><%= log.diff_left.html_safe %></div>
|
42
|
+
<div class="w-1/2 p-5">After:<br /><%= log.diff_right.html_safe %></div>
|
43
|
+
</div>
|
44
|
+
<% end %>
|
45
|
+
</div>
|
46
|
+
</li>
|
47
|
+
<% end %>
|
48
|
+
</ul>
|
49
|
+
</div>
|
50
|
+
</div>
|
51
|
+
</div>
|
52
|
+
<% end %>
|
@@ -0,0 +1,35 @@
|
|
1
|
+
<span class="mr-5">
|
2
|
+
<% if @page > 1 %>
|
3
|
+
<span class="mr-1 inline-block"><a href="?search_term=<%= CGI.escape @search_term.to_s %>&order=<%= @order %>&page=<%= (@page - 1) %>"><i data-feather="arrow-left" class="h-5 inline-block" title="Previous page"></i></a></span>
|
4
|
+
<% end %>
|
5
|
+
|
6
|
+
<span class="mr-1 inline-block">Page</span>
|
7
|
+
|
8
|
+
<%= form_with(url: article_index_path, method: :get, class: 'inline') do %>
|
9
|
+
<input type="hidden" name="id" value="<%= @category&.id %>">
|
10
|
+
<input type="hidden" name="search_term" value="<%= @search_term %>">
|
11
|
+
<input type="hidden" name="order" value="<%= @order %>">
|
12
|
+
<input type="text" name="page" id="page" value="<%= @page %>" onclick="this.select();" class="w-10 text-center bg-gray-200 rounded" />
|
13
|
+
|
14
|
+
<span class="mx-1 inline-block">of</span>
|
15
|
+
<span class="text-center inline-block"><%= @total_pages %></span>
|
16
|
+
<% end %>
|
17
|
+
|
18
|
+
<% if @page < @total_pages %>
|
19
|
+
<span class="ml-1 inline-block"><a href="?search_term=<%= CGI.escape @search_term.to_s %>&order=<%= @order %>&page=<%= (@page + 1) %>"><i data-feather="arrow-right" class="h-5 inline-block" title="Next page"></i></a></span>
|
20
|
+
<% end %>
|
21
|
+
</span>
|
22
|
+
|
23
|
+
<span class="text-gray-400">
|
24
|
+
<%= @total_records %>
|
25
|
+
<%= 'uncategorized' if @category.blank? && @search_term.blank? %>
|
26
|
+
<%= 'article'.pluralize(@total_records) %>
|
27
|
+
|
28
|
+
<% if @search_term.present? %>
|
29
|
+
containing <span class="font-serif">“</span><%= @search_term %><span class="font-serif">”</span>
|
30
|
+
<% end %>
|
31
|
+
|
32
|
+
<% if @category.present? %>
|
33
|
+
in <%= "#{(children_count = @category.branch.count) == 1 ? 'this' : children_count} #{'category'.pluralize(children_count)}" %>
|
34
|
+
<% end %>
|
35
|
+
</span>
|
data/config/routes.rb
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
Dokno::Engine.routes.draw do
|
2
|
+
resources :categories, except: [:show]
|
3
|
+
resources :articles
|
4
|
+
|
5
|
+
get '/(:cat_code)', to: 'categories#index', as: :article_index
|
6
|
+
get 'article_panel/(:slug)', to: 'articles#panel', as: :panel
|
7
|
+
post 'article_log', to: 'articles#article_log', as: :article_log
|
8
|
+
post 'article_preview', to: 'articles#preview', as: :preview
|
9
|
+
post 'article_status', to: 'articles#status', as: :status
|
10
|
+
root 'categories#index'
|
11
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
class Baseline < ActiveRecord::Migration[6.0]
|
2
|
+
def change
|
3
|
+
create_table "dokno_article_slugs", force: :cascade do |t|
|
4
|
+
t.string "slug", null: false
|
5
|
+
t.bigint "article_id"
|
6
|
+
t.datetime "created_at", precision: 6, null: false
|
7
|
+
t.datetime "updated_at", precision: 6, null: false
|
8
|
+
t.index ["article_id"], name: "index_dokno_article_slugs_on_article_id"
|
9
|
+
t.index ["slug"], name: "index_dokno_article_slugs_on_slug", unique: true
|
10
|
+
end
|
11
|
+
|
12
|
+
create_table "dokno_articles", force: :cascade do |t|
|
13
|
+
t.string "slug"
|
14
|
+
t.string "title"
|
15
|
+
t.text "markdown"
|
16
|
+
t.datetime "created_at", precision: 6, null: false
|
17
|
+
t.datetime "updated_at", precision: 6, null: false
|
18
|
+
t.text "summary"
|
19
|
+
t.boolean "active", default: true
|
20
|
+
t.bigint "views", default: 0
|
21
|
+
t.datetime "last_viewed_at"
|
22
|
+
t.index ["slug"], name: "index_dokno_articles_on_slug", unique: true
|
23
|
+
end
|
24
|
+
|
25
|
+
create_table "dokno_articles_categories", id: false, force: :cascade do |t|
|
26
|
+
t.bigint "article_id"
|
27
|
+
t.bigint "category_id"
|
28
|
+
t.index ["article_id", "category_id"], name: "index_dokno_articles_categories_on_article_id_and_category_id", unique: true
|
29
|
+
t.index ["article_id"], name: "index_dokno_articles_categories_on_article_id"
|
30
|
+
t.index ["category_id"], name: "index_dokno_articles_categories_on_category_id"
|
31
|
+
end
|
32
|
+
|
33
|
+
create_table "dokno_categories", force: :cascade do |t|
|
34
|
+
t.string "name"
|
35
|
+
t.datetime "created_at", precision: 6, null: false
|
36
|
+
t.datetime "updated_at", precision: 6, null: false
|
37
|
+
t.bigint "category_id"
|
38
|
+
t.string "code", null: false
|
39
|
+
t.index ["category_id"], name: "index_dokno_categories_on_category_id"
|
40
|
+
t.index ["code"], name: "index_dokno_categories_on_code", unique: true
|
41
|
+
t.index ["name"], name: "index_dokno_categories_on_name", unique: true
|
42
|
+
end
|
43
|
+
|
44
|
+
create_table "dokno_logs", force: :cascade do |t|
|
45
|
+
t.bigint "article_id"
|
46
|
+
t.string "username"
|
47
|
+
t.text "meta"
|
48
|
+
t.text "diff_left"
|
49
|
+
t.text "diff_right"
|
50
|
+
t.datetime "created_at", precision: 6, null: false
|
51
|
+
t.datetime "updated_at", precision: 6, null: false
|
52
|
+
t.index ["article_id"], name: "index_dokno_logs_on_article_id"
|
53
|
+
t.index ["username"], name: "index_dokno_logs_on_username"
|
54
|
+
end
|
55
|
+
|
56
|
+
add_foreign_key "dokno_article_slugs", "dokno_articles", column: "article_id"
|
57
|
+
add_foreign_key "dokno_articles_categories", "dokno_articles", column: "article_id"
|
58
|
+
add_foreign_key "dokno_articles_categories", "dokno_categories", column: "category_id"
|
59
|
+
add_foreign_key "dokno_categories", "dokno_categories", column: "category_id"
|
60
|
+
add_foreign_key "dokno_logs", "dokno_articles", column: "article_id"
|
61
|
+
end
|
62
|
+
end
|
data/lib/dokno.rb
ADDED
@@ -0,0 +1,73 @@
|
|
1
|
+
module Dokno
|
2
|
+
def self.configure
|
3
|
+
yield config
|
4
|
+
config.validate
|
5
|
+
end
|
6
|
+
|
7
|
+
def self.config
|
8
|
+
@config ||= Config.new
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.config=(val)
|
12
|
+
@config = val
|
13
|
+
end
|
14
|
+
|
15
|
+
class Config
|
16
|
+
# (String) Host application name for display within the mounted dashboard
|
17
|
+
attr_accessor :app_name
|
18
|
+
|
19
|
+
# (Enumerable) Determines which HTML tags are allowed in Article markdown
|
20
|
+
attr_accessor :tag_whitelist
|
21
|
+
|
22
|
+
# (Enumerable) Determines which HTML attributes are allowed in Article markdown
|
23
|
+
attr_accessor :attr_whitelist
|
24
|
+
|
25
|
+
# (String) Host application's user object
|
26
|
+
attr_accessor :app_user_object
|
27
|
+
|
28
|
+
# (Symbol) Host application's user object method that should be used to authorize users to edit Dokno data
|
29
|
+
# Should return boolean.
|
30
|
+
attr_accessor :app_user_auth_method
|
31
|
+
|
32
|
+
# (Symbol) Host application's user object method that should return the authenticated user's name or other
|
33
|
+
# identifier that will be included in change log events. Should return a string.
|
34
|
+
attr_accessor :app_user_name_method
|
35
|
+
|
36
|
+
# Defaults
|
37
|
+
TAG_WHITELIST = %w[code img h1 h2 h3 h4 h5 h6 a em u i b strong ol ul li table thead tbody tfoot tr th td blockquote hr br p]
|
38
|
+
ATTR_WHITELIST = %w[src alt title href target]
|
39
|
+
APP_USER_OBJECT = 'current_user'
|
40
|
+
APP_USER_AUTH_METHOD = 'admin?'
|
41
|
+
APP_USER_NAME_METHOD = 'name'
|
42
|
+
|
43
|
+
def initialize
|
44
|
+
self.app_name = Rails.application.class.module_parent.name.underscore.humanize.upcase
|
45
|
+
self.tag_whitelist = TAG_WHITELIST
|
46
|
+
self.attr_whitelist = ATTR_WHITELIST
|
47
|
+
self.app_user_object = APP_USER_OBJECT
|
48
|
+
self.app_user_auth_method = APP_USER_AUTH_METHOD
|
49
|
+
self.app_user_name_method = APP_USER_NAME_METHOD
|
50
|
+
end
|
51
|
+
|
52
|
+
def validate
|
53
|
+
validate_tag_whitelist
|
54
|
+
validate_attr_whitelist
|
55
|
+
end
|
56
|
+
|
57
|
+
def validate_tag_whitelist
|
58
|
+
return unless !tag_whitelist.is_a?(Enumerable)
|
59
|
+
|
60
|
+
raise "#{config_error_prefix} tag_whitelist must be Enumerable"
|
61
|
+
end
|
62
|
+
|
63
|
+
def validate_attr_whitelist
|
64
|
+
return unless !attr_whitelist.is_a?(Enumerable)
|
65
|
+
|
66
|
+
raise "#{config_error_prefix} attr_whitelist must be Enumerable"
|
67
|
+
end
|
68
|
+
|
69
|
+
def config_error_prefix
|
70
|
+
"Dokno configuration error (check config/initializers/dokno.rb):"
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
data/lib/dokno/engine.rb
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
require_relative 'config/config'
|
2
|
+
|
3
|
+
module Dokno
|
4
|
+
class Engine < ::Rails::Engine
|
5
|
+
isolate_namespace Dokno
|
6
|
+
|
7
|
+
initializer 'Dokno precompile', group: :all do |app|
|
8
|
+
app.config.assets.precompile << "dokno_manifest.js"
|
9
|
+
end
|
10
|
+
|
11
|
+
config.generators do |g|
|
12
|
+
g.test_framework :rspec
|
13
|
+
end
|
14
|
+
|
15
|
+
initializer :append_migrations do |app|
|
16
|
+
config.paths["db/migrate"].expanded.each do |expanded_path|
|
17
|
+
app.config.paths["db/migrate"] << expanded_path
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
initializer 'local_helper.action_controller' do
|
22
|
+
ActiveSupport.on_load :action_controller do
|
23
|
+
helper Dokno::ApplicationHelper
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module Dokno
|
2
|
+
module Generators
|
3
|
+
class InstallGenerator < Rails::Generators::Base
|
4
|
+
source_root File.expand_path('../../templates', __FILE__)
|
5
|
+
|
6
|
+
desc 'Copies the Dokno configuration templates to the host app'
|
7
|
+
def copy_initializer
|
8
|
+
template 'config/initializers/dokno.rb', 'config/initializers/dokno.rb'
|
9
|
+
template 'config/dokno_template.md', 'config/dokno_template.md'
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
Dokno.configure do |config|
|
2
|
+
config.tag_whitelist = Dokno::Config::TAG_WHITELIST
|
3
|
+
config.attr_whitelist = Dokno::Config::ATTR_WHITELIST
|
4
|
+
|
5
|
+
# To restrict Dokno data modification and include indentifying information
|
6
|
+
# in change log entries, provide the appropriate user values for your app below.
|
7
|
+
# (String) app_user_object
|
8
|
+
# (Symbol) app_user_auth_method
|
9
|
+
# (Symbol) app_user_name_method
|
10
|
+
|
11
|
+
# config.app_user_object = 'current_user'
|
12
|
+
# config.app_user_auth_method = :admin?
|
13
|
+
# config.app_user_name_method = :name
|
14
|
+
end
|
metadata
ADDED
@@ -0,0 +1,253 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: dokno
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Courtney Payne
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2020-12-03 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: diffy
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '3.4'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '3.4'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: redcarpet
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '3.5'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '3.5'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: database_cleaner-active_record
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.8'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.8'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: pg
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '1.2'
|
62
|
+
- - ">="
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
version: 1.2.3
|
65
|
+
type: :development
|
66
|
+
prerelease: false
|
67
|
+
version_requirements: !ruby/object:Gem::Requirement
|
68
|
+
requirements:
|
69
|
+
- - "~>"
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
version: '1.2'
|
72
|
+
- - ">="
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: 1.2.3
|
75
|
+
- !ruby/object:Gem::Dependency
|
76
|
+
name: pry-byebug
|
77
|
+
requirement: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - "~>"
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: '3.9'
|
82
|
+
type: :development
|
83
|
+
prerelease: false
|
84
|
+
version_requirements: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - "~>"
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '3.9'
|
89
|
+
- !ruby/object:Gem::Dependency
|
90
|
+
name: rails
|
91
|
+
requirement: !ruby/object:Gem::Requirement
|
92
|
+
requirements:
|
93
|
+
- - "~>"
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: 6.0.3
|
96
|
+
- - ">="
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: 6.0.3.4
|
99
|
+
type: :development
|
100
|
+
prerelease: false
|
101
|
+
version_requirements: !ruby/object:Gem::Requirement
|
102
|
+
requirements:
|
103
|
+
- - "~>"
|
104
|
+
- !ruby/object:Gem::Version
|
105
|
+
version: 6.0.3
|
106
|
+
- - ">="
|
107
|
+
- !ruby/object:Gem::Version
|
108
|
+
version: 6.0.3.4
|
109
|
+
- !ruby/object:Gem::Dependency
|
110
|
+
name: rspec-rails
|
111
|
+
requirement: !ruby/object:Gem::Requirement
|
112
|
+
requirements:
|
113
|
+
- - "~>"
|
114
|
+
- !ruby/object:Gem::Version
|
115
|
+
version: '4.0'
|
116
|
+
- - ">="
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: 4.0.1
|
119
|
+
type: :development
|
120
|
+
prerelease: false
|
121
|
+
version_requirements: !ruby/object:Gem::Requirement
|
122
|
+
requirements:
|
123
|
+
- - "~>"
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '4.0'
|
126
|
+
- - ">="
|
127
|
+
- !ruby/object:Gem::Version
|
128
|
+
version: 4.0.1
|
129
|
+
- !ruby/object:Gem::Dependency
|
130
|
+
name: simplecov
|
131
|
+
requirement: !ruby/object:Gem::Requirement
|
132
|
+
requirements:
|
133
|
+
- - "~>"
|
134
|
+
- !ruby/object:Gem::Version
|
135
|
+
version: 0.19.1
|
136
|
+
type: :development
|
137
|
+
prerelease: false
|
138
|
+
version_requirements: !ruby/object:Gem::Requirement
|
139
|
+
requirements:
|
140
|
+
- - "~>"
|
141
|
+
- !ruby/object:Gem::Version
|
142
|
+
version: 0.19.1
|
143
|
+
- !ruby/object:Gem::Dependency
|
144
|
+
name: bullet
|
145
|
+
requirement: !ruby/object:Gem::Requirement
|
146
|
+
requirements:
|
147
|
+
- - "~>"
|
148
|
+
- !ruby/object:Gem::Version
|
149
|
+
version: '6.1'
|
150
|
+
type: :development
|
151
|
+
prerelease: false
|
152
|
+
version_requirements: !ruby/object:Gem::Requirement
|
153
|
+
requirements:
|
154
|
+
- - "~>"
|
155
|
+
- !ruby/object:Gem::Version
|
156
|
+
version: '6.1'
|
157
|
+
- !ruby/object:Gem::Dependency
|
158
|
+
name: faker
|
159
|
+
requirement: !ruby/object:Gem::Requirement
|
160
|
+
requirements:
|
161
|
+
- - "~>"
|
162
|
+
- !ruby/object:Gem::Version
|
163
|
+
version: '2.15'
|
164
|
+
type: :development
|
165
|
+
prerelease: false
|
166
|
+
version_requirements: !ruby/object:Gem::Requirement
|
167
|
+
requirements:
|
168
|
+
- - "~>"
|
169
|
+
- !ruby/object:Gem::Version
|
170
|
+
version: '2.15'
|
171
|
+
description: Dokno allows you to easily mount a self-contained knowledgebase / wiki
|
172
|
+
/ help system to your Rails app where you and your users can author articles relevant
|
173
|
+
to your app.
|
174
|
+
email:
|
175
|
+
- cpayne624@gmail.com
|
176
|
+
executables: []
|
177
|
+
extensions: []
|
178
|
+
extra_rdoc_files: []
|
179
|
+
files:
|
180
|
+
- MIT-LICENSE
|
181
|
+
- README.md
|
182
|
+
- Rakefile
|
183
|
+
- app/assets/config/dokno_manifest.js
|
184
|
+
- app/assets/javascripts/dokno.js
|
185
|
+
- app/assets/javascripts/dokno/application.js
|
186
|
+
- app/assets/javascripts/feather.min.js
|
187
|
+
- app/assets/javascripts/init.js
|
188
|
+
- app/assets/stylesheets/dokno/application.css
|
189
|
+
- app/assets/stylesheets/dokno/tailwind.min.css
|
190
|
+
- app/controllers/dokno/application_controller.rb
|
191
|
+
- app/controllers/dokno/articles_controller.rb
|
192
|
+
- app/controllers/dokno/categories_controller.rb
|
193
|
+
- app/controllers/dokno/pagination_concern.rb
|
194
|
+
- app/controllers/dokno/user_concern.rb
|
195
|
+
- app/helpers/dokno/application_helper.rb
|
196
|
+
- app/models/dokno/application_record.rb
|
197
|
+
- app/models/dokno/article.rb
|
198
|
+
- app/models/dokno/article_slug.rb
|
199
|
+
- app/models/dokno/category.rb
|
200
|
+
- app/models/dokno/log.rb
|
201
|
+
- app/views/dokno/_article_formatting.html.erb
|
202
|
+
- app/views/dokno/_article_panel.html.erb
|
203
|
+
- app/views/dokno/_panel_formatting.html.erb
|
204
|
+
- app/views/dokno/_reset_formatting.html.erb
|
205
|
+
- app/views/dokno/articles/_article_form.html.erb
|
206
|
+
- app/views/dokno/articles/edit.html.erb
|
207
|
+
- app/views/dokno/articles/new.html.erb
|
208
|
+
- app/views/dokno/articles/show.html.erb
|
209
|
+
- app/views/dokno/categories/_category_form.html.erb
|
210
|
+
- app/views/dokno/categories/edit.html.erb
|
211
|
+
- app/views/dokno/categories/index.html.erb
|
212
|
+
- app/views/dokno/categories/new.html.erb
|
213
|
+
- app/views/layouts/dokno/application.html.erb
|
214
|
+
- app/views/partials/_form_errors.html.erb
|
215
|
+
- app/views/partials/_logs.html.erb
|
216
|
+
- app/views/partials/_pagination.html.erb
|
217
|
+
- config/routes.rb
|
218
|
+
- db/migrate/20201203190330_baseline.rb
|
219
|
+
- lib/dokno.rb
|
220
|
+
- lib/dokno/config/config.rb
|
221
|
+
- lib/dokno/engine.rb
|
222
|
+
- lib/dokno/version.rb
|
223
|
+
- lib/generators/dokno/install/install_generator.rb
|
224
|
+
- lib/generators/dokno/templates/config/dokno_template.md
|
225
|
+
- lib/generators/dokno/templates/config/initializers/dokno.rb
|
226
|
+
- lib/tasks/dokno_tasks.rake
|
227
|
+
homepage: https://github.com/cpayne624/dokno
|
228
|
+
licenses:
|
229
|
+
- MIT
|
230
|
+
metadata:
|
231
|
+
bug_tracker_uri: https://github.com/cpayne624/dokno/issues
|
232
|
+
changelog_uri: https://github.com/cpayne624/dokno/blob/master/CHANGELOG.md
|
233
|
+
post_install_message:
|
234
|
+
rdoc_options: []
|
235
|
+
require_paths:
|
236
|
+
- lib
|
237
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
238
|
+
requirements:
|
239
|
+
- - ">="
|
240
|
+
- !ruby/object:Gem::Version
|
241
|
+
version: '0'
|
242
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
243
|
+
requirements:
|
244
|
+
- - ">="
|
245
|
+
- !ruby/object:Gem::Version
|
246
|
+
version: '0'
|
247
|
+
requirements: []
|
248
|
+
rubygems_version: 3.1.4
|
249
|
+
signing_key:
|
250
|
+
specification_version: 4
|
251
|
+
summary: Dokno (dough-no) is a lightweight mountable Rails Engine for storing and
|
252
|
+
managing your app's domain knowledge.
|
253
|
+
test_files: []
|