Skip to content

Commit 660e55c

Browse files
committed
WIP
1 parent d05ec1c commit 660e55c

24 files changed

+737
-768
lines changed

README.md

+8-8
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,17 @@
88
## Документация (Работа с кодом)
99

1010
- [ ] Корректное отображение кода - Убедиться, что код в документации отображается правильно, с соблюдением форматирования, подсветкой синтаксиса
11-
- [ ] Корректное отображение таблиц - Убедиться, что таблицы в документации отображаются так, чтобы данные были читаемыми и оформлены правильно, с правильным выравниванием содержимого ячеек.
11+
- [x] Корректное отображение таблиц - Убедиться, что таблицы в документации отображаются так, чтобы данные были читаемыми и оформлены правильно, с правильным выравниванием содержимого ячеек.
1212
- [ ] Корректное отображение коллекций (столбцов) - Проверить, что коллекции (например, списки или словари) в документации правильно отображаются, особенно когда имеются вложенные структуры данных.
1313
- [ ] Корректное отображение цитат - Убедиться, что цитаты в документации выделяются и форматируются соответствующим образом для читаемости и понятности.
1414
- [ ] Корректное отображение предупреждений - Проверить, что предупреждения в документации явно выделяются, чтобы пользователи могли обратить на них внимание.
15-
- [ ] Типограф - Применить правила типографики к тексту документации с целью улучшения его читаемости, например, автоматическое исправление ошибок в расстановке кавычек, дефисов и других знаков препинания.
16-
- [ ] Команда для загрузки документов из git - Создать команду, которая будет позволять загружать документацию напрямую из системы контроля версий Git, чтобы всегда иметь актуальную версию документации доступной для пользователей.
15+
- [x] Типограф - Применить правила типографики к тексту документации с целью улучшения его читаемости, например, автоматическое исправление ошибок в расстановке кавычек, дефисов и других знаков препинания.
16+
- [x] Команда для загрузки документов из git - Создать команду, которая будет позволять загружать документацию напрямую из системы контроля версий Git, чтобы всегда иметь актуальную версию документации доступной для пользователей.
1717
- [ ] Поиск по документации - Реализовать функциональность поиска в документации, чтобы пользователи могли быстро находить нужную информацию по ключевым словам или фразам.
1818
- [ ] Проверка прошлых версий на работоспособность - Регулярно тестировать документацию на старых версиях продукта, чтобы убедиться, что все примеры и инструкции все еще актуальны и работоспособны.
19-
- [ ] Переключение версий - Предоставить возможность пользователям выбирать нужную версию документации
19+
- [x] Переключение версий - Предоставить возможность пользователям выбирать нужную версию документации
2020
- [ ] Обноавить инструкцию для системы переводов, что бы её было легко понять
21-
- [ ] Записывать последний доступный хэш коммита
21+
- [x] Записывать последний доступный хэш коммита
2222
- [ ] Дружелюбно показывать если документация отстаёт от оригинала и на сколько сильно
2323
- [ ] Форматирование отступов, что бы последнего не было никогда.
2424

@@ -39,17 +39,17 @@
3939
## Публикации
4040

4141
- [x] Возможность пользователю делать публикации
42-
- [ ] Markdown редактор (Пусть пользователь сразу привыкает к тому, что ему придётся иметь дело именно с markdown)
42+
- [x] Markdown редактор (Пусть пользователь сразу привыкает к тому, что ему придётся иметь дело именно с markdown)
4343
- [ ] Маркер, для того что бы пользователь определился сам, как будет выглядеть короткая версия поста, либо сделать это автоматически
4444
- [ ] Генерация изображений для социальных сетей и ссылок, где бы заголовок отображался на картинке красиво
4545
- [ ] Предпросмотр того как статья будет выглядеть ещё до публикации
4646
- [ ] Теги публикации, лучше всего из списка Enum и до 1/2/3
4747
- [ ] Рейтинг +1 / -1 где пользователь может высказывать понравилась ли ему публикация
48-
- [ ] Система коментариев с поддержкой (Не большой?) вложенности
48+
- [x] Система коментариев с поддержкой (Не большой?) вложенности
4949
- [ ] Рейтинг у комментария
5050
- [ ] Меншены в комментариях?
5151
- [ ] Возможность загрузки изображений через редактор и их эффективное удаление/ресайз
52-
- [ ] Блок с самыми полулярными публикациями
52+
- [x] Блок с самыми полулярными публикациями
5353
- [ ] Push/Site уведомления о новых комментариях или упоминаний
5454

