Compare commits
376 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f5702532f0 | ||
|
|
2f02eee69b | ||
|
|
89c234b1c2 | ||
|
|
c24052cb2d | ||
|
|
a7a61a3620 | ||
|
|
135fdae209 | ||
|
|
5c30de517d | ||
|
|
a7dc6162fa | ||
|
|
18778d3723 | ||
|
|
5ff1b5fd50 | ||
|
|
1c1f3dc42c | ||
|
|
d67afc3bd0 | ||
|
|
a5b857c753 | ||
|
|
b00db3cc56 | ||
|
|
57720cb978 | ||
|
|
172e8d463f | ||
|
|
284dbb7553 | ||
|
|
1156eea8af | ||
|
|
17ee332715 | ||
|
|
2f258a3e3d | ||
|
|
a31bca1798 | ||
|
|
791f77f641 | ||
|
|
1b6df232aa | ||
|
|
386272a618 | ||
|
|
7f8fc7add9 | ||
|
|
6bc525bc25 | ||
|
|
de048e1009 | ||
|
|
68150d11b7 | ||
|
|
f4f400ed87 | ||
|
|
a49ccf0863 | ||
|
|
300879847f | ||
|
|
d4c53945d9 | ||
|
|
21875100b6 | ||
|
|
87980643ea | ||
|
|
675f42401c | ||
|
|
3a5c09c424 | ||
|
|
3b462ffadc | ||
|
|
d60af478ad | ||
|
|
cabef8ff12 | ||
|
|
8a27ef30d5 | ||
|
|
a111482217 | ||
|
|
a758e825ed | ||
|
|
af66f83a3d | ||
|
|
b3605fa141 | ||
|
|
6f713985fb | ||
|
|
677e5a8cf1 | ||
|
|
872600a7a7 | ||
|
|
61c601dbdf | ||
|
|
74bc06cc49 | ||
|
|
5fe1078013 | ||
|
|
a011b07d99 | ||
|
|
b392ed269b | ||
|
|
6059e9e119 | ||
|
|
e6d792bdf7 | ||
|
|
f16a4b6aef | ||
|
|
d74b4f55fb | ||
|
|
693043e645 | ||
|
|
e935a34946 | ||
|
|
4052e360c1 | ||
|
|
cc6a2f2d49 | ||
|
|
07bc2fd742 | ||
|
|
a57a6486e7 | ||
|
|
a33276cb3d | ||
|
|
bfec0059c5 | ||
|
|
aea9dd1de5 | ||
|
|
954b54f914 | ||
|
|
56a15731ef | ||
|
|
766e59acde | ||
|
|
f1a63f25e7 | ||
|
|
88dfdb7538 | ||
|
|
9072f7c6c9 | ||
|
|
bff34063cd | ||
|
|
1e685ca835 | ||
|
|
b55630aafa | ||
|
|
c3b644797e | ||
|
|
1806dacb9d | ||
|
|
abb7f23ca5 | ||
|
|
b448c89655 | ||
|
|
8857391da7 | ||
|
|
50c008ead5 | ||
|
|
3e8837dd6e | ||
|
|
ea1ff1e8bb | ||
|
|
a7b155108d | ||
|
|
44c0c1bf0e | ||
|
|
7cd35a80b6 | ||
|
|
e8973f08b5 | ||
|
|
dd9c9520fb | ||
|
|
aec033d8d2 | ||
|
|
5496b62b33 | ||
|
|
e393e2eb4b | ||
|
|
10781a6e4b | ||
|
|
5a86004081 | ||
|
|
91ade1f33e | ||
|
|
eaecf8137a | ||
|
|
92bb8fac32 | ||
|
|
d4a7811078 | ||
|
|
cb8dbcc172 | ||
|
|
495e68d23c | ||
|
|
20a0c4e3b5 | ||
|
|
4d773829f8 | ||
|
|
bcb9804be8 | ||
|
|
5e59fa2598 | ||
|
|
6ea722d41e | ||
|
|
66346684a9 | ||
|
|
9731a31cb6 | ||
|
|
ef3e016667 | ||
|
|
93e4d23143 | ||
|
|
0153a37cd7 | ||
|
|
cce5846018 | ||
|
|
a070f7cd5e | ||
|
|
4c11041477 | ||
|
|
166f526302 | ||
|
|
f8718ffc1e | ||
|
|
31e4d3b725 | ||
|
|
a766572a2f | ||
|
|
6a8824a467 | ||
|
|
0c3972d7b7 | ||
|
|
4a0eb2b3f1 | ||
|
|
b3559ac74e | ||
|
|
4252bd2348 | ||
|
|
728338bfa8 | ||
|
|
df8834fd88 | ||
|
|
c8bc0eff11 | ||
|
|
8b6e869215 | ||
|
|
063893c109 | ||
|
|
44f4f20187 | ||
|
|
792b18f845 | ||
|
|
0671e478cd | ||
|
|
d2fc27e21d | ||
|
|
740f27198f | ||
|
|
064f4b3fc6 | ||
|
|
5458676ead | ||
|
|
8337628323 | ||
|
|
7faaa4ce24 | ||
|
|
9583a72016 | ||
|
|
e0102ddbf0 | ||
|
|
1030ad9a27 | ||
|
|
ab8dcdcc40 | ||
|
|
773997a492 | ||
|
|
8333c80b7a | ||
|
|
96644ab6b9 | ||
|
|
f977c53ecb | ||
|
|
8c1843b351 | ||
|
|
c9e86ac194 | ||
|
|
f7449921e9 | ||
|
|
5f79534f4a | ||
|
|
3bcd5d94d6 | ||
|
|
01348187c8 | ||
|
|
b26a4ad333 | ||
|
|
89f45d3d05 | ||
|
|
e83a062eda | ||
|
|
1ea667e709 | ||
|
|
5326ebd136 | ||
|
|
4db9892f8c | ||
|
|
880828379e | ||
|
|
9b54077409 | ||
|
|
9f478b51e2 | ||
|
|
7c77e03c5a | ||
|
|
9d3aed42b7 | ||
|
|
3dedd51b84 | ||
|
|
711c713ab8 | ||
|
|
5bc5e9f108 | ||
|
|
9770692d07 | ||
|
|
133da6569b | ||
|
|
985e683896 | ||
|
|
c3698053ea | ||
|
|
dba06a3a9e | ||
|
|
07b1062fb2 | ||
|
|
be0933a708 | ||
|
|
d31f185cce | ||
|
|
5901182885 | ||
|
|
f033aeda83 | ||
|
|
53f9e2bc7a | ||
|
|
514db05770 | ||
|
|
7ca617f077 | ||
|
|
8f5ac5fb55 | ||
|
|
54f828743e | ||
|
|
f519fb747f | ||
|
|
36f714e414 | ||
|
|
773c773773 | ||
|
|
3071a83ae0 | ||
|
|
1c4864a3cc | ||
|
|
50c92d4730 | ||
|
|
f8a0bf6a4b | ||
|
|
910fc08406 | ||
|
|
eebc56d54b | ||
|
|
b5ddc2c85b | ||
|
|
4e03ebe284 | ||
|
|
7577fc61e4 | ||
|
|
d302675056 | ||
|
|
5316f41eba | ||
|
|
fa6c463d46 | ||
|
|
23a441e7c8 | ||
|
|
ac993184ee | ||
|
|
1dbc1f4aa2 | ||
|
|
089704c4f9 | ||
|
|
bb933e5214 | ||
|
|
eb34cf7917 | ||
|
|
4909cf2a9e | ||
|
|
37f9cca5ec | ||
|
|
72192257f2 | ||
|
|
e0050bc844 | ||
|
|
d2d0842737 | ||
|
|
fe3b9f9e86 | ||
|
|
0ea6671bfa | ||
|
|
9209675d45 | ||
|
|
3e44f39f4d | ||
|
|
1f6ab340a6 | ||
|
|
f208869aff | ||
|
|
c031686825 | ||
|
|
791c39d977 | ||
|
|
aac432b00c | ||
|
|
2b5b3273e2 | ||
|
|
4f57eebf24 | ||
|
|
0c9a1a8922 | ||
|
|
fa2a3e4b03 | ||
|
|
94a337fc9e | ||
|
|
8d9cdf9c15 | ||
|
|
fb8d52d599 | ||
|
|
070c36ffe6 | ||
|
|
5db1c50816 | ||
|
|
43e97ea6ea | ||
|
|
8fdedf9441 | ||
|
|
b67ed3eac2 | ||
|
|
116ce931ce | ||
|
|
15d0fb4feb | ||
|
|
132b164a74 | ||
|
|
bdbe2c3ac6 | ||
|
|
2db6cf85a7 | ||
|
|
5be7dee3d3 | ||
|
|
72799973e7 | ||
|
|
d8a8e03bf6 | ||
|
|
a243823e5e | ||
|
|
a4cf601c98 | ||
|
|
1e3c0d597e | ||
|
|
91822d2e45 | ||
|
|
43c5b412ca | ||
|
|
08ff71aae3 | ||
|
|
5d83516659 | ||
|
|
f39005d295 | ||
|
|
0e6c82776a | ||
|
|
67616dbcf4 | ||
|
|
5881eef2c6 | ||
|
|
4839985f38 | ||
|
|
aa841a4674 | ||
|
|
6d1de73cad | ||
|
|
e0b64a4879 | ||
|
|
0a6626891e | ||
|
|
2ec7644a33 | ||
|
|
810578ff5d | ||
|
|
64eafb062e | ||
|
|
ad56928d04 | ||
|
|
30583f920d | ||
|
|
5130a86854 | ||
|
|
e4e32307de | ||
|
|
e34ea32a5e | ||
|
|
b8e6df545a | ||
|
|
90a4ce5723 | ||
|
|
8333089278 | ||
|
|
70344cc02e | ||
|
|
4adb990a5d | ||
|
|
160a147a58 | ||
|
|
bd384d3f10 | ||
|
|
ad8143b0bd | ||
|
|
f439970e7a | ||
|
|
625f120813 | ||
|
|
a37a576ee5 | ||
|
|
2bd0679a81 | ||
|
|
b7eb72fe49 | ||
|
|
afb3843fad | ||
|
|
8e85d316c9 | ||
|
|
ebd3c11129 | ||
|
|
75acb0f28a | ||
|
|
eb5f33e815 | ||
|
|
8c64e7359a | ||
|
|
14495cd1da | ||
|
|
93eba43b76 | ||
|
|
adbac82c30 | ||
|
|
e467ce912b | ||
|
|
4eab5fd075 | ||
|
|
d0e8a4ca09 | ||
|
|
bcd0671213 | ||
|
|
266a9e5328 | ||
|
|
a37fbe6abf | ||
|
|
52901f50eb | ||
|
|
340c59969c | ||
|
|
8706b6d8a9 | ||
|
|
5d29f77d60 | ||
|
|
61a6c83418 | ||
|
|
deda1c2fd6 | ||
|
|
4669bb54fe | ||
|
|
319eae7810 | ||
|
|
8449b5ca1e | ||
|
|
e4b24e17f3 | ||
|
|
981741062b | ||
|
|
a55adfc0a1 | ||
|
|
f609146c29 | ||
|
|
891009dc67 | ||
|
|
ab23e04c65 | ||
|
|
877b1bd0a3 | ||
|
|
c0d352dd7d | ||
|
|
bef895eaf4 | ||
|
|
014a32b050 | ||
|
|
937472feb0 | ||
|
|
f14a4d3bc7 | ||
|
|
9e9d371e1c | ||
|
|
9e2bcfe168 | ||
|
|
eaeb74c576 | ||
|
|
23891054dc | ||
|
|
cfc4c58da3 | ||
|
|
5f187f71c8 | ||
|
|
b2250ecb7a | ||
|
|
1453b36484 | ||
|
|
4b21d9e7f4 | ||
|
|
4644f1479b | ||
|
|
3bf2328db2 | ||
|
|
7d637eaa5a | ||
|
|
32111a863b | ||
|
|
0ed59753da | ||
|
|
75f5f3a0a8 | ||
|
|
07679aa376 | ||
|
|
b7b21689f2 | ||
|
|
b426fa352e | ||
|
|
a771984619 | ||
|
|
71828d5461 | ||
|
|
d9817ec696 | ||
|
|
33ded3f18a | ||
|
|
004d567253 | ||
|
|
e2fd5199c3 | ||
|
|
b7b3b1a776 | ||
|
|
4078e4e323 | ||
|
|
64d457425e | ||
|
|
524ef8261b | ||
|
|
344dcc10c1 | ||
|
|
2ad97ca040 | ||
|
|
7880e15672 | ||
|
|
ceffbb950f | ||
|
|
b941ea6950 | ||
|
|
54c1659210 | ||
|
|
b4a0d33ba8 | ||
|
|
4e65a8d755 | ||
|
|
bf028adcc3 | ||
|
|
137b558bef | ||
|
|
be5be7a8b9 | ||
|
|
2b3a1ee120 | ||
|
|
d316a3f044 | ||
|
|
105750bfde | ||
|
|
3e34027ae0 | ||
|
|
0f9559c1ff | ||
|
|
11db243514 | ||
|
|
d391980b06 | ||
|
|
a8eb138ae0 | ||
|
|
72493d54aa | ||
|
|
91c7a89f93 | ||
|
|
11f540daaf | ||
|
|
700b4ef058 | ||
|
|
1fc0adf7b7 | ||
|
|
58875d5606 | ||
|
|
0dfc98a493 | ||
|
|
15a1db480a | ||
|
|
3dc4f56fb4 | ||
|
|
7da8ec8448 | ||
|
|
a973c0626e | ||
|
|
213d990e47 | ||
|
|
a5fbfdbab4 | ||
|
|
b705878318 | ||
|
|
925529923a | ||
|
|
13ce7513f0 | ||
|
|
7a1b17ff6a | ||
|
|
8ebe64e630 | ||
|
|
c07a244bab | ||
|
|
8a032ee040 | ||
|
|
a835401cb2 | ||
|
|
2cd7c7a357 | ||
|
|
b5378eff64 | ||
|
|
570dd09dcd |
@@ -2621,6 +2621,13 @@
|
|||||||
"contributions": [
|
"contributions": [
|
||||||
"code"
|
"code"
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "denzfarid",
|
||||||
|
"name": "denzfarid",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/1294403?v=4",
|
||||||
|
"profile": "https://github.com/denzfarid",
|
||||||
|
"contributions": []
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -146,7 +146,13 @@ AWS_DEFAULT_REGION=null
|
|||||||
# --------------------------------------------
|
# --------------------------------------------
|
||||||
LOGIN_MAX_ATTEMPTS=5
|
LOGIN_MAX_ATTEMPTS=5
|
||||||
LOGIN_LOCKOUT_DURATION=60
|
LOGIN_LOCKOUT_DURATION=60
|
||||||
RESET_PASSWORD_LINK_EXPIRES=900
|
|
||||||
|
# --------------------------------------------
|
||||||
|
# OPTIONAL: FORGOTTEN PASSWORD SETTINGS
|
||||||
|
# --------------------------------------------
|
||||||
|
RESET_PASSWORD_LINK_EXPIRES=15
|
||||||
|
PASSWORD_CONFIRM_TIMEOUT=10800
|
||||||
|
PASSWORD_RESET_MAX_ATTEMPTS_PER_MIN=50
|
||||||
|
|
||||||
# --------------------------------------------
|
# --------------------------------------------
|
||||||
# OPTIONAL: MISC
|
# OPTIONAL: MISC
|
||||||
|
|||||||
2
.github/workflows/codacy-analysis.yml
vendored
2
.github/workflows/codacy-analysis.yml
vendored
@@ -19,6 +19,8 @@ on:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
codacy-security-scan:
|
codacy-security-scan:
|
||||||
|
# Ensure schedule job never runs on forked repos. It's only executed for 'snipe/snipe-it'
|
||||||
|
if: (github.repository == 'snipe/snipe-it') || ((github.repository != 'snipe/snipe-it') && (github.event_name != 'schedule'))
|
||||||
name: Codacy Security Scan
|
name: Codacy Security Scan
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ php7.4-xml \
|
|||||||
php7.4-mbstring \
|
php7.4-mbstring \
|
||||||
php7.4-zip \
|
php7.4-zip \
|
||||||
php7.4-bcmath \
|
php7.4-bcmath \
|
||||||
|
php7.4-redis \
|
||||||
patch \
|
patch \
|
||||||
curl \
|
curl \
|
||||||
wget \
|
wget \
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ RUN apk add --no-cache \
|
|||||||
php7-xmlwriter \
|
php7-xmlwriter \
|
||||||
php7-xmlreader \
|
php7-xmlreader \
|
||||||
php7-sodium \
|
php7-sodium \
|
||||||
|
php7-redis \
|
||||||
curl \
|
curl \
|
||||||
wget \
|
wget \
|
||||||
vim \
|
vim \
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
 [](https://crowdin.com/project/snipe-it) [](https://hub.docker.com/r/snipe/snipe-it/) [](https://twitter.com/snipeitapp) [](https://www.codacy.com/app/snipe/snipe-it?utm_source=github.com&utm_medium=referral&utm_content=snipe/snipe-it&utm_campaign=Badge_Grade)
|
 [](https://crowdin.com/project/snipe-it) [](https://hub.docker.com/r/snipe/snipe-it/) [](https://twitter.com/snipeitapp) [](https://www.codacy.com/app/snipe/snipe-it?utm_source=github.com&utm_medium=referral&utm_content=snipe/snipe-it&utm_campaign=Badge_Grade)
|
||||||
[](#contributors) [](https://discord.gg/yZFtShAcKk) [](https://huntr.dev)
|
[](#contributors) [](https://discord.gg/yZFtShAcKk) [](https://huntr.dev)
|
||||||
|
|
||||||
## Snipe-IT - Open Source Asset Management System
|
## Snipe-IT - Open Source Asset Management System
|
||||||
|
|
||||||
@@ -131,7 +131,8 @@ Thanks goes to all of these wonderful people ([emoji key](https://github.com/ken
|
|||||||
| [<img src="https://avatars.githubusercontent.com/u/1975640?v=4" width="110px;"/><br /><sub>Evan Taylor</sub>](https://github.com/Delta5)<br />[💻](https://github.com/snipe/snipe-it/commits?author=Delta5 "Code") | [<img src="https://avatars.githubusercontent.com/u/8735148?v=4" width="110px;"/><br /><sub>Petri Asikainen</sub>](https://github.com/PetriAsi)<br />[💻](https://github.com/snipe/snipe-it/commits?author=PetriAsi "Code") | [<img src="https://avatars.githubusercontent.com/u/11424540?v=4" width="110px;"/><br /><sub>derdeagle</sub>](https://github.com/derdeagle)<br />[💻](https://github.com/snipe/snipe-it/commits?author=derdeagle "Code") | [<img src="https://avatars.githubusercontent.com/u/176950?v=4" width="110px;"/><br /><sub>Mike Frysinger</sub>](https://wh0rd.org/)<br />[💻](https://github.com/snipe/snipe-it/commits?author=vapier "Code") | [<img src="https://avatars.githubusercontent.com/u/22044358?v=4" width="110px;"/><br /><sub>ALPHA</sub>](https://github.com/AL4AL)<br />[💻](https://github.com/snipe/snipe-it/commits?author=AL4AL "Code") | [<img src="https://avatars.githubusercontent.com/u/1042587?v=4" width="110px;"/><br /><sub>FliegenKLATSCH</sub>](https://www.ifern.de)<br />[💻](https://github.com/snipe/snipe-it/commits?author=FliegenKLATSCH "Code") | [<img src="https://avatars.githubusercontent.com/u/442138?v=4" width="110px;"/><br /><sub>Jeremy Price</sub>](https://github.com/jerm)<br />[💻](https://github.com/snipe/snipe-it/commits?author=jerm "Code") |
|
| [<img src="https://avatars.githubusercontent.com/u/1975640?v=4" width="110px;"/><br /><sub>Evan Taylor</sub>](https://github.com/Delta5)<br />[💻](https://github.com/snipe/snipe-it/commits?author=Delta5 "Code") | [<img src="https://avatars.githubusercontent.com/u/8735148?v=4" width="110px;"/><br /><sub>Petri Asikainen</sub>](https://github.com/PetriAsi)<br />[💻](https://github.com/snipe/snipe-it/commits?author=PetriAsi "Code") | [<img src="https://avatars.githubusercontent.com/u/11424540?v=4" width="110px;"/><br /><sub>derdeagle</sub>](https://github.com/derdeagle)<br />[💻](https://github.com/snipe/snipe-it/commits?author=derdeagle "Code") | [<img src="https://avatars.githubusercontent.com/u/176950?v=4" width="110px;"/><br /><sub>Mike Frysinger</sub>](https://wh0rd.org/)<br />[💻](https://github.com/snipe/snipe-it/commits?author=vapier "Code") | [<img src="https://avatars.githubusercontent.com/u/22044358?v=4" width="110px;"/><br /><sub>ALPHA</sub>](https://github.com/AL4AL)<br />[💻](https://github.com/snipe/snipe-it/commits?author=AL4AL "Code") | [<img src="https://avatars.githubusercontent.com/u/1042587?v=4" width="110px;"/><br /><sub>FliegenKLATSCH</sub>](https://www.ifern.de)<br />[💻](https://github.com/snipe/snipe-it/commits?author=FliegenKLATSCH "Code") | [<img src="https://avatars.githubusercontent.com/u/442138?v=4" width="110px;"/><br /><sub>Jeremy Price</sub>](https://github.com/jerm)<br />[💻](https://github.com/snipe/snipe-it/commits?author=jerm "Code") |
|
||||||
| [<img src="https://avatars.githubusercontent.com/u/84392209?v=4" width="110px;"/><br /><sub>Toreg87</sub>](https://github.com/Toreg87)<br />[💻](https://github.com/snipe/snipe-it/commits?author=Toreg87 "Code") | [<img src="https://avatars.githubusercontent.com/u/67638596?v=4" width="110px;"/><br /><sub>Matthew Nickson</sub>](https://github.com/Computroniks)<br />[💻](https://github.com/snipe/snipe-it/commits?author=Computroniks "Code") | [<img src="https://avatars.githubusercontent.com/u/1646397?v=4" width="110px;"/><br /><sub>Jethro Nederhof</sub>](https://jethron.id.au)<br />[💻](https://github.com/snipe/snipe-it/commits?author=jethron "Code") | [<img src="https://avatars.githubusercontent.com/u/23289826?v=4" width="110px;"/><br /><sub>Oskar Stenberg</sub>](https://github.com/01ste02)<br />[💻](https://github.com/snipe/snipe-it/commits?author=01ste02 "Code") | [<img src="https://avatars.githubusercontent.com/u/82208283?v=4" width="110px;"/><br /><sub>Robert-Azelis</sub>](https://github.com/Robert-Azelis)<br />[💻](https://github.com/snipe/snipe-it/commits?author=Robert-Azelis "Code") | [<img src="https://avatars.githubusercontent.com/u/60648387?v=4" width="110px;"/><br /><sub>Alexander William Smith</sub>](https://github.com/alwism)<br />[💻](https://github.com/snipe/snipe-it/commits?author=alwism "Code") | [<img src="https://avatars.githubusercontent.com/u/24418301?v=4" width="110px;"/><br /><sub>LEITWERK AG</sub>](https://www.leitwerk.de/)<br />[💻](https://github.com/snipe/snipe-it/commits?author=leitwerk-ag "Code") |
|
| [<img src="https://avatars.githubusercontent.com/u/84392209?v=4" width="110px;"/><br /><sub>Toreg87</sub>](https://github.com/Toreg87)<br />[💻](https://github.com/snipe/snipe-it/commits?author=Toreg87 "Code") | [<img src="https://avatars.githubusercontent.com/u/67638596?v=4" width="110px;"/><br /><sub>Matthew Nickson</sub>](https://github.com/Computroniks)<br />[💻](https://github.com/snipe/snipe-it/commits?author=Computroniks "Code") | [<img src="https://avatars.githubusercontent.com/u/1646397?v=4" width="110px;"/><br /><sub>Jethro Nederhof</sub>](https://jethron.id.au)<br />[💻](https://github.com/snipe/snipe-it/commits?author=jethron "Code") | [<img src="https://avatars.githubusercontent.com/u/23289826?v=4" width="110px;"/><br /><sub>Oskar Stenberg</sub>](https://github.com/01ste02)<br />[💻](https://github.com/snipe/snipe-it/commits?author=01ste02 "Code") | [<img src="https://avatars.githubusercontent.com/u/82208283?v=4" width="110px;"/><br /><sub>Robert-Azelis</sub>](https://github.com/Robert-Azelis)<br />[💻](https://github.com/snipe/snipe-it/commits?author=Robert-Azelis "Code") | [<img src="https://avatars.githubusercontent.com/u/60648387?v=4" width="110px;"/><br /><sub>Alexander William Smith</sub>](https://github.com/alwism)<br />[💻](https://github.com/snipe/snipe-it/commits?author=alwism "Code") | [<img src="https://avatars.githubusercontent.com/u/24418301?v=4" width="110px;"/><br /><sub>LEITWERK AG</sub>](https://www.leitwerk.de/)<br />[💻](https://github.com/snipe/snipe-it/commits?author=leitwerk-ag "Code") |
|
||||||
| [<img src="https://avatars.githubusercontent.com/u/1911435?v=4" width="110px;"/><br /><sub>Adam</sub>](http://www.aboutcher.co.uk)<br />[💻](https://github.com/snipe/snipe-it/commits?author=adamboutcher "Code") | [<img src="https://avatars.githubusercontent.com/u/16104273?v=4" width="110px;"/><br /><sub>Ian</sub>](https://snksrv.com)<br />[💻](https://github.com/snipe/snipe-it/commits?author=sneak-it "Code") | [<img src="https://avatars.githubusercontent.com/u/4023909?v=4" width="110px;"/><br /><sub>Shao Yu-Lung (Allen)</sub>](http://blog.bestlong.idv.tw/)<br />[💻](https://github.com/snipe/snipe-it/commits?author=bestlong "Code") | [<img src="https://avatars.githubusercontent.com/u/76475453?v=4" width="110px;"/><br /><sub>Haxatron</sub>](https://github.com/Haxatron)<br />[💻](https://github.com/snipe/snipe-it/commits?author=Haxatron "Code") | [<img src="https://avatars.githubusercontent.com/u/88776392?v=4" width="110px;"/><br /><sub>PlaneNuts</sub>](https://github.com/PlaneNuts)<br />[💻](https://github.com/snipe/snipe-it/commits?author=PlaneNuts "Code") | [<img src="https://avatars.githubusercontent.com/u/3842948?v=4" width="110px;"/><br /><sub>Bradley Coudriet</sub>](http://bjcpgd.cias.rit.edu)<br />[💻](https://github.com/snipe/snipe-it/commits?author=exula "Code") | [<img src="https://avatars.githubusercontent.com/u/21966173?v=4" width="110px;"/><br /><sub>Dalton Durst</sub>](https://daltondur.st)<br />[💻](https://github.com/snipe/snipe-it/commits?author=UniversalSuperBox "Code") |
|
| [<img src="https://avatars.githubusercontent.com/u/1911435?v=4" width="110px;"/><br /><sub>Adam</sub>](http://www.aboutcher.co.uk)<br />[💻](https://github.com/snipe/snipe-it/commits?author=adamboutcher "Code") | [<img src="https://avatars.githubusercontent.com/u/16104273?v=4" width="110px;"/><br /><sub>Ian</sub>](https://snksrv.com)<br />[💻](https://github.com/snipe/snipe-it/commits?author=sneak-it "Code") | [<img src="https://avatars.githubusercontent.com/u/4023909?v=4" width="110px;"/><br /><sub>Shao Yu-Lung (Allen)</sub>](http://blog.bestlong.idv.tw/)<br />[💻](https://github.com/snipe/snipe-it/commits?author=bestlong "Code") | [<img src="https://avatars.githubusercontent.com/u/76475453?v=4" width="110px;"/><br /><sub>Haxatron</sub>](https://github.com/Haxatron)<br />[💻](https://github.com/snipe/snipe-it/commits?author=Haxatron "Code") | [<img src="https://avatars.githubusercontent.com/u/88776392?v=4" width="110px;"/><br /><sub>PlaneNuts</sub>](https://github.com/PlaneNuts)<br />[💻](https://github.com/snipe/snipe-it/commits?author=PlaneNuts "Code") | [<img src="https://avatars.githubusercontent.com/u/3842948?v=4" width="110px;"/><br /><sub>Bradley Coudriet</sub>](http://bjcpgd.cias.rit.edu)<br />[💻](https://github.com/snipe/snipe-it/commits?author=exula "Code") | [<img src="https://avatars.githubusercontent.com/u/21966173?v=4" width="110px;"/><br /><sub>Dalton Durst</sub>](https://daltondur.st)<br />[💻](https://github.com/snipe/snipe-it/commits?author=UniversalSuperBox "Code") |
|
||||||
| [<img src="https://avatars.githubusercontent.com/u/38761237?v=4" width="110px;"/><br /><sub>Alex Janes</sub>](https://adagiohealth.org)<br />[💻](https://github.com/snipe/snipe-it/commits?author=adagioajanes "Code") | [<img src="https://avatars.githubusercontent.com/u/32387849?v=4" width="110px;"/><br /><sub>Nuraeil</sub>](https://github.com/nuraeil)<br />[💻](https://github.com/snipe/snipe-it/commits?author=nuraeil "Code") | [<img src="https://avatars.githubusercontent.com/u/48162670?v=4" width="110px;"/><br /><sub>TenOfTens</sub>](https://github.com/TenOfTens)<br />[💻](https://github.com/snipe/snipe-it/commits?author=TenOfTens "Code") | [<img src="https://avatars.githubusercontent.com/u/9415391?v=4" width="110px;"/><br /><sub>waffle</sub>](https://ditisjens.be/)<br />[💻](https://github.com/snipe/snipe-it/commits?author=insert-waffle "Code") | [<img src="https://avatars.githubusercontent.com/u/19945501?v=4" width="110px;"/><br /><sub>Yevhenii Huzii</sub>](https://github.com/QveenSi)<br />[💻](https://github.com/snipe/snipe-it/commits?author=QveenSi "Code") | [<img src="https://avatars.githubusercontent.com/u/3839381?v=4" width="110px;"/><br /><sub>Achmad Fienan Rahardianto</sub>](https://github.com/veenone)<br />[💻](https://github.com/snipe/snipe-it/commits?author=veenone "Code") |
|
| [<img src="https://avatars.githubusercontent.com/u/38761237?v=4" width="110px;"/><br /><sub>Alex Janes</sub>](https://adagiohealth.org)<br />[💻](https://github.com/snipe/snipe-it/commits?author=adagioajanes "Code") | [<img src="https://avatars.githubusercontent.com/u/32387849?v=4" width="110px;"/><br /><sub>Nuraeil</sub>](https://github.com/nuraeil)<br />[💻](https://github.com/snipe/snipe-it/commits?author=nuraeil "Code") | [<img src="https://avatars.githubusercontent.com/u/48162670?v=4" width="110px;"/><br /><sub>TenOfTens</sub>](https://github.com/TenOfTens)<br />[💻](https://github.com/snipe/snipe-it/commits?author=TenOfTens "Code") | [<img src="https://avatars.githubusercontent.com/u/9415391?v=4" width="110px;"/><br /><sub>waffle</sub>](https://ditisjens.be/)<br />[💻](https://github.com/snipe/snipe-it/commits?author=insert-waffle "Code") | [<img src="https://avatars.githubusercontent.com/u/19945501?v=4" width="110px;"/><br /><sub>Yevhenii Huzii</sub>](https://github.com/QveenSi)<br />[💻](https://github.com/snipe/snipe-it/commits?author=QveenSi "Code") | [<img src="https://avatars.githubusercontent.com/u/3839381?v=4" width="110px;"/><br /><sub>Achmad Fienan Rahardianto</sub>](https://github.com/veenone)<br />[💻](https://github.com/snipe/snipe-it/commits?author=veenone "Code") | [<img src="https://avatars.githubusercontent.com/u/19945501?v=4" width="110px;"/><br /><sub>Yevhenii Huzii</sub>](https://github.com/QveenSi)<br />[💻](https://github.com/snipe/snipe-it/commits?author=QveenSi "Code") |
|
||||||
|
| [<img src="https://avatars.githubusercontent.com/u/97299851?v=4" width="110px;"/><br /><sub>Christian Weirich</sub>](https://github.com/chrisweirich)<br />[💻](https://github.com/snipe/snipe-it/commits?author=chrisweirich "Code") | [<img src="https://avatars.githubusercontent.com/u/1294403?v=4" width="110px;"/><br /><sub>denzfarid</sub>](https://github.com/denzfarid)<br /> |
|
||||||
<!-- ALL-CONTRIBUTORS-LIST:END -->
|
<!-- ALL-CONTRIBUTORS-LIST:END -->
|
||||||
|
|
||||||
This project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome!
|
This project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome!
|
||||||
|
|||||||
@@ -27,6 +27,19 @@ function ip_in_range( $ip, $range ) {
|
|||||||
}
|
}
|
||||||
// NOTE - this function was shamelessly stolen from this gist: https://gist.github.com/tott/7684443
|
// NOTE - this function was shamelessly stolen from this gist: https://gist.github.com/tott/7684443
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Ensure LDAP filters are parentheses-wrapped
|
||||||
|
*/
|
||||||
|
function parenthesized_filter($filter)
|
||||||
|
{
|
||||||
|
if(substr($filter,0,1) == "(" ) {
|
||||||
|
return $filter;
|
||||||
|
} else {
|
||||||
|
return "(".$filter.")";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
class LdapTroubleshooter extends Command
|
class LdapTroubleshooter extends Command
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
@@ -70,6 +83,47 @@ class LdapTroubleshooter extends Command
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clean the results from ldap_get_entries into something useful
|
||||||
|
* @param array $array
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function ldap_results_cleaner ($array) {
|
||||||
|
$cleaned = [];
|
||||||
|
for($i = 0; $i < $array['count']; $i++) {
|
||||||
|
$row = $array[$i];
|
||||||
|
$clean_row = [];
|
||||||
|
foreach($row AS $key => $val ) {
|
||||||
|
$this->debugout("Key is: ".$key);
|
||||||
|
if($key == "count" || is_int($key) || $key == "dn") {
|
||||||
|
$this->debugout(" and we're gonna skip it\n");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
$this->debugout(" And that seems fine.\n");
|
||||||
|
if(array_key_exists('count',$val)) {
|
||||||
|
if($val['count'] == 1) {
|
||||||
|
$clean_row[$key] = $val[0];
|
||||||
|
} else {
|
||||||
|
unset($val['count']); //these counts are annoying
|
||||||
|
$elements = [];
|
||||||
|
foreach($val as $entry) {
|
||||||
|
if(isset($ldap_constants[$entry])) {
|
||||||
|
$elements[] = $ldap_constants[$entry];
|
||||||
|
} else {
|
||||||
|
$elements[] = $entry;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$clean_row[$key] = $elements;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$clean_row[$key] = $val;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$cleaned[$i] = $clean_row;
|
||||||
|
}
|
||||||
|
return $cleaned;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Execute the console command.
|
* Execute the console command.
|
||||||
*
|
*
|
||||||
@@ -102,16 +156,12 @@ class LdapTroubleshooter extends Command
|
|||||||
$output[] = "LDAPTLS_KEY=storage/ldap_client_tls.key";
|
$output[] = "LDAPTLS_KEY=storage/ldap_client_tls.key";
|
||||||
}
|
}
|
||||||
$output[] = "ldapsearch";
|
$output[] = "ldapsearch";
|
||||||
$output[] = $settings->ldap_server;
|
$output[] = "-H ".$settings->ldap_server;
|
||||||
$output[] = "-x";
|
$output[] = "-x";
|
||||||
$output[] = "-b ".escapeshellarg($settings->ldap_basedn);
|
$output[] = "-b ".escapeshellarg($settings->ldap_basedn);
|
||||||
$output[] = "-D ".escapeshellarg($settings->ldap_uname);
|
$output[] = "-D ".escapeshellarg($settings->ldap_uname);
|
||||||
$output[] = "-w ".escapeshellarg(\Crypt::Decrypt($settings->ldap_pword));
|
$output[] = "-w ".escapeshellarg(\Crypt::Decrypt($settings->ldap_pword));
|
||||||
if(substr($settings->ldap_filter,0,1) == "(" ) {
|
$output[] = escapeshellarg(parenthesized_filter($settings->ldap_filter));
|
||||||
$output[] = escapeshellarg($settings->ldap_filter);
|
|
||||||
} else {
|
|
||||||
$output[] = escapeshellarg("(".$settings->ldap_filter.")");
|
|
||||||
}
|
|
||||||
if($settings->ldap_tls) {
|
if($settings->ldap_tls) {
|
||||||
$this->line("# adding STARTTLS option");
|
$this->line("# adding STARTTLS option");
|
||||||
$output[] = "-Z";
|
$output[] = "-Z";
|
||||||
@@ -290,45 +340,8 @@ class LdapTroubleshooter extends Command
|
|||||||
}
|
}
|
||||||
$this->debugout("LDAP constants are: ".print_r($ldap_constants,true));
|
$this->debugout("LDAP constants are: ".print_r($ldap_constants,true));
|
||||||
|
|
||||||
// recursive function that 'cleans' the returned array from ldap_get_entries which are formatted awfully
|
|
||||||
$cleaner = function ($array) {
|
|
||||||
$cleaned = [];
|
|
||||||
for($i = 0; $i < $array['count']; $i++) {
|
|
||||||
$row = $array[$i];
|
|
||||||
$clean_row = [];
|
|
||||||
foreach($row AS $key => $val ) {
|
|
||||||
$this->debugout("Key is: ".$key);
|
|
||||||
if($key == "count" || is_int($key) || $key == "dn") {
|
|
||||||
$this->debugout(" and we're gonna skip it\n");
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
$this->debugout(" And that seems fine.\n");
|
|
||||||
if(array_key_exists('count',$val)) {
|
|
||||||
if($val['count'] == 1) {
|
|
||||||
$clean_row[$key] = $val[0];
|
|
||||||
} else {
|
|
||||||
unset($val['count']); //these counts are annoying
|
|
||||||
$elements = [];
|
|
||||||
foreach($val as $entry) {
|
|
||||||
if(isset($ldap_constants[$entry])) {
|
|
||||||
$elements[] = $ldap_constants[$entry];
|
|
||||||
} else {
|
|
||||||
$elements[] = $entry;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$clean_row[$key] = $elements;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$clean_row[$key] = $val;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$cleaned[$i] = $clean_row;
|
|
||||||
}
|
|
||||||
return $cleaned;
|
|
||||||
};
|
|
||||||
|
|
||||||
foreach($ldap_urls AS $ldap_url) {
|
foreach($ldap_urls AS $ldap_url) {
|
||||||
if($this->test_informational_bind($ldap_url[0],$ldap_url[1],$ldap_url[2],$settings->ldap_uname,Crypt::decrypt($settings->ldap_pword))) {
|
if($this->test_informational_bind($ldap_url[0],$ldap_url[1],$ldap_url[2],$settings->ldap_uname,Crypt::decrypt($settings->ldap_pword),$settings)) {
|
||||||
$this->info("Success getting informational bind!");
|
$this->info("Success getting informational bind!");
|
||||||
} else {
|
} else {
|
||||||
$this->error("Unable to get information from bind.");
|
$this->error("Unable to get information from bind.");
|
||||||
@@ -422,9 +435,9 @@ class LdapTroubleshooter extends Command
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public function test_informational_bind($ldap_url, $check_cert, $start_tls, $username, $password)
|
public function test_informational_bind($ldap_url, $check_cert, $start_tls, $username, $password,$settings)
|
||||||
{
|
{
|
||||||
return $this->timed_boolean_execute(function () use ($ldap_url, $check_cert, $start_tls, $username, $password) {
|
return $this->timed_boolean_execute(function () use ($ldap_url, $check_cert, $start_tls, $username, $password, $settings) {
|
||||||
try { // TODO - copypasta'ed from test_authed_bind
|
try { // TODO - copypasta'ed from test_authed_bind
|
||||||
$conn = $this->connect_to_ldap($ldap_url, $check_cert, $start_tls);
|
$conn = $this->connect_to_ldap($ldap_url, $check_cert, $start_tls);
|
||||||
$bind_results = ldap_bind($conn, $username, $password);
|
$bind_results = ldap_bind($conn, $username, $password);
|
||||||
@@ -435,12 +448,13 @@ class LdapTroubleshooter extends Command
|
|||||||
$this->info("SUCCESS - Able to bind to $ldap_url as $username");
|
$this->info("SUCCESS - Able to bind to $ldap_url as $username");
|
||||||
$result = ldap_read($conn, '', '(objectClass=*)'/* , ['supportedControl']*/);
|
$result = ldap_read($conn, '', '(objectClass=*)'/* , ['supportedControl']*/);
|
||||||
$results = ldap_get_entries($conn, $result);
|
$results = ldap_get_entries($conn, $result);
|
||||||
$cleaned_results = $cleaner($results);
|
$cleaned_results = $this->ldap_results_cleaner($results);
|
||||||
$this->line(print_r($cleaned_results,true));
|
$this->line(print_r($cleaned_results,true));
|
||||||
//okay, great - now how do we display those results? I have no idea.
|
//okay, great - now how do we display those results? I have no idea.
|
||||||
// I don't see why this throws an Exception for Google LDAP, but I guess we ought to try and catch it?
|
// I don't see why this throws an Exception for Google LDAP, but I guess we ought to try and catch it?
|
||||||
$this->comment("I guess we're trying to do the ldap search here, but sometimes it takes too long?");
|
$this->comment("I guess we're trying to do the ldap search here, but sometimes it takes too long?");
|
||||||
$search_results = ldap_search($conn, $settings->base_dn, $settings->filter);
|
$this->debugout("Base DN is: ".$settings->ldap_basedn." and filter is: ".parenthesized_filter($settings->ldap_filter));
|
||||||
|
$search_results = ldap_search($conn, $settings->ldap_basedn, parenthesized_filter($settings->ldap_filter));
|
||||||
$this->info("Printing first 10 results: ");
|
$this->info("Printing first 10 results: ");
|
||||||
for($i=0;$i<10;$i++) {
|
for($i=0;$i<10;$i++) {
|
||||||
$this->info($search_results[$i]);
|
$this->info($search_results[$i]);
|
||||||
|
|||||||
@@ -41,10 +41,20 @@ class MergeUsersByUsername extends Command
|
|||||||
{
|
{
|
||||||
// Get the list of users who have an email address as their username
|
// Get the list of users who have an email address as their username
|
||||||
$users = User::where('username', 'LIKE', '%@%')->whereNull('deleted_at')->get();
|
$users = User::where('username', 'LIKE', '%@%')->whereNull('deleted_at')->get();
|
||||||
|
$this->info($users->count().' total non-deleted users whose usernames contain a @ symbol.');
|
||||||
|
|
||||||
|
|
||||||
foreach ($users as $user) {
|
foreach ($users as $user) {
|
||||||
$parts = explode('@', $user->username);
|
$parts = explode('@', trim($user->username));
|
||||||
$bad_users = User::where('username', '=', $parts[0])->whereNull('deleted_at')->with('assets', 'manager', 'userlog', 'licenses', 'consumables', 'accessories', 'managedLocations')->get();
|
$this->info('Checking against username '.trim($parts[0]).'.');
|
||||||
|
|
||||||
|
|
||||||
|
$bad_users = User::where('username', '=', trim($parts[0]))
|
||||||
|
->whereNull('deleted_at')
|
||||||
|
->with('assets', 'manager', 'userlog', 'licenses', 'consumables', 'accessories', 'managedLocations')
|
||||||
|
->get();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
foreach ($bad_users as $bad_user) {
|
foreach ($bad_users as $bad_user) {
|
||||||
$this->info($bad_user->username.' ('.$bad_user->id.') will be merged into '.$user->username.' ('.$user->id.') ');
|
$this->info($bad_user->username.' ('.$bad_user->id.') will be merged into '.$user->username.' ('.$user->id.') ');
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ class RegenerateAssetTags extends Command
|
|||||||
}
|
}
|
||||||
|
|
||||||
foreach ($total_assets as $asset) {
|
foreach ($total_assets as $asset) {
|
||||||
$start_tag++;
|
|
||||||
$output['info'][] = 'Asset tag:'.$asset->asset_tag;
|
$output['info'][] = 'Asset tag:'.$asset->asset_tag;
|
||||||
$asset->asset_tag = $settings->auto_increment_prefix.$settings->auto_increment_prefix.$start_tag;
|
$asset->asset_tag = $settings->auto_increment_prefix.$settings->auto_increment_prefix.$start_tag;
|
||||||
|
|
||||||
@@ -72,8 +72,15 @@ class RegenerateAssetTags extends Command
|
|||||||
|
|
||||||
// Use forceSave here to override model level validation
|
// Use forceSave here to override model level validation
|
||||||
$asset->forceSave();
|
$asset->forceSave();
|
||||||
|
$start_tag++;
|
||||||
|
if ($bar) {
|
||||||
|
$bar->advance();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$settings->next_auto_tag_base = Asset::zerofill($start_tag, $settings->zerofill_count);
|
||||||
|
$settings->save();
|
||||||
|
|
||||||
$bar->finish();
|
$bar->finish();
|
||||||
$this->info("\n");
|
$this->info("\n");
|
||||||
|
|
||||||
|
|||||||
@@ -227,6 +227,9 @@ class RestoreFromBackup extends Command
|
|||||||
return $this->error('Unable to invoke mysql via CLI');
|
return $this->error('Unable to invoke mysql via CLI');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
stream_set_blocking($pipes[1], false); // use non-blocking reads for stdout
|
||||||
|
stream_set_blocking($pipes[2], false); // use non-blocking reads for stderr
|
||||||
|
|
||||||
// $this->info("Stdout says? ".fgets($pipes[1])); //FIXME: I think we might need to set non-blocking mode to use this properly?
|
// $this->info("Stdout says? ".fgets($pipes[1])); //FIXME: I think we might need to set non-blocking mode to use this properly?
|
||||||
// $this->info("Stderr says? ".fgets($pipes[2])); //FIXME: ditto, same.
|
// $this->info("Stderr says? ".fgets($pipes[2])); //FIXME: ditto, same.
|
||||||
// should we read stdout?
|
// should we read stdout?
|
||||||
@@ -247,18 +250,25 @@ class RestoreFromBackup extends Command
|
|||||||
}
|
}
|
||||||
$bytes_read = 0;
|
$bytes_read = 0;
|
||||||
|
|
||||||
while (($buffer = fgets($sql_contents, self::$buffer_size)) !== false) {
|
try {
|
||||||
$bytes_read += strlen($buffer);
|
while (($buffer = fgets($sql_contents, self::$buffer_size)) !== false) {
|
||||||
// \Log::debug("Buffer is: '$buffer'");
|
$bytes_read += strlen($buffer);
|
||||||
$bytes_written = fwrite($pipes[0], $buffer);
|
// \Log::debug("Buffer is: '$buffer'");
|
||||||
|
$bytes_written = fwrite($pipes[0], $buffer);
|
||||||
|
|
||||||
if ($bytes_written === false) {
|
if ($bytes_written === false) {
|
||||||
$stdout = fgets($pipes[1]);
|
throw new Exception("Unable to write to pipe");
|
||||||
$this->info($stdout);
|
}
|
||||||
$stderr = fgets($pipes[2]);
|
|
||||||
$this->info($stderr);
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
\Log::error("Error during restore!!!! ".$e->getMessage());
|
||||||
|
$err_out = fgets($pipes[1]);
|
||||||
|
$err_err = fgets($pipes[2]);
|
||||||
|
\Log::error("Error OUTPUT: ".$err_out);
|
||||||
|
$this->info($err_out);
|
||||||
|
\Log::error("Error ERROR : ".$err_err);
|
||||||
|
$this->error($err_err);
|
||||||
|
throw $e;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!feof($sql_contents) || $bytes_read == 0) {
|
if (!feof($sql_contents) || $bytes_read == 0) {
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ class Kernel extends ConsoleKernel
|
|||||||
$schedule->command('snipeit:backup')->weekly();
|
$schedule->command('snipeit:backup')->weekly();
|
||||||
$schedule->command('backup:clean')->daily();
|
$schedule->command('backup:clean')->daily();
|
||||||
$schedule->command('snipeit:upcoming-audits')->daily();
|
$schedule->command('snipeit:upcoming-audits')->daily();
|
||||||
|
$schedule->command('auth:clear-resets')->everyFifteenMinutes();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ class Handler extends ExceptionHandler
|
|||||||
public function report(Throwable $exception)
|
public function report(Throwable $exception)
|
||||||
{
|
{
|
||||||
if ($this->shouldReport($exception)) {
|
if ($this->shouldReport($exception)) {
|
||||||
Log::error($exception);
|
\Log::error($exception);
|
||||||
return parent::report($exception);
|
return parent::report($exception);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Helpers;
|
namespace App\Helpers;
|
||||||
|
|
||||||
use App\Models\Accessory;
|
use App\Models\Accessory;
|
||||||
use App\Models\Component;
|
use App\Models\Component;
|
||||||
use App\Models\Consumable;
|
use App\Models\Consumable;
|
||||||
@@ -842,6 +841,16 @@ class Helper
|
|||||||
return preg_replace('/\s+/u', '_', trim($string));
|
return preg_replace('/\s+/u', '_', trim($string));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return an array (or null) of the the raw and formatted date object for easy use in
|
||||||
|
* the API and the bootstrap table listings.
|
||||||
|
*
|
||||||
|
* @param $date
|
||||||
|
* @param $type
|
||||||
|
* @param $array
|
||||||
|
* @return array|string|null
|
||||||
|
*/
|
||||||
|
|
||||||
public static function getFormattedDateObject($date, $type = 'datetime', $array = true)
|
public static function getFormattedDateObject($date, $type = 'datetime', $array = true)
|
||||||
{
|
{
|
||||||
if ($date == '') {
|
if ($date == '') {
|
||||||
@@ -849,21 +858,42 @@ class Helper
|
|||||||
}
|
}
|
||||||
|
|
||||||
$settings = Setting::getSettings();
|
$settings = Setting::getSettings();
|
||||||
$tmp_date = new \Carbon($date);
|
|
||||||
|
|
||||||
if ($type == 'datetime') {
|
/**
|
||||||
$dt['datetime'] = $tmp_date->format('Y-m-d H:i:s');
|
* Wrap this in a try/catch so that if Carbon crashes, for example if the $date value
|
||||||
$dt['formatted'] = $tmp_date->format($settings->date_display_format.' '.$settings->time_display_format);
|
* isn't actually valid, we don't crash out completely.
|
||||||
} else {
|
*
|
||||||
$dt['date'] = $tmp_date->format('Y-m-d');
|
* While this *shouldn't* typically happen since we validate dates before entering them
|
||||||
$dt['formatted'] = $tmp_date->format($settings->date_display_format);
|
* into the database (and we use date/datetime fields for native fields in the system),
|
||||||
|
* it is a possible scenario that a custom field could be created as an "ANY" field, data gets
|
||||||
|
* added, and then the custom field format gets edited later. If someone put bad data in the
|
||||||
|
* database before then - or if they manually edited the field's value - it will crash.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
try {
|
||||||
|
$tmp_date = new \Carbon($date);
|
||||||
|
|
||||||
|
if ($type == 'datetime') {
|
||||||
|
$dt['datetime'] = $tmp_date->format('Y-m-d H:i:s');
|
||||||
|
$dt['formatted'] = $tmp_date->format($settings->date_display_format.' '.$settings->time_display_format);
|
||||||
|
} else {
|
||||||
|
$dt['date'] = $tmp_date->format('Y-m-d');
|
||||||
|
$dt['formatted'] = $tmp_date->format($settings->date_display_format);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($array == 'true') {
|
||||||
|
return $dt;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $dt['formatted'];
|
||||||
|
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
\Log::warning($e);
|
||||||
|
return $date.' (Invalid '.$type.' value.)';
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($array == 'true') {
|
|
||||||
return $dt;
|
|
||||||
}
|
|
||||||
|
|
||||||
return $dt['formatted'];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Nicked from Drupal :)
|
// Nicked from Drupal :)
|
||||||
@@ -1089,4 +1119,10 @@ class Helper
|
|||||||
|
|
||||||
return $bytes;
|
return $bytes;
|
||||||
}
|
}
|
||||||
|
public static function SettingUrls(){
|
||||||
|
$settings=['#','fields.index', 'statuslabels.index', 'models.index', 'categories.index', 'manufacturers.index', 'suppliers.index', 'departments.index', 'locations.index', 'companies.index', 'depreciations.index'];
|
||||||
|
|
||||||
|
return $settings;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ use App\Models\Accessory;
|
|||||||
use App\Models\Company;
|
use App\Models\Company;
|
||||||
use Illuminate\Support\Facades\Auth;
|
use Illuminate\Support\Facades\Auth;
|
||||||
use Illuminate\Support\Facades\Storage;
|
use Illuminate\Support\Facades\Storage;
|
||||||
|
use Illuminate\Support\Facades\Validator;
|
||||||
use Redirect;
|
use Redirect;
|
||||||
|
|
||||||
/** This controller handles all actions related to Accessories for
|
/** This controller handles all actions related to Accessories for
|
||||||
@@ -130,6 +131,17 @@ class AccessoriesController extends Controller
|
|||||||
return redirect()->route('accessories.index')->with('error', trans('admin/accessories/message.does_not_exist'));
|
return redirect()->route('accessories.index')->with('error', trans('admin/accessories/message.does_not_exist'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$min = $accessory->numCheckedOut();
|
||||||
|
$validator = Validator::make($request->all(), [
|
||||||
|
"qty" => "required|numeric|min:$min"
|
||||||
|
]);
|
||||||
|
|
||||||
|
if ($validator->fails()) {
|
||||||
|
return redirect()->back()
|
||||||
|
->withErrors($validator)
|
||||||
|
->withInput();
|
||||||
|
}
|
||||||
|
|
||||||
$this->authorize($accessory);
|
$this->authorize($accessory);
|
||||||
|
|
||||||
// Update the accessory data
|
// Update the accessory data
|
||||||
|
|||||||
@@ -106,87 +106,92 @@ class AcceptanceController extends Controller
|
|||||||
Storage::makeDirectory('private_uploads/signatures', 775);
|
Storage::makeDirectory('private_uploads/signatures', 775);
|
||||||
}
|
}
|
||||||
|
|
||||||
$sig_filename = '';
|
/**
|
||||||
if ($request->filled('signature_output')) {
|
* Check for the eula-pdfs directory
|
||||||
$sig_filename = 'siglog-'.Str::uuid().'-'.date('Y-m-d-his').'.png';
|
*/
|
||||||
$data_uri = e($request->input('signature_output'));
|
if (! Storage::exists('private_uploads/eula-pdfs')) {
|
||||||
$encoded_image = explode(',', $data_uri);
|
Storage::makeDirectory('private_uploads/eula-pdfs', 775);
|
||||||
$decoded_image = base64_decode($encoded_image[1]);
|
|
||||||
$acceptance->stored_eula_file = 'accepted-eula-'.date('Y-m-d-h-i-s').'.pdf';
|
|
||||||
$path = Storage::put('private_uploads/signatures/'.$sig_filename, (string) $decoded_image);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($request->input('asset_acceptance') == 'accepted') {
|
|
||||||
$acceptance->accept($sig_filename);
|
|
||||||
|
|
||||||
event(new CheckoutAccepted($acceptance));
|
|
||||||
|
|
||||||
$return_msg = trans('admin/users/message.accepted');
|
|
||||||
|
|
||||||
|
|
||||||
} else {
|
|
||||||
$acceptance->decline($sig_filename);
|
|
||||||
|
|
||||||
event(new CheckoutDeclined($acceptance));
|
|
||||||
|
|
||||||
$return_msg = trans('admin/users/message.declined');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$item = $acceptance->checkoutable_type::find($acceptance->checkoutable_id);
|
$item = $acceptance->checkoutable_type::find($acceptance->checkoutable_id);
|
||||||
|
$display_model = '';
|
||||||
|
$pdf_view_route = '';
|
||||||
|
$pdf_filename = 'accepted-eula-'.date('Y-m-d-h-i-s').'.pdf';
|
||||||
|
$sig_filename='';
|
||||||
|
|
||||||
if ($acceptance->checkoutable_type== 'App\Models\Asset') {
|
|
||||||
$assigned_to = User::find($item->assigned_to);
|
if ($request->input('asset_acceptance') == 'accepted') {
|
||||||
$asset_model = AssetModel::find($item->model_id);
|
|
||||||
|
// The item was accepted, check for a signature
|
||||||
|
if ($request->filled('signature_output')) {
|
||||||
|
$sig_filename = 'siglog-'.Str::uuid().'-'.date('Y-m-d-his').'.png';
|
||||||
|
$data_uri = $request->input('signature_output');
|
||||||
|
$encoded_image = explode(',', $data_uri);
|
||||||
|
$decoded_image = base64_decode($encoded_image[1]);
|
||||||
|
Storage::put('private_uploads/signatures/'.$sig_filename, (string) $decoded_image);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// this is horrible
|
||||||
|
if ($acceptance->checkoutable_type == 'App\Models\Asset') {
|
||||||
|
$pdf_view_route ='account.accept.accept-asset-eula';
|
||||||
|
$asset_model = AssetModel::find($item->model_id);
|
||||||
|
$display_model = $asset_model->name;
|
||||||
|
$assigned_to = User::find($item->assigned_to)->present()->fullName;
|
||||||
|
|
||||||
|
} elseif ($acceptance->checkoutable_type== 'App\Models\Accessory') {
|
||||||
|
$pdf_view_route ='account.accept.accept-accessory-eula';
|
||||||
|
$accessory = Accessory::find($item->id);
|
||||||
|
$display_model = $accessory->name;
|
||||||
|
$assigned_to = User::find($item->assignedTo);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gather the data for the PDF. We fire this whether there is a signature required or not,
|
||||||
|
* since we want the moment-in-time proof of what the EULA was when they accepted it.
|
||||||
|
*/
|
||||||
$branding_settings = SettingsController::getPDFBranding();
|
$branding_settings = SettingsController::getPDFBranding();
|
||||||
|
|
||||||
|
if (is_null($branding_settings->logo)){
|
||||||
|
$path_logo = "";
|
||||||
|
} else {
|
||||||
|
$path_logo = public_path() . '/uploads/' . $branding_settings->logo;
|
||||||
|
}
|
||||||
|
|
||||||
$data = [
|
$data = [
|
||||||
'item_tag' => $item->asset_tag,
|
'item_tag' => $item->asset_tag,
|
||||||
'item_model' => $asset_model->name,
|
'item_model' => $display_model,
|
||||||
'item_serial' => $item->serial,
|
'item_serial' => $item->serial,
|
||||||
'eula' => $item->getEula(),
|
'eula' => $item->getEula(),
|
||||||
'check_out_date' => Carbon::parse($acceptance->created_at)->format($branding_settings->date_display_format),
|
'check_out_date' => Carbon::parse($acceptance->created_at)->format($branding_settings->date_display_format),
|
||||||
'accepted_date' => Carbon::parse($acceptance->accepted_at)->format($branding_settings->date_display_format),
|
'accepted_date' => Carbon::parse($acceptance->accepted_at)->format($branding_settings->date_display_format),
|
||||||
'assigned_to' => $assigned_to->first_name . ' ' . $assigned_to->last_name,
|
'assigned_to' => $assigned_to,
|
||||||
'company_name' => $branding_settings->site_name,
|
'company_name' => $branding_settings->site_name,
|
||||||
'signature' => storage_path() . '/private_uploads/signatures/' . $sig_filename,
|
'signature' => ($sig_filename) ? storage_path() . '/private_uploads/signatures/' . $sig_filename : null,
|
||||||
'logo' => public_path() . '/uploads/' . $branding_settings->logo,
|
'logo' => $path_logo,
|
||||||
'date_settings' => $branding_settings->date_display_format,
|
'date_settings' => $branding_settings->date_display_format,
|
||||||
];
|
];
|
||||||
$pdf = Pdf::loadView('account.accept.accept-asset-eula', $data);
|
|
||||||
Storage::put('private_uploads/eula-pdfs/' . $acceptance->stored_eula_file, $pdf->output());
|
|
||||||
|
|
||||||
$a = new Actionlog();
|
if ($pdf_view_route!='') {
|
||||||
$a->stored_eula = $item->getEula();
|
\Log::debug($pdf_filename.' is the filename, and the route was specified.');
|
||||||
$a->stored_eula_file = $acceptance->stored_eula_file;
|
$pdf = Pdf::loadView($pdf_view_route, $data);
|
||||||
$a->save();
|
Storage::put('private_uploads/eula-pdfs/' .$pdf_filename, $pdf->output());
|
||||||
|
}
|
||||||
|
|
||||||
return redirect()->to('account/accept')->with('success', $return_msg);
|
$acceptance->accept($sig_filename, $item->getEula(), $pdf_filename);
|
||||||
|
event(new CheckoutAccepted($acceptance));
|
||||||
|
|
||||||
|
$return_msg = trans('admin/users/message.accepted');
|
||||||
|
|
||||||
|
} else {
|
||||||
|
$acceptance->decline($sig_filename);
|
||||||
|
event(new CheckoutDeclined($acceptance));
|
||||||
|
$return_msg = trans('admin/users/message.declined');
|
||||||
}
|
}
|
||||||
//
|
|
||||||
$accessory_user= DB::table('checkout_acceptances')->find($acceptance->assigned_to_id);
|
|
||||||
$assigned_to = User::find($accessory_user->assigned_to_id);
|
|
||||||
$accessory_model = Accessory::find($item->id);
|
|
||||||
$branding_settings = SettingsController::getPDFBranding();
|
|
||||||
$data = [
|
|
||||||
'item_tag' => $item->model_number,
|
|
||||||
'item_model' => $accessory_model->name,
|
|
||||||
'eula' => $item->getEula(),
|
|
||||||
'check_out_date' => Carbon::parse($acceptance->created_at)->format($branding_settings->date_display_format),
|
|
||||||
'accepted_date' => Carbon::parse($acceptance->accepted_at)->format($branding_settings->date_display_format),
|
|
||||||
// 'assigned_by' => self
|
|
||||||
'assigned_to' => $assigned_to->first_name . ' ' . $assigned_to->last_name,
|
|
||||||
'company_name' => $branding_settings->site_name,
|
|
||||||
'signature' => storage_path() . '/private_uploads/signatures/' . $sig_filename,
|
|
||||||
'logo' => public_path() . '/uploads/' . $branding_settings->logo,
|
|
||||||
'date_settings' => $branding_settings->date_display_format,
|
|
||||||
];
|
|
||||||
$pdf = Pdf::loadView('account.accept.accept-accessory-eula', $data);
|
|
||||||
Storage::put('private_uploads/eula-pdfs/' . $acceptance->stored_eula_file, $pdf->output());
|
|
||||||
|
|
||||||
$a = new Actionlog();
|
|
||||||
$a->stored_eula = $item->getEula();
|
|
||||||
$a->stored_eula_file = $acceptance->stored_eula_file;
|
|
||||||
$a->save();
|
|
||||||
|
|
||||||
return redirect()->to('account/accept')->with('success', $return_msg);
|
return redirect()->to('account/accept')->with('success', $return_msg);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -27,8 +27,7 @@ class AccessoriesController extends Controller
|
|||||||
public function index(Request $request)
|
public function index(Request $request)
|
||||||
{
|
{
|
||||||
$this->authorize('view', Accessory::class);
|
$this->authorize('view', Accessory::class);
|
||||||
$allowed_columns = ['id', 'name', 'model_number', 'eol', 'notes', 'created_at', 'min_amt', 'company_id'];
|
|
||||||
|
|
||||||
// This array is what determines which fields should be allowed to be sorted on ON the table itself, no relations
|
// This array is what determines which fields should be allowed to be sorted on ON the table itself, no relations
|
||||||
// Relations will be handled in query scopes a little further down.
|
// Relations will be handled in query scopes a little further down.
|
||||||
$allowed_columns =
|
$allowed_columns =
|
||||||
|
|||||||
@@ -35,7 +35,8 @@ class AssetMaintenancesController extends Controller
|
|||||||
public function index(Request $request)
|
public function index(Request $request)
|
||||||
{
|
{
|
||||||
$this->authorize('view', Asset::class);
|
$this->authorize('view', Asset::class);
|
||||||
$maintenances = AssetMaintenance::with('asset', 'asset.model', 'asset.location', 'supplier', 'asset.company', 'admin');
|
|
||||||
|
$maintenances = AssetMaintenance::select('asset_maintenances.*')->with('asset', 'asset.model', 'asset.location', 'supplier', 'asset.company', 'admin');
|
||||||
|
|
||||||
if ($request->filled('search')) {
|
if ($request->filled('search')) {
|
||||||
$maintenances = $maintenances->TextSearch($request->input('search'));
|
$maintenances = $maintenances->TextSearch($request->input('search'));
|
||||||
@@ -45,6 +46,15 @@ class AssetMaintenancesController extends Controller
|
|||||||
$maintenances->where('asset_id', '=', $request->input('asset_id'));
|
$maintenances->where('asset_id', '=', $request->input('asset_id'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($request->filled('supplier_id')) {
|
||||||
|
$maintenances->where('supplier_id', '=', $request->input('supplier_id'));
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($request->filled('asset_maintenance_type')) {
|
||||||
|
$maintenances->where('asset_maintenance_type', '=', $request->input('asset_maintenance_type'));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Set the offset to the API call's offset, unless the offset is higher than the actual count of items in which
|
// Set the offset to the API call's offset, unless the offset is higher than the actual count of items in which
|
||||||
// case we override with the actual count, so we should return 0 items.
|
// case we override with the actual count, so we should return 0 items.
|
||||||
$offset = (($maintenances) && ($request->get('offset') > $maintenances->count())) ? $maintenances->count() : $request->get('offset', 0);
|
$offset = (($maintenances) && ($request->get('offset') > $maintenances->count())) ? $maintenances->count() : $request->get('offset', 0);
|
||||||
@@ -64,6 +74,7 @@ class AssetMaintenancesController extends Controller
|
|||||||
'asset_tag',
|
'asset_tag',
|
||||||
'asset_name',
|
'asset_name',
|
||||||
'user_id',
|
'user_id',
|
||||||
|
'supplier'
|
||||||
];
|
];
|
||||||
$order = $request->input('order') === 'asc' ? 'asc' : 'desc';
|
$order = $request->input('order') === 'asc' ? 'asc' : 'desc';
|
||||||
$sort = in_array($request->input('sort'), $allowed_columns) ? e($request->input('sort')) : 'created_at';
|
$sort = in_array($request->input('sort'), $allowed_columns) ? e($request->input('sort')) : 'created_at';
|
||||||
@@ -72,6 +83,9 @@ class AssetMaintenancesController extends Controller
|
|||||||
case 'user_id':
|
case 'user_id':
|
||||||
$maintenances = $maintenances->OrderAdmin($order);
|
$maintenances = $maintenances->OrderAdmin($order);
|
||||||
break;
|
break;
|
||||||
|
case 'supplier':
|
||||||
|
$maintenances = $maintenances->OrderBySupplier($order);
|
||||||
|
break;
|
||||||
case 'asset_tag':
|
case 'asset_tag':
|
||||||
$maintenances = $maintenances->OrderByTag($order);
|
$maintenances = $maintenances->OrderByTag($order);
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -70,6 +70,10 @@ class AssetModelsController extends Controller
|
|||||||
$assetmodels->onlyTrashed();
|
$assetmodels->onlyTrashed();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($request->filled('category_id')) {
|
||||||
|
$assetmodels = $assetmodels->where('models.category_id', '=', $request->input('category_id'));
|
||||||
|
}
|
||||||
|
|
||||||
if ($request->filled('search')) {
|
if ($request->filled('search')) {
|
||||||
$assetmodels->TextSearch($request->input('search'));
|
$assetmodels->TextSearch($request->input('search'));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -714,23 +714,32 @@ class AssetsController extends Controller
|
|||||||
* @since [v5.1.18]
|
* @since [v5.1.18]
|
||||||
* @return JsonResponse
|
* @return JsonResponse
|
||||||
*/
|
*/
|
||||||
public function restore($assetId = null)
|
public function restore(Request $request, $assetId = null)
|
||||||
{
|
{
|
||||||
// Get asset information
|
// Get asset information
|
||||||
$asset = Asset::withTrashed()->find($assetId);
|
$asset = Asset::withTrashed()->find($assetId);
|
||||||
$this->authorize('delete', $asset);
|
$this->authorize('delete', $asset);
|
||||||
|
|
||||||
if (isset($asset->id)) {
|
if (isset($asset->id)) {
|
||||||
// Restore the asset
|
|
||||||
Asset::withTrashed()->where('id', $assetId)->restore();
|
|
||||||
|
|
||||||
$logaction = new Actionlog();
|
if ($asset->deleted_at=='') {
|
||||||
$logaction->item_type = Asset::class;
|
$message = 'Asset was not deleted. No data was changed.';
|
||||||
$logaction->item_id = $asset->id;
|
|
||||||
$logaction->created_at = date("Y-m-d H:i:s");
|
|
||||||
$logaction->user_id = Auth::user()->id;
|
|
||||||
$logaction->logaction('restored');
|
|
||||||
|
|
||||||
return response()->json(Helper::formatStandardApiResponse('success', null, trans('admin/hardware/message.restore.success')));
|
} else {
|
||||||
|
|
||||||
|
$message = trans('admin/hardware/message.restore.success');
|
||||||
|
// Restore the asset
|
||||||
|
Asset::withTrashed()->where('id', $assetId)->restore();
|
||||||
|
|
||||||
|
$logaction = new Actionlog();
|
||||||
|
$logaction->item_type = Asset::class;
|
||||||
|
$logaction->item_id = $asset->id;
|
||||||
|
$logaction->created_at = date("Y-m-d H:i:s");
|
||||||
|
$logaction->user_id = Auth::user()->id;
|
||||||
|
$logaction->logaction('restored');
|
||||||
|
}
|
||||||
|
|
||||||
|
return response()->json(Helper::formatStandardApiResponse('success', (new AssetsTransformer)->transformAsset($asset, $request), $message));
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -849,7 +858,7 @@ class AssetsController extends Controller
|
|||||||
$asset->assignedTo()->disassociate($asset);
|
$asset->assignedTo()->disassociate($asset);
|
||||||
$asset->accepted = null;
|
$asset->accepted = null;
|
||||||
|
|
||||||
if ($request->filled('name')) {
|
if ($request->has('name')) {
|
||||||
$asset->name = $request->input('name');
|
$asset->name = $request->input('name');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -134,7 +134,14 @@ class ImportController extends Controller
|
|||||||
\Log::debug('NO BACKUP requested via importer');
|
\Log::debug('NO BACKUP requested via importer');
|
||||||
}
|
}
|
||||||
|
|
||||||
$errors = $request->import(Import::find($import_id));
|
$import = Import::find($import_id);
|
||||||
|
|
||||||
|
if(is_null($import)){
|
||||||
|
$error[0][0] = trans("validation.exists", ["attribute" => "file"]);
|
||||||
|
return response()->json(Helper::formatStandardApiResponse('import-errors', null, $error), 500);
|
||||||
|
}
|
||||||
|
|
||||||
|
$errors = $request->import($import);
|
||||||
$redirectTo = 'hardware.index';
|
$redirectTo = 'hardware.index';
|
||||||
switch ($request->get('import-type')) {
|
switch ($request->get('import-type')) {
|
||||||
case 'asset':
|
case 'asset':
|
||||||
|
|||||||
@@ -116,16 +116,20 @@ class LicenseSeatsController extends Controller
|
|||||||
return response()->json(Helper::formatStandardApiResponse('success', $licenseSeat, trans('admin/licenses/message.update.success')));
|
return response()->json(Helper::formatStandardApiResponse('success', $licenseSeat, trans('admin/licenses/message.update.success')));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// the logging functions expect only one "target". if both asset and user are present in the request,
|
||||||
|
// we simply let assets take precedence over users...
|
||||||
|
if ($licenseSeat->isDirty('assigned_to')) {
|
||||||
|
$target = $is_checkin ? $oldUser : User::find($licenseSeat->assigned_to);
|
||||||
|
}
|
||||||
|
if ($licenseSeat->isDirty('asset_id')) {
|
||||||
|
$target = $is_checkin ? $oldAsset : Asset::find($licenseSeat->asset_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (is_null($target)){
|
||||||
|
return response()->json(Helper::formatStandardApiResponse('error', null, 'Target not found'));
|
||||||
|
}
|
||||||
|
|
||||||
if ($licenseSeat->save()) {
|
if ($licenseSeat->save()) {
|
||||||
// the logging functions expect only one "target". if both asset and user are present in the request,
|
|
||||||
// we simply let assets take precedence over users...
|
|
||||||
$changes = $licenseSeat->getChanges();
|
|
||||||
if (array_key_exists('assigned_to', $changes)) {
|
|
||||||
$target = $is_checkin ? $oldUser : User::find($changes['assigned_to']);
|
|
||||||
}
|
|
||||||
if (array_key_exists('asset_id', $changes)) {
|
|
||||||
$target = $is_checkin ? $oldAsset : Asset::find($changes['asset_id']);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($is_checkin) {
|
if ($is_checkin) {
|
||||||
$licenseSeat->logCheckin($target, $request->input('note'));
|
$licenseSeat->logCheckin($target, $request->input('note'));
|
||||||
|
|||||||
@@ -52,7 +52,6 @@ class ReportsController extends Controller
|
|||||||
'accept_signature',
|
'accept_signature',
|
||||||
'action_type',
|
'action_type',
|
||||||
'note',
|
'note',
|
||||||
'stored_eula_file',
|
|
||||||
];
|
];
|
||||||
|
|
||||||
$sort = in_array($request->input('sort'), $allowed_columns) ? e($request->input('sort')) : 'created_at';
|
$sort = in_array($request->input('sort'), $allowed_columns) ? e($request->input('sort')) : 'created_at';
|
||||||
|
|||||||
@@ -519,10 +519,14 @@ class UsersController extends Controller
|
|||||||
{
|
{
|
||||||
$this->authorize('view', User::class);
|
$this->authorize('view', User::class);
|
||||||
$this->authorize('view', License::class);
|
$this->authorize('view', License::class);
|
||||||
$user = User::where('id', $id)->withTrashed()->first();
|
|
||||||
$licenses = $user->licenses()->get();
|
if ($user = User::where('id', $id)->withTrashed()->first()) {
|
||||||
|
$licenses = $user->licenses()->get();
|
||||||
|
return (new LicensesTransformer())->transformLicenses($licenses, $licenses->count());
|
||||||
|
}
|
||||||
|
|
||||||
|
return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/users/message.user_not_found', compact('id'))));
|
||||||
|
|
||||||
return (new LicensesTransformer())->transformLicenses($licenses, $licenses->count());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -98,9 +98,6 @@ class AssetCheckinController extends Controller
|
|||||||
}
|
}
|
||||||
|
|
||||||
$asset->location_id = $asset->rtd_location_id;
|
$asset->location_id = $asset->rtd_location_id;
|
||||||
\Log::debug('After Location ID: '.$asset->location_id);
|
|
||||||
\Log::debug('After RTD Location ID: '.$asset->rtd_location_id);
|
|
||||||
|
|
||||||
|
|
||||||
if ($request->filled('location_id')) {
|
if ($request->filled('location_id')) {
|
||||||
\Log::debug('NEW Location ID: '.$request->get('location_id'));
|
\Log::debug('NEW Location ID: '.$request->get('location_id'));
|
||||||
|
|||||||
@@ -104,15 +104,12 @@ class LoginController extends Controller
|
|||||||
*/
|
*/
|
||||||
private function loginViaSaml(Request $request)
|
private function loginViaSaml(Request $request)
|
||||||
{
|
{
|
||||||
\Log::debug('Attempting to login via SAML');
|
|
||||||
$saml = $this->saml;
|
$saml = $this->saml;
|
||||||
$samlData = $request->session()->get('saml_login');
|
$samlData = $request->session()->get('saml_login');
|
||||||
|
|
||||||
if ($saml->isEnabled() && ! empty($samlData)) {
|
if ($saml->isEnabled() && ! empty($samlData)) {
|
||||||
\Log::debug('SAML is enabled, and the samleData is not empty');
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Log::debug('Attempting to log user in by SAML authentication.');
|
|
||||||
$user = $saml->samlLogin($samlData);
|
$user = $saml->samlLogin($samlData);
|
||||||
|
|
||||||
if (!is_null($user)) {
|
if (!is_null($user)) {
|
||||||
@@ -139,13 +136,12 @@ class LoginController extends Controller
|
|||||||
|
|
||||||
// Better logging
|
// Better logging
|
||||||
if (!$saml->isEnabled()) {
|
if (!$saml->isEnabled()) {
|
||||||
\Log::warning("SAML page requested, but SAML does not seem to enabled.");
|
\Log::debug("SAML page requested, but SAML does not seem to enabled.");
|
||||||
} else {
|
} else {
|
||||||
\Log::warning("SAML page requested, but samlData seems empty.");
|
\Log::warning("SAML page requested, but samlData seems empty.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
\Log::warning("Something else went wrong while trying to login as SAML user");
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,13 +3,11 @@
|
|||||||
namespace App\Http\Controllers\Auth;
|
namespace App\Http\Controllers\Auth;
|
||||||
|
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use App\Http\Requests\SaveUserRequest;
|
|
||||||
use App\Models\Setting;
|
use App\Models\Setting;
|
||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
use Illuminate\Foundation\Auth\ResetsPasswords;
|
use Illuminate\Foundation\Auth\ResetsPasswords;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Validation\Rule;
|
|
||||||
use Illuminate\Validation\Validator;
|
|
||||||
|
|
||||||
class ResetPasswordController extends Controller
|
class ResetPasswordController extends Controller
|
||||||
{
|
{
|
||||||
@@ -63,6 +61,14 @@ class ResetPasswordController extends Controller
|
|||||||
|
|
||||||
public function showResetForm(Request $request, $token = null)
|
public function showResetForm(Request $request, $token = null)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
$credentials = $request->only('email', 'token');
|
||||||
|
|
||||||
|
if (is_null($this->broker()->getUser($credentials))) {
|
||||||
|
\Log::debug('Password reset form FAILED - this token is not valid.');
|
||||||
|
return redirect()->route('password.request')->with('error', trans('passwords.token'));
|
||||||
|
}
|
||||||
|
|
||||||
return view('auth.passwords.reset')->with(
|
return view('auth.passwords.reset')->with(
|
||||||
[
|
[
|
||||||
'token' => $token,
|
'token' => $token,
|
||||||
@@ -73,38 +79,53 @@ class ResetPasswordController extends Controller
|
|||||||
|
|
||||||
public function reset(Request $request)
|
public function reset(Request $request)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
$broker = $this->broker();
|
||||||
|
|
||||||
$messages = [
|
$messages = [
|
||||||
'password.not_in' => trans('validation.disallow_same_pwd_as_user_fields'),
|
'password.not_in' => trans('validation.disallow_same_pwd_as_user_fields'),
|
||||||
];
|
];
|
||||||
|
|
||||||
$request->validate($this->rules(), $request->all(), $this->validationErrorMessages());
|
$request->validate($this->rules(), $request->all(), $this->validationErrorMessages());
|
||||||
|
|
||||||
// Check to see if the user even exists
|
\Log::debug('Checking if '.$request->input('username').' exists');
|
||||||
$user = User::where('username', '=', $request->input('username'))->first();
|
// Check to see if the user even exists - we'll treat the response the same to prevent user sniffing
|
||||||
|
if ($user = User::where('username', '=', $request->input('username'))->where('activated', '1')->whereNotNull('email')->first()) {
|
||||||
|
\Log::debug($user->username.' exists');
|
||||||
|
|
||||||
|
|
||||||
|
// handle the password validation rules set by the admin settings
|
||||||
|
if (strpos(Setting::passwordComplexityRulesSaving('store'), 'disallow_same_pwd_as_user_fields') !== false) {
|
||||||
|
$request->validate(
|
||||||
|
[
|
||||||
|
'password' => 'required|notIn:["'.$user->email.'","'.$user->username.'","'.$user->first_name.'","'.$user->last_name.'"',
|
||||||
|
], $messages);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// set the response
|
||||||
|
$response = $broker->reset(
|
||||||
|
$this->credentials($request), function ($user, $password) {
|
||||||
|
$this->resetPassword($user, $password);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Check if the password reset above actually worked
|
||||||
|
if ($response == \Password::PASSWORD_RESET) {
|
||||||
|
\Log::debug('Password reset for '.$user->username.' worked');
|
||||||
|
return redirect()->guest('login')->with('success', trans('passwords.reset'));
|
||||||
|
}
|
||||||
|
|
||||||
|
\Log::debug('Password reset for '.$user->username.' FAILED - this user exists but the token is not valid');
|
||||||
|
return redirect()->back()->withInput($request->only('email'))->with('error', trans('passwords.token'));
|
||||||
|
|
||||||
$broker = $this->broker();
|
|
||||||
if (strpos(Setting::passwordComplexityRulesSaving('store'), 'disallow_same_pwd_as_user_fields') !== false) {
|
|
||||||
$request->validate(
|
|
||||||
[
|
|
||||||
'password' => 'required|notIn:["'.$user->email.'","'.$user->username.'","'.$user->first_name.'","'.$user->last_name.'"',
|
|
||||||
], $messages);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$response = $broker->reset(
|
|
||||||
$this->credentials($request), function ($user, $password) {
|
|
||||||
$this->resetPassword($user, $password);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
return $response == \Password::PASSWORD_RESET
|
\Log::debug('Password reset for '.$request->input('username').' FAILED - user does not exist or does not have an email address - but make it look like it succeeded');
|
||||||
? $this->sendResetResponse($request, $response)
|
return redirect()->guest('login')->with('success', trans('passwords.reset'));
|
||||||
: $this->sendResetFailedResponse($request, $response);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function sendResetFailedResponse(Request $request, $response)
|
|
||||||
{
|
|
||||||
return redirect()->back()
|
|
||||||
->withInput(['username'=> $request->input('username')])
|
|
||||||
->withErrors(['username' => trans($response), 'password' => trans($response)]);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -129,7 +129,7 @@ class ComponentsController extends Controller
|
|||||||
if (is_null($component = Component::find($componentId))) {
|
if (is_null($component = Component::find($componentId))) {
|
||||||
return redirect()->route('components.index')->with('error', trans('admin/components/message.does_not_exist'));
|
return redirect()->route('components.index')->with('error', trans('admin/components/message.does_not_exist'));
|
||||||
}
|
}
|
||||||
$min = $component->numCHeckedOut();
|
$min = $component->numCheckedOut();
|
||||||
$validator = Validator::make($request->all(), [
|
$validator = Validator::make($request->all(), [
|
||||||
'qty' => "required|numeric|min:$min",
|
'qty' => "required|numeric|min:$min",
|
||||||
]);
|
]);
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ use App\Models\Company;
|
|||||||
use App\Models\Consumable;
|
use App\Models\Consumable;
|
||||||
use Illuminate\Support\Facades\Auth;
|
use Illuminate\Support\Facades\Auth;
|
||||||
use Illuminate\Support\Facades\Input;
|
use Illuminate\Support\Facades\Input;
|
||||||
|
use Illuminate\Support\Facades\Validator;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This controller handles all actions related to Consumables for
|
* This controller handles all actions related to Consumables for
|
||||||
@@ -128,6 +129,17 @@ class ConsumablesController extends Controller
|
|||||||
return redirect()->route('consumables.index')->with('error', trans('admin/consumables/message.does_not_exist'));
|
return redirect()->route('consumables.index')->with('error', trans('admin/consumables/message.does_not_exist'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$min = $consumable->numCheckedOut();
|
||||||
|
$validator = Validator::make($request->all(), [
|
||||||
|
"qty" => "required|numeric|min:$min"
|
||||||
|
]);
|
||||||
|
|
||||||
|
if ($validator->fails()) {
|
||||||
|
return redirect()->back()
|
||||||
|
->withErrors($validator)
|
||||||
|
->withInput();
|
||||||
|
}
|
||||||
|
|
||||||
$this->authorize($consumable);
|
$this->authorize($consumable);
|
||||||
|
|
||||||
$consumable->name = $request->input('name');
|
$consumable->name = $request->input('name');
|
||||||
|
|||||||
@@ -211,23 +211,35 @@ class LocationsController extends Controller
|
|||||||
|
|
||||||
public function print_assigned($id)
|
public function print_assigned($id)
|
||||||
{
|
{
|
||||||
$location = Location::where('id', $id)->first();
|
|
||||||
$parent = Location::where('id', $location->parent_id)->first();
|
|
||||||
$manager = User::where('id', $location->manager_id)->first();
|
|
||||||
$users = User::where('location_id', $id)->with('company', 'department', 'location')->get();
|
|
||||||
$assets = Asset::where('assigned_to', $id)->where('assigned_type', Location::class)->with('model', 'model.category')->get();
|
|
||||||
|
|
||||||
return view('locations/print')->with('assets', $assets)->with('users', $users)->with('location', $location)->with('parent', $parent)->with('manager', $manager);
|
if ($location = Location::where('id', $id)->first()) {
|
||||||
|
$parent = Location::where('id', $location->parent_id)->first();
|
||||||
|
$manager = User::where('id', $location->manager_id)->first();
|
||||||
|
$users = User::where('location_id', $id)->with('company', 'department', 'location')->get();
|
||||||
|
$assets = Asset::where('assigned_to', $id)->where('assigned_type', Location::class)->with('model', 'model.category')->get();
|
||||||
|
return view('locations/print')->with('assets', $assets)->with('users', $users)->with('location', $location)->with('parent', $parent)->with('manager', $manager);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return redirect()->route('locations.index')->with('error', trans('admin/locations/message.does_not_exist'));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function print_all_assigned($id)
|
public function print_all_assigned($id)
|
||||||
{
|
{
|
||||||
$location = Location::where('id', $id)->first();
|
if ($location = Location::where('id', $id)->first()) {
|
||||||
$parent = Location::where('id', $location->parent_id)->first();
|
$parent = Location::where('id', $location->parent_id)->first();
|
||||||
$manager = User::where('id', $location->manager_id)->first();
|
$manager = User::where('id', $location->manager_id)->first();
|
||||||
$users = User::where('location_id', $id)->with('company', 'department', 'location')->get();
|
$users = User::where('location_id', $id)->with('company', 'department', 'location')->get();
|
||||||
$assets = Asset::where('location_id', $id)->with('model', 'model.category')->get();
|
$assets = Asset::where('location_id', $id)->with('model', 'model.category')->get();
|
||||||
|
return view('locations/print')->with('assets', $assets)->with('users', $users)->with('location', $location)->with('parent', $parent)->with('manager', $manager);
|
||||||
|
|
||||||
|
}
|
||||||
|
return redirect()->route('locations.index')->with('error', trans('admin/locations/message.does_not_exist'));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return view('locations/print')->with('assets', $assets)->with('users', $users)->with('location', $location)->with('parent', $parent)->with('manager', $manager);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -939,9 +939,9 @@ class ReportsController extends Controller
|
|||||||
* Get all assets with pending checkout acceptances
|
* Get all assets with pending checkout acceptances
|
||||||
*/
|
*/
|
||||||
if($showDeleted) {
|
if($showDeleted) {
|
||||||
$acceptances = CheckoutAcceptance::pending()->withTrashed()->with(['assignedTo' , 'checkoutable.assignedTo', 'checkoutable.model'])->get();
|
$acceptances = CheckoutAcceptance::pending()->where('checkoutable_type', 'App\Models\Asset')->withTrashed()->with(['assignedTo' , 'checkoutable.assignedTo', 'checkoutable.model'])->get();
|
||||||
} else {
|
} else {
|
||||||
$acceptances = CheckoutAcceptance::pending()->with(['assignedTo' => function ($query) {
|
$acceptances = CheckoutAcceptance::pending()->where('checkoutable_type', 'App\Models\Asset')->with(['assignedTo' => function ($query) {
|
||||||
$query->withTrashed();
|
$query->withTrashed();
|
||||||
}, 'checkoutable.assignedTo', 'checkoutable.model'])->get();
|
}, 'checkoutable.assignedTo', 'checkoutable.model'])->get();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -942,7 +942,7 @@ class SettingsController extends Controller
|
|||||||
$setting->ldap_lname_field = $request->input('ldap_lname_field');
|
$setting->ldap_lname_field = $request->input('ldap_lname_field');
|
||||||
$setting->ldap_fname_field = $request->input('ldap_fname_field');
|
$setting->ldap_fname_field = $request->input('ldap_fname_field');
|
||||||
$setting->ldap_auth_filter_query = $request->input('ldap_auth_filter_query');
|
$setting->ldap_auth_filter_query = $request->input('ldap_auth_filter_query');
|
||||||
$setting->ldap_version = $request->input('ldap_version');
|
$setting->ldap_version = $request->input('ldap_version', 3);
|
||||||
$setting->ldap_active_flag = $request->input('ldap_active_flag');
|
$setting->ldap_active_flag = $request->input('ldap_active_flag');
|
||||||
$setting->ldap_emp_num = $request->input('ldap_emp_num');
|
$setting->ldap_emp_num = $request->input('ldap_emp_num');
|
||||||
$setting->ldap_email = $request->input('ldap_email');
|
$setting->ldap_email = $request->input('ldap_email');
|
||||||
@@ -1044,7 +1044,7 @@ class SettingsController extends Controller
|
|||||||
*/
|
*/
|
||||||
public function getBackups()
|
public function getBackups()
|
||||||
{
|
{
|
||||||
|
$settings = Setting::getSettings();
|
||||||
$path = 'app/backups';
|
$path = 'app/backups';
|
||||||
$backup_files = Storage::files($path);
|
$backup_files = Storage::files($path);
|
||||||
$files_raw = [];
|
$files_raw = [];
|
||||||
@@ -1061,7 +1061,7 @@ class SettingsController extends Controller
|
|||||||
'filename' => basename($backup_files[$f]),
|
'filename' => basename($backup_files[$f]),
|
||||||
'filesize' => Setting::fileSizeConvert(Storage::size($backup_files[$f])),
|
'filesize' => Setting::fileSizeConvert(Storage::size($backup_files[$f])),
|
||||||
'modified_value' => $file_timestamp,
|
'modified_value' => $file_timestamp,
|
||||||
'modified_display' => Helper::getFormattedDateObject($file_timestamp, $type = 'datetime', false),
|
'modified_display' => date($settings->date_display_format.' '.$settings->time_display_format, $file_timestamp),
|
||||||
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
@@ -1234,7 +1234,11 @@ class SettingsController extends Controller
|
|||||||
// TODO: run a backup
|
// TODO: run a backup
|
||||||
|
|
||||||
|
|
||||||
Artisan::call('db:wipe');
|
Artisan::call('db:wipe', [
|
||||||
|
'--force' => true,
|
||||||
|
]);
|
||||||
|
|
||||||
|
\Log::debug('Attempting to restore from: '. storage_path($path).'/'.$filename);
|
||||||
|
|
||||||
// run the restore command
|
// run the restore command
|
||||||
Artisan::call('snipeit:restore',
|
Artisan::call('snipeit:restore',
|
||||||
@@ -1246,19 +1250,26 @@ class SettingsController extends Controller
|
|||||||
|
|
||||||
// If it's greater than 300, it probably worked
|
// If it's greater than 300, it probably worked
|
||||||
$output = Artisan::output();
|
$output = Artisan::output();
|
||||||
|
|
||||||
if (strlen($output) > 300) {
|
if (strlen($output) > 300) {
|
||||||
$find_user = DB::table('users')->where('first_name', $user->first_name)->where('last_name', $user->last_name)->exists();
|
$find_user = DB::table('users')->where('first_name', $user->first_name)->where('last_name', $user->last_name)->exists();
|
||||||
if(!$find_user){
|
|
||||||
|
if (!$find_user){
|
||||||
\Log::warning('Attempting to restore user: ' . $user->first_name . ' ' . $user->last_name);
|
\Log::warning('Attempting to restore user: ' . $user->first_name . ' ' . $user->last_name);
|
||||||
$new_user = $user->replicate();
|
$new_user = $user->replicate();
|
||||||
$new_user->push();
|
$new_user->push();
|
||||||
}
|
}
|
||||||
|
|
||||||
$session_files = glob(storage_path("framework/sessions/*"));
|
|
||||||
foreach ($session_files as $file) {
|
\Log::debug('Logging all users out..');
|
||||||
if (is_file($file))
|
Artisan::call('snipeit:global-logout', ['--force' => true]);
|
||||||
unlink($file);
|
|
||||||
}
|
/* run migrations */
|
||||||
|
\Log::debug('Migrating database...');
|
||||||
|
Artisan::call('migrate', ['--force' => true]);
|
||||||
|
$migrate_output = Artisan::output();
|
||||||
|
\Log::debug($migrate_output);
|
||||||
|
|
||||||
DB::table('users')->update(['remember_token' => null]);
|
DB::table('users')->update(['remember_token' => null]);
|
||||||
\Auth::logout();
|
\Auth::logout();
|
||||||
|
|
||||||
|
|||||||
@@ -91,8 +91,10 @@ class BulkUsersController extends Controller
|
|||||||
->conditionallyAddItem('company_id')
|
->conditionallyAddItem('company_id')
|
||||||
->conditionallyAddItem('locale')
|
->conditionallyAddItem('locale')
|
||||||
->conditionallyAddItem('remote')
|
->conditionallyAddItem('remote')
|
||||||
|
->conditionallyAddItem('ldap_import')
|
||||||
->conditionallyAddItem('activated');
|
->conditionallyAddItem('activated');
|
||||||
|
|
||||||
|
|
||||||
// If the manager_id is one of the users being updated, generate a warning.
|
// If the manager_id is one of the users being updated, generate a warning.
|
||||||
if (array_search($request->input('manager_id'), $user_raw_array)) {
|
if (array_search($request->input('manager_id'), $user_raw_array)) {
|
||||||
$manager_conflict = true;
|
$manager_conflict = true;
|
||||||
@@ -107,7 +109,7 @@ class BulkUsersController extends Controller
|
|||||||
User::whereIn('id', $user_raw_array)
|
User::whereIn('id', $user_raw_array)
|
||||||
->where('id', '!=', Auth::id())->update($this->update_array);
|
->where('id', '!=', Auth::id())->update($this->update_array);
|
||||||
|
|
||||||
if(array_key_exists('location_id', $this->update_array)){
|
if (array_key_exists('location_id', $this->update_array)){
|
||||||
Asset::where('assigned_type', User::class)
|
Asset::where('assigned_type', User::class)
|
||||||
->whereIn('assigned_to', $user_raw_array)
|
->whereIn('assigned_to', $user_raw_array)
|
||||||
->update(['location_id' => $this->update_array['location_id']]);
|
->update(['location_id' => $this->update_array['location_id']]);
|
||||||
|
|||||||
@@ -116,6 +116,7 @@ class UsersController extends Controller
|
|||||||
$user->country = $request->input('country', null);
|
$user->country = $request->input('country', null);
|
||||||
$user->zip = $request->input('zip', null);
|
$user->zip = $request->input('zip', null);
|
||||||
$user->remote = $request->input('remote', 0);
|
$user->remote = $request->input('remote', 0);
|
||||||
|
$user->website = $request->input('website', null);
|
||||||
|
|
||||||
// Strip out the superuser permission if the user isn't a superadmin
|
// Strip out the superuser permission if the user isn't a superadmin
|
||||||
$permissions_array = $request->input('permission');
|
$permissions_array = $request->input('permission');
|
||||||
@@ -266,6 +267,7 @@ class UsersController extends Controller
|
|||||||
$user->activated = $request->input('activated', 0);
|
$user->activated = $request->input('activated', 0);
|
||||||
$user->zip = $request->input('zip', null);
|
$user->zip = $request->input('zip', null);
|
||||||
$user->remote = $request->input('remote', 0);
|
$user->remote = $request->input('remote', 0);
|
||||||
|
$user->website = $request->input('website', null);
|
||||||
|
|
||||||
// Update the location of any assets checked out to this user
|
// Update the location of any assets checked out to this user
|
||||||
Asset::where('assigned_type', User::class)
|
Asset::where('assigned_type', User::class)
|
||||||
@@ -636,4 +638,4 @@ class UsersController extends Controller
|
|||||||
|
|
||||||
return redirect()->back()->with('error', 'User is not activated, is LDAP synced, or does not have an email address ');
|
return redirect()->back()->with('error', 'User is not activated, is LDAP synced, or does not have an email address ');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -68,8 +68,6 @@ class AccessoriesTransformer
|
|||||||
$array = [];
|
$array = [];
|
||||||
|
|
||||||
foreach ($accessory_users as $user) {
|
foreach ($accessory_users as $user) {
|
||||||
\Log::debug(print_r($user->pivot, true));
|
|
||||||
\Log::debug(print_r($user->pivot, true));
|
|
||||||
$array[] = [
|
$array[] = [
|
||||||
|
|
||||||
'assigned_pivot_id' => $user->pivot->id,
|
'assigned_pivot_id' => $user->pivot->id,
|
||||||
|
|||||||
@@ -55,20 +55,35 @@ class ActionlogsTransformer
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$file_url = '';
|
||||||
|
if($actionlog->filename!='') {
|
||||||
|
if ($actionlog->present()->actionType() == 'accepted') {
|
||||||
|
$file_url = route('log.storedeula.download', ['filename' => $actionlog->filename]);
|
||||||
|
} else {
|
||||||
|
if ($actionlog->itemType() == 'asset') {
|
||||||
|
$file_url = route('show/assetfile', ['assetId' => $actionlog->id, 'fileId' => $actionlog->id]);
|
||||||
|
} elseif ($actionlog->itemType() == 'license') {
|
||||||
|
$file_url = route('show.licensefile', ['licenseId' => $actionlog->item->id, 'fileId' => $actionlog->id]);
|
||||||
|
} elseif ($actionlog->itemType() == 'user') {
|
||||||
|
$file_url = route('show/userfile', ['userId' => $actionlog->item->id, 'fileId' => $actionlog->id]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$array = [
|
$array = [
|
||||||
'id' => (int) $actionlog->id,
|
'id' => (int) $actionlog->id,
|
||||||
'icon' => $icon,
|
'icon' => $icon,
|
||||||
'file' => ($actionlog->filename!='') ?
|
'file' => ($actionlog->filename!='')
|
||||||
|
?
|
||||||
[
|
[
|
||||||
'url' => route('show/assetfile', ['assetId' => $actionlog->item->id, 'fileId' => $actionlog->id]),
|
'url' => $file_url,
|
||||||
'filename' => $actionlog->filename,
|
'filename' => $actionlog->filename,
|
||||||
'inlineable' => (bool) Helper::show_file_inline($actionlog->filename),
|
'inlineable' => (bool) Helper::show_file_inline($actionlog->filename),
|
||||||
] : null,
|
] : null,
|
||||||
|
|
||||||
'item' => ($actionlog->item) ? [
|
'item' => ($actionlog->item) ? [
|
||||||
'id' => (int) $actionlog->item->id,
|
'id' => (int) $actionlog->item->id,
|
||||||
'name' => ($actionlog->itemType()=='user') ? $actionlog->filename : e($actionlog->item->getDisplayNameAttribute()),
|
'name' => ($actionlog->itemType()=='user') ? e($actionlog->item->getFullNameAttribute()) : e($actionlog->item->getDisplayNameAttribute()),
|
||||||
'type' => e($actionlog->itemType()),
|
'type' => e($actionlog->itemType()),
|
||||||
] : null,
|
] : null,
|
||||||
'location' => ($actionlog->location) ? [
|
'location' => ($actionlog->location) ? [
|
||||||
@@ -96,10 +111,10 @@ class ActionlogsTransformer
|
|||||||
'signature_file' => ($actionlog->accept_signature) ? route('log.signature.view', ['filename' => $actionlog->accept_signature ]) : null,
|
'signature_file' => ($actionlog->accept_signature) ? route('log.signature.view', ['filename' => $actionlog->accept_signature ]) : null,
|
||||||
'log_meta' => ((isset($clean_meta)) && (is_array($clean_meta))) ? $clean_meta: null,
|
'log_meta' => ((isset($clean_meta)) && (is_array($clean_meta))) ? $clean_meta: null,
|
||||||
'action_date' => ($actionlog->action_date) ? Helper::getFormattedDateObject($actionlog->action_date, 'datetime'): Helper::getFormattedDateObject($actionlog->created_at, 'datetime'),
|
'action_date' => ($actionlog->action_date) ? Helper::getFormattedDateObject($actionlog->action_date, 'datetime'): Helper::getFormattedDateObject($actionlog->created_at, 'datetime'),
|
||||||
'stored_eula_file' => ($actionlog->stored_eula_file) ? route('log.storedeula.download', ['filename' => $actionlog->stored_eula_file]) : null,
|
|
||||||
];
|
];
|
||||||
//\Log::info("Clean Meta is: ".print_r($clean_meta,true));
|
//\Log::info("Clean Meta is: ".print_r($clean_meta,true));
|
||||||
|
|
||||||
|
//dd($array);
|
||||||
return $array;
|
return $array;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -98,21 +98,36 @@ class AssetsTransformer
|
|||||||
$decrypted = Helper::gracefulDecrypt($field, $asset->{$field->convertUnicodeDbSlug()});
|
$decrypted = Helper::gracefulDecrypt($field, $asset->{$field->convertUnicodeDbSlug()});
|
||||||
$value = (Gate::allows('superadmin')) ? $decrypted : strtoupper(trans('admin/custom_fields/general.encrypted'));
|
$value = (Gate::allows('superadmin')) ? $decrypted : strtoupper(trans('admin/custom_fields/general.encrypted'));
|
||||||
|
|
||||||
|
if ($field->format == 'DATE'){
|
||||||
|
if (Gate::allows('superadmin')){
|
||||||
|
$value = Helper::getFormattedDateObject($value, 'date', false);
|
||||||
|
} else {
|
||||||
|
$value = strtoupper(trans('admin/custom_fields/general.encrypted'));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$fields_array[$field->name] = [
|
$fields_array[$field->name] = [
|
||||||
'field' => e($field->convertUnicodeDbSlug()),
|
'field' => e($field->convertUnicodeDbSlug()),
|
||||||
'value' => e($value),
|
'value' => e($value),
|
||||||
'field_format' => $field->format,
|
'field_format' => $field->format,
|
||||||
|
'element' => $field->element,
|
||||||
];
|
];
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
$value = $asset->{$field->convertUnicodeDbSlug()};
|
||||||
|
|
||||||
|
if (($field->format == 'DATE') && (!is_null($value)) && ($value!='')){
|
||||||
|
$value = Helper::getFormattedDateObject($value, 'date', false);
|
||||||
|
}
|
||||||
|
|
||||||
$fields_array[$field->name] = [
|
$fields_array[$field->name] = [
|
||||||
'field' => e($field->convertUnicodeDbSlug()),
|
'field' => e($field->convertUnicodeDbSlug()),
|
||||||
'value' => e($asset->{$field->convertUnicodeDbSlug()}),
|
'value' => e($value),
|
||||||
'field_format' => $field->format,
|
'field_format' => $field->format,
|
||||||
|
'element' => $field->element,
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$array['custom_fields'] = $fields_array;
|
$array['custom_fields'] = $fields_array;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ class CustomFieldsTransformer
|
|||||||
'field_values' => ($field->field_values) ? e($field->field_values) : null,
|
'field_values' => ($field->field_values) ? e($field->field_values) : null,
|
||||||
'field_values_array' => ($field->field_values) ? explode("\r\n", e($field->field_values)) : null,
|
'field_values_array' => ($field->field_values) ? explode("\r\n", e($field->field_values)) : null,
|
||||||
'type' => e($field->element),
|
'type' => e($field->element),
|
||||||
'required' => $field->pivot ? $field->pivot->required : false,
|
'required' => (($field->pivot) && ($field->pivot->required=='1')) ? true : false,
|
||||||
'created_at' => Helper::getFormattedDateObject($field->created_at, 'datetime'),
|
'created_at' => Helper::getFormattedDateObject($field->created_at, 'datetime'),
|
||||||
'updated_at' => Helper::getFormattedDateObject($field->updated_at, 'datetime'),
|
'updated_at' => Helper::getFormattedDateObject($field->updated_at, 'datetime'),
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -9,14 +9,14 @@ use Illuminate\Database\Eloquent\Collection;
|
|||||||
|
|
||||||
class DepreciationsTransformer
|
class DepreciationsTransformer
|
||||||
{
|
{
|
||||||
public function transformDepreciations(Collection $depreciations)
|
public function transformDepreciations(Collection $depreciations, $total)
|
||||||
{
|
{
|
||||||
$array = [];
|
$array = [];
|
||||||
foreach ($depreciations as $depreciation) {
|
foreach ($depreciations as $depreciation) {
|
||||||
$array[] = self::transformDepreciation($depreciation);
|
$array[] = self::transformDepreciation($depreciation);
|
||||||
}
|
}
|
||||||
|
|
||||||
return (new DatatablesTransformer)->transformDatatables($array);
|
return (new DatatablesTransformer)->transformDatatables($array, $total);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function transformDepreciation(Depreciation $depreciation)
|
public function transformDepreciation(Depreciation $depreciation)
|
||||||
@@ -27,8 +27,7 @@ class DepreciationsTransformer
|
|||||||
'months' => $depreciation->months.' '.trans('general.months'),
|
'months' => $depreciation->months.' '.trans('general.months'),
|
||||||
'depreciation_min' => $depreciation->depreciation_min,
|
'depreciation_min' => $depreciation->depreciation_min,
|
||||||
'created_at' => Helper::getFormattedDateObject($depreciation->created_at, 'datetime'),
|
'created_at' => Helper::getFormattedDateObject($depreciation->created_at, 'datetime'),
|
||||||
'updated_at' => Helper::getFormattedDateObject($depreciation->updated_at, 'datetime'),
|
'updated_at' => Helper::getFormattedDateObject($depreciation->updated_at, 'datetime')
|
||||||
'depreciation_min' =>($depreciation->depreciation_min),
|
|
||||||
];
|
];
|
||||||
|
|
||||||
$permissions_array['available_actions'] = [
|
$permissions_array['available_actions'] = [
|
||||||
@@ -40,4 +39,4 @@ class DepreciationsTransformer
|
|||||||
|
|
||||||
return $array;
|
return $array;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -130,7 +130,7 @@ class AssetImporter extends ItemImporter
|
|||||||
//-- user_id is a property of the abstract class Importer, which this class inherits from and it's setted by
|
//-- user_id is a property of the abstract class Importer, which this class inherits from and it's setted by
|
||||||
//-- the class that needs to use it (command importer or GUI importer inside the project).
|
//-- the class that needs to use it (command importer or GUI importer inside the project).
|
||||||
if (isset($target)) {
|
if (isset($target)) {
|
||||||
$asset->fresh()->checkOut($target, $this->user_id);
|
$asset->fresh()->checkOut($target, $this->user_id, date('Y-m-d H:i:s'));
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -2,7 +2,9 @@
|
|||||||
|
|
||||||
namespace App\Importer;
|
namespace App\Importer;
|
||||||
|
|
||||||
|
use App\Models\Asset;
|
||||||
use App\Models\Department;
|
use App\Models\Department;
|
||||||
|
use App\Models\Setting;
|
||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
use App\Notifications\WelcomeNotification;
|
use App\Notifications\WelcomeNotification;
|
||||||
|
|
||||||
@@ -60,6 +62,13 @@ class UserImporter extends ItemImporter
|
|||||||
if ($this->shouldUpdateField($user_department)) {
|
if ($this->shouldUpdateField($user_department)) {
|
||||||
$this->item['department_id'] = $this->createOrFetchDepartment($user_department);
|
$this->item['department_id'] = $this->createOrFetchDepartment($user_department);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (is_null($this->item['username']) || $this->item['username'] == "") {
|
||||||
|
$user_full_name = $this->item['first_name'] . ' ' . $this->item['last_name'];
|
||||||
|
$user_formatted_array = User::generateFormattedNameFromFullName($user_full_name, Setting::getSettings()->username_format);
|
||||||
|
$this->item['username'] = $user_formatted_array['username'];
|
||||||
|
}
|
||||||
|
|
||||||
$user = User::where('username', $this->item['username'])->first();
|
$user = User::where('username', $this->item['username'])->first();
|
||||||
if ($user) {
|
if ($user) {
|
||||||
if (! $this->updating) {
|
if (! $this->updating) {
|
||||||
@@ -71,6 +80,12 @@ class UserImporter extends ItemImporter
|
|||||||
$this->log('Updating User');
|
$this->log('Updating User');
|
||||||
$user->update($this->sanitizeItemForUpdating($user));
|
$user->update($this->sanitizeItemForUpdating($user));
|
||||||
$user->save();
|
$user->save();
|
||||||
|
|
||||||
|
// Update the location of any assets checked out to this user
|
||||||
|
Asset::where('assigned_type', User::class)
|
||||||
|
->where('assigned_to', $user->id)
|
||||||
|
->update(['location_id' => $user->location_id]);
|
||||||
|
|
||||||
// \Log::debug('UserImporter.php Updated User ' . print_r($user, true));
|
// \Log::debug('UserImporter.php Updated User ' . print_r($user, true));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,10 +24,13 @@ use Illuminate\Support\Facades\Notification;
|
|||||||
class CheckoutableListener
|
class CheckoutableListener
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Notify the user about the checked out checkoutable
|
* Notify the user about the checked out checkoutable and add a record to the
|
||||||
|
* checkout_requests table.
|
||||||
*/
|
*/
|
||||||
public function onCheckedOut($event)
|
public function onCheckedOut($event)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* When the item wasn't checked out to a user, we can't send notifications
|
* When the item wasn't checked out to a user, we can't send notifications
|
||||||
*/
|
*/
|
||||||
@@ -58,14 +61,12 @@ class CheckoutableListener
|
|||||||
*/
|
*/
|
||||||
public function onCheckedIn($event)
|
public function onCheckedIn($event)
|
||||||
{
|
{
|
||||||
\Log::debug('checkin fired');
|
\Log::debug('onCheckedIn in the Checkoutable listener fired');
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* When the item wasn't checked out to a user, we can't send notifications
|
* When the item wasn't checked out to a user, we can't send notifications
|
||||||
*/
|
*/
|
||||||
if (! $event->checkedOutTo instanceof User) {
|
if (! $event->checkedOutTo instanceof User) {
|
||||||
\Log::debug('checked out to not a user');
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -81,16 +82,14 @@ class CheckoutableListener
|
|||||||
$acceptance->delete();
|
$acceptance->delete();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
\Log::debug('checked out to a user');
|
|
||||||
|
// Use default locale
|
||||||
if (! $event->checkedOutTo->locale) {
|
if (! $event->checkedOutTo->locale) {
|
||||||
\Log::debug('Use default settings locale');
|
|
||||||
Notification::locale(Setting::getSettings()->locale)->send(
|
Notification::locale(Setting::getSettings()->locale)->send(
|
||||||
$this->getNotifiables($event),
|
$this->getNotifiables($event),
|
||||||
$this->getCheckinNotification($event)
|
$this->getCheckinNotification($event)
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
\Log::debug('Use user locale? I do not think this works as expected yet');
|
|
||||||
// \Log::debug(print_r($this->getNotifiables($event), true));
|
|
||||||
Notification::send(
|
Notification::send(
|
||||||
$this->getNotifiables($event),
|
$this->getNotifiables($event),
|
||||||
$this->getCheckinNotification($event)
|
$this->getCheckinNotification($event)
|
||||||
@@ -151,10 +150,6 @@ class CheckoutableListener
|
|||||||
private function getCheckinNotification($event)
|
private function getCheckinNotification($event)
|
||||||
{
|
{
|
||||||
|
|
||||||
// $model = get_class($event->checkoutable);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$notificationClass = null;
|
$notificationClass = null;
|
||||||
|
|
||||||
switch (get_class($event->checkoutable)) {
|
switch (get_class($event->checkoutable)) {
|
||||||
|
|||||||
@@ -22,24 +22,44 @@ use App\Models\LicenseSeat;
|
|||||||
|
|
||||||
class LogListener
|
class LogListener
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* These onBlah methods are used by the subscribe() method further down in this file.
|
||||||
|
* This one creates an action_logs entry for the checkin
|
||||||
|
* @param CheckoutableCheckedIn $event
|
||||||
|
* @return void
|
||||||
|
*
|
||||||
|
*/
|
||||||
public function onCheckoutableCheckedIn(CheckoutableCheckedIn $event)
|
public function onCheckoutableCheckedIn(CheckoutableCheckedIn $event)
|
||||||
{
|
{
|
||||||
$event->checkoutable->logCheckin($event->checkedOutTo, $event->note, $event->action_date);
|
$event->checkoutable->logCheckin($event->checkedOutTo, $event->note, $event->action_date);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* These onBlah methods are used by the subscribe() method further down in this file.
|
||||||
|
* This one creates an action_logs entry for the checkout
|
||||||
|
*
|
||||||
|
* @param CheckoutableCheckedOut $event
|
||||||
|
* @return void
|
||||||
|
*
|
||||||
|
*/
|
||||||
public function onCheckoutableCheckedOut(CheckoutableCheckedOut $event)
|
public function onCheckoutableCheckedOut(CheckoutableCheckedOut $event)
|
||||||
{
|
{
|
||||||
$event->checkoutable->logCheckout($event->note, $event->checkedOutTo, $event->checkoutable->last_checkout);
|
$event->checkoutable->logCheckout($event->note, $event->checkedOutTo, $event->checkoutable->last_checkout);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* These onBlah methods are used by the subscribe() method further down in this file.
|
||||||
|
* This creates the entry in the action_logs table for the accept/decline action
|
||||||
|
*/
|
||||||
public function onCheckoutAccepted(CheckoutAccepted $event)
|
public function onCheckoutAccepted(CheckoutAccepted $event)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
\Log::error('event passed to the onCheckoutAccepted listener:');
|
||||||
$logaction = new Actionlog();
|
$logaction = new Actionlog();
|
||||||
$logaction->item()->associate($event->acceptance->checkoutable);
|
$logaction->item()->associate($event->acceptance->checkoutable);
|
||||||
$logaction->target()->associate($event->acceptance->assignedTo);
|
$logaction->target()->associate($event->acceptance->assignedTo);
|
||||||
$logaction->accept_signature = $event->acceptance->signature_filename;
|
$logaction->accept_signature = $event->acceptance->signature_filename;
|
||||||
$logaction->stored_eula_file = $event->acceptance->stored_eula_file;
|
$logaction->filename = $event->acceptance->stored_eula_file;
|
||||||
$logaction->action_type = 'accepted';
|
$logaction->action_type = 'accepted';
|
||||||
|
|
||||||
// TODO: log the actual license seat that was checked out
|
// TODO: log the actual license seat that was checked out
|
||||||
@@ -47,6 +67,7 @@ class LogListener
|
|||||||
$logaction->item()->associate($event->acceptance->checkoutable->license);
|
$logaction->item()->associate($event->acceptance->checkoutable->license);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
\Log::debug('New onCheckoutAccepted Listener fired. logaction: '.print_r($logaction, true));
|
||||||
$logaction->save();
|
$logaction->save();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -310,6 +310,21 @@ class Accessory extends SnipeModel
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check how many items within an accessory are checked out
|
||||||
|
*
|
||||||
|
* @author [A. Gianotto] [<snipe@snipe.net>]
|
||||||
|
* @since [v5.0]
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public function numCheckedOut()
|
||||||
|
{
|
||||||
|
$checkedout = 0;
|
||||||
|
$checkedout = $this->users->count();
|
||||||
|
|
||||||
|
return $checkedout;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check how many items of an accessory remain
|
* Check how many items of an accessory remain
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ class Actionlog extends SnipeModel
|
|||||||
|
|
||||||
protected $table = 'action_logs';
|
protected $table = 'action_logs';
|
||||||
public $timestamps = true;
|
public $timestamps = true;
|
||||||
protected $fillable = ['created_at', 'item_type', 'user_id', 'item_id', 'action_type', 'note', 'target_id', 'target_type', 'stored_eula', 'stored_eula_file'];
|
protected $fillable = ['created_at', 'item_type', 'user_id', 'item_id', 'action_type', 'note', 'target_id', 'target_type', 'stored_eula'];
|
||||||
|
|
||||||
use Searchable;
|
use Searchable;
|
||||||
|
|
||||||
|
|||||||
@@ -1187,7 +1187,9 @@ class Asset extends Depreciable
|
|||||||
|
|
||||||
public function scopeRequestableAssets($query)
|
public function scopeRequestableAssets($query)
|
||||||
{
|
{
|
||||||
return Company::scopeCompanyables($query->where('requestable', '=', 1))
|
$table = $query->getModel()->getTable();
|
||||||
|
|
||||||
|
return Company::scopeCompanyables($query->where($table.'.requestable', '=', 1))
|
||||||
->whereHas('assetstatus', function ($query) {
|
->whereHas('assetstatus', function ($query) {
|
||||||
$query->where(function ($query) {
|
$query->where(function ($query) {
|
||||||
$query->where('deployable', '=', 1)
|
$query->where('deployable', '=', 1)
|
||||||
|
|||||||
@@ -162,6 +162,20 @@ class AssetMaintenance extends Model implements ICompanyableChild
|
|||||||
* -----------------------------------------------
|
* -----------------------------------------------
|
||||||
**/
|
**/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Query builder scope to order on a supplier
|
||||||
|
*
|
||||||
|
* @param \Illuminate\Database\Query\Builder $query Query builder instance
|
||||||
|
* @param string $order Order
|
||||||
|
*
|
||||||
|
* @return \Illuminate\Database\Query\Builder Modified query builder
|
||||||
|
*/
|
||||||
|
public function scopeOrderBySupplier($query, $order)
|
||||||
|
{
|
||||||
|
return $query->leftJoin('suppliers as suppliers_maintenances', 'asset_maintenances.supplier_id', '=', 'suppliers_maintenances.id')
|
||||||
|
->orderBy('suppliers_maintenances.name', $order);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Query builder scope to order on admin user
|
* Query builder scope to order on admin user
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -57,20 +57,24 @@ class CheckoutAcceptance extends Model
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Accept the checkout acceptance
|
* Add a record to the checkout_acceptance table ONLY.
|
||||||
|
* Do not add stuff here that doesn't have a corresponding column in the
|
||||||
|
* checkout_acceptances table or you'll get an error.
|
||||||
*
|
*
|
||||||
* @param string $signature_filename
|
* @param string $signature_filename
|
||||||
*/
|
*/
|
||||||
public function accept($signature_filename)
|
public function accept($signature_filename, $eula = null, $filename = null)
|
||||||
{
|
{
|
||||||
$this->accepted_at = now();
|
$this->accepted_at = now();
|
||||||
$this->signature_filename = $signature_filename;
|
$this->signature_filename = $signature_filename;
|
||||||
|
$this->stored_eula = $eula;
|
||||||
|
$this->stored_eula_file = $filename;
|
||||||
$this->save();
|
$this->save();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Update state for the checked out item
|
* Update state for the checked out item
|
||||||
*/
|
*/
|
||||||
$this->checkoutable->acceptedCheckout($this->assignedTo, $signature_filename);
|
$this->checkoutable->acceptedCheckout($this->assignedTo, $signature_filename, $filename);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -276,6 +276,21 @@ class Consumable extends SnipeModel
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check how many items within a consumable are checked out
|
||||||
|
*
|
||||||
|
* @author [A. Gianotto] [<snipe@snipe.net>]
|
||||||
|
* @since [v5.0]
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public function numCheckedOut()
|
||||||
|
{
|
||||||
|
$checkedout = 0;
|
||||||
|
$checkedout = $this->users->count();
|
||||||
|
|
||||||
|
return $checkedout;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks the number of available consumables
|
* Checks the number of available consumables
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ class Ldap extends Model
|
|||||||
public static function connectToLdap()
|
public static function connectToLdap()
|
||||||
{
|
{
|
||||||
$ldap_host = Setting::getSettings()->ldap_server;
|
$ldap_host = Setting::getSettings()->ldap_server;
|
||||||
$ldap_version = Setting::getSettings()->ldap_version;
|
$ldap_version = Setting::getSettings()->ldap_version ?: 3;
|
||||||
$ldap_server_cert_ignore = Setting::getSettings()->ldap_server_cert_ignore;
|
$ldap_server_cert_ignore = Setting::getSettings()->ldap_server_cert_ignore;
|
||||||
$ldap_use_tls = Setting::getSettings()->ldap_tls;
|
$ldap_use_tls = Setting::getSettings()->ldap_tls;
|
||||||
|
|
||||||
@@ -64,8 +64,8 @@ class Ldap extends Model
|
|||||||
ldap_set_option($connection, LDAP_OPT_NETWORK_TIMEOUT, 20);
|
ldap_set_option($connection, LDAP_OPT_NETWORK_TIMEOUT, 20);
|
||||||
|
|
||||||
if (Setting::getSettings()->ldap_client_tls_cert && Setting::getSettings()->ldap_client_tls_key) {
|
if (Setting::getSettings()->ldap_client_tls_cert && Setting::getSettings()->ldap_client_tls_key) {
|
||||||
ldap_set_option($connection, LDAP_OPT_X_TLS_CERTFILE, Setting::get_client_side_cert_path());
|
ldap_set_option(null, LDAP_OPT_X_TLS_CERTFILE, Setting::get_client_side_cert_path());
|
||||||
ldap_set_option($connection, LDAP_OPT_X_TLS_KEYFILE, Setting::get_client_side_key_path());
|
ldap_set_option(null, LDAP_OPT_X_TLS_KEYFILE, Setting::get_client_side_key_path());
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($ldap_use_tls=='1') {
|
if ($ldap_use_tls=='1') {
|
||||||
@@ -304,14 +304,13 @@ class Ldap extends Model
|
|||||||
|
|
||||||
// HUGE thanks to this article: https://stackoverflow.com/questions/68275972/how-to-get-paged-ldap-queries-in-php-8-and-read-more-than-1000-entries
|
// HUGE thanks to this article: https://stackoverflow.com/questions/68275972/how-to-get-paged-ldap-queries-in-php-8-and-read-more-than-1000-entries
|
||||||
// which helped me wrap my head around paged results!
|
// which helped me wrap my head around paged results!
|
||||||
\Log::info("ldap conn is: ".$ldapconn." basedn is: $base_dn, filter is: $filter - count is: $count. page size is: $page_size"); //FIXME - remove
|
|
||||||
// if a $count is set and it's smaller than $page_size then use that as the page size
|
// if a $count is set and it's smaller than $page_size then use that as the page size
|
||||||
$ldap_controls = [];
|
$ldap_controls = [];
|
||||||
//if($count == -1) { //count is -1 means we have to employ paging to query the entire directory
|
//if($count == -1) { //count is -1 means we have to employ paging to query the entire directory
|
||||||
$ldap_controls = [['oid' => LDAP_CONTROL_PAGEDRESULTS, 'iscritical' => false, 'value' => ['size'=> $count == -1||$count>$page_size ? $page_size : $count, 'cookie' => $cookie]]];
|
$ldap_controls = [['oid' => LDAP_CONTROL_PAGEDRESULTS, 'iscritical' => false, 'value' => ['size'=> $count == -1||$count>$page_size ? $page_size : $count, 'cookie' => $cookie]]];
|
||||||
//}
|
//}
|
||||||
$search_results = ldap_search($ldapconn, $base_dn, $filter, [], 0, /* $page_size */ -1, -1, LDAP_DEREF_NEVER, $ldap_controls); // TODO - I hate the @, and I hate that we get a full page even if we ask for 10 records. Can we use an ldap_control?
|
$search_results = ldap_search($ldapconn, $base_dn, $filter, [], 0, /* $page_size */ -1, -1, LDAP_DEREF_NEVER, $ldap_controls); // TODO - I hate the @, and I hate that we get a full page even if we ask for 10 records. Can we use an ldap_control?
|
||||||
\Log::info("did the search run? I guess so if you got here!");
|
\Log::debug("did the search run? I guess so if you got here!");
|
||||||
if (! $search_results) {
|
if (! $search_results) {
|
||||||
return redirect()->route('users.index')->with('error', trans('admin/users/message.error.ldap_could_not_search').ldap_error($ldapconn)); // TODO this is never called in any routed context - only from the Artisan command. So this redirect will never work.
|
return redirect()->route('users.index')->with('error', trans('admin/users/message.error.ldap_could_not_search').ldap_error($ldapconn)); // TODO this is never called in any routed context - only from the Artisan command. So this redirect will never work.
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -103,6 +103,7 @@ class Location extends SnipeModel
|
|||||||
return $this->hasMany(\App\Models\User::class, 'location_id');
|
return $this->hasMany(\App\Models\User::class, 'location_id');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public function assets()
|
public function assets()
|
||||||
{
|
{
|
||||||
return $this->hasMany(\App\Models\Asset::class, 'location_id')
|
return $this->hasMany(\App\Models\Asset::class, 'location_id')
|
||||||
@@ -129,6 +130,23 @@ class Location extends SnipeModel
|
|||||||
return $this->hasMany(\App\Models\Asset::class, 'rtd_location_id');
|
return $this->hasMany(\App\Models\Asset::class, 'rtd_location_id');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function consumables()
|
||||||
|
{
|
||||||
|
return $this->hasMany(\App\Models\Consumable::class, 'location_id');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function components()
|
||||||
|
{
|
||||||
|
return $this->hasMany(\App\Models\Component::class, 'location_id');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function accessories()
|
||||||
|
{
|
||||||
|
return $this->hasMany(\App\Models\Accessory::class, 'location_id');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public function parent()
|
public function parent()
|
||||||
{
|
{
|
||||||
return $this->belongsTo(self::class, 'parent_id', 'id')
|
return $this->belongsTo(self::class, 'parent_id', 'id')
|
||||||
|
|||||||
@@ -218,6 +218,7 @@ class Setting extends Model
|
|||||||
*/
|
*/
|
||||||
public static function fileSizeConvert($bytes): string
|
public static function fileSizeConvert($bytes): string
|
||||||
{
|
{
|
||||||
|
$result = 0;
|
||||||
$bytes = floatval($bytes);
|
$bytes = floatval($bytes);
|
||||||
$arBytes = [
|
$arBytes = [
|
||||||
0 => [
|
0 => [
|
||||||
|
|||||||
@@ -184,7 +184,7 @@ class Supplier extends SnipeModel
|
|||||||
*/
|
*/
|
||||||
public function addhttp($url)
|
public function addhttp($url)
|
||||||
{
|
{
|
||||||
if (! preg_match('~^(?:f|ht)tps?://~i', $url)) {
|
if (($url!='') && (! preg_match('~^(?:f|ht)tps?://~i', $url))) {
|
||||||
$url = 'http://'.$url;
|
$url = 'http://'.$url;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -17,8 +17,9 @@ trait Acceptable
|
|||||||
* @param User $acceptedBy
|
* @param User $acceptedBy
|
||||||
* @param string $signature
|
* @param string $signature
|
||||||
*/
|
*/
|
||||||
public function acceptedCheckout(User $acceptedBy, $signature)
|
public function acceptedCheckout(User $acceptedBy, $signature, $filename = null)
|
||||||
{
|
{
|
||||||
|
\Log::debug('acceptedCheckout in Acceptable trait fired, tho it doesn\'t do anything?');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -54,7 +54,6 @@ class CheckinAssetNotification extends Notification
|
|||||||
* has the corresponding checkbox checked.
|
* has the corresponding checkbox checked.
|
||||||
*/
|
*/
|
||||||
if ($this->item->checkin_email() && $this->target instanceof User && $this->target->email != '') {
|
if ($this->item->checkin_email() && $this->target instanceof User && $this->target->email != '') {
|
||||||
\Log::debug('use email');
|
|
||||||
$notifyBy[] = 'mail';
|
$notifyBy[] = 'mail';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -18,22 +18,37 @@ class AssetObserver
|
|||||||
public function updating(Asset $asset)
|
public function updating(Asset $asset)
|
||||||
{
|
{
|
||||||
$attributes = $asset->getAttributes();
|
$attributes = $asset->getAttributes();
|
||||||
$attributesOriginal = $asset->getOriginal();
|
$attributesOriginal = $asset->getRawOriginal();
|
||||||
|
$same_checkout_counter = false;
|
||||||
|
$same_checkin_counter = false;
|
||||||
|
|
||||||
|
if (array_key_exists('checkout_counter', $attributes) && array_key_exists('checkout_counter', $attributesOriginal)){
|
||||||
|
$same_checkout_counter = (($attributes['checkout_counter'] == $attributesOriginal['checkout_counter']));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (array_key_exists('checkin_counter', $attributes) && array_key_exists('checkin_counter', $attributesOriginal)){
|
||||||
|
$same_checkin_counter = (($attributes['checkin_counter'] == $attributesOriginal['checkin_counter']));
|
||||||
|
}
|
||||||
|
|
||||||
// If the asset isn't being checked out or audited, log the update.
|
// If the asset isn't being checked out or audited, log the update.
|
||||||
// (Those other actions already create log entries.)
|
// (Those other actions already create log entries.)
|
||||||
if (($attributes['assigned_to'] == $attributesOriginal['assigned_to'])
|
if (($attributes['assigned_to'] == $attributesOriginal['assigned_to'])
|
||||||
|
&& ($same_checkout_counter) && ($same_checkin_counter)
|
||||||
&& ((isset( $attributes['next_audit_date']) ? $attributes['next_audit_date'] : null) == (isset($attributesOriginal['next_audit_date']) ? $attributesOriginal['next_audit_date']: null))
|
&& ((isset( $attributes['next_audit_date']) ? $attributes['next_audit_date'] : null) == (isset($attributesOriginal['next_audit_date']) ? $attributesOriginal['next_audit_date']: null))
|
||||||
&& ($attributes['last_checkout'] == $attributesOriginal['last_checkout']))
|
&& ($attributes['last_checkout'] == $attributesOriginal['last_checkout']))
|
||||||
{
|
{
|
||||||
$changed = [];
|
$changed = [];
|
||||||
|
|
||||||
foreach ($asset->getOriginal() as $key => $value) {
|
foreach ($asset->getRawOriginal() as $key => $value) {
|
||||||
if ($asset->getOriginal()[$key] != $asset->getAttributes()[$key]) {
|
if ($asset->getRawOriginal()[$key] != $asset->getAttributes()[$key]) {
|
||||||
$changed[$key]['old'] = $asset->getOriginal()[$key];
|
$changed[$key]['old'] = $asset->getRawOriginal()[$key];
|
||||||
$changed[$key]['new'] = $asset->getAttributes()[$key];
|
$changed[$key]['new'] = $asset->getAttributes()[$key];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (empty($changed)){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
$logAction = new Actionlog();
|
$logAction = new Actionlog();
|
||||||
$logAction->item_type = Asset::class;
|
$logAction->item_type = Asset::class;
|
||||||
|
|||||||
@@ -90,6 +90,14 @@ class LocationPresenter extends Presenter
|
|||||||
'title' => trans('admin/locations/table.address'),
|
'title' => trans('admin/locations/table.address'),
|
||||||
'visible' => true,
|
'visible' => true,
|
||||||
],
|
],
|
||||||
|
[
|
||||||
|
'field' => 'address2',
|
||||||
|
'searchable' => true,
|
||||||
|
'sortable' => true,
|
||||||
|
'switchable' => true,
|
||||||
|
'title' => trans('admin/locations/table.address'),
|
||||||
|
'visible' => false,
|
||||||
|
],
|
||||||
[
|
[
|
||||||
'field' => 'city',
|
'field' => 'city',
|
||||||
'searchable' => true,
|
'searchable' => true,
|
||||||
|
|||||||
@@ -75,12 +75,22 @@ class RouteServiceProvider extends ServiceProvider
|
|||||||
/**
|
/**
|
||||||
* Configure the rate limiters for the application.
|
* Configure the rate limiters for the application.
|
||||||
*
|
*
|
||||||
|
* https://laravel.com/docs/8.x/routing#rate-limiting
|
||||||
|
*
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
protected function configureRateLimiting()
|
protected function configureRateLimiting()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
// Rate limiter for API calls
|
||||||
RateLimiter::for('api', function (Request $request) {
|
RateLimiter::for('api', function (Request $request) {
|
||||||
return Limit::perMinute(60)->by(optional($request->user())->id ?: $request->ip());
|
return Limit::perMinute(config('app.api_throttle_per_minute'))->by(optional($request->user())->id ?: $request->ip());
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Rate limiter for forgotten password requests
|
||||||
|
RateLimiter::for('forgotten_password', function (Request $request) {
|
||||||
|
return Limit::perMinute(config('auth.password_reset.max_attempts_per_min'))->by(optional($request->user())->id ?: $request->ip());
|
||||||
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,6 +36,11 @@ class SettingsServiceProvider extends ServiceProvider
|
|||||||
|
|
||||||
// Model paths and URLs
|
// Model paths and URLs
|
||||||
|
|
||||||
|
|
||||||
|
\App::singleton('eula_pdf_path', function () {
|
||||||
|
return 'eula_pdf_path/';
|
||||||
|
});
|
||||||
|
|
||||||
\App::singleton('assets_upload_path', function () {
|
\App::singleton('assets_upload_path', function () {
|
||||||
return 'assets/';
|
return 'assets/';
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -130,11 +130,12 @@ class Saml
|
|||||||
$this->clearData();
|
$this->clearData();
|
||||||
}
|
}
|
||||||
|
|
||||||
\Log::debug('Trying to create a new OneLogin_Saml2_Auth object ');
|
|
||||||
try {
|
try {
|
||||||
$this->_auth = new OneLogin_Saml2_Auth($this->_settings);
|
$this->_auth = new OneLogin_Saml2_Auth($this->_settings);
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
\Log::error('Trying OneLogin_Saml2_Auth failed. Setting SAML enabled to false. OneLogin_Saml2_Auth error message is: '. $e->getMessage());
|
if ( $this->isEnabled() ) { // $this->loadSettings() initializes this to true if SAML is enabled by settings.
|
||||||
|
\Log::warning('Trying OneLogin_Saml2_Auth failed. Setting SAML enabled to false. OneLogin_Saml2_Auth error message is: '. $e->getMessage());
|
||||||
|
}
|
||||||
$this->_enabled = false;
|
$this->_enabled = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -157,7 +158,6 @@ class Saml
|
|||||||
$this->_enabled = $setting->saml_enabled == '1';
|
$this->_enabled = $setting->saml_enabled == '1';
|
||||||
|
|
||||||
if ($this->isEnabled()) {
|
if ($this->isEnabled()) {
|
||||||
\Log::debug('SAML is enabled according to loadSettings()');
|
|
||||||
//Let onelogin/php-saml know to use 'X-Forwarded-*' headers if it is from a trusted proxy
|
//Let onelogin/php-saml know to use 'X-Forwarded-*' headers if it is from a trusted proxy
|
||||||
OneLogin_Saml2_Utils::setProxyVars(request()->isFromTrustedProxy());
|
OneLogin_Saml2_Utils::setProxyVars(request()->isFromTrustedProxy());
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"require": {
|
"require": {
|
||||||
"php": ">=7.4 <8.1",
|
"php": ">=7.4 <8.3",
|
||||||
"ext-curl": "*",
|
"ext-curl": "*",
|
||||||
"ext-fileinfo": "*",
|
"ext-fileinfo": "*",
|
||||||
"ext-json": "*",
|
"ext-json": "*",
|
||||||
|
|||||||
759
composer.lock
generated
759
composer.lock
generated
File diff suppressed because it is too large
Load Diff
@@ -98,14 +98,27 @@ return [
|
|||||||
'email' => 'auth.emails.password',
|
'email' => 'auth.emails.password',
|
||||||
'table' => 'password_resets',
|
'table' => 'password_resets',
|
||||||
'expire' => env('RESET_PASSWORD_LINK_EXPIRES', 900),
|
'expire' => env('RESET_PASSWORD_LINK_EXPIRES', 900),
|
||||||
'throttle' => 60,
|
'throttle' => [
|
||||||
'max_attempts' => env('LOGIN_MAX_ATTEMPTS', 5),
|
'max_attempts' => env('LOGIN_MAX_ATTEMPTS', 5),
|
||||||
|
|
||||||
'lockout_duration' => env('LOGIN_LOCKOUT_DURATION', 60),
|
'lockout_duration' => env('LOGIN_LOCKOUT_DURATION', 60),
|
||||||
|
]
|
||||||
|
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Resetting Password Requests
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| This sets the throttle for forgotten password requests
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
'password_reset' => [
|
||||||
|
'max_attempts_per_min' => env('PASSWORD_RESET_MAX_ATTEMPTS_PER_MIN', 50),
|
||||||
|
],
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
| Password Confirmation Timeout
|
| Password Confirmation Timeout
|
||||||
@@ -117,6 +130,6 @@ return [
|
|||||||
|
|
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
'password_timeout' => 10800,
|
'password_timeout' => env('PASSWORD_CONFIRM_TIMEOUT', 10800),
|
||||||
|
|
||||||
];
|
];
|
||||||
|
|||||||
248
config/dompdf.php
Normal file
248
config/dompdf.php
Normal file
@@ -0,0 +1,248 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
return array(
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Settings
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| Set some default values. It is possible to add all defines that can be set
|
||||||
|
| in dompdf_config.inc.php. You can also override the entire config file.
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
'show_warnings' => false, // Throw an Exception on warnings from dompdf
|
||||||
|
'orientation' => 'portrait',
|
||||||
|
/*
|
||||||
|
* Dejavu Sans font is missing glyphs for converted entities, turn it off if you need to show € and £.
|
||||||
|
*/
|
||||||
|
'convert_entities' => false,
|
||||||
|
'defines' => array(
|
||||||
|
/**
|
||||||
|
* The location of the DOMPDF font directory
|
||||||
|
*
|
||||||
|
* The location of the directory where DOMPDF will store fonts and font metrics
|
||||||
|
* Note: This directory must exist and be writable by the webserver process.
|
||||||
|
* *Please note the trailing slash.*
|
||||||
|
*
|
||||||
|
* Notes regarding fonts:
|
||||||
|
* Additional .afm font metrics can be added by executing load_font.php from command line.
|
||||||
|
*
|
||||||
|
* Only the original "Base 14 fonts" are present on all pdf viewers. Additional fonts must
|
||||||
|
* be embedded in the pdf file or the PDF may not display correctly. This can significantly
|
||||||
|
* increase file size unless font subsetting is enabled. Before embedding a font please
|
||||||
|
* review your rights under the font license.
|
||||||
|
*
|
||||||
|
* Any font specification in the source HTML is translated to the closest font available
|
||||||
|
* in the font directory.
|
||||||
|
*
|
||||||
|
* The pdf standard "Base 14 fonts" are:
|
||||||
|
* Courier, Courier-Bold, Courier-BoldOblique, Courier-Oblique,
|
||||||
|
* Helvetica, Helvetica-Bold, Helvetica-BoldOblique, Helvetica-Oblique,
|
||||||
|
* Times-Roman, Times-Bold, Times-BoldItalic, Times-Italic,
|
||||||
|
* Symbol, ZapfDingbats.
|
||||||
|
*/
|
||||||
|
"font_dir" => storage_path('fonts'), // advised by dompdf (https://github.com/dompdf/dompdf/pull/782)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The location of the DOMPDF font cache directory
|
||||||
|
*
|
||||||
|
* This directory contains the cached font metrics for the fonts used by DOMPDF.
|
||||||
|
* This directory can be the same as DOMPDF_FONT_DIR
|
||||||
|
*
|
||||||
|
* Note: This directory must exist and be writable by the webserver process.
|
||||||
|
*/
|
||||||
|
"font_cache" => storage_path('fonts'),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The location of a temporary directory.
|
||||||
|
*
|
||||||
|
* The directory specified must be writeable by the webserver process.
|
||||||
|
* The temporary directory is required to download remote images and when
|
||||||
|
* using the PFDLib back end.
|
||||||
|
*/
|
||||||
|
"temp_dir" => sys_get_temp_dir(),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ==== IMPORTANT ====
|
||||||
|
*
|
||||||
|
* dompdf's "chroot": Prevents dompdf from accessing system files or other
|
||||||
|
* files on the webserver. All local files opened by dompdf must be in a
|
||||||
|
* subdirectory of this directory. DO NOT set it to '/' since this could
|
||||||
|
* allow an attacker to use dompdf to read any files on the server. This
|
||||||
|
* should be an absolute path.
|
||||||
|
* This is only checked on command line call by dompdf.php, but not by
|
||||||
|
* direct class use like:
|
||||||
|
* $dompdf = new DOMPDF(); $dompdf->load_html($htmldata); $dompdf->render(); $pdfdata = $dompdf->output();
|
||||||
|
*/
|
||||||
|
"chroot" => realpath(base_path()),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Whether to enable font subsetting or not.
|
||||||
|
*/
|
||||||
|
"enable_font_subsetting" => false,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The PDF rendering backend to use
|
||||||
|
*
|
||||||
|
* Valid settings are 'PDFLib', 'CPDF' (the bundled R&OS PDF class), 'GD' and
|
||||||
|
* 'auto'. 'auto' will look for PDFLib and use it if found, or if not it will
|
||||||
|
* fall back on CPDF. 'GD' renders PDFs to graphic files. {@link
|
||||||
|
* Canvas_Factory} ultimately determines which rendering class to instantiate
|
||||||
|
* based on this setting.
|
||||||
|
*
|
||||||
|
* Both PDFLib & CPDF rendering backends provide sufficient rendering
|
||||||
|
* capabilities for dompdf, however additional features (e.g. object,
|
||||||
|
* image and font support, etc.) differ between backends. Please see
|
||||||
|
* {@link PDFLib_Adapter} for more information on the PDFLib backend
|
||||||
|
* and {@link CPDF_Adapter} and lib/class.pdf.php for more information
|
||||||
|
* on CPDF. Also see the documentation for each backend at the links
|
||||||
|
* below.
|
||||||
|
*
|
||||||
|
* The GD rendering backend is a little different than PDFLib and
|
||||||
|
* CPDF. Several features of CPDF and PDFLib are not supported or do
|
||||||
|
* not make any sense when creating image files. For example,
|
||||||
|
* multiple pages are not supported, nor are PDF 'objects'. Have a
|
||||||
|
* look at {@link GD_Adapter} for more information. GD support is
|
||||||
|
* experimental, so use it at your own risk.
|
||||||
|
*
|
||||||
|
* @link http://www.pdflib.com
|
||||||
|
* @link http://www.ros.co.nz/pdf
|
||||||
|
* @link http://www.php.net/image
|
||||||
|
*/
|
||||||
|
"pdf_backend" => "CPDF",
|
||||||
|
|
||||||
|
/**
|
||||||
|
* PDFlib license key
|
||||||
|
*
|
||||||
|
* If you are using a licensed, commercial version of PDFlib, specify
|
||||||
|
* your license key here. If you are using PDFlib-Lite or are evaluating
|
||||||
|
* the commercial version of PDFlib, comment out this setting.
|
||||||
|
*
|
||||||
|
* @link http://www.pdflib.com
|
||||||
|
*
|
||||||
|
* If pdflib present in web server and auto or selected explicitely above,
|
||||||
|
* a real license code must exist!
|
||||||
|
*/
|
||||||
|
//"DOMPDF_PDFLIB_LICENSE" => "your license key here",
|
||||||
|
|
||||||
|
/**
|
||||||
|
* html target media view which should be rendered into pdf.
|
||||||
|
* List of types and parsing rules for future extensions:
|
||||||
|
* http://www.w3.org/TR/REC-html40/types.html
|
||||||
|
* screen, tty, tv, projection, handheld, print, braille, aural, all
|
||||||
|
* Note: aural is deprecated in CSS 2.1 because it is replaced by speech in CSS 3.
|
||||||
|
* Note, even though the generated pdf file is intended for print output,
|
||||||
|
* the desired content might be different (e.g. screen or projection view of html file).
|
||||||
|
* Therefore allow specification of content here.
|
||||||
|
*/
|
||||||
|
"default_media_type" => "screen",
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The default paper size.
|
||||||
|
*
|
||||||
|
* North America standard is "letter"; other countries generally "a4"
|
||||||
|
*
|
||||||
|
* @see CPDF_Adapter::PAPER_SIZES for valid sizes ('letter', 'legal', 'A4', etc.)
|
||||||
|
*/
|
||||||
|
"default_paper_size" => "a4",
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The default font family
|
||||||
|
*
|
||||||
|
* Used if no suitable fonts can be found. This must exist in the font folder.
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
"default_font" => "serif",
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Image DPI setting
|
||||||
|
*
|
||||||
|
* This setting determines the default DPI setting for images and fonts. The
|
||||||
|
* DPI may be overridden for inline images by explictly setting the
|
||||||
|
* image's width & height style attributes (i.e. if the image's native
|
||||||
|
* width is 600 pixels and you specify the image's width as 72 points,
|
||||||
|
* the image will have a DPI of 600 in the rendered PDF. The DPI of
|
||||||
|
* background images can not be overridden and is controlled entirely
|
||||||
|
* via this parameter.
|
||||||
|
*
|
||||||
|
* For the purposes of DOMPDF, pixels per inch (PPI) = dots per inch (DPI).
|
||||||
|
* If a size in html is given as px (or without unit as image size),
|
||||||
|
* this tells the corresponding size in pt.
|
||||||
|
* This adjusts the relative sizes to be similar to the rendering of the
|
||||||
|
* html page in a reference browser.
|
||||||
|
*
|
||||||
|
* In pdf, always 1 pt = 1/72 inch
|
||||||
|
*
|
||||||
|
* Rendering resolution of various browsers in px per inch:
|
||||||
|
* Windows Firefox and Internet Explorer:
|
||||||
|
* SystemControl->Display properties->FontResolution: Default:96, largefonts:120, custom:?
|
||||||
|
* Linux Firefox:
|
||||||
|
* about:config *resolution: Default:96
|
||||||
|
* (xorg screen dimension in mm and Desktop font dpi settings are ignored)
|
||||||
|
*
|
||||||
|
* Take care about extra font/image zoom factor of browser.
|
||||||
|
*
|
||||||
|
* In images, <img> size in pixel attribute, img css style, are overriding
|
||||||
|
* the real image dimension in px for rendering.
|
||||||
|
*
|
||||||
|
* @var int
|
||||||
|
*/
|
||||||
|
"dpi" => 96,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enable inline PHP
|
||||||
|
*
|
||||||
|
* If this setting is set to true then DOMPDF will automatically evaluate
|
||||||
|
* inline PHP contained within <script type="text/php"> ... </script> tags.
|
||||||
|
*
|
||||||
|
* Enabling this for documents you do not trust (e.g. arbitrary remote html
|
||||||
|
* pages) is a security risk. Set this option to false if you wish to process
|
||||||
|
* untrusted documents.
|
||||||
|
*
|
||||||
|
* @var bool
|
||||||
|
*/
|
||||||
|
"enable_php" => false,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enable inline Javascript
|
||||||
|
*
|
||||||
|
* If this setting is set to true then DOMPDF will automatically insert
|
||||||
|
* JavaScript code contained within <script type="text/javascript"> ... </script> tags.
|
||||||
|
*
|
||||||
|
* @var bool
|
||||||
|
*/
|
||||||
|
"enable_javascript" => true,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enable remote file access
|
||||||
|
*
|
||||||
|
* If this setting is set to true, DOMPDF will access remote sites for
|
||||||
|
* images and CSS files as required.
|
||||||
|
* This is required for part of test case www/test/image_variants.html through www/examples.php
|
||||||
|
*
|
||||||
|
* Attention!
|
||||||
|
* This can be a security risk, in particular in combination with DOMPDF_ENABLE_PHP and
|
||||||
|
* allowing remote access to dompdf.php or on allowing remote html code to be passed to
|
||||||
|
* $dompdf = new DOMPDF(, $dompdf->load_html(...,
|
||||||
|
* This allows anonymous users to download legally doubtful internet content which on
|
||||||
|
* tracing back appears to being downloaded by your server, or allows malicious php code
|
||||||
|
* in remote html pages to be executed by your server with your account privileges.
|
||||||
|
*
|
||||||
|
* @var bool
|
||||||
|
*/
|
||||||
|
"enable_remote" => true,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A ratio applied to the fonts height to be more like browsers' line height
|
||||||
|
*/
|
||||||
|
"font_height_ratio" => 1.1,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Use the more-than-experimental HTML5 Lib parser
|
||||||
|
*/
|
||||||
|
"enable_html5_parser" => false,
|
||||||
|
),
|
||||||
|
|
||||||
|
|
||||||
|
);
|
||||||
158
config/livewire.php
Normal file
158
config/livewire.php
Normal file
@@ -0,0 +1,158 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
return [
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Class Namespace
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| This value sets the root namespace for Livewire component classes in
|
||||||
|
| your application. This value affects component auto-discovery and
|
||||||
|
| any Livewire file helper commands, like `artisan make:livewire`.
|
||||||
|
|
|
||||||
|
| After changing this item, run: `php artisan livewire:discover`.
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'class_namespace' => 'App\\Http\\Livewire',
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| View Path
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| This value sets the path for Livewire component views. This affects
|
||||||
|
| file manipulation helper commands like `artisan make:livewire`.
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'view_path' => resource_path('views/livewire'),
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Layout
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| The default layout view that will be used when rendering a component via
|
||||||
|
| Route::get('/some-endpoint', SomeComponent::class);. In this case the
|
||||||
|
| the view returned by SomeComponent will be wrapped in "layouts.app"
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'layout' => 'layouts.app',
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Livewire Assets URL
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| This value sets the path to Livewire JavaScript assets, for cases where
|
||||||
|
| your app's domain root is not the correct path. By default, Livewire
|
||||||
|
| will load its JavaScript assets from the app's "relative root".
|
||||||
|
|
|
||||||
|
| Examples: "/assets", "myurl.com/app".
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'asset_url' => env('APP_URL'),
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Livewire App URL
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| This value should be used if livewire assets are served from CDN.
|
||||||
|
| Livewire will communicate with an app through this url.
|
||||||
|
|
|
||||||
|
| Examples: "https://my-app.com", "myurl.com/app".
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'app_url' => null,
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Livewire Endpoint Middleware Group
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| This value sets the middleware group that will be applied to the main
|
||||||
|
| Livewire "message" endpoint (the endpoint that gets hit everytime
|
||||||
|
| a Livewire component updates). It is set to "web" by default.
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'middleware_group' => 'web',
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Livewire Temporary File Uploads Endpoint Configuration
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| Livewire handles file uploads by storing uploads in a temporary directory
|
||||||
|
| before the file is validated and stored permanently. All file uploads
|
||||||
|
| are directed to a global endpoint for temporary storage. The config
|
||||||
|
| items below are used for customizing the way the endpoint works.
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'temporary_file_upload' => [
|
||||||
|
'disk' => env('PRIVATE_FILESYSTEM_DISK', 'local'), // Example: 'local', 's3' Default: 'default'
|
||||||
|
'rules' => null, // Example: ['file', 'mimes:png,jpg'] Default: ['required', 'file', 'max:12288'] (12MB)
|
||||||
|
'directory' => null, // Example: 'tmp' Default 'livewire-tmp'
|
||||||
|
'middleware' => null, // Example: 'throttle:5,1' Default: 'throttle:60,1'
|
||||||
|
'preview_mimes' => [ // Supported file types for temporary pre-signed file URLs.
|
||||||
|
'png', 'gif', 'bmp', 'svg', 'wav', 'mp4',
|
||||||
|
'mov', 'avi', 'wmv', 'mp3', 'm4a',
|
||||||
|
'jpg', 'jpeg', 'mpga', 'webp', 'wma',
|
||||||
|
],
|
||||||
|
'max_upload_time' => 5, // Max duration (in minutes) before an upload gets invalidated.
|
||||||
|
],
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Manifest File Path
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| This value sets the path to the Livewire manifest file.
|
||||||
|
| The default should work for most cases (which is
|
||||||
|
| "<app_root>/bootstrap/cache/livewire-components.php"), but for specific
|
||||||
|
| cases like when hosting on Laravel Vapor, it could be set to a different value.
|
||||||
|
|
|
||||||
|
| Example: for Laravel Vapor, it would be "/tmp/storage/bootstrap/cache/livewire-components.php".
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'manifest_path' => null,
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Back Button Cache
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| This value determines whether the back button cache will be used on pages
|
||||||
|
| that contain Livewire. By disabling back button cache, it ensures that
|
||||||
|
| the back button shows the correct state of components, instead of
|
||||||
|
| potentially stale, cached data.
|
||||||
|
|
|
||||||
|
| Setting it to "false" (default) will disable back button cache.
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'back_button_cache' => false,
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Render On Redirect
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| This value determines whether Livewire will render before it's redirected
|
||||||
|
| or not. Setting it to "false" (default) will mean the render method is
|
||||||
|
| skipped when redirecting. And "true" will mean the render method is
|
||||||
|
| run before redirecting. Browsers bfcache can store a potentially
|
||||||
|
| stale view if render is skipped on redirect.
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'render_on_redirect' => false,
|
||||||
|
|
||||||
|
];
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
<?php
|
<?php
|
||||||
return array (
|
return array (
|
||||||
'app_version' => 'v6.0.1',
|
'app_version' => 'v6.0.5',
|
||||||
'full_app_version' => 'v6.0.1 - build 7750-gb2e7572fe',
|
'full_app_version' => 'v6.0.5 - build 8126-g89c234b1c',
|
||||||
'build_version' => '7750',
|
'build_version' => '8126',
|
||||||
'prerelease_version' => '',
|
'prerelease_version' => '',
|
||||||
'hash_version' => 'gb2e7572fe',
|
'hash_version' => 'g89c234b1c',
|
||||||
'full_hash' => 'v6.0.1-29-gb2e7572fe',
|
'full_hash' => 'v6.0.5-74-g89c234b1c',
|
||||||
'branch' => 'master',
|
'branch' => 'master',
|
||||||
);
|
);
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
use App\Models\Actionlog;
|
||||||
|
|
||||||
|
class RemoveStoredEulaField extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function up()
|
||||||
|
{
|
||||||
|
|
||||||
|
$actionlog_eulas = Actionlog::whereNotNull('stored_eula_file')->get();
|
||||||
|
|
||||||
|
foreach ($actionlog_eulas as $eula_file) {
|
||||||
|
$eula_file->filename = $eula_file->stored_eula_file;
|
||||||
|
$eula_file->save();
|
||||||
|
}
|
||||||
|
|
||||||
|
$actionlog_bad_action_type = Actionlog::where('item_id', '=', 0)->whereNull('target_type')->whereNull('action_type')->whereNull('target_type')->get();
|
||||||
|
|
||||||
|
foreach ($actionlog_bad_action_type as $bad_action_type) {
|
||||||
|
$bad_action_type->delete();
|
||||||
|
}
|
||||||
|
|
||||||
|
Schema::table('action_logs', function (Blueprint $table) {
|
||||||
|
$table->dropColumn('stored_eula_file');
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function down()
|
||||||
|
{
|
||||||
|
Schema::table('action_logs', function (Blueprint $table) {
|
||||||
|
$table->string('stored_eula_file')->nullable()->default(null);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
50
index.html
50
index.html
@@ -1,50 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>
|
|
||||||
Snipe-IT Setup
|
|
||||||
</title>
|
|
||||||
|
|
||||||
<style>
|
|
||||||
td, th {
|
|
||||||
font-size: 14px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.preflight-success {
|
|
||||||
color: green;
|
|
||||||
}
|
|
||||||
|
|
||||||
.preflight-error {
|
|
||||||
color: red;
|
|
||||||
}
|
|
||||||
|
|
||||||
.preflight-warning {
|
|
||||||
color: orange;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-header {
|
|
||||||
font-size: 280%;
|
|
||||||
}
|
|
||||||
|
|
||||||
h3 {
|
|
||||||
font-size: 250%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.alert {
|
|
||||||
font-size: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
</style>
|
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div class="container">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-11 col-lg-offset-1">
|
|
||||||
<h1>D'oh. If you're seeing this, your DocumentRoot is set incorrectly. It should be set to the <code>public</code> directory.
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
91
package-lock.json
generated
91
package-lock.json
generated
@@ -1388,27 +1388,27 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@types/eslint": {
|
"@types/eslint": {
|
||||||
"version": "8.2.1",
|
"version": "8.4.2",
|
||||||
"resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.2.1.tgz",
|
"resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.2.tgz",
|
||||||
"integrity": "sha512-UP9rzNn/XyGwb5RQ2fok+DzcIRIYwc16qTXse5+Smsy8MOIccCChT15KAwnsgQx4PzJkaMq4myFyZ4CL5TjhIQ==",
|
"integrity": "sha512-Z1nseZON+GEnFjJc04sv4NSALGjhFwy6K0HXt7qsn5ArfAKtb63dXNJHf+1YW6IpOIYRBGUbu3GwJdj8DGnCjA==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@types/estree": "*",
|
"@types/estree": "*",
|
||||||
"@types/json-schema": "*"
|
"@types/json-schema": "*"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@types/eslint-scope": {
|
"@types/eslint-scope": {
|
||||||
"version": "3.7.2",
|
"version": "3.7.3",
|
||||||
"resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.2.tgz",
|
"resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz",
|
||||||
"integrity": "sha512-TzgYCWoPiTeRg6RQYgtuW7iODtVoKu3RVL72k3WohqhjfaOLK5Mg2T4Tg1o2bSfu0vPkoI48wdQFv5b/Xe04wQ==",
|
"integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@types/eslint": "*",
|
"@types/eslint": "*",
|
||||||
"@types/estree": "*"
|
"@types/estree": "*"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@types/estree": {
|
"@types/estree": {
|
||||||
"version": "0.0.50",
|
"version": "0.0.51",
|
||||||
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz",
|
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz",
|
||||||
"integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw=="
|
"integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ=="
|
||||||
},
|
},
|
||||||
"@types/glob": {
|
"@types/glob": {
|
||||||
"version": "7.2.0",
|
"version": "7.2.0",
|
||||||
@@ -1810,9 +1810,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"acorn": {
|
"acorn": {
|
||||||
"version": "8.6.0",
|
"version": "8.7.1",
|
||||||
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.6.0.tgz",
|
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz",
|
||||||
"integrity": "sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw=="
|
"integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A=="
|
||||||
},
|
},
|
||||||
"acorn-import-assertions": {
|
"acorn-import-assertions": {
|
||||||
"version": "1.8.0",
|
"version": "1.8.0",
|
||||||
@@ -4565,9 +4565,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"enhanced-resolve": {
|
"enhanced-resolve": {
|
||||||
"version": "5.8.3",
|
"version": "5.9.3",
|
||||||
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz",
|
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz",
|
||||||
"integrity": "sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA==",
|
"integrity": "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"graceful-fs": "^4.2.4",
|
"graceful-fs": "^4.2.4",
|
||||||
"tapable": "^2.2.0"
|
"tapable": "^2.2.0"
|
||||||
@@ -15624,9 +15624,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"jquery": {
|
"jquery": {
|
||||||
"version": "3.6.0",
|
"version": "3.5.1",
|
||||||
"resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz",
|
"resolved": "https://registry.npmjs.org/jquery/-/jquery-3.5.1.tgz",
|
||||||
"integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw=="
|
"integrity": "sha512-XwIBPqcMn57FxfT+Go5pzySnm4KWkT1Tv7gjrpT1srtf8Weynl6R273VJ5GjkRb51IzMp5nbaPjJXMWeju2MKg=="
|
||||||
},
|
},
|
||||||
"jquery-form-validator": {
|
"jquery-form-validator": {
|
||||||
"version": "2.3.79",
|
"version": "2.3.79",
|
||||||
@@ -15662,9 +15662,9 @@
|
|||||||
"integrity": "sha1-G+i3twTdOFcVJwiu+x1KSzpp+zM="
|
"integrity": "sha1-G+i3twTdOFcVJwiu+x1KSzpp+zM="
|
||||||
},
|
},
|
||||||
"jquery-ui": {
|
"jquery-ui": {
|
||||||
"version": "1.13.0",
|
"version": "1.13.1",
|
||||||
"resolved": "https://registry.npmjs.org/jquery-ui/-/jquery-ui-1.13.0.tgz",
|
"resolved": "https://registry.npmjs.org/jquery-ui/-/jquery-ui-1.13.1.tgz",
|
||||||
"integrity": "sha512-Osf7ECXNTYHtKBkn9xzbIf9kifNrBhfywFEKxOeB/OVctVmLlouV9mfc2qXCp6uyO4Pn72PXKOnj09qXetopCw==",
|
"integrity": "sha512-2VlU59N5P4HaumDK1Z3XEVjSvegFbEOQRgpHUBaB2Ak98Axl3hFhJ6RFcNQNuk9SfL6WxIbuLst8dW/U56NSiA==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"jquery": ">=1.8.0 <4.0.0"
|
"jquery": ">=1.8.0 <4.0.0"
|
||||||
}
|
}
|
||||||
@@ -15696,16 +15696,10 @@
|
|||||||
"resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
|
||||||
"integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ=="
|
"integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ=="
|
||||||
},
|
},
|
||||||
"json-parse-better-errors": {
|
|
||||||
"version": "1.0.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
|
|
||||||
"integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw=="
|
|
||||||
},
|
|
||||||
"json-parse-even-better-errors": {
|
"json-parse-even-better-errors": {
|
||||||
"version": "2.3.1",
|
"version": "2.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
|
"resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
|
||||||
"integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
|
"integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w=="
|
||||||
"dev": true
|
|
||||||
},
|
},
|
||||||
"json-schema-traverse": {
|
"json-schema-traverse": {
|
||||||
"version": "0.4.1",
|
"version": "0.4.1",
|
||||||
@@ -16212,9 +16206,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"loader-runner": {
|
"loader-runner": {
|
||||||
"version": "4.2.0",
|
"version": "4.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz",
|
||||||
"integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw=="
|
"integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg=="
|
||||||
},
|
},
|
||||||
"loader-utils": {
|
"loader-utils": {
|
||||||
"version": "1.4.0",
|
"version": "1.4.0",
|
||||||
@@ -19636,12 +19630,12 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"webpack": {
|
"webpack": {
|
||||||
"version": "5.65.0",
|
"version": "5.72.1",
|
||||||
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.65.0.tgz",
|
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.72.1.tgz",
|
||||||
"integrity": "sha512-Q5or2o6EKs7+oKmJo7LaqZaMOlDWQse9Tm5l1WAfU/ujLGN5Pb0SqGeVkN/4bpPmEqEP5RnVhiqsOtWtUVwGRw==",
|
"integrity": "sha512-dXG5zXCLspQR4krZVR6QgajnZOjW2K/djHvdcRaDQvsjV9z9vaW6+ja5dZOYbqBBjF6kGXka/2ZyxNdc+8Jung==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@types/eslint-scope": "^3.7.0",
|
"@types/eslint-scope": "^3.7.3",
|
||||||
"@types/estree": "^0.0.50",
|
"@types/estree": "^0.0.51",
|
||||||
"@webassemblyjs/ast": "1.11.1",
|
"@webassemblyjs/ast": "1.11.1",
|
||||||
"@webassemblyjs/wasm-edit": "1.11.1",
|
"@webassemblyjs/wasm-edit": "1.11.1",
|
||||||
"@webassemblyjs/wasm-parser": "1.11.1",
|
"@webassemblyjs/wasm-parser": "1.11.1",
|
||||||
@@ -19649,13 +19643,13 @@
|
|||||||
"acorn-import-assertions": "^1.7.6",
|
"acorn-import-assertions": "^1.7.6",
|
||||||
"browserslist": "^4.14.5",
|
"browserslist": "^4.14.5",
|
||||||
"chrome-trace-event": "^1.0.2",
|
"chrome-trace-event": "^1.0.2",
|
||||||
"enhanced-resolve": "^5.8.3",
|
"enhanced-resolve": "^5.9.3",
|
||||||
"es-module-lexer": "^0.9.0",
|
"es-module-lexer": "^0.9.0",
|
||||||
"eslint-scope": "5.1.1",
|
"eslint-scope": "5.1.1",
|
||||||
"events": "^3.2.0",
|
"events": "^3.2.0",
|
||||||
"glob-to-regexp": "^0.4.1",
|
"glob-to-regexp": "^0.4.1",
|
||||||
"graceful-fs": "^4.2.4",
|
"graceful-fs": "^4.2.9",
|
||||||
"json-parse-better-errors": "^1.0.2",
|
"json-parse-even-better-errors": "^2.3.1",
|
||||||
"loader-runner": "^4.2.0",
|
"loader-runner": "^4.2.0",
|
||||||
"mime-types": "^2.1.27",
|
"mime-types": "^2.1.27",
|
||||||
"neo-async": "^2.6.2",
|
"neo-async": "^2.6.2",
|
||||||
@@ -19663,13 +19657,18 @@
|
|||||||
"tapable": "^2.1.1",
|
"tapable": "^2.1.1",
|
||||||
"terser-webpack-plugin": "^5.1.3",
|
"terser-webpack-plugin": "^5.1.3",
|
||||||
"watchpack": "^2.3.1",
|
"watchpack": "^2.3.1",
|
||||||
"webpack-sources": "^3.2.2"
|
"webpack-sources": "^3.2.3"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/json-schema": {
|
"@types/json-schema": {
|
||||||
"version": "7.0.9",
|
"version": "7.0.11",
|
||||||
"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz",
|
"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz",
|
||||||
"integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ=="
|
"integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ=="
|
||||||
|
},
|
||||||
|
"graceful-fs": {
|
||||||
|
"version": "4.2.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
|
||||||
|
"integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA=="
|
||||||
},
|
},
|
||||||
"schema-utils": {
|
"schema-utils": {
|
||||||
"version": "3.1.1",
|
"version": "3.1.1",
|
||||||
@@ -19682,9 +19681,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"webpack-sources": {
|
"webpack-sources": {
|
||||||
"version": "3.2.2",
|
"version": "3.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz",
|
||||||
"integrity": "sha512-cp5qdmHnu5T8wRg2G3vZZHoJPN14aqQ89SyQ11NpGH5zEMDCclt49rzo+MaRazk7/UeILhAI+/sEtcM+7Fr0nw=="
|
"integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w=="
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
"@fortawesome/fontawesome-free": "^5.15.4",
|
"@fortawesome/fontawesome-free": "^5.15.4",
|
||||||
"axios": "^0.20.0",
|
"axios": "^0.20.0",
|
||||||
"babel-preset-latest": "^6.24.1",
|
"babel-preset-latest": "^6.24.1",
|
||||||
"jquery": "^3.6.0",
|
"jquery": "<3.6.0",
|
||||||
"laravel-mix": "^6.0.39",
|
"laravel-mix": "^6.0.39",
|
||||||
"lodash": "^4.17.20",
|
"lodash": "^4.17.20",
|
||||||
"postcss": "^8.4.5",
|
"postcss": "^8.4.5",
|
||||||
@@ -25,7 +25,7 @@
|
|||||||
"vue-template-compiler": "2.4.4"
|
"vue-template-compiler": "2.4.4"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"acorn": "^8.6.0",
|
"acorn": "^8.7.0",
|
||||||
"acorn-import-assertions": "^1.8.0",
|
"acorn-import-assertions": "^1.8.0",
|
||||||
"admin-lte": "^2.4.18",
|
"admin-lte": "^2.4.18",
|
||||||
"ajv": "^6.12.6",
|
"ajv": "^6.12.6",
|
||||||
@@ -43,7 +43,7 @@
|
|||||||
"imagemin": "^5.3.1",
|
"imagemin": "^5.3.1",
|
||||||
"jquery-form-validator": "^2.3.79",
|
"jquery-form-validator": "^2.3.79",
|
||||||
"jquery-slimscroll": "^1.3.8",
|
"jquery-slimscroll": "^1.3.8",
|
||||||
"jquery-ui": "^1.13.0",
|
"jquery-ui": "^1.13.1",
|
||||||
"jquery-ui-bundle": "^1.12.1",
|
"jquery-ui-bundle": "^1.12.1",
|
||||||
"jquery.iframe-transport": "^1.0.0",
|
"jquery.iframe-transport": "^1.0.0",
|
||||||
"jspdf-autotable": "^3.5.23",
|
"jspdf-autotable": "^3.5.23",
|
||||||
@@ -56,6 +56,6 @@
|
|||||||
"tableexport.jquery.plugin": "1.26.0",
|
"tableexport.jquery.plugin": "1.26.0",
|
||||||
"tether": "^1.4.0",
|
"tether": "^1.4.0",
|
||||||
"vue-resource": "^1.5.2",
|
"vue-resource": "^1.5.2",
|
||||||
"webpack": "^5.65.0"
|
"webpack": "^5.72.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
21531
public/css/dist/all.css
vendored
21531
public/css/dist/all.css
vendored
File diff suppressed because one or more lines are too long
396
public/css/dist/bootstrap-table.css
vendored
396
public/css/dist/bootstrap-table.css
vendored
File diff suppressed because one or more lines are too long
136
public/css/dist/signature-pad.css
vendored
136
public/css/dist/signature-pad.css
vendored
@@ -1 +1,135 @@
|
|||||||
#signature-pad{padding-top:250px;margin:auto}.m-signature-pad{position:relative;font-size:10px;width:100%;height:300px;border:1px solid #e8e8e8;background-color:#fff;box-shadow:0 1px 4px rgba(0,0,0,.27),0 0 40px rgba(0,0,0,.08) inset;border-radius:4px}.m-signature-pad:after,.m-signature-pad:before{position:absolute;z-index:-1;content:"";width:40%;height:10px;left:20px;bottom:10px;background:0 0;-webkit-transform:skew(-3deg) rotate(-3deg);-moz-transform:skew(-3deg) rotate(-3deg);-ms-transform:skew(-3deg) rotate(-3deg);-o-transform:skew(-3deg) rotate(-3deg);transform:skew(-3deg) rotate(-3deg);box-shadow:0 8px 12px rgba(0,0,0,.4)}.m-signature-pad:after{left:auto;right:20px;-webkit-transform:skew(3deg) rotate(3deg);-moz-transform:skew(3deg) rotate(3deg);-ms-transform:skew(3deg) rotate(3deg);-o-transform:skew(3deg) rotate(3deg);transform:skew(3deg) rotate(3deg)}.m-signature-pad--body{position:absolute;top:20px;bottom:60px;border:1px solid #f4f4f4;background-color:#fff}.m-signature-pad--body canvas{position:absolute;left:0;top:0;width:100%;height:100%;border-radius:4px;box-shadow:0 0 5px rgba(0,0,0,.02) inset}.m-signature-pad--footer{position:absolute;left:20px;right:20px;bottom:20px;height:40px}.m-signature-pad--footer .description{color:#c3c3c3;text-align:center;font-size:1.2em;margin-top:1.8em}.m-signature-pad--footer .button{position:absolute;bottom:0}.m-signature-pad--footer .button.clear{left:0}.m-signature-pad--footer .button.save{right:0}@media screen and (max-width:1024px){.m-signature-pad{top:0;left:0;right:0;bottom:0;width:auto;height:auto;min-width:250px;min-height:140px;margin:5%}}@media screen and (min-device-width:768px) and (max-device-width:1024px){.m-signature-pad{margin:10%}}@media screen and (max-height:320px){.m-signature-pad--body{left:0;right:0;top:0;bottom:32px}.m-signature-pad--footer{left:20px;right:20px;bottom:4px;height:28px}.m-signature-pad--footer .description{font-size:1em;margin-top:1em}}
|
|
||||||
|
#signature-pad {
|
||||||
|
padding-top: 250px;
|
||||||
|
margin: auto;
|
||||||
|
}
|
||||||
|
.m-signature-pad {
|
||||||
|
|
||||||
|
position: relative;
|
||||||
|
font-size: 10px;
|
||||||
|
width: 100%;
|
||||||
|
height: 300px;
|
||||||
|
border: 1px solid #e8e8e8;
|
||||||
|
background-color: #fff;
|
||||||
|
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.27), 0 0 40px rgba(0, 0, 0, 0.08) inset;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.m-signature-pad:before, .m-signature-pad:after {
|
||||||
|
position: absolute;
|
||||||
|
z-index: -1;
|
||||||
|
content: "";
|
||||||
|
width: 40%;
|
||||||
|
height: 10px;
|
||||||
|
left: 20px;
|
||||||
|
bottom: 10px;
|
||||||
|
background: transparent;
|
||||||
|
-webkit-transform: skew(-3deg) rotate(-3deg);
|
||||||
|
-moz-transform: skew(-3deg) rotate(-3deg);
|
||||||
|
-ms-transform: skew(-3deg) rotate(-3deg);
|
||||||
|
-o-transform: skew(-3deg) rotate(-3deg);
|
||||||
|
transform: skew(-3deg) rotate(-3deg);
|
||||||
|
box-shadow: 0 8px 12px rgba(0, 0, 0, 0.4);
|
||||||
|
}
|
||||||
|
|
||||||
|
.m-signature-pad:after {
|
||||||
|
left: auto;
|
||||||
|
right: 20px;
|
||||||
|
-webkit-transform: skew(3deg) rotate(3deg);
|
||||||
|
-moz-transform: skew(3deg) rotate(3deg);
|
||||||
|
-ms-transform: skew(3deg) rotate(3deg);
|
||||||
|
-o-transform: skew(3deg) rotate(3deg);
|
||||||
|
transform: skew(3deg) rotate(3deg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.m-signature-pad--body {
|
||||||
|
position: absolute;
|
||||||
|
top: 20px;
|
||||||
|
bottom: 60px;
|
||||||
|
border: 1px solid #f4f4f4;
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.m-signature-pad--body
|
||||||
|
canvas {
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
border-radius: 4px;
|
||||||
|
box-shadow: 0 0 5px rgba(0, 0, 0, 0.02) inset;
|
||||||
|
}
|
||||||
|
|
||||||
|
.m-signature-pad--footer {
|
||||||
|
position: absolute;
|
||||||
|
left: 20px;
|
||||||
|
right: 20px;
|
||||||
|
bottom: 20px;
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.m-signature-pad--footer
|
||||||
|
.description {
|
||||||
|
color: #C3C3C3;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 1.2em;
|
||||||
|
margin-top: 1.8em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.m-signature-pad--footer
|
||||||
|
.button {
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.m-signature-pad--footer
|
||||||
|
.button.clear {
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.m-signature-pad--footer
|
||||||
|
.button.save {
|
||||||
|
right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 1024px) {
|
||||||
|
.m-signature-pad {
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
width: auto;
|
||||||
|
height: auto;
|
||||||
|
min-width: 250px;
|
||||||
|
min-height: 140px;
|
||||||
|
margin: 5%;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (min-device-width: 768px) and (max-device-width: 1024px) {
|
||||||
|
.m-signature-pad {
|
||||||
|
margin: 10%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-height: 320px) {
|
||||||
|
.m-signature-pad--body {
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
top: 0;
|
||||||
|
bottom: 32px;
|
||||||
|
}
|
||||||
|
.m-signature-pad--footer {
|
||||||
|
left: 20px;
|
||||||
|
right: 20px;
|
||||||
|
bottom: 4px;
|
||||||
|
height: 28px;
|
||||||
|
}
|
||||||
|
.m-signature-pad--footer
|
||||||
|
.description {
|
||||||
|
font-size: 1em;
|
||||||
|
margin-top: 1em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
136
public/css/dist/signature-pad.min.css
vendored
136
public/css/dist/signature-pad.min.css
vendored
@@ -1 +1,135 @@
|
|||||||
#signature-pad{padding-top:250px;margin:auto}.m-signature-pad{position:relative;font-size:10px;width:100%;height:300px;border:1px solid #e8e8e8;background-color:#fff;box-shadow:0 1px 4px rgba(0,0,0,.27),0 0 40px rgba(0,0,0,.08) inset;border-radius:4px}.m-signature-pad:after,.m-signature-pad:before{position:absolute;z-index:-1;content:"";width:40%;height:10px;left:20px;bottom:10px;background:0 0;-webkit-transform:skew(-3deg) rotate(-3deg);-moz-transform:skew(-3deg) rotate(-3deg);-ms-transform:skew(-3deg) rotate(-3deg);-o-transform:skew(-3deg) rotate(-3deg);transform:skew(-3deg) rotate(-3deg);box-shadow:0 8px 12px rgba(0,0,0,.4)}.m-signature-pad:after{left:auto;right:20px;-webkit-transform:skew(3deg) rotate(3deg);-moz-transform:skew(3deg) rotate(3deg);-ms-transform:skew(3deg) rotate(3deg);-o-transform:skew(3deg) rotate(3deg);transform:skew(3deg) rotate(3deg)}.m-signature-pad--body{position:absolute;top:20px;bottom:60px;border:1px solid #f4f4f4;background-color:#fff}.m-signature-pad--body canvas{position:absolute;left:0;top:0;width:100%;height:100%;border-radius:4px;box-shadow:0 0 5px rgba(0,0,0,.02) inset}.m-signature-pad--footer{position:absolute;left:20px;right:20px;bottom:20px;height:40px}.m-signature-pad--footer .description{color:#c3c3c3;text-align:center;font-size:1.2em;margin-top:1.8em}.m-signature-pad--footer .button{position:absolute;bottom:0}.m-signature-pad--footer .button.clear{left:0}.m-signature-pad--footer .button.save{right:0}@media screen and (max-width:1024px){.m-signature-pad{top:0;left:0;right:0;bottom:0;width:auto;height:auto;min-width:250px;min-height:140px;margin:5%}}@media screen and (min-device-width:768px) and (max-device-width:1024px){.m-signature-pad{margin:10%}}@media screen and (max-height:320px){.m-signature-pad--body{left:0;right:0;top:0;bottom:32px}.m-signature-pad--footer{left:20px;right:20px;bottom:4px;height:28px}.m-signature-pad--footer .description{font-size:1em;margin-top:1em}}
|
|
||||||
|
#signature-pad {
|
||||||
|
padding-top: 250px;
|
||||||
|
margin: auto;
|
||||||
|
}
|
||||||
|
.m-signature-pad {
|
||||||
|
|
||||||
|
position: relative;
|
||||||
|
font-size: 10px;
|
||||||
|
width: 100%;
|
||||||
|
height: 300px;
|
||||||
|
border: 1px solid #e8e8e8;
|
||||||
|
background-color: #fff;
|
||||||
|
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.27), 0 0 40px rgba(0, 0, 0, 0.08) inset;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.m-signature-pad:before, .m-signature-pad:after {
|
||||||
|
position: absolute;
|
||||||
|
z-index: -1;
|
||||||
|
content: "";
|
||||||
|
width: 40%;
|
||||||
|
height: 10px;
|
||||||
|
left: 20px;
|
||||||
|
bottom: 10px;
|
||||||
|
background: transparent;
|
||||||
|
-webkit-transform: skew(-3deg) rotate(-3deg);
|
||||||
|
-moz-transform: skew(-3deg) rotate(-3deg);
|
||||||
|
-ms-transform: skew(-3deg) rotate(-3deg);
|
||||||
|
-o-transform: skew(-3deg) rotate(-3deg);
|
||||||
|
transform: skew(-3deg) rotate(-3deg);
|
||||||
|
box-shadow: 0 8px 12px rgba(0, 0, 0, 0.4);
|
||||||
|
}
|
||||||
|
|
||||||
|
.m-signature-pad:after {
|
||||||
|
left: auto;
|
||||||
|
right: 20px;
|
||||||
|
-webkit-transform: skew(3deg) rotate(3deg);
|
||||||
|
-moz-transform: skew(3deg) rotate(3deg);
|
||||||
|
-ms-transform: skew(3deg) rotate(3deg);
|
||||||
|
-o-transform: skew(3deg) rotate(3deg);
|
||||||
|
transform: skew(3deg) rotate(3deg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.m-signature-pad--body {
|
||||||
|
position: absolute;
|
||||||
|
top: 20px;
|
||||||
|
bottom: 60px;
|
||||||
|
border: 1px solid #f4f4f4;
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.m-signature-pad--body
|
||||||
|
canvas {
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
border-radius: 4px;
|
||||||
|
box-shadow: 0 0 5px rgba(0, 0, 0, 0.02) inset;
|
||||||
|
}
|
||||||
|
|
||||||
|
.m-signature-pad--footer {
|
||||||
|
position: absolute;
|
||||||
|
left: 20px;
|
||||||
|
right: 20px;
|
||||||
|
bottom: 20px;
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.m-signature-pad--footer
|
||||||
|
.description {
|
||||||
|
color: #C3C3C3;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 1.2em;
|
||||||
|
margin-top: 1.8em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.m-signature-pad--footer
|
||||||
|
.button {
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.m-signature-pad--footer
|
||||||
|
.button.clear {
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.m-signature-pad--footer
|
||||||
|
.button.save {
|
||||||
|
right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 1024px) {
|
||||||
|
.m-signature-pad {
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
width: auto;
|
||||||
|
height: auto;
|
||||||
|
min-width: 250px;
|
||||||
|
min-height: 140px;
|
||||||
|
margin: 5%;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (min-device-width: 768px) and (max-device-width: 1024px) {
|
||||||
|
.m-signature-pad {
|
||||||
|
margin: 10%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-height: 320px) {
|
||||||
|
.m-signature-pad--body {
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
top: 0;
|
||||||
|
bottom: 32px;
|
||||||
|
}
|
||||||
|
.m-signature-pad--footer {
|
||||||
|
left: 20px;
|
||||||
|
right: 20px;
|
||||||
|
bottom: 4px;
|
||||||
|
height: 28px;
|
||||||
|
}
|
||||||
|
.m-signature-pad--footer
|
||||||
|
.description {
|
||||||
|
font-size: 1em;
|
||||||
|
margin-top: 1em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
503
public/css/dist/skins/skin-black-dark.css
vendored
503
public/css/dist/skins/skin-black-dark.css
vendored
File diff suppressed because one or more lines are too long
503
public/css/dist/skins/skin-black-dark.min.css
vendored
503
public/css/dist/skins/skin-black-dark.min.css
vendored
File diff suppressed because one or more lines are too long
208
public/css/dist/skins/skin-black.css
vendored
208
public/css/dist/skins/skin-black.css
vendored
@@ -1 +1,207 @@
|
|||||||
.skin-black .main-header .navbar{background-color:#111}.skin-black .main-header .navbar .nav>li>a{color:#fff}.skin-black .main-header .navbar .nav .open>a,.skin-black .main-header .navbar .nav .open>a:focus,.skin-black .main-header .navbar .nav .open>a:hover,.skin-black .main-header .navbar .nav>.active>a,.skin-black .main-header .navbar .nav>li>a:active,.skin-black .main-header .navbar .nav>li>a:focus,.skin-black .main-header .navbar .nav>li>a:hover,.skin-black .main-header .navbar .sidebar-toggle:hover{background:rgba(0,0,0,.1);color:#f6f6f6}.skin-black .main-header .navbar .sidebar-toggle{color:#fff}.skin-black .main-header .navbar .sidebar-toggle:hover{background-color:#040404}@media (max-width:767px){.skin-black .main-header .navbar .dropdown-menu li.divider{background-color:hsla(0,0%,100%,.1)}.skin-black .main-header .navbar .dropdown-menu li a{color:#333}.skin-black .main-header .navbar .dropdown-menu li a:hover{background:#040404}}.skin-black .main-header li.user-header{background-color:#111}.skin-black .content-header{background:transparent}.skin-black .left-side,.skin-black .main-sidebar,.skin-black .wrapper{background-color:#222d32}.skin-black .user-panel>.info,.skin-black .user-panel>.info>a{color:#fff}.skin-black .sidebar-menu>li.header{background:#1a2226;color:#4b646f}.skin-black .sidebar-menu>li>a{border-left:3px solid transparent}.skin-black .sidebar-menu>li.active>a,.skin-black .sidebar-menu>li:hover>a{background:#1e282c;border-left-color:#111;color:#fff}.skin-black .sidebar-menu>li>.treeview-menu{background:#2c3b41;margin:0 1px}.skin-black .sidebar a{color:#b8c7ce}.skin-black .sidebar a:hover{text-decoration:none}.skin-black .treeview-menu>li>a{color:#8aa4af}.skin-black .treeview-menu>li.active>a,.skin-black .treeview-menu>li>a:hover{color:#fff}.skin-black .sidebar-form{border:1px solid #374850;border-radius:3px;margin:10px}.skin-black .sidebar-form .btn,.skin-black .sidebar-form input[type=text]{background-color:#374850;border:1px solid transparent;box-shadow:none;height:35px;transition:all .3s ease-in-out}.skin-black .sidebar-form input[type=text]{border-bottom-left-radius:2px;border-bottom-right-radius:0;border-top-left-radius:2px;border-top-right-radius:0;color:#666}.skin-black .sidebar-form input[type=text]:focus,.skin-black .sidebar-form input[type=text]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-black .sidebar-form input[type=text]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-black .sidebar-form .btn{border-bottom-left-radius:0;border-bottom-right-radius:2px;border-top-left-radius:0;border-top-right-radius:2px;color:#999}.skin-black.layout-top-nav .main-header>.logo .logo-variant{background-color:none}.btn,.btn:hover{text-decoration:none}.btn.btn-primary,.btn .btn-primary:link,.btn:hover.btn-primary,.btn:hover .btn-primary:link{background-color:#505156;border-color:#b5bbc8;color:#fff}.btn:hovera.btn-primary:hover,.btna.btn-primary:hover{background-color:#111;border-color:#1f1f21;color:#fff}.btn.btn-white:hover,.btn.btn-white:link,.btn.btn-white:visited,.btn:hover.btn-white:hover,.btn:hover.btn-white:link,.btn:hover.btn-white:visited{color:#fff}a{color:#111;text-decoration:underline}a:hover{color:#000}a:visited{color:#111}.text-primary{color:#000}.skin-black .main-header .navbar .nav>li>a{text-decoration:none}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#111}.search-highlight,.search-highlight:hover{background-color:#e9d15b}
|
/*
|
||||||
|
* Skin: Black
|
||||||
|
* ----------
|
||||||
|
*/
|
||||||
|
.skin-black .main-header .navbar {
|
||||||
|
background-color: #111;
|
||||||
|
}
|
||||||
|
.skin-black .main-header .navbar .nav > li > a {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-black .main-header .navbar .nav > li > a:hover,
|
||||||
|
.skin-black .main-header .navbar .nav > li > a:active,
|
||||||
|
.skin-black .main-header .navbar .nav > li > a:focus,
|
||||||
|
.skin-black .main-header .navbar .nav .open > a,
|
||||||
|
.skin-black .main-header .navbar .nav .open > a:hover,
|
||||||
|
.skin-black .main-header .navbar .nav .open > a:focus,
|
||||||
|
.skin-black .main-header .navbar .nav > .active > a {
|
||||||
|
background: rgba(0, 0, 0, 0.1);
|
||||||
|
color: #f6f6f6;
|
||||||
|
}
|
||||||
|
.skin-black .main-header .navbar .sidebar-toggle {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-black .main-header .navbar .sidebar-toggle:hover {
|
||||||
|
color: #f6f6f6;
|
||||||
|
background: rgba(0, 0, 0, 0.1);
|
||||||
|
}
|
||||||
|
.skin-black .main-header .navbar .sidebar-toggle {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-black .main-header .navbar .sidebar-toggle:hover {
|
||||||
|
background-color: #040404;
|
||||||
|
}
|
||||||
|
@media (max-width: 767px) {
|
||||||
|
.skin-black .main-header .navbar .dropdown-menu li.divider {
|
||||||
|
background-color: rgba(255, 255, 255, 0.1);
|
||||||
|
}
|
||||||
|
.skin-black .main-header .navbar .dropdown-menu li a {
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
.skin-black .main-header .navbar .dropdown-menu li a:hover {
|
||||||
|
background: #040404;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.skin-black .main-header li.user-header {
|
||||||
|
background-color: #111;
|
||||||
|
}
|
||||||
|
.skin-black .content-header {
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
.skin-black .wrapper,
|
||||||
|
.skin-black .main-sidebar,
|
||||||
|
.skin-black .left-side {
|
||||||
|
background-color: #222d32;
|
||||||
|
}
|
||||||
|
.skin-black .user-panel > .info,
|
||||||
|
.skin-black .user-panel > .info > a {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-black .sidebar-menu > li.header {
|
||||||
|
color: #4b646f;
|
||||||
|
background: #1a2226;
|
||||||
|
}
|
||||||
|
.skin-black .sidebar-menu > li > a {
|
||||||
|
border-left: 3px solid transparent;
|
||||||
|
}
|
||||||
|
.skin-black .sidebar-menu > li:hover > a,
|
||||||
|
.skin-black .sidebar-menu > li.active > a {
|
||||||
|
color: #fff;
|
||||||
|
background: #1e282c;
|
||||||
|
border-left-color: #111;
|
||||||
|
}
|
||||||
|
.skin-black .sidebar-menu > li > .treeview-menu {
|
||||||
|
margin: 0 1px;
|
||||||
|
background: #2c3b41;
|
||||||
|
}
|
||||||
|
.skin-black .sidebar a {
|
||||||
|
color: #b8c7ce;
|
||||||
|
}
|
||||||
|
.skin-black .sidebar a:hover {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
.skin-black .treeview-menu > li > a {
|
||||||
|
color: #8aa4af;
|
||||||
|
}
|
||||||
|
.skin-black .treeview-menu > li.active > a,
|
||||||
|
.skin-black .treeview-menu > li > a:hover {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-black .sidebar-form {
|
||||||
|
border-radius: 3px;
|
||||||
|
border: 1px solid #374850;
|
||||||
|
margin: 10px 10px;
|
||||||
|
}
|
||||||
|
.skin-black .sidebar-form input[type="text"],
|
||||||
|
.skin-black .sidebar-form .btn {
|
||||||
|
box-shadow: none;
|
||||||
|
background-color: #374850;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
height: 35px;
|
||||||
|
transition: all 0.3s ease-in-out;
|
||||||
|
}
|
||||||
|
.skin-black .sidebar-form input[type="text"] {
|
||||||
|
color: #666;
|
||||||
|
border-top-left-radius: 2px;
|
||||||
|
border-top-right-radius: 0;
|
||||||
|
border-bottom-right-radius: 0;
|
||||||
|
border-bottom-left-radius: 2px;
|
||||||
|
}
|
||||||
|
.skin-black .sidebar-form input[type="text"]:focus,
|
||||||
|
.skin-black .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||||
|
background-color: #fff;
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
.skin-black .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||||
|
border-left-color: #fff;
|
||||||
|
}
|
||||||
|
.skin-black .sidebar-form .btn {
|
||||||
|
color: #999;
|
||||||
|
border-top-left-radius: 0;
|
||||||
|
border-top-right-radius: 2px;
|
||||||
|
border-bottom-right-radius: 2px;
|
||||||
|
border-bottom-left-radius: 0;
|
||||||
|
}
|
||||||
|
.skin-black.layout-top-nav .main-header > .logo .logo-variant {
|
||||||
|
background-color: none;
|
||||||
|
}
|
||||||
|
.btn,
|
||||||
|
.btn:hover {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
.btn.btn-primary,
|
||||||
|
.btn:hover.btn-primary,
|
||||||
|
.btn .btn-primary:link,
|
||||||
|
.btn:hover .btn-primary:link {
|
||||||
|
background-color: #505156;
|
||||||
|
border-color: #b5bbc8;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.btna.btn-primary:hover,
|
||||||
|
.btn:hovera.btn-primary:hover {
|
||||||
|
background-color: #111;
|
||||||
|
border-color: #1f1f21;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.btn.btn-white:link,
|
||||||
|
.btn:hover.btn-white:link {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.btn.btn-white:hover,
|
||||||
|
.btn:hover.btn-white:hover {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.btn.btn-white:visited,
|
||||||
|
.btn:hover.btn-white:visited {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
a {
|
||||||
|
color: #111;
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
a:hover {
|
||||||
|
color: #000000;
|
||||||
|
}
|
||||||
|
a:visited {
|
||||||
|
color: #111;
|
||||||
|
}
|
||||||
|
.text-primary {
|
||||||
|
color: #000000;
|
||||||
|
}
|
||||||
|
:root {
|
||||||
|
--button-default: #000000;
|
||||||
|
--button-primary: #000000;
|
||||||
|
--button-hover: #000000;
|
||||||
|
--header: #111;
|
||||||
|
/* Use same as Header picker */
|
||||||
|
--text-main: #BBB;
|
||||||
|
--text-sub: #9b9b9b;
|
||||||
|
--link: #AAA;
|
||||||
|
/* Use same as Header picker, lighten by 70% */
|
||||||
|
--visited-link: #777777;
|
||||||
|
/* Use same as Header picker, lighten by 70% */
|
||||||
|
--hover-link: #848484;
|
||||||
|
/* Use same as Header picker, lighten by 70% */
|
||||||
|
--nav-link: #FFF;
|
||||||
|
/* Use same as Header picker */
|
||||||
|
--light-link: #fff;
|
||||||
|
/* Use same as Header picker */
|
||||||
|
}
|
||||||
|
a:link {
|
||||||
|
color: var(--link);
|
||||||
|
}
|
||||||
|
a:visited {
|
||||||
|
color: var(--visited-link);
|
||||||
|
}
|
||||||
|
.skin-black .main-header .navbar .nav > li > a,
|
||||||
|
.skin-black .main-header .navbar .nav > li > a {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
.select2-container--default .select2-selection--multiple .select2-selection__choice {
|
||||||
|
background-color: #111;
|
||||||
|
}
|
||||||
|
.search-highlight,
|
||||||
|
.search-highlight:hover {
|
||||||
|
background-color: #e9d15b;
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
208
public/css/dist/skins/skin-black.min.css
vendored
208
public/css/dist/skins/skin-black.min.css
vendored
@@ -1 +1,207 @@
|
|||||||
.skin-black .main-header .navbar{background-color:#111}.skin-black .main-header .navbar .nav>li>a{color:#fff}.skin-black .main-header .navbar .nav .open>a,.skin-black .main-header .navbar .nav .open>a:focus,.skin-black .main-header .navbar .nav .open>a:hover,.skin-black .main-header .navbar .nav>.active>a,.skin-black .main-header .navbar .nav>li>a:active,.skin-black .main-header .navbar .nav>li>a:focus,.skin-black .main-header .navbar .nav>li>a:hover,.skin-black .main-header .navbar .sidebar-toggle:hover{background:rgba(0,0,0,.1);color:#f6f6f6}.skin-black .main-header .navbar .sidebar-toggle{color:#fff}.skin-black .main-header .navbar .sidebar-toggle:hover{background-color:#040404}@media (max-width:767px){.skin-black .main-header .navbar .dropdown-menu li.divider{background-color:hsla(0,0%,100%,.1)}.skin-black .main-header .navbar .dropdown-menu li a{color:#333}.skin-black .main-header .navbar .dropdown-menu li a:hover{background:#040404}}.skin-black .main-header li.user-header{background-color:#111}.skin-black .content-header{background:0 0}.skin-black .left-side,.skin-black .main-sidebar,.skin-black .wrapper{background-color:#222d32}.skin-black .user-panel>.info,.skin-black .user-panel>.info>a{color:#fff}.skin-black .sidebar-menu>li.header{background:#1a2226;color:#4b646f}.skin-black .sidebar-menu>li>a{border-left:3px solid transparent}.skin-black .sidebar-menu>li.active>a,.skin-black .sidebar-menu>li:hover>a{background:#1e282c;border-left-color:#111;color:#fff}.skin-black .sidebar-menu>li>.treeview-menu{background:#2c3b41;margin:0 1px}.skin-black .sidebar a{color:#b8c7ce}.skin-black .sidebar a:hover{text-decoration:none}.skin-black .treeview-menu>li>a{color:#8aa4af}.skin-black .treeview-menu>li.active>a,.skin-black .treeview-menu>li>a:hover{color:#fff}.skin-black .sidebar-form{border:1px solid #374850;border-radius:3px;margin:10px}.skin-black .sidebar-form .btn,.skin-black .sidebar-form input[type=text]{background-color:#374850;border:1px solid transparent;box-shadow:none;height:35px;transition:all .3s ease-in-out}.skin-black .sidebar-form input[type=text]{border-bottom-left-radius:2px;border-bottom-right-radius:0;border-top-left-radius:2px;border-top-right-radius:0;color:#666}.skin-black .sidebar-form input[type=text]:focus,.skin-black .sidebar-form input[type=text]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-black .sidebar-form input[type=text]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-black .sidebar-form .btn{border-bottom-left-radius:0;border-bottom-right-radius:2px;border-top-left-radius:0;border-top-right-radius:2px;color:#999}.skin-black.layout-top-nav .main-header>.logo .logo-variant{background-color:none}.btn,.btn:hover{text-decoration:none}.btn .btn-primary:link,.btn.btn-primary,.btn:hover .btn-primary:link,.btn:hover.btn-primary{background-color:#505156;border-color:#b5bbc8;color:#fff}.btn:hovera.btn-primary:hover,.btna.btn-primary:hover{background-color:#111;border-color:#1f1f21;color:#fff}.btn.btn-white:hover,.btn.btn-white:link,.btn.btn-white:visited,.btn:hover.btn-white:hover,.btn:hover.btn-white:link,.btn:hover.btn-white:visited{color:#fff}a{color:#111;text-decoration:underline}a:hover{color:#000}a:visited{color:#111}.text-primary{color:#000}.skin-black .main-header .navbar .nav>li>a{text-decoration:none}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#111}.search-highlight,.search-highlight:hover{background-color:#e9d15b}
|
/*
|
||||||
|
* Skin: Black
|
||||||
|
* ----------
|
||||||
|
*/
|
||||||
|
.skin-black .main-header .navbar {
|
||||||
|
background-color: #111;
|
||||||
|
}
|
||||||
|
.skin-black .main-header .navbar .nav > li > a {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-black .main-header .navbar .nav > li > a:hover,
|
||||||
|
.skin-black .main-header .navbar .nav > li > a:active,
|
||||||
|
.skin-black .main-header .navbar .nav > li > a:focus,
|
||||||
|
.skin-black .main-header .navbar .nav .open > a,
|
||||||
|
.skin-black .main-header .navbar .nav .open > a:hover,
|
||||||
|
.skin-black .main-header .navbar .nav .open > a:focus,
|
||||||
|
.skin-black .main-header .navbar .nav > .active > a {
|
||||||
|
background: rgba(0, 0, 0, 0.1);
|
||||||
|
color: #f6f6f6;
|
||||||
|
}
|
||||||
|
.skin-black .main-header .navbar .sidebar-toggle {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-black .main-header .navbar .sidebar-toggle:hover {
|
||||||
|
color: #f6f6f6;
|
||||||
|
background: rgba(0, 0, 0, 0.1);
|
||||||
|
}
|
||||||
|
.skin-black .main-header .navbar .sidebar-toggle {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-black .main-header .navbar .sidebar-toggle:hover {
|
||||||
|
background-color: #040404;
|
||||||
|
}
|
||||||
|
@media (max-width: 767px) {
|
||||||
|
.skin-black .main-header .navbar .dropdown-menu li.divider {
|
||||||
|
background-color: rgba(255, 255, 255, 0.1);
|
||||||
|
}
|
||||||
|
.skin-black .main-header .navbar .dropdown-menu li a {
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
.skin-black .main-header .navbar .dropdown-menu li a:hover {
|
||||||
|
background: #040404;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.skin-black .main-header li.user-header {
|
||||||
|
background-color: #111;
|
||||||
|
}
|
||||||
|
.skin-black .content-header {
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
.skin-black .wrapper,
|
||||||
|
.skin-black .main-sidebar,
|
||||||
|
.skin-black .left-side {
|
||||||
|
background-color: #222d32;
|
||||||
|
}
|
||||||
|
.skin-black .user-panel > .info,
|
||||||
|
.skin-black .user-panel > .info > a {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-black .sidebar-menu > li.header {
|
||||||
|
color: #4b646f;
|
||||||
|
background: #1a2226;
|
||||||
|
}
|
||||||
|
.skin-black .sidebar-menu > li > a {
|
||||||
|
border-left: 3px solid transparent;
|
||||||
|
}
|
||||||
|
.skin-black .sidebar-menu > li:hover > a,
|
||||||
|
.skin-black .sidebar-menu > li.active > a {
|
||||||
|
color: #fff;
|
||||||
|
background: #1e282c;
|
||||||
|
border-left-color: #111;
|
||||||
|
}
|
||||||
|
.skin-black .sidebar-menu > li > .treeview-menu {
|
||||||
|
margin: 0 1px;
|
||||||
|
background: #2c3b41;
|
||||||
|
}
|
||||||
|
.skin-black .sidebar a {
|
||||||
|
color: #b8c7ce;
|
||||||
|
}
|
||||||
|
.skin-black .sidebar a:hover {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
.skin-black .treeview-menu > li > a {
|
||||||
|
color: #8aa4af;
|
||||||
|
}
|
||||||
|
.skin-black .treeview-menu > li.active > a,
|
||||||
|
.skin-black .treeview-menu > li > a:hover {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-black .sidebar-form {
|
||||||
|
border-radius: 3px;
|
||||||
|
border: 1px solid #374850;
|
||||||
|
margin: 10px 10px;
|
||||||
|
}
|
||||||
|
.skin-black .sidebar-form input[type="text"],
|
||||||
|
.skin-black .sidebar-form .btn {
|
||||||
|
box-shadow: none;
|
||||||
|
background-color: #374850;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
height: 35px;
|
||||||
|
transition: all 0.3s ease-in-out;
|
||||||
|
}
|
||||||
|
.skin-black .sidebar-form input[type="text"] {
|
||||||
|
color: #666;
|
||||||
|
border-top-left-radius: 2px;
|
||||||
|
border-top-right-radius: 0;
|
||||||
|
border-bottom-right-radius: 0;
|
||||||
|
border-bottom-left-radius: 2px;
|
||||||
|
}
|
||||||
|
.skin-black .sidebar-form input[type="text"]:focus,
|
||||||
|
.skin-black .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||||
|
background-color: #fff;
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
.skin-black .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||||
|
border-left-color: #fff;
|
||||||
|
}
|
||||||
|
.skin-black .sidebar-form .btn {
|
||||||
|
color: #999;
|
||||||
|
border-top-left-radius: 0;
|
||||||
|
border-top-right-radius: 2px;
|
||||||
|
border-bottom-right-radius: 2px;
|
||||||
|
border-bottom-left-radius: 0;
|
||||||
|
}
|
||||||
|
.skin-black.layout-top-nav .main-header > .logo .logo-variant {
|
||||||
|
background-color: none;
|
||||||
|
}
|
||||||
|
.btn,
|
||||||
|
.btn:hover {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
.btn.btn-primary,
|
||||||
|
.btn:hover.btn-primary,
|
||||||
|
.btn .btn-primary:link,
|
||||||
|
.btn:hover .btn-primary:link {
|
||||||
|
background-color: #505156;
|
||||||
|
border-color: #b5bbc8;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.btna.btn-primary:hover,
|
||||||
|
.btn:hovera.btn-primary:hover {
|
||||||
|
background-color: #111;
|
||||||
|
border-color: #1f1f21;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.btn.btn-white:link,
|
||||||
|
.btn:hover.btn-white:link {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.btn.btn-white:hover,
|
||||||
|
.btn:hover.btn-white:hover {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.btn.btn-white:visited,
|
||||||
|
.btn:hover.btn-white:visited {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
a {
|
||||||
|
color: #111;
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
a:hover {
|
||||||
|
color: #000000;
|
||||||
|
}
|
||||||
|
a:visited {
|
||||||
|
color: #111;
|
||||||
|
}
|
||||||
|
.text-primary {
|
||||||
|
color: #000000;
|
||||||
|
}
|
||||||
|
:root {
|
||||||
|
--button-default: #000000;
|
||||||
|
--button-primary: #000000;
|
||||||
|
--button-hover: #000000;
|
||||||
|
--header: #111;
|
||||||
|
/* Use same as Header picker */
|
||||||
|
--text-main: #BBB;
|
||||||
|
--text-sub: #9b9b9b;
|
||||||
|
--link: #AAA;
|
||||||
|
/* Use same as Header picker, lighten by 70% */
|
||||||
|
--visited-link: #777777;
|
||||||
|
/* Use same as Header picker, lighten by 70% */
|
||||||
|
--hover-link: #848484;
|
||||||
|
/* Use same as Header picker, lighten by 70% */
|
||||||
|
--nav-link: #FFF;
|
||||||
|
/* Use same as Header picker */
|
||||||
|
--light-link: #fff;
|
||||||
|
/* Use same as Header picker */
|
||||||
|
}
|
||||||
|
a:link {
|
||||||
|
color: var(--link);
|
||||||
|
}
|
||||||
|
a:visited {
|
||||||
|
color: var(--visited-link);
|
||||||
|
}
|
||||||
|
.skin-black .main-header .navbar .nav > li > a,
|
||||||
|
.skin-black .main-header .navbar .nav > li > a {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
.select2-container--default .select2-selection--multiple .select2-selection__choice {
|
||||||
|
background-color: #111;
|
||||||
|
}
|
||||||
|
.search-highlight,
|
||||||
|
.search-highlight:hover {
|
||||||
|
background-color: #e9d15b;
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
476
public/css/dist/skins/skin-blue-dark.css
vendored
476
public/css/dist/skins/skin-blue-dark.css
vendored
File diff suppressed because one or more lines are too long
476
public/css/dist/skins/skin-blue-dark.min.css
vendored
476
public/css/dist/skins/skin-blue-dark.min.css
vendored
File diff suppressed because one or more lines are too long
227
public/css/dist/skins/skin-blue.css
vendored
227
public/css/dist/skins/skin-blue.css
vendored
@@ -1 +1,226 @@
|
|||||||
.skin-blue .main-header .navbar{background-color:#3c8dbc}.skin-blue .main-header .navbar .nav>li>a{color:#fff}.skin-blue .main-header .navbar .nav .open>a,.skin-blue .main-header .navbar .nav .open>a:focus,.skin-blue .main-header .navbar .nav .open>a:hover,.skin-blue .main-header .navbar .nav>.active>a,.skin-blue .main-header .navbar .nav>li>a:active,.skin-blue .main-header .navbar .nav>li>a:focus,.skin-blue .main-header .navbar .nav>li>a:hover,.skin-blue .main-header .navbar .sidebar-toggle:hover{background:rgba(0,0,0,.1);color:#f6f6f6}.skin-blue .main-header .navbar .sidebar-toggle{color:#fff}.skin-blue .main-header .navbar .sidebar-toggle:hover{background-color:#367fa9}@media (max-width:767px){.skin-blue .main-header .navbar .dropdown-menu li.divider{background-color:hsla(0,0%,100%,.1)}.skin-blue .main-header .navbar .dropdown-menu li a{color:#333}.skin-blue .main-header .navbar .dropdown-menu li a:hover{background:#367fa9}}.skin-blue .main-header li.user-header{background-color:#3c8dbc}.skin-blue .content-header{background:transparent}.skin-blue .left-side,.skin-blue .main-sidebar,.skin-blue .wrapper{background-color:#222d32}.skin-blue .user-panel>.info,.skin-blue .user-panel>.info>a{color:#fff}.skin-blue .sidebar-menu>li.header{background:#1a2226;color:#4b646f}.skin-blue .sidebar-menu>li>a{border-left:3px solid transparent}.skin-blue .sidebar-menu>li.active>a,.skin-blue .sidebar-menu>li:hover>a{background:#1e282c;border-left-color:#3c8dbc;color:#fff}.skin-blue .sidebar-menu>li>.treeview-menu{background:#2c3b41;margin:0 1px}.skin-blue .sidebar a{color:#b8c7ce}.skin-blue .sidebar a:hover{text-decoration:none}.skin-blue .treeview-menu>li>a{color:#8aa4af}.skin-blue .treeview-menu>li.active>a,.skin-blue .treeview-menu>li>a:hover{color:#fff}.skin-blue .sidebar-form{border:1px solid #374850;border-radius:3px;margin:10px}.skin-blue .sidebar-form .btn,.skin-blue .sidebar-form input[type=text]{background-color:#374850;border:1px solid transparent;box-shadow:none;height:35px;transition:all .3s ease-in-out}.skin-blue .sidebar-form input[type=text]{border-bottom-left-radius:2px;border-bottom-right-radius:0;border-top-left-radius:2px;border-top-right-radius:0;color:#666}.skin-blue .sidebar-form input[type=text]:focus,.skin-blue .sidebar-form input[type=text]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-blue .sidebar-form input[type=text]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-blue .sidebar-form .btn{border-bottom-left-radius:0;border-bottom-right-radius:2px;border-top-left-radius:0;border-top-right-radius:2px;color:#999}.skin-blue.layout-top-nav .main-header>.logo .logo-variant{background-color:none}.btn.btn-primary,.btn .btn-primary:link,.btn:hover.btn-primary,.btn:hover .btn-primary:link,btn-sm.btn-primary,btn-sm .btn-primary:link{background-color:#307095;border-color:#23536f;color:#fff}.btn:hovera.btn-primary:hover,.btna.btn-primary:hover,btn-sma.btn-primary:hover{background-color:#23536f;border-color:#23536f;color:#fff}.btn.btn-white:link,.btn:hover.btn-white:link,btn-sm.btn-white:link{background-color:#307095;color:#fff}.btn.btn-white:hover,.btn.btn-white:visited,.btn:hover.btn-white:hover,.btn:hover.btn-white:visited,btn-sm.btn-white:hover,btn-sm.btn-white:visited{background-color:#173648;color:#fff}.btn-danger,.btn-danger:link,.btn-danger:visited,.btn-warning,.btn-warning:link,.btn-warning:visited,a.btn-danger:hover,a.btn-warning:hover{color:#fff}a{color:#3c8dbc}a:hover{color:#23536f}a:visited{color:#3c8dbc}.text-primary{color:#23536f}.fixed-table-container tbody .selected td{background-color:#fff8af}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#3c8dbc}.search-highlight,.search-highlight:hover{background-color:#e9d15b}
|
/*
|
||||||
|
* Skin: Blue
|
||||||
|
* ----------
|
||||||
|
*/
|
||||||
|
.skin-blue .main-header .navbar {
|
||||||
|
background-color: #3c8dbc;
|
||||||
|
}
|
||||||
|
.skin-blue .main-header .navbar .nav > li > a {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-blue .main-header .navbar .nav > li > a:hover,
|
||||||
|
.skin-blue .main-header .navbar .nav > li > a:active,
|
||||||
|
.skin-blue .main-header .navbar .nav > li > a:focus,
|
||||||
|
.skin-blue .main-header .navbar .nav .open > a,
|
||||||
|
.skin-blue .main-header .navbar .nav .open > a:hover,
|
||||||
|
.skin-blue .main-header .navbar .nav .open > a:focus,
|
||||||
|
.skin-blue .main-header .navbar .nav > .active > a {
|
||||||
|
background: rgba(0, 0, 0, 0.1);
|
||||||
|
color: #f6f6f6;
|
||||||
|
}
|
||||||
|
.skin-blue .main-header .navbar .sidebar-toggle {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-blue .main-header .navbar .sidebar-toggle:hover {
|
||||||
|
color: #f6f6f6;
|
||||||
|
background: rgba(0, 0, 0, 0.1);
|
||||||
|
}
|
||||||
|
.skin-blue .main-header .navbar .sidebar-toggle {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-blue .main-header .navbar .sidebar-toggle:hover {
|
||||||
|
background-color: #367fa9;
|
||||||
|
}
|
||||||
|
@media (max-width: 767px) {
|
||||||
|
.skin-blue .main-header .navbar .dropdown-menu li.divider {
|
||||||
|
background-color: rgba(255, 255, 255, 0.1);
|
||||||
|
}
|
||||||
|
.skin-blue .main-header .navbar .dropdown-menu li a {
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
.skin-blue .main-header .navbar .dropdown-menu li a:hover {
|
||||||
|
background: #367fa9;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.skin-blue .main-header li.user-header {
|
||||||
|
background-color: #3c8dbc;
|
||||||
|
}
|
||||||
|
.skin-blue .content-header {
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
.skin-blue .wrapper,
|
||||||
|
.skin-blue .main-sidebar,
|
||||||
|
.skin-blue .left-side {
|
||||||
|
background-color: #222d32;
|
||||||
|
}
|
||||||
|
.skin-blue .user-panel > .info,
|
||||||
|
.skin-blue .user-panel > .info > a {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-blue .sidebar-menu > li.header {
|
||||||
|
color: #4b646f;
|
||||||
|
background: #1a2226;
|
||||||
|
}
|
||||||
|
.skin-blue .sidebar-menu > li > a {
|
||||||
|
border-left: 3px solid transparent;
|
||||||
|
}
|
||||||
|
.skin-blue .sidebar-menu > li:hover > a,
|
||||||
|
.skin-blue .sidebar-menu > li.active > a {
|
||||||
|
color: #fff;
|
||||||
|
background: #1e282c;
|
||||||
|
border-left-color: #3c8dbc;
|
||||||
|
}
|
||||||
|
.skin-blue .sidebar-menu > li > .treeview-menu {
|
||||||
|
margin: 0 1px;
|
||||||
|
background: #2c3b41;
|
||||||
|
}
|
||||||
|
.skin-blue .sidebar a {
|
||||||
|
color: #b8c7ce;
|
||||||
|
}
|
||||||
|
.skin-blue .sidebar a:hover {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
.skin-blue .treeview-menu > li > a {
|
||||||
|
color: #8aa4af;
|
||||||
|
}
|
||||||
|
.skin-blue .treeview-menu > li.active > a,
|
||||||
|
.skin-blue .treeview-menu > li > a:hover {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-blue .sidebar-form {
|
||||||
|
border-radius: 3px;
|
||||||
|
border: 1px solid #374850;
|
||||||
|
margin: 10px 10px;
|
||||||
|
}
|
||||||
|
.skin-blue .sidebar-form input[type="text"],
|
||||||
|
.skin-blue .sidebar-form .btn {
|
||||||
|
box-shadow: none;
|
||||||
|
background-color: #374850;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
height: 35px;
|
||||||
|
transition: all 0.3s ease-in-out;
|
||||||
|
}
|
||||||
|
.skin-blue .sidebar-form input[type="text"] {
|
||||||
|
color: #666;
|
||||||
|
border-top-left-radius: 2px;
|
||||||
|
border-top-right-radius: 0;
|
||||||
|
border-bottom-right-radius: 0;
|
||||||
|
border-bottom-left-radius: 2px;
|
||||||
|
}
|
||||||
|
.skin-blue .sidebar-form input[type="text"]:focus,
|
||||||
|
.skin-blue .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||||
|
background-color: #fff;
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
.skin-blue .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||||
|
border-left-color: #fff;
|
||||||
|
}
|
||||||
|
.skin-blue .sidebar-form .btn {
|
||||||
|
color: #999;
|
||||||
|
border-top-left-radius: 0;
|
||||||
|
border-top-right-radius: 2px;
|
||||||
|
border-bottom-right-radius: 2px;
|
||||||
|
border-bottom-left-radius: 0;
|
||||||
|
}
|
||||||
|
.skin-blue.layout-top-nav .main-header > .logo .logo-variant {
|
||||||
|
background-color: none;
|
||||||
|
}
|
||||||
|
.btn.btn-primary,
|
||||||
|
btn-sm.btn-primary,
|
||||||
|
.btn:hover.btn-primary,
|
||||||
|
.btn .btn-primary:link,
|
||||||
|
btn-sm .btn-primary:link,
|
||||||
|
.btn:hover .btn-primary:link {
|
||||||
|
background-color: #307095;
|
||||||
|
border-color: #23536f;
|
||||||
|
color: #fff !important;
|
||||||
|
}
|
||||||
|
.btna.btn-primary:hover,
|
||||||
|
btn-sma.btn-primary:hover,
|
||||||
|
.btn:hovera.btn-primary:hover {
|
||||||
|
background-color: #23536f;
|
||||||
|
border-color: #23536f;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.btn.btn-white:link,
|
||||||
|
btn-sm.btn-white:link,
|
||||||
|
.btn:hover.btn-white:link {
|
||||||
|
background-color: #307095;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.btn.btn-white:hover,
|
||||||
|
btn-sm.btn-white:hover,
|
||||||
|
.btn:hover.btn-white:hover {
|
||||||
|
background-color: #173648;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.btn.btn-white:visited,
|
||||||
|
btn-sm.btn-white:visited,
|
||||||
|
.btn:hover.btn-white:visited {
|
||||||
|
background-color: #173648;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.btn-warning,
|
||||||
|
.btn-warning:link,
|
||||||
|
a.btn-warning:hover,
|
||||||
|
.btn-warning:link,
|
||||||
|
.btn-warning:visited,
|
||||||
|
.btn-danger,
|
||||||
|
.btn-danger:link,
|
||||||
|
a.btn-danger:hover,
|
||||||
|
.btn-danger:link,
|
||||||
|
.btn-danger:visited {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
:root {
|
||||||
|
--button-default: #00436b;
|
||||||
|
--button-primary: #002338;
|
||||||
|
--button-hover: #00131e;
|
||||||
|
--header: #0073b7;
|
||||||
|
/* Use same as Header picker */
|
||||||
|
--text-main: #BBB;
|
||||||
|
--text-sub: #9b9b9b;
|
||||||
|
--link: #0073b7;
|
||||||
|
/* Use same as Header picker, lighten by 70% */
|
||||||
|
--visited-link: #0093ea;
|
||||||
|
/* Use same as Header picker, lighten by 70% */
|
||||||
|
--hover-link: #1eabff;
|
||||||
|
/* Use same as Header picker, lighten by 70% */
|
||||||
|
--nav-link: #FFF;
|
||||||
|
/* Use same as Header picker */
|
||||||
|
--light-link: #fff;
|
||||||
|
/* Use same as Header picker */
|
||||||
|
}
|
||||||
|
a.btn-info:link,
|
||||||
|
a.btn-warning:link,
|
||||||
|
a.btn-danger:link {
|
||||||
|
color: #FFF;
|
||||||
|
}
|
||||||
|
a.btn-info:visited,
|
||||||
|
a.btn-warning:visited,
|
||||||
|
a.btn-danger:visited {
|
||||||
|
color: #FFF;
|
||||||
|
}
|
||||||
|
a:link {
|
||||||
|
color: var(--link);
|
||||||
|
}
|
||||||
|
a:visited {
|
||||||
|
color: var(--visited-link);
|
||||||
|
}
|
||||||
|
a:hover {
|
||||||
|
color: var(--hover-link);
|
||||||
|
}
|
||||||
|
.text-primary {
|
||||||
|
color: #23536f;
|
||||||
|
}
|
||||||
|
.fixed-table-container tbody .selected td {
|
||||||
|
background-color: #fff8af;
|
||||||
|
}
|
||||||
|
.select2-container--default .select2-selection--multiple .select2-selection__choice {
|
||||||
|
background-color: #3c8dbc;
|
||||||
|
}
|
||||||
|
.search-highlight,
|
||||||
|
.search-highlight:hover {
|
||||||
|
background-color: #e9d15b;
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
227
public/css/dist/skins/skin-blue.min.css
vendored
227
public/css/dist/skins/skin-blue.min.css
vendored
@@ -1 +1,226 @@
|
|||||||
.skin-blue .main-header .navbar{background-color:#3c8dbc}.skin-blue .main-header .navbar .nav>li>a{color:#fff}.skin-blue .main-header .navbar .nav .open>a,.skin-blue .main-header .navbar .nav .open>a:focus,.skin-blue .main-header .navbar .nav .open>a:hover,.skin-blue .main-header .navbar .nav>.active>a,.skin-blue .main-header .navbar .nav>li>a:active,.skin-blue .main-header .navbar .nav>li>a:focus,.skin-blue .main-header .navbar .nav>li>a:hover,.skin-blue .main-header .navbar .sidebar-toggle:hover{background:rgba(0,0,0,.1);color:#f6f6f6}.skin-blue .main-header .navbar .sidebar-toggle{color:#fff}.skin-blue .main-header .navbar .sidebar-toggle:hover{background-color:#367fa9}@media (max-width:767px){.skin-blue .main-header .navbar .dropdown-menu li.divider{background-color:hsla(0,0%,100%,.1)}.skin-blue .main-header .navbar .dropdown-menu li a{color:#333}.skin-blue .main-header .navbar .dropdown-menu li a:hover{background:#367fa9}}.skin-blue .main-header li.user-header{background-color:#3c8dbc}.skin-blue .content-header{background:0 0}.skin-blue .left-side,.skin-blue .main-sidebar,.skin-blue .wrapper{background-color:#222d32}.skin-blue .user-panel>.info,.skin-blue .user-panel>.info>a{color:#fff}.skin-blue .sidebar-menu>li.header{background:#1a2226;color:#4b646f}.skin-blue .sidebar-menu>li>a{border-left:3px solid transparent}.skin-blue .sidebar-menu>li.active>a,.skin-blue .sidebar-menu>li:hover>a{background:#1e282c;border-left-color:#3c8dbc;color:#fff}.skin-blue .sidebar-menu>li>.treeview-menu{background:#2c3b41;margin:0 1px}.skin-blue .sidebar a{color:#b8c7ce}.skin-blue .sidebar a:hover{text-decoration:none}.skin-blue .treeview-menu>li>a{color:#8aa4af}.skin-blue .treeview-menu>li.active>a,.skin-blue .treeview-menu>li>a:hover{color:#fff}.skin-blue .sidebar-form{border:1px solid #374850;border-radius:3px;margin:10px}.skin-blue .sidebar-form .btn,.skin-blue .sidebar-form input[type=text]{background-color:#374850;border:1px solid transparent;box-shadow:none;height:35px;transition:all .3s ease-in-out}.skin-blue .sidebar-form input[type=text]{border-bottom-left-radius:2px;border-bottom-right-radius:0;border-top-left-radius:2px;border-top-right-radius:0;color:#666}.skin-blue .sidebar-form input[type=text]:focus,.skin-blue .sidebar-form input[type=text]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-blue .sidebar-form input[type=text]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-blue .sidebar-form .btn{border-bottom-left-radius:0;border-bottom-right-radius:2px;border-top-left-radius:0;border-top-right-radius:2px;color:#999}.skin-blue.layout-top-nav .main-header>.logo .logo-variant{background-color:none}.btn .btn-primary:link,.btn.btn-primary,.btn:hover .btn-primary:link,.btn:hover.btn-primary,btn-sm .btn-primary:link,btn-sm.btn-primary{background-color:#307095;border-color:#23536f;color:#fff}.btn:hovera.btn-primary:hover,.btna.btn-primary:hover,btn-sma.btn-primary:hover{background-color:#23536f;border-color:#23536f;color:#fff}.btn.btn-white:link,.btn:hover.btn-white:link,btn-sm.btn-white:link{background-color:#307095;color:#fff}.btn.btn-white:hover,.btn.btn-white:visited,.btn:hover.btn-white:hover,.btn:hover.btn-white:visited,btn-sm.btn-white:hover,btn-sm.btn-white:visited{background-color:#173648;color:#fff}.btn-danger,.btn-danger:link,.btn-danger:visited,.btn-warning,.btn-warning:link,.btn-warning:visited,a.btn-danger:hover,a.btn-warning:hover{color:#fff}a{color:#3c8dbc}a:hover{color:#23536f}a:visited{color:#3c8dbc}.text-primary{color:#23536f}.fixed-table-container tbody .selected td{background-color:#fff8af}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#3c8dbc}.search-highlight,.search-highlight:hover{background-color:#e9d15b}
|
/*
|
||||||
|
* Skin: Blue
|
||||||
|
* ----------
|
||||||
|
*/
|
||||||
|
.skin-blue .main-header .navbar {
|
||||||
|
background-color: #3c8dbc;
|
||||||
|
}
|
||||||
|
.skin-blue .main-header .navbar .nav > li > a {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-blue .main-header .navbar .nav > li > a:hover,
|
||||||
|
.skin-blue .main-header .navbar .nav > li > a:active,
|
||||||
|
.skin-blue .main-header .navbar .nav > li > a:focus,
|
||||||
|
.skin-blue .main-header .navbar .nav .open > a,
|
||||||
|
.skin-blue .main-header .navbar .nav .open > a:hover,
|
||||||
|
.skin-blue .main-header .navbar .nav .open > a:focus,
|
||||||
|
.skin-blue .main-header .navbar .nav > .active > a {
|
||||||
|
background: rgba(0, 0, 0, 0.1);
|
||||||
|
color: #f6f6f6;
|
||||||
|
}
|
||||||
|
.skin-blue .main-header .navbar .sidebar-toggle {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-blue .main-header .navbar .sidebar-toggle:hover {
|
||||||
|
color: #f6f6f6;
|
||||||
|
background: rgba(0, 0, 0, 0.1);
|
||||||
|
}
|
||||||
|
.skin-blue .main-header .navbar .sidebar-toggle {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-blue .main-header .navbar .sidebar-toggle:hover {
|
||||||
|
background-color: #367fa9;
|
||||||
|
}
|
||||||
|
@media (max-width: 767px) {
|
||||||
|
.skin-blue .main-header .navbar .dropdown-menu li.divider {
|
||||||
|
background-color: rgba(255, 255, 255, 0.1);
|
||||||
|
}
|
||||||
|
.skin-blue .main-header .navbar .dropdown-menu li a {
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
.skin-blue .main-header .navbar .dropdown-menu li a:hover {
|
||||||
|
background: #367fa9;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.skin-blue .main-header li.user-header {
|
||||||
|
background-color: #3c8dbc;
|
||||||
|
}
|
||||||
|
.skin-blue .content-header {
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
.skin-blue .wrapper,
|
||||||
|
.skin-blue .main-sidebar,
|
||||||
|
.skin-blue .left-side {
|
||||||
|
background-color: #222d32;
|
||||||
|
}
|
||||||
|
.skin-blue .user-panel > .info,
|
||||||
|
.skin-blue .user-panel > .info > a {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-blue .sidebar-menu > li.header {
|
||||||
|
color: #4b646f;
|
||||||
|
background: #1a2226;
|
||||||
|
}
|
||||||
|
.skin-blue .sidebar-menu > li > a {
|
||||||
|
border-left: 3px solid transparent;
|
||||||
|
}
|
||||||
|
.skin-blue .sidebar-menu > li:hover > a,
|
||||||
|
.skin-blue .sidebar-menu > li.active > a {
|
||||||
|
color: #fff;
|
||||||
|
background: #1e282c;
|
||||||
|
border-left-color: #3c8dbc;
|
||||||
|
}
|
||||||
|
.skin-blue .sidebar-menu > li > .treeview-menu {
|
||||||
|
margin: 0 1px;
|
||||||
|
background: #2c3b41;
|
||||||
|
}
|
||||||
|
.skin-blue .sidebar a {
|
||||||
|
color: #b8c7ce;
|
||||||
|
}
|
||||||
|
.skin-blue .sidebar a:hover {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
.skin-blue .treeview-menu > li > a {
|
||||||
|
color: #8aa4af;
|
||||||
|
}
|
||||||
|
.skin-blue .treeview-menu > li.active > a,
|
||||||
|
.skin-blue .treeview-menu > li > a:hover {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-blue .sidebar-form {
|
||||||
|
border-radius: 3px;
|
||||||
|
border: 1px solid #374850;
|
||||||
|
margin: 10px 10px;
|
||||||
|
}
|
||||||
|
.skin-blue .sidebar-form input[type="text"],
|
||||||
|
.skin-blue .sidebar-form .btn {
|
||||||
|
box-shadow: none;
|
||||||
|
background-color: #374850;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
height: 35px;
|
||||||
|
transition: all 0.3s ease-in-out;
|
||||||
|
}
|
||||||
|
.skin-blue .sidebar-form input[type="text"] {
|
||||||
|
color: #666;
|
||||||
|
border-top-left-radius: 2px;
|
||||||
|
border-top-right-radius: 0;
|
||||||
|
border-bottom-right-radius: 0;
|
||||||
|
border-bottom-left-radius: 2px;
|
||||||
|
}
|
||||||
|
.skin-blue .sidebar-form input[type="text"]:focus,
|
||||||
|
.skin-blue .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||||
|
background-color: #fff;
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
.skin-blue .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||||
|
border-left-color: #fff;
|
||||||
|
}
|
||||||
|
.skin-blue .sidebar-form .btn {
|
||||||
|
color: #999;
|
||||||
|
border-top-left-radius: 0;
|
||||||
|
border-top-right-radius: 2px;
|
||||||
|
border-bottom-right-radius: 2px;
|
||||||
|
border-bottom-left-radius: 0;
|
||||||
|
}
|
||||||
|
.skin-blue.layout-top-nav .main-header > .logo .logo-variant {
|
||||||
|
background-color: none;
|
||||||
|
}
|
||||||
|
.btn.btn-primary,
|
||||||
|
btn-sm.btn-primary,
|
||||||
|
.btn:hover.btn-primary,
|
||||||
|
.btn .btn-primary:link,
|
||||||
|
btn-sm .btn-primary:link,
|
||||||
|
.btn:hover .btn-primary:link {
|
||||||
|
background-color: #307095;
|
||||||
|
border-color: #23536f;
|
||||||
|
color: #fff !important;
|
||||||
|
}
|
||||||
|
.btna.btn-primary:hover,
|
||||||
|
btn-sma.btn-primary:hover,
|
||||||
|
.btn:hovera.btn-primary:hover {
|
||||||
|
background-color: #23536f;
|
||||||
|
border-color: #23536f;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.btn.btn-white:link,
|
||||||
|
btn-sm.btn-white:link,
|
||||||
|
.btn:hover.btn-white:link {
|
||||||
|
background-color: #307095;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.btn.btn-white:hover,
|
||||||
|
btn-sm.btn-white:hover,
|
||||||
|
.btn:hover.btn-white:hover {
|
||||||
|
background-color: #173648;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.btn.btn-white:visited,
|
||||||
|
btn-sm.btn-white:visited,
|
||||||
|
.btn:hover.btn-white:visited {
|
||||||
|
background-color: #173648;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.btn-warning,
|
||||||
|
.btn-warning:link,
|
||||||
|
a.btn-warning:hover,
|
||||||
|
.btn-warning:link,
|
||||||
|
.btn-warning:visited,
|
||||||
|
.btn-danger,
|
||||||
|
.btn-danger:link,
|
||||||
|
a.btn-danger:hover,
|
||||||
|
.btn-danger:link,
|
||||||
|
.btn-danger:visited {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
:root {
|
||||||
|
--button-default: #00436b;
|
||||||
|
--button-primary: #002338;
|
||||||
|
--button-hover: #00131e;
|
||||||
|
--header: #0073b7;
|
||||||
|
/* Use same as Header picker */
|
||||||
|
--text-main: #BBB;
|
||||||
|
--text-sub: #9b9b9b;
|
||||||
|
--link: #0073b7;
|
||||||
|
/* Use same as Header picker, lighten by 70% */
|
||||||
|
--visited-link: #0093ea;
|
||||||
|
/* Use same as Header picker, lighten by 70% */
|
||||||
|
--hover-link: #1eabff;
|
||||||
|
/* Use same as Header picker, lighten by 70% */
|
||||||
|
--nav-link: #FFF;
|
||||||
|
/* Use same as Header picker */
|
||||||
|
--light-link: #fff;
|
||||||
|
/* Use same as Header picker */
|
||||||
|
}
|
||||||
|
a.btn-info:link,
|
||||||
|
a.btn-warning:link,
|
||||||
|
a.btn-danger:link {
|
||||||
|
color: #FFF;
|
||||||
|
}
|
||||||
|
a.btn-info:visited,
|
||||||
|
a.btn-warning:visited,
|
||||||
|
a.btn-danger:visited {
|
||||||
|
color: #FFF;
|
||||||
|
}
|
||||||
|
a:link {
|
||||||
|
color: var(--link);
|
||||||
|
}
|
||||||
|
a:visited {
|
||||||
|
color: var(--visited-link);
|
||||||
|
}
|
||||||
|
a:hover {
|
||||||
|
color: var(--hover-link);
|
||||||
|
}
|
||||||
|
.text-primary {
|
||||||
|
color: #23536f;
|
||||||
|
}
|
||||||
|
.fixed-table-container tbody .selected td {
|
||||||
|
background-color: #fff8af;
|
||||||
|
}
|
||||||
|
.select2-container--default .select2-selection--multiple .select2-selection__choice {
|
||||||
|
background-color: #3c8dbc;
|
||||||
|
}
|
||||||
|
.search-highlight,
|
||||||
|
.search-highlight:hover {
|
||||||
|
background-color: #e9d15b;
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
224
public/css/dist/skins/skin-contrast.css
vendored
224
public/css/dist/skins/skin-contrast.css
vendored
@@ -1 +1,223 @@
|
|||||||
.skin-contrast .main-header .navbar{background-color:#001f3f}.skin-contrast .main-header .navbar .nav>li>a{color:#fff}.skin-contrast .main-header .navbar .nav .open>a,.skin-contrast .main-header .navbar .nav .open>a:focus,.skin-contrast .main-header .navbar .nav .open>a:hover,.skin-contrast .main-header .navbar .nav>.active>a,.skin-contrast .main-header .navbar .nav>li>a:active,.skin-contrast .main-header .navbar .nav>li>a:focus,.skin-contrast .main-header .navbar .nav>li>a:hover,.skin-contrast .main-header .navbar .sidebar-toggle:hover{background:rgba(0,0,0,.1);color:#f6f6f6}.skin-contrast .main-header .navbar .sidebar-toggle{color:#fff}.skin-contrast .main-header .navbar .sidebar-toggle:hover{background-color:#001226}@media (max-width:767px){.skin-contrast .main-header .navbar .dropdown-menu li.divider{background-color:hsla(0,0%,100%,.1)}.skin-contrast .main-header .navbar .dropdown-menu li a{color:#fff}.skin-contrast .main-header .navbar .dropdown-menu li a:hover{background:#001226}}.skin-contrast .main-header li.user-header{background-color:#001f3f}.skin-contrast .content-header{background:transparent}.skin-contrast .left-side,.skin-contrast .main-sidebar,.skin-contrast .wrapper{background-color:#222d32}.skin-contrast .user-panel>.info,.skin-contrast .user-panel>.info>a{color:#fff}.skin-contrast .sidebar-menu>li.header{background:#1a2226;color:#4b646f}.skin-contrast .sidebar-menu>li>a{border-left:3px solid transparent}.skin-contrast .sidebar-menu>li.active>a,.skin-contrast .sidebar-menu>li:hover>a{background:#1e282c;border-left-color:#001f3f;color:#fff}.skin-contrast .sidebar-menu>li>.treeview-menu{background:#2c3b41;margin:0 1px}.skin-contrast .sidebar a{color:#b8c7ce}.skin-contrast .sidebar a:hover{text-decoration:none}.skin-contrast .treeview-menu>li>a{color:#8aa4af}.skin-contrast .treeview-menu>li.active>a,.skin-contrast .treeview-menu>li>a:hover{color:#fff}.skin-contrast .sidebar-form{border:1px solid #374850;border-radius:3px;margin:10px}.skin-contrast .sidebar-form .btn,.skin-contrast .sidebar-form input[type=text]{background-color:#374850;border:1px solid transparent;box-shadow:none;height:35px;transition:all .3s ease-in-out}.skin-contrast .sidebar-form input[type=text]{border-bottom-left-radius:2px;border-bottom-right-radius:0;border-top-left-radius:2px;border-top-right-radius:0;color:#666}.skin-contrast .sidebar-form input[type=text]:focus,.skin-contrast .sidebar-form input[type=text]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-contrast .sidebar-form input[type=text]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-contrast .sidebar-form .btn{border-bottom-left-radius:0;border-bottom-right-radius:2px;border-top-left-radius:0;border-top-right-radius:2px;color:#999}.skin-contrast.layout-top-nav .main-header>.logo .logo-variant{background-color:none}.btn.btn-primary,.btn .btn-primary:link,.btn:hover.btn-primary,.btn:hover .btn-primary:link{background-color:#00060c;border-color:#000;color:#fff}.btn:hovera.btn-primary:hover,.btna.btn-primary:hover{background-color:#000;border-color:#000;color:#fff}.btn.btn-white:link,.btn:hover.btn-white:link{background-color:#00060c;color:#fff}.btn.btn-white:hover,.btn:hover.btn-white:hover{background-color:#000;color:#fff}a,a:hover{color:#001f3f}a:hover{text-decoration:underline}a:visited{color:#001f3f}a.btn:hover{color:#fff;text-decoration:underline}a.btn:visited{color:#fff}.text-primary{color:#000}.skin-contrast .treeview-menu>li>a{color:#fff}.bg-teal{background-color:#1b6a6a!important}.bg-orange{background-color:#995400!important}.bg-purple{background-color:#3a3767!important}.bg-maroon{background-color:#7d1038!important}.pagination>li>a{color:#00060c!important}.pagination>.active>a{background-color:#001f3f;color:#fff!important}btn-success{background-color:#000d07}input::-webkit-input-placeholder{color:#b5bbc8!important}input::-moz-placeholder{color:#b5bbc8!important}input::-ms-input-placeholder{color:#b5bbc8!important}.select2-default,.select2-selection__placeholder{color:#37383c!important}.callout.callout-info{background-color:#003351!important}.fixed-table-container tbody .selected td{background-color:#fff8af}.search-highlight,.search-highlight:hover{background-color:#e9d15b}
|
/*
|
||||||
|
* Skin: Contrast
|
||||||
|
* ----------
|
||||||
|
*/
|
||||||
|
.skin-contrast .main-header .navbar {
|
||||||
|
background-color: #001F3F;
|
||||||
|
}
|
||||||
|
.skin-contrast .main-header .navbar .nav > li > a {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-contrast .main-header .navbar .nav > li > a:hover,
|
||||||
|
.skin-contrast .main-header .navbar .nav > li > a:active,
|
||||||
|
.skin-contrast .main-header .navbar .nav > li > a:focus,
|
||||||
|
.skin-contrast .main-header .navbar .nav .open > a,
|
||||||
|
.skin-contrast .main-header .navbar .nav .open > a:hover,
|
||||||
|
.skin-contrast .main-header .navbar .nav .open > a:focus,
|
||||||
|
.skin-contrast .main-header .navbar .nav > .active > a {
|
||||||
|
background: rgba(0, 0, 0, 0.1);
|
||||||
|
color: #f6f6f6;
|
||||||
|
}
|
||||||
|
.skin-contrast .main-header .navbar .sidebar-toggle {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-contrast .main-header .navbar .sidebar-toggle:hover {
|
||||||
|
color: #f6f6f6;
|
||||||
|
background: rgba(0, 0, 0, 0.1);
|
||||||
|
}
|
||||||
|
.skin-contrast .main-header .navbar .sidebar-toggle {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-contrast .main-header .navbar .sidebar-toggle:hover {
|
||||||
|
background-color: #001226;
|
||||||
|
}
|
||||||
|
@media (max-width: 767px) {
|
||||||
|
.skin-contrast .main-header .navbar .dropdown-menu li.divider {
|
||||||
|
background-color: rgba(255, 255, 255, 0.1);
|
||||||
|
}
|
||||||
|
.skin-contrast .main-header .navbar .dropdown-menu li a {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-contrast .main-header .navbar .dropdown-menu li a:hover {
|
||||||
|
background: #001226;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.skin-contrast .main-header li.user-header {
|
||||||
|
background-color: #001F3F;
|
||||||
|
}
|
||||||
|
.skin-contrast .content-header {
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
.skin-contrast .wrapper,
|
||||||
|
.skin-contrast .main-sidebar,
|
||||||
|
.skin-contrast .left-side {
|
||||||
|
background-color: #222d32;
|
||||||
|
}
|
||||||
|
.skin-contrast .user-panel > .info,
|
||||||
|
.skin-contrast .user-panel > .info > a {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-contrast .sidebar-menu > li.header {
|
||||||
|
color: #4b646f;
|
||||||
|
background: #1a2226;
|
||||||
|
}
|
||||||
|
.skin-contrast .sidebar-menu > li > a {
|
||||||
|
border-left: 3px solid transparent;
|
||||||
|
}
|
||||||
|
.skin-contrast .sidebar-menu > li:hover > a,
|
||||||
|
.skin-contrast .sidebar-menu > li.active > a {
|
||||||
|
color: #fff;
|
||||||
|
background: #1e282c;
|
||||||
|
border-left-color: #001F3F;
|
||||||
|
}
|
||||||
|
.skin-contrast .sidebar-menu > li > .treeview-menu {
|
||||||
|
margin: 0 1px;
|
||||||
|
background: #2c3b41;
|
||||||
|
}
|
||||||
|
.skin-contrast .sidebar a {
|
||||||
|
color: #b8c7ce;
|
||||||
|
}
|
||||||
|
.skin-contrast .sidebar a:hover {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
.skin-contrast .treeview-menu > li > a {
|
||||||
|
color: #8aa4af;
|
||||||
|
}
|
||||||
|
.skin-contrast .treeview-menu > li.active > a,
|
||||||
|
.skin-contrast .treeview-menu > li > a:hover {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-contrast .sidebar-form {
|
||||||
|
border-radius: 3px;
|
||||||
|
border: 1px solid #374850;
|
||||||
|
margin: 10px 10px;
|
||||||
|
}
|
||||||
|
.skin-contrast .sidebar-form input[type="text"],
|
||||||
|
.skin-contrast .sidebar-form .btn {
|
||||||
|
box-shadow: none;
|
||||||
|
background-color: #374850;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
height: 35px;
|
||||||
|
transition: all 0.3s ease-in-out;
|
||||||
|
}
|
||||||
|
.skin-contrast .sidebar-form input[type="text"] {
|
||||||
|
color: #666;
|
||||||
|
border-top-left-radius: 2px;
|
||||||
|
border-top-right-radius: 0;
|
||||||
|
border-bottom-right-radius: 0;
|
||||||
|
border-bottom-left-radius: 2px;
|
||||||
|
}
|
||||||
|
.skin-contrast .sidebar-form input[type="text"]:focus,
|
||||||
|
.skin-contrast .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||||
|
background-color: #fff;
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
.skin-contrast .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||||
|
border-left-color: #fff;
|
||||||
|
}
|
||||||
|
.skin-contrast .sidebar-form .btn {
|
||||||
|
color: #999;
|
||||||
|
border-top-left-radius: 0;
|
||||||
|
border-top-right-radius: 2px;
|
||||||
|
border-bottom-right-radius: 2px;
|
||||||
|
border-bottom-left-radius: 0;
|
||||||
|
}
|
||||||
|
.skin-contrast.layout-top-nav .main-header > .logo .logo-variant {
|
||||||
|
background-color: none;
|
||||||
|
}
|
||||||
|
.btn.btn-primary,
|
||||||
|
.btn:hover.btn-primary,
|
||||||
|
.btn .btn-primary:link,
|
||||||
|
.btn:hover .btn-primary:link {
|
||||||
|
background-color: #00060c;
|
||||||
|
border-color: #000000;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.btna.btn-primary:hover,
|
||||||
|
.btn:hovera.btn-primary:hover {
|
||||||
|
background-color: #000000;
|
||||||
|
border-color: #000000;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.btn.btn-white:link,
|
||||||
|
.btn:hover.btn-white:link {
|
||||||
|
background-color: #00060c;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.btn.btn-white:hover,
|
||||||
|
.btn:hover.btn-white:hover {
|
||||||
|
background-color: #000000;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
a {
|
||||||
|
color: #001F3F;
|
||||||
|
}
|
||||||
|
a:hover {
|
||||||
|
color: #001F3F;
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
a:visited {
|
||||||
|
color: #001F3F;
|
||||||
|
}
|
||||||
|
a.btn:hover {
|
||||||
|
color: #fff;
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
a.btn:visited {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.text-primary {
|
||||||
|
color: #000000;
|
||||||
|
}
|
||||||
|
.skin-contrast .treeview-menu > li > a {
|
||||||
|
color: #FFF;
|
||||||
|
}
|
||||||
|
.bg-teal {
|
||||||
|
background-color: #1b6a6a !important;
|
||||||
|
}
|
||||||
|
.bg-orange {
|
||||||
|
background-color: #995400 !important;
|
||||||
|
}
|
||||||
|
.bg-purple {
|
||||||
|
background-color: #3a3767 !important;
|
||||||
|
}
|
||||||
|
.bg-maroon {
|
||||||
|
background-color: #7d1038 !important;
|
||||||
|
}
|
||||||
|
.pagination > li > a {
|
||||||
|
color: #00060c !important;
|
||||||
|
}
|
||||||
|
.pagination > .active > a {
|
||||||
|
background-color: #001F3F;
|
||||||
|
color: #FFF !important;
|
||||||
|
}
|
||||||
|
btn-success {
|
||||||
|
background-color: #000d07;
|
||||||
|
}
|
||||||
|
input::-webkit-input-placeholder {
|
||||||
|
/* Chrome/Opera/Safari */
|
||||||
|
color: #b5bbc8 !important;
|
||||||
|
}
|
||||||
|
input::-moz-placeholder {
|
||||||
|
/* Firefox 19+ */
|
||||||
|
color: #b5bbc8 !important;
|
||||||
|
}
|
||||||
|
input::-ms-input-placeholder {
|
||||||
|
/* IE 10+ */
|
||||||
|
color: #b5bbc8 !important;
|
||||||
|
}
|
||||||
|
.select2-default,
|
||||||
|
.select2-selection__placeholder {
|
||||||
|
color: #37383c !important;
|
||||||
|
}
|
||||||
|
.callout.callout-info {
|
||||||
|
background-color: #003351 !important;
|
||||||
|
}
|
||||||
|
.fixed-table-container tbody .selected td {
|
||||||
|
background-color: #fff8af;
|
||||||
|
}
|
||||||
|
.search-highlight,
|
||||||
|
.search-highlight:hover {
|
||||||
|
background-color: #e9d15b;
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
224
public/css/dist/skins/skin-contrast.min.css
vendored
224
public/css/dist/skins/skin-contrast.min.css
vendored
@@ -1 +1,223 @@
|
|||||||
.skin-contrast .main-header .navbar{background-color:#001f3f}.skin-contrast .main-header .navbar .nav>li>a{color:#fff}.skin-contrast .main-header .navbar .nav .open>a,.skin-contrast .main-header .navbar .nav .open>a:focus,.skin-contrast .main-header .navbar .nav .open>a:hover,.skin-contrast .main-header .navbar .nav>.active>a,.skin-contrast .main-header .navbar .nav>li>a:active,.skin-contrast .main-header .navbar .nav>li>a:focus,.skin-contrast .main-header .navbar .nav>li>a:hover,.skin-contrast .main-header .navbar .sidebar-toggle:hover{background:rgba(0,0,0,.1);color:#f6f6f6}.skin-contrast .main-header .navbar .sidebar-toggle{color:#fff}.skin-contrast .main-header .navbar .sidebar-toggle:hover{background-color:#001226}@media (max-width:767px){.skin-contrast .main-header .navbar .dropdown-menu li.divider{background-color:hsla(0,0%,100%,.1)}.skin-contrast .main-header .navbar .dropdown-menu li a{color:#fff}.skin-contrast .main-header .navbar .dropdown-menu li a:hover{background:#001226}}.skin-contrast .main-header li.user-header{background-color:#001f3f}.skin-contrast .content-header{background:0 0}.skin-contrast .left-side,.skin-contrast .main-sidebar,.skin-contrast .wrapper{background-color:#222d32}.skin-contrast .user-panel>.info,.skin-contrast .user-panel>.info>a{color:#fff}.skin-contrast .sidebar-menu>li.header{background:#1a2226;color:#4b646f}.skin-contrast .sidebar-menu>li>a{border-left:3px solid transparent}.skin-contrast .sidebar-menu>li.active>a,.skin-contrast .sidebar-menu>li:hover>a{background:#1e282c;border-left-color:#001f3f;color:#fff}.skin-contrast .sidebar-menu>li>.treeview-menu{background:#2c3b41;margin:0 1px}.skin-contrast .sidebar a{color:#b8c7ce}.skin-contrast .sidebar a:hover{text-decoration:none}.skin-contrast .treeview-menu>li>a{color:#8aa4af}.skin-contrast .treeview-menu>li.active>a,.skin-contrast .treeview-menu>li>a:hover{color:#fff}.skin-contrast .sidebar-form{border:1px solid #374850;border-radius:3px;margin:10px}.skin-contrast .sidebar-form .btn,.skin-contrast .sidebar-form input[type=text]{background-color:#374850;border:1px solid transparent;box-shadow:none;height:35px;transition:all .3s ease-in-out}.skin-contrast .sidebar-form input[type=text]{border-bottom-left-radius:2px;border-bottom-right-radius:0;border-top-left-radius:2px;border-top-right-radius:0;color:#666}.skin-contrast .sidebar-form input[type=text]:focus,.skin-contrast .sidebar-form input[type=text]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-contrast .sidebar-form input[type=text]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-contrast .sidebar-form .btn{border-bottom-left-radius:0;border-bottom-right-radius:2px;border-top-left-radius:0;border-top-right-radius:2px;color:#999}.skin-contrast.layout-top-nav .main-header>.logo .logo-variant{background-color:none}.btn .btn-primary:link,.btn.btn-primary,.btn:hover .btn-primary:link,.btn:hover.btn-primary{background-color:#00060c;border-color:#000;color:#fff}.btn:hovera.btn-primary:hover,.btna.btn-primary:hover{background-color:#000;border-color:#000;color:#fff}.btn.btn-white:link,.btn:hover.btn-white:link{background-color:#00060c;color:#fff}.btn.btn-white:hover,.btn:hover.btn-white:hover{background-color:#000;color:#fff}a,a:hover{color:#001f3f}a:hover{text-decoration:underline}a:visited{color:#001f3f}a.btn:hover{color:#fff;text-decoration:underline}a.btn:visited{color:#fff}.text-primary{color:#000}.skin-contrast .treeview-menu>li>a{color:#fff}.bg-teal{background-color:#1b6a6a!important}.bg-orange{background-color:#995400!important}.bg-purple{background-color:#3a3767!important}.bg-maroon{background-color:#7d1038!important}.pagination>li>a{color:#00060c!important}.pagination>.active>a{background-color:#001f3f;color:#fff!important}btn-success{background-color:#000d07}input::-webkit-input-placeholder{color:#b5bbc8!important}input::-moz-placeholder{color:#b5bbc8!important}input::-ms-input-placeholder{color:#b5bbc8!important}.select2-default,.select2-selection__placeholder{color:#37383c!important}.callout.callout-info{background-color:#003351!important}.fixed-table-container tbody .selected td{background-color:#fff8af}.search-highlight,.search-highlight:hover{background-color:#e9d15b}
|
/*
|
||||||
|
* Skin: Contrast
|
||||||
|
* ----------
|
||||||
|
*/
|
||||||
|
.skin-contrast .main-header .navbar {
|
||||||
|
background-color: #001F3F;
|
||||||
|
}
|
||||||
|
.skin-contrast .main-header .navbar .nav > li > a {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-contrast .main-header .navbar .nav > li > a:hover,
|
||||||
|
.skin-contrast .main-header .navbar .nav > li > a:active,
|
||||||
|
.skin-contrast .main-header .navbar .nav > li > a:focus,
|
||||||
|
.skin-contrast .main-header .navbar .nav .open > a,
|
||||||
|
.skin-contrast .main-header .navbar .nav .open > a:hover,
|
||||||
|
.skin-contrast .main-header .navbar .nav .open > a:focus,
|
||||||
|
.skin-contrast .main-header .navbar .nav > .active > a {
|
||||||
|
background: rgba(0, 0, 0, 0.1);
|
||||||
|
color: #f6f6f6;
|
||||||
|
}
|
||||||
|
.skin-contrast .main-header .navbar .sidebar-toggle {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-contrast .main-header .navbar .sidebar-toggle:hover {
|
||||||
|
color: #f6f6f6;
|
||||||
|
background: rgba(0, 0, 0, 0.1);
|
||||||
|
}
|
||||||
|
.skin-contrast .main-header .navbar .sidebar-toggle {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-contrast .main-header .navbar .sidebar-toggle:hover {
|
||||||
|
background-color: #001226;
|
||||||
|
}
|
||||||
|
@media (max-width: 767px) {
|
||||||
|
.skin-contrast .main-header .navbar .dropdown-menu li.divider {
|
||||||
|
background-color: rgba(255, 255, 255, 0.1);
|
||||||
|
}
|
||||||
|
.skin-contrast .main-header .navbar .dropdown-menu li a {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-contrast .main-header .navbar .dropdown-menu li a:hover {
|
||||||
|
background: #001226;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.skin-contrast .main-header li.user-header {
|
||||||
|
background-color: #001F3F;
|
||||||
|
}
|
||||||
|
.skin-contrast .content-header {
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
.skin-contrast .wrapper,
|
||||||
|
.skin-contrast .main-sidebar,
|
||||||
|
.skin-contrast .left-side {
|
||||||
|
background-color: #222d32;
|
||||||
|
}
|
||||||
|
.skin-contrast .user-panel > .info,
|
||||||
|
.skin-contrast .user-panel > .info > a {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-contrast .sidebar-menu > li.header {
|
||||||
|
color: #4b646f;
|
||||||
|
background: #1a2226;
|
||||||
|
}
|
||||||
|
.skin-contrast .sidebar-menu > li > a {
|
||||||
|
border-left: 3px solid transparent;
|
||||||
|
}
|
||||||
|
.skin-contrast .sidebar-menu > li:hover > a,
|
||||||
|
.skin-contrast .sidebar-menu > li.active > a {
|
||||||
|
color: #fff;
|
||||||
|
background: #1e282c;
|
||||||
|
border-left-color: #001F3F;
|
||||||
|
}
|
||||||
|
.skin-contrast .sidebar-menu > li > .treeview-menu {
|
||||||
|
margin: 0 1px;
|
||||||
|
background: #2c3b41;
|
||||||
|
}
|
||||||
|
.skin-contrast .sidebar a {
|
||||||
|
color: #b8c7ce;
|
||||||
|
}
|
||||||
|
.skin-contrast .sidebar a:hover {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
.skin-contrast .treeview-menu > li > a {
|
||||||
|
color: #8aa4af;
|
||||||
|
}
|
||||||
|
.skin-contrast .treeview-menu > li.active > a,
|
||||||
|
.skin-contrast .treeview-menu > li > a:hover {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-contrast .sidebar-form {
|
||||||
|
border-radius: 3px;
|
||||||
|
border: 1px solid #374850;
|
||||||
|
margin: 10px 10px;
|
||||||
|
}
|
||||||
|
.skin-contrast .sidebar-form input[type="text"],
|
||||||
|
.skin-contrast .sidebar-form .btn {
|
||||||
|
box-shadow: none;
|
||||||
|
background-color: #374850;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
height: 35px;
|
||||||
|
transition: all 0.3s ease-in-out;
|
||||||
|
}
|
||||||
|
.skin-contrast .sidebar-form input[type="text"] {
|
||||||
|
color: #666;
|
||||||
|
border-top-left-radius: 2px;
|
||||||
|
border-top-right-radius: 0;
|
||||||
|
border-bottom-right-radius: 0;
|
||||||
|
border-bottom-left-radius: 2px;
|
||||||
|
}
|
||||||
|
.skin-contrast .sidebar-form input[type="text"]:focus,
|
||||||
|
.skin-contrast .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||||
|
background-color: #fff;
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
.skin-contrast .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||||
|
border-left-color: #fff;
|
||||||
|
}
|
||||||
|
.skin-contrast .sidebar-form .btn {
|
||||||
|
color: #999;
|
||||||
|
border-top-left-radius: 0;
|
||||||
|
border-top-right-radius: 2px;
|
||||||
|
border-bottom-right-radius: 2px;
|
||||||
|
border-bottom-left-radius: 0;
|
||||||
|
}
|
||||||
|
.skin-contrast.layout-top-nav .main-header > .logo .logo-variant {
|
||||||
|
background-color: none;
|
||||||
|
}
|
||||||
|
.btn.btn-primary,
|
||||||
|
.btn:hover.btn-primary,
|
||||||
|
.btn .btn-primary:link,
|
||||||
|
.btn:hover .btn-primary:link {
|
||||||
|
background-color: #00060c;
|
||||||
|
border-color: #000000;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.btna.btn-primary:hover,
|
||||||
|
.btn:hovera.btn-primary:hover {
|
||||||
|
background-color: #000000;
|
||||||
|
border-color: #000000;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.btn.btn-white:link,
|
||||||
|
.btn:hover.btn-white:link {
|
||||||
|
background-color: #00060c;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.btn.btn-white:hover,
|
||||||
|
.btn:hover.btn-white:hover {
|
||||||
|
background-color: #000000;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
a {
|
||||||
|
color: #001F3F;
|
||||||
|
}
|
||||||
|
a:hover {
|
||||||
|
color: #001F3F;
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
a:visited {
|
||||||
|
color: #001F3F;
|
||||||
|
}
|
||||||
|
a.btn:hover {
|
||||||
|
color: #fff;
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
a.btn:visited {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.text-primary {
|
||||||
|
color: #000000;
|
||||||
|
}
|
||||||
|
.skin-contrast .treeview-menu > li > a {
|
||||||
|
color: #FFF;
|
||||||
|
}
|
||||||
|
.bg-teal {
|
||||||
|
background-color: #1b6a6a !important;
|
||||||
|
}
|
||||||
|
.bg-orange {
|
||||||
|
background-color: #995400 !important;
|
||||||
|
}
|
||||||
|
.bg-purple {
|
||||||
|
background-color: #3a3767 !important;
|
||||||
|
}
|
||||||
|
.bg-maroon {
|
||||||
|
background-color: #7d1038 !important;
|
||||||
|
}
|
||||||
|
.pagination > li > a {
|
||||||
|
color: #00060c !important;
|
||||||
|
}
|
||||||
|
.pagination > .active > a {
|
||||||
|
background-color: #001F3F;
|
||||||
|
color: #FFF !important;
|
||||||
|
}
|
||||||
|
btn-success {
|
||||||
|
background-color: #000d07;
|
||||||
|
}
|
||||||
|
input::-webkit-input-placeholder {
|
||||||
|
/* Chrome/Opera/Safari */
|
||||||
|
color: #b5bbc8 !important;
|
||||||
|
}
|
||||||
|
input::-moz-placeholder {
|
||||||
|
/* Firefox 19+ */
|
||||||
|
color: #b5bbc8 !important;
|
||||||
|
}
|
||||||
|
input::-ms-input-placeholder {
|
||||||
|
/* IE 10+ */
|
||||||
|
color: #b5bbc8 !important;
|
||||||
|
}
|
||||||
|
.select2-default,
|
||||||
|
.select2-selection__placeholder {
|
||||||
|
color: #37383c !important;
|
||||||
|
}
|
||||||
|
.callout.callout-info {
|
||||||
|
background-color: #003351 !important;
|
||||||
|
}
|
||||||
|
.fixed-table-container tbody .selected td {
|
||||||
|
background-color: #fff8af;
|
||||||
|
}
|
||||||
|
.search-highlight,
|
||||||
|
.search-highlight:hover {
|
||||||
|
background-color: #e9d15b;
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
476
public/css/dist/skins/skin-green-dark.css
vendored
476
public/css/dist/skins/skin-green-dark.css
vendored
File diff suppressed because one or more lines are too long
476
public/css/dist/skins/skin-green-dark.min.css
vendored
476
public/css/dist/skins/skin-green-dark.min.css
vendored
File diff suppressed because one or more lines are too long
209
public/css/dist/skins/skin-green.css
vendored
209
public/css/dist/skins/skin-green.css
vendored
@@ -1 +1,208 @@
|
|||||||
.skin-green .main-header .navbar{background-color:#00a65a}.skin-green .main-header .navbar .nav>li>a{color:#fff}.skin-green .main-header .navbar .nav .open>a,.skin-green .main-header .navbar .nav .open>a:focus,.skin-green .main-header .navbar .nav .open>a:hover,.skin-green .main-header .navbar .nav>.active>a,.skin-green .main-header .navbar .nav>li>a:active,.skin-green .main-header .navbar .nav>li>a:focus,.skin-green .main-header .navbar .nav>li>a:hover,.skin-green .main-header .navbar .sidebar-toggle:hover{background:rgba(0,0,0,.1);color:#f6f6f6}.skin-green .main-header .navbar .sidebar-toggle{color:#fff}.skin-green .main-header .navbar .sidebar-toggle:hover{background-color:#008d4c}@media (max-width:767px){.skin-green .main-header .navbar .dropdown-menu li.divider{background-color:hsla(0,0%,100%,.1)}.skin-green .main-header .navbar .dropdown-menu li a{color:#333}.skin-green .main-header .navbar .dropdown-menu li a:hover{background:#008d4c}}.skin-green .main-header li.user-header{background-color:#00a65a}.skin-green .content-header{background:transparent}.skin-green .left-side,.skin-green .main-sidebar,.skin-green .wrapper{background-color:#222d32}.skin-green .user-panel>.info,.skin-green .user-panel>.info>a{color:#fff}.skin-green .sidebar-menu>li.header{background:#1a2226;color:#4b646f}.skin-green .sidebar-menu>li>a{border-left:3px solid transparent}.skin-green .sidebar-menu>li.active>a,.skin-green .sidebar-menu>li:hover>a{background:#1e282c;border-left-color:#00a65a;color:#fff}.skin-green .sidebar-menu>li>.treeview-menu{background:#2c3b41;margin:0 1px}.skin-green .sidebar a{color:#b8c7ce}.skin-green .sidebar a:hover{text-decoration:none}.skin-green .treeview-menu>li>a{color:#8aa4af}.skin-green .treeview-menu>li.active>a,.skin-green .treeview-menu>li>a:hover{color:#fff}.skin-green .sidebar-form{border:1px solid #374850;border-radius:3px;margin:10px}.skin-green .sidebar-form .btn,.skin-green .sidebar-form input[type=text]{background-color:#374850;border:1px solid transparent;box-shadow:none;height:35px;transition:all .3s ease-in-out}.skin-green .sidebar-form input[type=text]{border-bottom-left-radius:2px;border-bottom-right-radius:0;border-top-left-radius:2px;border-top-right-radius:0;color:#666}.skin-green .sidebar-form input[type=text]:focus,.skin-green .sidebar-form input[type=text]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-green .sidebar-form input[type=text]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-green .sidebar-form .btn{border-bottom-left-radius:0;border-bottom-right-radius:2px;border-top-left-radius:0;border-top-right-radius:2px;color:#999}.skin-green.layout-top-nav .main-header>.logo .logo-variant{background-color:none}.btn.btn-primary,.btn .btn-primary:link,.btn:hover.btn-primary,.btn:hover .btn-primary:link{background-color:#00733e;border-color:#004023;color:#fff}.btn:hovera.btn-primary:hover,.btna.btn-primary:hover{background-color:#004023;border-color:#004023;color:#fff}.btn.btn-white:link,.btn:hover.btn-white:link{background-color:#00733e;color:#fff}.btn.btn-white:hover,.btn:hover.btn-white:hover{background-color:#000d07;color:#fff}a{color:#00a65a}a:hover{color:#004023}a:visited{color:#00a65a}.text-primary{color:#004023}.fixed-table-container tbody .selected td{background-color:#fff8af}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#00a65a}.search-highlight,.search-highlight:hover{background-color:#e9d15b}
|
/*
|
||||||
|
* Skin: Green
|
||||||
|
* ----------
|
||||||
|
*/
|
||||||
|
:root {
|
||||||
|
--background: #222;
|
||||||
|
--back-main: #333;
|
||||||
|
--back-sub: #3d4144;
|
||||||
|
--back-sub-alt: rgba(0, 0, 0, 0.36);
|
||||||
|
--button-default: #005a31;
|
||||||
|
--button-primary: #002715;
|
||||||
|
--button-hover: #000d07;
|
||||||
|
--header: #00a65a;
|
||||||
|
/* Use same as Header picker */
|
||||||
|
--text-main: #BBB;
|
||||||
|
--text-sub: #9b9b9b;
|
||||||
|
--link: #00a65a;
|
||||||
|
/* Use same as Header picker, lighten by 70% */
|
||||||
|
--visited-link: #00f383;
|
||||||
|
/* Use same as Header picker, lighten by 70% */
|
||||||
|
--hover-link: #0dff90;
|
||||||
|
}
|
||||||
|
.skin-green .main-header .navbar {
|
||||||
|
background-color: #00a65a;
|
||||||
|
}
|
||||||
|
.skin-green .main-header .navbar .nav > li > a {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-green .main-header .navbar .nav > li > a:hover,
|
||||||
|
.skin-green .main-header .navbar .nav > li > a:active,
|
||||||
|
.skin-green .main-header .navbar .nav > li > a:focus,
|
||||||
|
.skin-green .main-header .navbar .nav .open > a,
|
||||||
|
.skin-green .main-header .navbar .nav .open > a:hover,
|
||||||
|
.skin-green .main-header .navbar .nav .open > a:focus,
|
||||||
|
.skin-green .main-header .navbar .nav > .active > a {
|
||||||
|
background: rgba(0, 0, 0, 0.1);
|
||||||
|
color: #f6f6f6;
|
||||||
|
}
|
||||||
|
.skin-green .main-header .navbar .sidebar-toggle {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-green .main-header .navbar .sidebar-toggle:hover {
|
||||||
|
color: #f6f6f6;
|
||||||
|
background: rgba(0, 0, 0, 0.1);
|
||||||
|
}
|
||||||
|
.skin-green .main-header .navbar .sidebar-toggle {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-green .main-header .navbar .sidebar-toggle:hover {
|
||||||
|
background-color: #008d4c;
|
||||||
|
}
|
||||||
|
@media (max-width: 767px) {
|
||||||
|
.skin-green .main-header .navbar .dropdown-menu li.divider {
|
||||||
|
background-color: rgba(255, 255, 255, 0.1);
|
||||||
|
}
|
||||||
|
.skin-green .main-header .navbar .dropdown-menu li a {
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
.skin-green .main-header .navbar .dropdown-menu li a:hover {
|
||||||
|
background: #008d4c;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.skin-green .main-header li.user-header {
|
||||||
|
background-color: #00a65a;
|
||||||
|
}
|
||||||
|
.skin-green .content-header {
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
.skin-green .wrapper,
|
||||||
|
.skin-green .main-sidebar,
|
||||||
|
.skin-green .left-side {
|
||||||
|
background-color: #222d32;
|
||||||
|
}
|
||||||
|
.skin-green .user-panel > .info,
|
||||||
|
.skin-green .user-panel > .info > a {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-green .sidebar-menu > li.header {
|
||||||
|
color: #4b646f;
|
||||||
|
background: #1a2226;
|
||||||
|
}
|
||||||
|
.skin-green .sidebar-menu > li > a {
|
||||||
|
border-left: 3px solid transparent;
|
||||||
|
}
|
||||||
|
.skin-green .sidebar-menu > li:hover > a,
|
||||||
|
.skin-green .sidebar-menu > li.active > a {
|
||||||
|
color: #fff;
|
||||||
|
background: #1e282c;
|
||||||
|
border-left-color: #00a65a;
|
||||||
|
}
|
||||||
|
.skin-green .sidebar-menu > li > .treeview-menu {
|
||||||
|
margin: 0 1px;
|
||||||
|
background: #2c3b41;
|
||||||
|
}
|
||||||
|
.skin-green .sidebar a {
|
||||||
|
color: #b8c7ce;
|
||||||
|
}
|
||||||
|
.skin-green .sidebar a:hover {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
.skin-green .treeview-menu > li > a {
|
||||||
|
color: #8aa4af;
|
||||||
|
}
|
||||||
|
.skin-green .treeview-menu > li.active > a,
|
||||||
|
.skin-green .treeview-menu > li > a:hover {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-green .sidebar-form {
|
||||||
|
border-radius: 3px;
|
||||||
|
border: 1px solid #374850;
|
||||||
|
margin: 10px 10px;
|
||||||
|
}
|
||||||
|
.skin-green .sidebar-form input[type="text"],
|
||||||
|
.skin-green .sidebar-form .btn {
|
||||||
|
box-shadow: none;
|
||||||
|
background-color: #374850;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
height: 35px;
|
||||||
|
transition: all 0.3s ease-in-out;
|
||||||
|
}
|
||||||
|
.skin-green .sidebar-form input[type="text"] {
|
||||||
|
color: #666;
|
||||||
|
border-top-left-radius: 2px;
|
||||||
|
border-top-right-radius: 0;
|
||||||
|
border-bottom-right-radius: 0;
|
||||||
|
border-bottom-left-radius: 2px;
|
||||||
|
}
|
||||||
|
.skin-green .sidebar-form input[type="text"]:focus,
|
||||||
|
.skin-green .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||||
|
background-color: #fff;
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
.skin-green .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||||
|
border-left-color: #fff;
|
||||||
|
}
|
||||||
|
.skin-green .sidebar-form .btn {
|
||||||
|
color: #999;
|
||||||
|
border-top-left-radius: 0;
|
||||||
|
border-top-right-radius: 2px;
|
||||||
|
border-bottom-right-radius: 2px;
|
||||||
|
border-bottom-left-radius: 0;
|
||||||
|
}
|
||||||
|
.skin-green.layout-top-nav .main-header > .logo .logo-variant {
|
||||||
|
background-color: none;
|
||||||
|
}
|
||||||
|
.btn.btn-primary,
|
||||||
|
.btn:hover.btn-primary,
|
||||||
|
.btn .btn-primary:link,
|
||||||
|
.btn:hover .btn-primary:link {
|
||||||
|
background-color: #00733e;
|
||||||
|
border-color: #004023;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.btna.btn-primary:hover,
|
||||||
|
.btn:hovera.btn-primary:hover {
|
||||||
|
background-color: #004023;
|
||||||
|
border-color: #004023;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.btn.btn-white:link,
|
||||||
|
.btn:hover.btn-white:link {
|
||||||
|
background-color: #00733e;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.btn.btn-white:hover,
|
||||||
|
.btn:hover.btn-white:hover {
|
||||||
|
background-color: #000d07;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
a.btn-info:link,
|
||||||
|
a.btn-warning:link,
|
||||||
|
a.btn-danger:link {
|
||||||
|
color: #FFF;
|
||||||
|
}
|
||||||
|
a.btn-info:visited,
|
||||||
|
a.btn-warning:visited,
|
||||||
|
a.btn-danger:visited {
|
||||||
|
color: #FFF;
|
||||||
|
}
|
||||||
|
a:link {
|
||||||
|
color: var(--link);
|
||||||
|
}
|
||||||
|
a:visited {
|
||||||
|
color: var(--visited-link);
|
||||||
|
}
|
||||||
|
a {
|
||||||
|
color: #00a65a;
|
||||||
|
}
|
||||||
|
a:hover {
|
||||||
|
color: #004023;
|
||||||
|
}
|
||||||
|
a:visited {
|
||||||
|
color: #00a65a;
|
||||||
|
}
|
||||||
|
.text-primary {
|
||||||
|
color: #004023;
|
||||||
|
}
|
||||||
|
.fixed-table-container tbody .selected td {
|
||||||
|
background-color: #fff8af;
|
||||||
|
}
|
||||||
|
.select2-container--default .select2-selection--multiple .select2-selection__choice {
|
||||||
|
background-color: #00a65a;
|
||||||
|
}
|
||||||
|
.search-highlight,
|
||||||
|
.search-highlight:hover {
|
||||||
|
background-color: #e9d15b;
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
209
public/css/dist/skins/skin-green.min.css
vendored
209
public/css/dist/skins/skin-green.min.css
vendored
@@ -1 +1,208 @@
|
|||||||
.skin-green .main-header .navbar{background-color:#00a65a}.skin-green .main-header .navbar .nav>li>a{color:#fff}.skin-green .main-header .navbar .nav .open>a,.skin-green .main-header .navbar .nav .open>a:focus,.skin-green .main-header .navbar .nav .open>a:hover,.skin-green .main-header .navbar .nav>.active>a,.skin-green .main-header .navbar .nav>li>a:active,.skin-green .main-header .navbar .nav>li>a:focus,.skin-green .main-header .navbar .nav>li>a:hover,.skin-green .main-header .navbar .sidebar-toggle:hover{background:rgba(0,0,0,.1);color:#f6f6f6}.skin-green .main-header .navbar .sidebar-toggle{color:#fff}.skin-green .main-header .navbar .sidebar-toggle:hover{background-color:#008d4c}@media (max-width:767px){.skin-green .main-header .navbar .dropdown-menu li.divider{background-color:hsla(0,0%,100%,.1)}.skin-green .main-header .navbar .dropdown-menu li a{color:#333}.skin-green .main-header .navbar .dropdown-menu li a:hover{background:#008d4c}}.skin-green .main-header li.user-header{background-color:#00a65a}.skin-green .content-header{background:0 0}.skin-green .left-side,.skin-green .main-sidebar,.skin-green .wrapper{background-color:#222d32}.skin-green .user-panel>.info,.skin-green .user-panel>.info>a{color:#fff}.skin-green .sidebar-menu>li.header{background:#1a2226;color:#4b646f}.skin-green .sidebar-menu>li>a{border-left:3px solid transparent}.skin-green .sidebar-menu>li.active>a,.skin-green .sidebar-menu>li:hover>a{background:#1e282c;border-left-color:#00a65a;color:#fff}.skin-green .sidebar-menu>li>.treeview-menu{background:#2c3b41;margin:0 1px}.skin-green .sidebar a{color:#b8c7ce}.skin-green .sidebar a:hover{text-decoration:none}.skin-green .treeview-menu>li>a{color:#8aa4af}.skin-green .treeview-menu>li.active>a,.skin-green .treeview-menu>li>a:hover{color:#fff}.skin-green .sidebar-form{border:1px solid #374850;border-radius:3px;margin:10px}.skin-green .sidebar-form .btn,.skin-green .sidebar-form input[type=text]{background-color:#374850;border:1px solid transparent;box-shadow:none;height:35px;transition:all .3s ease-in-out}.skin-green .sidebar-form input[type=text]{border-bottom-left-radius:2px;border-bottom-right-radius:0;border-top-left-radius:2px;border-top-right-radius:0;color:#666}.skin-green .sidebar-form input[type=text]:focus,.skin-green .sidebar-form input[type=text]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-green .sidebar-form input[type=text]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-green .sidebar-form .btn{border-bottom-left-radius:0;border-bottom-right-radius:2px;border-top-left-radius:0;border-top-right-radius:2px;color:#999}.skin-green.layout-top-nav .main-header>.logo .logo-variant{background-color:none}.btn .btn-primary:link,.btn.btn-primary,.btn:hover .btn-primary:link,.btn:hover.btn-primary{background-color:#00733e;border-color:#004023;color:#fff}.btn:hovera.btn-primary:hover,.btna.btn-primary:hover{background-color:#004023;border-color:#004023;color:#fff}.btn.btn-white:link,.btn:hover.btn-white:link{background-color:#00733e;color:#fff}.btn.btn-white:hover,.btn:hover.btn-white:hover{background-color:#000d07;color:#fff}a{color:#00a65a}a:hover{color:#004023}a:visited{color:#00a65a}.text-primary{color:#004023}.fixed-table-container tbody .selected td{background-color:#fff8af}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#00a65a}.search-highlight,.search-highlight:hover{background-color:#e9d15b}
|
/*
|
||||||
|
* Skin: Green
|
||||||
|
* ----------
|
||||||
|
*/
|
||||||
|
:root {
|
||||||
|
--background: #222;
|
||||||
|
--back-main: #333;
|
||||||
|
--back-sub: #3d4144;
|
||||||
|
--back-sub-alt: rgba(0, 0, 0, 0.36);
|
||||||
|
--button-default: #005a31;
|
||||||
|
--button-primary: #002715;
|
||||||
|
--button-hover: #000d07;
|
||||||
|
--header: #00a65a;
|
||||||
|
/* Use same as Header picker */
|
||||||
|
--text-main: #BBB;
|
||||||
|
--text-sub: #9b9b9b;
|
||||||
|
--link: #00a65a;
|
||||||
|
/* Use same as Header picker, lighten by 70% */
|
||||||
|
--visited-link: #00f383;
|
||||||
|
/* Use same as Header picker, lighten by 70% */
|
||||||
|
--hover-link: #0dff90;
|
||||||
|
}
|
||||||
|
.skin-green .main-header .navbar {
|
||||||
|
background-color: #00a65a;
|
||||||
|
}
|
||||||
|
.skin-green .main-header .navbar .nav > li > a {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-green .main-header .navbar .nav > li > a:hover,
|
||||||
|
.skin-green .main-header .navbar .nav > li > a:active,
|
||||||
|
.skin-green .main-header .navbar .nav > li > a:focus,
|
||||||
|
.skin-green .main-header .navbar .nav .open > a,
|
||||||
|
.skin-green .main-header .navbar .nav .open > a:hover,
|
||||||
|
.skin-green .main-header .navbar .nav .open > a:focus,
|
||||||
|
.skin-green .main-header .navbar .nav > .active > a {
|
||||||
|
background: rgba(0, 0, 0, 0.1);
|
||||||
|
color: #f6f6f6;
|
||||||
|
}
|
||||||
|
.skin-green .main-header .navbar .sidebar-toggle {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-green .main-header .navbar .sidebar-toggle:hover {
|
||||||
|
color: #f6f6f6;
|
||||||
|
background: rgba(0, 0, 0, 0.1);
|
||||||
|
}
|
||||||
|
.skin-green .main-header .navbar .sidebar-toggle {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-green .main-header .navbar .sidebar-toggle:hover {
|
||||||
|
background-color: #008d4c;
|
||||||
|
}
|
||||||
|
@media (max-width: 767px) {
|
||||||
|
.skin-green .main-header .navbar .dropdown-menu li.divider {
|
||||||
|
background-color: rgba(255, 255, 255, 0.1);
|
||||||
|
}
|
||||||
|
.skin-green .main-header .navbar .dropdown-menu li a {
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
.skin-green .main-header .navbar .dropdown-menu li a:hover {
|
||||||
|
background: #008d4c;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.skin-green .main-header li.user-header {
|
||||||
|
background-color: #00a65a;
|
||||||
|
}
|
||||||
|
.skin-green .content-header {
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
.skin-green .wrapper,
|
||||||
|
.skin-green .main-sidebar,
|
||||||
|
.skin-green .left-side {
|
||||||
|
background-color: #222d32;
|
||||||
|
}
|
||||||
|
.skin-green .user-panel > .info,
|
||||||
|
.skin-green .user-panel > .info > a {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-green .sidebar-menu > li.header {
|
||||||
|
color: #4b646f;
|
||||||
|
background: #1a2226;
|
||||||
|
}
|
||||||
|
.skin-green .sidebar-menu > li > a {
|
||||||
|
border-left: 3px solid transparent;
|
||||||
|
}
|
||||||
|
.skin-green .sidebar-menu > li:hover > a,
|
||||||
|
.skin-green .sidebar-menu > li.active > a {
|
||||||
|
color: #fff;
|
||||||
|
background: #1e282c;
|
||||||
|
border-left-color: #00a65a;
|
||||||
|
}
|
||||||
|
.skin-green .sidebar-menu > li > .treeview-menu {
|
||||||
|
margin: 0 1px;
|
||||||
|
background: #2c3b41;
|
||||||
|
}
|
||||||
|
.skin-green .sidebar a {
|
||||||
|
color: #b8c7ce;
|
||||||
|
}
|
||||||
|
.skin-green .sidebar a:hover {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
.skin-green .treeview-menu > li > a {
|
||||||
|
color: #8aa4af;
|
||||||
|
}
|
||||||
|
.skin-green .treeview-menu > li.active > a,
|
||||||
|
.skin-green .treeview-menu > li > a:hover {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-green .sidebar-form {
|
||||||
|
border-radius: 3px;
|
||||||
|
border: 1px solid #374850;
|
||||||
|
margin: 10px 10px;
|
||||||
|
}
|
||||||
|
.skin-green .sidebar-form input[type="text"],
|
||||||
|
.skin-green .sidebar-form .btn {
|
||||||
|
box-shadow: none;
|
||||||
|
background-color: #374850;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
height: 35px;
|
||||||
|
transition: all 0.3s ease-in-out;
|
||||||
|
}
|
||||||
|
.skin-green .sidebar-form input[type="text"] {
|
||||||
|
color: #666;
|
||||||
|
border-top-left-radius: 2px;
|
||||||
|
border-top-right-radius: 0;
|
||||||
|
border-bottom-right-radius: 0;
|
||||||
|
border-bottom-left-radius: 2px;
|
||||||
|
}
|
||||||
|
.skin-green .sidebar-form input[type="text"]:focus,
|
||||||
|
.skin-green .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||||
|
background-color: #fff;
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
.skin-green .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||||
|
border-left-color: #fff;
|
||||||
|
}
|
||||||
|
.skin-green .sidebar-form .btn {
|
||||||
|
color: #999;
|
||||||
|
border-top-left-radius: 0;
|
||||||
|
border-top-right-radius: 2px;
|
||||||
|
border-bottom-right-radius: 2px;
|
||||||
|
border-bottom-left-radius: 0;
|
||||||
|
}
|
||||||
|
.skin-green.layout-top-nav .main-header > .logo .logo-variant {
|
||||||
|
background-color: none;
|
||||||
|
}
|
||||||
|
.btn.btn-primary,
|
||||||
|
.btn:hover.btn-primary,
|
||||||
|
.btn .btn-primary:link,
|
||||||
|
.btn:hover .btn-primary:link {
|
||||||
|
background-color: #00733e;
|
||||||
|
border-color: #004023;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.btna.btn-primary:hover,
|
||||||
|
.btn:hovera.btn-primary:hover {
|
||||||
|
background-color: #004023;
|
||||||
|
border-color: #004023;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.btn.btn-white:link,
|
||||||
|
.btn:hover.btn-white:link {
|
||||||
|
background-color: #00733e;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.btn.btn-white:hover,
|
||||||
|
.btn:hover.btn-white:hover {
|
||||||
|
background-color: #000d07;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
a.btn-info:link,
|
||||||
|
a.btn-warning:link,
|
||||||
|
a.btn-danger:link {
|
||||||
|
color: #FFF;
|
||||||
|
}
|
||||||
|
a.btn-info:visited,
|
||||||
|
a.btn-warning:visited,
|
||||||
|
a.btn-danger:visited {
|
||||||
|
color: #FFF;
|
||||||
|
}
|
||||||
|
a:link {
|
||||||
|
color: var(--link);
|
||||||
|
}
|
||||||
|
a:visited {
|
||||||
|
color: var(--visited-link);
|
||||||
|
}
|
||||||
|
a {
|
||||||
|
color: #00a65a;
|
||||||
|
}
|
||||||
|
a:hover {
|
||||||
|
color: #004023;
|
||||||
|
}
|
||||||
|
a:visited {
|
||||||
|
color: #00a65a;
|
||||||
|
}
|
||||||
|
.text-primary {
|
||||||
|
color: #004023;
|
||||||
|
}
|
||||||
|
.fixed-table-container tbody .selected td {
|
||||||
|
background-color: #fff8af;
|
||||||
|
}
|
||||||
|
.select2-container--default .select2-selection--multiple .select2-selection__choice {
|
||||||
|
background-color: #00a65a;
|
||||||
|
}
|
||||||
|
.search-highlight,
|
||||||
|
.search-highlight:hover {
|
||||||
|
background-color: #e9d15b;
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
467
public/css/dist/skins/skin-orange-dark.css
vendored
467
public/css/dist/skins/skin-orange-dark.css
vendored
File diff suppressed because one or more lines are too long
467
public/css/dist/skins/skin-orange-dark.min.css
vendored
467
public/css/dist/skins/skin-orange-dark.min.css
vendored
File diff suppressed because one or more lines are too long
204
public/css/dist/skins/skin-orange.css
vendored
204
public/css/dist/skins/skin-orange.css
vendored
@@ -1 +1,203 @@
|
|||||||
.skin-orange .main-header .navbar{background-color:#ff8c00}.skin-orange .main-header .navbar .nav>li>a{color:#fff}.skin-orange .main-header .navbar .nav .open>a,.skin-orange .main-header .navbar .nav .open>a:focus,.skin-orange .main-header .navbar .nav .open>a:hover,.skin-orange .main-header .navbar .nav>.active>a,.skin-orange .main-header .navbar .nav>li>a:active,.skin-orange .main-header .navbar .nav>li>a:focus,.skin-orange .main-header .navbar .nav>li>a:hover,.skin-orange .main-header .navbar .sidebar-toggle:hover{background:rgba(0,0,0,.1);color:#f6f6f6}.skin-orange .main-header .navbar .sidebar-toggle{color:#fff}.skin-orange .main-header .navbar .sidebar-toggle:hover{background-color:#e67e00}@media (max-width:767px){.skin-orange .main-header .navbar .dropdown-menu li.divider{background-color:hsla(0,0%,100%,.1)}.skin-orange .main-header .navbar .dropdown-menu li a{color:#333}.skin-orange .main-header .navbar .dropdown-menu li a:hover{background:#e67e00}}.skin-orange .main-header li.user-header{background-color:#ff8c00}.skin-orange .content-header{background:transparent}.skin-orange .left-side,.skin-orange .main-sidebar,.skin-orange .wrapper{background-color:#222d32}.skin-orange .user-panel>.info,.skin-orange .user-panel>.info>a{color:#fff}.skin-orange .sidebar-menu>li.header{background:#1a2226;color:#4b646f}.skin-orange .sidebar-menu>li>a{border-left:3px solid transparent}.skin-orange .sidebar-menu>li.active>a,.skin-orange .sidebar-menu>li:hover>a{background:#1e282c;border-left-color:#ff8c00;color:#fff}.skin-orange .sidebar-menu>li>.treeview-menu{background:#2c3b41;margin:0 1px}.skin-orange .sidebar a{color:#b8c7ce}.skin-orange .sidebar a:hover{text-decoration:none}.skin-orange .treeview-menu>li>a{color:#8aa4af}.skin-orange .treeview-menu>li.active>a,.skin-orange .treeview-menu>li>a:hover{color:#fff}.skin-orange .sidebar-form{border:1px solid #374850;border-radius:3px;margin:10px}.skin-orange .sidebar-form .btn,.skin-orange .sidebar-form input[type=text]{background-color:#374850;border:1px solid transparent;box-shadow:none;height:35px;transition:all .3s ease-in-out}.skin-orange .sidebar-form input[type=text]{border-bottom-left-radius:2px;border-bottom-right-radius:0;border-top-left-radius:2px;border-top-right-radius:0;color:#666}.skin-orange .sidebar-form input[type=text]:focus,.skin-orange .sidebar-form input[type=text]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-orange .sidebar-form input[type=text]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-orange .sidebar-form .btn{border-bottom-left-radius:0;border-bottom-right-radius:2px;border-top-left-radius:0;border-top-right-radius:2px;color:#999}.skin-orange.layout-top-nav .main-header>.logo .logo-variant{background-color:none}.btn.btn-primary,.btn .btn-primary:link,.btn:hover.btn-primary,.btn:hover .btn-primary:link{background-color:#cc7000;border-color:#995400;color:#fff}.btn:hovera.btn-primary:hover,.btna.btn-primary:hover{background-color:#995400;border-color:#995400;color:#fff}.btn.btn-white:link,.btn:hover.btn-white:link{background-color:#cc7000;color:#fff}.btn.btn-white:hover,.btn:hover.btn-white:hover{background-color:#663800;color:#fff}a{color:#ff8c00}a:hover{color:#995400}a:visited{color:#ff8c00}.text-primary{color:#995400}.fixed-table-container tbody .selected td{background-color:#fff8af}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#ff8c00}.search-highlight,.search-highlight:hover{background-color:#e9d15b}
|
/*
|
||||||
|
* Skin: Orange
|
||||||
|
* ----------
|
||||||
|
*/
|
||||||
|
.skin-orange .main-header .navbar {
|
||||||
|
background-color: #FF8C00;
|
||||||
|
}
|
||||||
|
.skin-orange .main-header .navbar .nav > li > a {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-orange .main-header .navbar .nav > li > a:hover,
|
||||||
|
.skin-orange .main-header .navbar .nav > li > a:active,
|
||||||
|
.skin-orange .main-header .navbar .nav > li > a:focus,
|
||||||
|
.skin-orange .main-header .navbar .nav .open > a,
|
||||||
|
.skin-orange .main-header .navbar .nav .open > a:hover,
|
||||||
|
.skin-orange .main-header .navbar .nav .open > a:focus,
|
||||||
|
.skin-orange .main-header .navbar .nav > .active > a {
|
||||||
|
background: rgba(0, 0, 0, 0.1);
|
||||||
|
color: #f6f6f6;
|
||||||
|
}
|
||||||
|
.skin-orange .main-header .navbar .sidebar-toggle {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-orange .main-header .navbar .sidebar-toggle:hover {
|
||||||
|
color: #f6f6f6;
|
||||||
|
background: rgba(0, 0, 0, 0.1);
|
||||||
|
}
|
||||||
|
.skin-orange .main-header .navbar .sidebar-toggle {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-orange .main-header .navbar .sidebar-toggle:hover {
|
||||||
|
background-color: #e67e00;
|
||||||
|
}
|
||||||
|
@media (max-width: 767px) {
|
||||||
|
.skin-orange .main-header .navbar .dropdown-menu li.divider {
|
||||||
|
background-color: rgba(255, 255, 255, 0.1);
|
||||||
|
}
|
||||||
|
.skin-orange .main-header .navbar .dropdown-menu li a {
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
.skin-orange .main-header .navbar .dropdown-menu li a:hover {
|
||||||
|
background: #e67e00;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.skin-orange .main-header li.user-header {
|
||||||
|
background-color: #FF8C00;
|
||||||
|
}
|
||||||
|
.skin-orange .content-header {
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
.skin-orange .wrapper,
|
||||||
|
.skin-orange .main-sidebar,
|
||||||
|
.skin-orange .left-side {
|
||||||
|
background-color: #222d32;
|
||||||
|
}
|
||||||
|
.skin-orange .user-panel > .info,
|
||||||
|
.skin-orange .user-panel > .info > a {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-orange .sidebar-menu > li.header {
|
||||||
|
color: #4b646f;
|
||||||
|
background: #1a2226;
|
||||||
|
}
|
||||||
|
.skin-orange .sidebar-menu > li > a {
|
||||||
|
border-left: 3px solid transparent;
|
||||||
|
}
|
||||||
|
.skin-orange .sidebar-menu > li:hover > a,
|
||||||
|
.skin-orange .sidebar-menu > li.active > a {
|
||||||
|
color: #fff;
|
||||||
|
background: #1e282c;
|
||||||
|
border-left-color: #FF8C00;
|
||||||
|
}
|
||||||
|
.skin-orange .sidebar-menu > li > .treeview-menu {
|
||||||
|
margin: 0 1px;
|
||||||
|
background: #2c3b41;
|
||||||
|
}
|
||||||
|
.skin-orange .sidebar a {
|
||||||
|
color: #b8c7ce;
|
||||||
|
}
|
||||||
|
.skin-orange .sidebar a:hover {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
.skin-orange .treeview-menu > li > a {
|
||||||
|
color: #8aa4af;
|
||||||
|
}
|
||||||
|
.skin-orange .treeview-menu > li.active > a,
|
||||||
|
.skin-orange .treeview-menu > li > a:hover {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-orange .sidebar-form {
|
||||||
|
border-radius: 3px;
|
||||||
|
border: 1px solid #374850;
|
||||||
|
margin: 10px 10px;
|
||||||
|
}
|
||||||
|
.skin-orange .sidebar-form input[type="text"],
|
||||||
|
.skin-orange .sidebar-form .btn {
|
||||||
|
box-shadow: none;
|
||||||
|
background-color: #374850;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
height: 35px;
|
||||||
|
transition: all 0.3s ease-in-out;
|
||||||
|
}
|
||||||
|
.skin-orange .sidebar-form input[type="text"] {
|
||||||
|
color: #666;
|
||||||
|
border-top-left-radius: 2px;
|
||||||
|
border-top-right-radius: 0;
|
||||||
|
border-bottom-right-radius: 0;
|
||||||
|
border-bottom-left-radius: 2px;
|
||||||
|
}
|
||||||
|
.skin-orange .sidebar-form input[type="text"]:focus,
|
||||||
|
.skin-orange .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||||
|
background-color: #fff;
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
.skin-orange .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||||
|
border-left-color: #fff;
|
||||||
|
}
|
||||||
|
.skin-orange .sidebar-form .btn {
|
||||||
|
color: #999;
|
||||||
|
border-top-left-radius: 0;
|
||||||
|
border-top-right-radius: 2px;
|
||||||
|
border-bottom-right-radius: 2px;
|
||||||
|
border-bottom-left-radius: 0;
|
||||||
|
}
|
||||||
|
.skin-orange.layout-top-nav .main-header > .logo .logo-variant {
|
||||||
|
background-color: none;
|
||||||
|
}
|
||||||
|
.btn.btn-primary,
|
||||||
|
.btn:hover.btn-primary,
|
||||||
|
.btn .btn-primary:link,
|
||||||
|
.btn:hover .btn-primary:link {
|
||||||
|
background-color: #cc7000;
|
||||||
|
border-color: #995400;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.btna.btn-primary:hover,
|
||||||
|
.btn:hovera.btn-primary:hover {
|
||||||
|
background-color: #995400;
|
||||||
|
border-color: #995400;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.btn.btn-white:link,
|
||||||
|
.btn:hover.btn-white:link {
|
||||||
|
background-color: #cc7000;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.btn.btn-white:hover,
|
||||||
|
.btn:hover.btn-white:hover {
|
||||||
|
background-color: #663800;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
a {
|
||||||
|
color: var(--link);
|
||||||
|
}
|
||||||
|
a:hover {
|
||||||
|
color: var(--hover-link);
|
||||||
|
}
|
||||||
|
a:visited {
|
||||||
|
color: var(--visited-link);
|
||||||
|
}
|
||||||
|
.text-primary {
|
||||||
|
color: #995400;
|
||||||
|
}
|
||||||
|
:root {
|
||||||
|
--button-default: #b36200;
|
||||||
|
--button-primary: #804600;
|
||||||
|
--button-hover: #663800;
|
||||||
|
--header: #FF8C00;
|
||||||
|
/* Use same as Header picker */
|
||||||
|
--text-main: #BBB;
|
||||||
|
--text-sub: #9b9b9b;
|
||||||
|
--link: #FF8C00;
|
||||||
|
/* Use same as Header picker, lighten by 70% */
|
||||||
|
--visited-link: #ffa333;
|
||||||
|
/* Use same as Header picker, lighten by 70% */
|
||||||
|
--hover-link: #ffaf4d;
|
||||||
|
/* Use same as Header picker, lighten by 70% */
|
||||||
|
--nav-link: #FFF;
|
||||||
|
/* Use same as Header picker */
|
||||||
|
--light-link: #fff;
|
||||||
|
/* Use same as Header picker */
|
||||||
|
}
|
||||||
|
a.btn-info:link,
|
||||||
|
a.btn-warning:link,
|
||||||
|
a.btn-danger:link {
|
||||||
|
color: #FFF;
|
||||||
|
}
|
||||||
|
a.btn-info:visited,
|
||||||
|
a.btn-warning:visited,
|
||||||
|
a.btn-danger:visited {
|
||||||
|
color: #FFF;
|
||||||
|
}
|
||||||
|
.fixed-table-container tbody .selected td {
|
||||||
|
background-color: #fff8af;
|
||||||
|
}
|
||||||
|
.select2-container--default .select2-selection--multiple .select2-selection__choice {
|
||||||
|
background-color: #FF8C00;
|
||||||
|
}
|
||||||
|
.search-highlight,
|
||||||
|
.search-highlight:hover {
|
||||||
|
background-color: #e9d15b;
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
204
public/css/dist/skins/skin-orange.min.css
vendored
204
public/css/dist/skins/skin-orange.min.css
vendored
@@ -1 +1,203 @@
|
|||||||
.skin-orange .main-header .navbar{background-color:#ff8c00}.skin-orange .main-header .navbar .nav>li>a{color:#fff}.skin-orange .main-header .navbar .nav .open>a,.skin-orange .main-header .navbar .nav .open>a:focus,.skin-orange .main-header .navbar .nav .open>a:hover,.skin-orange .main-header .navbar .nav>.active>a,.skin-orange .main-header .navbar .nav>li>a:active,.skin-orange .main-header .navbar .nav>li>a:focus,.skin-orange .main-header .navbar .nav>li>a:hover,.skin-orange .main-header .navbar .sidebar-toggle:hover{background:rgba(0,0,0,.1);color:#f6f6f6}.skin-orange .main-header .navbar .sidebar-toggle{color:#fff}.skin-orange .main-header .navbar .sidebar-toggle:hover{background-color:#e67e00}@media (max-width:767px){.skin-orange .main-header .navbar .dropdown-menu li.divider{background-color:hsla(0,0%,100%,.1)}.skin-orange .main-header .navbar .dropdown-menu li a{color:#333}.skin-orange .main-header .navbar .dropdown-menu li a:hover{background:#e67e00}}.skin-orange .main-header li.user-header{background-color:#ff8c00}.skin-orange .content-header{background:0 0}.skin-orange .left-side,.skin-orange .main-sidebar,.skin-orange .wrapper{background-color:#222d32}.skin-orange .user-panel>.info,.skin-orange .user-panel>.info>a{color:#fff}.skin-orange .sidebar-menu>li.header{background:#1a2226;color:#4b646f}.skin-orange .sidebar-menu>li>a{border-left:3px solid transparent}.skin-orange .sidebar-menu>li.active>a,.skin-orange .sidebar-menu>li:hover>a{background:#1e282c;border-left-color:#ff8c00;color:#fff}.skin-orange .sidebar-menu>li>.treeview-menu{background:#2c3b41;margin:0 1px}.skin-orange .sidebar a{color:#b8c7ce}.skin-orange .sidebar a:hover{text-decoration:none}.skin-orange .treeview-menu>li>a{color:#8aa4af}.skin-orange .treeview-menu>li.active>a,.skin-orange .treeview-menu>li>a:hover{color:#fff}.skin-orange .sidebar-form{border:1px solid #374850;border-radius:3px;margin:10px}.skin-orange .sidebar-form .btn,.skin-orange .sidebar-form input[type=text]{background-color:#374850;border:1px solid transparent;box-shadow:none;height:35px;transition:all .3s ease-in-out}.skin-orange .sidebar-form input[type=text]{border-bottom-left-radius:2px;border-bottom-right-radius:0;border-top-left-radius:2px;border-top-right-radius:0;color:#666}.skin-orange .sidebar-form input[type=text]:focus,.skin-orange .sidebar-form input[type=text]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-orange .sidebar-form input[type=text]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-orange .sidebar-form .btn{border-bottom-left-radius:0;border-bottom-right-radius:2px;border-top-left-radius:0;border-top-right-radius:2px;color:#999}.skin-orange.layout-top-nav .main-header>.logo .logo-variant{background-color:none}.btn .btn-primary:link,.btn.btn-primary,.btn:hover .btn-primary:link,.btn:hover.btn-primary{background-color:#cc7000;border-color:#995400;color:#fff}.btn:hovera.btn-primary:hover,.btna.btn-primary:hover{background-color:#995400;border-color:#995400;color:#fff}.btn.btn-white:link,.btn:hover.btn-white:link{background-color:#cc7000;color:#fff}.btn.btn-white:hover,.btn:hover.btn-white:hover{background-color:#663800;color:#fff}a{color:#ff8c00}a:hover{color:#995400}a:visited{color:#ff8c00}.text-primary{color:#995400}.fixed-table-container tbody .selected td{background-color:#fff8af}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#ff8c00}.search-highlight,.search-highlight:hover{background-color:#e9d15b}
|
/*
|
||||||
|
* Skin: Orange
|
||||||
|
* ----------
|
||||||
|
*/
|
||||||
|
.skin-orange .main-header .navbar {
|
||||||
|
background-color: #FF8C00;
|
||||||
|
}
|
||||||
|
.skin-orange .main-header .navbar .nav > li > a {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-orange .main-header .navbar .nav > li > a:hover,
|
||||||
|
.skin-orange .main-header .navbar .nav > li > a:active,
|
||||||
|
.skin-orange .main-header .navbar .nav > li > a:focus,
|
||||||
|
.skin-orange .main-header .navbar .nav .open > a,
|
||||||
|
.skin-orange .main-header .navbar .nav .open > a:hover,
|
||||||
|
.skin-orange .main-header .navbar .nav .open > a:focus,
|
||||||
|
.skin-orange .main-header .navbar .nav > .active > a {
|
||||||
|
background: rgba(0, 0, 0, 0.1);
|
||||||
|
color: #f6f6f6;
|
||||||
|
}
|
||||||
|
.skin-orange .main-header .navbar .sidebar-toggle {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-orange .main-header .navbar .sidebar-toggle:hover {
|
||||||
|
color: #f6f6f6;
|
||||||
|
background: rgba(0, 0, 0, 0.1);
|
||||||
|
}
|
||||||
|
.skin-orange .main-header .navbar .sidebar-toggle {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-orange .main-header .navbar .sidebar-toggle:hover {
|
||||||
|
background-color: #e67e00;
|
||||||
|
}
|
||||||
|
@media (max-width: 767px) {
|
||||||
|
.skin-orange .main-header .navbar .dropdown-menu li.divider {
|
||||||
|
background-color: rgba(255, 255, 255, 0.1);
|
||||||
|
}
|
||||||
|
.skin-orange .main-header .navbar .dropdown-menu li a {
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
.skin-orange .main-header .navbar .dropdown-menu li a:hover {
|
||||||
|
background: #e67e00;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.skin-orange .main-header li.user-header {
|
||||||
|
background-color: #FF8C00;
|
||||||
|
}
|
||||||
|
.skin-orange .content-header {
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
.skin-orange .wrapper,
|
||||||
|
.skin-orange .main-sidebar,
|
||||||
|
.skin-orange .left-side {
|
||||||
|
background-color: #222d32;
|
||||||
|
}
|
||||||
|
.skin-orange .user-panel > .info,
|
||||||
|
.skin-orange .user-panel > .info > a {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-orange .sidebar-menu > li.header {
|
||||||
|
color: #4b646f;
|
||||||
|
background: #1a2226;
|
||||||
|
}
|
||||||
|
.skin-orange .sidebar-menu > li > a {
|
||||||
|
border-left: 3px solid transparent;
|
||||||
|
}
|
||||||
|
.skin-orange .sidebar-menu > li:hover > a,
|
||||||
|
.skin-orange .sidebar-menu > li.active > a {
|
||||||
|
color: #fff;
|
||||||
|
background: #1e282c;
|
||||||
|
border-left-color: #FF8C00;
|
||||||
|
}
|
||||||
|
.skin-orange .sidebar-menu > li > .treeview-menu {
|
||||||
|
margin: 0 1px;
|
||||||
|
background: #2c3b41;
|
||||||
|
}
|
||||||
|
.skin-orange .sidebar a {
|
||||||
|
color: #b8c7ce;
|
||||||
|
}
|
||||||
|
.skin-orange .sidebar a:hover {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
.skin-orange .treeview-menu > li > a {
|
||||||
|
color: #8aa4af;
|
||||||
|
}
|
||||||
|
.skin-orange .treeview-menu > li.active > a,
|
||||||
|
.skin-orange .treeview-menu > li > a:hover {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-orange .sidebar-form {
|
||||||
|
border-radius: 3px;
|
||||||
|
border: 1px solid #374850;
|
||||||
|
margin: 10px 10px;
|
||||||
|
}
|
||||||
|
.skin-orange .sidebar-form input[type="text"],
|
||||||
|
.skin-orange .sidebar-form .btn {
|
||||||
|
box-shadow: none;
|
||||||
|
background-color: #374850;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
height: 35px;
|
||||||
|
transition: all 0.3s ease-in-out;
|
||||||
|
}
|
||||||
|
.skin-orange .sidebar-form input[type="text"] {
|
||||||
|
color: #666;
|
||||||
|
border-top-left-radius: 2px;
|
||||||
|
border-top-right-radius: 0;
|
||||||
|
border-bottom-right-radius: 0;
|
||||||
|
border-bottom-left-radius: 2px;
|
||||||
|
}
|
||||||
|
.skin-orange .sidebar-form input[type="text"]:focus,
|
||||||
|
.skin-orange .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||||
|
background-color: #fff;
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
.skin-orange .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||||
|
border-left-color: #fff;
|
||||||
|
}
|
||||||
|
.skin-orange .sidebar-form .btn {
|
||||||
|
color: #999;
|
||||||
|
border-top-left-radius: 0;
|
||||||
|
border-top-right-radius: 2px;
|
||||||
|
border-bottom-right-radius: 2px;
|
||||||
|
border-bottom-left-radius: 0;
|
||||||
|
}
|
||||||
|
.skin-orange.layout-top-nav .main-header > .logo .logo-variant {
|
||||||
|
background-color: none;
|
||||||
|
}
|
||||||
|
.btn.btn-primary,
|
||||||
|
.btn:hover.btn-primary,
|
||||||
|
.btn .btn-primary:link,
|
||||||
|
.btn:hover .btn-primary:link {
|
||||||
|
background-color: #cc7000;
|
||||||
|
border-color: #995400;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.btna.btn-primary:hover,
|
||||||
|
.btn:hovera.btn-primary:hover {
|
||||||
|
background-color: #995400;
|
||||||
|
border-color: #995400;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.btn.btn-white:link,
|
||||||
|
.btn:hover.btn-white:link {
|
||||||
|
background-color: #cc7000;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.btn.btn-white:hover,
|
||||||
|
.btn:hover.btn-white:hover {
|
||||||
|
background-color: #663800;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
a {
|
||||||
|
color: var(--link);
|
||||||
|
}
|
||||||
|
a:hover {
|
||||||
|
color: var(--hover-link);
|
||||||
|
}
|
||||||
|
a:visited {
|
||||||
|
color: var(--visited-link);
|
||||||
|
}
|
||||||
|
.text-primary {
|
||||||
|
color: #995400;
|
||||||
|
}
|
||||||
|
:root {
|
||||||
|
--button-default: #b36200;
|
||||||
|
--button-primary: #804600;
|
||||||
|
--button-hover: #663800;
|
||||||
|
--header: #FF8C00;
|
||||||
|
/* Use same as Header picker */
|
||||||
|
--text-main: #BBB;
|
||||||
|
--text-sub: #9b9b9b;
|
||||||
|
--link: #FF8C00;
|
||||||
|
/* Use same as Header picker, lighten by 70% */
|
||||||
|
--visited-link: #ffa333;
|
||||||
|
/* Use same as Header picker, lighten by 70% */
|
||||||
|
--hover-link: #ffaf4d;
|
||||||
|
/* Use same as Header picker, lighten by 70% */
|
||||||
|
--nav-link: #FFF;
|
||||||
|
/* Use same as Header picker */
|
||||||
|
--light-link: #fff;
|
||||||
|
/* Use same as Header picker */
|
||||||
|
}
|
||||||
|
a.btn-info:link,
|
||||||
|
a.btn-warning:link,
|
||||||
|
a.btn-danger:link {
|
||||||
|
color: #FFF;
|
||||||
|
}
|
||||||
|
a.btn-info:visited,
|
||||||
|
a.btn-warning:visited,
|
||||||
|
a.btn-danger:visited {
|
||||||
|
color: #FFF;
|
||||||
|
}
|
||||||
|
.fixed-table-container tbody .selected td {
|
||||||
|
background-color: #fff8af;
|
||||||
|
}
|
||||||
|
.select2-container--default .select2-selection--multiple .select2-selection__choice {
|
||||||
|
background-color: #FF8C00;
|
||||||
|
}
|
||||||
|
.search-highlight,
|
||||||
|
.search-highlight:hover {
|
||||||
|
background-color: #e9d15b;
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
483
public/css/dist/skins/skin-purple-dark.css
vendored
483
public/css/dist/skins/skin-purple-dark.css
vendored
File diff suppressed because one or more lines are too long
483
public/css/dist/skins/skin-purple-dark.min.css
vendored
483
public/css/dist/skins/skin-purple-dark.min.css
vendored
File diff suppressed because one or more lines are too long
204
public/css/dist/skins/skin-purple.css
vendored
204
public/css/dist/skins/skin-purple.css
vendored
@@ -1 +1,203 @@
|
|||||||
.skin-purple .main-header .navbar{background-color:#605ca8}.skin-purple .main-header .navbar .nav>li>a{color:#fff}.skin-purple .main-header .navbar .nav .open>a,.skin-purple .main-header .navbar .nav .open>a:focus,.skin-purple .main-header .navbar .nav .open>a:hover,.skin-purple .main-header .navbar .nav>.active>a,.skin-purple .main-header .navbar .nav>li>a:active,.skin-purple .main-header .navbar .nav>li>a:focus,.skin-purple .main-header .navbar .nav>li>a:hover,.skin-purple .main-header .navbar .sidebar-toggle:hover{background:rgba(0,0,0,.1);color:#f6f6f6}.skin-purple .main-header .navbar .sidebar-toggle{color:#fff}.skin-purple .main-header .navbar .sidebar-toggle:hover{background-color:#555299}@media (max-width:767px){.skin-purple .main-header .navbar .dropdown-menu li.divider{background-color:hsla(0,0%,100%,.1)}.skin-purple .main-header .navbar .dropdown-menu li a{color:#333}.skin-purple .main-header .navbar .dropdown-menu li a:hover{background:#555299}}.skin-purple .main-header li.user-header{background-color:#605ca8}.skin-purple .content-header{background:transparent}.skin-purple .left-side,.skin-purple .main-sidebar,.skin-purple .wrapper{background-color:#222d32}.skin-purple .user-panel>.info,.skin-purple .user-panel>.info>a{color:#fff}.skin-purple .sidebar-menu>li.header{background:#1a2226;color:#4b646f}.skin-purple .sidebar-menu>li>a{border-left:3px solid transparent}.skin-purple .sidebar-menu>li.active>a,.skin-purple .sidebar-menu>li:hover>a{background:#1e282c;border-left-color:#605ca8;color:#fff}.skin-purple .sidebar-menu>li>.treeview-menu{background:#2c3b41;margin:0 1px}.skin-purple .sidebar a{color:#b8c7ce}.skin-purple .sidebar a:hover{text-decoration:none}.skin-purple .treeview-menu>li>a{color:#8aa4af}.skin-purple .treeview-menu>li.active>a,.skin-purple .treeview-menu>li>a:hover{color:#fff}.skin-purple .sidebar-form{border:1px solid #374850;border-radius:3px;margin:10px}.skin-purple .sidebar-form .btn,.skin-purple .sidebar-form input[type=text]{background-color:#374850;border:1px solid transparent;box-shadow:none;height:35px;transition:all .3s ease-in-out}.skin-purple .sidebar-form input[type=text]{border-bottom-left-radius:2px;border-bottom-right-radius:0;border-top-left-radius:2px;border-top-right-radius:0;color:#666}.skin-purple .sidebar-form input[type=text]:focus,.skin-purple .sidebar-form input[type=text]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-purple .sidebar-form input[type=text]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-purple .sidebar-form .btn{border-bottom-left-radius:0;border-bottom-right-radius:2px;border-top-left-radius:0;border-top-right-radius:2px;color:#999}.skin-purple.layout-top-nav .main-header>.logo .logo-variant{background-color:none}.btn.btn-primary,.btn .btn-primary:link,.btn:hover.btn-primary,.btn:hover .btn-primary:link{background-color:#4c4988;border-color:#3a3767;color:#fff}.btn:hovera.btn-primary:hover,.btna.btn-primary:hover{background-color:#3a3767;border-color:#3a3767;color:#fff}.btn.btn-white:link,.btn:hover.btn-white:link{background-color:#4c4988;color:#fff}.btn.btn-white:hover,.btn:hover.btn-white:hover{background-color:#272546;color:#fff}a{color:#605ca8}a:hover{color:#3a3767}a:visited{color:#605ca8}.text-primary{color:#3a3767}.fixed-table-container tbody .selected td{background-color:#fff8af}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#605ca8}.search-highlight,.search-highlight:hover{background-color:#e9d15b}
|
/*
|
||||||
|
* Skin: Purple
|
||||||
|
* ----------
|
||||||
|
*/
|
||||||
|
.skin-purple .main-header .navbar {
|
||||||
|
background-color: #605ca8;
|
||||||
|
}
|
||||||
|
.skin-purple .main-header .navbar .nav > li > a {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-purple .main-header .navbar .nav > li > a:hover,
|
||||||
|
.skin-purple .main-header .navbar .nav > li > a:active,
|
||||||
|
.skin-purple .main-header .navbar .nav > li > a:focus,
|
||||||
|
.skin-purple .main-header .navbar .nav .open > a,
|
||||||
|
.skin-purple .main-header .navbar .nav .open > a:hover,
|
||||||
|
.skin-purple .main-header .navbar .nav .open > a:focus,
|
||||||
|
.skin-purple .main-header .navbar .nav > .active > a {
|
||||||
|
background: rgba(0, 0, 0, 0.1);
|
||||||
|
color: #f6f6f6;
|
||||||
|
}
|
||||||
|
.skin-purple .main-header .navbar .sidebar-toggle {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-purple .main-header .navbar .sidebar-toggle:hover {
|
||||||
|
color: #f6f6f6;
|
||||||
|
background: rgba(0, 0, 0, 0.1);
|
||||||
|
}
|
||||||
|
.skin-purple .main-header .navbar .sidebar-toggle {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-purple .main-header .navbar .sidebar-toggle:hover {
|
||||||
|
background-color: #555299;
|
||||||
|
}
|
||||||
|
@media (max-width: 767px) {
|
||||||
|
.skin-purple .main-header .navbar .dropdown-menu li.divider {
|
||||||
|
background-color: rgba(255, 255, 255, 0.1);
|
||||||
|
}
|
||||||
|
.skin-purple .main-header .navbar .dropdown-menu li a {
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
.skin-purple .main-header .navbar .dropdown-menu li a:hover {
|
||||||
|
background: #555299;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.skin-purple .main-header li.user-header {
|
||||||
|
background-color: #605ca8;
|
||||||
|
}
|
||||||
|
.skin-purple .content-header {
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
.skin-purple .wrapper,
|
||||||
|
.skin-purple .main-sidebar,
|
||||||
|
.skin-purple .left-side {
|
||||||
|
background-color: #222d32;
|
||||||
|
}
|
||||||
|
.skin-purple .user-panel > .info,
|
||||||
|
.skin-purple .user-panel > .info > a {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-purple .sidebar-menu > li.header {
|
||||||
|
color: #4b646f;
|
||||||
|
background: #1a2226;
|
||||||
|
}
|
||||||
|
.skin-purple .sidebar-menu > li > a {
|
||||||
|
border-left: 3px solid transparent;
|
||||||
|
}
|
||||||
|
.skin-purple .sidebar-menu > li:hover > a,
|
||||||
|
.skin-purple .sidebar-menu > li.active > a {
|
||||||
|
color: #fff;
|
||||||
|
background: #1e282c;
|
||||||
|
border-left-color: #605ca8;
|
||||||
|
}
|
||||||
|
.skin-purple .sidebar-menu > li > .treeview-menu {
|
||||||
|
margin: 0 1px;
|
||||||
|
background: #2c3b41;
|
||||||
|
}
|
||||||
|
.skin-purple .sidebar a {
|
||||||
|
color: #b8c7ce;
|
||||||
|
}
|
||||||
|
.skin-purple .sidebar a:hover {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
.skin-purple .treeview-menu > li > a {
|
||||||
|
color: #8aa4af;
|
||||||
|
}
|
||||||
|
.skin-purple .treeview-menu > li.active > a,
|
||||||
|
.skin-purple .treeview-menu > li > a:hover {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-purple .sidebar-form {
|
||||||
|
border-radius: 3px;
|
||||||
|
border: 1px solid #374850;
|
||||||
|
margin: 10px 10px;
|
||||||
|
}
|
||||||
|
.skin-purple .sidebar-form input[type="text"],
|
||||||
|
.skin-purple .sidebar-form .btn {
|
||||||
|
box-shadow: none;
|
||||||
|
background-color: #374850;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
height: 35px;
|
||||||
|
transition: all 0.3s ease-in-out;
|
||||||
|
}
|
||||||
|
.skin-purple .sidebar-form input[type="text"] {
|
||||||
|
color: #666;
|
||||||
|
border-top-left-radius: 2px;
|
||||||
|
border-top-right-radius: 0;
|
||||||
|
border-bottom-right-radius: 0;
|
||||||
|
border-bottom-left-radius: 2px;
|
||||||
|
}
|
||||||
|
.skin-purple .sidebar-form input[type="text"]:focus,
|
||||||
|
.skin-purple .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||||
|
background-color: #fff;
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
.skin-purple .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||||
|
border-left-color: #fff;
|
||||||
|
}
|
||||||
|
.skin-purple .sidebar-form .btn {
|
||||||
|
color: #999;
|
||||||
|
border-top-left-radius: 0;
|
||||||
|
border-top-right-radius: 2px;
|
||||||
|
border-bottom-right-radius: 2px;
|
||||||
|
border-bottom-left-radius: 0;
|
||||||
|
}
|
||||||
|
.skin-purple.layout-top-nav .main-header > .logo .logo-variant {
|
||||||
|
background-color: none;
|
||||||
|
}
|
||||||
|
.btn.btn-primary,
|
||||||
|
.btn:hover.btn-primary,
|
||||||
|
.btn .btn-primary:link,
|
||||||
|
.btn:hover .btn-primary:link {
|
||||||
|
background-color: #4c4988;
|
||||||
|
border-color: #3a3767;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.btna.btn-primary:hover,
|
||||||
|
.btn:hovera.btn-primary:hover {
|
||||||
|
background-color: #3a3767;
|
||||||
|
border-color: #3a3767;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.btn.btn-white:link,
|
||||||
|
.btn:hover.btn-white:link {
|
||||||
|
background-color: #4c4988;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.btn.btn-white:hover,
|
||||||
|
.btn:hover.btn-white:hover {
|
||||||
|
background-color: #272546;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
a {
|
||||||
|
color: var(--link);
|
||||||
|
}
|
||||||
|
a:hover {
|
||||||
|
color: var(--hover-link);
|
||||||
|
}
|
||||||
|
a:visited {
|
||||||
|
color: var(--visited-link);
|
||||||
|
}
|
||||||
|
.text-primary {
|
||||||
|
color: #3a3767;
|
||||||
|
}
|
||||||
|
:root {
|
||||||
|
--button-default: #434078;
|
||||||
|
--button-primary: #302e56;
|
||||||
|
--button-hover: #272546;
|
||||||
|
--header: #605ca8;
|
||||||
|
/* Use same as Header picker */
|
||||||
|
--text-main: #BBB;
|
||||||
|
--text-sub: #9b9b9b;
|
||||||
|
--link: #605ca8;
|
||||||
|
/* Use same as Header picker, lighten by 70% */
|
||||||
|
--visited-link: #918ec3;
|
||||||
|
/* Use same as Header picker, lighten by 70% */
|
||||||
|
--hover-link: #c1c0dd;
|
||||||
|
/* Use same as Header picker, lighten by 70% */
|
||||||
|
--nav-link: #FFF;
|
||||||
|
/* Use same as Header picker */
|
||||||
|
--light-link: #fff;
|
||||||
|
/* Use same as Header picker */
|
||||||
|
}
|
||||||
|
a.btn-info:link,
|
||||||
|
a.btn-warning:link,
|
||||||
|
a.btn-danger:link {
|
||||||
|
color: #FFF;
|
||||||
|
}
|
||||||
|
a.btn-info:visited,
|
||||||
|
a.btn-warning:visited,
|
||||||
|
a.btn-danger:visited {
|
||||||
|
color: #FFF;
|
||||||
|
}
|
||||||
|
.fixed-table-container tbody .selected td {
|
||||||
|
background-color: #fff8af;
|
||||||
|
}
|
||||||
|
.select2-container--default .select2-selection--multiple .select2-selection__choice {
|
||||||
|
background-color: #605ca8;
|
||||||
|
}
|
||||||
|
.search-highlight,
|
||||||
|
.search-highlight:hover {
|
||||||
|
background-color: #e9d15b;
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
204
public/css/dist/skins/skin-purple.min.css
vendored
204
public/css/dist/skins/skin-purple.min.css
vendored
@@ -1 +1,203 @@
|
|||||||
.skin-purple .main-header .navbar{background-color:#605ca8}.skin-purple .main-header .navbar .nav>li>a{color:#fff}.skin-purple .main-header .navbar .nav .open>a,.skin-purple .main-header .navbar .nav .open>a:focus,.skin-purple .main-header .navbar .nav .open>a:hover,.skin-purple .main-header .navbar .nav>.active>a,.skin-purple .main-header .navbar .nav>li>a:active,.skin-purple .main-header .navbar .nav>li>a:focus,.skin-purple .main-header .navbar .nav>li>a:hover,.skin-purple .main-header .navbar .sidebar-toggle:hover{background:rgba(0,0,0,.1);color:#f6f6f6}.skin-purple .main-header .navbar .sidebar-toggle{color:#fff}.skin-purple .main-header .navbar .sidebar-toggle:hover{background-color:#555299}@media (max-width:767px){.skin-purple .main-header .navbar .dropdown-menu li.divider{background-color:hsla(0,0%,100%,.1)}.skin-purple .main-header .navbar .dropdown-menu li a{color:#333}.skin-purple .main-header .navbar .dropdown-menu li a:hover{background:#555299}}.skin-purple .main-header li.user-header{background-color:#605ca8}.skin-purple .content-header{background:0 0}.skin-purple .left-side,.skin-purple .main-sidebar,.skin-purple .wrapper{background-color:#222d32}.skin-purple .user-panel>.info,.skin-purple .user-panel>.info>a{color:#fff}.skin-purple .sidebar-menu>li.header{background:#1a2226;color:#4b646f}.skin-purple .sidebar-menu>li>a{border-left:3px solid transparent}.skin-purple .sidebar-menu>li.active>a,.skin-purple .sidebar-menu>li:hover>a{background:#1e282c;border-left-color:#605ca8;color:#fff}.skin-purple .sidebar-menu>li>.treeview-menu{background:#2c3b41;margin:0 1px}.skin-purple .sidebar a{color:#b8c7ce}.skin-purple .sidebar a:hover{text-decoration:none}.skin-purple .treeview-menu>li>a{color:#8aa4af}.skin-purple .treeview-menu>li.active>a,.skin-purple .treeview-menu>li>a:hover{color:#fff}.skin-purple .sidebar-form{border:1px solid #374850;border-radius:3px;margin:10px}.skin-purple .sidebar-form .btn,.skin-purple .sidebar-form input[type=text]{background-color:#374850;border:1px solid transparent;box-shadow:none;height:35px;transition:all .3s ease-in-out}.skin-purple .sidebar-form input[type=text]{border-bottom-left-radius:2px;border-bottom-right-radius:0;border-top-left-radius:2px;border-top-right-radius:0;color:#666}.skin-purple .sidebar-form input[type=text]:focus,.skin-purple .sidebar-form input[type=text]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-purple .sidebar-form input[type=text]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-purple .sidebar-form .btn{border-bottom-left-radius:0;border-bottom-right-radius:2px;border-top-left-radius:0;border-top-right-radius:2px;color:#999}.skin-purple.layout-top-nav .main-header>.logo .logo-variant{background-color:none}.btn .btn-primary:link,.btn.btn-primary,.btn:hover .btn-primary:link,.btn:hover.btn-primary{background-color:#4c4988;border-color:#3a3767;color:#fff}.btn:hovera.btn-primary:hover,.btna.btn-primary:hover{background-color:#3a3767;border-color:#3a3767;color:#fff}.btn.btn-white:link,.btn:hover.btn-white:link{background-color:#4c4988;color:#fff}.btn.btn-white:hover,.btn:hover.btn-white:hover{background-color:#272546;color:#fff}a{color:#605ca8}a:hover{color:#3a3767}a:visited{color:#605ca8}.text-primary{color:#3a3767}.fixed-table-container tbody .selected td{background-color:#fff8af}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#605ca8}.search-highlight,.search-highlight:hover{background-color:#e9d15b}
|
/*
|
||||||
|
* Skin: Purple
|
||||||
|
* ----------
|
||||||
|
*/
|
||||||
|
.skin-purple .main-header .navbar {
|
||||||
|
background-color: #605ca8;
|
||||||
|
}
|
||||||
|
.skin-purple .main-header .navbar .nav > li > a {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-purple .main-header .navbar .nav > li > a:hover,
|
||||||
|
.skin-purple .main-header .navbar .nav > li > a:active,
|
||||||
|
.skin-purple .main-header .navbar .nav > li > a:focus,
|
||||||
|
.skin-purple .main-header .navbar .nav .open > a,
|
||||||
|
.skin-purple .main-header .navbar .nav .open > a:hover,
|
||||||
|
.skin-purple .main-header .navbar .nav .open > a:focus,
|
||||||
|
.skin-purple .main-header .navbar .nav > .active > a {
|
||||||
|
background: rgba(0, 0, 0, 0.1);
|
||||||
|
color: #f6f6f6;
|
||||||
|
}
|
||||||
|
.skin-purple .main-header .navbar .sidebar-toggle {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-purple .main-header .navbar .sidebar-toggle:hover {
|
||||||
|
color: #f6f6f6;
|
||||||
|
background: rgba(0, 0, 0, 0.1);
|
||||||
|
}
|
||||||
|
.skin-purple .main-header .navbar .sidebar-toggle {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-purple .main-header .navbar .sidebar-toggle:hover {
|
||||||
|
background-color: #555299;
|
||||||
|
}
|
||||||
|
@media (max-width: 767px) {
|
||||||
|
.skin-purple .main-header .navbar .dropdown-menu li.divider {
|
||||||
|
background-color: rgba(255, 255, 255, 0.1);
|
||||||
|
}
|
||||||
|
.skin-purple .main-header .navbar .dropdown-menu li a {
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
.skin-purple .main-header .navbar .dropdown-menu li a:hover {
|
||||||
|
background: #555299;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.skin-purple .main-header li.user-header {
|
||||||
|
background-color: #605ca8;
|
||||||
|
}
|
||||||
|
.skin-purple .content-header {
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
.skin-purple .wrapper,
|
||||||
|
.skin-purple .main-sidebar,
|
||||||
|
.skin-purple .left-side {
|
||||||
|
background-color: #222d32;
|
||||||
|
}
|
||||||
|
.skin-purple .user-panel > .info,
|
||||||
|
.skin-purple .user-panel > .info > a {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-purple .sidebar-menu > li.header {
|
||||||
|
color: #4b646f;
|
||||||
|
background: #1a2226;
|
||||||
|
}
|
||||||
|
.skin-purple .sidebar-menu > li > a {
|
||||||
|
border-left: 3px solid transparent;
|
||||||
|
}
|
||||||
|
.skin-purple .sidebar-menu > li:hover > a,
|
||||||
|
.skin-purple .sidebar-menu > li.active > a {
|
||||||
|
color: #fff;
|
||||||
|
background: #1e282c;
|
||||||
|
border-left-color: #605ca8;
|
||||||
|
}
|
||||||
|
.skin-purple .sidebar-menu > li > .treeview-menu {
|
||||||
|
margin: 0 1px;
|
||||||
|
background: #2c3b41;
|
||||||
|
}
|
||||||
|
.skin-purple .sidebar a {
|
||||||
|
color: #b8c7ce;
|
||||||
|
}
|
||||||
|
.skin-purple .sidebar a:hover {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
.skin-purple .treeview-menu > li > a {
|
||||||
|
color: #8aa4af;
|
||||||
|
}
|
||||||
|
.skin-purple .treeview-menu > li.active > a,
|
||||||
|
.skin-purple .treeview-menu > li > a:hover {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.skin-purple .sidebar-form {
|
||||||
|
border-radius: 3px;
|
||||||
|
border: 1px solid #374850;
|
||||||
|
margin: 10px 10px;
|
||||||
|
}
|
||||||
|
.skin-purple .sidebar-form input[type="text"],
|
||||||
|
.skin-purple .sidebar-form .btn {
|
||||||
|
box-shadow: none;
|
||||||
|
background-color: #374850;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
height: 35px;
|
||||||
|
transition: all 0.3s ease-in-out;
|
||||||
|
}
|
||||||
|
.skin-purple .sidebar-form input[type="text"] {
|
||||||
|
color: #666;
|
||||||
|
border-top-left-radius: 2px;
|
||||||
|
border-top-right-radius: 0;
|
||||||
|
border-bottom-right-radius: 0;
|
||||||
|
border-bottom-left-radius: 2px;
|
||||||
|
}
|
||||||
|
.skin-purple .sidebar-form input[type="text"]:focus,
|
||||||
|
.skin-purple .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||||
|
background-color: #fff;
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
.skin-purple .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||||
|
border-left-color: #fff;
|
||||||
|
}
|
||||||
|
.skin-purple .sidebar-form .btn {
|
||||||
|
color: #999;
|
||||||
|
border-top-left-radius: 0;
|
||||||
|
border-top-right-radius: 2px;
|
||||||
|
border-bottom-right-radius: 2px;
|
||||||
|
border-bottom-left-radius: 0;
|
||||||
|
}
|
||||||
|
.skin-purple.layout-top-nav .main-header > .logo .logo-variant {
|
||||||
|
background-color: none;
|
||||||
|
}
|
||||||
|
.btn.btn-primary,
|
||||||
|
.btn:hover.btn-primary,
|
||||||
|
.btn .btn-primary:link,
|
||||||
|
.btn:hover .btn-primary:link {
|
||||||
|
background-color: #4c4988;
|
||||||
|
border-color: #3a3767;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.btna.btn-primary:hover,
|
||||||
|
.btn:hovera.btn-primary:hover {
|
||||||
|
background-color: #3a3767;
|
||||||
|
border-color: #3a3767;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.btn.btn-white:link,
|
||||||
|
.btn:hover.btn-white:link {
|
||||||
|
background-color: #4c4988;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.btn.btn-white:hover,
|
||||||
|
.btn:hover.btn-white:hover {
|
||||||
|
background-color: #272546;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
a {
|
||||||
|
color: var(--link);
|
||||||
|
}
|
||||||
|
a:hover {
|
||||||
|
color: var(--hover-link);
|
||||||
|
}
|
||||||
|
a:visited {
|
||||||
|
color: var(--visited-link);
|
||||||
|
}
|
||||||
|
.text-primary {
|
||||||
|
color: #3a3767;
|
||||||
|
}
|
||||||
|
:root {
|
||||||
|
--button-default: #434078;
|
||||||
|
--button-primary: #302e56;
|
||||||
|
--button-hover: #272546;
|
||||||
|
--header: #605ca8;
|
||||||
|
/* Use same as Header picker */
|
||||||
|
--text-main: #BBB;
|
||||||
|
--text-sub: #9b9b9b;
|
||||||
|
--link: #605ca8;
|
||||||
|
/* Use same as Header picker, lighten by 70% */
|
||||||
|
--visited-link: #918ec3;
|
||||||
|
/* Use same as Header picker, lighten by 70% */
|
||||||
|
--hover-link: #c1c0dd;
|
||||||
|
/* Use same as Header picker, lighten by 70% */
|
||||||
|
--nav-link: #FFF;
|
||||||
|
/* Use same as Header picker */
|
||||||
|
--light-link: #fff;
|
||||||
|
/* Use same as Header picker */
|
||||||
|
}
|
||||||
|
a.btn-info:link,
|
||||||
|
a.btn-warning:link,
|
||||||
|
a.btn-danger:link {
|
||||||
|
color: #FFF;
|
||||||
|
}
|
||||||
|
a.btn-info:visited,
|
||||||
|
a.btn-warning:visited,
|
||||||
|
a.btn-danger:visited {
|
||||||
|
color: #FFF;
|
||||||
|
}
|
||||||
|
.fixed-table-container tbody .selected td {
|
||||||
|
background-color: #fff8af;
|
||||||
|
}
|
||||||
|
.select2-container--default .select2-selection--multiple .select2-selection__choice {
|
||||||
|
background-color: #605ca8;
|
||||||
|
}
|
||||||
|
.search-highlight,
|
||||||
|
.search-highlight:hover {
|
||||||
|
background-color: #e9d15b;
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
484
public/css/dist/skins/skin-red-dark.css
vendored
484
public/css/dist/skins/skin-red-dark.css
vendored
File diff suppressed because one or more lines are too long
484
public/css/dist/skins/skin-red-dark.min.css
vendored
484
public/css/dist/skins/skin-red-dark.min.css
vendored
File diff suppressed because one or more lines are too long
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user