DEV: apply coding standards (#90)
This commit is contained in:
parent
c89e0dda19
commit
613267c3a2
105
.eslintrc
105
.eslintrc
|
@ -1,106 +1,3 @@
|
|||
{
|
||||
"env": {
|
||||
"jasmine": true,
|
||||
"node": true,
|
||||
"mocha": true,
|
||||
"browser": true,
|
||||
"builtin": true
|
||||
},
|
||||
"parserOptions": {
|
||||
"ecmaVersion": 7,
|
||||
"sourceType": "module"
|
||||
},
|
||||
"globals":
|
||||
{"Ember":true,
|
||||
"jQuery":true,
|
||||
"$":true,
|
||||
"RSVP":true,
|
||||
"Discourse":true,
|
||||
"Em":true,
|
||||
"PreloadStore":true,
|
||||
"Handlebars":true,
|
||||
"I18n":true,
|
||||
"bootbox":true,
|
||||
"module":true,
|
||||
"moduleFor":true,
|
||||
"moduleForComponent":true,
|
||||
"Pretender":true,
|
||||
"sandbox":true,
|
||||
"controllerFor":true,
|
||||
"test":true,
|
||||
"ok":true,
|
||||
"not":true,
|
||||
"expect":true,
|
||||
"equal":true,
|
||||
"visit":true,
|
||||
"andThen":true,
|
||||
"click":true,
|
||||
"currentPath":true,
|
||||
"currentRouteName":true,
|
||||
"currentURL":true,
|
||||
"fillIn":true,
|
||||
"keyEvent":true,
|
||||
"triggerEvent":true,
|
||||
"count":true,
|
||||
"exists":true,
|
||||
"visible":true,
|
||||
"invisible":true,
|
||||
"asyncRender":true,
|
||||
"selectDropdown":true,
|
||||
"asyncTestDiscourse":true,
|
||||
"fixture":true,
|
||||
"find":true,
|
||||
"sinon":true,
|
||||
"moment":true,
|
||||
"start":true,
|
||||
"_":true,
|
||||
"alert":true,
|
||||
"containsInstance":true,
|
||||
"deepEqual":true,
|
||||
"notEqual":true,
|
||||
"define":true,
|
||||
"require":true,
|
||||
"requirejs":true,
|
||||
"hasModule":true,
|
||||
"Blob":true,
|
||||
"File":true},
|
||||
"rules": {
|
||||
"block-scoped-var": 2,
|
||||
"dot-notation": 0,
|
||||
"eqeqeq": [
|
||||
2,
|
||||
"allow-null"
|
||||
],
|
||||
"guard-for-in": 2,
|
||||
"no-bitwise": 2,
|
||||
"no-caller": 2,
|
||||
"no-cond-assign": 0,
|
||||
"no-debugger": 2,
|
||||
"no-empty": 0,
|
||||
"no-eval": 2,
|
||||
"no-extend-native": 2,
|
||||
"no-extra-parens": 0,
|
||||
"no-irregular-whitespace": 2,
|
||||
"no-iterator": 2,
|
||||
"no-loop-func": 2,
|
||||
"no-multi-str": 2,
|
||||
"no-new": 2,
|
||||
"no-plusplus": 0,
|
||||
"no-proto": 2,
|
||||
"no-script-url": 2,
|
||||
"no-sequences": 2,
|
||||
"no-shadow": 2,
|
||||
"no-undef": 2,
|
||||
"no-unused-vars": 2,
|
||||
"no-with": 2,
|
||||
"no-this-before-super": 2,
|
||||
"semi": 2,
|
||||
"strict": 0,
|
||||
"valid-typeof": 2,
|
||||
"wrap-iife": [
|
||||
2,
|
||||
"inside"
|
||||
]
|
||||
},
|
||||
"parser": "babel-eslint"
|
||||
"extends": "eslint-config-discourse"
|
||||
}
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
node_modules
|
||||
yarn-error.log
|
||||
.rubocop-https---raw-githubusercontent-com-discourse-*
|
|
@ -0,0 +1 @@
|
|||
{}
|
|
@ -0,0 +1,4 @@
|
|||
module.exports = {
|
||||
plugins: ["ember-template-lint-plugin-discourse"],
|
||||
extends: "discourse:recommended",
|
||||
};
|
|
@ -1,3 +1,4 @@
|
|||
import I18n from "I18n";
|
||||
import DiscourseUrl from "discourse/lib/url";
|
||||
|
||||
export default {
|
||||
|
@ -16,10 +17,10 @@ export default {
|
|||
},
|
||||
|
||||
setupComponent(args, component) {
|
||||
const statuses = ["all", "solved", "unsolved"].map(status => {
|
||||
const statuses = ["all", "solved", "unsolved"].map((status) => {
|
||||
return {
|
||||
name: I18n.t(`solved.topic_status_filter.${status}`),
|
||||
value: status
|
||||
value: status,
|
||||
};
|
||||
});
|
||||
component.set("statuses", statuses);
|
||||
|
@ -42,7 +43,7 @@ export default {
|
|||
? queryStrings.substr(1).split("&")
|
||||
: [];
|
||||
|
||||
params = params.filter(param => !param.startsWith("solved="));
|
||||
params = params.filter((param) => !param.startsWith("solved="));
|
||||
|
||||
if (newStatus && newStatus !== "all") {
|
||||
newStatus = newStatus === "solved" ? "yes" : "no";
|
||||
|
@ -53,6 +54,6 @@ export default {
|
|||
DiscourseUrl.routeTo(
|
||||
`${location.pathname}${queryStrings}${location.hash}`
|
||||
);
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
};
|
||||
|
|
|
@ -5,6 +5,6 @@ export default {
|
|||
"category.custom_fields.enable_accepted_answers",
|
||||
value ? "true" : "false"
|
||||
);
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
};
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
import I18n from "I18n";
|
||||
import Topic from "discourse/models/topic";
|
||||
import User from "discourse/models/user";
|
||||
import TopicStatus from "discourse/raw-views/topic-status";
|
||||
|
@ -13,12 +14,12 @@ import SearchAdvancedOptions from "discourse/components/search-advanced-options"
|
|||
|
||||
function clearAccepted(topic) {
|
||||
const posts = topic.get("postStream.posts");
|
||||
posts.forEach(post => {
|
||||
posts.forEach((post) => {
|
||||
if (post.get("post_number") > 1) {
|
||||
post.setProperties({
|
||||
accepted_answer: false,
|
||||
can_accept_answer: true,
|
||||
can_unaccept_answer: false
|
||||
can_unaccept_answer: false,
|
||||
});
|
||||
}
|
||||
});
|
||||
|
@ -33,13 +34,13 @@ function unacceptPost(post) {
|
|||
post.setProperties({
|
||||
can_accept_answer: true,
|
||||
can_unaccept_answer: false,
|
||||
accepted_answer: false
|
||||
accepted_answer: false,
|
||||
});
|
||||
topic.set("accepted_answer", undefined);
|
||||
|
||||
ajax("/solution/unaccept", {
|
||||
type: "POST",
|
||||
data: { id: post.id }
|
||||
data: { id: post.id },
|
||||
}).catch(popupAjaxError);
|
||||
}
|
||||
|
||||
|
@ -51,18 +52,18 @@ function acceptPost(post) {
|
|||
post.setProperties({
|
||||
can_unaccept_answer: true,
|
||||
can_accept_answer: false,
|
||||
accepted_answer: true
|
||||
accepted_answer: true,
|
||||
});
|
||||
|
||||
topic.set("accepted_answer", {
|
||||
username: post.username,
|
||||
post_number: post.post_number,
|
||||
excerpt: post.cooked
|
||||
excerpt: post.cooked,
|
||||
});
|
||||
|
||||
ajax("/solution/accept", {
|
||||
type: "POST",
|
||||
data: { id: post.id }
|
||||
data: { id: post.id },
|
||||
}).catch(popupAjaxError);
|
||||
}
|
||||
|
||||
|
@ -72,7 +73,7 @@ function initializeWithApi(api) {
|
|||
TopicStatusIcons.addObject([
|
||||
"has_accepted_answer",
|
||||
"far-check-square",
|
||||
"solved"
|
||||
"solved",
|
||||
]);
|
||||
|
||||
api.includePostAttributes(
|
||||
|
@ -85,7 +86,7 @@ function initializeWithApi(api) {
|
|||
api.addDiscoveryQueryParam("solved", { replace: true, refreshModel: true });
|
||||
}
|
||||
|
||||
api.addPostMenuButton("solved", attrs => {
|
||||
api.addPostMenuButton("solved", (attrs) => {
|
||||
const canAccept = attrs.can_accept_answer;
|
||||
const canUnaccept = attrs.can_unaccept_answer;
|
||||
const accepted = attrs.accepted_answer;
|
||||
|
@ -100,7 +101,7 @@ function initializeWithApi(api) {
|
|||
className: "unaccepted",
|
||||
title: "solved.accept_answer",
|
||||
label: "solved.solution",
|
||||
position
|
||||
position,
|
||||
};
|
||||
} else if (canUnaccept && accepted) {
|
||||
const title = canUnaccept
|
||||
|
@ -112,7 +113,7 @@ function initializeWithApi(api) {
|
|||
title,
|
||||
className: "accepted fade-out",
|
||||
position,
|
||||
label: "solved.solution"
|
||||
label: "solved.solution",
|
||||
};
|
||||
} else if (!canAccept && accepted) {
|
||||
return {
|
||||
|
@ -123,19 +124,19 @@ function initializeWithApi(api) {
|
|||
return h(
|
||||
"span.accepted-text",
|
||||
{
|
||||
title: I18n.t("solved.accepted_description")
|
||||
title: I18n.t("solved.accepted_description"),
|
||||
},
|
||||
[
|
||||
h("span", iconNode("check")),
|
||||
h("span.accepted-label", I18n.t("solved.solution"))
|
||||
h("span.accepted-label", I18n.t("solved.solution")),
|
||||
]
|
||||
);
|
||||
}
|
||||
},
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
api.decorateWidget("post-contents:after-cooked", dec => {
|
||||
api.decorateWidget("post-contents:after-cooked", (dec) => {
|
||||
if (dec.attrs.post_number === 1) {
|
||||
const postModel = dec.getModel();
|
||||
if (postModel) {
|
||||
|
@ -174,12 +175,12 @@ function initializeWithApi(api) {
|
|||
|
||||
api.attachWidgetAction("post", "acceptAnswer", function () {
|
||||
const post = this.model;
|
||||
const current = post.get("topic.postStream.posts").filter(p => {
|
||||
const current = post.get("topic.postStream.posts").filter((p) => {
|
||||
return p.post_number === 1 || p.accepted_answer;
|
||||
});
|
||||
acceptPost(post);
|
||||
|
||||
current.forEach(p =>
|
||||
current.forEach((p) =>
|
||||
this.appEvents.trigger("post-stream:refresh", { id: p.id })
|
||||
);
|
||||
});
|
||||
|
@ -188,7 +189,7 @@ function initializeWithApi(api) {
|
|||
const post = this.model;
|
||||
const op = post
|
||||
.get("topic.postStream.posts")
|
||||
.find(p => p.post_number === 1);
|
||||
.find((p) => p.post_number === 1);
|
||||
unacceptPost(post);
|
||||
this.appEvents.trigger("post-stream:refresh", { id: op.id });
|
||||
});
|
||||
|
@ -197,7 +198,7 @@ function initializeWithApi(api) {
|
|||
api.registerConnectorClass("user-activity-bottom", "solved-list", {
|
||||
shouldRender(args, component) {
|
||||
return component.siteSettings.solved_enabled;
|
||||
}
|
||||
},
|
||||
});
|
||||
api.registerConnectorClass("user-summary-stat", "solved-count", {
|
||||
shouldRender(args, component) {
|
||||
|
@ -207,7 +208,7 @@ function initializeWithApi(api) {
|
|||
},
|
||||
setupComponent() {
|
||||
this.set("classNames", ["linked-stat"]);
|
||||
}
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -231,9 +232,9 @@ export default {
|
|||
username: formatUsername(username),
|
||||
post_path: `${this.url}/${postNumber}`,
|
||||
post_number: postNumber,
|
||||
user_path: User.create({ username }).path
|
||||
user_path: User.create({ username }).path,
|
||||
});
|
||||
})
|
||||
}),
|
||||
});
|
||||
|
||||
TopicStatus.reopen({
|
||||
|
@ -245,7 +246,7 @@ export default {
|
|||
openTag: "span",
|
||||
closeTag: "span",
|
||||
title: I18n.t("topic_statuses.solved.help"),
|
||||
icon: "far-check-square"
|
||||
icon: "far-check-square",
|
||||
});
|
||||
} else if (
|
||||
this.topic.can_have_answer &&
|
||||
|
@ -256,11 +257,11 @@ export default {
|
|||
openTag: "span",
|
||||
closeTag: "span",
|
||||
title: I18n.t("solved.has_no_accepted_answer"),
|
||||
icon: "far-square"
|
||||
icon: "far-square",
|
||||
});
|
||||
}
|
||||
return results;
|
||||
})
|
||||
}),
|
||||
});
|
||||
|
||||
SearchAdvancedOptions.reopen({
|
||||
|
@ -268,18 +269,18 @@ export default {
|
|||
this._super();
|
||||
this.statusOptions.push({
|
||||
name: I18n.t("search.advanced.statuses.solved"),
|
||||
value: "solved"
|
||||
value: "solved",
|
||||
});
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
withPluginApi("0.1", initializeWithApi);
|
||||
|
||||
withPluginApi("0.8.10", api => {
|
||||
withPluginApi("0.8.10", (api) => {
|
||||
api.replaceIcon(
|
||||
"notification.solved.accepted_notification",
|
||||
"check-square"
|
||||
);
|
||||
});
|
||||
}
|
||||
},
|
||||
};
|
||||
|
|
|
@ -12,9 +12,9 @@ export default {
|
|||
{
|
||||
get(fieldName) {
|
||||
return Ember.get(this.custom_fields, fieldName) === "true";
|
||||
},
|
||||
}
|
||||
}
|
||||
)
|
||||
),
|
||||
});
|
||||
}
|
||||
},
|
||||
};
|
||||
|
|
|
@ -2,5 +2,5 @@ import UserActivityStreamRoute from "discourse/routes/user-activity-stream";
|
|||
|
||||
export default UserActivityStreamRoute.extend({
|
||||
userActionType: 15,
|
||||
noContentHelpKey: "solved.no_solutions"
|
||||
noContentHelpKey: "solved.no_solutions",
|
||||
});
|
||||
|
|
|
@ -3,5 +3,5 @@ export default {
|
|||
|
||||
map() {
|
||||
this.route("solved");
|
||||
}
|
||||
},
|
||||
};
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
"author": "Discourse",
|
||||
"license": "MIT",
|
||||
"devDependencies": {
|
||||
"eslint-config-discourse": "latest"
|
||||
}
|
||||
}
|
|
@ -3,11 +3,11 @@ import { acceptance } from "helpers/qunit-helpers";
|
|||
acceptance("Discourse Solved Plugin", {
|
||||
loggedIn: true,
|
||||
beforeEach() {
|
||||
const response = object => {
|
||||
const response = (object) => {
|
||||
return [200, { "Content-Type": "application/json" }, object];
|
||||
};
|
||||
|
||||
const postStreamWithAcceptedAnswerExcerpt = excerpt => {
|
||||
const postStreamWithAcceptedAnswerExcerpt = (excerpt) => {
|
||||
return {
|
||||
post_stream: {
|
||||
posts: [
|
||||
|
@ -49,7 +49,7 @@ acceptance("Discourse Solved Plugin", {
|
|||
{ id: 4, can_act: true },
|
||||
{ id: 5, hidden: true, can_act: true },
|
||||
{ id: 7, can_act: true },
|
||||
{ id: 8, can_act: true }
|
||||
{ id: 8, can_act: true },
|
||||
],
|
||||
moderator: false,
|
||||
admin: true,
|
||||
|
@ -65,7 +65,7 @@ acceptance("Discourse Solved Plugin", {
|
|||
wiki: false,
|
||||
can_accept_answer: false,
|
||||
can_unaccept_answer: false,
|
||||
accepted_answer: false
|
||||
accepted_answer: false,
|
||||
},
|
||||
{
|
||||
id: 22,
|
||||
|
@ -106,7 +106,7 @@ acceptance("Discourse Solved Plugin", {
|
|||
{ id: 4, can_act: true },
|
||||
{ id: 5, hidden: true, can_act: true },
|
||||
{ id: 7, can_act: true },
|
||||
{ id: 8, can_act: true }
|
||||
{ id: 8, can_act: true },
|
||||
],
|
||||
moderator: false,
|
||||
admin: true,
|
||||
|
@ -122,10 +122,10 @@ acceptance("Discourse Solved Plugin", {
|
|||
wiki: false,
|
||||
can_accept_answer: false,
|
||||
can_unaccept_answer: true,
|
||||
accepted_answer: true
|
||||
}
|
||||
accepted_answer: true,
|
||||
},
|
||||
],
|
||||
stream: [21, 22]
|
||||
stream: [21, 22],
|
||||
},
|
||||
timeline_lookup: [[1, 0]],
|
||||
id: 23,
|
||||
|
@ -164,13 +164,13 @@ acceptance("Discourse Solved Plugin", {
|
|||
id: 1,
|
||||
username: "kzh",
|
||||
avatar_template:
|
||||
"/letter_avatar_proxy/v2/letter/k/ac91a4/{size}.png"
|
||||
"/letter_avatar_proxy/v2/letter/k/ac91a4/{size}.png",
|
||||
},
|
||||
last_poster: {
|
||||
id: 1,
|
||||
username: "kzh",
|
||||
avatar_template:
|
||||
"/letter_avatar_proxy/v2/letter/k/ac91a4/{size}.png"
|
||||
"/letter_avatar_proxy/v2/letter/k/ac91a4/{size}.png",
|
||||
},
|
||||
participants: [
|
||||
{
|
||||
|
@ -182,8 +182,8 @@ acceptance("Discourse Solved Plugin", {
|
|||
primary_group_name: null,
|
||||
primary_group_flair_url: null,
|
||||
primary_group_flair_color: null,
|
||||
primary_group_flair_bg_color: null
|
||||
}
|
||||
primary_group_flair_bg_color: null,
|
||||
},
|
||||
],
|
||||
notification_level: 3,
|
||||
notifications_reason_id: 1,
|
||||
|
@ -195,7 +195,7 @@ acceptance("Discourse Solved Plugin", {
|
|||
can_invite_via_email: true,
|
||||
can_create_post: true,
|
||||
can_reply_as_new_topic: true,
|
||||
can_flag_topic: true
|
||||
can_flag_topic: true,
|
||||
},
|
||||
highest_post_number: 2,
|
||||
last_read_post_number: 2,
|
||||
|
@ -205,7 +205,7 @@ acceptance("Discourse Solved Plugin", {
|
|||
actions_summary: [
|
||||
{ id: 4, count: 0, hidden: false, can_act: true },
|
||||
{ id: 7, count: 0, hidden: false, can_act: true },
|
||||
{ id: 8, count: 0, hidden: false, can_act: true }
|
||||
{ id: 8, count: 0, hidden: false, can_act: true },
|
||||
],
|
||||
chunk_size: 20,
|
||||
bookmarked: false,
|
||||
|
@ -213,7 +213,7 @@ acceptance("Discourse Solved Plugin", {
|
|||
featured_link: null,
|
||||
topic_timer: null,
|
||||
message_bus_last_id: 0,
|
||||
accepted_answer: { post_number: 2, username: "kzh", excerpt: excerpt }
|
||||
accepted_answer: { post_number: 2, username: "kzh", excerpt: excerpt },
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -228,10 +228,10 @@ acceptance("Discourse Solved Plugin", {
|
|||
server.get("/t/12.json", () => {
|
||||
return response(postStreamWithAcceptedAnswerExcerpt(null));
|
||||
});
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
test("A topic with an accepted answer shows an excerpt of the answer, if provided", assert => {
|
||||
test("A topic with an accepted answer shows an excerpt of the answer, if provided", (assert) => {
|
||||
visit("/t/with-excerpt/11");
|
||||
|
||||
andThen(() => {
|
||||
|
|
Loading…
Reference in New Issue