Revert "UX: Improve button position and visibility. (#78)"

This reverts commit d394d64285.

We made the UX here a bit too strong, we will followup with a reduction
of noise and ensure the new "loud UX" only appears for the OP
and only appears when no solution is accepted
This commit is contained in:
Sam Saffron 2019-06-29 08:12:41 +10:00
parent d394d64285
commit a0191a1e50
4 changed files with 73 additions and 144 deletions

View File

@ -0,0 +1,5 @@
{{#if topic.accepted_answer}}
<p class="solved">
{{{topic.acceptedAnswerHtml}}}
</p>
{{/if}}

View File

@ -62,10 +62,14 @@ function acceptPost(post) {
}).catch(popupAjaxError);
}
function initializeWithApi(api, container) {
const { mobileView } = container.lookup("site:main");
function initializeWithApi(api) {
const currentUser = api.getCurrentUser();
TopicStatusIcons.addObject(["has_accepted_answer", "check-circle", "solved"]);
TopicStatusIcons.addObject([
"has_accepted_answer",
"far-check-square",
"solved"
]);
api.includePostAttributes(
"can_accept_answer",
@ -77,48 +81,38 @@ function initializeWithApi(api, container) {
api.addDiscoveryQueryParam("solved", { replace: true, refreshModel: true });
}
if (!mobileView) {
api.addPostMenuButton("solved", attrs => {
if (attrs.accepted_answer) {
return {
action: "",
icon: "check-circle",
title: "solved.accepted_answer",
className: "accepted",
position: "first",
afterButton(h) {
return h("span.accepted", I18n.t("solved.solution"));
}
};
}
});
api.addPostMenuButton("solved", attrs => {
const canAccept = attrs.can_accept_answer;
const canUnaccept = attrs.can_unaccept_answer;
const accepted = attrs.accepted_answer;
const isOp = currentUser && currentUser.id === attrs.topicCreatedById;
const position =
!accepted && canAccept && !isOp ? "second-last-hidden" : "first";
api.addPostMenuButton("solve", attrs => {
if (!attrs.accepted_answer && attrs.can_accept_answer) {
return {
action: "acceptAnswer",
icon: "check-circle",
title: "solved.accept_answer",
className: "unaccepted",
position: "first",
afterButton(h) {
return h("span.unaccepted", I18n.t("solved.mark_as_solution"));
}
};
} else if (attrs.accepted_answer && attrs.can_unaccept_answer) {
return {
action: "unacceptAnswer",
icon: "times-circle",
title: "solved.unaccept_answer",
className: "unaccepted",
position: "first",
afterButton(h) {
return h("span.unaccepted", I18n.t("solved.unmark_as_solution"));
}
};
}
});
}
if (canAccept) {
return {
action: "acceptAnswer",
icon: "far-check-square",
className: "unaccepted",
title: "solved.accept_answer",
position
};
} else if (canUnaccept || accepted) {
const title = canUnaccept
? "solved.unaccept_answer"
: "solved.accepted_answer";
return {
action: "unacceptAnswer",
icon: "check-square",
title,
className: "accepted fade-out",
position,
beforeButton(h) {
return h("span.accepted-text", I18n.t("solved.solution"));
}
};
}
});
api.decorateWidget("post-contents:after-cooked", dec => {
if (dec.attrs.post_number === 1) {
@ -161,46 +155,6 @@ function initializeWithApi(api, container) {
}
});
if (mobileView) {
api.decorateWidget("post-contents:after-cooked", dec => {
const model = dec.getModel();
const result = [];
if (model.accepted_answer) {
result.push(
dec.attach("button", {
label: "solved.solution",
title: "solved.solution",
icon: "check-circle",
action: "noop",
className: "solved"
})
);
}
if (!model.accepted_answer && model.can_accept_answer) {
result.push(
dec.attach("button", {
label: "solved.mark_as_solution",
title: "solved.mark_as_solution",
icon: "check-circle",
action: "acceptAnswer",
className: "solve"
})
);
} else if (model.accepted_answer && model.can_unaccept_answer) {
result.push(
dec.attach("button", {
label: "solved.unmark_as_solution",
title: "solved.unmark_as_solution",
icon: "times-circle",
action: "unacceptAnswer",
className: "solve"
})
);
}
return dec.h("div.solved-container", result);
});
}
api.attachWidgetAction("post", "acceptAnswer", function() {
const post = this.model;
const current = post.get("topic.postStream.posts").filter(p => {
@ -243,7 +197,7 @@ function initializeWithApi(api, container) {
export default {
name: "extend-for-solved-button",
initialize(container) {
initialize() {
Topic.reopen({
// keeping this here cause there is complex localization
acceptedAnswerHtml: function() {
@ -255,7 +209,7 @@ export default {
}
return I18n.t("solved.accepted_html", {
icon: iconHTML("check-circle", { class: "accepted" }),
icon: iconHTML("check-square", { class: "accepted" }),
username_lower: username.toLowerCase(),
username: formatUsername(username),
post_path: this.get("url") + "/" + postNumber,
@ -273,7 +227,7 @@ export default {
openTag: "span",
closeTag: "span",
title: I18n.t("topic_statuses.solved.help"),
icon: "check-circle"
icon: "far-check-square"
});
} else if (
this.topic.can_have_answer &&
@ -291,12 +245,12 @@ export default {
}.property()
});
withPluginApi("0.1", api => initializeWithApi(api, container));
withPluginApi("0.1", initializeWithApi);
withPluginApi("0.8.10", api => {
api.replaceIcon(
"notification.solved.accepted_notification",
"check-circle"
"check-square"
);
});
}

View File

@ -1,3 +1,4 @@
.solved-panel,
.post-controls .accepted,
.fa.accepted,
.accepted-text {
@ -7,61 +8,9 @@
}
}
.topic-body {
.solved-container {
display: flex;
.btn {
background-color: blend-primary-secondary(5%);
padding: 1em;
}
}
.solve,
.solved {
text-align: center;
.d-icon {
margin-right: 0.5em;
}
}
.solved {
color: green;
flex: 1;
&.btn .d-icon {
color: green;
}
}
.solve {
flex: 2;
}
}
.post-controls button.accepted {
&:hover {
background: none;
cursor: auto;
}
&:active {
box-shadow: none;
}
&.btn-flat:hover .d-icon {
color: green;
}
}
.post-controls .unaccepted {
color: dark-light-choose($primary-low-mid, $secondary-high);
}
.post-controls span:not(.d-button-label) {
display: inline-flex;
align-items: center;
align-items: baseline;
}
.post-controls .accepted-text {
@ -71,6 +20,29 @@
z-index: 2;
}
// you can style accepted answers however your want
.quote.accepted-answer {
// background-color: #E9FFE0;
}
.mobile-view .solved-panel {
margin-bottom: 15px;
}
.solved-panel {
.by {
display: none;
}
margin-top: 20px;
margin-bottom: 0px;
font-size: 13px;
// margin-bottom: 0px;
// padding: 4px 0px;
//border-top: 1px solid #ddd;
//background-color: #E9FFE0;
}
aside.quote .title.title-only {
padding: 12px;
}

View File

@ -13,8 +13,6 @@ en:
unaccept_answer: "Unselect if this reply no longer solves the problem"
accepted_answer: "Solution"
solution: "Solution"
mark_as_solution: "Mark as solution"
unmark_as_solution: "Unmark as solution"
solution_summary:
one: "solution"
other: "solutions"