Merge remote-tracking branch 'origin/main' into main
This commit is contained in:
commit
ccdcda713e
.gitignore.htaccess
.idea
Backend
CheckSetup.phpsetup.php
Controllers
Admin
FileHandler
GameJam
Group
GetGroup.phpGroup.phpLogin.phpLogout.phpResetPassword.phpSigningUp.phpUpdateGruop.phpUpdatePassword.php
Polls
keyWord
Frontend
LICENSEREADME.mdbootstrap.phpcomposer.jsoncomposer.lockconfig
|
@ -1 +1,2 @@
|
|||
Header set Access-Control-Allow-Origin: *
|
||||
Header add Access-Control-Allow-Origin "*"
|
||||
Header add Access-Control-Allow-Methods: "GET,POST,OPTIONS,DELETE,PUT"
|
|
@ -0,0 +1,11 @@
|
|||
<?php
|
||||
header("Access-Control-Allow-Methods: GET");
|
||||
header("Access-Control-Allow-Headers: X-Requested-With, Content-Type, Accept");
|
||||
header('Content-Type: application/json;charset=UTF-8');
|
||||
if(!file_exists('../config/database.json')){
|
||||
echo json_encode(['data' => false]);
|
||||
}elseif(0 === filesize('../config/database.json')){
|
||||
echo json_encode(['data' => false]);
|
||||
}else{
|
||||
echo json_encode(['data' => true]);
|
||||
}
|
|
@ -8,3 +8,15 @@ function isAdmin(): bool
|
|||
return isset($_SESSION['admin']);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $userName
|
||||
*/
|
||||
function makeAdminLogin(string $userName)
|
||||
{
|
||||
setcookie("userName", $userName, [
|
||||
'expires' => 0,
|
||||
'samesite' => 'Strict',
|
||||
'path' => '/'
|
||||
]);
|
||||
}
|
||||
|
||||
|
|
|
@ -20,16 +20,17 @@ if(isset($_POST['aLogin'])){
|
|||
$_SESSION['admin'] = true;
|
||||
$_SESSION['success'] = "You are now logged in";
|
||||
http_response_code(200);
|
||||
makeAdminLogin($userName);
|
||||
}else{
|
||||
session_destroy();
|
||||
echo "Fail to verify password";
|
||||
http_response_code(401);
|
||||
echo json_encode(["message" => "wrong password"]);
|
||||
}
|
||||
|
||||
}else{
|
||||
session_destroy();
|
||||
echo "No user";
|
||||
http_response_code(401);
|
||||
echo json_encode(["message" => "admin don't exist"]);
|
||||
}
|
||||
}else{
|
||||
http_response_code(400);
|
||||
|
|
|
@ -19,4 +19,5 @@ if (isAdmin()){
|
|||
}
|
||||
}else{
|
||||
http_response_code(401);
|
||||
echo json_encode(["message" => "is not admin"]);
|
||||
}
|
|
@ -5,7 +5,8 @@
|
|||
* @return string
|
||||
*/
|
||||
|
||||
function ZipFileHandler(string $gameFileName, string $gameFileTmp){
|
||||
function ZipFileHandler(string $gameFileName, string $gameFileTmp): string
|
||||
{
|
||||
$fileExtGame = explode('.', $gameFileName);
|
||||
$fileActualExtGame = strtolower(end($fileExtGame));
|
||||
|
||||
|
@ -21,11 +22,10 @@ function ZipFileHandler(string $gameFileName, string $gameFileTmp){
|
|||
rename($gameFileTmp,"../../Games/".$gameFileNewName);
|
||||
return $gameFileNewName;
|
||||
}else{
|
||||
echo "Wrong file type";
|
||||
http_response_code(400);
|
||||
echo json_encode(["message" => "Wrong file type gameFile"]);
|
||||
exit();
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -33,7 +33,8 @@ return NULL;
|
|||
* @param string $thumbnailFileTmp
|
||||
* @return string
|
||||
*/
|
||||
function imagesFileHandler(string $thumbnailFileName, string $thumbnailFileTmp){
|
||||
function imagesFileHandler(string $thumbnailFileName, string $thumbnailFileTmp): string
|
||||
{
|
||||
$fileExtThumb = explode('.', $thumbnailFileName);
|
||||
$fileActualExtThumb = strtolower(end($fileExtThumb));
|
||||
|
||||
|
@ -49,9 +50,8 @@ function imagesFileHandler(string $thumbnailFileName, string $thumbnailFileTmp){
|
|||
rename($thumbnailFileTmp,"../../../Frontend/images/".$thumbnailFileNewName);
|
||||
return $thumbnailFileNewName;
|
||||
}else{
|
||||
echo "Wrong file type";
|
||||
http_response_code(400);
|
||||
echo json_encode(["message" => "Wrong file type thumbnailFile"]);
|
||||
exit();
|
||||
}
|
||||
return NULL;
|
||||
}
|
|
@ -17,4 +17,4 @@ if(isset($_GET['gameDataId'])){
|
|||
header("Access-Control-Allow-Methods: GET");
|
||||
header("Access-Control-Allow-Headers: X-Requested-With, Content-Type, Accept");
|
||||
header('Content-Type: application/json;charset=UTF-8');
|
||||
echo $openGameDataStream->toJson(JSON_PRETTY_PRINT);
|
||||
echo json_encode(array('data' => $openGameDataStream->jsonSerialize()));
|
|
@ -37,14 +37,15 @@ if(isLogin()){
|
|||
}
|
||||
$gameData->is_web_Based = $isWebBased;
|
||||
if(!$gameData->save()){
|
||||
http_response_code(500);
|
||||
http_response_code(500);
|
||||
}else{
|
||||
http_response_code(201);
|
||||
http_response_code(201);
|
||||
}
|
||||
|
||||
}else{
|
||||
http_response_code(400);
|
||||
http_response_code(400);
|
||||
}
|
||||
}else{
|
||||
http_response_code(401);
|
||||
http_response_code(401);
|
||||
echo json_encode(["message" => "is not login"]);
|
||||
}
|
|
@ -58,18 +58,21 @@ if(isLogin()){
|
|||
http_response_code(201);
|
||||
}
|
||||
|
||||
}else{
|
||||
http_response_code(500);
|
||||
}
|
||||
}else{
|
||||
http_response_code(400);
|
||||
}
|
||||
}else{
|
||||
echo "Can only upload one file";
|
||||
http_response_code(400);
|
||||
echo json_encode(["message" => "Can only upload one file"]);
|
||||
}
|
||||
}else{
|
||||
echo "Can only upload when the game jam has started";
|
||||
http_response_code(400);
|
||||
echo json_encode(["message" => "Can only upload when the game jam has started"]);
|
||||
}
|
||||
}else{
|
||||
http_response_code(401);
|
||||
echo json_encode(["message" => "is not login"]);
|
||||
}
|
|
@ -15,6 +15,7 @@ if(isset($_GET['gameJamId'])){
|
|||
}
|
||||
|
||||
header('Content-Type: application/json;charset=UTF-8');
|
||||
echo $dbValue->toJson(JSON_PRETTY_PRINT);
|
||||
|
||||
echo json_encode(array('data' => $dbValue->jsonSerialize()));
|
||||
|
||||
//var_dump(headers_list());
|
|
@ -14,6 +14,9 @@ if(isAdmin()){
|
|||
$gameJam->name = $_POST["gameJamName"];
|
||||
$gameJam->start_time = $_POST["startDate"]."T".$_POST["startTime"];
|
||||
$gameJam->end_time = $_POST["endDate"]."T".$_POST["endTime"];
|
||||
if (!empty($_POST['keyWord'])) {
|
||||
$gameJam->key_word = $_POST['keyWord'];
|
||||
}
|
||||
$gameJam->description = $_POST["description"];
|
||||
|
||||
if($gameJam->save()){
|
||||
|
@ -27,4 +30,5 @@ if(isAdmin()){
|
|||
}
|
||||
}else{
|
||||
http_response_code(401);
|
||||
echo json_encode(["message" => "is not admin"]);
|
||||
}
|
|
@ -26,10 +26,14 @@ if(isAdmin()){
|
|||
}else{
|
||||
http_response_code(500);
|
||||
}
|
||||
}else{
|
||||
http_response_code(400);
|
||||
echo json_encode(["message" => "game jam not found"]);
|
||||
}
|
||||
}else{
|
||||
http_response_code(400);
|
||||
}
|
||||
}else{
|
||||
http_response_code(401);
|
||||
echo json_encode(["message" => "is not admin"]);
|
||||
}
|
||||
|
|
|
@ -15,4 +15,4 @@ else{
|
|||
header("Access-Control-Allow-Methods: GET");
|
||||
header("Access-Control-Allow-Headers: X-Requested-With, Content-Type, Accept");
|
||||
header('Content-Type: application/json;charset=UTF-8');
|
||||
echo $groups->toJson(JSON_PRETTY_PRINT);
|
||||
echo json_encode(array('data' => $groups->jsonSerialize()));
|
|
@ -5,6 +5,7 @@ use Backend\Models\Group;
|
|||
use Backend\Models\Password;
|
||||
session_start();
|
||||
|
||||
|
||||
/**
|
||||
* @param string $token
|
||||
* @return Group|null ;
|
||||
|
@ -42,4 +43,15 @@ function passwordValidate(string $password1): bool
|
|||
return true;
|
||||
}
|
||||
else return false;
|
||||
}
|
||||
|
||||
function makeLogin(string $groupName, int $groupId)
|
||||
{
|
||||
$cookieCon = array(
|
||||
'expires' => 0,
|
||||
'samesite' => 'Strict',
|
||||
'path' => '/'
|
||||
);
|
||||
setcookie("groupName", $groupName, $cookieCon);
|
||||
setcookie("groupId", $groupId, $cookieCon);
|
||||
}
|
|
@ -1,13 +1,13 @@
|
|||
<?php
|
||||
|
||||
require "../../../bootstrap.php";
|
||||
require_once "../../../bootstrap.php";
|
||||
require_once "Group.php";
|
||||
|
||||
use Backend\Models\Group;
|
||||
use Backend\Models\Password;
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
//Start the php session
|
||||
session_start();
|
||||
|
||||
if(isset($_POST['login'])){
|
||||
|
||||
|
@ -22,9 +22,9 @@ if(isset($_POST['login'])){
|
|||
$groupPassword = Password::firstWhere('group_id', $group->id);
|
||||
$groupPassword->remember_token = $token;
|
||||
if($groupPassword->save()){
|
||||
$_SESSION['groupName'] = $groupName;
|
||||
$_SESSION['token'] = $token;
|
||||
$_SESSION['success'] = "You are now logged in";
|
||||
makeLogin($groupName,$group->id);
|
||||
//header('location: ../../../Frontend/index.php?login=success');
|
||||
//exit();
|
||||
http_response_code(200);
|
||||
|
@ -37,12 +37,16 @@ if(isset($_POST['login'])){
|
|||
}else{
|
||||
session_destroy();
|
||||
http_response_code(401);
|
||||
echo json_encode(["message" => "Wrong password"]);
|
||||
}
|
||||
|
||||
}else{
|
||||
session_destroy();
|
||||
http_response_code(400);
|
||||
http_response_code(401);
|
||||
echo json_encode(["message" => "group was not found"]);
|
||||
}
|
||||
|
||||
|
||||
}else{
|
||||
http_response_code(400);
|
||||
}
|
||||
|
|
|
@ -1,5 +1,16 @@
|
|||
<?php
|
||||
|
||||
session_start();
|
||||
session_unset();
|
||||
session_destroy();
|
||||
|
||||
session_destroy();
|
||||
$cookieCon = array(
|
||||
'expires' => -1,
|
||||
'samesite' => 'Strict',
|
||||
'path' => '/'
|
||||
);
|
||||
setcookie("groupName", null, $cookieCon);
|
||||
setcookie("groupId", null, $cookieCon);
|
||||
setcookie("userName", null, $cookieCon);
|
||||
|
||||
echo http_response_code(200);
|
|
@ -18,6 +18,7 @@ if(isAdmin()){
|
|||
}
|
||||
}else{
|
||||
http_response_code(400);
|
||||
echo json_encode(["message" => "group not found"]);
|
||||
}
|
||||
|
||||
}else{
|
||||
|
@ -25,4 +26,5 @@ if(isAdmin()){
|
|||
}
|
||||
}else{
|
||||
http_response_code(401);
|
||||
echo json_encode(["message" => "is not admin"]);
|
||||
}
|
|
@ -24,8 +24,10 @@ if(isset($_POST['regGroup'])){
|
|||
$group->group_amount = $_POST['groupAmount'];
|
||||
|
||||
if(!$group->save()){
|
||||
return;
|
||||
http_response_code(500);
|
||||
exit();
|
||||
}
|
||||
|
||||
$password = New Password();
|
||||
|
||||
$password->group()->associate($group);
|
||||
|
@ -38,16 +40,19 @@ if(isset($_POST['regGroup'])){
|
|||
|
||||
if(!$password->save()){
|
||||
http_response_code(500);
|
||||
}else{
|
||||
http_response_code(201);
|
||||
exit();
|
||||
}
|
||||
|
||||
$_SESSION['groupName'] = $groupName;
|
||||
$_SESSION['token'] = $token;
|
||||
$_SESSION['success'] = "You are now logged in";
|
||||
makeLogin($groupName,$group->id);
|
||||
http_response_code(201);
|
||||
echo json_encode(["message" => "you are login"]);
|
||||
|
||||
}else{
|
||||
http_response_code(400);
|
||||
echo json_encode(["message" => "password not valid"]);
|
||||
}
|
||||
}else{
|
||||
http_response_code(400);
|
||||
|
|
|
@ -16,11 +16,16 @@ if(isLogin()){
|
|||
http_response_code(201);
|
||||
}
|
||||
}
|
||||
else{
|
||||
http_response_code(400);
|
||||
echo json_encode(["message" => "group not found"]);
|
||||
}
|
||||
}else{
|
||||
http_response_code(400);
|
||||
}
|
||||
}else{
|
||||
http_response_code(401);
|
||||
echo json_encode(["message" => "is not login"]);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -14,10 +14,15 @@ if(isLogin()){
|
|||
http_response_code(201);
|
||||
}
|
||||
}
|
||||
else{
|
||||
http_response_code(400);
|
||||
echo json_encode(["message" => "password not valid"]);
|
||||
}
|
||||
}else{
|
||||
http_response_code(400);
|
||||
}
|
||||
|
||||
}else{
|
||||
http_response_code(401);
|
||||
echo json_encode(["message" => "is not login"]);
|
||||
}
|
||||
|
|
|
@ -20,9 +20,13 @@ if(isset($_POST['1Vote'])){
|
|||
}else{
|
||||
http_response_code(201);
|
||||
}
|
||||
} else{
|
||||
http_response_code(403);
|
||||
echo json_encode(["message" => "you have already voted"]);
|
||||
}
|
||||
}else{
|
||||
http_response_code(400);
|
||||
echo json_encode(["message" => "you have already voted"]);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -5,8 +5,9 @@ require_once "../Group/Group.php";
|
|||
|
||||
if(isLogin()){
|
||||
header('Content-Type: application/json;charset=UTF-8');
|
||||
echo Vote::where('group_id',groupViaToken($_SESSION['token'])->id)->get()->toJson(JSON_PRETTY_PRINT);
|
||||
echo json_encode(array('data' => Vote::where('group_id',groupViaToken($_SESSION['token'])->id)->get()->jsonSerialize()));
|
||||
|
||||
}else{
|
||||
http_response_code(401);
|
||||
echo json_encode(["message" => "not login"]);
|
||||
}
|
||||
|
|
|
@ -5,30 +5,39 @@ use Backend\Models\Group;
|
|||
use Backend\Models\Vote;
|
||||
use \Illuminate\Support\Collection;
|
||||
|
||||
if(isAdmin() && isset($_GET['gameJamId'])){
|
||||
$groups = Group::where('game_jam_id',$_GET['gameJamId'])->get();
|
||||
$winningGroups = new Collection();
|
||||
$i = -1;
|
||||
foreach ($groups as $group){
|
||||
$x = Vote::where('group_id', $group->id)->count();
|
||||
if($x>$i){
|
||||
if(isAdmin()){
|
||||
if(isset($_GET['gameJamId'])) {
|
||||
$groups = Group::where('game_jam_id', $_GET['gameJamId'])->get();
|
||||
if($groups) {
|
||||
$winningGroups = new Collection();
|
||||
$winningGroups->push($group);
|
||||
$i = -1;
|
||||
foreach ($groups as $group) {
|
||||
$x = Vote::where('group_id', $group->id)->count();
|
||||
if ($x > $i) {
|
||||
$winningGroups = new Collection();
|
||||
$winningGroups->push($group);
|
||||
|
||||
$i = $x;
|
||||
$i = $x;
|
||||
} elseif ($i === $x) {
|
||||
$winningGroups->push($group);
|
||||
}
|
||||
}
|
||||
|
||||
header("Access-Control-Allow-Methods: GET");
|
||||
header("Access-Control-Allow-Headers: X-Requested-With, Content-Type, Accept");
|
||||
header('Content-Type: application/json;charset=UTF-8');
|
||||
echo json_encode(array('data' => $winningGroups->jsonSerialize()));
|
||||
}
|
||||
elseif ($i === $x){
|
||||
$winningGroups->push($group);
|
||||
else{
|
||||
http_response_code(400);
|
||||
echo json_encode(["message" => "game jam not found"]);
|
||||
}
|
||||
}else{
|
||||
http_response_code(400);
|
||||
}
|
||||
|
||||
header("Access-Control-Allow-Methods: GET");
|
||||
header("Access-Control-Allow-Headers: X-Requested-With, Content-Type, Accept");
|
||||
header('Content-Type: application/json;charset=UTF-8');
|
||||
echo $winningGroups->toJson(JSON_PRETTY_PRINT);
|
||||
|
||||
|
||||
}else{
|
||||
http_response_code(401);
|
||||
echo json_encode(["message" => "not admin"]);
|
||||
}
|
||||
|
||||
|
|
|
@ -23,10 +23,11 @@ if (!isAdmin()){
|
|||
header("Access-Control-Allow-Methods: GET");
|
||||
header("Access-Control-Allow-Headers: X-Requested-With, Content-Type, Accept");
|
||||
header('Content-Type: application/json;charset=UTF-8');
|
||||
echo $find_all_keywords->pluck("key_word")->toJson(JSON_PRETTY_PRINT);
|
||||
echo json_encode(array('data' => $find_all_keywords->jsonSerialize()));
|
||||
}else{
|
||||
http_response_code(400);
|
||||
}
|
||||
}else{
|
||||
http_response_code(401);
|
||||
echo json_encode(["message" => "is not admin"]);
|
||||
}
|
|
@ -30,8 +30,8 @@ if (isLogin()) {
|
|||
http_response_code(201);
|
||||
}
|
||||
}else{
|
||||
echo "limited upload reached";
|
||||
http_response_code(400);
|
||||
echo json_encode(["message" => "limited upload reached"]);
|
||||
}
|
||||
|
||||
}else{
|
||||
|
@ -39,5 +39,6 @@ if (isLogin()) {
|
|||
}
|
||||
}else{
|
||||
http_response_code(401);
|
||||
echo json_encode(["message" => "not login"]);
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,111 @@
|
|||
<?php
|
||||
//use Illuminate\Support\Facades\DB;
|
||||
|
||||
use \Backend\Models\AdminUser;
|
||||
use JetBrains\PhpStorm\ArrayShape;
|
||||
|
||||
|
||||
/**
|
||||
* @param string $servername
|
||||
* @param string $username
|
||||
* @param string $password
|
||||
* @param string $DBName
|
||||
* @return string[]
|
||||
*/
|
||||
function myDB(string $servername, string $username, string $password, string $DBName): array
|
||||
{
|
||||
$conn = new mysqli($servername, $username, $password);
|
||||
|
||||
if ($conn->connect_error) {
|
||||
http_response_code(400);
|
||||
echo json_encode(["message" => $conn->connect_error]);
|
||||
exit();
|
||||
}
|
||||
$sql = "CREATE DATABASE ".$DBName;
|
||||
if ($conn->query($sql) === FALSE) {
|
||||
http_response_code(400);
|
||||
echo json_encode(["message" => $conn->error]);
|
||||
exit();
|
||||
}
|
||||
$conn->close();
|
||||
return array(
|
||||
"driver" => "mysql",
|
||||
"host" => $servername,
|
||||
"database" => $DBName,
|
||||
"username" => $username,
|
||||
"password" => $password
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $DBName
|
||||
* @return string[]
|
||||
*/
|
||||
function liteDB(string $DBName): array
|
||||
{
|
||||
$DBName = $DBName.".sqlite";
|
||||
if(file_exists($DBName)){
|
||||
http_response_code(400);
|
||||
echo json_encode(["message" => "database already exits"]);
|
||||
exit();
|
||||
}
|
||||
New SQLite3($DBName);
|
||||
return array(
|
||||
'driver' => 'sqlite',
|
||||
'database' => realpath(dirname(__FILE__)."/".$DBName)
|
||||
);
|
||||
}
|
||||
|
||||
$conFilePath = '../config/database.json';
|
||||
if(!file_exists($conFilePath)){
|
||||
$confile = fopen($conFilePath, "w");
|
||||
fclose($confile);
|
||||
}
|
||||
if (0 !== filesize($conFilePath)){
|
||||
http_response_code(400);
|
||||
echo json_encode(["message" => "already have database connection"]);
|
||||
exit();
|
||||
}
|
||||
|
||||
|
||||
if(isset($_POST["dbSetup"])){
|
||||
|
||||
switch($_POST["dbType"]){
|
||||
case "mysql":
|
||||
$dbCon = myDB($_POST["dbServername"],$_POST["dbUsername"],$_POST["dbPassword"], $_POST["dbName"]);
|
||||
break;
|
||||
case "sqlite":
|
||||
$dbCon = liteDB($_POST["dbName"]);
|
||||
break;
|
||||
default:
|
||||
http_response_code(400);
|
||||
echo json_encode(["message" => "database type is wrong"]);
|
||||
exit();
|
||||
}
|
||||
|
||||
file_put_contents($conFilePath, json_encode($dbCon));
|
||||
|
||||
require_once('../bootstrap.php');
|
||||
try{
|
||||
$capsule->Connection()->getPdo();
|
||||
} catch (\Exception $e) {
|
||||
http_response_code(400);
|
||||
file_put_contents($conFilePath, NULL);
|
||||
echo json_encode(["message" => "Could not connect to the database. Please check your configuration. error:" . $e]);
|
||||
exit();
|
||||
}
|
||||
require_once ('Database/databaseMigration.php');
|
||||
AdminUser::firstOrCreate([
|
||||
'user_name' => $_POST["AdminUsername"], 'password' => password_hash($_POST["AdminPassword"],PASSWORD_DEFAULT)
|
||||
]);
|
||||
http_response_code(201);
|
||||
|
||||
}else{
|
||||
http_response_code(400);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"ExpandedNodes": [
|
||||
""
|
||||
],
|
||||
"PreviewInSolutionExplorer": false
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
<!DOCTYPE html>
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
|
@ -27,20 +27,52 @@
|
|||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div class="HeaderPanel">
|
||||
<div class="HeaderLeft">
|
||||
<a href="../Index.html">
|
||||
<i class="fas fa-arrow-left"></i>
|
||||
</a>
|
||||
<h6>
|
||||
Admin panel
|
||||
</h6>
|
||||
<div class="HeaderPanel">
|
||||
<div class="HeaderLeft">
|
||||
<a href="../Index.html">
|
||||
<i class="fas fa-arrow-left"></i>
|
||||
</a>
|
||||
<h6>
|
||||
Admin panel
|
||||
</h6>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!--Opret game jam-->
|
||||
<br />
|
||||
<br />
|
||||
<h3>Administration</h3>
|
||||
<h5>Opret Game Jam</h5>
|
||||
<div>
|
||||
<form id="createGameJam">
|
||||
<label for="nameOfGameJam">Indtast navn på Game Jam:</label>
|
||||
<input type="text" name="nameOfGameJam" id="nameOfGameJam">
|
||||
<br />
|
||||
<label for="startDate">Start dato:</label>
|
||||
<input type="date" name="startDate" id="startDate">
|
||||
<br />
|
||||
<label for="endDate">Slut dato:</label>
|
||||
<input type="date" name="endDate" id="endDate">
|
||||
<br />
|
||||
<label for="startTime">Start tidspunkt:</label>
|
||||
<input type="time" name="startTime" id="startTime">
|
||||
<br />
|
||||
<label for="endDate">Slut tidspunkt:</label>
|
||||
<input type="time" name="endTime" id="endTime">
|
||||
<br />
|
||||
<p>Indsæt en beskrivelse af Gam jammet</p>
|
||||
<div class="form-floating">
|
||||
<textarea class="form-control" name="description" id="description" placeholder="Leave a comment here" id="floatingTextarea2" style="height: 100px"></textarea>
|
||||
<label for="floatingTextarea2">Beskrivelse</label>
|
||||
</div>
|
||||
<button type="button" name="indsend" id="indsend">Indsend</button>
|
||||
</form>
|
||||
</div>
|
||||
<!--Opret game jam slut-->
|
||||
|
||||
<!-- Body scripts -->
|
||||
<script src="../Javascript/minibar.min.js"></script>
|
||||
<script src="../Javascript/AddEvent.js"></script>
|
||||
<!-- Body scripts end -->
|
||||
</body>
|
||||
|
||||
|
|
Binary file not shown.
After ![]() (image error) Size: 18 KiB |
|
@ -83,9 +83,12 @@
|
|||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<a type="button" class="nav-link LoginButton" data-bs-toggle="modal" data-bs-target="#LoginModal">
|
||||
<a id="NavLogin" type="button" class="nav-link LoginButton" data-bs-toggle="modal" data-bs-target="#LoginModal" style="display: block;">
|
||||
Login
|
||||
</a>
|
||||
<a id="NavUser" type="button" class="nav-link LoginButton" style="display: none;">
|
||||
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
@ -618,19 +621,15 @@
|
|||
<!-- Lodtrækning -->
|
||||
<section id="lod">
|
||||
<h3>Lodtrækning</h3>
|
||||
<p></p>
|
||||
|
||||
<div id="chart"></div>
|
||||
<div id="question"><h1></h1></div>
|
||||
|
||||
</section>
|
||||
<!-- Lodtrækning slut -->
|
||||
|
||||
<hr class="GradientDivider" />
|
||||
|
||||
<!-- Administation -->
|
||||
<section id="admin">
|
||||
<h3>Administration</h3>
|
||||
<p></p>
|
||||
</section>
|
||||
<!-- Administation slut -->
|
||||
|
||||
<a href="javascript:" id="return-to-top">
|
||||
<i class="fas fa-chevron-up"></i>
|
||||
</a>
|
||||
|
@ -651,6 +650,7 @@
|
|||
<script src="Javascript/minibar.min.js"></script>
|
||||
<script src="Javascript/HeaderFunctionality.js"></script>
|
||||
<script src="Javascript/LoginFunctionality.js"></script>
|
||||
<script src="Javascript/Lodtrækning.js"></script>
|
||||
<!-- Body scripts end -->
|
||||
</body>
|
||||
|
||||
|
|
|
@ -0,0 +1,17 @@
|
|||
// Admin add event
|
||||
$("#indsend").click(function () {
|
||||
let startDate = $("#startDate").val();
|
||||
let endDate = $("#endDate").val();
|
||||
let startTime = $("#startTime").val();
|
||||
let endTime = $("#endTime").val();
|
||||
console.log(`startDate ${startDate} \n
|
||||
endDate ${endDate} \n
|
||||
startTime ${startTime} \n
|
||||
endTime ${endTime}`);
|
||||
})
|
||||
|
||||
function addEvent() {
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -12,9 +12,15 @@ $(document).ready(function () {
|
|||
.then(function(res) {
|
||||
let resArr = res.data;
|
||||
|
||||
$.each(resArr, function(i, value) {
|
||||
arr.push({id: value.id, Gamejam: value.name});
|
||||
});
|
||||
//console.log(res.data.data);
|
||||
|
||||
for(let i = 0; i < res.data.data.length; i++)
|
||||
{
|
||||
arr.push({
|
||||
id: res.data.data[i].id,
|
||||
Gamejam: res.data.data[i].name
|
||||
});
|
||||
}
|
||||
|
||||
$.each(arr, function(i, data) {
|
||||
if (i === 0)
|
||||
|
@ -34,7 +40,7 @@ $(document).ready(function () {
|
|||
// Remove invalidInput if selected option has been changed
|
||||
$('#GameJamSelect').change(function() {
|
||||
selectedGameJam = $('#GameJamSelect').children("option:selected").val();
|
||||
|
||||
|
||||
if (selectedGameJam >= 1)
|
||||
{
|
||||
$('#GameJamSelect').removeClass('invalidInput');
|
||||
|
@ -50,7 +56,7 @@ $(document).ready(function () {
|
|||
})
|
||||
|
||||
GetGroupNames().then(function(res) {
|
||||
let resArr = res;
|
||||
let resArr = res.data;
|
||||
let groupNameTaken = false;
|
||||
|
||||
$('#RegisterBtn').click(function() {
|
||||
|
@ -88,28 +94,33 @@ $(document).ready(function () {
|
|||
{
|
||||
$('#pass1').addClass('invalidInput');
|
||||
e.preventDefault();
|
||||
return;
|
||||
}
|
||||
|
||||
if($('#pass2').val().length === 0)
|
||||
{
|
||||
$('#pass2').addClass('invalidInput');
|
||||
e.preventDefault();
|
||||
return;
|
||||
}
|
||||
|
||||
if($('#username').val().length === 0)
|
||||
{
|
||||
$('#username').addClass('invalidInput');
|
||||
e.preventDefault();
|
||||
return;
|
||||
}
|
||||
|
||||
if($('#pass1').hasClass('invalidInput'))
|
||||
{
|
||||
e.preventDefault();
|
||||
return;
|
||||
}
|
||||
|
||||
if($('#pass2').hasClass('invalidInput'))
|
||||
{
|
||||
e.preventDefault();
|
||||
return;
|
||||
}
|
||||
|
||||
if(!$.isNumeric($('#NUDDisplay').text()))
|
||||
|
@ -127,32 +138,28 @@ $(document).ready(function () {
|
|||
{
|
||||
$('#username').addClass('invalidInput');
|
||||
e.preventDefault();
|
||||
return;
|
||||
}
|
||||
|
||||
let URL = "/Backend/Controllers/Group/SigningUp.php";
|
||||
let formData = new FormData(this);
|
||||
let name = $('#RegisterBtn').attr('name');
|
||||
|
||||
let form = $('#RegisterForm')[0];
|
||||
let formData = new FormData(form);
|
||||
|
||||
let id = $('#RegisterBtn').attr('name');
|
||||
let value = $('#RegisterBtn').val();
|
||||
|
||||
formData.append(name, value);
|
||||
formData.append(id, value);
|
||||
|
||||
$.ajax({
|
||||
url: URL,
|
||||
type: 'POST',
|
||||
data: formData,
|
||||
mimeType:"multipart/form-data",
|
||||
contentType: false,
|
||||
cache: false,
|
||||
processData:false,
|
||||
success: function(data, textStatus, jqXHR)
|
||||
{
|
||||
console.log(data);
|
||||
},
|
||||
error: function(jqXHR, textStatus, errorThrown)
|
||||
{
|
||||
console.log(textStatus);
|
||||
}
|
||||
axios.post(URL, formData, {
|
||||
header: 'multipart/form-data'
|
||||
}).then(res => {
|
||||
console.log(res);
|
||||
}).catch(error => {
|
||||
console.log(error);
|
||||
});
|
||||
|
||||
e.preventDefault();
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -195,29 +202,28 @@ $(document).ready(function () {
|
|||
// Login start
|
||||
$('#LoginForm').submit(function(e) {
|
||||
let URL = "/Backend/Controllers/Group/Login.php";
|
||||
let formData = new FormData(this);
|
||||
let name = $('#LoginBtn').attr('name');
|
||||
|
||||
let form = $('#LoginForm')[0];
|
||||
let formData = new FormData(form);
|
||||
|
||||
let id = $('#LoginBtn').attr('name');
|
||||
let value = $('#LoginBtn').val();
|
||||
|
||||
formData.append(name, value);
|
||||
formData.append(id, value);
|
||||
|
||||
$.ajax({
|
||||
url: URL,
|
||||
type: 'POST',
|
||||
data: formData,
|
||||
mimeType:"multipart/form-data",
|
||||
contentType: false,
|
||||
cache: false,
|
||||
processData:false,
|
||||
success: function(data, textStatus, jqXHR)
|
||||
|
||||
axios.post(URL, formData, {
|
||||
header: 'multipart/form-data'
|
||||
}).then(res => {
|
||||
if (res.status === 200)
|
||||
{
|
||||
console.log(data);
|
||||
},
|
||||
error: function(jqXHR, textStatus, errorThrown)
|
||||
{
|
||||
console.log(`XHR: ${jqXHR} \n Status: ${textStatus} \n Error: ${errorThrown}`);
|
||||
}
|
||||
console.log('Logged in');
|
||||
}
|
||||
}).catch(error => {
|
||||
console.log(error);
|
||||
});
|
||||
|
||||
e.preventDefault();
|
||||
})
|
||||
// Login end
|
||||
});
|
|
@ -1,19 +0,0 @@
|
|||
$(window).on("load", function(){
|
||||
dataFetch();
|
||||
});
|
||||
|
||||
|
||||
function dataFetch(){
|
||||
$.ajax({
|
||||
type: "GET",
|
||||
url: "/Game-Jaming/Backend/controllers/GameJam/GetGameJam.php",
|
||||
success: function(result){
|
||||
console.log(result[0].name);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
//console.log(result.name); ?gameJamId=1
|
||||
//console.log(result[0].name); uden ?gameJamId=1
|
|
@ -1,3 +1,6 @@
|
|||
body{
|
||||
text-align: center;
|
||||
}
|
||||
.HeaderPanel {
|
||||
position: fixed;
|
||||
overflow: hidden;
|
||||
|
@ -23,4 +26,74 @@
|
|||
|
||||
.HeaderLeft {
|
||||
float: left;
|
||||
}
|
||||
}
|
||||
|
||||
/*Create game jam*/
|
||||
|
||||
#createGameJam{
|
||||
justify-content: center;
|
||||
display: grid;
|
||||
}
|
||||
#createGameJam input{
|
||||
display: block;
|
||||
position: center;
|
||||
|
||||
}
|
||||
|
||||
#startTime {
|
||||
border-radius: 15px;
|
||||
color: #474747;
|
||||
background-color: rgba(255, 255, 255, .55);
|
||||
border: double;
|
||||
filter: invert(90%);
|
||||
}
|
||||
|
||||
#endTime {
|
||||
border-radius: 15px;
|
||||
color: #474747;
|
||||
background-color: rgba(255, 255, 255, .55);
|
||||
border: double;
|
||||
filter: invert(90%);
|
||||
}
|
||||
|
||||
#startDate {
|
||||
border-radius: 15px;
|
||||
color: #474747;
|
||||
background-color: rgba(255, 255, 255, .55);
|
||||
border: double;
|
||||
filter: invert(90%);
|
||||
}
|
||||
|
||||
#endDate {
|
||||
border-radius: 15px;
|
||||
color: #474747;
|
||||
background-color: rgba(255, 255, 255, .55);
|
||||
border: double;
|
||||
filter: invert(90%);
|
||||
}
|
||||
|
||||
#nameOfGameJam {
|
||||
background-color: rgb(18, 18, 18);
|
||||
color: rgba(255, 255, 255, .55);
|
||||
border-radius: 15px;
|
||||
border: double;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#description {
|
||||
background-color: rgb(18, 18, 18);
|
||||
color: rgba(255, 255, 255, .55);
|
||||
border-radius: 15px;
|
||||
border: double;
|
||||
width:400px;
|
||||
height:250px;
|
||||
}
|
||||
|
||||
#indsend {
|
||||
border-radius: 15px;
|
||||
color: rgba(255, 255, 255, .55);
|
||||
background-color: rgb(18, 18, 18);
|
||||
border: double;
|
||||
}
|
||||
/*Create Game Jam end*/
|
|
@ -352,6 +352,65 @@ a:hover {
|
|||
transform: translate(-50%, -50%);
|
||||
}
|
||||
|
||||
.box #NUDMinus {
|
||||
color: rgba(255, 255, 255, .55);
|
||||
background-color: transparent;
|
||||
border: none;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.box #NUDMinus:focus {
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.box #NUDMinus:focus-visible {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.box #NUDDisplay {
|
||||
color: rgba(255, 255, 255, .55);
|
||||
background-color: transparent;
|
||||
border: none;
|
||||
cursor: text;
|
||||
width: 65%;
|
||||
}
|
||||
|
||||
.box #NUDDisplay:focus {
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.box #NUDDisplay:focus-visible {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.box #NUDPlus {
|
||||
color: rgba(255, 255, 255, .55);
|
||||
background-color: transparent;
|
||||
border: none;
|
||||
float: right;
|
||||
}
|
||||
|
||||
.box #NUDPlus:focus {
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.box #NUDPlus:focus-visible {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.box #GameJamSelect:focus {
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.box #GameJamSelect:hover {
|
||||
color: rgba(255, 255, 255, .75);
|
||||
}
|
||||
|
||||
.box #GameJamSelect ul {
|
||||
background-color: red;
|
||||
}
|
||||
|
||||
|
||||
.box {
|
||||
background-color: rgb(18, 18, 18);
|
||||
}
|
||||
|
@ -749,7 +808,7 @@ image_gruppenavn{
|
|||
}
|
||||
|
||||
.hasEvent {
|
||||
background-color: red;
|
||||
background-color: red;;
|
||||
}
|
||||
/*Kalender slut*/
|
||||
|
||||
|
|
|
@ -1,14 +1,8 @@
|
|||
<?php
|
||||
require "vendor/autoload.php";
|
||||
require_once "vendor/autoload.php";
|
||||
use Illuminate\Database\Capsule\Manager as Capsule;
|
||||
$capsule = new Capsule;
|
||||
$capsule->addConnection([
|
||||
"driver" => "mysql",
|
||||
"host" => "localhost",
|
||||
"port" => "3306",
|
||||
"database" => "testdb",
|
||||
"username" => "root",
|
||||
"password" => "V#_xWL6_"
|
||||
]);
|
||||
$con = json_decode(file_get_contents('config/database.json', true), true);
|
||||
$capsule->addConnection($con);
|
||||
$capsule->setAsGlobal();
|
||||
$capsule->bootEloquent();
|
||||
|
|
|
@ -1,10 +1,15 @@
|
|||
{
|
||||
"require": {
|
||||
"illuminate/database": "^8.30"
|
||||
"illuminate/database": "^8.30",
|
||||
"ext-mysqli": "*",
|
||||
"ext-sqlite3": "*",
|
||||
"ext-fileinfo": "*"
|
||||
},
|
||||
"autoload": {
|
||||
"classmap": [
|
||||
"Backend/Models"
|
||||
]
|
||||
}
|
||||
},
|
||||
"name": "sde_skp/game_jaming",
|
||||
"description": "description"
|
||||
}
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "f8dc5027639f0368374ccb33723ddcd2",
|
||||
"content-hash": "f7278c3dc731961ed65f3f31bf2b49f0",
|
||||
"packages": [
|
||||
{
|
||||
"name": "doctrine/inflector",
|
||||
|
@ -103,16 +103,16 @@
|
|||
},
|
||||
{
|
||||
"name": "illuminate/collections",
|
||||
"version": "v8.32.1",
|
||||
"version": "v8.34.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/illuminate/collections.git",
|
||||
"reference": "d7cc717a00064b40fa63a8ad522042005e1de1ed"
|
||||
"reference": "e18d6e4cf03dd597bc3ecd86fefc2023d0c7a5e8"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/illuminate/collections/zipball/d7cc717a00064b40fa63a8ad522042005e1de1ed",
|
||||
"reference": "d7cc717a00064b40fa63a8ad522042005e1de1ed",
|
||||
"url": "https://api.github.com/repos/illuminate/collections/zipball/e18d6e4cf03dd597bc3ecd86fefc2023d0c7a5e8",
|
||||
"reference": "e18d6e4cf03dd597bc3ecd86fefc2023d0c7a5e8",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -153,20 +153,20 @@
|
|||
"issues": "https://github.com/laravel/framework/issues",
|
||||
"source": "https://github.com/laravel/framework"
|
||||
},
|
||||
"time": "2021-03-08T17:22:22+00:00"
|
||||
"time": "2021-03-19T00:05:33+00:00"
|
||||
},
|
||||
{
|
||||
"name": "illuminate/container",
|
||||
"version": "v8.32.1",
|
||||
"version": "v8.34.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/illuminate/container.git",
|
||||
"reference": "3d6ce613f455093fdf8bd3c81b30104aef0b11e0"
|
||||
"reference": "0e38ee1632d470e56aece0079e6e22d13e6bea8e"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/illuminate/container/zipball/3d6ce613f455093fdf8bd3c81b30104aef0b11e0",
|
||||
"reference": "3d6ce613f455093fdf8bd3c81b30104aef0b11e0",
|
||||
"url": "https://api.github.com/repos/illuminate/container/zipball/0e38ee1632d470e56aece0079e6e22d13e6bea8e",
|
||||
"reference": "0e38ee1632d470e56aece0079e6e22d13e6bea8e",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -204,20 +204,20 @@
|
|||
"issues": "https://github.com/laravel/framework/issues",
|
||||
"source": "https://github.com/laravel/framework"
|
||||
},
|
||||
"time": "2021-02-12T21:15:27+00:00"
|
||||
"time": "2021-03-16T19:42:20+00:00"
|
||||
},
|
||||
{
|
||||
"name": "illuminate/contracts",
|
||||
"version": "v8.32.1",
|
||||
"version": "v8.34.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/illuminate/contracts.git",
|
||||
"reference": "9c7a9868d7485a82663d67109429094c8e4ed56d"
|
||||
"reference": "121cea1d8b8772bc7fee99c71ecf0f57c1d77b3b"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/illuminate/contracts/zipball/9c7a9868d7485a82663d67109429094c8e4ed56d",
|
||||
"reference": "9c7a9868d7485a82663d67109429094c8e4ed56d",
|
||||
"url": "https://api.github.com/repos/illuminate/contracts/zipball/121cea1d8b8772bc7fee99c71ecf0f57c1d77b3b",
|
||||
"reference": "121cea1d8b8772bc7fee99c71ecf0f57c1d77b3b",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -252,20 +252,20 @@
|
|||
"issues": "https://github.com/laravel/framework/issues",
|
||||
"source": "https://github.com/laravel/framework"
|
||||
},
|
||||
"time": "2021-02-26T13:17:03+00:00"
|
||||
"time": "2021-03-12T14:45:30+00:00"
|
||||
},
|
||||
{
|
||||
"name": "illuminate/database",
|
||||
"version": "v8.32.1",
|
||||
"version": "v8.34.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/illuminate/database.git",
|
||||
"reference": "f6a10cebd9bbd188ca66993168fb453439dbb50f"
|
||||
"reference": "74a165fd07b36cc0ea3558fa391b762867af87e8"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/illuminate/database/zipball/f6a10cebd9bbd188ca66993168fb453439dbb50f",
|
||||
"reference": "f6a10cebd9bbd188ca66993168fb453439dbb50f",
|
||||
"url": "https://api.github.com/repos/illuminate/database/zipball/74a165fd07b36cc0ea3558fa391b762867af87e8",
|
||||
"reference": "74a165fd07b36cc0ea3558fa391b762867af87e8",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -320,11 +320,11 @@
|
|||
"issues": "https://github.com/laravel/framework/issues",
|
||||
"source": "https://github.com/laravel/framework"
|
||||
},
|
||||
"time": "2021-03-09T14:06:15+00:00"
|
||||
"time": "2021-03-23T15:12:51+00:00"
|
||||
},
|
||||
{
|
||||
"name": "illuminate/macroable",
|
||||
"version": "v8.32.1",
|
||||
"version": "v8.34.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/illuminate/macroable.git",
|
||||
|
@ -370,16 +370,16 @@
|
|||
},
|
||||
{
|
||||
"name": "illuminate/support",
|
||||
"version": "v8.32.1",
|
||||
"version": "v8.34.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/illuminate/support.git",
|
||||
"reference": "2ef7ff288366a1ebe32f633196a1b90bd443acc3"
|
||||
"reference": "b7b27e758b68aad44558c62e7374328835895386"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/illuminate/support/zipball/2ef7ff288366a1ebe32f633196a1b90bd443acc3",
|
||||
"reference": "2ef7ff288366a1ebe32f633196a1b90bd443acc3",
|
||||
"url": "https://api.github.com/repos/illuminate/support/zipball/b7b27e758b68aad44558c62e7374328835895386",
|
||||
"reference": "b7b27e758b68aad44558c62e7374328835895386",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -434,7 +434,7 @@
|
|||
"issues": "https://github.com/laravel/framework/issues",
|
||||
"source": "https://github.com/laravel/framework"
|
||||
},
|
||||
"time": "2021-03-05T15:22:14+00:00"
|
||||
"time": "2021-03-21T13:37:37+00:00"
|
||||
},
|
||||
{
|
||||
"name": "nesbot/carbon",
|
||||
|
@ -1625,7 +1625,11 @@
|
|||
"stability-flags": [],
|
||||
"prefer-stable": false,
|
||||
"prefer-lowest": false,
|
||||
"platform": [],
|
||||
"platform": {
|
||||
"ext-mysqli": "*",
|
||||
"ext-sqlite3": "*",
|
||||
"ext-fileinfo": "*"
|
||||
},
|
||||
"platform-dev": [],
|
||||
"plugin-api-version": "2.0.0"
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue