Toggle navigation
Toggle navigation
This project
Loading...
Sign in
Зуев Егор
/
wiki.dev
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Snippets
Network
Create a new issue
Commits
Issue Boards
Files
Commits
Network
Compare
Branches
Tags
Authored by
Dan Brown
2016-08-13 13:53:04 +0100
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
Commit
2d958e88bfc5a24e91223e328322b6d21d74215d
2d958e88
1 parent
07c7d5af
Fixed entities created with blank slugs.
Fixes #156.
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
18 additions
and
16 deletions
app/Repos/BookRepo.php
app/Repos/ChapterRepo.php
app/Repos/PageRepo.php
tests/Entity/EntityTest.php
app/Repos/BookRepo.php
View file @
2d958e8
...
...
@@ -216,12 +216,10 @@ class BookRepo extends EntityRepo
*/
public
function
findSuitableSlug
(
$name
,
$currentId
=
false
)
{
$originalSlug
=
Str
::
slug
(
$name
);
$slug
=
$originalSlug
;
$count
=
2
;
$slug
=
Str
::
slug
(
$name
);
if
(
$slug
===
""
)
$slug
=
substr
(
md5
(
rand
(
1
,
500
)),
0
,
5
);
while
(
$this
->
doesSlugExist
(
$slug
,
$currentId
))
{
$slug
=
$originalSlug
.
'-'
.
$count
;
$count
++
;
$slug
.=
'-'
.
substr
(
md5
(
rand
(
1
,
500
)),
0
,
3
);
}
return
$slug
;
}
...
...
@@ -229,7 +227,7 @@ class BookRepo extends EntityRepo
/**
* Get all child objects of a book.
* Returns a sorted collection of Pages and Chapters.
* Loads the bookslug onto child elements to prevent access database access for getting the slug.
* Loads the book
slug onto child elements to prevent access database access for getting the slug.
* @param Book $book
* @param bool $filterDrafts
* @return mixed
...
...
@@ -245,7 +243,7 @@ class BookRepo extends EntityRepo
$pages
=
$pageQuery
->
get
();
$chapterQuery
=
$book
->
chapters
()
->
with
([
'pages'
=>
function
(
$query
)
use
(
$filterDrafts
)
{
$chapterQuery
=
$book
->
chapters
()
->
with
([
'pages'
=>
function
(
$query
)
use
(
$filterDrafts
)
{
$this
->
permissionService
->
enforcePageRestrictions
(
$query
,
'view'
);
if
(
$filterDrafts
)
$query
->
where
(
'draft'
,
'='
,
false
);
}]);
...
...
@@ -263,7 +261,7 @@ class BookRepo extends EntityRepo
$child
->
pages
->
each
(
function
(
$page
)
use
(
$bookSlug
)
{
$page
->
setAttribute
(
'bookSlug'
,
$bookSlug
);
});
$child
->
pages
=
$child
->
pages
->
sortBy
(
function
(
$child
,
$key
)
{
$child
->
pages
=
$child
->
pages
->
sortBy
(
function
(
$child
,
$key
)
{
$score
=
$child
->
priority
;
if
(
$child
->
draft
)
$score
-=
100
;
return
$score
;
...
...
@@ -272,7 +270,7 @@ class BookRepo extends EntityRepo
});
// Sort items with drafts first then by priority.
return
$children
->
sortBy
(
function
(
$child
,
$key
)
{
return
$children
->
sortBy
(
function
(
$child
,
$key
)
{
$score
=
$child
->
priority
;
if
(
$child
->
isA
(
'page'
)
&&
$child
->
draft
)
$score
-=
100
;
return
$score
;
...
...
app/Repos/ChapterRepo.php
View file @
2d958e8
...
...
@@ -81,7 +81,7 @@ class ChapterRepo extends EntityRepo
{
$pages
=
$this
->
permissionService
->
enforcePageRestrictions
(
$chapter
->
pages
())
->
get
();
// Sort items with drafts first then by priority.
return
$pages
->
sortBy
(
function
(
$child
,
$key
)
{
return
$pages
->
sortBy
(
function
(
$child
,
$key
)
{
$score
=
$child
->
priority
;
if
(
$child
->
draft
)
$score
-=
100
;
return
$score
;
...
...
@@ -151,6 +151,7 @@ class ChapterRepo extends EntityRepo
public
function
findSuitableSlug
(
$name
,
$bookId
,
$currentId
=
false
)
{
$slug
=
Str
::
slug
(
$name
);
if
(
$slug
===
""
)
$slug
=
substr
(
md5
(
rand
(
1
,
500
)),
0
,
5
);
while
(
$this
->
doesSlugExist
(
$slug
,
$bookId
,
$currentId
))
{
$slug
.=
'-'
.
substr
(
md5
(
rand
(
1
,
500
)),
0
,
3
);
}
...
...
app/Repos/PageRepo.php
View file @
2d958e8
...
...
@@ -147,7 +147,7 @@ class PageRepo extends EntityRepo
$draftPage
->
fill
(
$input
);
// Save page tags if present
if
(
isset
(
$input
[
'tags'
]))
{
if
(
isset
(
$input
[
'tags'
]))
{
$this
->
tagRepo
->
saveTagsToEntity
(
$draftPage
,
$input
[
'tags'
]);
}
...
...
@@ -319,7 +319,7 @@ class PageRepo extends EntityRepo
}
// Save page tags if present
if
(
isset
(
$input
[
'tags'
]))
{
if
(
isset
(
$input
[
'tags'
]))
{
$this
->
tagRepo
->
saveTagsToEntity
(
$page
,
$input
[
'tags'
]);
}
...
...
@@ -591,14 +591,15 @@ class PageRepo extends EntityRepo
/**
* Gets a suitable slug for the resource
* @param
$name
* @param
$bookId
* @param
string
$name
* @param
int
$bookId
* @param bool|false $currentId
* @return string
*/
public
function
findSuitableSlug
(
$name
,
$bookId
,
$currentId
=
false
)
{
$slug
=
Str
::
slug
(
$name
);
if
(
$slug
===
""
)
$slug
=
substr
(
md5
(
rand
(
1
,
500
)),
0
,
5
);
while
(
$this
->
doesSlugExist
(
$slug
,
$bookId
,
$currentId
))
{
$slug
.=
'-'
.
substr
(
md5
(
rand
(
1
,
500
)),
0
,
3
);
}
...
...
tests/Entity/EntityTest.php
View file @
2d958e8
...
...
@@ -151,8 +151,10 @@ class EntityTest extends TestCase
->
visit
(
'/books/create'
)
->
type
(
$book
->
name
,
'#name'
)
->
type
(
$book
->
description
,
'#description'
)
->
press
(
'Save Book'
)
->
seePageIs
(
'/books/my-first-book-2'
);
->
press
(
'Save Book'
);
$expectedPattern
=
'/\/books\/my-first-book-[0-9a-zA-Z]{3}/'
;
$this
->
assertRegExp
(
$expectedPattern
,
$this
->
currentUri
,
"Did not land on expected page [
$expectedPattern
].
\n
"
);
$book
=
\BookStack\Book
::
where
(
'slug'
,
'='
,
'my-first-book'
)
->
first
();
return
$book
;
...
...
Please
register
or
sign in
to post a comment