|
|
|
|
@ -173,8 +173,8 @@ module.exports = {
|
|
|
|
|
async singleByPath(obj, args, context, info) {
|
|
|
|
|
let page = await WIKI.models.pages.getPageFromDb({
|
|
|
|
|
path: args.path,
|
|
|
|
|
locale: args.locale,
|
|
|
|
|
});
|
|
|
|
|
locale: args.locale
|
|
|
|
|
})
|
|
|
|
|
if (page) {
|
|
|
|
|
if (WIKI.auth.checkAccess(context.req.user, ['manage:pages', 'delete:pages'], {
|
|
|
|
|
path: page.path,
|
|
|
|
|
@ -281,7 +281,42 @@ module.exports = {
|
|
|
|
|
builder.orWhereIn('id', _.isString(curPage.ancestors) ? JSON.parse(curPage.ancestors) : curPage.ancestors)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}).orderBy([{ column: 'isFolder', order: 'desc' }, 'title'])
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
// Ruslan: Custom sorting for "Tree Navigation" for folder "Users"
|
|
|
|
|
// const customSortingOrder = [
|
|
|
|
|
// '📁 Шаблон',
|
|
|
|
|
// 'Landing'
|
|
|
|
|
// ]
|
|
|
|
|
|
|
|
|
|
const emojiRegex = /^[\u{1F300}-\u{1F6FF}\u{1F900}-\u{1F9FF}\u{2600}-\u{26FF}\u{2700}-\u{27BF}]/u
|
|
|
|
|
const russianRegex = /[\u0400-\u04FF]/
|
|
|
|
|
|
|
|
|
|
const userPrefix = 'Users/'
|
|
|
|
|
results.sort((a, b) => {
|
|
|
|
|
if (a.isFolder !== b.isFolder) {
|
|
|
|
|
return b.isFolder - a.isFolder
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (a.path.startsWith(userPrefix) || a.path.startsWith(userPrefix)) {
|
|
|
|
|
// Emoji first
|
|
|
|
|
const aIsEmoji = emojiRegex.test(a.title)
|
|
|
|
|
const bIsEmoji = emojiRegex.test(b.title)
|
|
|
|
|
|
|
|
|
|
if (aIsEmoji && !bIsEmoji) return -1
|
|
|
|
|
if (!aIsEmoji && bIsEmoji) return 1
|
|
|
|
|
|
|
|
|
|
// Russian second, only by first letter due to title must contain russian + english
|
|
|
|
|
const aIsRussian = russianRegex.test(a.title[0])
|
|
|
|
|
const bIsRussian = russianRegex.test(b.title[1])
|
|
|
|
|
|
|
|
|
|
if (aIsRussian && !bIsRussian) return -1
|
|
|
|
|
if (!aIsRussian && bIsRussian) return 1
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return a.title.localeCompare(b.title)
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
return results.filter(r => {
|
|
|
|
|
return WIKI.auth.checkAccess(context.req.user, ['read:pages'], {
|
|
|
|
|
path: r.path,
|
|
|
|
|
|