mirror of
https://github.com/discourse/discourse.git
synced 2024-11-22 09:42:02 +08:00
REFACTOR: Remove Discourse.SiteSettings
from utilities
This involves a little refactoring of how our `defaultHomepage()` works. It previously would check the meta tag / site settings each time it was called but now it only checks once on application boot.
This commit is contained in:
parent
4def5a8339
commit
c4d5c0c91b
|
@ -1,4 +1,5 @@
|
|||
import DiscourseURL from "discourse/lib/url";
|
||||
import { initializeDefaultHomepage } from "discourse/lib/utilities";
|
||||
|
||||
export default {
|
||||
name: "url-redirects",
|
||||
|
@ -6,7 +7,6 @@ export default {
|
|||
|
||||
initialize(container) {
|
||||
const currentUser = container.lookup("current-user:main");
|
||||
|
||||
if (currentUser) {
|
||||
const username = currentUser.get("username");
|
||||
DiscourseURL.rewrite(
|
||||
|
@ -15,6 +15,10 @@ export default {
|
|||
);
|
||||
}
|
||||
|
||||
// Initialize default homepage
|
||||
let siteSettings = container.lookup("site-settings:main");
|
||||
initializeDefaultHomepage(siteSettings);
|
||||
|
||||
DiscourseURL.rewrite(/^\/u\/([^\/]+)\/?$/, "/u/$1/summary", {
|
||||
exceptions: [
|
||||
"/u/account-created",
|
||||
|
|
|
@ -4,7 +4,7 @@ import toMarkdown from "discourse/lib/to-markdown";
|
|||
import Handlebars from "handlebars";
|
||||
import { default as getURL, getURLWithCDN } from "discourse-common/lib/get-url";
|
||||
|
||||
const homepageSelector = "meta[name=discourse_current_homepage]";
|
||||
let _defaultHomepage;
|
||||
|
||||
export function translateSize(size) {
|
||||
switch (size) {
|
||||
|
@ -213,23 +213,24 @@ export function setCaretPosition(ctrl, pos) {
|
|||
}
|
||||
}
|
||||
|
||||
export function defaultHomepage() {
|
||||
let homepage = null;
|
||||
let elem = _.first($(homepageSelector));
|
||||
if (elem) {
|
||||
homepage = elem.content;
|
||||
export function initializeDefaultHomepage(siteSettings) {
|
||||
let homepage;
|
||||
let sel = document.querySelector("meta[name='discourse_current_homepage']");
|
||||
if (sel) {
|
||||
homepage = sel.getAttribute("content");
|
||||
}
|
||||
if (!homepage) {
|
||||
homepage = Discourse.SiteSettings.top_menu.split("|")[0].split(",")[0];
|
||||
homepage = siteSettings.top_menu.split("|")[0].split(",")[0];
|
||||
}
|
||||
return homepage;
|
||||
setDefaultHomepage(homepage);
|
||||
}
|
||||
|
||||
export function defaultHomepage() {
|
||||
return _defaultHomepage;
|
||||
}
|
||||
|
||||
export function setDefaultHomepage(homepage) {
|
||||
let elem = _.first($(homepageSelector));
|
||||
if (elem) {
|
||||
elem.content = homepage;
|
||||
}
|
||||
_defaultHomepage = homepage;
|
||||
}
|
||||
|
||||
export function determinePostReplaceSelection({
|
||||
|
@ -328,7 +329,7 @@ export function clipboardHelpers(e, opts) {
|
|||
const canUploadImage =
|
||||
canUpload && files.filter(f => f.type.match("^image/"))[0];
|
||||
const canPasteHtml =
|
||||
Discourse.SiteSettings.enable_rich_text_paste &&
|
||||
opts.siteSettings.enable_rich_text_paste &&
|
||||
types.includes("text/html") &&
|
||||
!canUploadImage;
|
||||
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
import { acceptance } from "helpers/qunit-helpers";
|
||||
|
||||
acceptance("Login redirect", {});
|
||||
|
||||
acceptance("Login redirect");
|
||||
QUnit.test("redirects login to default homepage", async function(assert) {
|
||||
await visit("/login");
|
||||
assert.equal(
|
||||
|
@ -9,8 +8,15 @@ QUnit.test("redirects login to default homepage", async function(assert) {
|
|||
"discovery.latest",
|
||||
"it works when latest is the homepage"
|
||||
);
|
||||
this.siteSettings.top_menu = "categories|latest|top|hot";
|
||||
});
|
||||
|
||||
acceptance("Login redirect - categories default", {
|
||||
settings: {
|
||||
top_menu: "categories|latest|top|hot"
|
||||
}
|
||||
});
|
||||
|
||||
QUnit.test("when site setting is categories", async function(assert) {
|
||||
await visit("/login");
|
||||
assert.equal(
|
||||
currentPath(),
|
||||
|
|
|
@ -6,6 +6,7 @@ import {
|
|||
avatarUrl,
|
||||
getRawSize,
|
||||
avatarImg,
|
||||
initializeDefaultHomepage,
|
||||
defaultHomepage,
|
||||
setDefaultHomepage,
|
||||
caretRowCol,
|
||||
|
@ -132,17 +133,12 @@ QUnit.test("avatarImg", assert => {
|
|||
setDevicePixelRatio(oldRatio);
|
||||
});
|
||||
|
||||
QUnit.test("defaultHomepage", function(assert) {
|
||||
this.siteSettings.top_menu = "latest|top|hot";
|
||||
assert.equal(
|
||||
defaultHomepage(),
|
||||
"latest",
|
||||
"default homepage is the first item in the top_menu site setting"
|
||||
);
|
||||
var meta = document.createElement("meta");
|
||||
QUnit.test("defaultHomepage via meta tag", function(assert) {
|
||||
let meta = document.createElement("meta");
|
||||
meta.name = "discourse_current_homepage";
|
||||
meta.content = "hot";
|
||||
document.body.appendChild(meta);
|
||||
initializeDefaultHomepage(this.siteSettings);
|
||||
assert.equal(
|
||||
defaultHomepage(),
|
||||
"hot",
|
||||
|
@ -151,18 +147,21 @@ QUnit.test("defaultHomepage", function(assert) {
|
|||
document.body.removeChild(meta);
|
||||
});
|
||||
|
||||
QUnit.test("setDefaultHomepage", assert => {
|
||||
var meta = document.createElement("meta");
|
||||
meta.name = "discourse_current_homepage";
|
||||
meta.content = "hot";
|
||||
document.body.appendChild(meta);
|
||||
setDefaultHomepage("top");
|
||||
QUnit.test("defaultHomepage via site settings", function(assert) {
|
||||
this.siteSettings.top_menu = "top|latest|hot";
|
||||
initializeDefaultHomepage(this.siteSettings);
|
||||
assert.equal(
|
||||
meta.content,
|
||||
defaultHomepage(),
|
||||
"top",
|
||||
"default homepage set by setDefaultHomepage"
|
||||
"default homepage is the first item in the top_menu site setting"
|
||||
);
|
||||
document.body.removeChild(meta);
|
||||
});
|
||||
|
||||
QUnit.test("setDefaultHomepage", function(assert) {
|
||||
initializeDefaultHomepage(this.siteSettings);
|
||||
assert.equal(defaultHomepage(), "latest");
|
||||
setDefaultHomepage("top");
|
||||
assert.equal(defaultHomepage(), "top");
|
||||
});
|
||||
|
||||
QUnit.test("caretRowCol", assert => {
|
||||
|
|
Loading…
Reference in New Issue
Block a user