mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-05-24 02:14:21 -04:00
Login UI, Database Seeds, Dashboard layouts (#2450)
* Implement CoreUI Interface * Core UI Navigation wire frame * UI - Fix sidebar nav - add Invoice Ninja Logo * Create layout using CoreUI admin template * Login UI, Database seeds
This commit is contained in:
parent
f42024f84a
commit
528c99f655
@ -22,4 +22,8 @@ if (! defined('APP_NAME')) {
|
||||
define('TEST_CLIENTNAME', env('TEST_CLIENTNAME', 'client@example.com'));
|
||||
define('TEST_PASSWORD', 'password');
|
||||
|
||||
|
||||
|
||||
define('BANK_LIBRARY_OFX', 1);
|
||||
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
namespace App\POPO;
|
||||
namespace App\DataMapper;
|
||||
|
||||
class InvoiceItem
|
||||
{
|
@ -32,4 +32,9 @@ class HomeController extends Controller
|
||||
|
||||
return view('dashboard.index');
|
||||
}
|
||||
|
||||
public function signup()
|
||||
{
|
||||
return 'sign up page';
|
||||
}
|
||||
}
|
||||
|
243
app/Libraries/OFX.php
Normal file
243
app/Libraries/OFX.php
Normal file
@ -0,0 +1,243 @@
|
||||
<?php
|
||||
|
||||
namespace App\Libraries;
|
||||
|
||||
// https://github.com/denvertimothy/OFX
|
||||
|
||||
use SimpleXMLElement;
|
||||
|
||||
class OFX
|
||||
{
|
||||
public $bank;
|
||||
public $request;
|
||||
public $response;
|
||||
public $responseHeader;
|
||||
public $responseBody;
|
||||
|
||||
public function __construct($bank, $request)
|
||||
{
|
||||
$this->bank = $bank;
|
||||
$this->request = $request;
|
||||
}
|
||||
|
||||
public function go()
|
||||
{
|
||||
$c = curl_init();
|
||||
curl_setopt($c, CURLOPT_URL, $this->bank->url);
|
||||
curl_setopt($c, CURLOPT_POST, 1);
|
||||
// User-Agent: http://www.ofxhome.com/ofxforum/viewtopic.php?pid=108091#p108091
|
||||
curl_setopt($c, CURLOPT_HTTPHEADER, ['Content-Type: application/x-ofx', 'User-Agent: httpclient']);
|
||||
curl_setopt($c, CURLOPT_POSTFIELDS, $this->request);
|
||||
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
|
||||
|
||||
$this->response = curl_exec($c);
|
||||
|
||||
curl_close($c);
|
||||
|
||||
$tmp = explode('<OFX>', $this->response);
|
||||
$this->responseHeader = $tmp[0];
|
||||
$this->responseBody = '<OFX>'.$tmp[1];
|
||||
}
|
||||
|
||||
public function xml()
|
||||
{
|
||||
$xml = $this->responseBody;
|
||||
$xml = self::closeTags($xml);
|
||||
$x = new SimpleXMLElement($xml);
|
||||
|
||||
return $x;
|
||||
}
|
||||
|
||||
public static function closeTags($x)
|
||||
{
|
||||
$x = preg_replace('/\s+/', '', $x);
|
||||
|
||||
return preg_replace('/(<([^<\/]+)>)(?!.*?<\/\2>)([^<]+)/', '\1\3</\2>', $x);
|
||||
}
|
||||
}
|
||||
|
||||
class Finance
|
||||
{
|
||||
public $banks;
|
||||
}
|
||||
|
||||
class Bank
|
||||
{
|
||||
public $logins; // array of class User
|
||||
public $finance; // the Finance object that hold this Bank object
|
||||
public $fid;
|
||||
public $org;
|
||||
public $url;
|
||||
|
||||
public function __construct($finance, $fid, $url, $org)
|
||||
{
|
||||
$this->finance = $finance;
|
||||
$this->fid = $fid;
|
||||
$this->url = $url;
|
||||
$this->org = $org;
|
||||
}
|
||||
}
|
||||
|
||||
class Login
|
||||
{
|
||||
public $accounts;
|
||||
public $bank;
|
||||
public $id;
|
||||
public $pass;
|
||||
public $ofxVersion;
|
||||
public $appVersion;
|
||||
|
||||
public function __construct($bank, $id, $pass)
|
||||
{
|
||||
$this->bank = $bank;
|
||||
$this->id = $id;
|
||||
$this->pass = $pass;
|
||||
}
|
||||
|
||||
public function setup()
|
||||
{
|
||||
$ofxRequest =
|
||||
"OFXHEADER:100\n".
|
||||
"DATA:OFXSGML\n".
|
||||
"VERSION:" . $this->ofxVersion . "\n".
|
||||
"SECURITY:NONE\n".
|
||||
"ENCODING:USASCII\n".
|
||||
"CHARSET:1252\n".
|
||||
"COMPRESSION:NONE\n".
|
||||
"OLDFILEUID:NONE\n".
|
||||
"NEWFILEUID:NONE\n".
|
||||
"\n".
|
||||
"<OFX>\n".
|
||||
"<SIGNONMSGSRQV1>\n".
|
||||
"<SONRQ>\n".
|
||||
"<DTCLIENT>20110412162900.000[-7:MST]\n".
|
||||
'<USERID>'.$this->id."\n".
|
||||
'<USERPASS>'.$this->pass."\n".
|
||||
"<GENUSERKEY>N\n".
|
||||
"<LANGUAGE>ENG\n".
|
||||
"<FI>\n".
|
||||
'<ORG>'.$this->bank->org."\n".
|
||||
'<FID>'.$this->bank->fid."\n".
|
||||
"</FI>\n".
|
||||
"<APPID>QWIN\n".
|
||||
"<APPVER>" . $this->appVersion . "\n".
|
||||
"</SONRQ>\n".
|
||||
"</SIGNONMSGSRQV1>\n".
|
||||
"<SIGNUPMSGSRQV1>\n".
|
||||
"<ACCTINFOTRNRQ>\n".
|
||||
'<TRNUID>'.md5(time().$this->bank->url.$this->id)."\n".
|
||||
"<ACCTINFORQ>\n".
|
||||
"<DTACCTUP>19900101\n".
|
||||
"</ACCTINFORQ>\n".
|
||||
"</ACCTINFOTRNRQ> \n".
|
||||
"</SIGNUPMSGSRQV1>\n".
|
||||
"</OFX>\n";
|
||||
$o = new OFX($this->bank, $ofxRequest);
|
||||
$o->go();
|
||||
$x = $o->xml();
|
||||
foreach ($x->xpath('/OFX/SIGNUPMSGSRSV1/ACCTINFOTRNRS/ACCTINFORS/ACCTINFO/BANKACCTINFO/BANKACCTFROM') as $a) {
|
||||
$this->accounts[] = new Account($this, (string) $a->ACCTID, 'BANK', (string) $a->ACCTTYPE, (string) $a->BANKID);
|
||||
}
|
||||
foreach ($x->xpath('/OFX/SIGNUPMSGSRSV1/ACCTINFOTRNRS/ACCTINFORS/ACCTINFO/CCACCTINFO/CCACCTFROM') as $a) {
|
||||
$this->accounts[] = new Account($this, (string) $a->ACCTID, 'CC');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class Account
|
||||
{
|
||||
public $login;
|
||||
public $id;
|
||||
public $type;
|
||||
public $subType;
|
||||
public $bankId;
|
||||
public $ledgerBalance;
|
||||
public $availableBalance;
|
||||
public $response;
|
||||
|
||||
public function __construct($login, $id, $type, $subType = null, $bankId = null)
|
||||
{
|
||||
$this->login = $login;
|
||||
$this->id = $id;
|
||||
$this->type = $type;
|
||||
$this->subType = $subType;
|
||||
$this->bankId = $bankId;
|
||||
}
|
||||
|
||||
public function setup($includeTransactions = true)
|
||||
{
|
||||
$ofxRequest =
|
||||
"OFXHEADER:100\n".
|
||||
"DATA:OFXSGML\n".
|
||||
"VERSION:" . $this->login->ofxVersion . "\n".
|
||||
"SECURITY:NONE\n".
|
||||
"ENCODING:USASCII\n".
|
||||
"CHARSET:1252\n".
|
||||
"COMPRESSION:NONE\n".
|
||||
"OLDFILEUID:NONE\n".
|
||||
"NEWFILEUID:NONE\n".
|
||||
"\n".
|
||||
"<OFX>\n".
|
||||
"<SIGNONMSGSRQV1>\n".
|
||||
"<SONRQ>\n".
|
||||
"<DTCLIENT>20110412162900.000[-7:MST]\n".
|
||||
'<USERID>'.$this->login->id."\n".
|
||||
'<USERPASS>'.$this->login->pass."\n".
|
||||
"<LANGUAGE>ENG\n".
|
||||
"<FI>\n".
|
||||
'<ORG>'.$this->login->bank->org."\n".
|
||||
'<FID>'.$this->login->bank->fid."\n".
|
||||
"</FI>\n".
|
||||
"<APPID>QWIN\n".
|
||||
"<APPVER>" . $this->login->appVersion . "\n".
|
||||
"</SONRQ>\n".
|
||||
"</SIGNONMSGSRQV1>\n";
|
||||
if ($this->type == 'BANK') {
|
||||
$ofxRequest .=
|
||||
" <BANKMSGSRQV1>\n".
|
||||
" <STMTTRNRQ>\n".
|
||||
' <TRNUID>'.md5(time().$this->login->bank->url.$this->id)."\n".
|
||||
" <STMTRQ>\n".
|
||||
" <BANKACCTFROM>\n".
|
||||
' <BANKID>'.$this->bankId."\n".
|
||||
' <ACCTID>'.$this->id."\n".
|
||||
' <ACCTTYPE>'.$this->subType."\n".
|
||||
" </BANKACCTFROM>\n".
|
||||
" <INCTRAN>\n".
|
||||
" <DTSTART>20110301\n".
|
||||
' <INCLUDE>'.($includeTransactions ? 'Y' : 'N')."\n".
|
||||
" </INCTRAN>\n".
|
||||
" </STMTRQ>\n".
|
||||
" </STMTTRNRQ>\n".
|
||||
" </BANKMSGSRQV1>\n";
|
||||
} elseif ($this->type == 'CC') {
|
||||
$ofxRequest .=
|
||||
" <CREDITCARDMSGSRQV1>\n".
|
||||
" <CCSTMTTRNRQ>\n".
|
||||
' <TRNUID>'.md5(time().$this->login->bank->url.$this->id)."\n".
|
||||
" <CCSTMTRQ>\n".
|
||||
" <CCACCTFROM>\n".
|
||||
' <ACCTID>'.$this->id."\n".
|
||||
" </CCACCTFROM>\n".
|
||||
" <INCTRAN>\n".
|
||||
" <DTSTART>20110320\n".
|
||||
' <INCLUDE>'.($includeTransactions ? 'Y' : 'N')."\n".
|
||||
" </INCTRAN>\n".
|
||||
" </CCSTMTRQ>\n".
|
||||
" </CCSTMTTRNRQ>\n".
|
||||
" </CREDITCARDMSGSRQV1>\n";
|
||||
}
|
||||
$ofxRequest .=
|
||||
'</OFX>';
|
||||
$o = new OFX($this->login->bank, $ofxRequest);
|
||||
$o->go();
|
||||
$this->response = $o->response;
|
||||
$x = $o->xml();
|
||||
$a = $x->xpath('/OFX/*/*/*/LEDGERBAL/BALAMT');
|
||||
$this->ledgerBalance = (float) $a[0];
|
||||
$a = $x->xpath('/OFX/*/*/*/AVAILBAL/BALAMT');
|
||||
if (isset($a[0])) {
|
||||
$this->availableBalance = (float) $a[0];
|
||||
}
|
||||
}
|
||||
}
|
@ -3,7 +3,7 @@
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use App\Models\Traits;
|
||||
use App\Models\Traits\AccountTrait;
|
||||
|
||||
class Account extends Model
|
||||
{
|
||||
|
28
app/Models/Bank.php
Normal file
28
app/Models/Bank.php
Normal file
@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Eloquent;
|
||||
|
||||
/**
|
||||
* Class Bank.
|
||||
*/
|
||||
class Bank extends Eloquent
|
||||
{
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
public $timestamps = false;
|
||||
|
||||
/**
|
||||
* @param $finance
|
||||
*
|
||||
* @return \App\Libraries\Bank
|
||||
*/
|
||||
public function getOFXBank($finance)
|
||||
{
|
||||
$config = json_decode($this->config);
|
||||
|
||||
return new \App\Libraries\Bank($finance, $config->fid, $config->url, $config->org);
|
||||
}
|
||||
}
|
61
app/Models/BankAccount.php
Normal file
61
app/Models/BankAccount.php
Normal file
@ -0,0 +1,61 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Crypt;
|
||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
|
||||
/**
|
||||
* Class BankAccount.
|
||||
*/
|
||||
class BankAccount extends Model
|
||||
{
|
||||
use SoftDeletes;
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
protected $dates = ['deleted_at'];
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
protected $fillable = [
|
||||
'bank_id',
|
||||
'app_version',
|
||||
'ofx_version',
|
||||
];
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
public function getUsername()
|
||||
{
|
||||
return Crypt::decrypt($this->username);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $config
|
||||
*/
|
||||
public function setUsername($value)
|
||||
{
|
||||
$this->username = Crypt::encrypt($value);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
|
||||
*/
|
||||
public function bank()
|
||||
{
|
||||
return $this->belongsTo(Bank::class);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \Illuminate\Database\Eloquent\Relations\HasMany
|
||||
*/
|
||||
public function bank_subaccounts()
|
||||
{
|
||||
return $this->hasMany('App\Models\BankSubaccount');
|
||||
}
|
||||
}
|
26
app/Models/BankSubaccount.php
Normal file
26
app/Models/BankSubaccount.php
Normal file
@ -0,0 +1,26 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
|
||||
/**
|
||||
* Class BankSubaccount.
|
||||
*/
|
||||
class BankSubaccount extends Model
|
||||
{
|
||||
use SoftDeletes;
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
protected $dates = ['deleted_at'];
|
||||
|
||||
/**
|
||||
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
|
||||
*/
|
||||
public function bank_account()
|
||||
{
|
||||
return $this->belongsTo(BankAccount::class);
|
||||
}
|
||||
}
|
@ -6,5 +6,6 @@ use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Country extends Model
|
||||
{
|
||||
//
|
||||
public $timestamps = false;
|
||||
|
||||
}
|
||||
|
@ -6,5 +6,6 @@ use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Currency extends Model
|
||||
{
|
||||
//
|
||||
public $timestamps = false;
|
||||
|
||||
}
|
||||
|
@ -6,5 +6,6 @@ use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Language extends Model
|
||||
{
|
||||
//
|
||||
public $timestamps = false;
|
||||
|
||||
}
|
||||
|
@ -4,7 +4,17 @@ namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
/**
|
||||
* Class PaymentLibrary.
|
||||
*/
|
||||
class PaymentLibrary extends Model
|
||||
{
|
||||
//
|
||||
|
||||
/**
|
||||
* @return \Illuminate\Database\Eloquent\Relations\HasMany
|
||||
*/
|
||||
public function gateways()
|
||||
{
|
||||
return $this->hasMany(Gateway::class, 'payment_library_id');
|
||||
}
|
||||
}
|
||||
|
@ -6,5 +6,8 @@ use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Timezone extends Model
|
||||
{
|
||||
//
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
public $timestamps = false;
|
||||
}
|
||||
|
@ -19,10 +19,12 @@
|
||||
"type": "project",
|
||||
"require": {
|
||||
"php": "^7.1.3",
|
||||
"asgrim/ofxparser": "^1.2",
|
||||
"fideloper/proxy": "^4.0",
|
||||
"laravel/framework": "5.7.*",
|
||||
"laravel/tinker": "^1.0",
|
||||
"spatie/laravel-html": "^2.19"
|
||||
"spatie/laravel-html": "^2.19",
|
||||
"webpatser/laravel-countries": "dev-master#75992ad"
|
||||
},
|
||||
"require-dev": {
|
||||
"beyondcode/laravel-dump-server": "^1.0",
|
||||
@ -39,7 +41,10 @@
|
||||
],
|
||||
"psr-4": {
|
||||
"App\\": "app/"
|
||||
}
|
||||
},
|
||||
"files": [
|
||||
"app/Libraries/OFX.php"
|
||||
]
|
||||
},
|
||||
"autoload-dev": {
|
||||
"psr-4": {
|
||||
|
136
composer.lock
generated
136
composer.lock
generated
@ -4,8 +4,64 @@
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "349ead44e9c7f421ba04cc034a5ab71c",
|
||||
"content-hash": "218e884d0942a0ea04acd7d82b9705e8",
|
||||
"packages": [
|
||||
{
|
||||
"name": "asgrim/ofxparser",
|
||||
"version": "1.2.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/asgrim/ofxparser.git",
|
||||
"reference": "8ba143295be666ae2cac05674f7d526d8e0ebed7"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/asgrim/ofxparser/zipball/8ba143295be666ae2cac05674f7d526d8e0ebed7",
|
||||
"reference": "8ba143295be666ae2cac05674f7d526d8e0ebed7",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "~5.6|~7.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "~5.5",
|
||||
"squizlabs/php_codesniffer": "~2.6"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-0": {
|
||||
"OfxParser": "lib/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Guillaume Bailleul",
|
||||
"email": "contact@guillaume-bailleul.fr",
|
||||
"homepage": "http://www.guillaume-bailleul.fr"
|
||||
},
|
||||
{
|
||||
"name": "James Titcumb",
|
||||
"email": "hello@jamestitcumb.com",
|
||||
"homepage": "http://www.jamestitcumb.com/"
|
||||
},
|
||||
{
|
||||
"name": "Oliver Lowe",
|
||||
"email": "mrtriangle@gmail.com"
|
||||
}
|
||||
],
|
||||
"description": "Simple OFX file parser",
|
||||
"keywords": [
|
||||
"finance",
|
||||
"ofx",
|
||||
"open financial exchange",
|
||||
"parser"
|
||||
],
|
||||
"time": "2016-09-26T11:36:23+00:00"
|
||||
},
|
||||
{
|
||||
"name": "dnoegel/php-xdg-base-dir",
|
||||
"version": "0.1",
|
||||
@ -659,16 +715,16 @@
|
||||
},
|
||||
{
|
||||
"name": "league/flysystem",
|
||||
"version": "1.0.47",
|
||||
"version": "1.0.48",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/thephpleague/flysystem.git",
|
||||
"reference": "a11e4a75f256bdacf99d20780ce42d3b8272975c"
|
||||
"reference": "a6ded5b2f6055e2db97b4b859fdfca2b952b78aa"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/thephpleague/flysystem/zipball/a11e4a75f256bdacf99d20780ce42d3b8272975c",
|
||||
"reference": "a11e4a75f256bdacf99d20780ce42d3b8272975c",
|
||||
"url": "https://api.github.com/repos/thephpleague/flysystem/zipball/a6ded5b2f6055e2db97b4b859fdfca2b952b78aa",
|
||||
"reference": "a6ded5b2f6055e2db97b4b859fdfca2b952b78aa",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -739,7 +795,7 @@
|
||||
"sftp",
|
||||
"storage"
|
||||
],
|
||||
"time": "2018-09-14T15:30:29+00:00"
|
||||
"time": "2018-10-15T13:53:10+00:00"
|
||||
},
|
||||
{
|
||||
"name": "monolog/monolog",
|
||||
@ -2426,6 +2482,58 @@
|
||||
"environment"
|
||||
],
|
||||
"time": "2018-07-29T20:33:41+00:00"
|
||||
},
|
||||
{
|
||||
"name": "webpatser/laravel-countries",
|
||||
"version": "dev-master",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/webpatser/laravel-countries.git",
|
||||
"reference": "75992ad"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/webpatser/laravel-countries/zipball/75992ad",
|
||||
"reference": "75992ad",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.0"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-0": {
|
||||
"Webpatser\\Countries": "src/"
|
||||
},
|
||||
"classmap": [
|
||||
"src/commands"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Christoph Kempen",
|
||||
"email": "christoph@downsized.nl",
|
||||
"homepage": "http://downsized.nl/",
|
||||
"role": "developer"
|
||||
},
|
||||
{
|
||||
"name": "Paul Kievits",
|
||||
"role": "developer"
|
||||
}
|
||||
],
|
||||
"description": "Laravel Countries is a bundle for Laravel, providing Almost ISO 3166_2, 3166_3, currency, Capital and more for all countries.",
|
||||
"homepage": "https://github.com/webpatser/laravel-countries",
|
||||
"keywords": [
|
||||
"countries",
|
||||
"iso_3166_2",
|
||||
"iso_3166_3",
|
||||
"laravel"
|
||||
],
|
||||
"time": "2018-06-27T11:58:05+00:00"
|
||||
}
|
||||
],
|
||||
"packages-dev": [
|
||||
@ -3198,16 +3306,16 @@
|
||||
},
|
||||
{
|
||||
"name": "phpunit/php-code-coverage",
|
||||
"version": "6.0.8",
|
||||
"version": "6.1.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
|
||||
"reference": "848f78b3309780fef7ec8c4666b7ab4e6b09b22f"
|
||||
"reference": "0685fb6a43aed1b2e09804d1aaf17144c82861f8"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/848f78b3309780fef7ec8c4666b7ab4e6b09b22f",
|
||||
"reference": "848f78b3309780fef7ec8c4666b7ab4e6b09b22f",
|
||||
"url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/0685fb6a43aed1b2e09804d1aaf17144c82861f8",
|
||||
"reference": "0685fb6a43aed1b2e09804d1aaf17144c82861f8",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -3231,7 +3339,7 @@
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "6.0-dev"
|
||||
"dev-master": "6.1-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
@ -3257,7 +3365,7 @@
|
||||
"testing",
|
||||
"xunit"
|
||||
],
|
||||
"time": "2018-10-04T03:41:23+00:00"
|
||||
"time": "2018-10-16T05:37:37+00:00"
|
||||
},
|
||||
{
|
||||
"name": "phpunit/php-file-iterator",
|
||||
@ -4188,7 +4296,9 @@
|
||||
],
|
||||
"aliases": [],
|
||||
"minimum-stability": "dev",
|
||||
"stability-flags": [],
|
||||
"stability-flags": {
|
||||
"webpatser/laravel-countries": 20
|
||||
},
|
||||
"prefer-stable": true,
|
||||
"prefer-lowest": false,
|
||||
"platform": {
|
||||
|
@ -164,6 +164,7 @@ return [
|
||||
* Dependency Service Providers
|
||||
*/
|
||||
Spatie\Html\HtmlServiceProvider::class,
|
||||
'Webpatser\Countries\CountriesServiceProvider',
|
||||
|
||||
/*
|
||||
* Package Service Providers...
|
||||
@ -232,6 +233,8 @@ return [
|
||||
*/
|
||||
|
||||
'Html' => Spatie\Html\Facades\Html::class,
|
||||
'Countries' => 'Webpatser\Countries\CountriesFacade',
|
||||
|
||||
],
|
||||
|
||||
];
|
||||
|
@ -4,5 +4,6 @@ return [
|
||||
|
||||
'web_url' => 'https://www.invoiceninja.com',
|
||||
'app_url' => 'https://app-v5.invoiceninja.com',
|
||||
'site_url' => '',
|
||||
|
||||
];
|
||||
|
@ -14,13 +14,18 @@ return [
|
||||
|
|
||||
*/
|
||||
|
||||
'analytics' => [
|
||||
'tracking_id' => env('TRACKING_ID'),
|
||||
],
|
||||
|
||||
'mailgun' => [
|
||||
'domain' => env('MAILGUN_DOMAIN'),
|
||||
'secret' => env('MAILGUN_SECRET'),
|
||||
'domain' => env('MAILGUN_DOMAIN'),
|
||||
'secret' => env('MAILGUN_SECRET'),
|
||||
'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'),
|
||||
],
|
||||
|
||||
'ses' => [
|
||||
'key' => env('SES_KEY'),
|
||||
'key' => env('SES_KEY'),
|
||||
'secret' => env('SES_SECRET'),
|
||||
'region' => env('SES_REGION', 'us-east-1'),
|
||||
],
|
||||
@ -30,9 +35,9 @@ return [
|
||||
],
|
||||
|
||||
'stripe' => [
|
||||
'model' => App\User::class,
|
||||
'key' => env('STRIPE_KEY'),
|
||||
'model' => App\Models\User::class,
|
||||
'key' => env('STRIPE_KEY'),
|
||||
'secret' => env('STRIPE_SECRET'),
|
||||
],
|
||||
|
||||
];
|
||||
];
|
@ -13,6 +13,7 @@ class CreateUsersTable extends Migration
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
require_once app_path() . '/Constants.php';
|
||||
|
||||
Schema::create('countries', function ($table) {
|
||||
$table->increments('id');
|
||||
@ -29,6 +30,10 @@ class CreateUsersTable extends Migration
|
||||
$table->string('region_code', 3)->default('');
|
||||
$table->string('sub_region_code', 3)->default('');
|
||||
$table->boolean('eea')->default(0);
|
||||
$table->boolean('swap_postal_code')->default(0);
|
||||
$table->boolean('swap_currency_symbol')->default(false);
|
||||
$table->string('thousand_separator')->nullable();
|
||||
$table->string('decimal_separator')->nullable();
|
||||
});
|
||||
|
||||
Schema::create('payment_types', function ($table) {
|
||||
@ -51,6 +56,8 @@ class CreateUsersTable extends Migration
|
||||
$table->string('thousand_separator');
|
||||
$table->string('decimal_separator');
|
||||
$table->string('code');
|
||||
$table->boolean('swap_currency_symbol')->default(false);
|
||||
|
||||
});
|
||||
|
||||
Schema::create('sizes', function ($table) {
|
||||
@ -409,6 +416,8 @@ class CreateUsersTable extends Migration
|
||||
$table->unsignedInteger('sort_order')->default(10000);
|
||||
$table->boolean('recommended')->default(0);
|
||||
$table->string('site_url', 200)->nullable();
|
||||
$table->boolean('is_offsite');
|
||||
$table->boolean('is_secure');
|
||||
});
|
||||
|
||||
DB::table('gateways')->update(['payment_library_id' => 1]);
|
||||
@ -470,6 +479,49 @@ class CreateUsersTable extends Migration
|
||||
|
||||
});
|
||||
|
||||
Schema::create('banks', function ($table) {
|
||||
$table->increments('id');
|
||||
$table->string('name');
|
||||
$table->string('remote_id');
|
||||
$table->integer('bank_library_id')->default(BANK_LIBRARY_OFX);
|
||||
$table->text('config');
|
||||
});
|
||||
|
||||
Schema::create('bank_accounts', function ($table) {
|
||||
$table->increments('id');
|
||||
$table->unsignedInteger('account_id');
|
||||
$table->unsignedInteger('bank_id');
|
||||
$table->unsignedInteger('user_id');
|
||||
$table->string('username');
|
||||
|
||||
$table->timestamps();
|
||||
$table->softDeletes();
|
||||
|
||||
$table->foreign('account_id')->references('id')->on('accounts')->onDelete('cascade');
|
||||
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
|
||||
$table->foreign('bank_id')->references('id')->on('banks');
|
||||
|
||||
});
|
||||
|
||||
|
||||
Schema::create('bank_subaccounts', function ($table) {
|
||||
$table->increments('id');
|
||||
$table->unsignedInteger('account_id');
|
||||
$table->unsignedInteger('user_id');
|
||||
$table->unsignedInteger('bank_account_id');
|
||||
|
||||
$table->string('account_name');
|
||||
$table->string('account_number');
|
||||
|
||||
$table->timestamps();
|
||||
$table->softDeletes();
|
||||
|
||||
$table->foreign('account_id')->references('id')->on('accounts')->onDelete('cascade');
|
||||
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
|
||||
$table->foreign('bank_account_id')->references('id')->on('bank_accounts')->onDelete('cascade');
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@ -480,6 +532,9 @@ class CreateUsersTable extends Migration
|
||||
public function down()
|
||||
{
|
||||
|
||||
Schema::dropIfExists('bank_subaccounts');
|
||||
Schema::dropIfExists('bank_accounts');
|
||||
Schema::dropIfExists('banks');
|
||||
Schema::dropIfExists('payment_libraries');
|
||||
Schema::dropIfExists('languages');
|
||||
Schema::dropIfExists('payments');
|
||||
|
42
database/seeds/BanksSeeder.php
Normal file
42
database/seeds/BanksSeeder.php
Normal file
File diff suppressed because one or more lines are too long
144
database/seeds/ConstantsSeeder.php
Normal file
144
database/seeds/ConstantsSeeder.php
Normal file
@ -0,0 +1,144 @@
|
||||
<?php
|
||||
|
||||
use App\Models\Timezone;
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
class ConstantsSeeder extends Seeder
|
||||
{
|
||||
public function run()
|
||||
{
|
||||
|
||||
\App\Models\PaymentLibrary::create(['name' => 'Omnipay']);
|
||||
|
||||
/*
|
||||
d, dd: Numeric date, no leading zero and leading zero, respectively. Eg, 5, 05.
|
||||
D, DD: Abbreviated and full weekday names, respectively. Eg, Mon, Monday.
|
||||
m, mm: Numeric month, no leading zero and leading zero, respectively. Eg, 7, 07.
|
||||
M, MM: Abbreviated and full month names, respectively. Eg, Jan, January
|
||||
yy, yyyy: 2- and 4-digit years, respectively. Eg, 12, 2012.)
|
||||
*/
|
||||
|
||||
$timezones[] = ['name'=>'Pacific/Midway', 'location', 'location' => '(GMT-11:00) Midway Island', 'utc_offset' => -39600];
|
||||
$timezones[] = ['name'=>'US/Samoa', 'location' => '(GMT-11:00) Samoa', 'utc_offset' => -39600];
|
||||
$timezones[] = ['name'=>'US/Hawaii', 'location' => '(GMT-10:00) Hawaii', 'utc_offset' => -36000];
|
||||
$timezones[] = ['name'=>'US/Alaska', 'location' => '(GMT-09:00) Alaska', 'utc_offset' => -32400];
|
||||
$timezones[] = ['name'=>'US/Pacific', 'location' => '(GMT-08:00) Pacific Time (US & Canada)', 'utc_offset' => -28800];
|
||||
$timezones[] = ['name'=>'America/Tijuana', 'location' => '(GMT-08:00) Tijuana', 'utc_offset' => -28800];
|
||||
$timezones[] = ['name'=>'US/Arizona', 'location' => '(GMT-07:00) Arizona', 'utc_offset' => -25200];
|
||||
$timezones[] = ['name'=>'US/Mountain', 'location' => '(GMT-07:00) Mountain Time (US & Canada)', 'utc_offset' => -25200];
|
||||
$timezones[] = ['name'=>'America/Chihuahua', 'location' => '(GMT-07:00) Chihuahua', 'utc_offset' => -25200];
|
||||
$timezones[] = ['name'=>'America/Mazatlan', 'location' => '(GMT-07:00) Mazatlan', 'utc_offset' => -25200];
|
||||
$timezones[] = ['name'=>'America/Mexico_City', 'location' => '(GMT-06:00) Mexico City', 'utc_offset' => -21600];
|
||||
$timezones[] = ['name'=>'America/Monterrey', 'location' => '(GMT-06:00) Monterrey', 'utc_offset' => -21600];
|
||||
$timezones[] = ['name'=>'Canada/Saskatchewan', 'location' => '(GMT-06:00) Saskatchewan', 'utc_offset' => -21600];
|
||||
$timezones[] = ['name'=>'US/Central', 'location' => '(GMT-06:00) Central Time (US & Canada)', 'utc_offset' => -21600];
|
||||
$timezones[] = ['name'=>'US/Eastern', 'location' => '(GMT-05:00) Eastern Time (US & Canada)', 'utc_offset' => -18000];
|
||||
$timezones[] = ['name'=>'US/East-Indiana', 'location' => '(GMT-05:00) Indiana (East)', 'utc_offset' => -18000];
|
||||
$timezones[] = ['name'=>'America/Bogota', 'location' => '(GMT-05:00) Bogota', 'utc_offset' => -18000];
|
||||
$timezones[] = ['name'=>'America/Lima', 'location' => '(GMT-05:00) Lima', 'utc_offset' => -18000];
|
||||
$timezones[] = ['name'=>'America/Caracas', 'location' => '(GMT-04:00) Caracas', 'utc_offset' => -14400];
|
||||
$timezones[] = ['name'=>'Canada/Atlantic', 'location' => '(GMT-04:00) Atlantic Time (Canada)', 'utc_offset' => -14400];
|
||||
$timezones[] = ['name'=>'America/La_Paz', 'location' => '(GMT-04:00) La Paz', 'utc_offset' => -14400];
|
||||
$timezones[] = ['name'=>'America/Santiago', 'location' => '(GMT-04:00) Santiago', 'utc_offset' => -14400];
|
||||
$timezones[] = ['name'=>'Canada/Newfoundland', 'location' => '(GMT-03:30) Newfoundland', 'utc_offset' => -12600];
|
||||
$timezones[] = ['name'=>'America/Buenos_Aires', 'location' => '(GMT-03:00) Buenos Aires', 'utc_offset' => -10800];
|
||||
$timezones[] = ['name'=>'America/Godthab', 'location' => '(GMT-03:00) Greenland', 'utc_offset' => -10800];
|
||||
$timezones[] = ['name'=>'Atlantic/Stanley', 'location' => '(GMT-02:00) Stanley', 'utc_offset' => -7200];
|
||||
$timezones[] = ['name'=>'Atlantic/Azores', 'location' => '(GMT-01:00) Azores', 'utc_offset' => -3600];
|
||||
$timezones[] = ['name'=>'Atlantic/Cape_Verde', 'location' => '(GMT-01:00) Cape Verde Is.', 'utc_offset' => -3600];
|
||||
$timezones[] = ['name'=>'Africa/Casablanca', 'location' => '(GMT) Casablanca', 'utc_offset' => 0];
|
||||
$timezones[] = ['name'=>'Europe/Dublin', 'location' => '(GMT) Dublin', 'utc_offset' => 0];
|
||||
$timezones[] = ['name'=>'Europe/Lisbon', 'location' => '(GMT) Lisbon', 'utc_offset' => 0];
|
||||
$timezones[] = ['name'=>'Europe/London', 'location' => '(GMT) London', 'utc_offset' => 0];
|
||||
$timezones[] = ['name'=>'Africa/Monrovia', 'location' => '(GMT) Monrovia', 'utc_offset' => 0];
|
||||
$timezones[] = ['name'=>'Europe/Amsterdam', 'location' => '(GMT+01:00) Amsterdam', 'utc_offset' => 3600];
|
||||
$timezones[] = ['name'=>'Europe/Belgrade', 'location' => '(GMT+01:00) Belgrade', 'utc_offset' => 3600];
|
||||
$timezones[] = ['name'=>'Europe/Berlin', 'location' => '(GMT+01:00) Berlin', 'utc_offset' => 3600];
|
||||
$timezones[] = ['name'=>'Europe/Bratislava', 'location' => '(GMT+01:00) Bratislava', 'utc_offset' => 3600];
|
||||
$timezones[] = ['name'=>'Europe/Brussels', 'location' => '(GMT+01:00) Brussels', 'utc_offset' => 3600];
|
||||
$timezones[] = ['name'=>'Europe/Budapest', 'location' => '(GMT+01:00) Budapest', 'utc_offset' => 3600];
|
||||
$timezones[] = ['name'=>'Europe/Copenhagen', 'location' => '(GMT+01:00) Copenhagen', 'utc_offset' => 3600];
|
||||
$timezones[] = ['name'=>'Europe/Ljubljana', 'location' => '(GMT+01:00) Ljubljana', 'utc_offset' => 3600];
|
||||
$timezones[] = ['name'=>'Europe/Madrid', 'location' => '(GMT+01:00) Madrid', 'utc_offset' => 3600];
|
||||
$timezones[] = ['name'=>'Europe/Paris', 'location' => '(GMT+01:00) Paris', 'utc_offset' => 3600];
|
||||
$timezones[] = ['name'=>'Europe/Prague', 'location' => '(GMT+01:00) Prague', 'utc_offset' => 3600];
|
||||
$timezones[] = ['name'=>'Europe/Rome', 'location' => '(GMT+01:00) Rome', 'utc_offset' => 3600];
|
||||
$timezones[] = ['name'=>'Europe/Sarajevo', 'location' => '(GMT+01:00) Sarajevo', 'utc_offset' => 3600];
|
||||
$timezones[] = ['name'=>'Europe/Skopje', 'location' => '(GMT+01:00) Skopje', 'utc_offset' => 3600];
|
||||
$timezones[] = ['name'=>'Europe/Stockholm', 'location' => '(GMT+01:00) Stockholm', 'utc_offset' => 3600];
|
||||
$timezones[] = ['name'=>'Europe/Vienna', 'location' => '(GMT+01:00) Vienna', 'utc_offset' => 3600];
|
||||
$timezones[] = ['name'=>'Europe/Warsaw', 'location' => '(GMT+01:00) Warsaw', 'utc_offset' => 3600];
|
||||
$timezones[] = ['name'=>'Europe/Zagreb', 'location' => '(GMT+01:00) Zagreb', 'utc_offset' => 3600];
|
||||
$timezones[] = ['name'=>'Europe/Athens', 'location' => '(GMT+02:00) Athens', 'utc_offset' => 7200];
|
||||
$timezones[] = ['name'=>'Europe/Bucharest', 'location' => '(GMT+02:00) Bucharest', 'utc_offset' => 7200];
|
||||
$timezones[] = ['name'=>'Africa/Cairo', 'location' => '(GMT+02:00) Cairo', 'utc_offset' => 7200];
|
||||
$timezones[] = ['name'=>'Africa/Harare', 'location' => '(GMT+02:00) Harare', 'utc_offset' => 7200];
|
||||
$timezones[] = ['name'=>'Europe/Helsinki', 'location' => '(GMT+02:00) Helsinki', 'utc_offset' => 7200];
|
||||
$timezones[] = ['name'=>'Europe/Istanbul', 'location' => '(GMT+02:00) Istanbul', 'utc_offset' => 7200];
|
||||
$timezones[] = ['name'=>'Asia/Jerusalem', 'location' => '(GMT+02:00) Jerusalem', 'utc_offset' => 7200];
|
||||
$timezones[] = ['name'=>'Europe/Kiev', 'location' => '(GMT+02:00) Kyiv', 'utc_offset' => 7200];
|
||||
$timezones[] = ['name'=>'Europe/Minsk', 'location' => '(GMT+02:00) Minsk', 'utc_offset' => 7200];
|
||||
$timezones[] = ['name'=>'Europe/Riga', 'location' => '(GMT+02:00) Riga', 'utc_offset' => 7200];
|
||||
$timezones[] = ['name'=>'Europe/Sofia', 'location' => '(GMT+02:00) Sofia', 'utc_offset' => 7200];
|
||||
$timezones[] = ['name'=>'Europe/Tallinn', 'location' => '(GMT+02:00) Tallinn', 'utc_offset' => 7200];
|
||||
$timezones[] = ['name'=>'Europe/Vilnius', 'location' => '(GMT+02:00) Vilnius', 'utc_offset' => 7200];
|
||||
$timezones[] = ['name'=>'Asia/Baghdad', 'location' => '(GMT+03:00) Baghdad', 'utc_offset' => 10800];
|
||||
$timezones[] = ['name'=>'Asia/Kuwait', 'location' => '(GMT+03:00) Kuwait', 'utc_offset' => 10800];
|
||||
$timezones[] = ['name'=>'Africa/Nairobi', 'location' => '(GMT+03:00) Nairobi', 'utc_offset' => 10800];
|
||||
$timezones[] = ['name'=>'Asia/Riyadh', 'location' => '(GMT+03:00) Riyadh', 'utc_offset' => 10800];
|
||||
$timezones[] = ['name'=>'Asia/Tehran', 'location' => '(GMT+03:30) Tehran', 'utc_offset' => 12600];
|
||||
$timezones[] = ['name'=>'Europe/Moscow', 'location' => '(GMT+04:00) Moscow', 'utc_offset' => 14400];
|
||||
$timezones[] = ['name'=>'Asia/Baku', 'location' => '(GMT+04:00) Baku', 'utc_offset' => 14400];
|
||||
$timezones[] = ['name'=>'Europe/Volgograd', 'location' => '(GMT+04:00) Volgograd', 'utc_offset' => 14400];
|
||||
$timezones[] = ['name'=>'Asia/Muscat', 'location' => '(GMT+04:00) Muscat', 'utc_offset' => 14400];
|
||||
$timezones[] = ['name'=>'Asia/Tbilisi', 'location' => '(GMT+04:00) Tbilisi', 'utc_offset' => 14400];
|
||||
$timezones[] = ['name'=>'Asia/Yerevan', 'location' => '(GMT+04:00) Yerevan', 'utc_offset' => 14400];
|
||||
$timezones[] = ['name'=>'Asia/Kabul', 'location' => '(GMT+04:30) Kabul', 'utc_offset' => 16200];
|
||||
$timezones[] = ['name'=>'Asia/Karachi', 'location' => '(GMT+05:00) Karachi', 'utc_offset' => 18000];
|
||||
$timezones[] = ['name'=>'Asia/Tashkent', 'location' => '(GMT+05:00) Tashkent', 'utc_offset' => 18000];
|
||||
$timezones[] = ['name'=>'Asia/Kolkata', 'location' => '(GMT+05:30) Kolkata', 'utc_offset' => 19800];
|
||||
$timezones[] = ['name'=>'Asia/Kathmandu', 'location' => '(GMT+05:45) Kathmandu', 'utc_offset' => 20700];
|
||||
$timezones[] = ['name'=>'Asia/Yekaterinburg', 'location' => '(GMT+06:00) Ekaterinburg', 'utc_offset' => 21600];
|
||||
$timezones[] = ['name'=>'Asia/Almaty', 'location' => '(GMT+06:00) Almaty', 'utc_offset' => 21600];
|
||||
$timezones[] = ['name'=>'Asia/Dhaka', 'location' => '(GMT+06:00) Dhaka', 'utc_offset' => 21600];
|
||||
$timezones[] = ['name'=>'Asia/Novosibirsk', 'location' => '(GMT+07:00) Novosibirsk', 'utc_offset' => 25200];
|
||||
$timezones[] = ['name'=>'Asia/Bangkok', 'location' => '(GMT+07:00) Bangkok', 'utc_offset' => 25200];
|
||||
$timezones[] = ['name'=>'Asia/Ho_Chi_Minh', 'location' => '(GMT+07.00) Ho Chi Minh', 'utc_offset' => 25200];
|
||||
$timezones[] = ['name'=>'Asia/Jakarta', 'location' => '(GMT+07:00) Jakarta', 'utc_offset' => 25200];
|
||||
$timezones[] = ['name'=>'Asia/Krasnoyarsk', 'location' => '(GMT+08:00) Krasnoyarsk', 'utc_offset' => 28800];
|
||||
$timezones[] = ['name'=>'Asia/Chongqing', 'location' => '(GMT+08:00) Chongqing', 'utc_offset' => 28800];
|
||||
$timezones[] = ['name'=>'Asia/Hong_Kong', 'location' => '(GMT+08:00) Hong Kong', 'utc_offset' => 28800];
|
||||
$timezones[] = ['name'=>'Asia/Kuala_Lumpur', 'location' => '(GMT+08:00) Kuala Lumpur', 'utc_offset' => 28800];
|
||||
$timezones[] = ['name'=>'Australia/Perth', 'location' => '(GMT+08:00) Perth', 'utc_offset' => 28800];
|
||||
$timezones[] = ['name'=>'Asia/Singapore', 'location' => '(GMT+08:00) Singapore', 'utc_offset' => 28800];
|
||||
$timezones[] = ['name'=>'Asia/Taipei', 'location' => '(GMT+08:00) Taipei', 'utc_offset' => 28800];
|
||||
$timezones[] = ['name'=>'Asia/Ulaanbaatar', 'location' => '(GMT+08:00) Ulaan Bataar', 'utc_offset' => 28800];
|
||||
$timezones[] = ['name'=>'Asia/Urumqi', 'location' => '(GMT+08:00) Urumqi', 'utc_offset' => 28800];
|
||||
$timezones[] = ['name'=>'Asia/Irkutsk', 'location' => '(GMT+09:00) Irkutsk', 'utc_offset' => 32400];
|
||||
$timezones[] = ['name'=>'Asia/Seoul', 'location' => '(GMT+09:00) Seoul', 'utc_offset' => 32400];
|
||||
$timezones[] = ['name'=>'Asia/Tokyo', 'location' => '(GMT+09:00) Tokyo', 'utc_offset' => 32400];
|
||||
$timezones[] = ['name'=>'Australia/Adelaide', 'location' => '(GMT+09:30) Adelaide', 'utc_offset' => 34200];
|
||||
$timezones[] = ['name'=>'Australia/Darwin', 'location' => '(GMT+09:30) Darwin', 'utc_offset' => 34200];
|
||||
$timezones[] = ['name'=>'Asia/Yakutsk', 'location' => '(GMT+10:00) Yakutsk', 'utc_offset' => 36000];
|
||||
$timezones[] = ['name'=>'Australia/Brisbane', 'location' => '(GMT+10:00) Brisbane', 'utc_offset' => 36000];
|
||||
$timezones[] = ['name'=>'Australia/Canberra', 'location' => '(GMT+10:00) Canberra', 'utc_offset' => 36000];
|
||||
$timezones[] = ['name'=>'Pacific/Guam', 'location' => '(GMT+10:00) Guam', 'utc_offset' => 36000];
|
||||
$timezones[] = ['name'=>'Australia/Hobart', 'location' => '(GMT+10:00) Hobart', 'utc_offset' => 36000];
|
||||
$timezones[] = ['name'=>'Australia/Melbourne', 'location' => '(GMT+10:00) Melbourne', 'utc_offset' => 36000];
|
||||
$timezones[] = ['name'=>'Pacific/Port_Moresby', 'location' => '(GMT+10:00) Port Moresby', 'utc_offset' => 36000];
|
||||
$timezones[] = ['name'=>'Australia/Sydney', 'location' => '(GMT+10:00) Sydney', 'utc_offset' => 36000];
|
||||
$timezones[] = ['name'=>'Asia/Vladivostok', 'location' => '(GMT+11:00) Vladivostok', 'utc_offset' => 39600];
|
||||
$timezones[] = ['name'=>'Asia/Magadan', 'location' => '(GMT+12:00) Magadan', 'utc_offset' => 43200];
|
||||
$timezones[] = ['name'=>'Pacific/Auckland', 'location' => '(GMT+12:00) Auckland', 'utc_offset' => 43200];
|
||||
$timezones[] = ['name'=>'Pacific/Fiji', 'location' => '(GMT+12:00) Fiji', 'utc_offset' => 43200];
|
||||
|
||||
|
||||
foreach ($timezones as $timezone) {
|
||||
Timezone::create([
|
||||
'name' => $timezone['name'],
|
||||
'location' => $timezone['location'],
|
||||
'utc_offset' => $timezone['utc_offset'],
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
193
database/seeds/CountriesSeeder.php
Normal file
193
database/seeds/CountriesSeeder.php
Normal file
@ -0,0 +1,193 @@
|
||||
<?php
|
||||
|
||||
use App\Models\Country;
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
class CountriesSeeder extends Seeder
|
||||
{
|
||||
/**
|
||||
* Run the database seeds.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function run()
|
||||
{
|
||||
Eloquent::unguard();
|
||||
|
||||
$countries = Countries::getList();
|
||||
|
||||
foreach ($countries as $countryId => $country) {
|
||||
if ($record = Country::whereCountryCode($country['country-code'])->first()) {
|
||||
$record->name = $country['name'];
|
||||
$record->full_name = ((isset($country['full_name'])) ? $country['full_name'] : null);
|
||||
$record->save();
|
||||
} else {
|
||||
\Illuminate\Support\Facades\DB::table('countries')->insert([
|
||||
'id' => $countryId,
|
||||
'capital' => ((isset($country['capital'])) ? $country['capital'] : null),
|
||||
'citizenship' => ((isset($country['citizenship'])) ? $country['citizenship'] : null),
|
||||
'country_code' => $country['country-code'],
|
||||
'currency' => ((isset($country['currency'])) ? $country['currency'] : null),
|
||||
'currency_code' => ((isset($country['currency_code'])) ? $country['currency_code'] : null),
|
||||
'currency_sub_unit' => ((isset($country['currency_sub_unit'])) ? $country['currency_sub_unit'] : null),
|
||||
'full_name' => ((isset($country['full_name'])) ? $country['full_name'] : null),
|
||||
'iso_3166_2' => $country['iso_3166_2'],
|
||||
'iso_3166_3' => $country['iso_3166_3'],
|
||||
'name' => $country['name'],
|
||||
'region_code' => $country['region-code'],
|
||||
'sub_region_code' => $country['sub-region-code'],
|
||||
'eea' => (bool) $country['eea'],
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
// Source: http://www.bitboost.com/ref/international-address-formats.html
|
||||
// Source: https://en.wikipedia.org/wiki/Linguistic_issues_concerning_the_euro
|
||||
$countries = [
|
||||
'AR' => [
|
||||
'swap_postal_code' => true,
|
||||
],
|
||||
'AT' => [ // Austria
|
||||
'swap_postal_code' => true,
|
||||
'swap_currency_symbol' => true,
|
||||
],
|
||||
'BE' => [
|
||||
'swap_postal_code' => true,
|
||||
],
|
||||
'BG' => [ // Belgium
|
||||
'swap_currency_symbol' => true,
|
||||
],
|
||||
'CA' => [
|
||||
'thousand_separator' => ',',
|
||||
'decimal_separator' => '.',
|
||||
],
|
||||
'CH' => [
|
||||
'swap_postal_code' => true,
|
||||
],
|
||||
'CZ' => [ // Czech Republic
|
||||
'swap_currency_symbol' => true,
|
||||
],
|
||||
'DE' => [ // Germany
|
||||
'swap_postal_code' => true,
|
||||
'swap_currency_symbol' => true,
|
||||
],
|
||||
'DK' => [
|
||||
'swap_postal_code' => true,
|
||||
],
|
||||
'EE' => [ // Estonia
|
||||
'swap_currency_symbol' => true,
|
||||
'thousand_separator' => ' ',
|
||||
],
|
||||
'ES' => [ // Spain
|
||||
'swap_postal_code' => true,
|
||||
'swap_currency_symbol' => true,
|
||||
],
|
||||
'FI' => [ // Finland
|
||||
'swap_postal_code' => true,
|
||||
'swap_currency_symbol' => true,
|
||||
],
|
||||
'FR' => [ // France
|
||||
'swap_postal_code' => true,
|
||||
'swap_currency_symbol' => true,
|
||||
],
|
||||
'GR' => [ // Greece
|
||||
'swap_currency_symbol' => true,
|
||||
],
|
||||
'HR' => [ // Croatia
|
||||
'swap_currency_symbol' => true,
|
||||
],
|
||||
'HU' => [ // Hungary
|
||||
'swap_currency_symbol' => true,
|
||||
],
|
||||
'GL' => [
|
||||
'swap_postal_code' => true,
|
||||
],
|
||||
'IE' => [ // Ireland
|
||||
'thousand_separator' => ',',
|
||||
'decimal_separator' => '.',
|
||||
],
|
||||
'IL' => [
|
||||
'swap_postal_code' => true,
|
||||
],
|
||||
'IS' => [ // Iceland
|
||||
'swap_postal_code' => true,
|
||||
'swap_currency_symbol' => true,
|
||||
],
|
||||
'IT' => [ // Italy
|
||||
'swap_postal_code' => true,
|
||||
'swap_currency_symbol' => true,
|
||||
],
|
||||
'JP' => [ // Japan
|
||||
'swap_postal_code' => true,
|
||||
'swap_currency_symbol' => true,
|
||||
],
|
||||
'LT' => [ // Lithuania
|
||||
'swap_currency_symbol' => true,
|
||||
],
|
||||
'LU' => [
|
||||
'swap_postal_code' => true,
|
||||
],
|
||||
'MT' => [
|
||||
'thousand_separator' => ',',
|
||||
'decimal_separator' => '.',
|
||||
],
|
||||
'MY' => [
|
||||
'swap_postal_code' => true,
|
||||
],
|
||||
'MX' => [
|
||||
'swap_postal_code' => true,
|
||||
],
|
||||
'NL' => [
|
||||
'swap_postal_code' => true,
|
||||
],
|
||||
'PL' => [ // Poland
|
||||
'swap_postal_code' => true,
|
||||
'swap_currency_symbol' => true,
|
||||
],
|
||||
'PT' => [ // Portugal
|
||||
'swap_postal_code' => true,
|
||||
'swap_currency_symbol' => true,
|
||||
],
|
||||
'RO' => [ // Romania
|
||||
'swap_currency_symbol' => true,
|
||||
],
|
||||
'SE' => [ // Sweden
|
||||
'swap_postal_code' => true,
|
||||
'swap_currency_symbol' => true,
|
||||
],
|
||||
'SI' => [ // Slovenia
|
||||
'swap_currency_symbol' => true,
|
||||
],
|
||||
'SK' => [ // Slovakia
|
||||
'swap_currency_symbol' => true,
|
||||
],
|
||||
'US' => [
|
||||
'thousand_separator' => ',',
|
||||
'decimal_separator' => '.',
|
||||
],
|
||||
'SR' => [ // Suriname
|
||||
'swap_currency_symbol' => true,
|
||||
],
|
||||
'UY' => [
|
||||
'swap_postal_code' => true,
|
||||
],
|
||||
];
|
||||
|
||||
foreach ($countries as $code => $data) {
|
||||
$country = Country::where('iso_3166_2', '=', $code)->first();
|
||||
if (isset($data['swap_postal_code'])) {
|
||||
$country->swap_postal_code = true;
|
||||
}
|
||||
if (isset($data['swap_currency_symbol'])) {
|
||||
$country->swap_currency_symbol = true;
|
||||
}
|
||||
if (isset($data['thousand_separator'])) {
|
||||
$country->thousand_separator = $data['thousand_separator'];
|
||||
}
|
||||
if (isset($data['decimal_separator'])) {
|
||||
$country->decimal_separator = $data['decimal_separator'];
|
||||
}
|
||||
$country->save();
|
||||
}
|
||||
}
|
||||
}
|
112
database/seeds/CurrenciesSeeder.php
Normal file
112
database/seeds/CurrenciesSeeder.php
Normal file
@ -0,0 +1,112 @@
|
||||
<?php
|
||||
|
||||
use App\Models\Currency;
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
class CurrenciesSeeder extends Seeder
|
||||
{
|
||||
public function run()
|
||||
{
|
||||
Eloquent::unguard();
|
||||
|
||||
// http://www.localeplanet.com/icu/currency.html
|
||||
$currencies = [
|
||||
['name' => 'US Dollar', 'code' => 'USD', 'symbol' => '$', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
|
||||
['name' => 'British Pound', 'code' => 'GBP', 'symbol' => '£', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
|
||||
['name' => 'Euro', 'code' => 'EUR', 'symbol' => '€', 'precision' => '2', 'thousand_separator' => '.', 'decimal_separator' => ','],
|
||||
['name' => 'South African Rand', 'code' => 'ZAR', 'symbol' => 'R', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
|
||||
['name' => 'Danish Krone', 'code' => 'DKK', 'symbol' => 'kr', 'precision' => '2', 'thousand_separator' => '.', 'decimal_separator' => ',', 'swap_currency_symbol' => true],
|
||||
['name' => 'Israeli Shekel', 'code' => 'ILS', 'symbol' => 'NIS ', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
|
||||
['name' => 'Swedish Krona', 'code' => 'SEK', 'symbol' => 'kr', 'precision' => '2', 'thousand_separator' => '.', 'decimal_separator' => ',', 'swap_currency_symbol' => true],
|
||||
['name' => 'Kenyan Shilling', 'code' => 'KES', 'symbol' => 'KSh ', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
|
||||
['name' => 'Canadian Dollar', 'code' => 'CAD', 'symbol' => 'C$', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
|
||||
['name' => 'Philippine Peso', 'code' => 'PHP', 'symbol' => 'P ', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
|
||||
['name' => 'Indian Rupee', 'code' => 'INR', 'symbol' => 'Rs. ', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
|
||||
['name' => 'Australian Dollar', 'code' => 'AUD', 'symbol' => '$', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
|
||||
['name' => 'Singapore Dollar', 'code' => 'SGD', 'symbol' => '', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
|
||||
['name' => 'Norske Kroner', 'code' => 'NOK', 'symbol' => 'kr', 'precision' => '2', 'thousand_separator' => '.', 'decimal_separator' => ',', 'swap_currency_symbol' => true],
|
||||
['name' => 'New Zealand Dollar', 'code' => 'NZD', 'symbol' => '$', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
|
||||
['name' => 'Vietnamese Dong', 'code' => 'VND', 'symbol' => '', 'precision' => '0', 'thousand_separator' => '.', 'decimal_separator' => ','],
|
||||
['name' => 'Swiss Franc', 'code' => 'CHF', 'symbol' => '', 'precision' => '2', 'thousand_separator' => '\'', 'decimal_separator' => '.'],
|
||||
['name' => 'Guatemalan Quetzal', 'code' => 'GTQ', 'symbol' => 'Q', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
|
||||
['name' => 'Malaysian Ringgit', 'code' => 'MYR', 'symbol' => 'RM', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
|
||||
['name' => 'Brazilian Real', 'code' => 'BRL', 'symbol' => 'R$', 'precision' => '2', 'thousand_separator' => '.', 'decimal_separator' => ','],
|
||||
['name' => 'Thai Baht', 'code' => 'THB', 'symbol' => '', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
|
||||
['name' => 'Nigerian Naira', 'code' => 'NGN', 'symbol' => '', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
|
||||
['name' => 'Argentine Peso', 'code' => 'ARS', 'symbol' => '$', 'precision' => '2', 'thousand_separator' => '.', 'decimal_separator' => ','],
|
||||
['name' => 'Bangladeshi Taka', 'code' => 'BDT', 'symbol' => 'Tk', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
|
||||
['name' => 'United Arab Emirates Dirham', 'code' => 'AED', 'symbol' => 'DH ', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
|
||||
['name' => 'Hong Kong Dollar', 'code' => 'HKD', 'symbol' => '', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
|
||||
['name' => 'Indonesian Rupiah', 'code' => 'IDR', 'symbol' => 'Rp', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
|
||||
['name' => 'Mexican Peso', 'code' => 'MXN', 'symbol' => '$', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
|
||||
['name' => 'Egyptian Pound', 'code' => 'EGP', 'symbol' => 'E£', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
|
||||
['name' => 'Colombian Peso', 'code' => 'COP', 'symbol' => '$', 'precision' => '2', 'thousand_separator' => '.', 'decimal_separator' => ','],
|
||||
['name' => 'West African Franc', 'code' => 'XOF', 'symbol' => 'CFA ', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
|
||||
['name' => 'Chinese Renminbi', 'code' => 'CNY', 'symbol' => 'RMB ', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
|
||||
['name' => 'Rwandan Franc', 'code' => 'RWF', 'symbol' => 'RF ', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
|
||||
['name' => 'Tanzanian Shilling', 'code' => 'TZS', 'symbol' => 'TSh ', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
|
||||
['name' => 'Netherlands Antillean Guilder', 'code' => 'ANG', 'symbol' => '', 'precision' => '2', 'thousand_separator' => '.', 'decimal_separator' => ','],
|
||||
['name' => 'Trinidad and Tobago Dollar', 'code' => 'TTD', 'symbol' => 'TT$', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
|
||||
['name' => 'East Caribbean Dollar', 'code' => 'XCD', 'symbol' => 'EC$', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
|
||||
['name' => 'Ghanaian Cedi', 'code' => 'GHS', 'symbol' => '', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
|
||||
['name' => 'Bulgarian Lev', 'code' => 'BGN', 'symbol' => '', 'precision' => '2', 'thousand_separator' => ' ', 'decimal_separator' => '.'],
|
||||
['name' => 'Aruban Florin', 'code' => 'AWG', 'symbol' => 'Afl. ', 'precision' => '2', 'thousand_separator' => ' ', 'decimal_separator' => '.'],
|
||||
['name' => 'Turkish Lira', 'code' => 'TRY', 'symbol' => 'TL ', 'precision' => '2', 'thousand_separator' => '.', 'decimal_separator' => ','],
|
||||
['name' => 'Romanian New Leu', 'code' => 'RON', 'symbol' => '', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
|
||||
['name' => 'Croatian Kuna', 'code' => 'HRK', 'symbol' => 'kn', 'precision' => '2', 'thousand_separator' => '.', 'decimal_separator' => ','],
|
||||
['name' => 'Saudi Riyal', 'code' => 'SAR', 'symbol' => '', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
|
||||
['name' => 'Japanese Yen', 'code' => 'JPY', 'symbol' => '¥', 'precision' => '0', 'thousand_separator' => ',', 'decimal_separator' => '.'],
|
||||
['name' => 'Maldivian Rufiyaa', 'code' => 'MVR', 'symbol' => '', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
|
||||
['name' => 'Costa Rican Colón', 'code' => 'CRC', 'symbol' => '', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
|
||||
['name' => 'Pakistani Rupee', 'code' => 'PKR', 'symbol' => 'Rs ', 'precision' => '0', 'thousand_separator' => ',', 'decimal_separator' => '.'],
|
||||
['name' => 'Polish Zloty', 'code' => 'PLN', 'symbol' => 'zł', 'precision' => '2', 'thousand_separator' => ' ', 'decimal_separator' => ',', 'swap_currency_symbol' => true],
|
||||
['name' => 'Sri Lankan Rupee', 'code' => 'LKR', 'symbol' => 'LKR', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.', 'swap_currency_symbol' => true],
|
||||
['name' => 'Czech Koruna', 'code' => 'CZK', 'symbol' => 'Kč', 'precision' => '2', 'thousand_separator' => ' ', 'decimal_separator' => ',', 'swap_currency_symbol' => true],
|
||||
['name' => 'Uruguayan Peso', 'code' => 'UYU', 'symbol' => '$', 'precision' => '2', 'thousand_separator' => '.', 'decimal_separator' => ','],
|
||||
['name' => 'Namibian Dollar', 'code' => 'NAD', 'symbol' => '$', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
|
||||
['name' => 'Tunisian Dinar', 'code' => 'TND', 'symbol' => '', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
|
||||
['name' => 'Russian Ruble', 'code' => 'RUB', 'symbol' => '', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
|
||||
['name' => 'Mozambican Metical', 'code' => 'MZN', 'symbol' => 'MT', 'precision' => '2', 'thousand_separator' => '.', 'decimal_separator' => ',', 'swap_currency_symbol' => true],
|
||||
['name' => 'Omani Rial', 'code' => 'OMR', 'symbol' => '', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
|
||||
['name' => 'Ukrainian Hryvnia', 'code' => 'UAH', 'symbol' => '', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
|
||||
['name' => 'Macanese Pataca', 'code' => 'MOP', 'symbol' => 'MOP$', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
|
||||
['name' => 'Taiwan New Dollar', 'code' => 'TWD', 'symbol' => 'NT$', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
|
||||
['name' => 'Dominican Peso', 'code' => 'DOP', 'symbol' => 'RD$', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
|
||||
['name' => 'Chilean Peso', 'code' => 'CLP', 'symbol' => '$', 'precision' => '0', 'thousand_separator' => '.', 'decimal_separator' => ','],
|
||||
['name' => 'Icelandic Króna', 'code' => 'ISK', 'symbol' => 'kr', 'precision' => '2', 'thousand_separator' => '.', 'decimal_separator' => ',', 'swap_currency_symbol' => true],
|
||||
['name' => 'Papua New Guinean Kina', 'code' => 'PGK', 'symbol' => 'K', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
|
||||
['name' => 'Jordanian Dinar', 'code' => 'JOD', 'symbol' => '', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
|
||||
['name' => 'Myanmar Kyat', 'code' => 'MMK', 'symbol' => 'K', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
|
||||
['name' => 'Peruvian Sol', 'code' => 'PEN', 'symbol' => 'S/ ', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
|
||||
['name' => 'Botswana Pula', 'code' => 'BWP', 'symbol' => 'P', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
|
||||
['name' => 'Hungarian Forint', 'code' => 'HUF', 'symbol' => 'Ft', 'precision' => '0', 'thousand_separator' => '.', 'decimal_separator' => ',', 'swap_currency_symbol' => true],
|
||||
['name' => 'Ugandan Shilling', 'code' => 'UGX', 'symbol' => 'USh ', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
|
||||
['name' => 'Barbadian Dollar', 'code' => 'BBD', 'symbol' => '$', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
|
||||
['name' => 'Brunei Dollar', 'code' => 'BND', 'symbol' => 'B$', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
|
||||
['name' => 'Georgian Lari', 'code' => 'GEL', 'symbol' => '', 'precision' => '2', 'thousand_separator' => ' ', 'decimal_separator' => ','],
|
||||
['name' => 'Qatari Riyal', 'code' => 'QAR', 'symbol' => 'QR', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
|
||||
['name' => 'Honduran Lempira', 'code' => 'HNL', 'symbol' => 'L', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
|
||||
['name' => 'Surinamese Dollar', 'code' => 'SRD', 'symbol' => 'SRD', 'precision' => '2', 'thousand_separator' => '.', 'decimal_separator' => ','],
|
||||
['name' => 'Bahraini Dinar', 'code' => 'BHD', 'symbol' => 'BD ', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'],
|
||||
['name' => 'Venezuelan Bolivars', 'code' => 'VES', 'symbol' => 'Bs.', 'precision' => '2', 'thousand_separator' => '.', 'decimal_separator' => ','],
|
||||
['name' => 'South Korean Won', 'code' => 'KRW', 'symbol' => 'W ', 'precision' => '2', 'thousand_separator' => '.', 'decimal_separator' => ','],
|
||||
];
|
||||
|
||||
foreach ($currencies as $currency) {
|
||||
$record = Currency::whereCode($currency['code'])->first();
|
||||
if ($record) {
|
||||
$record->name = $currency['name'];
|
||||
$record->symbol = $currency['symbol'];
|
||||
$record->precision = $currency['precision'];
|
||||
$record->thousand_separator = $currency['thousand_separator'];
|
||||
$record->decimal_separator = $currency['decimal_separator'];
|
||||
if (isset($currency['swap_currency_symbol'])) {
|
||||
$record->swap_currency_symbol = $currency['swap_currency_symbol'];
|
||||
}
|
||||
$record->save();
|
||||
} else {
|
||||
Currency::create($currency);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,16 +1,32 @@
|
||||
<?php
|
||||
|
||||
use App\Models\Timezone;
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
class DatabaseSeeder extends Seeder
|
||||
{
|
||||
/**
|
||||
* Seed the application's database.
|
||||
* Run the database seeds.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function run()
|
||||
{
|
||||
// $this->call(UsersTableSeeder::class);
|
||||
$this->command->info('Running DatabaseSeeder');
|
||||
|
||||
if (Timezone::count()) {
|
||||
$this->command->info('Skipping: already run');
|
||||
return;
|
||||
}
|
||||
|
||||
Eloquent::unguard();
|
||||
|
||||
$this->call('ConstantsSeeder');
|
||||
$this->call('PaymentLibrariesSeeder');
|
||||
$this->call('BanksSeeder');
|
||||
$this->call('CurrenciesSeeder');
|
||||
$this->call('LanguageSeeder');
|
||||
$this->call('CountriesSeeder');
|
||||
|
||||
}
|
||||
}
|
||||
|
58
database/seeds/LanguageSeeder.php
Normal file
58
database/seeds/LanguageSeeder.php
Normal file
@ -0,0 +1,58 @@
|
||||
<?php
|
||||
|
||||
use App\Models\Language;
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
class LanguageSeeder extends Seeder
|
||||
{
|
||||
public function run()
|
||||
{
|
||||
Eloquent::unguard();
|
||||
|
||||
// https://github.com/caouecs/Laravel-lang
|
||||
// https://www.loc.gov/standards/iso639-2/php/code_list.php
|
||||
|
||||
$languages = [
|
||||
['name' => 'English', 'locale' => 'en'],
|
||||
['name' => 'Italian', 'locale' => 'it'],
|
||||
['name' => 'German', 'locale' => 'de'],
|
||||
['name' => 'French', 'locale' => 'fr'],
|
||||
['name' => 'Portuguese - Brazilian', 'locale' => 'pt_BR'],
|
||||
['name' => 'Dutch', 'locale' => 'nl'],
|
||||
['name' => 'Spanish', 'locale' => 'es'],
|
||||
['name' => 'Norwegian', 'locale' => 'nb_NO'],
|
||||
['name' => 'Danish', 'locale' => 'da'],
|
||||
['name' => 'Japanese', 'locale' => 'ja'],
|
||||
['name' => 'Swedish', 'locale' => 'sv'],
|
||||
['name' => 'Spanish - Spain', 'locale' => 'es_ES'],
|
||||
['name' => 'French - Canada', 'locale' => 'fr_CA'],
|
||||
['name' => 'Lithuanian', 'locale' => 'lt'],
|
||||
['name' => 'Polish', 'locale' => 'pl'],
|
||||
['name' => 'Czech', 'locale' => 'cs'],
|
||||
['name' => 'Croatian', 'locale' => 'hr'],
|
||||
['name' => 'Albanian', 'locale' => 'sq'],
|
||||
['name' => 'Greek', 'locale' => 'el'],
|
||||
['name' => 'English - United Kingdom', 'locale' => 'en_GB'],
|
||||
['name' => 'Portuguese - Portugal', 'locale' => 'pt_PT'],
|
||||
['name' => 'Slovenian', 'locale' => 'sl'],
|
||||
['name' => 'Finnish', 'locale' => 'fi'],
|
||||
['name' => 'Romanian', 'locale' => 'ro'],
|
||||
['name' => 'Turkish - Turkey', 'locale' => 'tr_TR'],
|
||||
['name' => 'Thai', 'locale' => 'th'],
|
||||
['name' => 'Macedonian', 'locale' => 'mk_MK'],
|
||||
['name' => 'Chinese - Taiwan', 'locale' => 'zh_TW'],
|
||||
];
|
||||
|
||||
foreach ($languages as $language) {
|
||||
$record = Language::whereLocale($language['locale'])->first();
|
||||
if ($record) {
|
||||
$record->name = $language['name'];
|
||||
$record->save();
|
||||
} else {
|
||||
Language::create($language);
|
||||
}
|
||||
}
|
||||
|
||||
Eloquent::reguard();
|
||||
}
|
||||
}
|
84
database/seeds/PaymentLibrariesSeeder.php
Normal file
84
database/seeds/PaymentLibrariesSeeder.php
Normal file
@ -0,0 +1,84 @@
|
||||
<?php
|
||||
|
||||
use App\Models\Gateway;
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
class PaymentLibrariesSeeder extends Seeder
|
||||
{
|
||||
public function run()
|
||||
{
|
||||
Eloquent::unguard();
|
||||
|
||||
$gateways = [
|
||||
['name' => 'Authorize.Net AIM', 'provider' => 'AuthorizeNet_AIM', 'sort_order' => 5],
|
||||
['name' => 'CardSave', 'provider' => 'CardSave'],
|
||||
['name' => 'Eway Rapid', 'provider' => 'Eway_RapidShared', 'is_offsite' => true],
|
||||
['name' => 'FirstData Connect', 'provider' => 'FirstData_Connect'],
|
||||
['name' => 'Migs ThreeParty', 'provider' => 'Migs_ThreeParty'],
|
||||
['name' => 'Migs TwoParty', 'provider' => 'Migs_TwoParty'],
|
||||
['name' => 'Mollie', 'provider' => 'Mollie', 'is_offsite' => true, 'sort_order' => 8],
|
||||
['name' => 'MultiSafepay', 'provider' => 'MultiSafepay'],
|
||||
['name' => 'Netaxept', 'provider' => 'Netaxept'],
|
||||
['name' => 'NetBanx', 'provider' => 'NetBanx'],
|
||||
['name' => 'PayFast', 'provider' => 'PayFast', 'is_offsite' => true],
|
||||
['name' => 'Payflow Pro', 'provider' => 'Payflow_Pro'],
|
||||
['name' => 'PaymentExpress PxPay', 'provider' => 'PaymentExpress_PxPay'],
|
||||
['name' => 'PaymentExpress PxPost', 'provider' => 'PaymentExpress_PxPost'],
|
||||
['name' => 'PayPal Express', 'provider' => 'PayPal_Express', 'is_offsite' => true, 'sort_order' => 4],
|
||||
['name' => 'PayPal Pro', 'provider' => 'PayPal_Pro'],
|
||||
['name' => 'Pin', 'provider' => 'Pin'],
|
||||
['name' => 'SagePay Direct', 'provider' => 'SagePay_Direct'],
|
||||
['name' => 'SecurePay DirectPost', 'provider' => 'SecurePay_DirectPost'],
|
||||
['name' => 'Stripe', 'provider' => 'Stripe', 'sort_order' => 1],
|
||||
['name' => 'TargetPay Direct eBanking', 'provider' => 'TargetPay_Directebanking'],
|
||||
['name' => 'TargetPay Ideal', 'provider' => 'TargetPay_Ideal'],
|
||||
['name' => 'TargetPay Mr Cash', 'provider' => 'TargetPay_Mrcash'],
|
||||
['name' => 'TwoCheckout', 'provider' => 'TwoCheckout', 'is_offsite' => true],
|
||||
['name' => 'WorldPay', 'provider' => 'WorldPay'],
|
||||
['name' => 'moolah', 'provider' => 'AuthorizeNet_AIM'],
|
||||
['name' => 'Alipay', 'provider' => 'Alipay_Express'],
|
||||
['name' => 'Buckaroo', 'provider' => 'Buckaroo_CreditCard'],
|
||||
['name' => 'Coinbase', 'provider' => 'Coinbase', 'is_offsite' => true],
|
||||
['name' => 'DataCash', 'provider' => 'DataCash'],
|
||||
['name' => 'Pacnet', 'provider' => 'Pacnet'],
|
||||
['name' => 'Realex', 'provider' => 'Realex_Remote'],
|
||||
['name' => 'Sisow', 'provider' => 'Sisow'],
|
||||
['name' => 'Skrill', 'provider' => 'Skrill', 'is_offsite' => true],
|
||||
['name' => 'BitPay', 'provider' => 'BitPay', 'is_offsite' => true, 'sort_order' => 7],
|
||||
['name' => 'AGMS', 'provider' => 'Agms'],
|
||||
['name' => 'Barclays', 'provider' => 'BarclaysEpdq\Essential'],
|
||||
['name' => 'Cardgate', 'provider' => 'Cardgate'],
|
||||
['name' => 'Checkout.com', 'provider' => 'CheckoutCom'],
|
||||
['name' => 'Creditcall', 'provider' => 'Creditcall'],
|
||||
['name' => 'Cybersource', 'provider' => 'Cybersource'],
|
||||
['name' => 'ecoPayz', 'provider' => 'Ecopayz'],
|
||||
['name' => 'Fasapay', 'provider' => 'Fasapay'],
|
||||
['name' => 'Komoju', 'provider' => 'Komoju'],
|
||||
['name' => 'Paysafecard', 'provider' => 'Paysafecard'],
|
||||
['name' => 'Paytrace', 'provider' => 'Paytrace_CreditCard'],
|
||||
['name' => 'Secure Trading', 'provider' => 'SecureTrading'],
|
||||
['name' => 'SecPay', 'provider' => 'SecPay'],
|
||||
['name' => 'WePay', 'provider' => 'WePay', 'is_offsite' => false, 'sort_order' => 3],
|
||||
['name' => 'Braintree', 'provider' => 'Braintree', 'sort_order' => 3],
|
||||
['name' => 'Custom', 'provider' => 'Custom1', 'is_offsite' => true, 'sort_order' => 20],
|
||||
['name' => 'FirstData Payeezy', 'provider' => 'FirstData_Payeezy'],
|
||||
['name' => 'GoCardless', 'provider' => 'GoCardlessV2\Redirect', 'sort_order' => 9, 'is_offsite' => true],
|
||||
['name' => 'PagSeguro', 'provider' => 'PagSeguro'],
|
||||
['name' => 'PAYMILL', 'provider' => 'Paymill'],
|
||||
['name' => 'Custom', 'provider' => 'Custom2', 'is_offsite' => true, 'sort_order' => 21],
|
||||
['name' => 'Custom', 'provider' => 'Custom3', 'is_offsite' => true, 'sort_order' => 22],
|
||||
];
|
||||
|
||||
foreach ($gateways as $gateway) {
|
||||
$record = Gateway::whereName($gateway['name'])
|
||||
->whereProvider($gateway['provider'])
|
||||
->first();
|
||||
if ($record) {
|
||||
$record->fill($gateway);
|
||||
$record->save();
|
||||
} else {
|
||||
Gateway::create($gateway);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -33,7 +33,6 @@ class UsersTableSeeder extends Seeder
|
||||
'first_name' => $faker->firstName,
|
||||
'last_name' => $faker->lastName,
|
||||
'email' => TEST_USERNAME,
|
||||
'account_id' => $account->id,
|
||||
'password' => Hash::make(TEST_PASSWORD),
|
||||
'registered' => true,
|
||||
'confirmed' => true,
|
||||
|
12
package.json
12
package.json
@ -10,13 +10,23 @@
|
||||
"production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@coreui/coreui": "^2.0.12",
|
||||
"@coreui/coreui-plugin-chartjs-custom-tooltips": "1.2.0",
|
||||
"@coreui/icons": "^0.3.0",
|
||||
"axios": "^0.18",
|
||||
"bootstrap": "^4.0.0",
|
||||
"chart.js": "^2.7.2",
|
||||
"cross-env": "^5.1",
|
||||
"flag-icon-css": "3.2.0",
|
||||
"font-awesome": "^4.7",
|
||||
"jquery": "^3.2",
|
||||
"laravel-mix": "^2.0",
|
||||
"lodash": "^4.17.5",
|
||||
"pace-progress": "1.0.2",
|
||||
"perfect-scrollbar": "1.4.0",
|
||||
"popper.js": "^1.12",
|
||||
"simple-line-icons": "2.4.1",
|
||||
"vue": "^2.5.7"
|
||||
}
|
||||
},
|
||||
"dependencies": {}
|
||||
}
|
||||
|
4
public/css/app.css
vendored
4
public/css/app.css
vendored
File diff suppressed because one or more lines are too long
21
public/css/ninja.css
vendored
Normal file
21
public/css/ninja.css
vendored
Normal file
File diff suppressed because one or more lines are too long
BIN
public/images/logo.png
Normal file
BIN
public/images/logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 40 KiB |
2
public/js/app.js
vendored
2
public/js/app.js
vendored
File diff suppressed because one or more lines are too long
13
public/js/ninja.js
vendored
Normal file
13
public/js/ninja.js
vendored
Normal file
File diff suppressed because one or more lines are too long
@ -1,71 +1,75 @@
|
||||
@extends('layouts.app')
|
||||
@extends('layouts.master')
|
||||
|
||||
@section('content')
|
||||
<div class="container">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-8">
|
||||
<div class="card">
|
||||
<div class="card-header">{{ __('Login') }}</div>
|
||||
@section('body')
|
||||
<body class="app flex-row align-items-center">
|
||||
<div class="container">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-8">
|
||||
<div class="card-group">
|
||||
<div class="card p-4">
|
||||
<div class="card-body">
|
||||
<form method="POST" action="{{ route('login') }}">
|
||||
@csrf
|
||||
<h1>@lang('texts.account_login')</h1>
|
||||
<p class="text-muted"></p>
|
||||
<div class="input-group mb-3">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">
|
||||
<i class="icon-user"></i>
|
||||
</span>
|
||||
</div>
|
||||
<input id="email" type="email" class="form-control{{ $errors->has('email') ? ' is-invalid' : '' }}" name="email" value="{{ old('email') }}" placeholder="@lang('texts.email')" required autofocus>
|
||||
|
||||
<div class="card-body">
|
||||
<form method="POST" action="{{ route('login') }}">
|
||||
@csrf
|
||||
|
||||
<div class="form-group row">
|
||||
<label for="email" class="col-sm-4 col-form-label text-md-right">{{ __('E-Mail Address') }}</label>
|
||||
|
||||
<div class="col-md-6">
|
||||
<input id="email" type="email" class="form-control{{ $errors->has('email') ? ' is-invalid' : '' }}" name="email" value="{{ old('email') }}" required autofocus>
|
||||
|
||||
@if ($errors->has('email'))
|
||||
<span class="invalid-feedback" role="alert">
|
||||
@if ($errors->has('email'))
|
||||
<span class="invalid-feedback" role="alert">
|
||||
<strong>{{ $errors->first('email') }}</strong>
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="form-group row">
|
||||
<label for="password" class="col-md-4 col-form-label text-md-right">{{ __('Password') }}</label>
|
||||
</div>
|
||||
<div class="input-group mb-4">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">
|
||||
<i class="icon-lock"></i>
|
||||
</span>
|
||||
</div>
|
||||
<input id="password" type="password" class="form-control{{ $errors->has('password') ? ' is-invalid' : '' }}" name="password" placeholder="@lang('texts.password')" required>
|
||||
|
||||
<div class="col-md-6">
|
||||
<input id="password" type="password" class="form-control{{ $errors->has('password') ? ' is-invalid' : '' }}" name="password" required>
|
||||
|
||||
@if ($errors->has('password'))
|
||||
<span class="invalid-feedback" role="alert">
|
||||
@if ($errors->has('password'))
|
||||
<span class="invalid-feedback" role="alert">
|
||||
<strong>{{ $errors->first('password') }}</strong>
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<div class="col-md-6 offset-md-4">
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="checkbox" name="remember" id="remember" {{ old('remember') ? 'checked' : '' }}>
|
||||
|
||||
<label class="form-check-label" for="remember">
|
||||
{{ __('Remember Me') }}
|
||||
</label>
|
||||
@endif
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-6">
|
||||
<button class="btn btn-primary px-4" type="submit">@lang('texts.login')</button>
|
||||
</div>
|
||||
<div class="col-6 text-right">
|
||||
<a class="btn btn-link" href="{{ route('password.request') }}">
|
||||
@lang('texts.forgot_password')
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card text-white bg-primary py-5 d-md-down-none" style="width:44%">
|
||||
<div class="card-body text-center">
|
||||
<div>
|
||||
<h2>@lang('texts.sign_up_now')</h2>
|
||||
<p>@lang('texts.not_a_member_yet')</p>
|
||||
<a class="btn btn-primary active mt-3" href="{{route('signup') }}">@lang('texts.login_create_an_account')</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row mb-0">
|
||||
<div class="col-md-8 offset-md-4">
|
||||
<button type="submit" class="btn btn-primary">
|
||||
{{ __('Login') }}
|
||||
</button>
|
||||
|
||||
<a class="btn btn-link" href="{{ route('password.request') }}">
|
||||
{{ __('Forgot Your Password?') }}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
286
resources/views/dashboard/aside.blade.php
Normal file
286
resources/views/dashboard/aside.blade.php
Normal file
@ -0,0 +1,286 @@
|
||||
<aside class="aside-menu">
|
||||
<ul class="nav nav-tabs" role="tablist">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active" data-toggle="tab" href="#timeline" role="tab">
|
||||
<i class="icon-list"></i>
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" data-toggle="tab" href="#messages" role="tab">
|
||||
<i class="icon-speech"></i>
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" data-toggle="tab" href="#settings" role="tab">
|
||||
<i class="icon-settings"></i>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<!-- Tab panes-->
|
||||
<div class="tab-content">
|
||||
<div class="tab-pane active" id="timeline" role="tabpanel">
|
||||
<div class="list-group list-group-accent">
|
||||
<div class="list-group-item list-group-item-accent-secondary bg-light text-center font-weight-bold text-muted text-uppercase small">Today</div>
|
||||
<div class="list-group-item list-group-item-accent-warning list-group-item-divider">
|
||||
<div class="avatar float-right">
|
||||
<img class="img-avatar" src="img/avatars/7.jpg" alt="admin@bootstrapmaster.com">
|
||||
</div>
|
||||
<div>Meeting with
|
||||
<strong>Lucas</strong>
|
||||
</div>
|
||||
<small class="text-muted mr-3">
|
||||
<i class="icon-calendar"></i> 1 - 3pm</small>
|
||||
<small class="text-muted">
|
||||
<i class="icon-location-pin"></i> Palo Alto, CA</small>
|
||||
</div>
|
||||
<div class="list-group-item list-group-item-accent-info">
|
||||
<div class="avatar float-right">
|
||||
<img class="img-avatar" src="img/avatars/4.jpg" alt="admin@bootstrapmaster.com">
|
||||
</div>
|
||||
<div>Skype with
|
||||
<strong>Megan</strong>
|
||||
</div>
|
||||
<small class="text-muted mr-3">
|
||||
<i class="icon-calendar"></i> 4 - 5pm</small>
|
||||
<small class="text-muted">
|
||||
<i class="icon-social-skype"></i> On-line</small>
|
||||
</div>
|
||||
<div class="list-group-item list-group-item-accent-secondary bg-light text-center font-weight-bold text-muted text-uppercase small">Tomorrow</div>
|
||||
<div class="list-group-item list-group-item-accent-danger list-group-item-divider">
|
||||
<div>New UI Project -
|
||||
<strong>deadline</strong>
|
||||
</div>
|
||||
<small class="text-muted mr-3">
|
||||
<i class="icon-calendar"></i> 10 - 11pm</small>
|
||||
<small class="text-muted">
|
||||
<i class="icon-home"></i> creativeLabs HQ</small>
|
||||
<div class="avatars-stack mt-2">
|
||||
<div class="avatar avatar-xs">
|
||||
<img class="img-avatar" src="img/avatars/2.jpg" alt="admin@bootstrapmaster.com">
|
||||
</div>
|
||||
<div class="avatar avatar-xs">
|
||||
<img class="img-avatar" src="img/avatars/3.jpg" alt="admin@bootstrapmaster.com">
|
||||
</div>
|
||||
<div class="avatar avatar-xs">
|
||||
<img class="img-avatar" src="img/avatars/4.jpg" alt="admin@bootstrapmaster.com">
|
||||
</div>
|
||||
<div class="avatar avatar-xs">
|
||||
<img class="img-avatar" src="img/avatars/5.jpg" alt="admin@bootstrapmaster.com">
|
||||
</div>
|
||||
<div class="avatar avatar-xs">
|
||||
<img class="img-avatar" src="img/avatars/6.jpg" alt="admin@bootstrapmaster.com">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="list-group-item list-group-item-accent-success list-group-item-divider">
|
||||
<div>
|
||||
<strong>#10 Startups.Garden</strong> Meetup</div>
|
||||
<small class="text-muted mr-3">
|
||||
<i class="icon-calendar"></i> 1 - 3pm</small>
|
||||
<small class="text-muted">
|
||||
<i class="icon-location-pin"></i> Palo Alto, CA</small>
|
||||
</div>
|
||||
<div class="list-group-item list-group-item-accent-primary list-group-item-divider">
|
||||
<div>
|
||||
<strong>Team meeting</strong>
|
||||
</div>
|
||||
<small class="text-muted mr-3">
|
||||
<i class="icon-calendar"></i> 4 - 6pm</small>
|
||||
<small class="text-muted">
|
||||
<i class="icon-home"></i> creativeLabs HQ</small>
|
||||
<div class="avatars-stack mt-2">
|
||||
<div class="avatar avatar-xs">
|
||||
<img class="img-avatar" src="img/avatars/2.jpg" alt="admin@bootstrapmaster.com">
|
||||
</div>
|
||||
<div class="avatar avatar-xs">
|
||||
<img class="img-avatar" src="img/avatars/3.jpg" alt="admin@bootstrapmaster.com">
|
||||
</div>
|
||||
<div class="avatar avatar-xs">
|
||||
<img class="img-avatar" src="img/avatars/4.jpg" alt="admin@bootstrapmaster.com">
|
||||
</div>
|
||||
<div class="avatar avatar-xs">
|
||||
<img class="img-avatar" src="img/avatars/5.jpg" alt="admin@bootstrapmaster.com">
|
||||
</div>
|
||||
<div class="avatar avatar-xs">
|
||||
<img class="img-avatar" src="img/avatars/6.jpg" alt="admin@bootstrapmaster.com">
|
||||
</div>
|
||||
<div class="avatar avatar-xs">
|
||||
<img class="img-avatar" src="img/avatars/7.jpg" alt="admin@bootstrapmaster.com">
|
||||
</div>
|
||||
<div class="avatar avatar-xs">
|
||||
<img class="img-avatar" src="img/avatars/8.jpg" alt="admin@bootstrapmaster.com">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="tab-pane p-3" id="messages" role="tabpanel">
|
||||
<div class="message">
|
||||
<div class="py-3 pb-5 mr-3 float-left">
|
||||
<div class="avatar">
|
||||
<img class="img-avatar" src="img/avatars/7.jpg" alt="admin@bootstrapmaster.com">
|
||||
<span class="avatar-status badge-success"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<small class="text-muted">Lukasz Holeczek</small>
|
||||
<small class="text-muted float-right mt-1">1:52 PM</small>
|
||||
</div>
|
||||
<div class="text-truncate font-weight-bold">Lorem ipsum dolor sit amet</div>
|
||||
<small class="text-muted">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt...</small>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="message">
|
||||
<div class="py-3 pb-5 mr-3 float-left">
|
||||
<div class="avatar">
|
||||
<img class="img-avatar" src="img/avatars/7.jpg" alt="admin@bootstrapmaster.com">
|
||||
<span class="avatar-status badge-success"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<small class="text-muted">Lukasz Holeczek</small>
|
||||
<small class="text-muted float-right mt-1">1:52 PM</small>
|
||||
</div>
|
||||
<div class="text-truncate font-weight-bold">Lorem ipsum dolor sit amet</div>
|
||||
<small class="text-muted">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt...</small>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="message">
|
||||
<div class="py-3 pb-5 mr-3 float-left">
|
||||
<div class="avatar">
|
||||
<img class="img-avatar" src="img/avatars/7.jpg" alt="admin@bootstrapmaster.com">
|
||||
<span class="avatar-status badge-success"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<small class="text-muted">Lukasz Holeczek</small>
|
||||
<small class="text-muted float-right mt-1">1:52 PM</small>
|
||||
</div>
|
||||
<div class="text-truncate font-weight-bold">Lorem ipsum dolor sit amet</div>
|
||||
<small class="text-muted">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt...</small>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="message">
|
||||
<div class="py-3 pb-5 mr-3 float-left">
|
||||
<div class="avatar">
|
||||
<img class="img-avatar" src="img/avatars/7.jpg" alt="admin@bootstrapmaster.com">
|
||||
<span class="avatar-status badge-success"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<small class="text-muted">Lukasz Holeczek</small>
|
||||
<small class="text-muted float-right mt-1">1:52 PM</small>
|
||||
</div>
|
||||
<div class="text-truncate font-weight-bold">Lorem ipsum dolor sit amet</div>
|
||||
<small class="text-muted">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt...</small>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="message">
|
||||
<div class="py-3 pb-5 mr-3 float-left">
|
||||
<div class="avatar">
|
||||
<img class="img-avatar" src="img/avatars/7.jpg" alt="admin@bootstrapmaster.com">
|
||||
<span class="avatar-status badge-success"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<small class="text-muted">Lukasz Holeczek</small>
|
||||
<small class="text-muted float-right mt-1">1:52 PM</small>
|
||||
</div>
|
||||
<div class="text-truncate font-weight-bold">Lorem ipsum dolor sit amet</div>
|
||||
<small class="text-muted">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt...</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="tab-pane p-3" id="settings" role="tabpanel">
|
||||
<h6>Settings</h6>
|
||||
<div class="aside-options">
|
||||
<div class="clearfix mt-4">
|
||||
<small>
|
||||
<b>Option 1</b>
|
||||
</small>
|
||||
<label class="switch switch-label switch-pill switch-success switch-sm float-right">
|
||||
<input class="switch-input" type="checkbox" checked="">
|
||||
<span class="switch-slider" data-checked="On" data-unchecked="Off"></span>
|
||||
</label>
|
||||
</div>
|
||||
<div>
|
||||
<small class="text-muted">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="aside-options">
|
||||
<div class="clearfix mt-3">
|
||||
<small>
|
||||
<b>Option 2</b>
|
||||
</small>
|
||||
<label class="switch switch-label switch-pill switch-success switch-sm float-right">
|
||||
<input class="switch-input" type="checkbox">
|
||||
<span class="switch-slider" data-checked="On" data-unchecked="Off"></span>
|
||||
</label>
|
||||
</div>
|
||||
<div>
|
||||
<small class="text-muted">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="aside-options">
|
||||
<div class="clearfix mt-3">
|
||||
<small>
|
||||
<b>Option 3</b>
|
||||
</small>
|
||||
<label class="switch switch-label switch-pill switch-success switch-sm float-right">
|
||||
<input class="switch-input" type="checkbox">
|
||||
<span class="switch-slider" data-checked="On" data-unchecked="Off"></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="aside-options">
|
||||
<div class="clearfix mt-3">
|
||||
<small>
|
||||
<b>Option 4</b>
|
||||
</small>
|
||||
<label class="switch switch-label switch-pill switch-success switch-sm float-right">
|
||||
<input class="switch-input" type="checkbox" checked="">
|
||||
<span class="switch-slider" data-checked="On" data-unchecked="Off"></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<h6>System Utilization</h6>
|
||||
<div class="text-uppercase mb-1 mt-4">
|
||||
<small>
|
||||
<b>CPU Usage</b>
|
||||
</small>
|
||||
</div>
|
||||
<div class="progress progress-xs">
|
||||
<div class="progress-bar bg-info" role="progressbar" style="width: 25%" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100"></div>
|
||||
</div>
|
||||
<small class="text-muted">348 Processes. 1/4 Cores.</small>
|
||||
<div class="text-uppercase mb-1 mt-2">
|
||||
<small>
|
||||
<b>Memory Usage</b>
|
||||
</small>
|
||||
</div>
|
||||
<div class="progress progress-xs">
|
||||
<div class="progress-bar bg-warning" role="progressbar" style="width: 70%" aria-valuenow="70" aria-valuemin="0" aria-valuemax="100"></div>
|
||||
</div>
|
||||
<small class="text-muted">11444GB/16384MB</small>
|
||||
<div class="text-uppercase mb-1 mt-2">
|
||||
<small>
|
||||
<b>SSD 1 Usage</b>
|
||||
</small>
|
||||
</div>
|
||||
<div class="progress progress-xs">
|
||||
<div class="progress-bar bg-danger" role="progressbar" style="width: 95%" aria-valuenow="95" aria-valuemin="0" aria-valuemax="100"></div>
|
||||
</div>
|
||||
<small class="text-muted">243GB/256GB</small>
|
||||
<div class="text-uppercase mb-1 mt-2">
|
||||
<small>
|
||||
<b>SSD 2 Usage</b>
|
||||
</small>
|
||||
</div>
|
||||
<div class="progress progress-xs">
|
||||
<div class="progress-bar bg-success" role="progressbar" style="width: 10%" aria-valuenow="10" aria-valuemin="0" aria-valuemax="100"></div>
|
||||
</div>
|
||||
<small class="text-muted">25GB/256GB</small>
|
||||
</div>
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
@ -1,3 +1,47 @@
|
||||
@extends('layouts.app')
|
||||
@extends('layouts.master')
|
||||
|
||||
@section('header')
|
||||
@include('header')
|
||||
@endsection
|
||||
|
||||
|
||||
@section('sidebar')
|
||||
@include('sidebar')
|
||||
@endsection
|
||||
|
||||
@section('body')
|
||||
<main class="main">
|
||||
<!-- Breadcrumb-->
|
||||
<ol class="breadcrumb">
|
||||
<li class="breadcrumb-item">Home</li>
|
||||
<li class="breadcrumb-item">
|
||||
<a href="#">Admin</a>
|
||||
</li>
|
||||
<li class="breadcrumb-item active">Dashboard</li>
|
||||
<!-- Breadcrumb Menu-->
|
||||
<li class="breadcrumb-menu d-md-down-none">
|
||||
<div class="btn-group" role="group" aria-label="Button group">
|
||||
<a class="btn" href="#">
|
||||
<i class="icon-speech"></i>
|
||||
</a>
|
||||
<a class="btn" href="./">
|
||||
<i class="icon-graph"></i> Dashboard</a>
|
||||
<a class="btn" href="#">
|
||||
<i class="icon-settings"></i> Settings</a>
|
||||
</div>
|
||||
</li>
|
||||
</ol>
|
||||
<div class="container-fluid">
|
||||
|
||||
</div>
|
||||
</main>
|
||||
|
||||
@include('dashboard.aside')
|
||||
|
||||
@endsection
|
||||
|
||||
@section('footer')
|
||||
@include('footer')
|
||||
@endsection
|
||||
|
||||
|
||||
<h1>Dashboard</h1>
|
12
resources/views/footer.blade.php
Normal file
12
resources/views/footer.blade.php
Normal file
@ -0,0 +1,12 @@
|
||||
<footer class="app-footer">
|
||||
<div>
|
||||
<a href="https://coreui.io">CoreUI</a>
|
||||
<span>© 2018 creativeLabs.</span>
|
||||
</div>
|
||||
<div class="ml-auto">
|
||||
<span>Powered by</span>
|
||||
<a href="https://coreui.io">CoreUI</a>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
</body>
|
95
resources/views/header.blade.php
Normal file
95
resources/views/header.blade.php
Normal file
@ -0,0 +1,95 @@
|
||||
<body class="app header-fixed sidebar-fixed aside-menu-fixed sidebar-lg-show">
|
||||
<header class="app-header navbar">
|
||||
<button class="navbar-toggler sidebar-toggler d-lg-none mr-auto" type="button" data-toggle="sidebar-show">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<a class="navbar-brand" href="#">
|
||||
<img class="navbar-brand-full" src="images/logo.png" width="50" height="50" alt="Invoice Ninja Logo">
|
||||
<img class="navbar-brand-minimized" src="images/logo.png" width="30" height="30" alt="Invoice Ninja Logo">
|
||||
</a>
|
||||
<button class="sidebar-minimizer brand-minimizer" type="button">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<ul class="nav navbar-nav d-md-down-none">
|
||||
<li class="nav-item px-3">
|
||||
<a class="nav-link" href="#">Dashboard</a>
|
||||
</li>
|
||||
<li class="nav-item px-3">
|
||||
<a class="nav-link" href="#">Users</a>
|
||||
</li>
|
||||
<li class="nav-item px-3">
|
||||
<a class="nav-link" href="#">Settings</a>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="nav navbar-nav ml-auto">
|
||||
<li class="nav-item d-md-down-none">
|
||||
<a class="nav-link" href="#">
|
||||
<i class="fa fa-user"></i>
|
||||
<span class="badge badge-pill badge-danger">5</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item d-md-down-none">
|
||||
<a class="nav-link" href="#">
|
||||
<i class="icon-list"></i>
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item d-md-down-none">
|
||||
<a class="nav-link" href="#">
|
||||
<i class="icon-location-pin"></i>
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item dropdown">
|
||||
<a class="nav-link" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
|
||||
<img class="img-avatar" src="img/avatars/6.jpg" alt="admin@bootstrapmaster.com">
|
||||
</a>
|
||||
<div class="dropdown-menu dropdown-menu-right">
|
||||
<div class="dropdown-header text-center">
|
||||
<strong>Account</strong>
|
||||
</div>
|
||||
<a class="dropdown-item" href="#">
|
||||
<i class="fa fa-bell-o"></i> Updates
|
||||
<span class="badge badge-info">42</span>
|
||||
</a>
|
||||
<a class="dropdown-item" href="#">
|
||||
<i class="fa fa-envelope-o"></i> Messages
|
||||
<span class="badge badge-success">42</span>
|
||||
</a>
|
||||
<a class="dropdown-item" href="#">
|
||||
<i class="fa fa-tasks"></i> Tasks
|
||||
<span class="badge badge-danger">42</span>
|
||||
</a>
|
||||
<a class="dropdown-item" href="#">
|
||||
<i class="fa fa-comments"></i> Comments
|
||||
<span class="badge badge-warning">42</span>
|
||||
</a>
|
||||
<div class="dropdown-header text-center">
|
||||
<strong>Settings</strong>
|
||||
</div>
|
||||
<a class="dropdown-item" href="#">
|
||||
<i class="fa fa-user"></i> Profile</a>
|
||||
<a class="dropdown-item" href="#">
|
||||
<i class="fa fa-wrench"></i> Settings</a>
|
||||
<a class="dropdown-item" href="#">
|
||||
<i class="fa fa-usd"></i> Payments
|
||||
<span class="badge badge-secondary">42</span>
|
||||
</a>
|
||||
<a class="dropdown-item" href="#">
|
||||
<i class="fa fa-file"></i> Projects
|
||||
<span class="badge badge-primary">42</span>
|
||||
</a>
|
||||
<div class="divider"></div>
|
||||
<a class="dropdown-item" href="#">
|
||||
<i class="fa fa-shield"></i> Lock Account</a>
|
||||
<a class="dropdown-item" href="#">
|
||||
<i class="fa fa-lock"></i> Logout</a>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<button class="navbar-toggler aside-menu-toggler d-md-down-none" type="button" data-toggle="aside-menu-lg-show">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<button class="navbar-toggler aside-menu-toggler d-lg-none" type="button" data-toggle="aside-menu-show">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
</header>
|
||||
<div class="app-body">
|
@ -1 +1,14 @@
|
||||
@extends('layouts.app')
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>Unprotected Route</h1>
|
||||
</body>
|
||||
|
||||
|
||||
|
||||
|
||||
</html>
|
||||
|
77
resources/views/layouts/master.blade.php
Normal file
77
resources/views/layouts/master.blade.php
Normal file
@ -0,0 +1,77 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
|
||||
<head>
|
||||
|
||||
<!-- Source: https://github.com/invoiceninja/invoiceninja -->
|
||||
<!-- Error: {{ session('error') }} -->
|
||||
|
||||
@if (config('services.analytics.tracking_id'))
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-122229484-1"></script>
|
||||
<script>
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
gtag('config', '{{ config('services.analytics.tracking_id') }}', { 'anonymize_ip': true });
|
||||
function trackEvent(category, action) {
|
||||
ga('send', 'event', category, action, this.src);
|
||||
}
|
||||
</script>
|
||||
@else
|
||||
<script>
|
||||
function gtag(){}
|
||||
</script>
|
||||
@endif
|
||||
|
||||
<meta charset="utf-8">
|
||||
<title>@yield('meta_title') | {{ config('app.name') }}</title>
|
||||
<meta name="description" content="@yield('meta_description')"/>
|
||||
<link href="{{ asset('favicon.png') }}" rel="shortcut icon" type="image/png">
|
||||
|
||||
<!--
|
||||
TODO Setup social sharing info
|
||||
<meta property="og:site_name" content="Invoice Ninja"/>
|
||||
<meta property="og:url" content="{{ config('ninja.site_url') }}"/>
|
||||
<meta property="og:title" content="Invoice Ninja"/>
|
||||
<meta property="og:image" content="{{ config('ninja.site_url') }}/images/logo.png"/>
|
||||
<meta property="og:description" content="Create. Send. Get Paid."/>
|
||||
--/>
|
||||
<!-- http://realfavicongenerator.net -->
|
||||
<!--
|
||||
TODO Setup favicon
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="{{ url('apple-touch-icon.png') }}">
|
||||
<link rel="icon" type="image/png" href="{{ url('favicon-32x32.png') }}" sizes="32x32">
|
||||
<link rel="icon" type="image/png" href="{{ url('favicon-16x16.png') }}" sizes="16x16">
|
||||
<link rel="manifest" href="{{ url('manifest.json') }}">
|
||||
<link rel="mask-icon" href="{{ url('safari-pinned-tab.svg') }}" color="#3bc65c">
|
||||
<link rel="shortcut icon" href="{{ url('favicon.ico') }}">
|
||||
<meta name="apple-mobile-web-app-title" content="Invoice Ninja">
|
||||
<meta name="application-name" content="Invoice Ninja">
|
||||
<meta name="theme-color" content="#ffffff">
|
||||
-->
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no">
|
||||
<meta name="keyword" content="Bootstrap,Admin,Template,Open,Source,jQuery,CSS,HTML,RWD,Dashboard">
|
||||
<meta name="csrf-token" content="{{ csrf_token() }}">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<link rel="stylesheet" href="https://unpkg.com/@coreui/icons/css/coreui-icons.min.css">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/simple-line-icons/2.4.1/css/simple-line-icons.css">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.css">
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.js"></script>
|
||||
<link rel="canonical" href="{{ config('ninja.app_url') }}/{{ request()->path() }}"/>
|
||||
<link rel="stylesheet" href="{{ mix('/css/ninja.css') }}">
|
||||
<script src=" {{ mix('/js/ninja.js') }}"></script>
|
||||
|
||||
@yield('head')
|
||||
|
||||
</head>
|
||||
|
||||
@yield('header')
|
||||
|
||||
@yield('sidebar')
|
||||
|
||||
@yield('body')
|
||||
|
||||
@yield('footer')
|
||||
|
||||
|
||||
</html>
|
203
resources/views/sidebar.blade.php
Normal file
203
resources/views/sidebar.blade.php
Normal file
@ -0,0 +1,203 @@
|
||||
<div class="sidebar">
|
||||
<nav class="sidebar-nav">
|
||||
<ul class="nav">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="index.html">
|
||||
<i class="nav-icon icon-speedometer"></i> Dashboard
|
||||
<span class="badge badge-primary">NEW</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-title">Theme</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="colors.html">
|
||||
<i class="nav-icon icon-drop"></i> Colors</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="typography.html">
|
||||
<i class="nav-icon icon-pencil"></i> Typography</a>
|
||||
</li>
|
||||
<li class="nav-title">Components</li>
|
||||
<li class="nav-item nav-dropdown">
|
||||
<a class="nav-link nav-dropdown-toggle" href="#">
|
||||
<i class="nav-icon icon-puzzle"></i> Base</a>
|
||||
<ul class="nav-dropdown-items">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="base/breadcrumb.html">
|
||||
<i class="nav-icon icon-puzzle"></i> Breadcrumb</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="base/cards.html">
|
||||
<i class="nav-icon icon-puzzle"></i> Cards</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="base/carousel.html">
|
||||
<i class="nav-icon icon-puzzle"></i> Carousel</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="base/collapse.html">
|
||||
<i class="nav-icon icon-puzzle"></i> Collapse</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="base/forms.html">
|
||||
<i class="nav-icon icon-puzzle"></i> Forms</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="base/jumbotron.html">
|
||||
<i class="nav-icon icon-puzzle"></i> Jumbotron</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="base/list-group.html">
|
||||
<i class="nav-icon icon-puzzle"></i> List group</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="base/navs.html">
|
||||
<i class="nav-icon icon-puzzle"></i> Navs</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="base/pagination.html">
|
||||
<i class="nav-icon icon-puzzle"></i> Pagination</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="base/popovers.html">
|
||||
<i class="nav-icon icon-puzzle"></i> Popovers</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="base/progress.html">
|
||||
<i class="nav-icon icon-puzzle"></i> Progress</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="base/scrollspy.html">
|
||||
<i class="nav-icon icon-puzzle"></i> Scrollspy</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="base/switches.html">
|
||||
<i class="nav-icon icon-puzzle"></i> Switches</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="base/tables.html">
|
||||
<i class="nav-icon icon-puzzle"></i> Tables</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="base/tabs.html">
|
||||
<i class="nav-icon icon-puzzle"></i> Tabs</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="base/tooltips.html">
|
||||
<i class="nav-icon icon-puzzle"></i> Tooltips</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-item nav-dropdown">
|
||||
<a class="nav-link nav-dropdown-toggle" href="#">
|
||||
<i class="nav-icon icon-cursor"></i> Buttons</a>
|
||||
<ul class="nav-dropdown-items">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="buttons/buttons.html">
|
||||
<i class="nav-icon icon-cursor"></i> Buttons</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="buttons/button-group.html">
|
||||
<i class="nav-icon icon-cursor"></i> Buttons Group</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="buttons/dropdowns.html">
|
||||
<i class="nav-icon icon-cursor"></i> Dropdowns</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="buttons/brand-buttons.html">
|
||||
<i class="nav-icon icon-cursor"></i> Brand Buttons</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="charts.html">
|
||||
<i class="nav-icon icon-pie-chart"></i> Charts</a>
|
||||
</li>
|
||||
<li class="nav-item nav-dropdown">
|
||||
<a class="nav-link nav-dropdown-toggle" href="#">
|
||||
<i class="nav-icon icon-star"></i> Icons</a>
|
||||
<ul class="nav-dropdown-items">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="icons/coreui-icons.html">
|
||||
<i class="nav-icon icon-star"></i> CoreUI Icons
|
||||
<span class="badge badge-success">NEW</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="icons/flags.html">
|
||||
<i class="nav-icon icon-star"></i> Flags</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="icons/font-awesome.html">
|
||||
<i class="nav-icon icon-star"></i> Font Awesome
|
||||
<span class="badge badge-secondary">4.7</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="icons/simple-line-icons.html">
|
||||
<i class="nav-icon icon-star"></i> Simple Line Icons</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-item nav-dropdown">
|
||||
<a class="nav-link nav-dropdown-toggle" href="#">
|
||||
<i class="nav-icon icon-bell"></i> Notifications</a>
|
||||
<ul class="nav-dropdown-items">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="notifications/alerts.html">
|
||||
<i class="nav-icon icon-bell"></i> Alerts</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="notifications/badge.html">
|
||||
<i class="nav-icon icon-bell"></i> Badge</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="notifications/modals.html">
|
||||
<i class="nav-icon icon-bell"></i> Modals</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="widgets.html">
|
||||
<i class="nav-icon icon-calculator"></i> Widgets
|
||||
<span class="badge badge-primary">NEW</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="divider"></li>
|
||||
<li class="nav-title">Extras</li>
|
||||
<li class="nav-item nav-dropdown">
|
||||
<a class="nav-link nav-dropdown-toggle" href="#">
|
||||
<i class="nav-icon icon-star"></i> Pages</a>
|
||||
<ul class="nav-dropdown-items">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="login.html" target="_top">
|
||||
<i class="nav-icon icon-star"></i> Login</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="register.html" target="_top">
|
||||
<i class="nav-icon icon-star"></i> Register</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="404.html" target="_top">
|
||||
<i class="nav-icon icon-star"></i> Error 404</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="500.html" target="_top">
|
||||
<i class="nav-icon icon-star"></i> Error 500</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-item mt-auto">
|
||||
<a class="nav-link nav-link-success" href="https://coreui.io" target="_top">
|
||||
<i class="nav-icon icon-cloud-download"></i> Download CoreUI</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link nav-link-danger" href="https://coreui.io/pro/" target="_top">
|
||||
<i class="nav-icon icon-layers"></i> Try CoreUI
|
||||
<strong>PRO</strong>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
<button class="sidebar-minimizer brand-minimizer" type="button"></button>
|
||||
</div>
|
@ -26,7 +26,11 @@ Route::post('password/reset', 'Auth\ResetPasswordController@reset')->name('passw
|
||||
/*
|
||||
Open Routes
|
||||
*/
|
||||
Route::get('/', 'HomeController@index')->name('default');
|
||||
//Route::get('/', 'HomeController@index')->name('default');
|
||||
Route::redirect('/', '/login', 301);
|
||||
|
||||
Route::get('/signup', 'HomeController@signup')->name('signup');
|
||||
|
||||
Route::get('/contact/login', 'Auth\ContactLoginController@showLoginForm')->name('contact.login');
|
||||
Route::post('/contact/login', 'Auth\ContactLoginController@login')->name('contact.login.submit');
|
||||
|
||||
|
20
webpack.mix.js
vendored
20
webpack.mix.js
vendored
@ -11,5 +11,21 @@ const mix = require('laravel-mix');
|
||||
|
|
||||
*/
|
||||
|
||||
mix.js('resources/js/app.js', 'public/js')
|
||||
.sass('resources/sass/app.scss', 'public/css');
|
||||
mix.js('resources/js/app.js', 'public/js/vendor');
|
||||
|
||||
mix.scripts([
|
||||
'node_modules/@coreui/coreui/dist/js/coreui.js',
|
||||
'node_modules/bootstrap/dist/js/bootstrap.js',
|
||||
'public/js/vendor/app.js'
|
||||
], 'public/js/ninja.js');
|
||||
|
||||
mix.styles([
|
||||
'node_modules/@coreui/coreui/dist/css/coreui.css',
|
||||
'node_modules/@coreui/icons/css/coreui-icons.css',
|
||||
'node_modules/font-awesome/css/font-awesome.css'
|
||||
], 'public/css/ninja.css');
|
||||
|
||||
mix.copyDirectory('node_modules/font-awesome/fonts', 'public/fonts');
|
||||
|
||||
|
||||
mix.version();
|
||||
|
Loading…
x
Reference in New Issue
Block a user