2016-06-30 13:55:44 -04:00
|
|
|
import { ajax } from "discourse/lib/ajax";
|
2025-01-13 13:02:49 +00:00
|
|
|
import discourseComputed from "discourse/lib/decorators";
|
2023-10-10 19:38:59 +01:00
|
|
|
import DiscourseURL from "discourse/lib/url";
|
|
|
|
import Category from "discourse/models/category";
|
2024-11-14 10:03:58 +11:00
|
|
|
import RestModel from "discourse/models/rest";
|
2019-11-08 14:13:35 -05:00
|
|
|
|
2024-11-14 10:03:58 +11:00
|
|
|
export default class Permalink extends RestModel {
|
2023-03-17 10:18:42 +00:00
|
|
|
static findAll(filter) {
|
2025-01-08 06:18:01 -06:00
|
|
|
return ajax("/admin/permalinks.json").then(function (permalinks) {
|
|
|
|
let allLinks = permalinks.map((p) => Permalink.create(p));
|
|
|
|
|
|
|
|
let filteredLinks = filter
|
|
|
|
? allLinks.filter(
|
|
|
|
(p) => p.url.includes(filter) || p.external_url?.includes(filter)
|
|
|
|
)
|
|
|
|
: allLinks;
|
|
|
|
|
|
|
|
return { allLinks, filteredLinks };
|
2023-03-17 10:18:42 +00:00
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2020-03-25 11:30:39 -07:00
|
|
|
@discourseComputed("category_id")
|
2021-11-13 14:01:55 +01:00
|
|
|
category(category_id) {
|
2020-03-25 11:30:39 -07:00
|
|
|
return Category.findById(category_id);
|
2023-03-17 10:18:42 +00:00
|
|
|
}
|
2020-03-25 11:30:39 -07:00
|
|
|
|
|
|
|
@discourseComputed("external_url")
|
2021-11-13 14:01:55 +01:00
|
|
|
linkIsExternal(external_url) {
|
2020-03-25 11:30:39 -07:00
|
|
|
return !DiscourseURL.isInternal(external_url);
|
2023-03-17 10:18:42 +00:00
|
|
|
}
|
2020-03-25 11:30:39 -07:00
|
|
|
|
2024-11-14 10:03:58 +11:00
|
|
|
@discourseComputed("url")
|
|
|
|
key(url) {
|
|
|
|
return url.replace("/", "_");
|
2023-03-17 10:18:42 +00:00
|
|
|
}
|
|
|
|
}
|