5555
## Как использовать этот репозиторий

app/Casts/PackageTypeEnum.php

+14-14
Original file line numberDiff line numberDiff line change
@@ -28,35 +28,35 @@ enum PackageTypeEnum: string
2828
public function text(): string
2929
{
3030
return match ($this) {
31-
self::FileManagement => 'Управление файлами',
32-
self::AuthAndPermission => 'Аутентификация и разрешения',
33-
self::DatabaseAndEloquent => 'Базы данных и Eloquent',
31+
self::FileManagement => 'Управление файлами',
32+
self::AuthAndPermission => 'Аутентификация и разрешения',
33+
self::DatabaseAndEloquent => 'Базы данных и Eloquent',
3434
self::DebuggingAndDevTools => 'Инструменты разработчика',
35-
self::DevOps => 'DevOps',
35+
self::DevOps => 'DevOps',
3636
//self::Localization => 'Локализация',
37-
self::API => 'API',
37+
self::API => 'API',
3838
//self::SEO => 'Оптимизация для поисковых систем (SEO)',
39-
self::Testing => 'Тестирование',
39+
self::Testing => 'Тестирование',
4040
//self::Payment => 'Платежи',
41-
self::Security => 'Безопасность',
41+
self::Security => 'Безопасность',
4242
//self::Mail => 'Почта',
43-
self::ECommerce => 'Интернет-торговля',
44-
self::CMSAndAdminPanels => 'CMS и панели администратора',
45-
self::CodeArchitecture => 'Архитектура кода',
46-
self::Notifications => 'Уведомления',
43+
self::ECommerce => 'Интернет-торговля',
44+
self::CMSAndAdminPanels => 'CMS и панели администратора',
45+
self::CodeArchitecture => 'Архитектура кода',
46+
self::Notifications => 'Уведомления',
4747
self::UIAndBladeComponents => 'UI и компоненты Blade',
48-
self::UtilitiesAndHelpers => 'Утилиты',
48+
self::UtilitiesAndHelpers => 'Утилиты',
4949

5050
};
5151
}
5252

5353
public function colorBg(): string
5454
{
55-
return ColorText::Hex($this->text(),'21');//подобрать подходящее значение
55+
return ColorText::Hex($this->text(), '21');//подобрать подходящее значение
5656
}
57+
5758
public function colorText(): string
5859
{
5960
return ColorText::Hex($this->text());
6061
}
61-
6262
}

app/Docs.php

+4-1
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,10 @@ public function __construct(string $version, string $file)
7474
$this->page = Storage::disk('docs')->get($this->path);
7575

7676
// Abort the request if the page doesn't exist
77-
abort_if($this->page === null, 404);
77+
abort_if(
78+
$this->page === null && Document::where('file', $this->file)->exists(),
79+
redirect(status: 300)->route('docs', ['version' => $version, 'page' => 'installation'])
80+
);
7881

7982
$variables = Str::of($this->page)->after('---')->before('---');
8083

app/Ecosystem.php

+5-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,11 @@
44

