{{#if isSearchingOrFiltered}}
{{#if emptyResults}}
{{i18n 'search.no_results'}}
- {{plugin-outlet name="after-knowledge-explorer-empty-results"}}
+ {{plugin-outlet name="after-docs-empty-results"}}
{{else}}
- {{i18n 'knowledge_explorer.search.results'
+ {{i18n 'docs.search.results'
count=topicCount
}}
{{/if}}
{{/if}}
{{#unless emptyResults}}
- {{knowledge-explorer-topic-list
+ {{docs-topic-list
topics=topics
ascending=ascending
order=orderColumn
diff --git a/assets/javascripts/discourse/templates/docs-topic-link.hbr b/assets/javascripts/discourse/templates/docs-topic-link.hbr
new file mode 100644
index 0000000..dd823f2
--- /dev/null
+++ b/assets/javascripts/discourse/templates/docs-topic-link.hbr
@@ -0,0 +1 @@
+
{{{topic.fancyTitle}}}
diff --git a/assets/javascripts/discourse/templates/knowledge-explorer-topic-list-item.hbr b/assets/javascripts/discourse/templates/docs-topic-list-item.hbr
similarity index 85%
rename from assets/javascripts/discourse/templates/knowledge-explorer-topic-list-item.hbr
rename to assets/javascripts/discourse/templates/docs-topic-list-item.hbr
index 5beb93a..0e15893 100644
--- a/assets/javascripts/discourse/templates/knowledge-explorer-topic-list-item.hbr
+++ b/assets/javascripts/discourse/templates/docs-topic-list-item.hbr
@@ -2,7 +2,7 @@
{{~raw "topic-status" topic=topic}}
- {{~raw "knowledge-explorer-topic-link" topic=topic}}
+ {{~raw "docs-topic-link" topic=topic}}
{{category-link topic.category}}
diff --git a/assets/javascripts/discourse/templates/docs.hbs b/assets/javascripts/discourse/templates/docs.hbs
new file mode 100644
index 0000000..f95aa83
--- /dev/null
+++ b/assets/javascripts/discourse/templates/docs.hbs
@@ -0,0 +1,9 @@
+
+ {{plugin-outlet name="before-docs-search" args=(hash selectCategory=(action "updateSelectedCategories"))}}
+ {{docs-search
+ searchTerm=(readonly indexController.searchTerm)
+ onSearch=(action "performSearch")
+ }}
+
+ {{outlet}}
+
diff --git a/assets/javascripts/discourse/templates/knowledge-explorer-topic-link.hbr b/assets/javascripts/discourse/templates/knowledge-explorer-topic-link.hbr
deleted file mode 100644
index e472330..0000000
--- a/assets/javascripts/discourse/templates/knowledge-explorer-topic-link.hbr
+++ /dev/null
@@ -1 +0,0 @@
-{{{topic.fancyTitle}}}
diff --git a/assets/javascripts/discourse/templates/knowledge-explorer.hbs b/assets/javascripts/discourse/templates/knowledge-explorer.hbs
deleted file mode 100644
index 9755e11..0000000
--- a/assets/javascripts/discourse/templates/knowledge-explorer.hbs
+++ /dev/null
@@ -1,9 +0,0 @@
-
- {{plugin-outlet name="before-knowledge-explorer-search" args=(hash selectCategory=(action "updateSelectedCategories"))}}
- {{knowledge-explorer-search
- searchTerm=(readonly indexController.searchTerm)
- onSearch=(action "performSearch")
- }}
-
- {{outlet}}
-
diff --git a/assets/stylesheets/common/knowledge-explorer.scss b/assets/stylesheets/common/docs.scss
similarity index 90%
rename from assets/stylesheets/common/knowledge-explorer.scss
rename to assets/stylesheets/common/docs.scss
index 728e12f..cd67e49 100644
--- a/assets/stylesheets/common/knowledge-explorer.scss
+++ b/assets/stylesheets/common/docs.scss
@@ -1,4 +1,4 @@
-.knowledge-explorer-search-wrapper {
+.docs-search-wrapper {
position: relative;
width: 500px;
.d-icon {
@@ -24,7 +24,7 @@
}
}
-.knowledge-explorer-search {
+.docs-search {
align-items: center;
background-color: var(--primary-very-low, $primary-very-low);
display: flex;
@@ -34,20 +34,20 @@
// More breathing room on larger screens
margin-bottom: 2em;
}
- .knowledge-explorer-search-bar {
+ .docs-search-bar {
height: 50px;
margin-bottom: 0px;
width: 100%;
}
}
-.knowledge-explorer-browse {
+.docs-browse {
display: flex;
.loading-container {
display: flex;
flex-basis: 100%;
padding: 0.625em 0 0.625em 0.625em;
}
- .knowledge-explorer-results {
+ .docs-results {
display: flex;
flex-direction: column;
flex-basis: 100%;
@@ -56,7 +56,7 @@
padding-left: 0.625em;
}
}
- .knowledge-explorer-filters {
+ .docs-filters {
margin-top: 0.15em;
flex: 0 1 20%;
@include breakpoint(tablet, min-width) {
@@ -66,7 +66,7 @@
// be more narrow than content if needed
min-width: 175px;
}
- .knowledge-explorer-items {
+ .docs-items {
padding: 0.57em 1em 1em 0;
a {
@@ -79,13 +79,13 @@
font-size: $font-up-1;
}
- .knowledge-explorer-item-count {
+ .docs-item-count {
margin-left: auto;
color: var(--primary-high, $primary-high);
font-size: $font-down-1;
}
- .knowledge-explorer-item {
+ .docs-item {
display: flex;
align-items: center;
cursor: pointer;
@@ -121,7 +121,7 @@
font-weight: bold;
}
}
- .knowledge-explorer-topic-list {
+ .docs-topic-list {
flex-basis: 100%;
th {
@@ -145,7 +145,7 @@
font-weight: normal;
font-size: $font-down-1;
}
- .knowledge-explorer-topic-link {
+ .docs-topic-link {
color: var(--tertiary, $tertiary);
cursor: pointer;
display: inline-block;
@@ -154,10 +154,10 @@
}
}
}
- .knowledge-explorer-topic {
+ .docs-topic {
display: flex;
flex-direction: column;
- .knowledge-explorer-nav-link {
+ .docs-nav-link {
font-weight: 700;
&.return {
align-items: center;
diff --git a/assets/stylesheets/mobile/knowledge-explorer.scss b/assets/stylesheets/mobile/docs.scss
similarity index 54%
rename from assets/stylesheets/mobile/knowledge-explorer.scss
rename to assets/stylesheets/mobile/docs.scss
index 991fd35..09ecf35 100644
--- a/assets/stylesheets/mobile/knowledge-explorer.scss
+++ b/assets/stylesheets/mobile/docs.scss
@@ -1,60 +1,60 @@
.mobile-view {
- .knowledge-explorer {
- .knowledge-explorer-search-wrapper {
+ .docs {
+ .docs-search-wrapper {
display: flex;
justify-content: center;
}
- .knowledge-explorer-search {
+ .docs-search {
font-size: $font-up-2;
padding: 0.5em 0;
- .knowledge-explorer-search-bar {
+ .docs-search-bar {
width: calc(100vw - 2em);
}
}
- .knowledge-explorer-browse {
- .knowledge-explorer-items {
+ .docs-browse {
+ .docs-items {
padding-right: 0;
}
flex-direction: column;
- .knowledge-explorer-results .result-count {
+ .docs-results .result-count {
padding-left: 0;
}
- .knowledge-explorer-topic-list {
+ .docs-topic-list {
flex-basis: 100%;
}
- .knowledge-explorer-topic-link {
+ .docs-topic-link {
padding-right: 0.25em;
}
.loading-container {
padding: 0.625em 0;
}
- .knowledge-explorer-topic {
+ .docs-topic {
width: calc(100vw - 20px);
}
}
}
- .knowledge-explorer-filters {
+ .docs-filters {
margin-top: 0;
background: var(--primary-very-low, $primary-very-low);
padding: 0 0.5em;
- .knowledge-explorer-items:first-of-type {
+ .docs-items:first-of-type {
margin-top: 1em;
}
- + .knowledge-explorer-results {
+ + .docs-results {
margin-top: 2em;
}
}
- .archetype-knowledge-explorer-topic {
- .knowledge-explorer-filters {
+ .archetype-docs-topic {
+ .docs-filters {
display: none;
}
}
- .knowledge-explorer-expander {
+ .docs-expander {
margin: 1em 0 0 0;
width: 100%;
}
diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml
index 59f1168..23bc3c3 100644
--- a/config/locales/client.en.yml
+++ b/config/locales/client.en.yml
@@ -1,11 +1,11 @@
en:
js:
- knowledge_explorer:
- title: "Knowledge Explorer"
+ docs:
+ title: "Docs"
column_titles:
topic: "Topic"
activity: "Activity"
- no_topics: "No topics in Knowledge Explorer."
+ no_topics: "No topics in Docs."
categories: "Categories"
tags: "Tags"
search:
diff --git a/config/locales/server.en.yml b/config/locales/server.en.yml
index 3e11840..cebcb77 100644
--- a/config/locales/server.en.yml
+++ b/config/locales/server.en.yml
@@ -1,6 +1,6 @@
en:
site_settings:
- knowledge_explorer_enabled: "Enable the Knowledge Explorer Plugin"
- knowledge_explorer_categories: "A list of category slugs to include in the knowledge explorer"
- knowledge_explorer_tags: "A list of tags to include in the knowledge explorer"
- knowledge_explorer_add_solved_filter: "Adds a filter for solved topics -- requires Discourse Solved to be installed and enabled"
+ docs_enabled: "Enable the Docs Plugin"
+ docs_categories: "A list of category slugs to include in docs"
+ docs_tags: "A list of tags to include in docs"
+ docs_add_solved_filter: "Adds a filter for solved topics -- requires Discourse Solved to be installed and enabled"
diff --git a/config/routes.rb b/config/routes.rb
index 7eed526..98cce56 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -1,8 +1,8 @@
# frozen_string_literal: true
-require_dependency 'knowledge_explorer_constraint'
+require_dependency 'docs_constraint'
-KnowledgeExplorer::Engine.routes.draw do
- get '/' => 'knowledge_explorer#index', constraints: KnowledgeExplorerConstraint.new
- get '.json' => 'knowledge_explorer#index', constraints: KnowledgeExplorerConstraint.new
+Docs::Engine.routes.draw do
+ get '/' => 'docs#index', constraints: DocsConstraint.new
+ get '.json' => 'docs#index', constraints: DocsConstraint.new
end
diff --git a/config/settings.yml b/config/settings.yml
index de43984..4ecb041 100644
--- a/config/settings.yml
+++ b/config/settings.yml
@@ -1,15 +1,15 @@
plugins:
- knowledge_explorer_enabled:
+ docs_enabled:
default: false
client: true
- knowledge_explorer_categories:
+ docs_categories:
type: category_list
default: ""
client: true
- knowledge_explorer_tags:
+ docs_tags:
type: tag_list
default: ""
client: true
- knowledge_explorer_add_solved_filter:
+ docs_add_solved_filter:
default: false
client: true
diff --git a/db/migrate/20210114161508_rename_knowledge_explorer_settings.rb b/db/migrate/20210114161508_rename_knowledge_explorer_settings.rb
new file mode 100644
index 0000000..d006f1e
--- /dev/null
+++ b/db/migrate/20210114161508_rename_knowledge_explorer_settings.rb
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+#
+class RenameKnowledgeExplorerSettings < ActiveRecord::Migration[6.0]
+ def up
+ execute "UPDATE site_settings SET name = 'docs_enabled' WHERE name = 'knowledge_explorer_enabled'"
+ execute "UPDATE site_settings SET name = 'docs_categories' WHERE name = 'knowledge_explorer_categories'"
+ execute "UPDATE site_settings SET name = 'docs_tags' WHERE name = 'knowledge_explorer_tags'"
+ execute "UPDATE site_settings SET name = 'docs_add_solved_filter' WHERE name = 'knowledge_explorer_add_solved_filter'"
+ end
+
+ def down
+ execute "UPDATE site_settings SET name = 'knowledge_explorer_enabled' WHERE name = 'docs_enabled'"
+ execute "UPDATE site_settings SET name = 'knowledge_explorer_categories' WHERE name = 'docs_categories'"
+ execute "UPDATE site_settings SET name = 'knowledge_explorer_tags' WHERE name = 'docs_tags'"
+ execute "UPDATE site_settings SET name = 'knowledge_explorer_add_solved_filter' WHERE name = 'docs_add_solved_filter'"
+ end
+end
diff --git a/lib/knowledge_explorer/engine.rb b/lib/docs/engine.rb
similarity index 65%
rename from lib/knowledge_explorer/engine.rb
rename to lib/docs/engine.rb
index c6f4f3e..f276eb4 100644
--- a/lib/knowledge_explorer/engine.rb
+++ b/lib/docs/engine.rb
@@ -1,12 +1,12 @@
# frozen_string_literal: true
-module ::KnowledgeExplorer
+module ::Docs
class Engine < ::Rails::Engine
- isolate_namespace KnowledgeExplorer
+ isolate_namespace Docs
config.after_initialize do
Discourse::Application.routes.append do
- mount ::KnowledgeExplorer::Engine, at: '/docs'
+ mount ::Docs::Engine, at: '/docs'
get '/knowledge-explorer', to: redirect("/docs")
end
end
diff --git a/lib/knowledge_explorer/query.rb b/lib/docs/query.rb
similarity index 95%
rename from lib/knowledge_explorer/query.rb
rename to lib/docs/query.rb
index 48a6f5c..1c9b177 100644
--- a/lib/knowledge_explorer/query.rb
+++ b/lib/docs/query.rb
@@ -1,6 +1,6 @@
# frozen_string_literal: true
-module KnowledgeExplorer
+module Docs
class Query
def initialize(user = nil, filters = {})
@user = user
@@ -9,18 +9,18 @@ module KnowledgeExplorer
end
def self.categories
- SiteSetting.knowledge_explorer_categories.split('|')
+ SiteSetting.docs_categories.split('|')
end
def self.tags
- SiteSetting.knowledge_explorer_tags.split('|')
+ SiteSetting.docs_tags.split('|')
end
def list
# query for topics matching selected categories & tags
opts = { no_definitions: true, limit: false }
tq = TopicQuery.new(@user, opts)
- results = tq.list_knowledge_explorer_topics
+ results = tq.list_docs_topics
results = results.left_outer_joins(:tags)
results = results.references(:categories)
results = results.where('topics.category_id IN (?)', Query.categories).or(results.where('tags.name IN (?)', Query.tags))
@@ -115,7 +115,7 @@ module KnowledgeExplorer
results = results.offset(offset).limit(@limit) #results[offset...page_range]
# assemble the object
- topic_query = tq.create_list(:knowledge_explorer, { unordered: true }, results)
+ topic_query = tq.create_list(:docs, { unordered: true }, results)
topic_list = TopicListSerializer.new(topic_query, scope: Guardian.new(@user)).as_json
diff --git a/lib/docs_constraint.rb b/lib/docs_constraint.rb
new file mode 100644
index 0000000..52a60cc
--- /dev/null
+++ b/lib/docs_constraint.rb
@@ -0,0 +1,7 @@
+# frozen_string_literal: true
+
+class DocsConstraint
+ def matches?(_request)
+ SiteSetting.docs_enabled
+ end
+end
diff --git a/lib/knowledge_explorer_constraint.rb b/lib/knowledge_explorer_constraint.rb
deleted file mode 100644
index be1e7be..0000000
--- a/lib/knowledge_explorer_constraint.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-# frozen_string_literal: true
-
-class KnowledgeExplorerConstraint
- def matches?(_request)
- SiteSetting.knowledge_explorer_enabled
- end
-end
diff --git a/plugin.rb b/plugin.rb
index 21e023c..32b082c 100644
--- a/plugin.rb
+++ b/plugin.rb
@@ -1,31 +1,31 @@
# frozen_string_literal: true
-# name: discourse-knowledge-explorer
-# about: A plugin to make it easy to explore and find knowledge base-type articles in Discourse
+# name: discourse-docs
+# about: A plugin to make it easy to explore and find knowledge base documents in Discourse
# version: 0.1
# author: Justin DiRose
# url: https://github.com/discourse/discourse-knowledge-explorer
-enabled_site_setting :knowledge_explorer_enabled
+enabled_site_setting :docs_enabled
-register_asset 'stylesheets/common/knowledge-explorer.scss'
-register_asset 'stylesheets/mobile/knowledge-explorer.scss'
+register_asset 'stylesheets/common/docs.scss'
+register_asset 'stylesheets/mobile/docs.scss'
-load File.expand_path('lib/knowledge_explorer/engine.rb', __dir__)
-load File.expand_path('lib/knowledge_explorer/query.rb', __dir__)
+load File.expand_path('lib/docs/engine.rb', __dir__)
+load File.expand_path('lib/docs/query.rb', __dir__)
after_initialize do
require_dependency 'search'
- if SiteSetting.knowledge_explorer_enabled
+ if SiteSetting.docs_enabled
if Search.respond_to? :advanced_filter
Search.advanced_filter(/in:kb/) do |posts|
- selected_categories = SiteSetting.knowledge_explorer_categories.split('|')
+ selected_categories = SiteSetting.docs_categories.split('|')
if selected_categories
categories = Category.where('id IN (?)', selected_categories).pluck(:id)
end
- selected_tags = SiteSetting.knowledge_explorer_tags.split('|')
+ selected_tags = SiteSetting.docs_tags.split('|')
if selected_tags
tags = Tag.where('name IN (?)', selected_tags).pluck(:id)
end
@@ -34,7 +34,7 @@ after_initialize do
end
end
end
- add_to_class(:topic_query, :list_knowledge_explorer_topics) do
+ add_to_class(:topic_query, :list_docs_topics) do
default_results(@options)
end
end
diff --git a/spec/requests/knowledge_explorer_controller_spec.rb b/spec/requests/docs_controller_spec.rb
similarity index 88%
rename from spec/requests/knowledge_explorer_controller_spec.rb
rename to spec/requests/docs_controller_spec.rb
index 282d1fe..6562066 100644
--- a/spec/requests/knowledge_explorer_controller_spec.rb
+++ b/spec/requests/docs_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe KnowledgeExplorer::KnowledgeExplorerController do
+describe Docs::DocsController do
fab!(:category) { Fabricate(:category) }
fab!(:topic) { Fabricate(:topic, title: "I love carrot today", category: category) }
fab!(:topic2) { Fabricate(:topic, title: "I love pineapple today", category: category) }
@@ -10,12 +10,12 @@ describe KnowledgeExplorer::KnowledgeExplorerController do
before do
SiteSetting.tagging_enabled = true
- SiteSetting.knowledge_explorer_enabled = true
- SiteSetting.knowledge_explorer_categories = category.id.to_s
- SiteSetting.knowledge_explorer_tags = 'test'
+ SiteSetting.docs_enabled = true
+ SiteSetting.docs_categories = category.id.to_s
+ SiteSetting.docs_tags = 'test'
end
- describe 'knowledge explorer data' do
+ describe 'docs data' do
context 'when any user' do
it 'should return the right response' do
get '/docs.json'
@@ -40,13 +40,13 @@ describe KnowledgeExplorer::KnowledgeExplorerController do
end
end
- context 'when some knowledge explorer topics are private' do
+ context 'when some docs topics are private' do
let!(:group) { Fabricate(:group) }
let!(:private_category) { Fabricate(:private_category, group: group) }
let!(:private_topic) { Fabricate(:topic, category: private_category) }
before do
- SiteSetting.knowledge_explorer_categories = "#{category.id}|#{private_category.id}"
+ SiteSetting.docs_categories = "#{category.id}|#{private_category.id}"
end
it 'should not show topics in private categories without permissions' do
@@ -105,7 +105,7 @@ describe KnowledgeExplorer::KnowledgeExplorerController do
let!(:topic3) { Fabricate(:topic, category: category2) }
before do
- SiteSetting.knowledge_explorer_categories = "#{category.id}|#{category2.id}"
+ SiteSetting.docs_categories = "#{category.id}|#{category2.id}"
end
it 'should return a list filtered by category' do
@@ -230,22 +230,22 @@ describe KnowledgeExplorer::KnowledgeExplorerController do
expect(response.parsed_body['topic']['id']).to eq(topic.id)
end
- it 'should get topics matching a selected knowledge explorer tag or category' do
+ it 'should get topics matching a selected docs tag or category' do
get "/docs.json?topic=#{non_ke_topic.id}"
expect(response.parsed_body['topic']).to be_blank
end
- it 'should return a KE topic when only tags are added to settings' do
- SiteSetting.knowledge_explorer_categories = nil
+ it 'should return a docs topic when only tags are added to settings' do
+ SiteSetting.docs_categories = nil
get "/docs.json?topic=#{topic.id}"
expect(response.parsed_body['topic']['id']).to eq(topic.id)
end
- it 'should return a KE topic when only categories are added to settings' do
- SiteSetting.knowledge_explorer_tags = nil
+ it 'should return a docs topic when only categories are added to settings' do
+ SiteSetting.docs_tags = nil
get "/docs.json?topic=#{topic.id}"
diff --git a/test/javascripts/acceptance/knowledge-explorer-test.js.es6 b/test/javascripts/acceptance/docs-test.js.es6
similarity index 51%
rename from test/javascripts/acceptance/knowledge-explorer-test.js.es6
rename to test/javascripts/acceptance/docs-test.js.es6
index 1105c31..740bda9 100644
--- a/test/javascripts/acceptance/knowledge-explorer-test.js.es6
+++ b/test/javascripts/acceptance/docs-test.js.es6
@@ -1,10 +1,10 @@
import { acceptance, queryAll } from "helpers/qunit-helpers";
import docsFixtures from "../fixtures/docs";
-acceptance("Knowledge Explorer", function (needs) {
+acceptance("Docs", function (needs) {
needs.user();
needs.settings({
- knowledge_explorer_enabled: true,
+ docs_enabled: true,
});
needs.pretender((server, helper) => {
@@ -14,18 +14,12 @@ acceptance("Knowledge Explorer", function (needs) {
test("index page", async function (assert) {
await visit("/");
await click("#toggle-hamburger-menu");
- await click(".knowledge-explorer-link");
+ await click(".docs-link");
+ assert.equal(queryAll(".docs-category")[0].innerText.trim(), "bug 119");
+ assert.equal(queryAll(".docs-tag")[0].innerText.trim(), "something 74");
assert.equal(
- queryAll(".knowledge-explorer-category")[0].innerText.trim(),
- "bug 119"
- );
- assert.equal(
- queryAll(".knowledge-explorer-tag")[0].innerText.trim(),
- "something 74"
- );
- assert.equal(
- queryAll(".knowledge-explorer-topic-link")[0].innerText.trim(),
+ queryAll(".docs-topic-link")[0].innerText.trim(),
"Importing from Software X"
);
});
|