Compare commits

...

87 Commits

Author SHA1 Message Date
Dhaverd d4e8f3b329 Исправления редизайна 2024-06-14 11:16:31 +08:00
Dhaverd 5f210dfd7c Merge pull request 'mini neon redesign' (#8) from neon-mini-redesign into master
Reviewed-on: http://gitea.dhaverd.ru/Dhaverd/New-site/pulls/8
2024-06-13 12:48:22 +03:00
Dhaverd 48c5937b6e mini neon redesign 2024-06-13 17:45:42 +08:00
Dhaverd d5f2690b54 Yandex Metrika 2024-06-06 16:13:33 +08:00
Dhaverd 42aea0d4c3 Merge pull request 'Забацал фичу с отзывами' (#7) from feature-rating into master
Reviewed-on: http://gitea.dhaverd.ru/Dhaverd/New-site/pulls/7
2024-06-03 12:47:17 +03:00
Dhaverd c6c6ddeb3e Забацал фичу с отзывами 2024-06-03 17:46:20 +08:00
Dhaverd 5c79d92fa1 Перенес фото резюме в папку с картинками + картинки для ссылок в расписании стримов есть локально 2024-06-03 13:43:06 +08:00
Dhaverd 300f027a36 Поправил размер шрифта в Резюме 2024-05-27 10:16:07 +08:00
Dhaverd 30afd5eff8 Убрал CI/CD конфиг, все равно не работает 2024-05-27 10:04:20 +08:00
p.belezov 126656d14e В расписании заредизайнил список ссылок
Some checks failed
Gitea Actions / Build and deploy (push) Has been cancelled
2024-05-27 09:59:13 +08:00
Dhaverd 6411058c45 Написал Readme по установке
Some checks failed
Gitea Actions / Build and deploy (push) Has been cancelled
2024-04-21 14:55:15 +08:00
Dhaverd 7c46d1f9c2 Написал Readme по установке
Some checks are pending
Gitea Actions / Build and deploy (push) Waiting to run
2024-04-21 14:52:58 +08:00
Dhaverd e6827b7c62 Поправил миграции
Some checks are pending
Gitea Actions / Build and deploy (push) Waiting to run
2024-04-21 14:38:06 +08:00
Dhaverd 7615ca7605 Merge pull request 'rebase-to-store' (#6) from rebase-to-store into master
Some checks are pending
Gitea Actions / Build and deploy (push) Waiting to run
Reviewed-on: http://gitea.dhaverd.ru/Dhaverd/New-site/pulls/6
2024-04-20 11:14:03 +03:00
Dhaverd 35a93c343e Перенес запросы на бэк из basya в стор pinia
Some checks failed
Gitea Actions / Build and deploy (push) Has been cancelled
2024-04-20 16:12:45 +08:00
Dhaverd e04bc5ba98 Запилил стор для расписания стримов 2024-04-20 01:08:18 +08:00
Dhaverd d128e6f90a Запилил стор для расписания стримов 2024-04-20 01:07:52 +08:00
p.belezov 315a0ab0d7 Поправил анимацию кнопки
Some checks failed
Gitea Actions / Build and deploy (push) Has been cancelled
2024-04-18 13:54:29 +08:00
p.belezov 409faab0f9 Поправил название страницы
Some checks are pending
Gitea Actions / Build and deploy (push) Waiting to run
2024-04-18 13:48:56 +08:00
p.belezov 803d7a0af6 Поправил день, убрал вывод в консоль
Some checks are pending
Gitea Actions / Build and deploy (push) Waiting to run
2024-04-18 13:47:20 +08:00
Dhaverd 7c0f2897a2 Merge pull request 'friday-page' (#5) from friday-page into master
Some checks failed
Gitea Actions / Build and deploy (push) Has been cancelled
Reviewed-on: http://gitea.dhaverd.ru/Dhaverd/New-site/pulls/5
2024-04-18 08:42:56 +03:00
p.belezov c9869ac46d Добавил страницу с Пятницей
Some checks failed
Gitea Actions / Build and deploy (push) Has been cancelled
2024-04-18 13:41:12 +08:00
p.belezov 3eb8911bf8 Поправил анимацию градиента на главной 2024-04-18 13:40:40 +08:00
Dhaverd 38eef7ef01 Подверстал расписание стримов под разные экраны
Some checks failed
Gitea Actions / Build and deploy (push) Has been cancelled
2024-04-10 11:53:43 +08:00
Dhaverd bc7509423d Подверстал резюме пода разные экраны 2024-04-10 11:37:27 +08:00
Dhaverd 55221c066c Теперь данные в BasyaMemePage подгружаются из бд + опробовал верстку под разные экраны 2024-04-10 00:37:18 +08:00
Dhaverd e6cfe9e335 Merge pull request 'Добавил страницу с фразами Басирова' (#4) from view-basya into master
Some checks failed
Gitea Actions / Build and deploy (push) Has been cancelled
Reviewed-on: http://gitea.dhaverd.ru/Dhaverd/New-site/pulls/4
2024-04-05 08:41:48 +03:00
p.belezov 7d4ab28285 Добавил страницу с фразами Басирова
Some checks failed
Gitea Actions / Build and deploy (push) Has been cancelled
2024-04-05 13:38:18 +08:00
Dhaverd be63dccac2 Обновить resources/views/resume/About/Skills.vue
Some checks failed
Gitea Actions / Build and deploy (push) Has been cancelled
2024-03-30 21:06:15 +03:00
Dhaverd bdb9abaca5 Починил страничку с резюме
Some checks failed
Gitea Actions / Build and deploy (push) Failing after 1m4s
2024-03-31 01:55:02 +08:00
Dhaverd 09ab753ad8 Merge pull request 'Добавил и настроил админку Voyager' (#3) from feature-admin into master
Some checks failed
Gitea Actions / Build and deploy (push) Failing after 36s
Reviewed-on: http://gitea.dhaverd.ru/Dhaverd/New-site/pulls/3
2024-03-21 19:54:30 +03:00
Dhaverd aa9e28fd06 Добавил и настроил админку Voyager
Some checks failed
Gitea Actions / Build and deploy (push) Failing after 44s
2024-03-22 00:53:29 +08:00
Dhaverd 788027b9a3 Обновить .gitea/workflows/gitea-actions.yml
All checks were successful
Gitea Actions / Build and deploy (push) Successful in 6m0s
2024-03-19 04:59:41 +03:00
Dhaverd 06330e9d3c Обновить .gitea/workflows/gitea-actions.yml
Some checks failed
Gitea Actions / Build and deploy (push) Failing after 0s
2024-03-19 04:59:00 +03:00
Dhaverd a056815a69 Обновить .gitea/workflows/gitea-actions.yml 2024-03-19 04:58:19 +03:00
Dhaverd 876f5c5a04 Обновить .gitea/workflows/gitea-actions.yml
All checks were successful
Gitea Actions / Build and deploy (push) Successful in 6m3s
2024-03-18 19:44:17 +03:00
Dhaverd 2c3dc0d4f1 Обновить .gitea/workflows/gitea-actions.yml
All checks were successful
Gitea Actions / Build and deploy (push) Successful in 6m57s
2024-03-18 19:36:15 +03:00
Dhaverd 6ab6c63d12 Обновить .gitea/workflows/gitea-actions.yml
Some checks failed
Gitea Actions / Build and deploy (push) Has been cancelled
2024-03-18 19:32:00 +03:00
Dhaverd 554a13937e Обновить .gitea/workflows/gitea-actions.yml
Some checks failed
Gitea Actions / Build and deploy (push) Failing after 35s
2024-03-18 19:25:55 +03:00
Dhaverd fd1f1b4e42 Обновить .gitea/workflows/gitea-actions.yml
Some checks failed
Gitea Actions / Build and deploy (push) Failing after 26s
2024-03-18 19:16:24 +03:00
Dhaverd 297efe6192 Обновить .gitea/workflows/gitea-actions.yml
Some checks failed
Gitea Actions / Build and deploy (push) Failing after 3s
2024-03-18 19:14:52 +03:00
Dhaverd def60a3f46 Обновить .gitea/workflows/gitea-actions.yml
Some checks failed
Gitea Actions / Build and deploy (push) Failing after 40s
2024-03-18 19:11:50 +03:00
Dhaverd d11007189a Обновить .gitea/workflows/gitea-actions.yml 2024-03-18 19:11:33 +03:00
Dhaverd 6fbd16030f Обновить .gitea/workflows/gitea-actions.yml 2024-03-18 19:10:21 +03:00
Dhaverd 23f215c928 Обновить .gitea/workflows/gitea-actions.yml
Some checks failed
Gitea Actions / Build and deploy (push) Failing after 3s
2024-03-13 11:53:47 +03:00
Dhaverd 25e5d6495f Обновить .gitea/workflows/gitea-actions.yml
Some checks failed
Gitea Actions / Build and deploy (push) Failing after 8s
2024-03-13 11:46:27 +03:00
Dhaverd 4ab7d723ca Обновить .gitea/workflows/gitea-actions.yml
Some checks failed
Gitea Actions / Build and deploy (push) Failing after 3s
2024-03-13 11:45:44 +03:00
Dhaverd 1442012444 Обновить .gitea/workflows/gitea-actions.yml
Some checks failed
Gitea Actions / Build and deploy (push) Failing after 3s
2024-03-13 11:44:48 +03:00
Dhaverd 542e8dcb86 Обновить .gitea/workflows/gitea-actions.yml
Some checks failed
Gitea Actions / Build and deploy (push) Failing after 4s
2024-03-13 11:44:19 +03:00
Dhaverd f67cea49d0 Обновить .gitea/workflows/gitea-actions.yml
Some checks failed
Gitea Actions / Build and deploy (push) Failing after 17s
2024-03-13 11:40:24 +03:00
Dhaverd c1ad77ea39 Обновить .gitea/workflows/gitea-actions.yml
Some checks failed
Gitea Actions / Build and deploy (push) Failing after 4s
2024-03-13 11:32:53 +03:00
Dhaverd 60c8712a31 Обновить .gitea/workflows/gitea-actions.yml
Some checks failed
Gitea Actions / Build and deploy (push) Failing after 3s
2024-03-13 11:32:02 +03:00
Dhaverd 5f2dd17dbb Обновить .gitea/workflows/gitea-actions.yml
Some checks failed
Gitea Actions / Build and deploy (push) Failing after 3s
2024-03-13 11:30:53 +03:00
Dhaverd c3a48c8da8 Обновить .gitea/workflows/gitea-actions.yml
Some checks failed
Gitea Actions / Build and deploy (push) Failing after 3s
2024-03-13 11:30:25 +03:00
Dhaverd 480dbba1f2 Обновить .gitea/workflows/gitea-actions.yml
Some checks failed
Gitea Actions / Build and deploy (push) Failing after 3s
2024-03-13 11:28:59 +03:00
Dhaverd 6d83fe2de4 Обновить .gitea/workflows/gitea-actions.yml
Some checks failed
Gitea Actions / Build and deploy (push) Failing after 4s
2024-03-13 11:26:13 +03:00
Dhaverd dfef3e7342 Обновить .gitea/workflows/gitea-actions.yml
Some checks failed
Gitea Actions / Build and deploy (push) Failing after 4s
2024-03-13 11:00:06 +03:00
Dhaverd 33fd8f4edd Обновить .gitea/workflows/gitea-actions.yml
Some checks failed
Gitea Actions / Build and deploy (push) Failing after 2s
2024-03-13 10:56:46 +03:00
Dhaverd 8b6099518b Обновить .gitea/workflows/gitea-actions.yml
Some checks failed
Gitea Actions / Build and deploy (push) Failing after 4s
2024-03-13 10:55:03 +03:00
Dhaverd 6271c0ca09 Обновить .gitea/workflows/gitea-actions.yml
Some checks failed
Gitea Actions / Build and deploy (push) Failing after 3s
2024-03-13 10:53:16 +03:00
Dhaverd 0b5dee6275 Обновить .gitea/workflows/gitea-actions.yml
Some checks failed
Gitea Actions / Build and deploy (push) Failing after 3s
2024-03-13 10:52:36 +03:00
Dhaverd f07fe574d9 Обновить .gitea/workflows/gitea-actions.yml
Some checks failed
Gitea Actions / Build and deploy (push) Failing after 4s
2024-03-13 10:50:24 +03:00
Dhaverd 764ffcebe9 Обновить .gitea/workflows/gitea-actions.yml
Some checks failed
Gitea Actions / Build and deploy (push) Failing after 9s
2024-03-13 10:47:22 +03:00
Dhaverd b94dfa1742 Обновить .gitea/workflows/gitea-actions.yml
Some checks failed
Gitea Actions / Build and deploy (push) Failing after 5s
2024-03-13 10:41:20 +03:00
p.belezov 68dfc5d834 Забыл раннер сменить
Some checks failed
Gitea Actions / Build and deploy (push) Failing after 1m4s
2024-03-13 15:38:14 +08:00
p.belezov 4878285cde Шел второй день страданий
Some checks are pending
Gitea Actions / Build and deploy (push) Waiting to run
2024-03-13 15:37:01 +08:00
p.belezov c39510d8c6 Непоняв
Some checks failed
Gitea Actions / Explore-Gitea-Actions (push) Failing after 1s
2024-03-12 17:48:27 +08:00
p.belezov 5814ad96ad ТюТю
Some checks failed
Gitea Actions / Explore-Gitea-Actions (push) Failing after 1s
2024-03-12 17:45:39 +08:00
p.belezov 314f49f0c9 Санитары уже едут
Some checks failed
Gitea Actions / Explore-Gitea-Actions (push) Failing after 1s
2024-03-12 17:42:45 +08:00
p.belezov 842ce12aca Меня скоро в дурку сдадут
Some checks failed
Gitea Actions / Explore-Gitea-Actions (push) Failing after 39s
2024-03-12 17:15:30 +08:00
p.belezov b5650a92b5 Теперь npm мозга трахает
Some checks failed
Gitea Actions / Explore-Gitea-Actions (push) Has been cancelled
2024-03-12 17:04:22 +08:00
p.belezov b94609f99d Теперь npm мозга трахает
Some checks failed
Gitea Actions / Explore-Gitea-Actions (push) Failing after 2s
2024-03-12 17:02:45 +08:00
p.belezov 3c08e0ea8a Шла 10000 попытка
Some checks failed
Gitea Actions / Explore-Gitea-Actions (push) Failing after 40s
2024-03-12 16:55:11 +08:00
p.belezov 413fb0571f Теперь опять от рута, но игнорим предупреждения композера
Some checks failed
Gitea Actions / Explore-Gitea-Actions (push) Has been cancelled
2024-03-12 16:48:18 +08:00
p.belezov ecf684df60 Теперь оно ранится не от рута
Some checks failed
Gitea Actions / Explore-Gitea-Actions (push) Failing after 6s
2024-03-12 16:45:33 +08:00
p.belezov bcd88ef1b3 Пытаемся починить компосер
Some checks are pending
Gitea Actions / Explore-Gitea-Actions (push) Waiting to run
2024-03-12 16:08:47 +08:00
p.belezov 32c7b4a566 ЫЫЫЫЫЫЫЫ
Some checks failed
Gitea Actions / Explore-Gitea-Actions (push) Has been cancelled
2024-03-12 16:05:35 +08:00
p.belezov c668294a0c Вот это я умный конечно, убил саму gitea в скрипте
Some checks failed
Gitea Actions / Explore-Gitea-Actions (push) Has been cancelled
2024-03-12 16:01:03 +08:00
p.belezov 085d2ce227 АЫАЫАЫАЫААЫАЫАЫА
Some checks are pending
Gitea Actions / Explore-Gitea-Actions (push) Waiting to run
2024-03-12 15:58:13 +08:00
p.belezov c23ad28c4c ЫЫЫЫЫЫЫЫЫ
Some checks are pending
Gitea Actions / Explore-Gitea-Actions (push) Waiting to run
2024-03-12 15:57:07 +08:00
p.belezov 576028fa67 AAAAAAAAAAAA
Some checks failed
Gitea Actions / Explore-Gitea-Actions (push) Has been cancelled
2024-03-12 15:44:38 +08:00
p.belezov e30d087cdd AAAAAAAAAAAAA
Some checks failed
Gitea Actions / Explore-Gitea-Actions (push) Failing after 2s
2024-03-12 15:43:01 +08:00
p.belezov 8fe58dd8fa Поправил содержимое конфига
Some checks failed
Gitea Actions / Explore-Gitea-Actions (push) Failing after 1s
2024-03-12 15:39:01 +08:00
p.belezov 3ca664624f Или нет
All checks were successful
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 27s
2024-03-12 15:24:04 +08:00
p.belezov 94d3dbb104 Поправил название раннера
Some checks are pending
Gitea Actions Demo / Explore-Gitea-Actions (push) Waiting to run
2024-03-12 15:18:52 +08:00
p.belezov d644ef04e7 Теперь должно быть правильно
Some checks are pending
Gitea Actions Demo / Explore-Gitea-Actions (push) Waiting to run
2024-03-12 15:17:09 +08:00
p.belezov 224ab282fc Настраиваем CI/CD 2024-03-12 15:12:44 +08:00
65 changed files with 3008 additions and 160 deletions

View File

@ -1,66 +1,44 @@
<p align="center"><a href="https://laravel.com" target="_blank"><img src="https://raw.githubusercontent.com/laravel/art/master/logo-lockup/5%20SVG/2%20CMYK/1%20Full%20Color/laravel-logolockup-cmyk-red.svg" width="400" alt="Laravel Logo"></a></p>
# Установка
<p align="center">
<a href="https://github.com/laravel/framework/actions"><img src="https://github.com/laravel/framework/workflows/tests/badge.svg" alt="Build Status"></a>
<a href="https://packagist.org/packages/laravel/framework"><img src="https://img.shields.io/packagist/dt/laravel/framework" alt="Total Downloads"></a>
<a href="https://packagist.org/packages/laravel/framework"><img src="https://img.shields.io/packagist/v/laravel/framework" alt="Latest Stable Version"></a>
<a href="https://packagist.org/packages/laravel/framework"><img src="https://img.shields.io/packagist/l/laravel/framework" alt="License"></a>
</p>
## 1. Клонируем проект с гита
## About Laravel
```
git clone http://gitea.dhaverd.ru:3000/Dhaverd/New-site.git
```
Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as:
## 2. Устанавливаем зависимости
```
npm i
composer install
```
- [Simple, fast routing engine](https://laravel.com/docs/routing).
- [Powerful dependency injection container](https://laravel.com/docs/container).
- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage.
- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent).
- Database agnostic [schema migrations](https://laravel.com/docs/migrations).
- [Robust background job processing](https://laravel.com/docs/queues).
- [Real-time event broadcasting](https://laravel.com/docs/broadcasting).
## 3. Мигрируем бд
```
php artisan migrate
```
Laravel is accessible, powerful, and provides tools required for large, robust applications.
## 4. Устанавливаем Voyager
```
php artisan voyager:install
php artisan voyager:admin your@email.com --create
php artisan vendor:publish --provider="TCG\Voyager\VoyagerServiceProvider"
php artisan vendor:publish --provider="Intervention\Image\ImageServiceProviderLaravelRecent"
php artisan migrate
```
## Learning Laravel
## 5. Пишем .env по примеру
Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework.
Главное это настроить подключение к БД:
```
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=
```
You may also try the [Laravel Bootcamp](https://bootcamp.laravel.com), where you will be guided through building a modern Laravel application from scratch.
If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 2000 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library.
## Laravel Sponsors
We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the [Laravel Partners program](https://partners.laravel.com).
### Premium Partners
- **[Vehikl](https://vehikl.com/)**
- **[Tighten Co.](https://tighten.co)**
- **[WebReinvent](https://webreinvent.com/)**
- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)**
- **[64 Robots](https://64robots.com)**
- **[Curotec](https://www.curotec.com/services/technologies/laravel/)**
- **[Cyber-Duck](https://cyber-duck.co.uk)**
- **[DevSquad](https://devsquad.com/hire-laravel-developers)**
- **[Jump24](https://jump24.co.uk)**
- **[Redberry](https://redberry.international/laravel/)**
- **[Active Logic](https://activelogic.com)**
- **[byte5](https://byte5.de)**
- **[OP.GG](https://op.gg)**
## Contributing
Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions).
## Code of Conduct
In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct).
## Security Vulnerabilities
If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed.
## License
The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT).
## 6. Билдим фронт
```
npm run build
```

View File

@ -0,0 +1,12 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
use App\Models\BasyaPhrase;
class BasyaPhrasesController extends Controller
{
public function index(){
return DB::table('basya_phrases')->get();
}
}

View File

@ -0,0 +1,10 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class GamesController extends Controller
{
//
}

View File

@ -0,0 +1,19 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use App\Models\Rating;
class RatingController extends Controller
{
public function index(Request $request)
{
$rating = new Rating;
$rating->rate = $request->rate;
$rating->comment = $request->comment;
$rating->save();
return ['code' => $rating->save() ? 200 : 500];
}
}

View File

@ -12,8 +12,8 @@ class SchedulesController extends Controller
{
public function index(){
$finalSchedules = DB::table('schedules')
->join('weekdays', "schedules.weekday_id", "=", "weekdays.weekday_id")
->join("games", "schedules.game_id", "=", "games.game_id")
->join('weekdays', "schedules.weekday_id", "=", "weekdays.id")
->join("games", "schedules.game_id", "=", "games.id")
->select("weekdays.weekday_name", "weekdays.current_date", "games.name", "schedules.stream_time")
->get();
return $finalSchedules;
@ -21,8 +21,8 @@ class SchedulesController extends Controller
public function mmDate(){
$minmaxDates = DB::table("weekdays")
->select("weekdays.current_date")->where("weekday_id", "=", 1)
->orWhere("weekday_id", "=", 7)
->select("weekdays.current_date")->where("weekdays.id", "=", 1)
->orWhere("weekdays.id", "=", 7)
->get();
return $minmaxDates;
}

View File

@ -0,0 +1,11 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class BasyaPhrase extends Model
{
use HasFactory;
}

19
app/Models/Rating.php Normal file
View File

@ -0,0 +1,19 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Http\Request;
class Rating extends Model
{
use HasFactory;
/**
* The table associated with the model.
*
* @var string
*/
protected $table = 'rating';
}

View File

@ -8,7 +8,7 @@ use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Sanctum\HasApiTokens;
class User extends Authenticatable
class User extends \TCG\Voyager\Models\User
{
use HasApiTokens, HasFactory, Notifiable;

View File

@ -9,7 +9,8 @@
"guzzlehttp/guzzle": "^7.2",
"laravel/framework": "^10.10",
"laravel/sanctum": "^3.3",
"laravel/tinker": "^2.8"
"laravel/tinker": "^2.8",
"tcg/voyager": "^1.7"
},
"require-dev": {
"fakerphp/faker": "^1.9.1",

692
composer.lock generated
View File

@ -4,8 +4,76 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "9c491b8531eec05ba41a11d9276a5749",
"content-hash": "fb6ec7f789fc4935dd4bcecfe448f15d",
"packages": [
{
"name": "arrilot/laravel-widgets",
"version": "3.14.0",
"source": {
"type": "git",
"url": "https://github.com/arrilot/laravel-widgets.git",
"reference": "99419f5b6190825733c731bd3b44f49fdc56a6ad"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/arrilot/laravel-widgets/zipball/99419f5b6190825733c731bd3b44f49fdc56a6ad",
"reference": "99419f5b6190825733c731bd3b44f49fdc56a6ad",
"shasum": ""
},
"require": {
"illuminate/cache": ">=9",
"illuminate/console": ">=9",
"illuminate/container": ">=9",
"illuminate/contracts": ">=9",
"illuminate/routing": ">=9",
"illuminate/support": ">=9",
"illuminate/view": ">=9",
"php": ">=7.4"
},
"require-dev": {
"nunomaduro/larastan": "^2.6",
"phpunit/phpunit": "~8.0"
},
"type": "library",
"extra": {
"laravel": {
"providers": [
"Arrilot\\Widgets\\ServiceProvider"
],
"aliases": {
"Widget": "Arrilot\\Widgets\\Facade",
"AsyncWidget": "Arrilot\\Widgets\\AsyncFacade"
}
}
},
"autoload": {
"psr-4": {
"Arrilot\\Widgets\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nekrasov Ilya",
"email": "nekrasov.ilya90@gmail.com"
}
],
"description": "A powerful alternative to view composers. Asynchronous widgets, reloadable widgets, console generator, caching - everything you can think of.",
"homepage": "https://github.com/arrilot/laravel-widgets",
"keywords": [
"ajax",
"laravel",
"widgets"
],
"support": {
"issues": "https://github.com/arrilot/laravel-widgets/issues",
"source": "https://github.com/arrilot/laravel-widgets/tree/3.14.0"
},
"time": "2023-11-19T18:27:27+00:00"
},
{
"name": "brick/math",
"version": "0.11.0",
@ -205,6 +273,350 @@
},
"time": "2022-10-27T11:44:00+00:00"
},
{
"name": "doctrine/cache",
"version": "2.2.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/cache.git",
"reference": "1ca8f21980e770095a31456042471a57bc4c68fb"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/cache/zipball/1ca8f21980e770095a31456042471a57bc4c68fb",
"reference": "1ca8f21980e770095a31456042471a57bc4c68fb",
"shasum": ""
},
"require": {
"php": "~7.1 || ^8.0"
},
"conflict": {
"doctrine/common": ">2.2,<2.4"
},
"require-dev": {
"cache/integration-tests": "dev-master",
"doctrine/coding-standard": "^9",
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
"psr/cache": "^1.0 || ^2.0 || ^3.0",
"symfony/cache": "^4.4 || ^5.4 || ^6",
"symfony/var-exporter": "^4.4 || ^5.4 || ^6"
},
"type": "library",
"autoload": {
"psr-4": {
"Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Guilherme Blanco",
"email": "guilhermeblanco@gmail.com"
},
{
"name": "Roman Borschel",
"email": "roman@code-factory.org"
},
{
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Jonathan Wage",
"email": "jonwage@gmail.com"
},
{
"name": "Johannes Schmitt",
"email": "schmittjoh@gmail.com"
}
],
"description": "PHP Doctrine Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.",
"homepage": "https://www.doctrine-project.org/projects/cache.html",
"keywords": [
"abstraction",
"apcu",
"cache",
"caching",
"couchdb",
"memcached",
"php",
"redis",
"xcache"
],
"support": {
"issues": "https://github.com/doctrine/cache/issues",
"source": "https://github.com/doctrine/cache/tree/2.2.0"
},
"funding": [
{
"url": "https://www.doctrine-project.org/sponsorship.html",
"type": "custom"
},
{
"url": "https://www.patreon.com/phpdoctrine",
"type": "patreon"
},
{
"url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcache",
"type": "tidelift"
}
],
"time": "2022-05-20T20:07:39+00:00"
},
{
"name": "doctrine/dbal",
"version": "3.8.3",
"source": {
"type": "git",
"url": "https://github.com/doctrine/dbal.git",
"reference": "db922ba9436b7b18a23d1653a0b41ff2369ca41c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/dbal/zipball/db922ba9436b7b18a23d1653a0b41ff2369ca41c",
"reference": "db922ba9436b7b18a23d1653a0b41ff2369ca41c",
"shasum": ""
},
"require": {
"composer-runtime-api": "^2",
"doctrine/cache": "^1.11|^2.0",
"doctrine/deprecations": "^0.5.3|^1",
"doctrine/event-manager": "^1|^2",
"php": "^7.4 || ^8.0",
"psr/cache": "^1|^2|^3",
"psr/log": "^1|^2|^3"
},
"require-dev": {
"doctrine/coding-standard": "12.0.0",
"fig/log-test": "^1",
"jetbrains/phpstorm-stubs": "2023.1",
"phpstan/phpstan": "1.10.58",
"phpstan/phpstan-strict-rules": "^1.5",
"phpunit/phpunit": "9.6.16",
"psalm/plugin-phpunit": "0.18.4",
"slevomat/coding-standard": "8.13.1",
"squizlabs/php_codesniffer": "3.9.0",
"symfony/cache": "^5.4|^6.0|^7.0",
"symfony/console": "^4.4|^5.4|^6.0|^7.0",
"vimeo/psalm": "4.30.0"
},
"suggest": {
"symfony/console": "For helpful console commands such as SQL execution and import of files."
},
"bin": [
"bin/doctrine-dbal"
],
"type": "library",
"autoload": {
"psr-4": {
"Doctrine\\DBAL\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Guilherme Blanco",
"email": "guilhermeblanco@gmail.com"
},
{
"name": "Roman Borschel",
"email": "roman@code-factory.org"
},
{
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Jonathan Wage",
"email": "jonwage@gmail.com"
}
],
"description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.",
"homepage": "https://www.doctrine-project.org/projects/dbal.html",
"keywords": [
"abstraction",
"database",
"db2",
"dbal",
"mariadb",
"mssql",
"mysql",
"oci8",
"oracle",
"pdo",
"pgsql",
"postgresql",
"queryobject",
"sasql",
"sql",
"sqlite",
"sqlserver",
"sqlsrv"
],
"support": {
"issues": "https://github.com/doctrine/dbal/issues",
"source": "https://github.com/doctrine/dbal/tree/3.8.3"
},
"funding": [
{
"url": "https://www.doctrine-project.org/sponsorship.html",
"type": "custom"
},
{
"url": "https://www.patreon.com/phpdoctrine",
"type": "patreon"
},
{
"url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdbal",
"type": "tidelift"
}
],
"time": "2024-03-03T15:55:06+00:00"
},
{
"name": "doctrine/deprecations",
"version": "1.1.3",
"source": {
"type": "git",
"url": "https://github.com/doctrine/deprecations.git",
"reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/deprecations/zipball/dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab",
"reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab",
"shasum": ""
},
"require": {
"php": "^7.1 || ^8.0"
},
"require-dev": {
"doctrine/coding-standard": "^9",
"phpstan/phpstan": "1.4.10 || 1.10.15",
"phpstan/phpstan-phpunit": "^1.0",
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
"psalm/plugin-phpunit": "0.18.4",
"psr/log": "^1 || ^2 || ^3",
"vimeo/psalm": "4.30.0 || 5.12.0"
},
"suggest": {
"psr/log": "Allows logging deprecations via PSR-3 logger implementation"
},
"type": "library",
"autoload": {
"psr-4": {
"Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.",
"homepage": "https://www.doctrine-project.org/",
"support": {
"issues": "https://github.com/doctrine/deprecations/issues",
"source": "https://github.com/doctrine/deprecations/tree/1.1.3"
},
"time": "2024-01-30T19:34:25+00:00"
},
{
"name": "doctrine/event-manager",
"version": "2.0.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/event-manager.git",
"reference": "750671534e0241a7c50ea5b43f67e23eb5c96f32"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/event-manager/zipball/750671534e0241a7c50ea5b43f67e23eb5c96f32",
"reference": "750671534e0241a7c50ea5b43f67e23eb5c96f32",
"shasum": ""
},
"require": {
"php": "^8.1"
},
"conflict": {
"doctrine/common": "<2.9"
},
"require-dev": {
"doctrine/coding-standard": "^10",
"phpstan/phpstan": "^1.8.8",
"phpunit/phpunit": "^9.5",
"vimeo/psalm": "^4.28"
},
"type": "library",
"autoload": {
"psr-4": {
"Doctrine\\Common\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Guilherme Blanco",
"email": "guilhermeblanco@gmail.com"
},
{
"name": "Roman Borschel",
"email": "roman@code-factory.org"
},
{
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Jonathan Wage",
"email": "jonwage@gmail.com"
},
{
"name": "Johannes Schmitt",
"email": "schmittjoh@gmail.com"
},
{
"name": "Marco Pivetta",
"email": "ocramius@gmail.com"
}
],
"description": "The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.",
"homepage": "https://www.doctrine-project.org/projects/event-manager.html",
"keywords": [
"event",
"event dispatcher",
"event manager",
"event system",
"events"
],
"support": {
"issues": "https://github.com/doctrine/event-manager/issues",
"source": "https://github.com/doctrine/event-manager/tree/2.0.0"
},
"funding": [
{
"url": "https://www.doctrine-project.org/sponsorship.html",
"type": "custom"
},
{
"url": "https://www.patreon.com/phpdoctrine",
"type": "patreon"
},
{
"url": "https://tidelift.com/funding/github/packagist/doctrine%2Fevent-manager",
"type": "tidelift"
}
],
"time": "2022-10-12T20:59:15+00:00"
},
{
"name": "doctrine/inflector",
"version": "2.0.9",
@ -1045,6 +1457,90 @@
],
"time": "2023-12-03T19:50:20+00:00"
},
{
"name": "intervention/image",
"version": "2.7.2",
"source": {
"type": "git",
"url": "https://github.com/Intervention/image.git",
"reference": "04be355f8d6734c826045d02a1079ad658322dad"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Intervention/image/zipball/04be355f8d6734c826045d02a1079ad658322dad",
"reference": "04be355f8d6734c826045d02a1079ad658322dad",
"shasum": ""
},
"require": {
"ext-fileinfo": "*",
"guzzlehttp/psr7": "~1.1 || ^2.0",
"php": ">=5.4.0"
},
"require-dev": {
"mockery/mockery": "~0.9.2",
"phpunit/phpunit": "^4.8 || ^5.7 || ^7.5.15"
},
"suggest": {
"ext-gd": "to use GD library based image processing.",
"ext-imagick": "to use Imagick based image processing.",
"intervention/imagecache": "Caching extension for the Intervention Image library"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.4-dev"
},
"laravel": {
"providers": [
"Intervention\\Image\\ImageServiceProvider"
],
"aliases": {
"Image": "Intervention\\Image\\Facades\\Image"
}
}
},
"autoload": {
"psr-4": {
"Intervention\\Image\\": "src/Intervention/Image"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Oliver Vogel",
"email": "oliver@intervention.io",
"homepage": "https://intervention.io/"
}
],
"description": "Image handling and manipulation library with support for Laravel integration",
"homepage": "http://image.intervention.io/",
"keywords": [
"gd",
"image",
"imagick",
"laravel",
"thumbnail",
"watermark"
],
"support": {
"issues": "https://github.com/Intervention/image/issues",
"source": "https://github.com/Intervention/image/tree/2.7.2"
},
"funding": [
{
"url": "https://paypal.me/interventionio",
"type": "custom"
},
{
"url": "https://github.com/Intervention",
"type": "github"
}
],
"time": "2022-05-21T17:30:32+00:00"
},
{
"name": "laravel/framework",
"version": "v10.41.0",
@ -1499,6 +1995,68 @@
},
"time": "2024-01-04T16:10:04+00:00"
},
{
"name": "laravel/ui",
"version": "v4.5.0",
"source": {
"type": "git",
"url": "https://github.com/laravel/ui.git",
"reference": "da3811f409297d13feccd5858ce748e7474b3d11"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laravel/ui/zipball/da3811f409297d13feccd5858ce748e7474b3d11",
"reference": "da3811f409297d13feccd5858ce748e7474b3d11",
"shasum": ""
},
"require": {
"illuminate/console": "^9.21|^10.0|^11.0",
"illuminate/filesystem": "^9.21|^10.0|^11.0",
"illuminate/support": "^9.21|^10.0|^11.0",
"illuminate/validation": "^9.21|^10.0|^11.0",
"php": "^8.0"
},
"require-dev": {
"orchestra/testbench": "^7.35|^8.15|^9.0",
"phpunit/phpunit": "^9.3|^10.4|^11.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "4.x-dev"
},
"laravel": {
"providers": [
"Laravel\\Ui\\UiServiceProvider"
]
}
},
"autoload": {
"psr-4": {
"Laravel\\Ui\\": "src/",
"Illuminate\\Foundation\\Auth\\": "auth-backend/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Taylor Otwell",
"email": "taylor@laravel.com"
}
],
"description": "Laravel UI utilities and presets.",
"keywords": [
"laravel",
"ui"
],
"support": {
"source": "https://github.com/laravel/ui/tree/v4.5.0"
},
"time": "2024-03-04T13:58:27+00:00"
},
{
"name": "league/commonmark",
"version": "2.4.1",
@ -2468,6 +3026,55 @@
],
"time": "2023-11-12T21:59:55+00:00"
},
{
"name": "psr/cache",
"version": "3.0.0",
"source": {
"type": "git",
"url": "https://github.com/php-fig/cache.git",
"reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf",
"reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf",
"shasum": ""
},
"require": {
"php": ">=8.0.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Psr\\Cache\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "PHP-FIG",
"homepage": "https://www.php-fig.org/"
}
],
"description": "Common interface for caching libraries",
"keywords": [
"cache",
"psr",
"psr-6"
],
"support": {
"source": "https://github.com/php-fig/cache/tree/3.0.0"
},
"time": "2021-02-03T23:26:27+00:00"
},
{
"name": "psr/clock",
"version": "1.0.0",
@ -5441,6 +6048,89 @@
],
"time": "2023-12-28T19:16:56+00:00"
},
{
"name": "tcg/voyager",
"version": "v1.7",
"source": {
"type": "git",
"url": "https://github.com/thedevdojo/voyager.git",
"reference": "19286d193d7f9095d088b743cdd5e7d9649b0855"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/thedevdojo/voyager/zipball/19286d193d7f9095d088b743cdd5e7d9649b0855",
"reference": "19286d193d7f9095d088b743cdd5e7d9649b0855",
"shasum": ""
},
"require": {
"arrilot/laravel-widgets": "^3.7",
"doctrine/dbal": "^3.1|^3.5",
"ext-json": "*",
"illuminate/support": "~8.0|~9.0|~10.0",
"intervention/image": "^2.7",
"laravel/ui": ">=1.0",
"league/flysystem": "~1.1|~2.0|~3.0",
"php": "^7.3|^7.4|^8.0|^8.1|^8.2"
},
"require-dev": {
"laravel/browser-kit-testing": ">=6.1.0",
"laravel/framework": "~8.0|~9.0|~10.0",
"orchestra/testbench": ">=6.0",
"orchestra/testbench-browser-kit": ">=4.0",
"phpunit/phpcov": ">=6.0",
"phpunit/phpunit": ">=8.0"
},
"type": "library",
"extra": {
"laravel": {
"providers": [
"TCG\\Voyager\\VoyagerServiceProvider",
"TCG\\Voyager\\Providers\\VoyagerDummyServiceProvider"
]
}
},
"autoload": {
"psr-4": {
"TCG\\Voyager\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Tony Lea",
"email": "tony.lea@thecontrolgroup.com"
}
],
"description": "A Laravel Admin Package for The Control Group to make your life easier and steer your project in the right direction",
"homepage": "https://voyager.devdojo.com/",
"keywords": [
"admin",
"laravel",
"panel"
],
"support": {
"issues": "https://github.com/the-control-group/voyager/issues",
"source": "https://github.com/the-control-group/voyager"
},
"funding": [
{
"url": "https://github.com/emptynick",
"type": "github"
},
{
"url": "https://github.com/fletch3555",
"type": "github"
},
{
"url": "https://github.com/tnylea",
"type": "github"
}
],
"time": "2023-11-10T16:29:12+00:00"
},
{
"name": "tijsverkoyen/css-to-inline-styles",
"version": "v2.2.7",

20
config/image.php Normal file
View File

@ -0,0 +1,20 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Image Driver
|--------------------------------------------------------------------------
|
| Intervention Image supports "GD Library" and "Imagick" to process images
| internally. You may choose one of them according to your PHP
| configuration. By default PHP's "GD Library" implementation is used.
|
| Supported: "gd", "imagick"
|
*/
'driver' => 'gd'
];

258
config/voyager.php Normal file
View File

@ -0,0 +1,258 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| User config
|--------------------------------------------------------------------------
|
| Here you can specify voyager user configs
|
*/
'user' => [
'add_default_role_on_register' => true,
'default_role' => 'user',
'default_avatar' => 'users/default.png',
'redirect' => '/admin',
],
/*
|--------------------------------------------------------------------------
| Controllers config
|--------------------------------------------------------------------------
|
| Here you can specify voyager controller settings
|
*/
'controllers' => [
'namespace' => 'TCG\\Voyager\\Http\\Controllers',
],
/*
|--------------------------------------------------------------------------
| Models config
|--------------------------------------------------------------------------
|
| Here you can specify default model namespace when creating BREAD.
| Must include trailing backslashes. If not defined the default application
| namespace will be used.
|
*/
'models' => [
// 'namespace' => 'App\\Models\\',
],
/*
|--------------------------------------------------------------------------
| Storage Config
|--------------------------------------------------------------------------
|
| Here you can specify attributes related to your application file system
|
*/
'storage' => [
'disk' => 'public',
],
/*
|--------------------------------------------------------------------------
| Media Manager
|--------------------------------------------------------------------------
|
| Here you can specify if media manager can show hidden files like(.gitignore)
|
*/
'hidden_files' => false,
/*
|--------------------------------------------------------------------------
| Database Config
|--------------------------------------------------------------------------
|
| Here you can specify voyager database settings
|
*/
'database' => [
'tables' => [
'hidden' => ['migrations', 'data_rows', 'data_types', 'menu_items', 'password_resets', 'permission_role', 'personal_access_tokens', 'settings'],
],
'autoload_migrations' => true,
],
/*
|--------------------------------------------------------------------------
| Multilingual configuration
|--------------------------------------------------------------------------
|
| Here you can specify if you want Voyager to ship with support for
| multilingual and what locales are enabled.
|
*/
'multilingual' => [
/*
* Set whether or not the multilingual is supported by the BREAD input.
*/
'enabled' => false,
/*
* Select default language
*/
'default' => 'en',
/*
* Select languages that are supported.
*/
'locales' => [
'en',
//'pt',
],
],
/*
|--------------------------------------------------------------------------
| Dashboard config
|--------------------------------------------------------------------------
|
| Here you can modify some aspects of your dashboard
|
*/
'dashboard' => [
// Add custom list items to navbar's dropdown
'navbar_items' => [
'voyager::generic.profile' => [
'route' => 'voyager.profile',
'classes' => 'class-full-of-rum',
'icon_class' => 'voyager-person',
],
'voyager::generic.home' => [
'route' => '/',
'icon_class' => 'voyager-home',
'target_blank' => true,
],
'voyager::generic.logout' => [
'route' => 'voyager.logout',
'icon_class' => 'voyager-power',
],
],
'widgets' => [
],
],
/*
|--------------------------------------------------------------------------
| Automatic Procedures
|--------------------------------------------------------------------------
|
| When a change happens on Voyager, we can automate some routines.
|
*/
'bread' => [
// When a BREAD is added, create the Menu item using the BREAD properties.
'add_menu_item' => true,
// which menu add item to
'default_menu' => 'admin',
// When a BREAD is added, create the related Permission.
'add_permission' => true,
// which role add premissions to
'default_role' => 'admin',
],
/*
|--------------------------------------------------------------------------
| UI Generic Config
|--------------------------------------------------------------------------
|
| Here you change some of the Voyager UI settings.
|
*/
'primary_color' => '#22A7F0',
'show_dev_tips' => true, // Show development tip "How To Use:" in Menu and Settings
// Here you can specify additional assets you would like to be included in the master.blade
'additional_css' => [
//'css/custom.css',
],
'additional_js' => [
//'js/custom.js',
],
'googlemaps' => [
'key' => env('GOOGLE_MAPS_KEY', ''),
'center' => [
'lat' => env('GOOGLE_MAPS_DEFAULT_CENTER_LAT', '32.715738'),
'lng' => env('GOOGLE_MAPS_DEFAULT_CENTER_LNG', '-117.161084'),
],
'zoom' => env('GOOGLE_MAPS_DEFAULT_ZOOM', 11),
],
/*
|--------------------------------------------------------------------------
| Model specific settings
|--------------------------------------------------------------------------
|
| Here you change some model specific settings
|
*/
'settings' => [
// Enables Laravel cache method for
// storing cache values between requests
'cache' => false,
],
// Activate compass when environment is NOT local
'compass_in_production' => false,
'media' => [
// The allowed mimetypes to be uploaded through the media-manager.
// 'allowed_mimetypes' => '*', //All types can be uploaded
'allowed_mimetypes' => [
'image/jpeg',
'image/png',
'image/gif',
'image/bmp',
'video/mp4',
],
//Path for media-manager. Relative to the filesystem.
'path' => '/',
'show_folders' => true,
'allow_upload' => true,
'allow_move' => true,
'allow_delete' => true,
'allow_create_folder' => true,
'allow_rename' => true,
/*'watermark' => [
'source' => 'watermark.png',
'position' => 'bottom-left',
'x' => 0,
'y' => 0,
'size' => 15,
],
'thumbnails' => [
[
'type' => 'fit',
'name' => 'fit-500',
'width' => 500,
'height'=> 500
],
]*/
],
];

View File

@ -12,10 +12,11 @@ return new class extends Migration
public function up(): void
{
Schema::create('links', function (Blueprint $table) {
$table->id('link_id');
$table->id('id');
$table->text("link_name");
$table->text("link");
$table->text("image");
$table->timestamps();
});
}

View File

@ -12,9 +12,10 @@ return new class extends Migration
public function up(): void
{
Schema::create('weekdays', function (Blueprint $table) {
$table->id("weekday_id");
$table->id("id");
$table->text("weekday_name");
$table->date("current_date");
$table->timestamps();
});
}

View File

@ -12,8 +12,9 @@ return new class extends Migration
public function up(): void
{
Schema::create('games', function (Blueprint $table) {
$table->id("game_id");
$table->id("id");
$table->text("name");
$table->timestamps();
});
}

View File

@ -12,14 +12,15 @@ return new class extends Migration
public function up(): void
{
Schema::create('schedules', function (Blueprint $table) {
$table->id("schedule_id");
$table->id("id");
$table->foreignId("weekday_id")->constrained(
table: "weekdays", column: "weekday_id", indexName: "constraint_weekday_id"
table: "weekdays", column: "id", indexName: "constraint_weekday_id"
);
$table->foreignId("game_id")->constrained(
table: "games", column: "game_id", indexName: "constraint_game_id"
table: "games", column: "id", indexName: "constraint_game_id"
);
$table->text("stream_time");
$table->timestamps();
});
}

View File

@ -0,0 +1,28 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('basya_phrases', function (Blueprint $table) {
$table->id();
$table->string('phrase', 255);
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('basya_phrases');
}
};

View File

@ -0,0 +1,29 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('rating', function (Blueprint $table) {
$table->id();
$table->integer('rate')->nullable();
$table->text('comment')->nullable();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('rating');
}
};

View File

@ -0,0 +1,372 @@
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use TCG\Voyager\Models\DataRow;
use TCG\Voyager\Models\DataType;
class DataRowsTableSeeder extends Seeder
{
/**
* Auto generated seed file.
*/
public function run()
{
$userDataType = DataType::where('slug', 'users')->firstOrFail();
$menuDataType = DataType::where('slug', 'menus')->firstOrFail();
$roleDataType = DataType::where('slug', 'roles')->firstOrFail();
$dataRow = $this->dataRow($userDataType, 'id');
if (!$dataRow->exists) {
$dataRow->fill([
'type' => 'number',
'display_name' => __('voyager::seeders.data_rows.id'),
'required' => 1,
'browse' => 0,
'read' => 0,
'edit' => 0,
'add' => 0,
'delete' => 0,
'order' => 1,
])->save();
}
$dataRow = $this->dataRow($userDataType, 'name');
if (!$dataRow->exists) {
$dataRow->fill([
'type' => 'text',
'display_name' => __('voyager::seeders.data_rows.name'),
'required' => 1,
'browse' => 1,
'read' => 1,
'edit' => 1,
'add' => 1,
'delete' => 1,
'order' => 2,
])->save();
}
$dataRow = $this->dataRow($userDataType, 'email');
if (!$dataRow->exists) {
$dataRow->fill([
'type' => 'text',
'display_name' => __('voyager::seeders.data_rows.email'),
'required' => 1,
'browse' => 1,
'read' => 1,
'edit' => 1,
'add' => 1,
'delete' => 1,
'order' => 3,
])->save();
}
$dataRow = $this->dataRow($userDataType, 'password');
if (!$dataRow->exists) {
$dataRow->fill([
'type' => 'password',
'display_name' => __('voyager::seeders.data_rows.password'),
'required' => 1,
'browse' => 0,
'read' => 0,
'edit' => 1,
'add' => 1,
'delete' => 0,
'order' => 4,
])->save();
}
$dataRow = $this->dataRow($userDataType, 'remember_token');
if (!$dataRow->exists) {
$dataRow->fill([
'type' => 'text',
'display_name' => __('voyager::seeders.data_rows.remember_token'),
'required' => 0,
'browse' => 0,
'read' => 0,
'edit' => 0,
'add' => 0,
'delete' => 0,
'order' => 5,
])->save();
}
$dataRow = $this->dataRow($userDataType, 'created_at');
if (!$dataRow->exists) {
$dataRow->fill([
'type' => 'timestamp',
'display_name' => __('voyager::seeders.data_rows.created_at'),
'required' => 0,
'browse' => 1,
'read' => 1,
'edit' => 0,
'add' => 0,
'delete' => 0,
'order' => 6,
])->save();
}
$dataRow = $this->dataRow($userDataType, 'updated_at');
if (!$dataRow->exists) {
$dataRow->fill([
'type' => 'timestamp',
'display_name' => __('voyager::seeders.data_rows.updated_at'),
'required' => 0,
'browse' => 0,
'read' => 0,
'edit' => 0,
'add' => 0,
'delete' => 0,
'order' => 7,
])->save();
}
$dataRow = $this->dataRow($userDataType, 'avatar');
if (!$dataRow->exists) {
$dataRow->fill([
'type' => 'image',
'display_name' => __('voyager::seeders.data_rows.avatar'),
'required' => 0,
'browse' => 1,
'read' => 1,
'edit' => 1,
'add' => 1,
'delete' => 1,
'order' => 8,
])->save();
}
$dataRow = $this->dataRow($userDataType, 'user_belongsto_role_relationship');
if (!$dataRow->exists) {
$dataRow->fill([
'type' => 'relationship',
'display_name' => __('voyager::seeders.data_rows.role'),
'required' => 0,
'browse' => 1,
'read' => 1,
'edit' => 1,
'add' => 1,
'delete' => 0,
'details' => [
'model' => 'TCG\\Voyager\\Models\\Role',
'table' => 'roles',
'type' => 'belongsTo',
'column' => 'role_id',
'key' => 'id',
'label' => 'display_name',
'pivot_table' => 'roles',
'pivot' => 0,
],
'order' => 10,
])->save();
}
$dataRow = $this->dataRow($userDataType, 'user_belongstomany_role_relationship');
if (!$dataRow->exists) {
$dataRow->fill([
'type' => 'relationship',
'display_name' => __('voyager::seeders.data_rows.roles'),
'required' => 0,
'browse' => 1,
'read' => 1,
'edit' => 1,
'add' => 1,
'delete' => 0,
'details' => [
'model' => 'TCG\\Voyager\\Models\\Role',
'table' => 'roles',
'type' => 'belongsToMany',
'column' => 'id',
'key' => 'id',
'label' => 'display_name',
'pivot_table' => 'user_roles',
'pivot' => '1',
'taggable' => '0',
],
'order' => 11,
])->save();
}
$dataRow = $this->dataRow($userDataType, 'settings');
if (!$dataRow->exists) {
$dataRow->fill([
'type' => 'hidden',
'display_name' => 'Settings',
'required' => 0,
'browse' => 0,
'read' => 0,
'edit' => 0,
'add' => 0,
'delete' => 0,
'order' => 12,
])->save();
}
$dataRow = $this->dataRow($menuDataType, 'id');
if (!$dataRow->exists) {
$dataRow->fill([
'type' => 'number',
'display_name' => __('voyager::seeders.data_rows.id'),
'required' => 1,
'browse' => 0,
'read' => 0,
'edit' => 0,
'add' => 0,
'delete' => 0,
'order' => 1,
])->save();
}
$dataRow = $this->dataRow($menuDataType, 'name');
if (!$dataRow->exists) {
$dataRow->fill([
'type' => 'text',
'display_name' => __('voyager::seeders.data_rows.name'),
'required' => 1,
'browse' => 1,
'read' => 1,
'edit' => 1,
'add' => 1,
'delete' => 1,
'order' => 2,
])->save();
}
$dataRow = $this->dataRow($menuDataType, 'created_at');
if (!$dataRow->exists) {
$dataRow->fill([
'type' => 'timestamp',
'display_name' => __('voyager::seeders.data_rows.created_at'),
'required' => 0,
'browse' => 0,
'read' => 0,
'edit' => 0,
'add' => 0,
'delete' => 0,
'order' => 3,
])->save();
}
$dataRow = $this->dataRow($menuDataType, 'updated_at');
if (!$dataRow->exists) {
$dataRow->fill([
'type' => 'timestamp',
'display_name' => __('voyager::seeders.data_rows.updated_at'),
'required' => 0,
'browse' => 0,
'read' => 0,
'edit' => 0,
'add' => 0,
'delete' => 0,
'order' => 4,
])->save();
}
$dataRow = $this->dataRow($roleDataType, 'id');
if (!$dataRow->exists) {
$dataRow->fill([
'type' => 'number',
'display_name' => __('voyager::seeders.data_rows.id'),
'required' => 1,
'browse' => 0,
'read' => 0,
'edit' => 0,
'add' => 0,
'delete' => 0,
'order' => 1,
])->save();
}
$dataRow = $this->dataRow($roleDataType, 'name');
if (!$dataRow->exists) {
$dataRow->fill([
'type' => 'text',
'display_name' => __('voyager::seeders.data_rows.name'),
'required' => 1,
'browse' => 1,
'read' => 1,
'edit' => 1,
'add' => 1,
'delete' => 1,
'order' => 2,
])->save();
}
$dataRow = $this->dataRow($roleDataType, 'created_at');
if (!$dataRow->exists) {
$dataRow->fill([
'type' => 'timestamp',
'display_name' => __('voyager::seeders.data_rows.created_at'),
'required' => 0,
'browse' => 0,
'read' => 0,
'edit' => 0,
'add' => 0,
'delete' => 0,
'order' => 3,
])->save();
}
$dataRow = $this->dataRow($roleDataType, 'updated_at');
if (!$dataRow->exists) {
$dataRow->fill([
'type' => 'timestamp',
'display_name' => __('voyager::seeders.data_rows.updated_at'),
'required' => 0,
'browse' => 0,
'read' => 0,
'edit' => 0,
'add' => 0,
'delete' => 0,
'order' => 4,
])->save();
}
$dataRow = $this->dataRow($roleDataType, 'display_name');
if (!$dataRow->exists) {
$dataRow->fill([
'type' => 'text',
'display_name' => __('voyager::seeders.data_rows.display_name'),
'required' => 1,
'browse' => 1,
'read' => 1,
'edit' => 1,
'add' => 1,
'delete' => 1,
'order' => 5,
])->save();
}
$dataRow = $this->dataRow($userDataType, 'role_id');
if (!$dataRow->exists) {
$dataRow->fill([
'type' => 'text',
'display_name' => __('voyager::seeders.data_rows.role'),
'required' => 1,
'browse' => 1,
'read' => 1,
'edit' => 1,
'add' => 1,
'delete' => 1,
'order' => 9,
])->save();
}
}
/**
* [dataRow description].
*
* @param [type] $type [description]
* @param [type] $field [description]
*
* @return [type] [description]
*/
protected function dataRow($type, $field)
{
return DataRow::firstOrNew([
'data_type_id' => $type->id,
'field' => $field,
]);
}
}

View File

@ -0,0 +1,71 @@
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use TCG\Voyager\Models\DataType;
class DataTypesTableSeeder extends Seeder
{
/**
* Auto generated seed file.
*/
public function run()
{
$dataType = $this->dataType('slug', 'users');
if (!$dataType->exists) {
$dataType->fill([
'name' => 'users',
'display_name_singular' => __('voyager::seeders.data_types.user.singular'),
'display_name_plural' => __('voyager::seeders.data_types.user.plural'),
'icon' => 'voyager-person',
'model_name' => 'TCG\\Voyager\\Models\\User',
'policy_name' => 'TCG\\Voyager\\Policies\\UserPolicy',
'controller' => 'TCG\\Voyager\\Http\\Controllers\\VoyagerUserController',
'generate_permissions' => 1,
'description' => '',
])->save();
}
$dataType = $this->dataType('slug', 'menus');
if (!$dataType->exists) {
$dataType->fill([
'name' => 'menus',
'display_name_singular' => __('voyager::seeders.data_types.menu.singular'),
'display_name_plural' => __('voyager::seeders.data_types.menu.plural'),
'icon' => 'voyager-list',
'model_name' => 'TCG\\Voyager\\Models\\Menu',
'controller' => '',
'generate_permissions' => 1,
'description' => '',
])->save();
}
$dataType = $this->dataType('slug', 'roles');
if (!$dataType->exists) {
$dataType->fill([
'name' => 'roles',
'display_name_singular' => __('voyager::seeders.data_types.role.singular'),
'display_name_plural' => __('voyager::seeders.data_types.role.plural'),
'icon' => 'voyager-lock',
'model_name' => 'TCG\\Voyager\\Models\\Role',
'controller' => 'TCG\\Voyager\\Http\\Controllers\\VoyagerRoleController',
'generate_permissions' => 1,
'description' => '',
])->save();
}
}
/**
* [dataType description].
*
* @param [type] $field [description]
* @param [type] $for [description]
*
* @return [type] [description]
*/
protected function dataType($field, $for)
{
return DataType::firstOrNew([$field => $for]);
}
}

View File

@ -0,0 +1,179 @@
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use TCG\Voyager\Models\Menu;
use TCG\Voyager\Models\MenuItem;
class MenuItemsTableSeeder extends Seeder
{
/**
* Auto generated seed file.
*
* @return void
*/
public function run()
{
$menu = Menu::where('name', 'admin')->firstOrFail();
$menuItem = MenuItem::firstOrNew([
'menu_id' => $menu->id,
'title' => __('voyager::seeders.menu_items.dashboard'),
'url' => '',
'route' => 'voyager.dashboard',
]);
if (!$menuItem->exists) {
$menuItem->fill([
'target' => '_self',
'icon_class' => 'voyager-boat',
'color' => null,
'parent_id' => null,
'order' => 1,
])->save();
}
$menuItem = MenuItem::firstOrNew([
'menu_id' => $menu->id,
'title' => __('voyager::seeders.menu_items.media'),
'url' => '',
'route' => 'voyager.media.index',
]);
if (!$menuItem->exists) {
$menuItem->fill([
'target' => '_self',
'icon_class' => 'voyager-images',
'color' => null,
'parent_id' => null,
'order' => 5,
])->save();
}
$menuItem = MenuItem::firstOrNew([
'menu_id' => $menu->id,
'title' => __('voyager::seeders.menu_items.users'),
'url' => '',
'route' => 'voyager.users.index',
]);
if (!$menuItem->exists) {
$menuItem->fill([
'target' => '_self',
'icon_class' => 'voyager-person',
'color' => null,
'parent_id' => null,
'order' => 3,
])->save();
}
$menuItem = MenuItem::firstOrNew([
'menu_id' => $menu->id,
'title' => __('voyager::seeders.menu_items.roles'),
'url' => '',
'route' => 'voyager.roles.index',
]);
if (!$menuItem->exists) {
$menuItem->fill([
'target' => '_self',
'icon_class' => 'voyager-lock',
'color' => null,
'parent_id' => null,
'order' => 2,
])->save();
}
$toolsMenuItem = MenuItem::firstOrNew([
'menu_id' => $menu->id,
'title' => __('voyager::seeders.menu_items.tools'),
'url' => '',
]);
if (!$toolsMenuItem->exists) {
$toolsMenuItem->fill([
'target' => '_self',
'icon_class' => 'voyager-tools',
'color' => null,
'parent_id' => null,
'order' => 9,
])->save();
}
$menuItem = MenuItem::firstOrNew([
'menu_id' => $menu->id,
'title' => __('voyager::seeders.menu_items.menu_builder'),
'url' => '',
'route' => 'voyager.menus.index',
]);
if (!$menuItem->exists) {
$menuItem->fill([
'target' => '_self',
'icon_class' => 'voyager-list',
'color' => null,
'parent_id' => $toolsMenuItem->id,
'order' => 10,
])->save();
}
$menuItem = MenuItem::firstOrNew([
'menu_id' => $menu->id,
'title' => __('voyager::seeders.menu_items.database'),
'url' => '',
'route' => 'voyager.database.index',
]);
if (!$menuItem->exists) {
$menuItem->fill([
'target' => '_self',
'icon_class' => 'voyager-data',
'color' => null,
'parent_id' => $toolsMenuItem->id,
'order' => 11,
])->save();
}
$menuItem = MenuItem::firstOrNew([
'menu_id' => $menu->id,
'title' => __('voyager::seeders.menu_items.compass'),
'url' => '',
'route' => 'voyager.compass.index',
]);
if (!$menuItem->exists) {
$menuItem->fill([
'target' => '_self',
'icon_class' => 'voyager-compass',
'color' => null,
'parent_id' => $toolsMenuItem->id,
'order' => 12,
])->save();
}
$menuItem = MenuItem::firstOrNew([
'menu_id' => $menu->id,
'title' => __('voyager::seeders.menu_items.bread'),
'url' => '',
'route' => 'voyager.bread.index',
]);
if (!$menuItem->exists) {
$menuItem->fill([
'target' => '_self',
'icon_class' => 'voyager-bread',
'color' => null,
'parent_id' => $toolsMenuItem->id,
'order' => 13,
])->save();
}
$menuItem = MenuItem::firstOrNew([
'menu_id' => $menu->id,
'title' => __('voyager::seeders.menu_items.settings'),
'url' => '',
'route' => 'voyager.settings.index',
]);
if (!$menuItem->exists) {
$menuItem->fill([
'target' => '_self',
'icon_class' => 'voyager-settings',
'color' => null,
'parent_id' => null,
'order' => 14,
])->save();
}
}
}

View File

@ -0,0 +1,21 @@
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use TCG\Voyager\Models\Menu;
class MenusTableSeeder extends Seeder
{
/**
* Auto generated seed file.
*
* @return void
*/
public function run()
{
Menu::firstOrCreate([
'name' => 'admin',
]);
}
}

View File

@ -0,0 +1,26 @@
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use TCG\Voyager\Models\Permission;
use TCG\Voyager\Models\Role;
class PermissionRoleTableSeeder extends Seeder
{
/**
* Auto generated seed file.
*
* @return void
*/
public function run()
{
$role = Role::where('name', 'admin')->firstOrFail();
$permissions = Permission::all();
$role->permissions()->sync(
$permissions->pluck('id')->all()
);
}
}

View File

@ -0,0 +1,38 @@
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use TCG\Voyager\Models\Permission;
class PermissionsTableSeeder extends Seeder
{
/**
* Auto generated seed file.
*/
public function run()
{
$keys = [
'browse_admin',
'browse_bread',
'browse_database',
'browse_media',
'browse_compass',
];
foreach ($keys as $key) {
Permission::firstOrCreate([
'key' => $key,
'table_name' => null,
]);
}
Permission::generateFor('menus');
Permission::generateFor('roles');
Permission::generateFor('users');
Permission::generateFor('settings');
}
}

View File

@ -0,0 +1,29 @@
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use TCG\Voyager\Models\Role;
class RolesTableSeeder extends Seeder
{
/**
* Auto generated seed file.
*/
public function run()
{
$role = Role::firstOrNew(['name' => 'admin']);
if (!$role->exists) {
$role->fill([
'display_name' => __('voyager::seeders.roles.admin'),
])->save();
}
$role = Role::firstOrNew(['name' => 'user']);
if (!$role->exists) {
$role->fill([
'display_name' => __('voyager::seeders.roles.user'),
])->save();
}
}
}

View File

@ -0,0 +1,147 @@
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use TCG\Voyager\Models\Setting;
class SettingsTableSeeder extends Seeder
{
/**
* Auto generated seed file.
*/
public function run()
{
$setting = $this->findSetting('site.title');
if (!$setting->exists) {
$setting->fill([
'display_name' => __('voyager::seeders.settings.site.title'),
'value' => __('voyager::seeders.settings.site.title'),
'details' => '',
'type' => 'text',
'order' => 1,
'group' => 'Site',
])->save();
}
$setting = $this->findSetting('site.description');
if (!$setting->exists) {
$setting->fill([
'display_name' => __('voyager::seeders.settings.site.description'),
'value' => __('voyager::seeders.settings.site.description'),
'details' => '',
'type' => 'text',
'order' => 2,
'group' => 'Site',
])->save();
}
$setting = $this->findSetting('site.logo');
if (!$setting->exists) {
$setting->fill([
'display_name' => __('voyager::seeders.settings.site.logo'),
'value' => '',
'details' => '',
'type' => 'image',
'order' => 3,
'group' => 'Site',
])->save();
}
$setting = $this->findSetting('site.google_analytics_tracking_id');
if (!$setting->exists) {
$setting->fill([
'display_name' => __('voyager::seeders.settings.site.google_analytics_tracking_id'),
'value' => '',
'details' => '',
'type' => 'text',
'order' => 4,
'group' => 'Site',
])->save();
}
$setting = $this->findSetting('admin.bg_image');
if (!$setting->exists) {
$setting->fill([
'display_name' => __('voyager::seeders.settings.admin.background_image'),
'value' => '',
'details' => '',
'type' => 'image',
'order' => 5,
'group' => 'Admin',
])->save();
}
$setting = $this->findSetting('admin.title');
if (!$setting->exists) {
$setting->fill([
'display_name' => __('voyager::seeders.settings.admin.title'),
'value' => 'Voyager',
'details' => '',
'type' => 'text',
'order' => 1,
'group' => 'Admin',
])->save();
}
$setting = $this->findSetting('admin.description');
if (!$setting->exists) {
$setting->fill([
'display_name' => __('voyager::seeders.settings.admin.description'),
'value' => __('voyager::seeders.settings.admin.description_value'),
'details' => '',
'type' => 'text',
'order' => 2,
'group' => 'Admin',
])->save();
}
$setting = $this->findSetting('admin.loader');
if (!$setting->exists) {
$setting->fill([
'display_name' => __('voyager::seeders.settings.admin.loader'),
'value' => '',
'details' => '',
'type' => 'image',
'order' => 3,
'group' => 'Admin',
])->save();
}
$setting = $this->findSetting('admin.icon_image');
if (!$setting->exists) {
$setting->fill([
'display_name' => __('voyager::seeders.settings.admin.icon_image'),
'value' => '',
'details' => '',
'type' => 'image',
'order' => 4,
'group' => 'Admin',
])->save();
}
$setting = $this->findSetting('admin.google_analytics_client_id');
if (!$setting->exists) {
$setting->fill([
'display_name' => __('voyager::seeders.settings.admin.google_analytics_client_id'),
'value' => '',
'details' => '',
'type' => 'text',
'order' => 1,
'group' => 'Admin',
])->save();
}
}
/**
* [setting description].
*
* @param [type] $key [description]
*
* @return [type] [description]
*/
protected function findSetting($key)
{
return Setting::firstOrNew(['key' => $key]);
}
}

View File

@ -0,0 +1,233 @@
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use TCG\Voyager\Models\Category;
use TCG\Voyager\Models\DataType;
use TCG\Voyager\Models\MenuItem;
use TCG\Voyager\Models\Page;
use TCG\Voyager\Models\Translation;
class TranslationsTableSeeder extends Seeder
{
/**
* Auto generated seed file.
*
* @return void
*/
public function run()
{
$this->dataTypesTranslations();
$this->categoriesTranslations();
$this->pagesTranslations();
$this->menusTranslations();
}
/**
* Auto generate Categories Translations.
*
* @return void
*/
private function categoriesTranslations()
{
// Adding translations for 'categories'
//
$cat = Category::where('slug', 'category-1')->firstOrFail();
if ($cat->exists) {
$this->trans('pt', $this->arr(['categories', 'slug'], $cat->id), 'categoria-1');
$this->trans('pt', $this->arr(['categories', 'name'], $cat->id), 'Categoria 1');
}
$cat = Category::where('slug', 'category-2')->firstOrFail();
if ($cat->exists) {
$this->trans('pt', $this->arr(['categories', 'slug'], $cat->id), 'categoria-2');
$this->trans('pt', $this->arr(['categories', 'name'], $cat->id), 'Categoria 2');
}
}
/**
* Auto generate DataTypes Translations.
*
* @return void
*/
private function dataTypesTranslations()
{
// Adding translations for 'display_name_singular'
//
$_fld = 'display_name_singular';
$_tpl = ['data_types', $_fld];
$dtp = DataType::where($_fld, __('voyager::seeders.data_types.post.singular'))->firstOrFail();
if ($dtp->exists) {
$this->trans('pt', $this->arr($_tpl, $dtp->id), 'Post');
}
$dtp = DataType::where($_fld, __('voyager::seeders.data_types.page.singular'))->firstOrFail();
if ($dtp->exists) {
$this->trans('pt', $this->arr($_tpl, $dtp->id), 'Página');
}
$dtp = DataType::where($_fld, __('voyager::seeders.data_types.user.singular'))->firstOrFail();
if ($dtp->exists) {
$this->trans('pt', $this->arr($_tpl, $dtp->id), 'Utilizador');
}
$dtp = DataType::where($_fld, __('voyager::seeders.data_types.category.singular'))->firstOrFail();
if ($dtp->exists) {
$this->trans('pt', $this->arr($_tpl, $dtp->id), 'Categoria');
}
$dtp = DataType::where($_fld, __('voyager::seeders.data_types.menu.singular'))->firstOrFail();
if ($dtp->exists) {
$this->trans('pt', $this->arr($_tpl, $dtp->id), 'Menu');
}
$dtp = DataType::where($_fld, __('voyager::seeders.data_types.role.singular'))->firstOrFail();
if ($dtp->exists) {
$this->trans('pt', $this->arr($_tpl, $dtp->id), 'Função');
}
// Adding translations for 'display_name_plural'
//
$_fld = 'display_name_plural';
$_tpl = ['data_types', $_fld];
$dtp = DataType::where($_fld, __('voyager::seeders.data_types.post.plural'))->firstOrFail();
if ($dtp->exists) {
$this->trans('pt', $this->arr($_tpl, $dtp->id), 'Posts');
}
$dtp = DataType::where($_fld, __('voyager::seeders.data_types.page.plural'))->firstOrFail();
if ($dtp->exists) {
$this->trans('pt', $this->arr($_tpl, $dtp->id), 'Páginas');
}
$dtp = DataType::where($_fld, __('voyager::seeders.data_types.user.plural'))->firstOrFail();
if ($dtp->exists) {
$this->trans('pt', $this->arr($_tpl, $dtp->id), 'Utilizadores');
}
$dtp = DataType::where($_fld, __('voyager::seeders.data_types.category.plural'))->firstOrFail();
if ($dtp->exists) {
$this->trans('pt', $this->arr($_tpl, $dtp->id), 'Categorias');
}
$dtp = DataType::where($_fld, __('voyager::seeders.data_types.menu.plural'))->firstOrFail();
if ($dtp->exists) {
$this->trans('pt', $this->arr($_tpl, $dtp->id), 'Menus');
}
$dtp = DataType::where($_fld, __('voyager::seeders.data_types.role.plural'))->firstOrFail();
if ($dtp->exists) {
$this->trans('pt', $this->arr($_tpl, $dtp->id), 'Funções');
}
}
/**
* Auto generate Pages Translations.
*
* @return void
*/
private function pagesTranslations()
{
$page = Page::where('slug', 'hello-world')->firstOrFail();
if ($page->exists) {
$_arr = $this->arr(['pages', 'title'], $page->id);
$this->trans('pt', $_arr, 'Olá Mundo');
/**
* For configuring additional languages use it e.g.
*
* ```
* $this->trans('es', $_arr, 'hola-mundo');
* $this->trans('de', $_arr, 'hallo-welt');
* ```
*/
$_arr = $this->arr(['pages', 'slug'], $page->id);
$this->trans('pt', $_arr, 'ola-mundo');
$_arr = $this->arr(['pages', 'body'], $page->id);
$this->trans('pt', $_arr, '<p>Olá Mundo. Scallywag grog swab Cat o\'nine tails scuttle rigging hardtack cable nipper Yellow Jack. Handsomely spirits knave lad killick landlubber or just lubber deadlights chantey pinnace crack Jennys tea cup. Provost long clothes black spot Yellow Jack bilged on her anchor league lateen sail case shot lee tackle.</p>'
."\r\n".'<p>Ballast spirits fluke topmast me quarterdeck schooner landlubber or just lubber gabion belaying pin. Pinnace stern galleon starboard warp carouser to go on account dance the hempen jig jolly boat measured fer yer chains. Man-of-war fire in the hole nipperkin handsomely doubloon barkadeer Brethren of the Coast gibbet driver squiffy.</p>');
}
}
/**
* Auto generate Menus Translations.
*
* @return void
*/
private function menusTranslations()
{
$_tpl = ['menu_items', 'title'];
$_item = $this->findMenuItem(__('voyager::seeders.menu_items.dashboard'));
if ($_item->exists) {
$this->trans('pt', $this->arr($_tpl, $_item->id), 'Painel de Controle');
}
$_item = $this->findMenuItem(__('voyager::seeders.menu_items.media'));
if ($_item->exists) {
$this->trans('pt', $this->arr($_tpl, $_item->id), 'Media');
}
$_item = $this->findMenuItem(__('voyager::seeders.menu_items.posts'));
if ($_item->exists) {
$this->trans('pt', $this->arr($_tpl, $_item->id), 'Publicações');
}
$_item = $this->findMenuItem(__('voyager::seeders.menu_items.users'));
if ($_item->exists) {
$this->trans('pt', $this->arr($_tpl, $_item->id), 'Utilizadores');
}
$_item = $this->findMenuItem(__('voyager::seeders.menu_items.categories'));
if ($_item->exists) {
$this->trans('pt', $this->arr($_tpl, $_item->id), 'Categorias');
}
$_item = $this->findMenuItem(__('voyager::seeders.menu_items.pages'));
if ($_item->exists) {
$this->trans('pt', $this->arr($_tpl, $_item->id), 'Páginas');
}
$_item = $this->findMenuItem(__('voyager::seeders.menu_items.roles'));
if ($_item->exists) {
$this->trans('pt', $this->arr($_tpl, $_item->id), 'Funções');
}
$_item = $this->findMenuItem(__('voyager::seeders.menu_items.tools'));
if ($_item->exists) {
$this->trans('pt', $this->arr($_tpl, $_item->id), 'Ferramentas');
}
$_item = $this->findMenuItem(__('voyager::seeders.menu_items.menu_builder'));
if ($_item->exists) {
$this->trans('pt', $this->arr($_tpl, $_item->id), 'Menus');
}
$_item = $this->findMenuItem(__('voyager::seeders.menu_items.database'));
if ($_item->exists) {
$this->trans('pt', $this->arr($_tpl, $_item->id), 'Base de dados');
}
$_item = $this->findMenuItem(__('voyager::seeders.menu_items.settings'));
if ($_item->exists) {
$this->trans('pt', $this->arr($_tpl, $_item->id), 'Configurações');
}
}
private function findMenuItem($title)
{
return MenuItem::where('title', $title)->firstOrFail();
}
private function arr($par, $id)
{
return [
'table_name' => $par[0],
'column_name' => $par[1],
'foreign_key' => $id,
];
}
private function trans($lang, $keys, $value)
{
$_t = Translation::firstOrNew(array_merge($keys, [
'locale' => $lang,
]));
if (!$_t->exists) {
$_t->fill(array_merge(
$keys,
['value' => $value]
))->save();
}
}
}

View File

@ -0,0 +1,27 @@
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
class VoyagerDatabaseSeeder extends Seeder
{
/**
* Run the database seeders.
*
* @return void
*/
public function run()
{
$this->call([
DataTypesTableSeeder::class,
DataRowsTableSeeder::class,
MenusTableSeeder::class,
MenuItemsTableSeeder::class,
RolesTableSeeder::class,
PermissionsTableSeeder::class,
PermissionRoleTableSeeder::class,
SettingsTableSeeder::class,
]);
}
}

View File

@ -0,0 +1,25 @@
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
class VoyagerDummyDatabaseSeeder extends Seeder
{
/**
* Run the database seeders.
*
* @return void
*/
public function run()
{
$this->call([
CategoriesTableSeeder::class,
UsersTableSeeder::class,
PostsTableSeeder::class,
PagesTableSeeder::class,
TranslationsTableSeeder::class,
PermissionRoleTableSeeder::class,
]);
}
}

19
gitea-actions.yml Normal file
View File

@ -0,0 +1,19 @@
name: Gitea Actions Demo
run-name: ${{ gitea.actor }} is testing out Gitea Actions ??
on: [push]
jobs:
Explore-Gitea-Actions:
runs-on: ubuntu-latest
steps:
- run: echo "?? The job was automatically triggered by a ${{ gitea.event_name }} event."
- run: echo "?? This job is now running on a ${{ runner.os }} server hosted by Gitea!"
- run: echo "?? The name of your branch is ${{ gitea.ref }} and your repository is ${{ gitea.repository }}."
- name: Check out repository code
uses: actions/checkout@v3
- run: echo "?? The ${{ gitea.repository }} repository has been cloned to the runner."
- run: echo "??? The workflow is now ready to test your code on the runner."
- name: List files in the repository
run: |
ls ${{ gitea.workspace }}
- run: echo "?? This job's status is ${{ job.status }}."

BIN
public/basya_answer.docx Normal file

Binary file not shown.

BIN
public/images/gg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View File

Before

Width:  |  Height:  |  Size: 1023 KiB

After

Width:  |  Height:  |  Size: 1023 KiB

BIN
public/images/twitch.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

BIN
public/images/vk.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
public/images/vkplay.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

BIN
public/images/youtube.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

View File

@ -5,7 +5,7 @@
</template>
<script>
import Resume from "./views/Resume/Resume.vue";
import Resume from "./views/resume/Resume.vue";
export default {
name: "App",

19
resources/basya.js Normal file
View File

@ -0,0 +1,19 @@
import './js/bootstrap';
import {createApp} from 'vue'
import { createPinia } from 'pinia'
import App from './views/basya/Basya.vue'
import { createVuetify } from 'vuetify'
import { mdi } from "vuetify/iconsets/mdi";
import 'vuetify/styles'
import * as components from 'vuetify/components'
import * as directives from 'vuetify/directives'
import '@mdi/font/css/materialdesignicons.css'
const pinia = createPinia();
const vuetify = createVuetify({
components,
directives
})
createApp(App).use(vuetify).use(pinia).mount("#app")

View File

@ -0,0 +1,39 @@
.box-gradient {
border: 10px solid transparent;
background: linear-gradient(
#ffffff,
#ffffff) padding-box,
linear-gradient(45deg,
#FF52E5,
#F6D242) border-box;
border-radius: 14px;
}
.neon-text {
color: #fff!important;
text-shadow:
0 0 3px #fff,
0 0 5px #fff,
0 0 11px #fff,
0 0 16px #bc13fe,
0 0 20px #bc13fe,
0 0 26px #bc13fe,
0 0 30px #bc13fe,
0 0 34px #bc13fe !important;
}
.neon-border {
border: 0.2rem solid #fff !important;
border-radius: 2rem !important;
box-shadow: 0 0 .2rem #fff,
0 0 .2rem #fff,
0 0 2rem #bc13fe,
0 0 0.8rem #bc13fe,
0 0 2.8rem #bc13fe,
inset 0 0 1.3rem #bc13fe !important;
animation: pulsate 1.5s infinite alternate !important;
}
.white-text {
color: white!important;
}

18
resources/friday.js Normal file
View File

@ -0,0 +1,18 @@
import './js/bootstrap';
import { createApp } from 'vue'
import { createPinia } from 'pinia'
import App from './views/friday/Friday.vue'
import { createVuetify } from 'vuetify'
import 'vuetify/styles'
import * as components from 'vuetify/components'
import * as directives from 'vuetify/directives'
import '@mdi/font/css/materialdesignicons.css'
const pinia = createPinia();
const vuetify = createVuetify({
components,
directives
});
createApp(App).use(vuetify).use(pinia).mount("#app");

View File

@ -1,15 +0,0 @@
import {defineStore} from "pinia";
export const useScheduleStore = defineStore('Schedule', {
state: () => ({
fetchingDates: true,
fetchingTable: true,
fetchingLinks: true
}),
getters: {
},
actions: {
},
})

20
resources/stores/basya.js Normal file
View File

@ -0,0 +1,20 @@
import {defineStore} from "pinia";
import axios from "axios";
export const useBasyaStore = defineStore('basya', {
state: () => ({
phrases: Object
}),
getters: {
},
actions: {
async getPhrases(){
await axios
.get('/api/v1/phrases')
.then((response) => {
this.phrases = response.data;
});
}
},
})

View File

@ -0,0 +1,37 @@
import {defineStore} from "pinia";
import axios from "axios";
export const useScheduleStore = defineStore('schedule', {
state: () => ({
dates: Object,
links: Object,
schedules: Object
}),
getters: {
},
actions: {
async getDates(){
await axios
.get('/api/v1/dates')
.then((response) => {
this.dates = response.data;
});
},
async getLinks(){
await axios
.get('/api/v1/links')
.then((response)=>{
this.links = response.data;
})
},
async getSchedules(){
await axios
.get('/api/v1/schedules')
.then((response)=>{
this.schedules = response.data;
})
}
},
})

View File

@ -1,42 +1,54 @@
<template>
<v-sheet class="mt-5 mb-5 rounded-lg w-75">
<p class="text-h3 ma-5">Расписание стримов</p>
<v-skeleton-loader v-if="fetching" type="text" />
<p v-else class="ma-5 text-h4"> {{ parseDate(dates[0].current_date) }} - {{ parseDate(dates[1].current_date) }}</p>
<ScheduleTable/>
<p class="text-h3 ma-5">Ссылочки</p>
<Links/>
<v-sheet class="bg-grey-darken-3 mt-5 mb-5 rounded-lg w-75 pl-3">
<p class="neon-text text-xl-h3 text-lg-h3 text-md-h4 text-sm-h4 text-h5 ma-5">Расписание стримов</p>
<v-skeleton-loader v-if="fetching" type="text" class="bg-grey-darken-3"/>
<p v-else class="neon-text ma-5 text-xl-h3 text-lg-h3 text-md-h4 text-sm-h4 text-h5"> {{ parseDate(dates[0].current_date) }} - {{ parseDate(dates[1].current_date) }}</p>
<ScheduleTable :is-wide="isWide"/>
<p class="neon-text text-xl-h3 text-lg-h3 text-md-h4 text-sm-h4 text-h5 ma-5">Ссылочки</p>
<Links :is-wide="isWide"/>
<AdditionalButtons :is-wide="isWide"/>
</v-sheet>
</template>
<script>
import axios from "axios";
import ScheduleTable from "./Schedule/ScheduleTable.vue";
import Links from "./Schedule/Links.vue";
import AdditionalButtons from "./Schedule/AdditionalButtons.vue";
import {ref} from "vue";
import {useScheduleStore} from '../stores/schedule.js';
export default {
name: "Schedule",
components: {Links, ScheduleTable},
components: {AdditionalButtons, Links, ScheduleTable},
data: () => ({
dates: [],
fetching: true
dates: ref(),
scheduleStore: useScheduleStore(),
fetching: true,
windowHeight: document.documentElement.clientHeight,
windowWidth: document.documentElement.clientWidth,
isWide: window.innerWidth >= 460
}),
methods: {
parseDate(date){
let dateArr = date.split("-");
return dateArr[2] + "." + dateArr[1];
},
async getDates(){
await axios
.get('/api/v1/dates')
.then(response => {
this.dates = response.data;
this.fetching = false;
});
myEventHandler(e) {
this.windowHeight = document.documentElement.clientHeight;
this.windowWidth = document.documentElement.clientWidth;
this.isWide = this.windowWidth >= 460;
}
},
created() {
window.addEventListener("resize", this.myEventHandler);
},
mounted() {
this.getDates();
this.scheduleStore.getDates().then(()=>{
this.dates = this.scheduleStore.dates;
this.fetching = false;
});
this.myEventHandler();
window.addEventListener("resize", this.myEventHandler, { passive: true });
}
}
</script>

View File

@ -0,0 +1,101 @@
<script>
import Links from "./Links.vue";
import ScheduleTable from "./ScheduleTable.vue";
import {ref} from "vue";
import {useScheduleStore} from "../../stores/schedule.js";
export default {
name: "AdditionalButtons",
data: () => ({
showModal: ref(false),
afterModal: ref(false),
afterModalText: '',
rating: 0,
comment: ''
}),
props: {
isWide: Boolean
},
methods:{
onShowModal(){
this.showModal = !this.showModal;
if (!this.showModal){
this.rating = 0;
this.comment = '';
}
},
onShowAfterModal(){
this.afterModal = !this.afterModal;
},
sendRating(){
axios.post(
'/api/v1/rating',
{
rate: this.rating,
comment: this.comment
}
).then((responce)=>{
this.onShowModal();
console.log(responce.data['code']);
if (responce.data['code'] === 200){
this.afterModalText = 'Спасибо за отзыв!';
} else {
this.afterModalText = 'Ошибка: Отзыв не отправился :(';
}
this.onShowAfterModal();
});
}
}
}
</script>
<template>
<div class="w-100 d-flex justify-space-evenly" :class="isWide ? '' : 'flex-column'">
<v-btn
class="bg-grey-darken-3 neon-border pt-3 pb-3 pl-3 pr-3 mt-7 mb-7 mr-5 ml-5 h-auto"
text="Кинуть копеечку"
href="https://www.donationalerts.com/r/dhaverd"
target="_blank"
/>
<v-btn
class="bg-grey-darken-3 neon-border pt-3 pb-3 pl-3 pr-3 mt-7 mb-7 mr-5 ml-5 h-auto"
text="Оставить отзыв"
@click="onShowModal"
/>
</div>
<v-dialog v-model="showModal" class="align-center" :class="isWide ? 'w-50' : 'w-100 h-100'">
<v-sheet class="mt-5 mb-5 pa-5 h-auto rounded-lg bg-grey-darken-3 neon-border d-flex flex-column">
<div class="w-100 d-flex justify-end bg-grey-darken-3">
<v-btn class="bg-grey-darken-3" icon="mdi-window-close" elevation="0" @click="onShowModal"/>
</div>
<v-label class="text-xl-h6 white-text ">Оцените канал:</v-label>
<v-rating v-model="rating" active-color="purple-darken-1">
sss
</v-rating>
<v-label class="text-xl-h6 mb-2 white-text ">Оставьте отзыв:</v-label>
<v-textarea v-model="comment" clearable variant="outlined" label="Что можно улучшить?"/>
<div class="d-flex justify-center">
<v-btn class="bg-grey-darken-3 neon-border pt-3 pb-3 pl-3 pr-3 w-auto h-auto" @click="sendRating">Отправить</v-btn>
</div>
</v-sheet>
</v-dialog>
<v-dialog v-model="afterModal" class="align-center" :class="isWide ? 'w-50' : 'w-100 h-100'">
<v-sheet class="mt-5 mb-5 pa-5 h-auto rounded-lg bg-grey-darken-3 neon-border d-flex flex-column">
<div class="w-100 d-flex justify-end bg-grey-darken-3">
<v-btn class="bg-grey-darken-3" icon="mdi-window-close" elevation="0" @click="onShowAfterModal"/>
</div>
<v-label class="text-xl-h6 white-text justify-center">{{afterModalText}}</v-label>
</v-sheet>
</v-dialog>
</template>
<style scoped>
.v-dialog {
align-items: center;
justify-content: center;
margin: auto;
}
.v-label {
color: #000000;
}
</style>

View File

@ -1,30 +1,33 @@
<script>
import axios from "axios";
import {ref} from "vue";
import {useScheduleStore} from '../../stores/schedule.js';
export default {
name: "Links",
data: () => ({
links: [],
fetching: true
links: ref(),
fetching: true,
scheduleStore: useScheduleStore()
}),
props: {
isWide: Boolean
},
mounted() {
axios
.get('/api/v1/links')
.then(response => {
this.links = response.data;
this.fetching = false;
});
this.scheduleStore.getLinks().then(()=>{
this.links = this.scheduleStore.links;
this.fetching = false;
});
}
}
</script>
<template>
<div class="w-100 d-flex justify-center">
<v-list class="w-66">
<v-skeleton-loader v-if="fetching" type="list-item"/>
<v-list-item v-else class="ma-5 bg-gradient-noh" elevation="6" v-for="link in links" :href="link.link"> <!-- style="background-color: #E57373; color: #FFFFFF" -->
<v-list class="bg-grey-darken-3" :class="isWide ? 'w-66' : 'w-100'">
<v-skeleton-loader v-if="fetching" type="list-item" class="bg-grey-darken-3 ml-1 mr-3"/>
<v-list-item v-else class="bg-grey-darken-3 neon-border mt-6 mb-7 ml-7 mr-7" elevation="0" v-for="link in links" :href="link.link"> <!-- style="background-color: #E57373; color: #FFFFFF" -->
<template v-slot:prepend>
<v-avatar :image="link.image" rounded="0"></v-avatar>
<v-avatar class="mt-1 mb-1 ml-5" :image="link.image" rounded="0"></v-avatar>
</template>
<v-list-item-title>{{ link.link_name }}</v-list-item-title>
</v-list-item>
@ -33,9 +36,5 @@
</template>
<style scoped>
.bg-gradient-noh {
background: linear-gradient(-45deg, #f103b0, #f0a068, #4fdbfeff);
background-size: 200% 200%;
animation: gradient 15s ease infinite;
}
</style>

View File

@ -1,12 +1,17 @@
<script>
import axios from "axios";
import {useScheduleStore} from '../../stores/schedule.js';
import {ref} from "vue";
export default {
name: "ScheduleTable",
data: () => ({
schedules: [],
schedules: ref(),
scheduleStore: useScheduleStore(),
fetching: true
}),
props: {
isWide: Boolean
},
methods: {
parseDate(date){
let dateArr = date.split("-");
@ -14,20 +19,18 @@
}
},
mounted() {
axios
.get('/api/v1/schedules')
.then(response => {
this.schedules = response.data;
this.fetching = false;
});
this.scheduleStore.getSchedules().then(()=>{
this.schedules = this.scheduleStore.schedules;
this.fetching = false;
});
}
}
</script>
<template>
<div class="w-100 d-flex justify-center">
<v-skeleton-loader v-if="fetching" type="table"/>
<v-table v-else class="text-h5 w-66">
<div class="w-100 d-flex justify-center mt-6 mb-6">
<v-skeleton-loader v-if="fetching" type="table" class="bg-grey-darken-3 mr-3 ml-1"/>
<v-table v-else class="bg-grey-darken-3 neon-border pa-3 ml-1 mr-3 text-xl-h5 text-lg-h5 text-md-h5 text-sm-h5 text-body-2" :class="isWide ? 'w-66' : 'w-100'">
<tbody>
<tr v-for="schedule in schedules">
<td>{{ parseDate(schedule.current_date) }} {{ schedule.weekday_name }} {{ schedule.stream_time }}</td>

View File

@ -24,4 +24,17 @@ export default {
height: 100vh;
}
@keyframes gradient {
0% {
background-position: 0 50%;
}
50% {
background-position: 100% 50%;
}
100% {
background-position: 0 50%;
}
}
</style>

View File

@ -0,0 +1,103 @@
<template>
<v-app>
<v-sheet class="bg-gradient h-100 w-100 d-flex justify-center">
<v-card :elevation="4" class="mt-5 mb-5 align-center justify-center h-auto rounded-lg main-sheet-bg w-75">
<v-card-title></v-card-title>
<v-card-text class="h-100 d-flex flex-column align-center justify-center">
<v-skeleton-loader type="text" v-if="fetching"></v-skeleton-loader>
<div v-if="!fetching">
<div class="d-flex flex-column align-center justify-center main-text">
<p class="text-h4 text-xl-h1 text-md-h2 text-sm-h3 ma-10">Юрий говорит:</p>
<p class="text-h5 text-xl-h2 text-md-h3 text-sm-h4 ma-10 vertical-center align-stretch">{{ currentPhrase }}</p>
</div>
<div class="d-flex align-center justify-center flex-column">
<v-btn
variant="elevated"
color="#94BBE9FF"
@click="reloadPhrase"
class="ml-10 mr-10 mt-3 mb-3">
Другая фраза
</v-btn>
<a
v-if="currentPhrase === secret"
href="/download/basya_answer.docx"
class="ml-10 mr-10 mt-3 mb-3">
<v-btn variant="elevated">Инструкция</v-btn>
</a>
</div>
</div>
</v-card-text>
</v-card>
</v-sheet>
</v-app>
</template>
<script>
import {ref} from 'vue';
import {useBasyaStore} from "../../stores/basya.js";
export default {
name: "Basya",
data: () => ({
secret: 'Для более быстрого результата, можете попробовать самостоятельно исправить ошибку по приложенной инструкции',
phrases: ref(),
fetching: true,
currentPhrase: ref(),
winWidth: ref(document.documentElement.clientWidth),
// size: ref(),
isLess: false,
basyaStore: useBasyaStore()
}),
methods: {
reloadPhrase(){
let newPhrase = this.phrases[Math.floor(Math.random() * this.phrases.length)].phrase;
if (newPhrase === this.currentPhrase){
this.reloadPhrase();
} else {
this.currentPhrase = newPhrase;
}
},
onResize(e) {
this.winWidth = ref(document.documentElement.clientWidth);
console.log(this.winWidth.value);
}
},
mounted() {
this.basyaStore.getPhrases().then(()=>{
this.phrases = this.basyaStore.phrases;
this.reloadPhrase();
this.fetching = false;
})
this.isLess = ref(this.winWidth.value <= 600 ? 'flex-column' : '');
/*
this.size = this.winWidth <= 600 ? 'x-small' :
this.winWidth > 600 && this.winWidth <= 960 ? 'small' :
this.winWidth > 960 && this.winWidth <= 1280 ? '' :
this.winWidth > 1280 && this.winWidth <= 1920 ? 'large' :
this.winWidth > 1920 ? 'x-large' : '';
*/
}
}
</script>
<style scoped>
.bg-gradient {
background: rgb(238, 174, 202)!important;
background: radial-gradient(circle, rgba(238, 174, 202, 1) 0%, rgba(148, 187, 233, 1) 100%)!important;
}
.main-sheet-bg {
background-color: #424242;
color: #E0E0E0;
text-decoration-color: #E0E0E0;
}
.main-text {
text-align: center;
}
.vertical-center {
justify-content: center;
}
</style>

View File

@ -3,8 +3,8 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Резюме</title>
@vite('resources/app.js')
<title>Basya says</title>
@vite('resources/basya.js')
@vite('resources/css/app.css')
</head>
<body class="antialiased">

View File

@ -0,0 +1,148 @@
<template>
<v-app>
<v-sheet :class="notFriday ? 'bg-gradient' : 'bg-gradient-friday'" class="h-100 w-100 d-flex justify-center">
<v-card class="w-75 mt-5 mb-5 align-center justify-center h-auto rounded-lg main-sheet-bg">
<v-card-text class="h-100 d-flex flex-column align-center justify-center">
<div v-if="!isFirst" class="text-xxl-h2 text-xl-h2 text-lg-h2 text-md-h2 text-h5 mb-10 mt-10 text-center">{{phrase}}</div>
<div v-if="notFriday && !isFirst" class="text-xxl-h2 text-xl-h2 text-lg-h2 text-md-h2 text-h5 mb-10 mt-10 text-center">Сегодня {{day}}</div>
<v-btn :class="notFriday ? '' : 'btn-friday'" elevation="4" color="#69b7eb" variant="elevated" @click="checkFriday">{{notFriday ? 'Сегодня пятница?' : 'Пятница!'}}</v-btn>
</v-card-text>
</v-card>
</v-sheet>
</v-app>
</template>
<script>
export default {
name: "Friday",
data: () => ({
noList: [
'Нет',
'Еще нет',
'До пятницы как до дембеля',
'Еще не скоро',
'К сожалению, сегодня не пятница',
'Еще работать и работать',
'Мечтаем о пятнице',
'Увы, сегодня не пятница'
],
yesList: [
'Да, сегодня пятница!',
'ЕЕЕЕЕЕЕЕЕЕЕЕ',
'Чизкейк уже съеден?',
'Что заказываем?',
'Надо взять чизкейк',
'По пивку?',
'Абсолютно верно, сегодня - пятница!',
'Да, пятница! Отличный повод отпраздновать!',
'Да, пятница! Не бывает лучшего дня недели'
],
isFirst: true,
notFriday: true,
dayList: {
1: 'Понедельник',
2: 'Вторник',
3: 'Среда',
4: 'Четверг',
5: 'Пятница',
6: 'Суббота',
7: 'Воскресенье'
},
phrase: '',
day: ''
}),
methods: {
getCurrentDay(){
let date = new Date();
return date.getDay();
},
checkFriday(){
this.isFirst = false;
let day = this.getCurrentDay();
this.notFriday = day !== 5;
this.day = this.dayList[day];
if (this.notFriday){
let prevPhrase = this.phrase;
while (this.phrase === prevPhrase){
const random = Math.floor(Math.random() * this.noList.length);
this.phrase = this.noList[random];
}
} else {
let prevPhrase = this.phrase;
while (this.phrase === prevPhrase){
const random = Math.floor(Math.random() * this.yesList.length);
this.phrase = this.yesList[random];
}
}
}
}
}
</script>
<style scoped>
.bg-gradient {
background: linear-gradient(90deg, #69b7eb, #b3dbd3, #f4d6db);
background-size: 200% 200%;
animation: gradient 15s ease infinite;
height: 100vh;
}
.bg-gradient-friday {
background: linear-gradient(-45deg, #ed193b, #a98055, #f286e2, #681d7a);
background-size: 200% 200%;
animation: gradient-friday 10s ease infinite;
height: 100vh;
}
.main-sheet-bg {
background-color: #424242;
color: #E0E0E0;
text-decoration-color: #E0E0E0;
}
.btn-friday {
animation: gradient-btn-friday 5s ease infinite;
}
@keyframes gradient {
0% {
background-position: 0% 50%;
}
50% {
background-position: 100% 50%;
}
100% {
background-position: 0% 50%;
}
}
@keyframes gradient-friday {
0% {
background-position: 0% 50%;
}
50% {
background-position: 100% 50%;
}
100% {
background-position: 0% 50%;
}
}
@keyframes gradient-btn-friday {
0% {
background-color: red;
}
25% {
background-color: #00ff00;
}
75% {
background-color: blue;
}
100% {
background-color: red;
}
}
</style>

View File

@ -0,0 +1,13 @@
<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Сегодня пятница?</title>
@vite('resources/friday.js')
@vite('resources/css/app.css')
</head>
<body class="antialiased">
<div id="app"></div>
</body>
</html>

View File

@ -1,18 +1,18 @@
<template>
<div>
<p class="text-h5 pb-3">Образование</p>
<v-table class="pb-5 main-sheet-bg">
<p class="text-xl-h3 text-lg-h4 text-md-h4 text-sm-h5 text-h6 pb-3">Образование</p>
<v-table class="pb-5 main-sheet-bg text-xl-h5 text-lg-h6 text-md-body-1 text-sm-body-1 text-body-2">
<tbody>
<tr>
<td>2020</td>
<td>
<td class="pb-2">2020</td>
<td class="pb-2">
<p>Братский государственный университет, Братск</p>
<p>Факультет экономики и управления, Прикладная информатика в экономике (бакалавриат)</p>
</td>
</tr>
<tr>
<td>2024</td>
<td>
<td class="pt-2 pb-2">2024</td>
<td class="pt-2 pb-2">
<p>Братский государственный университет, Братск</p>
<p>Факультет энергетики и автоматики, Веб технологии и информационный анализ данных (магистратура)</p>
</td>

View File

@ -1,15 +1,15 @@
<template>
<div>
<p class="text-h5 pb-3">Опыт работы</p>
<v-table class="pb-5 main-sheet-bg">
<p class="text-xl-h3 text-lg-h4 text-md-h4 text-sm-h5 text-h6 pb-3">Опыт работы</p>
<v-table class="pb-5 main-sheet-bg text-xl-h5 text-lg-h6 text-md-body-1 text-sm-body-1 text-body-2">
<tbody>
<tr>
<td>Февраль 2022 август 2023</td>
<td><p>Муниципальное казенное учреждение «Центр информационно-технического и транспортного обслуживания» муниципального образования города Братска</p></td>
<td class="pb-2">Февраль 2022 август 2023</td>
<td class="pb-2"><p>Муниципальное казенное учреждение «Центр информационно-технического и транспортного обслуживания» муниципального образования города Братска</p></td>
</tr>
<tr>
<td>Сентябрь 2023 по настоящее время</td>
<td>Государственное Автономное Учреждение «Иркутский областной многофункциональный центр предоставления государственных и муниципальных услуг»</td>
<td class="pt-2 pb-2">Сентябрь 2023 по настоящее время</td>
<td class="pt-2 pb-2">Государственное Автономное Учреждение «Иркутский областной многофункциональный центр предоставления государственных и муниципальных услуг»</td>
</tr>
</tbody>
</v-table>

View File

@ -1,11 +1,11 @@
<template>
<div>
<p class="text-h5 pb-3">Профессиональные навыки</p>
<p style="text-indent: 1em; text-align: justify" class="pb-5">Хорошо знаю Java, на прошлом месте работы в основном занимался разработкой консольных/десктопных приложений на данном языке
<p class="text-xl-h3 text-md-h4 text-sm-h5 text-h6 pb-3">Профессиональные навыки</p>
<p style="text-indent: 1em; text-align: justify" class="pb-5 text-body-2 text-xl-h5 text-lg-h6 text-md-body-1 text-sm-body-1">Хорошо знаю Java, на прошлом месте работы в основном занимался разработкой консольных/десктопных приложений на данном языке
(муниципальный сектор). Планирую в ближайшее время изучить Spring Framework. В работе активно использую Git. Из СУБД плотно работаю с
MySQL, Postgresql. Иногда по работе приходилось писать или дорабатывать небольшие сайты на HTML+CSS+JS (и иногда PHP) и
дорабатывать веб-приложение на ASP.NET (Жил. фонд). На текущем месте работы занимаюсь разработкой/дработкой сайтов и веб-приложений
на стеке Laravel+Vue. Так же переносил веб-приложение на десктоп с помощью фреймворка ElectronJs. В рамках программы ВУЗа изучал C#, Python, поверхностно проходил Django.
дорабатывать веб-приложение на ASP.NET (Жил. фонд). На текущем месте работы занимаюсь разработкой, доработкой и поддержкой сайтов и веб-приложений
на стеке Laravel+Vue и фреймворке Symfony. Так же переносил веб-приложение на десктоп с помощью фреймворка ElectronJs. В рамках программы ВУЗа изучал C#, Python, поверхностно проходил Django.
Владею английским языком на среднем уровне.</p>
</div>
</template>

View File

@ -1,6 +1,6 @@
<template>
<div class="d-flex justify-end align-center">
<v-table class="main-sheet-bg pl-5" :class="[this.isWide ? 'w-25' : 'w-66']" style="text-align: left">
<v-table class="main-sheet-bg text-xxl-h6 text-xl-body-1 text-lg-body-1 text-md-body-1 text-sm-body-1 text-caption pl-5" :class="[this.isMore700 ? this.isWide ? 'w-25' : 'w-66' : 'w-100']" style="text-align: left">
<tbody>
<tr>
<td><v-icon :icon="`mdi-account`"></v-icon>Возраст</td>
@ -20,8 +20,8 @@
</tr>
</tbody>
</v-table>
<div class="w-33">
<v-img class="image-gradient" src="./resume.png"></v-img>
<div v-if="this.isMore700" class="w-33">
<v-img class="image-gradient" src="./images/resume.png"></v-img>
</div>
</div>
</template>
@ -38,7 +38,8 @@ export default {
},
windowHeight: document.documentElement.clientHeight,
windowWidth: document.documentElement.clientWidth,
isWide: window.innerWidth > 1000,
isWide: window.innerWidth > 1920,
isMore700: window.innerWidth > 700,
tableClass: 'w-25'
}),
created() {
@ -52,13 +53,18 @@ export default {
myEventHandler(e) {
this.windowHeight = document.documentElement.clientHeight;
this.windowWidth = document.documentElement.clientWidth;
if (this.windowWidth < 1000){
if (this.windowWidth < 1750){
this.isWide = false;
this.tableClass = 'w-66';
} else {
this.isWide = true;
this.tableClass = 'w-33';
}
if (this.windowWidth < 700){
this.isMore700 = false;
} else {
this.isMore700 = true;
}
}
}
}

View File

@ -0,0 +1,29 @@
<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Резюме</title>
@vite('resources/app.js')
@vite('resources/css/app.css')
<!-- Yandex.Metrika counter -->
<script type="text/javascript" >
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();
for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }}
k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(97497664, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true
});
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/97497664" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->
</head>
<body class="antialiased">
<div id="app"></div>
</body>
</html>

View File

@ -6,6 +6,22 @@
<title>Информация о трансляциях</title>
@vite('resources/welcome.js')
@vite('resources/css/app.css')
<!-- Yandex.Metrika counter -->
<script type="text/javascript" >
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();
for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }}
k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(97497583, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true
});
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/97497583" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->
</head>
<body class="antialiased">
<div id="app"></div>

View File

@ -18,3 +18,5 @@ Route::get('/', 'App\Http\Controllers\Api\V1\CaesarController@index')->name('cae
Route::get('/links', 'App\Http\Controllers\LinksController@index')->name('links');
Route::get('/schedules', 'App\Http\Controllers\SchedulesController@index')->name('schedules');
Route::get('/dates', 'App\Http\Controllers\SchedulesController@mmDate')->name('dates');
Route::get('/phrases', 'App\Http\Controllers\BasyaPhrasesController@index')->name('phrases');
Route::post('/rating', 'App\Http\Controllers\RatingController@index')->name('rating');

View File

@ -1,7 +1,6 @@
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\DownloadController;
/*
|--------------------------------------------------------------------------
@ -26,4 +25,17 @@ Route::get('/resume', function () {
return view('resume/resume');
});
Route::get('/basya', function () {
return view('basya/basya');
});
Route::get('/friday', function () {
return view('friday/friday');
});
Route::get('/download/{file}', 'App\Http\Controllers\DownloadController@download');
Route::group(['prefix' => 'admin'], function () {
Voyager::routes();
});

View File

@ -6,7 +6,14 @@ export default defineConfig({
plugins: [
vue(),
laravel({
input: ['resources/css/app.css', 'resources/app.js', 'resources/welcome.js', 'resources/caesar.js'],
input: [
'resources/css/app.css',
'resources/app.js',
'resources/welcome.js',
'resources/caesar.js',
'resources/basya.js',
'resources/friday.js'
],
refresh: true,
}),
],