55
class Ecosystem
66
{
7-
7+
/**
8+
* Get the ecosystem items.
9+
*
10+
* @return array
11+
*/
812
public static function items(): array
913
{
1014
return [

app/Http/Controllers/DocsController.php

+1
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ public function status(string $version = Docs::DEFAULT_VERSION)
3333
{
3434
$documents = Document::where('version', $version)
3535
->orderByDesc('behind')
36+
->orderBy('file')
3637
->get();
3738

3839
return view('docs.status', [

app/Http/Controllers/PackagesController.php

+13-2
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,20 @@
1515

1616
class PackagesController extends Controller
1717
{
18-
public function index()
18+
/**
19+
* @param \Illuminate\Http\Request $request
20+
*
21+
* @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View|\Illuminate\Foundation\Application|null
22+
*/
23+
public function index(Request $request)
1924
{
20-
return view('packages.index');
25+
$packages = Package::when($request->has('type'), function ($query) use ($request) {
26+
return $query->where('type', $request->input('type'));
27+
})->paginate();
28+
29+
return view('packages.index', [
30+
'packages' => $packages
31+
]);
2132
}
2233

2334
public function edit(Request $request, Package $package)

app/Http/Controllers/PostController.php

+22-21
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ class PostController extends Controller
1515
{
1616

1717
/**
18-
* @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View|\Illuminate\Foundation\Application|null
18+
* @return \Illuminate\Contracts\View\View|\Tonysm\TurboLaravel\Http\MultiplePendingTurboStreamResponse|\Tonysm\TurboLaravel\Http\PendingTurboStreamResponse|null
1919
*/
2020
public function feed()
2121
{
@@ -26,11 +26,12 @@ public function feed()
2626
->simplePaginate(5);//CursorPaginate не работает с сортировкой по полю из withCount
2727

2828

29-
if(request()->isMethod('GET')){
29+
if (request()->isMethod('GET')) {
3030
return view('post.list', [
3131
'popular' => $popular,
3232
]);
3333
}
34+
3435
return turbo_stream([
3536
turbo_stream()->append('popular-list', view('post._popular_list', [
3637
'popular' => $popular,
@@ -40,7 +41,6 @@ public function feed()
4041
'popular' => $popular,
4142
])),
4243
]);
43-
4444
}
4545

4646

@@ -60,33 +60,34 @@ public function show(Post $post)
6060
]);
6161
}
6262

63-
public function edit(Request $request,Post $post)
63+
public function edit(Request $request, Post $post)
6464
{
6565
$this->authorize('isOwner', $post);
6666

6767
$request->validate([
68-
'select_type' => [
68+
'select_type' => [
6969
'sometimes',
70-
Rule::enum(PostTypeEnum::class)
71-
]
70+
Rule::enum(PostTypeEnum::class),
71+
],
7272
]);
7373

74-
$isEditing = $post->exists;
75-
if($request->has('select_type') && !$isEditing){
76-
$post->type = PostTypeEnum::from($request->input('select_type'));
77-
$view = 'post.edit.'. $request->input('select_type');
78-
}elseif($isEditing){
79-
$view = 'post.edit.'. $post->type->value;
74+
$isEditing = $post->exists;
75+
if ($request->has('select_type') && !$isEditing) {
76+
$post->type = PostTypeEnum::from($request->input('select_type'));
77+
$view = 'post.edit.' . $request->input('select_type');
78+
} else if ($isEditing) {
79+
$view = 'post.edit.' . $post->type->value;
8080

81-
}else{
82-
$view = 'post.edit.'.PostTypeEnum::Article->value;
83-
}
81+
} else {
82+
$view = 'post.edit.' . PostTypeEnum::Article->value;
83+
}
8484

8585
$title = $isEditing ? 'Редактирование' : 'Новая статья';
86+
8687
return view($view, [
87-
'title' => $title,
88-
'post' => $post,
89-
'isEditing' => $isEditing
88+
'title' => $title,
89+
'post' => $post,
90+
'isEditing' => $isEditing,
9091
])->fragmentsIf(!$request->isMethodSafe());
9192
}
9293

@@ -154,11 +155,11 @@ public function list(Request $request)
154155
return turbo_stream([
155156
turbo_stream()->removeAll('.post-placeholder'),
156157
turbo_stream()->append('posts-frame', view('particles.posts.list', [
157-
'posts' => $posts,
158+
'posts' => $posts,
158159
])),
159160

160161
turbo_stream()->replace('post-more', view('post.pagination', [
161-
'posts' => $posts,
162+
'posts' => $posts,
162163
])),
163164
]);
164165
}

app/Http/Controllers/ProfileController.php

+20-10
Original file line numberDiff line numberDiff line change
@@ -27,28 +27,38 @@ public function index(Request $request)
2727
public function show(User $user, Request $request)
2828
{
2929
return view('profile.profile', [
30-
'user' => $user,
31-
'posts' => $this->getPosts($user, PostTypeEnum::Article, $request->user()),
30+
'user' => $user,
31+
'posts' => $this->getPosts($user, PostTypeEnum::Article, $request->user()),
3232
]);
3333
}
3434

35-
private function getPosts(User $owner, PostTypeEnum $type, User $user){
36-
$posts = $owner->posts()
35+
/**
36+
* @param \App\Models\User $owner
37+
* @param \App\Casts\PostTypeEnum $type
38+
* @param \App\Models\User $user
39+
*
40+
* @return \Illuminate\Pagination\AbstractCursorPaginator|\Illuminate\Pagination\AbstractPaginator
41+
*/
42+
private function getPosts(User $owner, PostTypeEnum $type, User $user)
43+
{
44+
$posts = $owner->posts()
3745
->type($type->value)
3846
->withCount('comments')
3947
->withCount('likers')
4048
->orderBy('id', 'desc')
4149
->cursorPaginate(2);
50+
4251
return $user->attachLikeStatus($posts);
4352
}
4453

4554
public function meets(User $user, Request $request)
4655
{
4756
$meets = $user->meets()->latest()
4857
->cursorPaginate(2);
58+
4959
return view('profile.events', [
50-
'user' => $user,
51-
'meets' => $meets,
60+
'user' => $user,
61+
'meets' => $meets,
5262
]);
5363
}
5464

@@ -98,7 +108,7 @@ public function comments(Request $request, User $user)
98108
public function awards(User $user)
99109
{
100110
return view('profile.awards', [
101-
'user' => $user,
111+
'user' => $user,
102112
]);
103113
}
104114

@@ -119,18 +129,18 @@ public function update(Request $request)
119129
$request->validate(
120130
[
121131
'name' => 'required|string',
122-
'about' => 'sometimes|string'
132+
'about' => 'sometimes|string',
123133
],
124134
[],
125135
[
126136
'name' => 'Имя',
127-
'about' => 'О себе'
137+
'about' => 'О себе',
128138
]
129139
);
130140

131141
$request->user()->fill([
132142
'name' => $request->input('name'),
133-
'about' => $request->input('about')
143+
'about' => $request->input('about'),
134144
])->save();
135145

136146
return redirect()->route('profile', $request->user());

resources/css/app.scss

+2-21
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,7 @@ $primary: #f9322c;
66
$dark: #212529;
77

88
$body-secondary-bg: #EBEEF4;
9-
$body-secondary-bg-dark: #1A1E28;//shade-color($body-secondary-bg, 85);
10-
11-
/*
12-
$secondary: $gray-600 !default;
13-
$success: $green !default;
14-
$info: $cyan !default;
15-
$warning: $yellow !default;
16-
$danger: $red !default;
17-
$light: $gray-100 !default;
18-
$dark: $gray-900 !default;
19-
// scss-docs-end theme-color-variables
20-
*/
9+
$body-secondary-bg-dark: #1A1E28;
2110

2211
$container-max-widths: (
2312
sm: 540px,
@@ -92,6 +81,7 @@ $utilities: (
9281
}
9382

9483
@import 'bootstrap/scss/bootstrap';
84+
@import "reset";
9585
@import 'prism';
9686
@import 'back-to-top';
9787
@import 'clipboard';
@@ -100,19 +90,10 @@ $utilities: (
10090

10191

10292

103-
textarea {
104-
resize: none;
105-
}
106-
10793
.text-balance {
10894
text-wrap: balance;
10995
}
11096

111-
.lead {
112-
font-family: $headings-font-family;
113-
@extend .text-balance;
114-
}
115-
11697

11798
.post {
11899
@extend .text-break;

resources/css/docs.scss

+5
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ main div {
9898
}
9999

100100
code {
101+
@extend .text-nowrap;
101102
color: rgb(235, 68, 50);
102103
}
103104
}
@@ -184,6 +185,10 @@ main {
184185
pre {
185186
border-radius: 0.8rem;
186187
margin-bottom: 2em !important;
188+
189+
code {
190+
white-space: inherit!important;
191+
}
187192
}
188193

189194
/*

resources/css/reset.scss

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
2+
textarea {
3+
resize: none;
4+
}
5+
6+
7+
.lead {
8+
font-family: $headings-font-family;
9+
@extend .text-balance;
10+
}

0 commit comments

Comments
 (0)