Revize e765fd91
Přidáno uživatelem Marek Lovčí před téměř 5 roky(ů)
README.md | ||
---|---|---|
1 | 1 |
# Aplikace pro muzea - MERLOT |
2 | 2 |
|
3 |
###### Jak zprovoznit projekt:
|
|
3 |
## Jak zprovoznit projekt
|
|
4 | 4 |
|
5 | 5 |
1. Stáhněte **PHPStorm** (zdarma přes školní licenci), **PHP** (ideálně verze 7.4 a výš, minimálně verze 7.2.5) a **Composer**. Všechny tyto nainstalujte (PHP se neinstaluje). |
6 | 6 |
2. Ve složce s PHP přejmenujte _php.ini-developement_ na _php.ini_ a v souboru odkomentujte všechny extension kromě _ffi_, _ftp_, _mbstring_, _exif_, _oci8_12c_, _openssl_, _pdo_firebird_, _pdo_oci_. |
... | ... | |
15 | 15 |
8. V PHPStorm v **Run/Edit Configurations** přidejte **PHP Build-in Web Server** , jeho _document root_ je složka projektu a _use router script_ ukazuje na **server.php** ve stejné složce. |
16 | 16 |
9. Spusťte projekt projekt. Na localhost by vám měl vyjet nápis **Laravel** s funkčním menu. |
17 | 17 |
|
18 |
###### Jak zprovoznit databázi:
|
|
18 |
## Jak zprovoznit databázi
|
|
19 | 19 |
|
20 | 20 |
1. Zajistěte databázi se spojením určeným v souboru `.env`. |
21 | 21 |
2. Spusťte v terminálu (PHPStorm nebo cmd ve složce projektu) příkaz `php artisan migrate`. |
22 | 22 |
|
23 |
###### SQLite databáze:
|
|
23 |
### SQLite databáze
|
|
24 | 24 |
|
25 | 25 |
1. Soubor SQLite databáze umístěte do `database\database.sqlite` (může to být i nový prázdný soubor). |
26 | 26 |
2. Pro připojení k databázi je v potřeba v souboru `.env` nastavit `DB_CONNECTION=sqlite` (ostatní nastavení pro databázi odstranit). |
27 | 27 |
3. Pro **čistou** migraci spusťte příkaz `php artisan migrate:fresh`. |
28 | 28 |
|
29 |
###### Jak zprovoznit bootstrap a kompilaci SASS souborů: |
|
29 |
### Seeding |
|
30 |
|
|
31 |
Pro vygenerování testovacích dat stačí spustit "seed". |
|
32 |
|
|
33 |
```shell script |
|
34 |
php artisan db:seed |
|
35 |
``` |
|
36 |
|
|
37 |
Případně `php artisan migrate:refresh --seed`. |
|
38 |
|
|
39 |
Migrace dat z Mockaroo je tímto okamžikem obsolete. |
|
40 |
|
|
41 |
## Jak zprovoznit bootstrap a kompilaci SASS souborů |
|
30 | 42 |
|
31 | 43 |
1. Ujistěte se, že v sekci **Run/Edit Configurations** máte nastavený **Document root** na složku `public` v kořenovém adresáři (jinak aplikace **nenajde** vygenerované css soubory). |
32 | 44 |
2. Spusťte `composer install` (soubor pro composer už by měl být updatován) pro nainstalování balíčku `laravel/ui`. |
app/Artefact.php | ||
---|---|---|
7 | 7 |
class Artefact extends Model |
8 | 8 |
{ |
9 | 9 |
// Table Name |
10 |
protected $table = 'artefacts';//unnecessery?
|
|
10 |
protected $table = 'artefacts'; |
|
11 | 11 |
// Primary Key |
12 |
public $primaryKey = 'id';//unnecessery? |
|
13 |
|
|
14 |
/** |
|
15 |
* The model's default values for attributes. |
|
16 |
* |
|
17 |
* @var array |
|
18 |
*/ |
|
19 |
/*protected $attributes = [ |
|
20 |
'likes' => 0, |
|
21 |
];*/ |
|
12 |
public $primaryKey = 'id'; |
|
22 | 13 |
|
23 | 14 |
/** |
24 | 15 |
* Indicates if the model should be timestamped. |
... | ... | |
50 | 41 |
{ |
51 | 42 |
return $this->belongsToMany('App\User'); |
52 | 43 |
} |
53 |
|
|
54 |
|
|
55 |
|
|
56 | 44 |
} |
app/ArtefactUser.php | ||
---|---|---|
1 |
<?php |
|
2 |
|
|
3 |
namespace App; |
|
4 |
|
|
5 |
use Illuminate\Database\Eloquent\Model; |
|
6 |
|
|
7 |
class ArtefactUser extends Model |
|
8 |
{ |
|
9 |
// Table Name |
|
10 |
protected $table = 'artefact_user';//unnecessery? |
|
11 |
// Primary Key |
|
12 |
public $primaryKey = 'artefact_id';//unnecessery? |
|
13 |
|
|
14 |
/** |
|
15 |
* Indicates if the model should be timestamped. |
|
16 |
* |
|
17 |
* @var bool |
|
18 |
*/ |
|
19 |
public $timestamps = false; |
|
20 |
|
|
21 |
|
|
22 |
|
|
23 |
|
|
24 |
} |
app/Category.php | ||
---|---|---|
9 | 9 |
// Table Name |
10 | 10 |
protected $table = 'categories'; |
11 | 11 |
// Primary Key |
12 |
public $primaryKey = 'id';//unnecessery? |
|
13 |
|
|
12 |
public $primaryKey = 'id'; |
|
14 | 13 |
|
15 | 14 |
/** |
16 | 15 |
* Indicates if the model should be timestamped. |
... | ... | |
20 | 19 |
public $timestamps = false; |
21 | 20 |
|
22 | 21 |
/** |
23 |
* Get the artefacts for the catagory.
|
|
22 |
* Get the artefacts for the category.
|
|
24 | 23 |
*/ |
25 | 24 |
public function artefacts() |
26 | 25 |
{ |
27 | 26 |
return $this->belongsToMany('App\Artefact'); |
28 | 27 |
} |
29 |
|
|
30 |
|
|
31 | 28 |
} |
app/Http/Controllers/Auth/LoginController.php | ||
---|---|---|
26 | 26 |
* |
27 | 27 |
* @var string |
28 | 28 |
*/ |
29 |
protected $redirectTo = RouteServiceProvider::HOME;
|
|
29 |
protected $redirectTo = RouteServiceProvider::CATEGORIES;
|
|
30 | 30 |
|
31 | 31 |
/** |
32 | 32 |
* Create a new controller instance. |
app/Http/Controllers/CategoriesController.php | ||
---|---|---|
1 |
<?php |
|
2 |
|
|
3 |
namespace App\Http\Controllers; |
|
4 |
|
|
5 |
use App\ArtefactCategory; |
|
6 |
use App\Category; |
|
7 |
use Illuminate\Support\Facades\Auth; |
|
8 |
use App\User; |
|
9 |
|
|
10 |
class CategoriesController extends Controller |
|
11 |
{ |
|
12 |
public function __construct() |
|
13 |
{ |
|
14 |
$this->middleware('auth'); |
|
15 |
} |
|
16 |
|
|
17 |
public function calculateClusters($categoriesCount) |
|
18 |
{ |
|
19 |
if(isset($categoriesCount)) |
|
20 |
{ |
|
21 |
$min = PHP_INT_MAX; |
|
22 |
$max = PHP_INT_MIN; |
|
23 |
foreach($categoriesCount as $category) |
|
24 |
{ |
|
25 |
$c = count($category); |
|
26 |
if($c < $min) |
|
27 |
{ |
|
28 |
$min = $c; |
|
29 |
} |
|
30 |
|
|
31 |
if($c > $max) |
|
32 |
{ |
|
33 |
$max = $c; |
|
34 |
} |
|
35 |
} |
|
36 |
$center = $min + (($max - $min)/2); |
|
37 |
return array($min, $center, $max); |
|
38 |
} |
|
39 |
else |
|
40 |
{ |
|
41 |
return null; |
|
42 |
} |
|
43 |
} |
|
44 |
|
|
45 |
/** |
|
46 |
* Display a listing of the resource. |
|
47 |
* |
|
48 |
* @return \Illuminate\Http\Response |
|
49 |
*/ |
|
50 |
public function index() |
|
51 |
{ |
|
52 |
if(isset(Auth::user()->id)) |
|
53 |
{ |
|
54 |
$userId = Auth::user()->id; |
|
55 |
|
|
56 |
$categoryNames = Category::all(); |
|
57 |
$countCategory = count($categoryNames); |
|
58 |
$categories = array(); |
|
59 |
for($i = 1; $i <= $countCategory;$i++) |
|
60 |
{ |
|
61 |
array_push($categories, Category::find($i)->artefacts()->get()); |
|
62 |
} |
|
63 |
$clusters = $this->calculateClusters($categories); |
|
64 |
|
|
65 |
$categorySizes = array(); |
|
66 |
if(isset($clusters)) |
|
67 |
{ |
|
68 |
foreach($categories as $category) |
|
69 |
{ |
|
70 |
$c = count($category); |
|
71 |
$type1 = abs($clusters['0'] - $c); |
|
72 |
$type2 = abs($clusters['1'] - $c); |
|
73 |
$type3 = abs($clusters['2'] - $c); |
|
74 |
|
|
75 |
if($type1 <= $type2 && $type1 <= $type3) |
|
76 |
{ |
|
77 |
array_push($categorySizes, 1); |
|
78 |
} |
|
79 |
else if($type2 <= $type1 && $type2 <= $type3) |
|
80 |
{ |
|
81 |
array_push($categorySizes, 2); |
|
82 |
} |
|
83 |
else |
|
84 |
{ |
|
85 |
array_push($categorySizes, 3); |
|
86 |
} |
|
87 |
} |
|
88 |
} |
|
89 |
|
|
90 |
$data = array( |
|
91 |
'title' => 'Categories', |
|
92 |
'user' => User::find($userId), |
|
93 |
'count' => $countCategory, |
|
94 |
'categories' => $categories, |
|
95 |
'categorySizes' => $categorySizes, |
|
96 |
'categoryNames' => $categoryNames |
|
97 |
); |
|
98 |
return view('categories.index') -> with($data); |
|
99 |
} |
|
100 |
else |
|
101 |
{ |
|
102 |
$data = array( |
|
103 |
'title' => 'Welcome to the MERLOT page', |
|
104 |
); |
|
105 |
return view('pages.index') -> with($data); |
|
106 |
} |
|
107 |
} |
|
108 |
} |
app/Http/Controllers/DetailsController.php | ||
---|---|---|
39 | 39 |
$data = array( |
40 | 40 |
'id' => $id, |
41 | 41 |
'arrArtefact' => Artefact::find($id), |
42 |
'likes' => ArtefactUser::where('artefact_id', $id)->count(),
|
|
42 |
'likes' => Artefact::find($id)->users()->count(),
|
|
43 | 43 |
'metadata' => Metadata::where('artefact_id', $id)->get() |
44 | 44 |
); |
45 | 45 |
return view('detail.index') -> with($data); |
app/Http/Controllers/FavoriteArtefactsController.php | ||
---|---|---|
1 |
<?php |
|
2 |
|
|
3 |
namespace App\Http\Controllers; |
|
4 |
|
|
5 |
use App\ArtefactUser; |
|
6 |
use Illuminate\Support\Facades\Auth; |
|
7 |
use App\User; |
|
8 |
use App\Artefact; |
|
9 |
use App\Http\Controllers\Image; |
|
10 |
|
|
11 |
class FavoriteArtefactsController extends Controller |
|
12 |
{ |
|
13 |
public function __construct() |
|
14 |
{ |
|
15 |
$this->middleware('auth'); |
|
16 |
} |
|
17 |
|
|
18 |
/** |
|
19 |
* Display a listing of the resource. |
|
20 |
* |
|
21 |
* @return \Illuminate\Http\Response |
|
22 |
*/ |
|
23 |
public function index() |
|
24 |
{ |
|
25 |
if(Auth::check()) |
|
26 |
{ |
|
27 |
$id = Auth::id(); |
|
28 |
$artefacts = User::find($id)->likesArtefacts()->get(); |
|
29 |
foreach($artefacts as $item) |
|
30 |
{ |
|
31 |
$item['likes'] = Artefact::find($item->id)->users()->count(); |
|
32 |
} |
|
33 |
|
|
34 |
$data = array( |
|
35 |
'title' => 'Favorite artefacts', |
|
36 |
'user' => $id, |
|
37 |
'artefacts' => $artefacts |
|
38 |
); |
|
39 |
return view('favartefacts.index') -> with($data); |
|
40 |
} |
|
41 |
else |
|
42 |
{ |
|
43 |
$data = array( |
|
44 |
'title' => 'Welcome to the MERLOT page', |
|
45 |
); |
|
46 |
//return view('index', compact('title')); |
|
47 |
return view('pages.index') -> with($data); |
|
48 |
} |
|
49 |
} |
|
50 |
|
|
51 |
/** |
|
52 |
* Display the specified resource. |
|
53 |
* |
|
54 |
* @param int $id |
|
55 |
* @return \Illuminate\Http\Response |
|
56 |
*/ |
|
57 |
public function show($id) |
|
58 |
{ |
|
59 |
$artefacts = User::find($id)->likesArtefacts()->get(); |
|
60 |
foreach($artefacts as $item) |
|
61 |
{ |
|
62 |
$item['likes'] = Artefact::find($item->id)->users()->count(); |
|
63 |
} |
|
64 |
|
|
65 |
|
|
66 |
$data = array( |
|
67 |
'title' => 'Favorite artefacts', |
|
68 |
'id' => $id, |
|
69 |
'user' => User::find($id), |
|
70 |
'userId' => Auth::id(), |
|
71 |
'artefacts' => $artefacts |
|
72 |
); |
|
73 |
return view('favartefacts.index') -> with($data); |
|
74 |
} |
|
75 |
|
|
76 |
} |
app/Http/Controllers/FavoriteMetadataController.php | ||
---|---|---|
1 |
<?php |
|
2 |
|
|
3 |
namespace App\Http\Controllers; |
|
4 |
|
|
5 |
use App\Metadata; |
|
6 |
use App\User; |
|
7 |
use Illuminate\Http\Request; |
|
8 |
use Illuminate\Support\Facades\Auth; |
|
9 |
|
|
10 |
class FavoriteMetadataController extends Controller |
|
11 |
{ |
|
12 |
public function __construct() |
|
13 |
{ |
|
14 |
$this->middleware('auth'); |
|
15 |
} |
|
16 |
|
|
17 |
public function index() |
|
18 |
{ |
|
19 |
$metadata = User::find(Auth::id())->likesMetadata()->get(); |
|
20 |
|
|
21 |
return view('favmetadata.index', ['metadata' => $metadata]); |
|
22 |
} |
|
23 |
|
|
24 |
} |
app/Metadata.php | ||
---|---|---|
7 | 7 |
class Metadata extends Model |
8 | 8 |
{ |
9 | 9 |
// Table Name |
10 |
protected $table = 'metadata';//same name could make problems
|
|
10 |
protected $table = 'metadata'; |
|
11 | 11 |
// Primary Key |
12 |
public $primaryKey = 'id';//unnecessery? |
|
13 |
|
|
14 |
/** |
|
15 |
* The model's default values for attributes. |
|
16 |
* |
|
17 |
* @var array |
|
18 |
*/ |
|
19 |
/*protected $attributes = [ |
|
20 |
'likes' => 0, |
|
21 |
];*/ |
|
12 |
public $primaryKey = 'id'; |
|
22 | 13 |
|
23 | 14 |
/** |
24 | 15 |
* Indicates if the model should be timestamped. |
... | ... | |
34 | 25 |
return $this->belongsTo('App\Artefact'); |
35 | 26 |
} |
36 | 27 |
|
37 |
|
|
28 |
/** |
|
29 |
* Get the users for the metadata. |
|
30 |
*/ |
|
31 |
public function users() |
|
32 |
{ |
|
33 |
return $this->belongsToMany('App\User'); |
|
34 |
} |
|
38 | 35 |
} |
app/Providers/RouteServiceProvider.php | ||
---|---|---|
23 | 23 |
*/ |
24 | 24 |
public const HOME = '/artefact'; |
25 | 25 |
|
26 |
/** |
|
27 |
* The path to categories. |
|
28 |
* |
|
29 |
* @var string |
|
30 |
*/ |
|
31 |
public const CATEGORIES = '/categories'; |
|
32 |
|
|
26 | 33 |
/** |
27 | 34 |
* Define your route model bindings, pattern filters, etc. |
28 | 35 |
* |
app/User.php | ||
---|---|---|
2 | 2 |
|
3 | 3 |
namespace App; |
4 | 4 |
|
5 |
use Illuminate\Contracts\Auth\MustVerifyEmail; |
|
6 | 5 |
use Illuminate\Foundation\Auth\User as Authenticatable; |
7 | 6 |
use Illuminate\Notifications\Notifiable; |
8 | 7 |
|
... | ... | |
13 | 12 |
// Table Name |
14 | 13 |
protected $table = 'users'; |
15 | 14 |
// Primary Key |
16 |
public $primaryKey = 'id';//unnecessery?
|
|
15 |
public $primaryKey = 'id'; |
|
17 | 16 |
|
18 | 17 |
/** |
19 | 18 |
* The attributes that are mass assignable. |
... | ... | |
45 | 44 |
/** |
46 | 45 |
* Get the artefacts for the user. |
47 | 46 |
*/ |
48 |
public function likes() |
|
47 |
public function likesArtefacts()
|
|
49 | 48 |
{ |
50 |
return $this->hasMany('App\Artefact'); |
|
49 |
return $this->belongsToMany('App\Artefact'); |
|
50 |
} |
|
51 |
|
|
52 |
/** |
|
53 |
* Get the metadata for the user. |
|
54 |
*/ |
|
55 |
public function likesMetadata() |
|
56 |
{ |
|
57 |
return $this->belongsToMany('App\Metadata'); |
|
51 | 58 |
} |
52 | 59 |
} |
database/factories/ArtefactFactory.php | ||
---|---|---|
1 |
<?php |
|
2 |
|
|
3 |
/** @var Factory $factory */ |
|
4 |
/** @var Faker $faker */ |
|
5 |
|
|
6 |
use App\Artefact; |
|
7 |
use App\Category; |
|
8 |
use Faker\Generator as Faker; |
|
9 |
use Illuminate\Database\Eloquent\Factory; |
|
10 |
|
|
11 |
$factory->define(Artefact::class, function ($faker) { |
|
12 |
return [ |
|
13 |
'name' => $faker->opera, |
|
14 |
'author' => $faker->name, |
|
15 |
'made_in' => $faker->countryCode, |
|
16 |
'publisher' => $faker->company, |
|
17 |
'year' => rand(1800, 2020), |
|
18 |
'pages' => rand(0, 2000), |
|
19 |
'main_category_id' => factory(Category::class)->create()->id, |
|
20 |
]; |
|
21 |
}); |
database/factories/CategoryFactory.php | ||
---|---|---|
1 |
<?php |
|
2 |
|
|
3 |
/** @var Factory $factory */ |
|
4 |
|
|
5 |
use App\Category; |
|
6 |
use Faker\Generator as Faker; |
|
7 |
use Illuminate\Database\Eloquent\Factory; |
|
8 |
|
|
9 |
$factory->define(Category::class, function (Faker $faker) { |
|
10 |
return [ |
|
11 |
'nameCZ' => $faker->colorName, |
|
12 |
'nameEN' => $faker->hexColor, |
|
13 |
]; |
|
14 |
}); |
database/factories/MetadataFactory.php | ||
---|---|---|
1 |
<?php |
|
2 |
|
|
3 |
/** @var Factory $factory */ |
|
4 |
/** @var Faker $faker */ |
|
5 |
|
|
6 |
use App\Artefact; |
|
7 |
use App\Metadata; |
|
8 |
use Faker\Generator as Faker; |
|
9 |
use Illuminate\Database\Eloquent\Factory; |
|
10 |
|
|
11 |
$factory->define(Metadata::class, function ($faker) use ($factory) { |
|
12 |
return [ |
|
13 |
'name' => $faker->streetName, |
|
14 |
'noteCZ' => $faker->paragraph, |
|
15 |
'noteEN' => $faker->paragraph, |
|
16 |
'page' => rand(0, 2000), |
|
17 |
'artefact_id' => factory(Artefact::class)->create()->id |
|
18 |
]; |
|
19 |
}); |
database/factories/UserFactory.php | ||
---|---|---|
1 | 1 |
<?php |
2 | 2 |
|
3 |
/** @var \Illuminate\Database\Eloquent\Factory $factory */
|
|
3 |
/** @var Factory $factory */ |
|
4 | 4 |
|
5 | 5 |
use App\User; |
6 | 6 |
use Faker\Generator as Faker; |
7 |
use Illuminate\Database\Eloquent\Factory; |
|
7 | 8 |
use Illuminate\Support\Str; |
8 | 9 |
|
9 | 10 |
/* |
... | ... | |
22 | 23 |
'name' => $faker->name, |
23 | 24 |
'email' => $faker->unique()->safeEmail, |
24 | 25 |
'email_verified_at' => now(), |
25 |
'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password
|
|
26 |
'password' => bcrypt($faker->unique()->password),
|
|
26 | 27 |
'remember_token' => Str::random(10), |
28 |
'created_at' => now(), |
|
29 |
'updated_at' => now(), |
|
27 | 30 |
]; |
28 | 31 |
}); |
database/migrations/2020_04_10_000000_CreateMetadataUserTable.php | ||
---|---|---|
1 |
<?php |
|
2 |
|
|
3 |
use Illuminate\Database\Migrations\Migration; |
|
4 |
use Illuminate\Database\Schema\Blueprint; |
|
5 |
use Illuminate\Support\Facades\Schema; |
|
6 |
|
|
7 |
class CreateMetadataUserTable extends Migration |
|
8 |
{ |
|
9 |
/** |
|
10 |
* Run the migrations. |
|
11 |
* |
|
12 |
* @return void |
|
13 |
*/ |
|
14 |
public function up() |
|
15 |
{ |
|
16 |
Schema::create('metadata_user', function (Blueprint $table) { |
|
17 |
$table->unsignedBigInteger('metadata_id'); |
|
18 |
$table->unsignedBigInteger('user_id'); |
|
19 |
$table->foreign('metadata_id')->references('id')->on('metadata'); |
|
20 |
$table->foreign('user_id')->references('id')->on('users'); |
|
21 |
}); |
|
22 |
} |
|
23 |
|
|
24 |
/** |
|
25 |
* Reverse the migrations. |
|
26 |
* |
|
27 |
* @return void |
|
28 |
*/ |
|
29 |
public function down() |
|
30 |
{ |
|
31 |
Schema::dropIfExists('metadata_user'); |
|
32 |
} |
|
33 |
} |
database/seeds/DatabaseSeeder.php | ||
---|---|---|
1 | 1 |
<?php |
2 | 2 |
|
3 | 3 |
use Illuminate\Database\Seeder; |
4 |
use Illuminate\Support\Facades\DB; |
|
5 |
use Illuminate\Support\Str; |
|
4 | 6 |
|
5 | 7 |
class DatabaseSeeder extends Seeder |
6 | 8 |
{ |
... | ... | |
11 | 13 |
*/ |
12 | 14 |
public function run() |
13 | 15 |
{ |
14 |
// $this->call(UsersTableSeeder::class); |
|
16 |
DB::table('users')->insert([ |
|
17 |
'name' => 'admin', |
|
18 |
'email' => 'admin@kaplicky.com', |
|
19 |
'email_verified_at' => now(), |
|
20 |
'password' => bcrypt('admin'), |
|
21 |
'remember_token' => Str::random(10), |
|
22 |
'created_at' => now(), |
|
23 |
'updated_at' => now(), |
|
24 |
]); |
|
25 |
|
|
26 |
// Populate users |
|
27 |
factory(App\User::class, 19)->create(); |
|
28 |
|
|
29 |
// Populate categories |
|
30 |
factory(App\Category::class, 80)->create(); |
|
31 |
|
|
32 |
// Populate artefacts with metadata |
|
33 |
factory(App\Artefact::class, 300)->create()->each(function ($u) { |
|
34 |
$u->metadata()->saveMany(factory(App\Metadata::class, 10)->make()); |
|
35 |
}); |
|
36 |
|
|
37 |
// Get all the categories attaching up to 1 random categories to each user |
|
38 |
$categories = App\Category::all(); |
|
39 |
|
|
40 |
// Populate the artefact_category pivot table |
|
41 |
App\Artefact::all()->each(function ($artefact) use ($categories) { |
|
42 |
$artefact->categories()->attach( |
|
43 |
$categories->random(1)->pluck('id')->toArray() |
|
44 |
); |
|
45 |
}); |
|
46 |
|
|
47 |
// Get all the metadata attaching up to 50 random metadata to each user |
|
48 |
$artefacts = App\Metadata::all(); |
|
49 |
|
|
50 |
// Populate the artefact_user pivot table |
|
51 |
App\User::all()->each(function ($user) use ($artefacts) { |
|
52 |
$user->likesArtefacts()->attach( |
|
53 |
$artefacts->random(rand(1, 50))->pluck('id')->toArray() |
|
54 |
); |
|
55 |
}); |
|
56 |
|
|
57 |
// Get all the metadata attaching up to 50 random metadata to each user |
|
58 |
$metadata = App\Metadata::all(); |
|
59 |
|
|
60 |
// Populate the metadata_user pivot table |
|
61 |
App\User::all()->each(function ($user) use ($metadata) { |
|
62 |
$user->likesMetadata()->attach( |
|
63 |
$metadata->random(rand(1, 50))->pluck('id')->toArray() |
|
64 |
); |
|
65 |
}); |
|
15 | 66 |
} |
16 | 67 |
} |
public/css/app.css | ||
---|---|---|
1 |
@import url(https://fonts.googleapis.com/css?family=Nunito);@charset "UTF-8"; |
|
1 |
@import url(https://fonts.googleapis.com/css?family=Nunito);@import url(https://db.onlinewebfonts.com/c/2090551770be22b09600a40b0b4673b7?family=Avenir+Medium);@import url(https://db.onlinewebfonts.com/c/275de2221d9f0c4c9257d17f5a1e4006?family=Avenir+Black);@import url(https://db.onlinewebfonts.com/c/1a045963159927274c92b0444fb83c17?family=Avenir);@charset "UTF-8";
|
|
2 | 2 |
|
3 | 3 |
/*! |
4 | 4 |
* Bootstrap v4.4.1 (https://getbootstrap.com/) |
... | ... | |
18 | 18 |
--green: #38c172; |
19 | 19 |
--teal: #4dc0b5; |
20 | 20 |
--cyan: #6cb2eb; |
21 |
--white: #fff; |
|
21 |
--white: #ffffff;
|
|
22 | 22 |
--gray: #6c757d; |
23 | 23 |
--gray-dark: #343a40; |
24 | 24 |
--primary: #3490dc; |
... | ... | |
546 | 546 |
kbd { |
547 | 547 |
padding: 0.2rem 0.4rem; |
548 | 548 |
font-size: 87.5%; |
549 |
color: #fff; |
|
549 |
color: #ffffff;
|
|
550 | 550 |
background-color: #212529; |
551 | 551 |
border-radius: 0.2rem; |
552 | 552 |
} |
... | ... | |
2049 | 2049 |
} |
2050 | 2050 |
|
2051 | 2051 |
.table .thead-dark th { |
2052 |
color: #fff; |
|
2052 |
color: #ffffff;
|
|
2053 | 2053 |
background-color: #343a40; |
2054 | 2054 |
border-color: #454d55; |
2055 | 2055 |
} |
... | ... | |
2061 | 2061 |
} |
2062 | 2062 |
|
2063 | 2063 |
.table-dark { |
2064 |
color: #fff; |
|
2064 |
color: #ffffff;
|
|
2065 | 2065 |
background-color: #343a40; |
2066 | 2066 |
} |
2067 | 2067 |
|
... | ... | |
2080 | 2080 |
} |
2081 | 2081 |
|
2082 | 2082 |
.table-dark.table-hover tbody tr:hover { |
2083 |
color: #fff; |
|
2083 |
color: #ffffff;
|
|
2084 | 2084 |
background-color: rgba(255, 255, 255, 0.075); |
2085 | 2085 |
} |
2086 | 2086 |
|
... | ... | |
2156 | 2156 |
font-weight: 400; |
2157 | 2157 |
line-height: 1.6; |
2158 | 2158 |
color: #495057; |
2159 |
background-color: #fff; |
|
2159 |
background-color: #ffffff;
|
|
2160 | 2160 |
background-clip: padding-box; |
2161 | 2161 |
border: 1px solid #ced4da; |
2162 | 2162 |
border-radius: 0.25rem; |
... | ... | |
2181 | 2181 |
|
2182 | 2182 |
.form-control:focus { |
2183 | 2183 |
color: #495057; |
2184 |
background-color: #fff; |
|
2184 |
background-color: #ffffff;
|
|
2185 | 2185 |
border-color: #a1cbef; |
2186 | 2186 |
outline: 0; |
2187 | 2187 |
box-shadow: 0 0 0 0.2rem rgba(52, 144, 220, 0.25); |
... | ... | |
2220 | 2220 |
|
2221 | 2221 |
select.form-control:focus::-ms-value { |
2222 | 2222 |
color: #495057; |
2223 |
background-color: #fff; |
|
2223 |
background-color: #ffffff;
|
|
2224 | 2224 |
} |
2225 | 2225 |
|
2226 | 2226 |
.form-control-file, |
... | ... | |
2370 | 2370 |
margin-top: 0.1rem; |
2371 | 2371 |
font-size: 0.7875rem; |
2372 | 2372 |
line-height: 1.6; |
2373 |
color: #fff; |
|
2373 |
color: #ffffff;
|
|
2374 | 2374 |
background-color: rgba(56, 193, 114, 0.9); |
2375 | 2375 |
border-radius: 0.25rem; |
2376 | 2376 |
} |
... | ... | |
2408 | 2408 |
.custom-select.is-valid { |
2409 | 2409 |
border-color: #38c172; |
2410 | 2410 |
padding-right: calc(0.75em + 2.3125rem); |
2411 |
background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2338c172' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(0.8em + 0.375rem) calc(0.8em + 0.375rem); |
|
2411 |
background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2338c172' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") #ffffff no-repeat center right 1.75rem/calc(0.8em + 0.375rem) calc(0.8em + 0.375rem);
|
|
2412 | 2412 |
} |
2413 | 2413 |
|
2414 | 2414 |
.was-validated .custom-select:valid:focus, |
... | ... | |
2484 | 2484 |
margin-top: 0.1rem; |
2485 | 2485 |
font-size: 0.7875rem; |
2486 | 2486 |
line-height: 1.6; |
2487 |
color: #fff; |
|
2487 |
color: #ffffff;
|
|
2488 | 2488 |
background-color: rgba(227, 52, 47, 0.9); |
2489 | 2489 |
border-radius: 0.25rem; |
2490 | 2490 |
} |
... | ... | |
2522 | 2522 |
.custom-select.is-invalid { |
2523 | 2523 |
border-color: #e3342f; |
2524 | 2524 |
padding-right: calc(0.75em + 2.3125rem); |
2525 |
background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23e3342f' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23e3342f' stroke='none'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(0.8em + 0.375rem) calc(0.8em + 0.375rem); |
|
2525 |
background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23e3342f' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23e3342f' stroke='none'/%3e%3c/svg%3e") #ffffff no-repeat center right 1.75rem/calc(0.8em + 0.375rem) calc(0.8em + 0.375rem);
|
|
2526 | 2526 |
} |
2527 | 2527 |
|
2528 | 2528 |
.was-validated .custom-select:invalid:focus, |
... | ... | |
2695 | 2695 |
} |
2696 | 2696 |
|
2697 | 2697 |
.btn-primary { |
2698 |
color: #fff; |
|
2698 |
color: #ffffff;
|
|
2699 | 2699 |
background-color: #3490dc; |
2700 | 2700 |
border-color: #3490dc; |
2701 | 2701 |
} |
2702 | 2702 |
|
2703 | 2703 |
.btn-primary:hover { |
2704 |
color: #fff; |
|
2704 |
color: #ffffff;
|
|
2705 | 2705 |
background-color: #227dc7; |
2706 | 2706 |
border-color: #2176bd; |
2707 | 2707 |
} |
2708 | 2708 |
|
2709 | 2709 |
.btn-primary:focus, |
2710 | 2710 |
.btn-primary.focus { |
2711 |
color: #fff; |
|
2711 |
color: #ffffff;
|
|
2712 | 2712 |
background-color: #227dc7; |
2713 | 2713 |
border-color: #2176bd; |
2714 | 2714 |
box-shadow: 0 0 0 0.2rem rgba(82, 161, 225, 0.5); |
... | ... | |
2716 | 2716 |
|
2717 | 2717 |
.btn-primary.disabled, |
2718 | 2718 |
.btn-primary:disabled { |
2719 |
color: #fff; |
|
2719 |
color: #ffffff;
|
|
2720 | 2720 |
background-color: #3490dc; |
2721 | 2721 |
border-color: #3490dc; |
2722 | 2722 |
} |
... | ... | |
2724 | 2724 |
.btn-primary:not(:disabled):not(.disabled):active, |
2725 | 2725 |
.btn-primary:not(:disabled):not(.disabled).active, |
2726 | 2726 |
.show > .btn-primary.dropdown-toggle { |
2727 |
color: #fff; |
|
2727 |
color: #ffffff;
|
|
2728 | 2728 |
background-color: #2176bd; |
2729 | 2729 |
border-color: #1f6fb2; |
2730 | 2730 |
} |
... | ... | |
2736 | 2736 |
} |
2737 | 2737 |
|
2738 | 2738 |
.btn-secondary { |
2739 |
color: #fff; |
|
2739 |
color: #ffffff;
|
|
2740 | 2740 |
background-color: #6c757d; |
2741 | 2741 |
border-color: #6c757d; |
2742 | 2742 |
} |
2743 | 2743 |
|
2744 | 2744 |
.btn-secondary:hover { |
2745 |
color: #fff; |
|
2745 |
color: #ffffff;
|
|
2746 | 2746 |
background-color: #5a6268; |
2747 | 2747 |
border-color: #545b62; |
2748 | 2748 |
} |
2749 | 2749 |
|
2750 | 2750 |
.btn-secondary:focus, |
2751 | 2751 |
.btn-secondary.focus { |
2752 |
color: #fff; |
|
2752 |
color: #ffffff;
|
|
2753 | 2753 |
background-color: #5a6268; |
2754 | 2754 |
border-color: #545b62; |
2755 | 2755 |
box-shadow: 0 0 0 0.2rem rgba(130, 138, 145, 0.5); |
... | ... | |
2757 | 2757 |
|
2758 | 2758 |
.btn-secondary.disabled, |
2759 | 2759 |
.btn-secondary:disabled { |
2760 |
color: #fff; |
|
2760 |
color: #ffffff;
|
|
2761 | 2761 |
background-color: #6c757d; |
2762 | 2762 |
border-color: #6c757d; |
2763 | 2763 |
} |
... | ... | |
2765 | 2765 |
.btn-secondary:not(:disabled):not(.disabled):active, |
2766 | 2766 |
.btn-secondary:not(:disabled):not(.disabled).active, |
2767 | 2767 |
.show > .btn-secondary.dropdown-toggle { |
2768 |
color: #fff; |
|
2768 |
color: #ffffff;
|
|
2769 | 2769 |
background-color: #545b62; |
2770 | 2770 |
border-color: #4e555b; |
2771 | 2771 |
} |
... | ... | |
2777 | 2777 |
} |
2778 | 2778 |
|
2779 | 2779 |
.btn-success { |
2780 |
color: #fff; |
|
2780 |
color: #ffffff;
|
|
2781 | 2781 |
background-color: #38c172; |
2782 | 2782 |
border-color: #38c172; |
2783 | 2783 |
} |
2784 | 2784 |
|
2785 | 2785 |
.btn-success:hover { |
2786 |
color: #fff; |
|
2786 |
color: #ffffff;
|
|
2787 | 2787 |
background-color: #2fa360; |
2788 | 2788 |
border-color: #2d995b; |
2789 | 2789 |
} |
2790 | 2790 |
|
2791 | 2791 |
.btn-success:focus, |
2792 | 2792 |
.btn-success.focus { |
2793 |
color: #fff; |
|
2793 |
color: #ffffff;
|
|
2794 | 2794 |
background-color: #2fa360; |
2795 | 2795 |
border-color: #2d995b; |
2796 | 2796 |
box-shadow: 0 0 0 0.2rem rgba(86, 202, 135, 0.5); |
... | ... | |
2798 | 2798 |
|
2799 | 2799 |
.btn-success.disabled, |
2800 | 2800 |
.btn-success:disabled { |
2801 |
color: #fff; |
|
2801 |
color: #ffffff;
|
|
2802 | 2802 |
background-color: #38c172; |
2803 | 2803 |
border-color: #38c172; |
2804 | 2804 |
} |
... | ... | |
2806 | 2806 |
.btn-success:not(:disabled):not(.disabled):active, |
2807 | 2807 |
.btn-success:not(:disabled):not(.disabled).active, |
2808 | 2808 |
.show > .btn-success.dropdown-toggle { |
2809 |
color: #fff; |
|
2809 |
color: #ffffff;
|
|
2810 | 2810 |
background-color: #2d995b; |
2811 | 2811 |
border-color: #2a9055; |
2812 | 2812 |
} |
... | ... | |
2824 | 2824 |
} |
2825 | 2825 |
|
2826 | 2826 |
.btn-info:hover { |
2827 |
color: #fff; |
|
2827 |
color: #ffffff;
|
|
2828 | 2828 |
background-color: #4aa0e6; |
2829 | 2829 |
border-color: #3f9ae5; |
2830 | 2830 |
} |
2831 | 2831 |
|
2832 | 2832 |
.btn-info:focus, |
2833 | 2833 |
.btn-info.focus { |
2834 |
color: #fff; |
|
2834 |
color: #ffffff;
|
|
2835 | 2835 |
background-color: #4aa0e6; |
2836 | 2836 |
border-color: #3f9ae5; |
2837 | 2837 |
box-shadow: 0 0 0 0.2rem rgba(97, 157, 206, 0.5); |
... | ... | |
2847 | 2847 |
.btn-info:not(:disabled):not(.disabled):active, |
2848 | 2848 |
.btn-info:not(:disabled):not(.disabled).active, |
2849 | 2849 |
.show > .btn-info.dropdown-toggle { |
2850 |
color: #fff; |
|
2850 |
color: #ffffff;
|
|
2851 | 2851 |
background-color: #3f9ae5; |
2852 | 2852 |
border-color: #3495e3; |
2853 | 2853 |
} |
... | ... | |
2900 | 2900 |
} |
2901 | 2901 |
|
2902 | 2902 |
.btn-danger { |
2903 |
color: #fff; |
|
2903 |
color: #ffffff;
|
|
2904 | 2904 |
background-color: #e3342f; |
2905 | 2905 |
border-color: #e3342f; |
2906 | 2906 |
} |
2907 | 2907 |
|
2908 | 2908 |
.btn-danger:hover { |
2909 |
color: #fff; |
|
2909 |
color: #ffffff;
|
|
2910 | 2910 |
background-color: #d0211c; |
2911 | 2911 |
border-color: #c51f1a; |
2912 | 2912 |
} |
2913 | 2913 |
|
2914 | 2914 |
.btn-danger:focus, |
2915 | 2915 |
.btn-danger.focus { |
2916 |
color: #fff; |
|
2916 |
color: #ffffff;
|
|
2917 | 2917 |
background-color: #d0211c; |
2918 | 2918 |
border-color: #c51f1a; |
2919 | 2919 |
box-shadow: 0 0 0 0.2rem rgba(231, 82, 78, 0.5); |
... | ... | |
2921 | 2921 |
|
2922 | 2922 |
.btn-danger.disabled, |
2923 | 2923 |
.btn-danger:disabled { |
2924 |
color: #fff; |
|
2924 |
color: #ffffff;
|
|
2925 | 2925 |
background-color: #e3342f; |
2926 | 2926 |
border-color: #e3342f; |
2927 | 2927 |
} |
... | ... | |
2929 | 2929 |
.btn-danger:not(:disabled):not(.disabled):active, |
2930 | 2930 |
.btn-danger:not(:disabled):not(.disabled).active, |
2931 | 2931 |
.show > .btn-danger.dropdown-toggle { |
2932 |
color: #fff; |
|
2932 |
color: #ffffff;
|
|
2933 | 2933 |
background-color: #c51f1a; |
2934 | 2934 |
border-color: #b91d19; |
2935 | 2935 |
} |
... | ... | |
2982 | 2982 |
} |
2983 | 2983 |
|
2984 | 2984 |
.btn-dark { |
2985 |
color: #fff; |
|
2985 |
color: #ffffff;
|
|
2986 | 2986 |
background-color: #343a40; |
2987 | 2987 |
border-color: #343a40; |
2988 | 2988 |
} |
2989 | 2989 |
|
2990 | 2990 |
.btn-dark:hover { |
2991 |
color: #fff; |
|
2991 |
color: #ffffff;
|
|
2992 | 2992 |
background-color: #23272b; |
2993 | 2993 |
border-color: #1d2124; |
2994 | 2994 |
} |
2995 | 2995 |
|
2996 | 2996 |
.btn-dark:focus, |
2997 | 2997 |
.btn-dark.focus { |
2998 |
color: #fff; |
|
2998 |
color: #ffffff;
|
|
2999 | 2999 |
background-color: #23272b; |
3000 | 3000 |
border-color: #1d2124; |
3001 | 3001 |
box-shadow: 0 0 0 0.2rem rgba(82, 88, 93, 0.5); |
... | ... | |
3003 | 3003 |
|
3004 | 3004 |
.btn-dark.disabled, |
3005 | 3005 |
.btn-dark:disabled { |
3006 |
color: #fff; |
|
3006 |
color: #ffffff;
|
|
3007 | 3007 |
background-color: #343a40; |
3008 | 3008 |
border-color: #343a40; |
3009 | 3009 |
} |
... | ... | |
3011 | 3011 |
.btn-dark:not(:disabled):not(.disabled):active, |
3012 | 3012 |
.btn-dark:not(:disabled):not(.disabled).active, |
3013 | 3013 |
.show > .btn-dark.dropdown-toggle { |
3014 |
color: #fff; |
|
3014 |
color: #ffffff;
|
|
3015 | 3015 |
background-color: #1d2124; |
3016 | 3016 |
border-color: #171a1d; |
3017 | 3017 |
} |
... | ... | |
3028 | 3028 |
} |
3029 | 3029 |
|
3030 | 3030 |
.btn-outline-primary:hover { |
3031 |
color: #fff; |
|
3031 |
color: #ffffff;
|
|
3032 | 3032 |
background-color: #3490dc; |
3033 | 3033 |
border-color: #3490dc; |
3034 | 3034 |
} |
... | ... | |
3047 | 3047 |
.btn-outline-primary:not(:disabled):not(.disabled):active, |
3048 | 3048 |
.btn-outline-primary:not(:disabled):not(.disabled).active, |
3049 | 3049 |
.show > .btn-outline-primary.dropdown-toggle { |
3050 |
color: #fff; |
|
3050 |
color: #ffffff;
|
|
3051 | 3051 |
background-color: #3490dc; |
3052 | 3052 |
border-color: #3490dc; |
3053 | 3053 |
} |
... | ... | |
3064 | 3064 |
} |
3065 | 3065 |
|
3066 | 3066 |
.btn-outline-secondary:hover { |
3067 |
color: #fff; |
|
3067 |
color: #ffffff;
|
|
3068 | 3068 |
background-color: #6c757d; |
3069 | 3069 |
border-color: #6c757d; |
3070 | 3070 |
} |
... | ... | |
3083 | 3083 |
.btn-outline-secondary:not(:disabled):not(.disabled):active, |
3084 | 3084 |
.btn-outline-secondary:not(:disabled):not(.disabled).active, |
3085 | 3085 |
.show > .btn-outline-secondary.dropdown-toggle { |
3086 |
color: #fff; |
|
3086 |
color: #ffffff;
|
|
3087 | 3087 |
background-color: #6c757d; |
3088 | 3088 |
border-color: #6c757d; |
3089 | 3089 |
} |
... | ... | |
3100 | 3100 |
} |
3101 | 3101 |
|
3102 | 3102 |
.btn-outline-success:hover { |
3103 |
color: #fff; |
|
3103 |
color: #ffffff;
|
|
3104 | 3104 |
background-color: #38c172; |
3105 | 3105 |
border-color: #38c172; |
3106 | 3106 |
} |
... | ... | |
3119 | 3119 |
.btn-outline-success:not(:disabled):not(.disabled):active, |
3120 | 3120 |
.btn-outline-success:not(:disabled):not(.disabled).active, |
3121 | 3121 |
.show > .btn-outline-success.dropdown-toggle { |
3122 |
color: #fff; |
|
3122 |
color: #ffffff;
|
|
3123 | 3123 |
background-color: #38c172; |
3124 | 3124 |
border-color: #38c172; |
3125 | 3125 |
} |
... | ... | |
3208 | 3208 |
} |
3209 | 3209 |
|
3210 | 3210 |
.btn-outline-danger:hover { |
3211 |
color: #fff; |
|
3211 |
color: #ffffff;
|
|
3212 | 3212 |
background-color: #e3342f; |
3213 | 3213 |
border-color: #e3342f; |
3214 | 3214 |
} |
... | ... | |
3227 | 3227 |
.btn-outline-danger:not(:disabled):not(.disabled):active, |
3228 | 3228 |
.btn-outline-danger:not(:disabled):not(.disabled).active, |
3229 | 3229 |
.show > .btn-outline-danger.dropdown-toggle { |
3230 |
color: #fff; |
|
3230 |
color: #ffffff;
|
|
3231 | 3231 |
background-color: #e3342f; |
3232 | 3232 |
border-color: #e3342f; |
3233 | 3233 |
} |
... | ... | |
3280 | 3280 |
} |
3281 | 3281 |
|
3282 | 3282 |
.btn-outline-dark:hover { |
3283 |
color: #fff; |
|
3283 |
color: #ffffff;
|
|
3284 | 3284 |
background-color: #343a40; |
3285 | 3285 |
border-color: #343a40; |
3286 | 3286 |
} |
... | ... | |
3299 | 3299 |
.btn-outline-dark:not(:disabled):not(.disabled):active, |
3300 | 3300 |
.btn-outline-dark:not(:disabled):not(.disabled).active, |
3301 | 3301 |
.show > .btn-outline-dark.dropdown-toggle { |
3302 |
color: #fff; |
|
3302 |
color: #ffffff;
|
|
3303 | 3303 |
background-color: #343a40; |
3304 | 3304 |
border-color: #343a40; |
3305 | 3305 |
} |
... | ... | |
3435 | 3435 |
color: #212529; |
3436 | 3436 |
text-align: left; |
3437 | 3437 |
list-style: none; |
3438 |
background-color: #fff; |
|
3438 |
background-color: #ffffff;
|
|
3439 | 3439 |
background-clip: padding-box; |
3440 | 3440 |
border: 1px solid rgba(0, 0, 0, 0.15); |
3441 | 3441 |
border-radius: 0.25rem; |
... | ... | |
3622 | 3622 |
|
3623 | 3623 |
.dropdown-item.active, |
3624 | 3624 |
.dropdown-item:active { |
3625 |
color: #fff; |
|
3625 |
color: #ffffff;
|
|
3626 | 3626 |
text-decoration: none; |
3627 | 3627 |
background-color: #3490dc; |
3628 | 3628 |
} |
... | ... | |
3984 | 3984 |
} |
3985 | 3985 |
|
3986 | 3986 |
.custom-control-input:checked ~ .custom-control-label::before { |
3987 |
color: #fff; |
|
3987 |
color: #ffffff;
|
|
3988 | 3988 |
border-color: #3490dc; |
3989 | 3989 |
background-color: #3490dc; |
3990 | 3990 |
} |
... | ... | |
3998 | 3998 |
} |
3999 | 3999 |
|
4000 | 4000 |
.custom-control-input:not(:disabled):active ~ .custom-control-label::before { |
4001 |
color: #fff; |
|
4001 |
color: #ffffff;
|
|
4002 | 4002 |
background-color: #cce3f6; |
4003 | 4003 |
border-color: #cce3f6; |
4004 | 4004 |
} |
... | ... | |
4028 | 4028 |
height: 1rem; |
4029 | 4029 |
pointer-events: none; |
4030 | 4030 |
content: ""; |
4031 |
background-color: #fff; |
|
4031 |
background-color: #ffffff;
|
|
4032 | 4032 |
border: #adb5bd solid 1px; |
4033 | 4033 |
} |
4034 | 4034 |
|
... | ... | |
4048 | 4048 |
} |
4049 | 4049 |
|
4050 | 4050 |
.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after { |
4051 |
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3e%3c/svg%3e"); |
|
4051 |
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%23ffffff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3e%3c/svg%3e");
|
|
4052 | 4052 |
} |
4053 | 4053 |
|
4054 | 4054 |
.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before { |
... | ... | |
4057 | 4057 |
} |
4058 | 4058 |
|
4059 | 4059 |
.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after { |
4060 |
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e"); |
|
4060 |
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3e%3cpath stroke='%23ffffff' d='M0 2h4'/%3e%3c/svg%3e");
|
|
4061 | 4061 |
} |
4062 | 4062 |
|
4063 | 4063 |
.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before { |
... | ... | |
4073 | 4073 |
} |
4074 | 4074 |
|
4075 | 4075 |
.custom-radio .custom-control-input:checked ~ .custom-control-label::after { |
4076 |
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e"); |
|
4076 |
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23ffffff'/%3e%3c/svg%3e");
|
|
4077 | 4077 |
} |
4078 | 4078 |
|
4079 | 4079 |
.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before { |
... | ... | |
4108 | 4108 |
} |
4109 | 4109 |
|
4110 | 4110 |
.custom-switch .custom-control-input:checked ~ .custom-control-label::after { |
4111 |
background-color: #fff; |
|
4111 |
background-color: #ffffff;
|
|
4112 | 4112 |
transform: translateX(0.75rem); |
4113 | 4113 |
} |
4114 | 4114 |
|
... | ... | |
4126 | 4126 |
line-height: 1.6; |
4127 | 4127 |
color: #495057; |
4128 | 4128 |
vertical-align: middle; |
4129 |
background: #fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px; |
|
4129 |
background: #ffffff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px;
|
|
4130 | 4130 |
border: 1px solid #ced4da; |
4131 | 4131 |
border-radius: 0.25rem; |
4132 | 4132 |
-webkit-appearance: none; |
... | ... | |
4142 | 4142 |
|
4143 | 4143 |
.custom-select:focus::-ms-value { |
4144 | 4144 |
color: #495057; |
4145 |
background-color: #fff; |
|
4145 |
background-color: #ffffff;
|
|
4146 | 4146 |
} |
4147 | 4147 |
|
4148 | 4148 |
.custom-select[multiple], |
... | ... | |
4228 | 4228 |
font-weight: 400; |
4229 | 4229 |
line-height: 1.6; |
4230 | 4230 |
color: #495057; |
4231 |
background-color: #fff; |
|
4231 |
background-color: #ffffff;
|
|
4232 | 4232 |
border: 1px solid #ced4da; |
4233 | 4233 |
border-radius: 0.25rem; |
4234 | 4234 |
} |
... | ... | |
4495 | 4495 |
|
4496 | 4496 |
.nav-pills .nav-link.active, |
4497 | 4497 |
.nav-pills .show > .nav-link { |
4498 |
color: #fff; |
|
4498 |
color: #ffffff;
|
|
4499 | 4499 |
background-color: #3490dc; |
4500 | 4500 |
} |
4501 | 4501 |
|
... | ... | |
4906 | 4906 |
} |
4907 | 4907 |
|
4908 | 4908 |
.navbar-dark .navbar-brand { |
4909 |
color: #fff; |
|
4909 |
color: #ffffff;
|
|
4910 | 4910 |
} |
4911 | 4911 |
|
4912 | 4912 |
.navbar-dark .navbar-brand:hover, |
4913 | 4913 |
.navbar-dark .navbar-brand:focus { |
4914 |
color: #fff; |
|
4914 |
color: #ffffff;
|
|
4915 | 4915 |
} |
4916 | 4916 |
|
4917 | 4917 |
.navbar-dark .navbar-nav .nav-link { |
... | ... | |
4931 | 4931 |
.navbar-dark .navbar-nav .active > .nav-link, |
4932 | 4932 |
.navbar-dark .navbar-nav .nav-link.show, |
4933 | 4933 |
.navbar-dark .navbar-nav .nav-link.active { |
4934 |
color: #fff; |
|
4934 |
color: #ffffff;
|
|
4935 | 4935 |
} |
4936 | 4936 |
|
4937 | 4937 |
.navbar-dark .navbar-toggler { |
... | ... | |
4948 | 4948 |
} |
4949 | 4949 |
|
4950 | 4950 |
.navbar-dark .navbar-text a { |
4951 |
color: #fff; |
|
4951 |
color: #ffffff;
|
|
4952 | 4952 |
} |
4953 | 4953 |
|
4954 | 4954 |
.navbar-dark .navbar-text a:hover, |
4955 | 4955 |
.navbar-dark .navbar-text a:focus { |
4956 |
color: #fff; |
|
4956 |
color: #ffffff;
|
|
4957 | 4957 |
} |
4958 | 4958 |
|
4959 | 4959 |
.card { |
... | ... | |
4962 | 4962 |
flex-direction: column; |
4963 | 4963 |
min-width: 0; |
4964 | 4964 |
word-wrap: break-word; |
4965 |
background-color: #fff; |
|
4965 |
background-color: #ffffff;
|
|
4966 | 4966 |
background-clip: border-box; |
4967 | 4967 |
border: 1px solid rgba(0, 0, 0, 0.125); |
4968 | 4968 |
border-radius: 0.25rem; |
... | ... | |
5233 | 5233 |
margin-left: -1px; |
5234 | 5234 |
line-height: 1.25; |
5235 | 5235 |
color: #3490dc; |
5236 |
background-color: #fff; |
|
5236 |
background-color: #ffffff;
|
|
5237 | 5237 |
border: 1px solid #dee2e6; |
5238 | 5238 |
} |
5239 | 5239 |
|
... | ... | |
5264 | 5264 |
|
5265 | 5265 |
.page-item.active .page-link { |
5266 | 5266 |
z-index: 3; |
5267 |
color: #fff; |
|
5267 |
color: #ffffff;
|
|
5268 | 5268 |
background-color: #3490dc; |
5269 | 5269 |
border-color: #3490dc; |
5270 | 5270 |
} |
... | ... | |
5273 | 5273 |
color: #6c757d; |
5274 | 5274 |
pointer-events: none; |
5275 | 5275 |
cursor: auto; |
5276 |
background-color: #fff; |
|
5276 |
background-color: #ffffff;
|
|
5277 | 5277 |
border-color: #dee2e6; |
5278 | 5278 |
} |
5279 | 5279 |
|
... | ... | |
5349 | 5349 |
} |
5350 | 5350 |
|
5351 | 5351 |
.badge-primary { |
5352 |
color: #fff; |
|
5352 |
color: #ffffff;
|
|
5353 | 5353 |
background-color: #3490dc; |
5354 | 5354 |
} |
5355 | 5355 |
|
5356 | 5356 |
a.badge-primary:hover, |
5357 | 5357 |
a.badge-primary:focus { |
5358 |
color: #fff; |
|
5358 |
color: #ffffff;
|
|
5359 | 5359 |
background-color: #2176bd; |
5360 | 5360 |
} |
5361 | 5361 |
|
... | ... | |
5366 | 5366 |
} |
5367 | 5367 |
|
5368 | 5368 |
.badge-secondary { |
5369 |
color: #fff; |
|
5369 |
color: #ffffff;
|
|
5370 | 5370 |
background-color: #6c757d; |
5371 | 5371 |
} |
5372 | 5372 |
|
5373 | 5373 |
a.badge-secondary:hover, |
5374 | 5374 |
a.badge-secondary:focus { |
5375 |
color: #fff; |
|
5375 |
color: #ffffff;
|
|
5376 | 5376 |
background-color: #545b62; |
5377 | 5377 |
} |
5378 | 5378 |
|
... | ... | |
5383 | 5383 |
} |
5384 | 5384 |
|
5385 | 5385 |
.badge-success { |
5386 |
color: #fff; |
|
5386 |
color: #ffffff;
|
|
5387 | 5387 |
background-color: #38c172; |
5388 | 5388 |
} |
5389 | 5389 |
|
5390 | 5390 |
a.badge-success:hover, |
5391 | 5391 |
a.badge-success:focus { |
5392 |
color: #fff; |
|
5392 |
color: #ffffff;
|
|
5393 | 5393 |
background-color: #2d995b; |
5394 | 5394 |
} |
5395 | 5395 |
|
... | ... | |
5434 | 5434 |
} |
5435 | 5435 |
|
5436 | 5436 |
.badge-danger { |
5437 |
color: #fff; |
|
5437 |
color: #ffffff;
|
|
5438 | 5438 |
background-color: #e3342f; |
5439 | 5439 |
} |
5440 | 5440 |
|
5441 | 5441 |
a.badge-danger:hover, |
5442 | 5442 |
a.badge-danger:focus { |
5443 |
color: #fff; |
|
5443 |
color: #ffffff;
|
|
5444 | 5444 |
background-color: #c51f1a; |
5445 | 5445 |
} |
5446 | 5446 |
|
... | ... | |
5468 | 5468 |
} |
5469 | 5469 |
|
5470 | 5470 |
.badge-dark { |
5471 |
color: #fff; |
|
5471 |
color: #ffffff;
|
|
5472 | 5472 |
background-color: #343a40; |
5473 | 5473 |
} |
5474 | 5474 |
|
5475 | 5475 |
a.badge-dark:hover, |
5476 | 5476 |
a.badge-dark:focus { |
5477 |
color: #fff; |
|
5477 |
color: #ffffff;
|
|
5478 | 5478 |
background-color: #1d2124; |
5479 | 5479 |
} |
5480 | 5480 |
|
... | ... | |
5677 | 5677 |
flex-direction: column; |
5678 | 5678 |
justify-content: center; |
5679 | 5679 |
overflow: hidden; |
5680 |
color: #fff; |
|
5680 |
color: #ffffff;
|
|
5681 | 5681 |
text-align: center; |
5682 | 5682 |
white-space: nowrap; |
5683 | 5683 |
background-color: #3490dc; |
... | ... | |
5746 | 5746 |
position: relative; |
5747 | 5747 |
display: block; |
5748 | 5748 |
padding: 0.75rem 1.25rem; |
5749 |
background-color: #fff; |
|
5749 |
background-color: #ffffff;
|
|
5750 | 5750 |
border: 1px solid rgba(0, 0, 0, 0.125); |
5751 | 5751 |
} |
5752 | 5752 |
|
... | ... | |
5764 | 5764 |
.list-group-item:disabled { |
5765 | 5765 |
color: #6c757d; |
5766 | 5766 |
pointer-events: none; |
5767 |
background-color: #fff; |
|
5767 |
background-color: #ffffff;
|
|
5768 | 5768 |
} |
5769 | 5769 |
|
5770 | 5770 |
.list-group-item.active { |
5771 | 5771 |
z-index: 2; |
5772 |
color: #fff; |
|
5772 |
color: #ffffff;
|
|
5773 | 5773 |
background-color: #3490dc; |
5774 | 5774 |
border-color: #3490dc; |
5775 | 5775 |
} |
... | ... | |
5957 | 5957 |
} |
5958 | 5958 |
|
5959 | 5959 |
.list-group-item-primary.list-group-item-action.active { |
5960 |
color: #fff; |
|
5960 |
color: #ffffff;
|
|
5961 | 5961 |
background-color: #1b4b72; |
5962 | 5962 |
border-color: #1b4b72; |
5963 | 5963 |
} |
... | ... | |
5974 | 5974 |
} |
5975 | 5975 |
|
5976 | 5976 |
.list-group-item-secondary.list-group-item-action.active { |
5977 |
color: #fff; |
|
5977 |
color: #ffffff;
|
|
5978 | 5978 |
background-color: #383d41; |
5979 | 5979 |
border-color: #383d41; |
5980 | 5980 |
} |
... | ... | |
5991 | 5991 |
} |
5992 | 5992 |
|
5993 | 5993 |
.list-group-item-success.list-group-item-action.active { |
5994 |
color: #fff; |
|
5994 |
color: #ffffff;
|
|
5995 | 5995 |
background-color: #1d643b; |
5996 | 5996 |
border-color: #1d643b; |
5997 | 5997 |
} |
... | ... | |
6008 | 6008 |
} |
6009 | 6009 |
|
6010 | 6010 |
.list-group-item-info.list-group-item-action.active { |
6011 |
color: #fff; |
|
6011 |
color: #ffffff;
|
|
6012 | 6012 |
background-color: #385d7a; |
6013 | 6013 |
border-color: #385d7a; |
6014 | 6014 |
} |
... | ... | |
6025 | 6025 |
} |
6026 | 6026 |
|
6027 | 6027 |
.list-group-item-warning.list-group-item-action.active { |
6028 |
color: #fff; |
|
6028 |
color: #ffffff;
|
|
6029 | 6029 |
background-color: #857b26; |
6030 | 6030 |
border-color: #857b26; |
6031 | 6031 |
} |
... | ... | |
6042 | 6042 |
} |
6043 | 6043 |
|
6044 | 6044 |
.list-group-item-danger.list-group-item-action.active { |
6045 |
color: #fff; |
|
6045 |
color: #ffffff;
|
|
6046 | 6046 |
background-color: #761b18; |
Také k dispozici: Unified diff
Relace Metadata|User.
Issue #7847 @0.25h