Compare commits
87 Commits
feature-pr
...
master
Author | SHA1 | Date | |
---|---|---|---|
|
d4e8f3b329 | ||
|
5f210dfd7c | ||
|
48c5937b6e | ||
|
d5f2690b54 | ||
|
42aea0d4c3 | ||
|
c6c6ddeb3e | ||
|
5c79d92fa1 | ||
|
300f027a36 | ||
|
30afd5eff8 | ||
|
126656d14e | ||
|
6411058c45 | ||
|
7c46d1f9c2 | ||
|
e6827b7c62 | ||
|
7615ca7605 | ||
|
35a93c343e | ||
|
e04bc5ba98 | ||
|
d128e6f90a | ||
|
315a0ab0d7 | ||
|
409faab0f9 | ||
|
803d7a0af6 | ||
|
7c0f2897a2 | ||
|
c9869ac46d | ||
|
3eb8911bf8 | ||
|
38eef7ef01 | ||
|
bc7509423d | ||
|
55221c066c | ||
|
e6cfe9e335 | ||
|
7d4ab28285 | ||
|
be63dccac2 | ||
|
bdb9abaca5 | ||
|
09ab753ad8 | ||
|
aa9e28fd06 | ||
|
788027b9a3 | ||
|
06330e9d3c | ||
|
a056815a69 | ||
|
876f5c5a04 | ||
|
2c3dc0d4f1 | ||
|
6ab6c63d12 | ||
|
554a13937e | ||
|
fd1f1b4e42 | ||
|
297efe6192 | ||
|
def60a3f46 | ||
|
d11007189a | ||
|
6fbd16030f | ||
|
23f215c928 | ||
|
25e5d6495f | ||
|
4ab7d723ca | ||
|
1442012444 | ||
|
542e8dcb86 | ||
|
f67cea49d0 | ||
|
c1ad77ea39 | ||
|
60c8712a31 | ||
|
5f2dd17dbb | ||
|
c3a48c8da8 | ||
|
480dbba1f2 | ||
|
6d83fe2de4 | ||
|
dfef3e7342 | ||
|
33fd8f4edd | ||
|
8b6099518b | ||
|
6271c0ca09 | ||
|
0b5dee6275 | ||
|
f07fe574d9 | ||
|
764ffcebe9 | ||
|
b94dfa1742 | ||
|
68dfc5d834 | ||
|
4878285cde | ||
|
c39510d8c6 | ||
|
5814ad96ad | ||
|
314f49f0c9 | ||
|
842ce12aca | ||
|
b5650a92b5 | ||
|
b94609f99d | ||
|
3c08e0ea8a | ||
|
413fb0571f | ||
|
ecf684df60 | ||
|
bcd88ef1b3 | ||
|
32c7b4a566 | ||
|
c668294a0c | ||
|
085d2ce227 | ||
|
c23ad28c4c | ||
|
576028fa67 | ||
|
e30d087cdd | ||
|
8fe58dd8fa | ||
|
3ca664624f | ||
|
94d3dbb104 | ||
|
d644ef04e7 | ||
|
224ab282fc |
94
README.md
|
@ -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
|
||||
```
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class GamesController extends Controller
|
||||
{
|
||||
//
|
||||
}
|
|
@ -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];
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
|
@ -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';
|
||||
}
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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'
|
||||
|
||||
];
|
|
@ -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
|
||||
],
|
||||
]*/
|
||||
],
|
||||
];
|
|
@ -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();
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -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();
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -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();
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -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();
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -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');
|
||||
}
|
||||
};
|
|
@ -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');
|
||||
}
|
||||
};
|
|
@ -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,
|
||||
]);
|
||||
}
|
||||
}
|
|
@ -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]);
|
||||
}
|
||||
}
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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',
|
||||
]);
|
||||
}
|
||||
}
|
|
@ -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()
|
||||
);
|
||||
}
|
||||
}
|
|
@ -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');
|
||||
}
|
||||
}
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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]);
|
||||
}
|
||||
}
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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,
|
||||
]);
|
||||
}
|
||||
}
|
|
@ -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,
|
||||
]);
|
||||
}
|
||||
}
|
|
@ -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 }}."
|
After Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 1023 KiB After Width: | Height: | Size: 1023 KiB |
After Width: | Height: | Size: 7.9 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 92 KiB |
After Width: | Height: | Size: 19 KiB |
|
@ -5,7 +5,7 @@
|
|||
</template>
|
||||
|
||||
<script>
|
||||
import Resume from "./views/Resume/Resume.vue";
|
||||
import Resume from "./views/resume/Resume.vue";
|
||||
|
||||
export default {
|
||||
name: "App",
|
||||
|
|
|
@ -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")
|
|
@ -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;
|
||||
}
|
|
@ -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");
|
|
@ -1,15 +0,0 @@
|
|||
import {defineStore} from "pinia";
|
||||
|
||||
export const useScheduleStore = defineStore('Schedule', {
|
||||
state: () => ({
|
||||
fetchingDates: true,
|
||||
fetchingTable: true,
|
||||
fetchingLinks: true
|
||||
}),
|
||||
getters: {
|
||||
|
||||
},
|
||||
actions: {
|
||||
|
||||
},
|
||||
})
|
|
@ -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;
|
||||
});
|
||||
}
|
||||
},
|
||||
})
|
|
@ -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;
|
||||
})
|
||||
}
|
||||
|
||||
},
|
||||
})
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
|
@ -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">
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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>
|
|
@ -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>
|
||||
|
|
|
@ -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');
|
||||
|
|
|
@ -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();
|
||||
});
|
||||
|
|
|
@ -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,
|
||||
}),
|
||||
],
|
||||
|
|