Merge branch 'master' into dist/envole/7/master
|
@ -16,7 +16,7 @@
|
|||
<!-- template -->
|
||||
<file filelist='ninesurvey' name='/etc/apache2/sites-available/ninesurvey' source='ninesurvey-apache.conf' />
|
||||
<file filelist='ninesurvey' name='/var/www/html/ninesurvey/.env.local' source='ninesurvey-env.local' rm='True'/>
|
||||
<file filelist='ninegate' name='/etc/cron.d/ninesurvey' source='ninesurvey.cron' rm='True'/>
|
||||
<file filelist='ninesurvey' name='/etc/cron.d/ninesurvey' source='ninesurvey.cron' rm='True'/>
|
||||
</container>
|
||||
</containers>
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
"php": "^7.1.3",
|
||||
"ext-ctype": "*",
|
||||
"ext-iconv": "*",
|
||||
"cboden/ratchet": "^0.4.3",
|
||||
"craue/formflow-bundle": "^3.3",
|
||||
"doctrine/annotations": "^1.8",
|
||||
"friendsofsymfony/ckeditor-bundle": "^2.2",
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "061d29f07b7ffdac985f06a830f7ce71",
|
||||
"content-hash": "e2590c5a41dce3868f00073d0a1c9a7c",
|
||||
"packages": [
|
||||
{
|
||||
"name": "brick/math",
|
||||
|
@ -52,6 +52,63 @@
|
|||
],
|
||||
"time": "2020-08-18T23:57:15+00:00"
|
||||
},
|
||||
{
|
||||
"name": "cboden/ratchet",
|
||||
"version": "v0.4.3",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/ratchetphp/Ratchet.git",
|
||||
"reference": "466a0ecc83209c75b76645eb823401b5c52e5f21"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/ratchetphp/Ratchet/zipball/466a0ecc83209c75b76645eb823401b5c52e5f21",
|
||||
"reference": "466a0ecc83209c75b76645eb823401b5c52e5f21",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"guzzlehttp/psr7": "^1.0",
|
||||
"php": ">=5.4.2",
|
||||
"ratchet/rfc6455": "^0.3",
|
||||
"react/socket": "^1.0 || ^0.8 || ^0.7 || ^0.6 || ^0.5",
|
||||
"symfony/http-foundation": "^2.6|^3.0|^4.0|^5.0",
|
||||
"symfony/routing": "^2.6|^3.0|^4.0|^5.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "~4.8"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Ratchet\\": "src/Ratchet"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Chris Boden",
|
||||
"email": "cboden@gmail.com",
|
||||
"role": "Developer"
|
||||
},
|
||||
{
|
||||
"name": "Matt Bonneau",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
"description": "PHP WebSocket library",
|
||||
"homepage": "http://socketo.me",
|
||||
"keywords": [
|
||||
"Ratchet",
|
||||
"WebSockets",
|
||||
"server",
|
||||
"sockets",
|
||||
"websocket"
|
||||
],
|
||||
"time": "2020-07-07T15:50:14+00:00"
|
||||
},
|
||||
{
|
||||
"name": "composer/package-versions-deprecated",
|
||||
"version": "1.11.99",
|
||||
|
@ -1338,6 +1395,7 @@
|
|||
"reflection",
|
||||
"static"
|
||||
],
|
||||
"abandoned": "roave/better-reflection",
|
||||
"time": "2020-10-27T21:46:55+00:00"
|
||||
},
|
||||
{
|
||||
|
@ -1451,6 +1509,49 @@
|
|||
],
|
||||
"time": "2020-09-26T15:48:38+00:00"
|
||||
},
|
||||
{
|
||||
"name": "evenement/evenement",
|
||||
"version": "v3.0.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/igorw/evenement.git",
|
||||
"reference": "531bfb9d15f8aa57454f5f0285b18bec903b8fb7"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/igorw/evenement/zipball/531bfb9d15f8aa57454f5f0285b18bec903b8fb7",
|
||||
"reference": "531bfb9d15f8aa57454f5f0285b18bec903b8fb7",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^6.0"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-0": {
|
||||
"Evenement": "src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Igor Wiedler",
|
||||
"email": "igor@wiedler.ch"
|
||||
}
|
||||
],
|
||||
"description": "Événement is a very simple event dispatching library for PHP",
|
||||
"keywords": [
|
||||
"event-dispatcher",
|
||||
"event-emitter"
|
||||
],
|
||||
"time": "2017-07-23T21:35:13+00:00"
|
||||
},
|
||||
{
|
||||
"name": "exsyst/swagger",
|
||||
"version": "v0.4.1",
|
||||
|
@ -1669,6 +1770,77 @@
|
|||
],
|
||||
"time": "2020-09-10T06:52:17+00:00"
|
||||
},
|
||||
{
|
||||
"name": "guzzlehttp/psr7",
|
||||
"version": "1.7.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/guzzle/psr7.git",
|
||||
"reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/guzzle/psr7/zipball/53330f47520498c0ae1f61f7e2c90f55690c06a3",
|
||||
"reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.4.0",
|
||||
"psr/http-message": "~1.0",
|
||||
"ralouphie/getallheaders": "^2.0.5 || ^3.0.0"
|
||||
},
|
||||
"provide": {
|
||||
"psr/http-message-implementation": "1.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"ext-zlib": "*",
|
||||
"phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10"
|
||||
},
|
||||
"suggest": {
|
||||
"laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.7-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"GuzzleHttp\\Psr7\\": "src/"
|
||||
},
|
||||
"files": [
|
||||
"src/functions_include.php"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Michael Dowling",
|
||||
"email": "mtdowling@gmail.com",
|
||||
"homepage": "https://github.com/mtdowling"
|
||||
},
|
||||
{
|
||||
"name": "Tobias Schultze",
|
||||
"homepage": "https://github.com/Tobion"
|
||||
}
|
||||
],
|
||||
"description": "PSR-7 message implementation that also provides common utility methods",
|
||||
"keywords": [
|
||||
"http",
|
||||
"message",
|
||||
"psr-7",
|
||||
"request",
|
||||
"response",
|
||||
"stream",
|
||||
"uri",
|
||||
"url"
|
||||
],
|
||||
"time": "2020-09-30T07:37:11+00:00"
|
||||
},
|
||||
{
|
||||
"name": "jasig/phpcas",
|
||||
"version": "1.3.8",
|
||||
|
@ -2620,6 +2792,56 @@
|
|||
],
|
||||
"time": "2019-01-08T18:20:26+00:00"
|
||||
},
|
||||
{
|
||||
"name": "psr/http-message",
|
||||
"version": "1.0.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/php-fig/http-message.git",
|
||||
"reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
|
||||
"reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.0"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.0.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Psr\\Http\\Message\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "PHP-FIG",
|
||||
"homepage": "http://www.php-fig.org/"
|
||||
}
|
||||
],
|
||||
"description": "Common interface for HTTP messages",
|
||||
"homepage": "https://github.com/php-fig/http-message",
|
||||
"keywords": [
|
||||
"http",
|
||||
"http-message",
|
||||
"psr",
|
||||
"psr-7",
|
||||
"request",
|
||||
"response"
|
||||
],
|
||||
"time": "2016-08-06T14:39:51+00:00"
|
||||
},
|
||||
{
|
||||
"name": "psr/link",
|
||||
"version": "1.0.0",
|
||||
|
@ -2716,6 +2938,46 @@
|
|||
],
|
||||
"time": "2020-03-23T09:12:05+00:00"
|
||||
},
|
||||
{
|
||||
"name": "ralouphie/getallheaders",
|
||||
"version": "3.0.3",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/ralouphie/getallheaders.git",
|
||||
"reference": "120b605dfeb996808c31b6477290a714d356e822"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822",
|
||||
"reference": "120b605dfeb996808c31b6477290a714d356e822",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.6"
|
||||
},
|
||||
"require-dev": {
|
||||
"php-coveralls/php-coveralls": "^2.1",
|
||||
"phpunit/phpunit": "^5 || ^6.5"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"files": [
|
||||
"src/getallheaders.php"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Ralph Khattar",
|
||||
"email": "ralph.khattar@gmail.com"
|
||||
}
|
||||
],
|
||||
"description": "A polyfill for getallheaders.",
|
||||
"time": "2019-03-08T08:55:37+00:00"
|
||||
},
|
||||
{
|
||||
"name": "ramsey/collection",
|
||||
"version": "1.1.1",
|
||||
|
@ -2860,6 +3122,443 @@
|
|||
],
|
||||
"time": "2020-08-18T17:17:46+00:00"
|
||||
},
|
||||
{
|
||||
"name": "ratchet/rfc6455",
|
||||
"version": "v0.3",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/ratchetphp/RFC6455.git",
|
||||
"reference": "c8651c7938651c2d55f5d8c2422ac5e57a183341"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/ratchetphp/RFC6455/zipball/c8651c7938651c2d55f5d8c2422ac5e57a183341",
|
||||
"reference": "c8651c7938651c2d55f5d8c2422ac5e57a183341",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"guzzlehttp/psr7": "^1.0",
|
||||
"php": ">=5.4.2"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "5.7.*",
|
||||
"react/socket": "^1.3"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Ratchet\\RFC6455\\": "src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Chris Boden",
|
||||
"email": "cboden@gmail.com",
|
||||
"role": "Developer"
|
||||
},
|
||||
{
|
||||
"name": "Matt Bonneau",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
"description": "RFC6455 WebSocket protocol handler",
|
||||
"homepage": "http://socketo.me",
|
||||
"keywords": [
|
||||
"WebSockets",
|
||||
"rfc6455",
|
||||
"websocket"
|
||||
],
|
||||
"time": "2020-05-15T18:31:24+00:00"
|
||||
},
|
||||
{
|
||||
"name": "react/cache",
|
||||
"version": "v1.1.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/reactphp/cache.git",
|
||||
"reference": "44a568925556b0bd8cacc7b49fb0f1cf0d706a0c"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/reactphp/cache/zipball/44a568925556b0bd8cacc7b49fb0f1cf0d706a0c",
|
||||
"reference": "44a568925556b0bd8cacc7b49fb0f1cf0d706a0c",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.0",
|
||||
"react/promise": "^3.0 || ^2.0 || ^1.1"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.35"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"React\\Cache\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Christian Lück",
|
||||
"email": "christian@clue.engineering",
|
||||
"homepage": "https://clue.engineering/"
|
||||
},
|
||||
{
|
||||
"name": "Cees-Jan Kiewiet",
|
||||
"email": "reactphp@ceesjankiewiet.nl",
|
||||
"homepage": "https://wyrihaximus.net/"
|
||||
},
|
||||
{
|
||||
"name": "Jan Sorgalla",
|
||||
"email": "jsorgalla@gmail.com",
|
||||
"homepage": "https://sorgalla.com/"
|
||||
},
|
||||
{
|
||||
"name": "Chris Boden",
|
||||
"email": "cboden@gmail.com",
|
||||
"homepage": "https://cboden.dev/"
|
||||
}
|
||||
],
|
||||
"description": "Async, Promise-based cache interface for ReactPHP",
|
||||
"keywords": [
|
||||
"cache",
|
||||
"caching",
|
||||
"promise",
|
||||
"reactphp"
|
||||
],
|
||||
"time": "2020-09-18T12:12:35+00:00"
|
||||
},
|
||||
{
|
||||
"name": "react/dns",
|
||||
"version": "v1.4.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/reactphp/dns.git",
|
||||
"reference": "665260757171e2ab17485b44e7ffffa7acb6ca1f"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/reactphp/dns/zipball/665260757171e2ab17485b44e7ffffa7acb6ca1f",
|
||||
"reference": "665260757171e2ab17485b44e7ffffa7acb6ca1f",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.0",
|
||||
"react/cache": "^1.0 || ^0.6 || ^0.5",
|
||||
"react/event-loop": "^1.0 || ^0.5",
|
||||
"react/promise": "^3.0 || ^2.7 || ^1.2.1",
|
||||
"react/promise-timer": "^1.2"
|
||||
},
|
||||
"require-dev": {
|
||||
"clue/block-react": "^1.2",
|
||||
"phpunit/phpunit": "^9.3 || ^4.8.35"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"React\\Dns\\": "src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Christian Lück",
|
||||
"email": "christian@clue.engineering",
|
||||
"homepage": "https://clue.engineering/"
|
||||
},
|
||||
{
|
||||
"name": "Cees-Jan Kiewiet",
|
||||
"email": "reactphp@ceesjankiewiet.nl",
|
||||
"homepage": "https://wyrihaximus.net/"
|
||||
},
|
||||
{
|
||||
"name": "Jan Sorgalla",
|
||||
"email": "jsorgalla@gmail.com",
|
||||
"homepage": "https://sorgalla.com/"
|
||||
},
|
||||
{
|
||||
"name": "Chris Boden",
|
||||
"email": "cboden@gmail.com",
|
||||
"homepage": "https://cboden.dev/"
|
||||
}
|
||||
],
|
||||
"description": "Async DNS resolver for ReactPHP",
|
||||
"keywords": [
|
||||
"async",
|
||||
"dns",
|
||||
"dns-resolver",
|
||||
"reactphp"
|
||||
],
|
||||
"time": "2020-09-18T12:12:55+00:00"
|
||||
},
|
||||
{
|
||||
"name": "react/event-loop",
|
||||
"version": "v1.1.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/reactphp/event-loop.git",
|
||||
"reference": "6d24de090cd59cfc830263cfba965be77b563c13"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/reactphp/event-loop/zipball/6d24de090cd59cfc830263cfba965be77b563c13",
|
||||
"reference": "6d24de090cd59cfc830263cfba965be77b563c13",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^7.0 || ^6.4 || ^5.7 || ^4.8.35"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-event": "~1.0 for ExtEventLoop",
|
||||
"ext-pcntl": "For signal handling support when using the StreamSelectLoop",
|
||||
"ext-uv": "* for ExtUvLoop"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"React\\EventLoop\\": "src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"description": "ReactPHP's core reactor event loop that libraries can use for evented I/O.",
|
||||
"keywords": [
|
||||
"asynchronous",
|
||||
"event-loop"
|
||||
],
|
||||
"time": "2020-01-01T18:39:52+00:00"
|
||||
},
|
||||
{
|
||||
"name": "react/promise",
|
||||
"version": "v2.8.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/reactphp/promise.git",
|
||||
"reference": "f3cff96a19736714524ca0dd1d4130de73dbbbc4"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/reactphp/promise/zipball/f3cff96a19736714524ca0dd1d4130de73dbbbc4",
|
||||
"reference": "f3cff96a19736714524ca0dd1d4130de73dbbbc4",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.4.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^7.0 || ^6.5 || ^5.7 || ^4.8.36"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"React\\Promise\\": "src/"
|
||||
},
|
||||
"files": [
|
||||
"src/functions_include.php"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Jan Sorgalla",
|
||||
"email": "jsorgalla@gmail.com"
|
||||
}
|
||||
],
|
||||
"description": "A lightweight implementation of CommonJS Promises/A for PHP",
|
||||
"keywords": [
|
||||
"promise",
|
||||
"promises"
|
||||
],
|
||||
"time": "2020-05-12T15:16:56+00:00"
|
||||
},
|
||||
{
|
||||
"name": "react/promise-timer",
|
||||
"version": "v1.6.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/reactphp/promise-timer.git",
|
||||
"reference": "daee9baf6ef30c43ea4c86399f828bb5f558f6e6"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/reactphp/promise-timer/zipball/daee9baf6ef30c43ea4c86399f828bb5f558f6e6",
|
||||
"reference": "daee9baf6ef30c43ea4c86399f828bb5f558f6e6",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3",
|
||||
"react/event-loop": "^1.0 || ^0.5 || ^0.4 || ^0.3.5",
|
||||
"react/promise": "^3.0 || ^2.7.0 || ^1.2.1"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^9.0 || ^5.7 || ^4.8.35"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"React\\Promise\\Timer\\": "src/"
|
||||
},
|
||||
"files": [
|
||||
"src/functions_include.php"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Christian Lück",
|
||||
"email": "christian@lueck.tv"
|
||||
}
|
||||
],
|
||||
"description": "A trivial implementation of timeouts for Promises, built on top of ReactPHP.",
|
||||
"homepage": "https://github.com/reactphp/promise-timer",
|
||||
"keywords": [
|
||||
"async",
|
||||
"event-loop",
|
||||
"promise",
|
||||
"reactphp",
|
||||
"timeout",
|
||||
"timer"
|
||||
],
|
||||
"time": "2020-07-10T12:18:06+00:00"
|
||||
},
|
||||
{
|
||||
"name": "react/socket",
|
||||
"version": "v1.6.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/reactphp/socket.git",
|
||||
"reference": "e2b96b23a13ca9b41ab343268dbce3f8ef4d524a"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/reactphp/socket/zipball/e2b96b23a13ca9b41ab343268dbce3f8ef4d524a",
|
||||
"reference": "e2b96b23a13ca9b41ab343268dbce3f8ef4d524a",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"evenement/evenement": "^3.0 || ^2.0 || ^1.0",
|
||||
"php": ">=5.3.0",
|
||||
"react/dns": "^1.1",
|
||||
"react/event-loop": "^1.0 || ^0.5",
|
||||
"react/promise": "^2.6.0 || ^1.2.1",
|
||||
"react/promise-timer": "^1.4.0",
|
||||
"react/stream": "^1.1"
|
||||
},
|
||||
"require-dev": {
|
||||
"clue/block-react": "^1.2",
|
||||
"phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.35",
|
||||
"react/promise-stream": "^1.2"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"React\\Socket\\": "src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Christian Lück",
|
||||
"email": "christian@clue.engineering",
|
||||
"homepage": "https://clue.engineering/"
|
||||
},
|
||||
{
|
||||
"name": "Cees-Jan Kiewiet",
|
||||
"email": "reactphp@ceesjankiewiet.nl",
|
||||
"homepage": "https://wyrihaximus.net/"
|
||||
},
|
||||
{
|
||||
"name": "Jan Sorgalla",
|
||||
"email": "jsorgalla@gmail.com",
|
||||
"homepage": "https://sorgalla.com/"
|
||||
},
|
||||
{
|
||||
"name": "Chris Boden",
|
||||
"email": "cboden@gmail.com",
|
||||
"homepage": "https://cboden.dev/"
|
||||
}
|
||||
],
|
||||
"description": "Async, streaming plaintext TCP/IP and secure TLS socket server and client connections for ReactPHP",
|
||||
"keywords": [
|
||||
"Connection",
|
||||
"Socket",
|
||||
"async",
|
||||
"reactphp",
|
||||
"stream"
|
||||
],
|
||||
"time": "2020-08-28T12:49:05+00:00"
|
||||
},
|
||||
{
|
||||
"name": "react/stream",
|
||||
"version": "v1.1.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/reactphp/stream.git",
|
||||
"reference": "7c02b510ee3f582c810aeccd3a197b9c2f52ff1a"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/reactphp/stream/zipball/7c02b510ee3f582c810aeccd3a197b9c2f52ff1a",
|
||||
"reference": "7c02b510ee3f582c810aeccd3a197b9c2f52ff1a",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"evenement/evenement": "^3.0 || ^2.0 || ^1.0",
|
||||
"php": ">=5.3.8",
|
||||
"react/event-loop": "^1.0 || ^0.5 || ^0.4 || ^0.3.5"
|
||||
},
|
||||
"require-dev": {
|
||||
"clue/stream-filter": "~1.2",
|
||||
"phpunit/phpunit": "^7.0 || ^6.4 || ^5.7 || ^4.8.35"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"React\\Stream\\": "src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"description": "Event-driven readable and writable streams for non-blocking I/O in ReactPHP",
|
||||
"keywords": [
|
||||
"event-driven",
|
||||
"io",
|
||||
"non-blocking",
|
||||
"pipe",
|
||||
"reactphp",
|
||||
"readable",
|
||||
"stream",
|
||||
"writable"
|
||||
],
|
||||
"time": "2020-05-04T10:17:57+00:00"
|
||||
},
|
||||
{
|
||||
"name": "sensio/framework-extra-bundle",
|
||||
"version": "v5.6.1",
|
||||
|
|
|
@ -13,6 +13,8 @@ twig:
|
|||
appName: '%appName%'
|
||||
appCron: '%appCron%'
|
||||
appMasteridentity: '%appMasteridentity%'
|
||||
wssuse: '%wssuse%'
|
||||
wssurl: '%wssurl%'
|
||||
sondeUse: '%sondeUse%'
|
||||
sondeUrl: '%sondeUrl%'
|
||||
|
||||
|
|
|
@ -53,6 +53,20 @@ app_config_logo:
|
|||
path: /admin/config/logo
|
||||
defaults: { _controller: App\Controller\ConfigController:logo }
|
||||
|
||||
#== Theme ================================================================================================================
|
||||
app_theme:
|
||||
path: /admin/theme
|
||||
defaults: { _controller: App\Controller\ThemeController:list }
|
||||
|
||||
app_theme_select:
|
||||
path: /admin/theme/select/{name}
|
||||
defaults: { _controller: App\Controller\ThemeController:select, name: "" }
|
||||
|
||||
#== Wss ==================================================================================================================
|
||||
app_wss_sample:
|
||||
path: /user/wss/sampble
|
||||
defaults: { _controller: App\Controller\WebsocketController:sample }
|
||||
|
||||
#== Sonde ================================================================================================================
|
||||
app_sonde:
|
||||
path: /sonde
|
||||
|
@ -67,6 +81,10 @@ app_crop02:
|
|||
path: /user/crop02/{type}/{reportinput}
|
||||
defaults: { _controller: App\Controller\CropController:crop02 }
|
||||
|
||||
app_ckupload:
|
||||
path: /user/ckupload
|
||||
defaults: { _controller: App\Controller\CropController:ckupload }
|
||||
|
||||
oneup_uploader:
|
||||
resource: .
|
||||
type: uploader
|
||||
|
@ -125,10 +143,6 @@ app_user_profil:
|
|||
path: /user/profil
|
||||
defaults: { _controller: App\Controller\UserController:profil }
|
||||
|
||||
app_user_survey:
|
||||
path: /user/surveys
|
||||
defaults: { _controller: App\Controller\UserController:survey }
|
||||
|
||||
#== Group ========================================================================================================
|
||||
app_group:
|
||||
path: /admin/group
|
||||
|
@ -155,6 +169,10 @@ app_group_info:
|
|||
defaults: { _controller: App\Controller\GroupController:info }
|
||||
|
||||
#== Survey ========================================================================================================
|
||||
app_survey:
|
||||
path: /user/survey
|
||||
defaults: { _controller: App\Controller\SurveyController:list }
|
||||
|
||||
app_survey_submit:
|
||||
path: /user/survey/submit
|
||||
defaults: { _controller: App\Controller\SurveyController:submit }
|
||||
|
|
|
@ -47,6 +47,10 @@ parameters:
|
|||
casLastname: '%env(resolve:CAS_LASTNAME)%'
|
||||
casFirstname: '%env(resolve:CAS_FIRSTNAME)%'
|
||||
|
||||
wssuse: '%env(resolve:WSS_USE)%'
|
||||
wssport: '%env(resolve:WSS_PORT)%'
|
||||
wssurl: 'wss://%env(resolve:APP_WEBURL)%/wss%env(resolve:APP_ALIAS)%'
|
||||
|
||||
proxyUse: '%env(resolve:PROXY_USE)%'
|
||||
proxyHost: '%env(resolve:PROXY_HOST)%'
|
||||
proxyPort: '%env(resolve:PROXY_PORT)%'
|
||||
|
|
|
@ -0,0 +1,174 @@
|
|||
@font-face {
|
||||
font-family: 'Redressed';
|
||||
src: url('../fonts/Redressed-webfont.ttf') format('truetype');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Acme-Regular';
|
||||
src: url('../fonts/Acme-Regular-webfont.ttf') format('truetype');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Peacesans';
|
||||
src: url('../fonts/Peacesans-webfont.ttf') format('truetype');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Roboto-Regular';
|
||||
src: url('../fonts/Roboto-Regular-webfont.ttf') format('truetype');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Justanotherhand-Regular';
|
||||
src: url('../fonts/Justanotherhand-Regular-webfont.ttf') format('truetype');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Lato-Regular';
|
||||
src: url('../fonts/Lato-Regular.ttf') format('truetype');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'ABeeZee-Regular';
|
||||
src: url('../fonts/ABeeZee-Regular.ttf') format('truetype');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'AlfaSlabOne-Regular';
|
||||
src: url('../fonts/AlfaSlabOne-Regular.ttf') format('truetype');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Anton-Regular';
|
||||
src: url('../fonts/Anton-Regular.ttf') format('truetype');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'FredokaOne-Regular';
|
||||
src: url('../fonts/FredokaOne-Regular.ttf') format('truetype');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Overpass-Black';
|
||||
src: url('../fonts/Overpass-Black.ttf') format('truetype');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Righteous-Regular';
|
||||
src: url('../fonts/Righteous-Regular.ttf') format('truetype');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Signika-Regular';
|
||||
src: url('../fonts/Signika-Regular.ttf') format('truetype');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Teko-Bold';
|
||||
src: url('../fonts/Teko-Bold.ttf') format('truetype');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'LuckiestGuy-Regular';
|
||||
src: url('../fonts/LuckiestGuy-Regular.ttf') format('truetype');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Baloo-Regular';
|
||||
src: url('../fonts/Baloo-Regular.ttf') format('truetype');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'CarterOne-Regular';
|
||||
src: url('../fonts/CarterOne-Regular.ttf') format('truetype');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Chewy-Regular';
|
||||
src: url('../fonts/Chewy-Regular.ttf') format('truetype');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Courgette-Regular';
|
||||
src: url('../fonts/Courgette-Regular.ttf') format('truetype');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'LexendDeca-Regular';
|
||||
src: url('../fonts/LexendDeca-Regular.ttf') format('truetype');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'RubikMonoOne-Regular';
|
||||
src: url('../fonts/RubikMonoOne-Regular.ttf') format('truetype');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'SigmarOne-Regular';
|
||||
src: url('../fonts/SigmarOne-Regular.ttf') format('truetype');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Viga-Regular';
|
||||
src: url('../fonts/Viga-Regular.ttf') format('truetype');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Grandstander';
|
||||
src: url('../fonts/Grandstander-Black.ttf') format('truetype');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'PassionOne';
|
||||
src: url('../fonts/PassionOne-Regular.ttf') format('truetype');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
|
@ -0,0 +1,465 @@
|
|||
h1{
|
||||
padding: 40px 0px 9px 0px;
|
||||
border-bottom: 1px solid #eee;
|
||||
}
|
||||
|
||||
.nav a{
|
||||
background: none;
|
||||
color: #CFD8DC;
|
||||
font-size: 14px;
|
||||
padding: 5px 0px 5px 25px;
|
||||
display: block;
|
||||
}
|
||||
|
||||
|
||||
.page-maxed {
|
||||
max-width:1200px;
|
||||
margin:auto !important;
|
||||
}
|
||||
|
||||
/* Sidebar Styles */
|
||||
.contentsidebar {
|
||||
margin-left:250px;
|
||||
}
|
||||
|
||||
#sidebar {
|
||||
z-index: 1000;
|
||||
position: fixed;
|
||||
left: 0px;
|
||||
width: 250px;
|
||||
height: 100%;
|
||||
overflow-y: auto;
|
||||
background: #37474F;
|
||||
}
|
||||
|
||||
#sidebar header {
|
||||
background-color: #263238;
|
||||
font-size: 20px;
|
||||
line-height: 52px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#sidebar header a {
|
||||
color: #fff;
|
||||
display: block;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
#sidebar header a:hover {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
#sidebar .nav{
|
||||
display: block;
|
||||
margin: 0px 10px;
|
||||
}
|
||||
|
||||
#sidebar .nav a {
|
||||
padding: 0px 10px 5px 10px;
|
||||
}
|
||||
|
||||
#sidebar .nav .last{
|
||||
border-bottom: 1px solid #455A64;
|
||||
padding-bottom:5px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
#sidebar .title {
|
||||
color: #CFD8DC;
|
||||
font-size: 16px;
|
||||
padding: 0px 10px 0px 10px;
|
||||
display: block;
|
||||
text-transform: uppercase;
|
||||
margin-left: 0px !important;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#sidebar .nav a:hover{
|
||||
background: none;
|
||||
color: #ECEFF1;
|
||||
}
|
||||
|
||||
#sidebar .nav a i{
|
||||
margin-right: 5px;
|
||||
width: 20px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#sidebar .nav .select-control {
|
||||
padding: 0px 10px 5px 10px;
|
||||
margin-top: -12px;
|
||||
}
|
||||
|
||||
.avatar {
|
||||
background-color: #343a40;
|
||||
width: 35px;
|
||||
height: 35px;
|
||||
border-radius: 100%;
|
||||
margin-top: -5px;
|
||||
}
|
||||
|
||||
.avatar.big{
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
@media (max-width: 991px) {
|
||||
.contentsidebar {
|
||||
margin-left: auto;
|
||||
}
|
||||
|
||||
#sidebar {
|
||||
position: static;
|
||||
margin:0px -15px;
|
||||
width: auto;
|
||||
}
|
||||
}
|
||||
|
||||
a.btn {
|
||||
color:#ffffff;
|
||||
}
|
||||
|
||||
.btn-link {
|
||||
padding:0px;
|
||||
}
|
||||
|
||||
.media-body p {
|
||||
font-size :12px;
|
||||
margin-bottom:0px;
|
||||
}
|
||||
|
||||
@media (min-width: 992px) {
|
||||
#sidebar {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
{% if useheader is defined and useheader %}
|
||||
#main {
|
||||
padding-top:55px;
|
||||
}
|
||||
{% endif %}
|
||||
|
||||
|
||||
th.dt-center, td.dt-center { text-align: center; }
|
||||
|
||||
|
||||
/* heros */
|
||||
.heroheader {
|
||||
width:100%;
|
||||
height:800px;
|
||||
position:relative;
|
||||
}
|
||||
.heroheader div{
|
||||
width:100%;
|
||||
height:100%;
|
||||
background-size: cover;
|
||||
background-position: center;
|
||||
color:#fff;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* Dots */
|
||||
.slick-dotted.slick-slider
|
||||
{
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
.slick-dots
|
||||
{
|
||||
position: absolute;
|
||||
bottom: -105px;
|
||||
|
||||
display: block;
|
||||
|
||||
width: 100%;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
|
||||
list-style: none;
|
||||
|
||||
text-align: center;
|
||||
}
|
||||
.slick-dots li
|
||||
{
|
||||
position: relative;
|
||||
|
||||
display: inline-block;
|
||||
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
margin: 0 5px;
|
||||
padding: 0;
|
||||
|
||||
cursor: pointer;
|
||||
}
|
||||
.slick-dots li button
|
||||
{
|
||||
font-size: 0;
|
||||
line-height: 0;
|
||||
|
||||
display: block;
|
||||
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
padding: 5px;
|
||||
|
||||
cursor: pointer;
|
||||
|
||||
color: transparent;
|
||||
border: 0;
|
||||
outline: none;
|
||||
background: transparent;
|
||||
}
|
||||
.slick-dots li button:hover,
|
||||
.slick-dots li button:focus
|
||||
{
|
||||
outline: none;
|
||||
}
|
||||
.slick-dots li button:hover:before,
|
||||
.slick-dots li button:focus:before
|
||||
{
|
||||
opacity: 1;
|
||||
}
|
||||
.slick-dots li button:before
|
||||
{
|
||||
font-family: 'slick';
|
||||
font-size: 6px;
|
||||
line-height: 20px;
|
||||
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
|
||||
content: '•';
|
||||
text-align: center;
|
||||
|
||||
opacity: .25;
|
||||
color: black;
|
||||
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
.slick-dots li.slick-active button:before
|
||||
{
|
||||
opacity: .75;
|
||||
color: black;
|
||||
}
|
||||
|
||||
.slick-dotted.slick-slider{margin-bottom:0px;}
|
||||
.slick-dots {
|
||||
position: absolute;
|
||||
top: 135px;
|
||||
left:46px;
|
||||
text-align:left;
|
||||
z-index: 9100;
|
||||
bottom:unset;
|
||||
width:auto;
|
||||
}
|
||||
.heroheader-dot { color:#fff; }
|
||||
|
||||
|
||||
.herobox {
|
||||
position:absolute;
|
||||
float: left;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: -200px;
|
||||
z-index: 8000;
|
||||
padding: 0;
|
||||
text-align: center;
|
||||
text-shadow: none;
|
||||
background-color: rgba(0,0,0,0.7);
|
||||
height: auto;
|
||||
width: 45%;
|
||||
box-shadow: 0px -1px 2px rgba(0,0,0,0.5);
|
||||
margin: 0 auto;
|
||||
//opacity: 0.9;
|
||||
transform-origin: 50% 50%;
|
||||
transform: skew(-20deg);
|
||||
-webkit-transform: skew(-20deg);
|
||||
-moz-transform: skew(-20deg);
|
||||
-o-transform: skew(-20deg);
|
||||
-ms-transform: skew(-20deg);
|
||||
border-left: 1px solid #fff;
|
||||
border-right: 1px solid #fff;
|
||||
}
|
||||
|
||||
.herotitle {
|
||||
text-align: left;
|
||||
position:absolute;
|
||||
//width:100%;
|
||||
top: 80px;
|
||||
left:50px;
|
||||
z-index: 9000;
|
||||
}
|
||||
|
||||
.herotitle h1 {
|
||||
padding:0px;
|
||||
border:none;
|
||||
}
|
||||
|
||||
.heromenu {
|
||||
padding-top: 30px;
|
||||
font-size: 20px;
|
||||
}
|
||||
|
||||
.herofloatmenu .avatar {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
margin: 3px 3px 0px 0px;
|
||||
}
|
||||
.herofloatmenu a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.heromenu .linkmenu {
|
||||
font-size:16px;
|
||||
padding-left: 5px;
|
||||
}
|
||||
|
||||
.heromenu .linkmenu a {
|
||||
margin-right:5px;
|
||||
}
|
||||
|
||||
.herologo {
|
||||
position: absolute;
|
||||
top: 0px;
|
||||
text-align: center;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.herologo img {max-height:200px;}
|
||||
|
||||
@media (max-width: 980px) {
|
||||
.herobox { display: none; }
|
||||
.herotitle { width:100%; top: 70px; left:0px; text-align:center; }
|
||||
.slick-dots { top: 120px; left: 0px; text-align: center; width: 100%; }
|
||||
.heromenu .facatmenu {display: none;}
|
||||
.catmenu { display:none }
|
||||
.linkmenu { display:none }
|
||||
|
||||
.herofloatmenu a {
|
||||
font-size: 40px;
|
||||
}
|
||||
|
||||
.herofloatmenu .avatar {
|
||||
height: 40px;
|
||||
width:40px;
|
||||
margin-top:15px;
|
||||
}
|
||||
}
|
||||
|
||||
.grid-sizer { width: 10%; margin-bottom: 0%;float:left;}
|
||||
.grid-item-size { width: 10%; margin-bottom: 0%;float:left;}
|
||||
.grid-item-size-2 { width: 20%; margin-bottom: 0%;float:left;}
|
||||
.grid-item-size-3 { width: 30%; margin-bottom: 0%;float:left;}
|
||||
.grid-item-size-4 { width: 40%; margin-bottom: 0%;float:left;}
|
||||
.grid-item-size-5 { width: 40%; margin-bottom: 0%;float:left;}
|
||||
.grid-item-size-6 { width: 60%; margin-bottom: 0%;float:left;}
|
||||
.grid-item-size-7 { width: 70%; margin-bottom: 0%;float:left;}
|
||||
.grid-item-size-8 { width: 80%; margin-bottom: 0%;float:left;}
|
||||
.grid-item-size-9 { width: 90%; margin-bottom: 0%;float:left;}
|
||||
.grid-item-full { width: 100%; margin-bottom: 0%; font-size:20px;float:left; }
|
||||
.grid-item-full h1 {margin: 0; border:none; padding: 20px 0px 0px 10px; }
|
||||
.gutter-sizer { width: 0%;float:left; }
|
||||
@media (max-width: 980px) {
|
||||
.grid-sizer { width: 50%; margin-bottom: 0%;}
|
||||
.grid-item-size { width: 50%; margin-bottom: 0%;}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.foliomenu {
|
||||
position: fixed;
|
||||
width:100%;
|
||||
height:60px;
|
||||
background-color: var(--colorbgbodydark) ;
|
||||
z-index: 100000;
|
||||
display:none;
|
||||
padding-left:10px;
|
||||
border-bottom: 1px solid var(--colorftbodydark);
|
||||
}
|
||||
|
||||
.foliomenu .logo { float:left; height:40px; margin-top:7px }
|
||||
.foliomenu .avatar { height: 20px; margin: 3px 3px 0px 0px; width: 20px; }
|
||||
.foliomenu div { padding: 10px; line-height:35px; float:left;}
|
||||
.foliomenu a {
|
||||
color: var(--colorftbodydark);
|
||||
font-size: 15px;
|
||||
}
|
||||
.foliomenu .float-right a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.foliomenu .fa { font-size: 14px; color: var(--colorftbodydark);}
|
||||
|
||||
.foliotop {
|
||||
float:right;
|
||||
position:fixed;
|
||||
bottom: 10px;
|
||||
right:10px;
|
||||
z-index: 100000;
|
||||
background-color: var(--colorbgbodydark) ;
|
||||
padding:10px;
|
||||
border-radius: 100%;
|
||||
width:55px;
|
||||
height:55px;
|
||||
text-align: center;
|
||||
line-height: 28px;
|
||||
border: 1px solid var(--colorbgbodylight);
|
||||
display:none;
|
||||
}
|
||||
.foliotop a {
|
||||
color: var(--colorftbodydark);
|
||||
font-size: 25px;
|
||||
}
|
||||
|
||||
@media (max-width: 980px) {
|
||||
|
||||
.herofloatmenu {
|
||||
display:none;
|
||||
}
|
||||
|
||||
.foliomenu {
|
||||
display: block!important;
|
||||
}
|
||||
|
||||
.foliomenu a {
|
||||
font-size:30px;
|
||||
}
|
||||
|
||||
.foliomenu .float-right a {
|
||||
margin-top: -8px;
|
||||
}
|
||||
.foliomenu .float-right img {
|
||||
height:35px;
|
||||
width:35px;
|
||||
margin-top:0px;
|
||||
}
|
||||
.foliomenu .float-right .fa {
|
||||
font-size:30px!important;
|
||||
}
|
||||
}
|
||||
|
||||
.linkurl a {
|
||||
background-color: var(--colorbgbodylight) ;
|
||||
color: var(--colorftbodylight)!important;
|
||||
font-size: 14px;
|
||||
padding: 5px;
|
||||
display: inline-block;
|
||||
margin: 0px 10px 10px 0px;
|
||||
}
|
||||
|
||||
.contactdescription {
|
||||
max-width:300px;
|
||||
text-align:justify;
|
||||
}
|
After Width: | Height: | Size: 12 KiB |
|
@ -0,0 +1,3 @@
|
|||
name: Nineblue
|
||||
author: Arnaud Fornerot
|
||||
version: 1.0
|
After Width: | Height: | Size: 22 KiB |
|
@ -0,0 +1,43 @@
|
|||
:root{
|
||||
--colorbgbodydark: #3a539b;
|
||||
--colorfttitlelight: #3a539b;
|
||||
|
||||
/* Vous pouvez forcer l'ensemble de ces variables ou laisser la valeur par défaut
|
||||
--colorbgbodylight: #;
|
||||
--colorbgbodydark: #;
|
||||
--colorfttitlelight: #;
|
||||
--colorfttitledark: #;
|
||||
--colorftbodylight: #;
|
||||
--colorftbodydark: #;
|
||||
--fontbody: "";
|
||||
--fonttitle: "";
|
||||
--fontsizeh1: px;
|
||||
--fontsizeh2: px;
|
||||
--fontsizeh3: px;
|
||||
--fontsizeh4: px;
|
||||
|
||||
--colorbgbodylight-darker: #;
|
||||
--colorfttitlelight-darker: #;
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
/* Puis sur classer l'ensemble de la feuille de style */
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
name: Ninedark
|
||||
author: Arnaud Fornerot
|
||||
version: 1.0
|
After Width: | Height: | Size: 31 KiB |
|
@ -0,0 +1,44 @@
|
|||
:root{
|
||||
--colorbgbodydark: #2e3131;
|
||||
--colorfttitlelight: #2e3131;
|
||||
--colorfttitlelight-darker: #95a5a6;
|
||||
|
||||
/* Vous pouvez forcer l'ensemble de ces variables ou laisser la valeur par défaut
|
||||
--colorbgbodylight: #;
|
||||
--colorbgbodydark: #;
|
||||
--colorfttitlelight: #;
|
||||
--colorfttitledark: #;
|
||||
--colorftbodylight: #;
|
||||
--colorftbodydark: #;
|
||||
--fontbody: "";
|
||||
--fonttitle: "";
|
||||
--fontsizeh1: px;
|
||||
--fontsizeh2: px;
|
||||
--fontsizeh3: px;
|
||||
--fontsizeh4: px;
|
||||
|
||||
--colorbgbodylight-darker: #;
|
||||
--colorfttitlelight-darker: #;
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
/* Puis sur classer l'ensemble de la feuille de style */
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
name: Ninegray
|
||||
author: Arnaud Fornerot
|
||||
version: 1.0
|
After Width: | Height: | Size: 32 KiB |
|
@ -0,0 +1,43 @@
|
|||
:root{
|
||||
--colorbgbodydark: #6c7a89;
|
||||
--colorfttitlelight: #6c7a89;
|
||||
|
||||
/* Vous pouvez forcer l'ensemble de ces variables ou laisser la valeur par défaut
|
||||
--colorbgbodylight: #;
|
||||
--colorbgbodydark: #;
|
||||
--colorfttitlelight: #;
|
||||
--colorfttitledark: #;
|
||||
--colorftbodylight: #;
|
||||
--colorftbodydark: #;
|
||||
--fontbody: "";
|
||||
--fonttitle: "";
|
||||
--fontsizeh1: px;
|
||||
--fontsizeh2: px;
|
||||
--fontsizeh3: px;
|
||||
--fontsizeh4: px;
|
||||
|
||||
--colorbgbodylight-darker: #;
|
||||
--colorfttitlelight-darker: #;
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
/* Puis sur classer l'ensemble de la feuille de style */
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
name: Ninegreen
|
||||
author: Arnaud Fornerot
|
||||
version: 1.0
|
After Width: | Height: | Size: 25 KiB |
|
@ -0,0 +1,43 @@
|
|||
:root{
|
||||
--colorbgbodydark: #1e824c;
|
||||
--colorfttitlelight: #1e824c;
|
||||
|
||||
/* Vous pouvez forcer l'ensemble de ces variables ou laisser la valeur par défaut
|
||||
--colorbgbodylight: #;
|
||||
--colorbgbodydark: #;
|
||||
--colorfttitlelight: #;
|
||||
--colorfttitledark: #;
|
||||
--colorftbodylight: #;
|
||||
--colorftbodydark: #;
|
||||
--fontbody: "";
|
||||
--fonttitle: "";
|
||||
--fontsizeh1: px;
|
||||
--fontsizeh2: px;
|
||||
--fontsizeh3: px;
|
||||
--fontsizeh4: px;
|
||||
|
||||
--colorbgbodylight-darker: #;
|
||||
--colorfttitlelight-darker: #;
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
/* Puis sur classer l'ensemble de la feuille de style */
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
name: Nineorange
|
||||
author: Arnaud Fornerot
|
||||
version: 1.0
|
After Width: | Height: | Size: 35 KiB |
|
@ -0,0 +1,43 @@
|
|||
:root{
|
||||
--colorbgbodydark: #f15a22;
|
||||
--colorfttitlelight: #f15a22;
|
||||
|
||||
/* Vous pouvez forcer l'ensemble de ces variables ou laisser la valeur par défaut
|
||||
--colorbgbodylight: #;
|
||||
--colorbgbodydark: #;
|
||||
--colorfttitlelight: #;
|
||||
--colorfttitledark: #;
|
||||
--colorftbodylight: #;
|
||||
--colorftbodydark: #;
|
||||
--fontbody: "";
|
||||
--fonttitle: "";
|
||||
--fontsizeh1: px;
|
||||
--fontsizeh2: px;
|
||||
--fontsizeh3: px;
|
||||
--fontsizeh4: px;
|
||||
|
||||
--colorbgbodylight-darker: #;
|
||||
--colorfttitlelight-darker: #;
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
/* Puis sur classer l'ensemble de la feuille de style */
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
name: Ninered
|
||||
author: Arnaud Fornerot
|
||||
version: 1.0
|
After Width: | Height: | Size: 23 KiB |
|
@ -0,0 +1,43 @@
|
|||
:root{
|
||||
--colorbgbodydark: #96281b;
|
||||
--colorfttitlelight: #96281b;
|
||||
|
||||
/* Vous pouvez forcer l'ensemble de ces variables ou laisser la valeur par défaut
|
||||
--colorbgbodylight: #;
|
||||
--colorbgbodydark: #;
|
||||
--colorfttitlelight: #;
|
||||
--colorfttitledark: #;
|
||||
--colorftbodylight: #;
|
||||
--colorftbodydark: #;
|
||||
--fontbody: "";
|
||||
--fonttitle: "";
|
||||
--fontsizeh1: px;
|
||||
--fontsizeh2: px;
|
||||
--fontsizeh3: px;
|
||||
--fontsizeh4: px;
|
||||
|
||||
--colorbgbodylight-darker: #;
|
||||
--colorfttitlelight-darker: #;
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
/* Puis sur classer l'ensemble de la feuille de style */
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
name: Nineyellow
|
||||
author: Arnaud Fornerot
|
||||
version: 1.0
|
After Width: | Height: | Size: 31 KiB |
|
@ -0,0 +1,43 @@
|
|||
:root{
|
||||
--colorbgbodydark: #f7ca18;
|
||||
--colorfttitlelight: #171717;
|
||||
|
||||
/* Vous pouvez forcer l'ensemble de ces variables ou laisser la valeur par défaut
|
||||
--colorbgbodylight: #;
|
||||
--colorbgbodydark: #;
|
||||
--colorfttitlelight: #;
|
||||
--colorfttitledark: #;
|
||||
--colorftbodylight: #;
|
||||
--colorftbodydark: #;
|
||||
--fontbody: "";
|
||||
--fonttitle: "";
|
||||
--fontsizeh1: px;
|
||||
--fontsizeh2: px;
|
||||
--fontsizeh3: px;
|
||||
--fontsizeh4: px;
|
||||
|
||||
--colorbgbodylight-darker: #;
|
||||
--colorfttitlelight-darker: #;
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
/* Puis sur classer l'ensemble de la feuille de style */
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -52,6 +52,11 @@ CAS_LASTNAME=lastname
|
|||
CAS_FIRSTNAME=firstname
|
||||
|
||||
|
||||
# WEBSOCKET
|
||||
WSS_USE=0
|
||||
WSS_PORT=5576
|
||||
|
||||
|
||||
# Proxy
|
||||
PROXY_USE=0
|
||||
PROXY_HOST=
|
||||
|
|
|
@ -6,12 +6,15 @@ cd ${DIR}
|
|||
cd ..
|
||||
DIR=$(pwd)
|
||||
|
||||
# Mise en place du fichier d'environnement model
|
||||
yes 2>/dev/null | cp $DIR/scripts/.env.model $DIR/.env
|
||||
|
||||
# Import des env
|
||||
. $DIR/.env
|
||||
. $DIR/.env.local
|
||||
|
||||
# Déclaration d'un proxy
|
||||
if [[ "$PROXY_USE"=="1" ]]
|
||||
if [[ "$PROXY_USE" == "1" ]]
|
||||
then
|
||||
export HTTP_PROXY="$PROXY_HOST:$PROXY_PORT"
|
||||
export HTTPS_PROXY="$PROXY_HOST:$PROXY_PORT"
|
||||
|
@ -23,9 +26,6 @@ then
|
|||
find $DIR/var/log -mindepth 1 -mtime +7 -delete
|
||||
fi
|
||||
|
||||
# Mise en place du fichier d'environnement model
|
||||
yes 2>/dev/null | cp $DIR/scripts/.env.model $DIR/.env
|
||||
|
||||
# Installation des dépendances composer
|
||||
echo COMPOSER = Install
|
||||
composer install --quiet
|
||||
|
@ -34,6 +34,12 @@ php bin/console app:AppInit --env=prod
|
|||
php bin/console app:CronInit --env=prod
|
||||
php bin/console app:Script --env=prod
|
||||
|
||||
# Websocket
|
||||
if [[ "$WSS_USE" == "1" ]]
|
||||
then
|
||||
$DIR/scripts/websocket.sh restart
|
||||
fi
|
||||
|
||||
# Permissions
|
||||
echo PERMISSIONS
|
||||
./scripts/perm.sh www-data
|
||||
|
|
|
@ -0,0 +1,37 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Se positionner sur la racine du projet
|
||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
|
||||
cd ${DIR}
|
||||
cd ..
|
||||
DIR=$(pwd)
|
||||
|
||||
# Import des env
|
||||
. $DIR/.env
|
||||
. $DIR/.env.local
|
||||
|
||||
# Déclaration d'un proxy
|
||||
if [[ "$WSS_USE" == "1" ]]
|
||||
then
|
||||
# Server Websocket
|
||||
if [[ "$1" != "restartifdown" ]]; then
|
||||
echo WEBSOCKET = STOP
|
||||
pid="$(pgrep -a -f app:Websocket| grep $APP_ALIAS)"
|
||||
if [ -n "${pid}" ]; then
|
||||
IFS=' ' read -r -a array <<< "$pid"
|
||||
kill -9 ${array[0]};
|
||||
fi
|
||||
fi
|
||||
|
||||
# Port LISTEN ?
|
||||
pid="$(pgrep -a -f app:Websocket| grep $APP_ALIAS)"
|
||||
restart="yes"
|
||||
if [ "$1" == "restartifdown" ] && [ -n "${pid}" ] ; then
|
||||
restart="no"
|
||||
fi
|
||||
|
||||
if [ "$restart" == "yes" ] && [ "$1" != "stop" ] ; then
|
||||
echo WEBSOCKET = START
|
||||
bin/console app:Websocket --name $APP_ALIAS & disown
|
||||
fi
|
||||
fi
|
|
@ -9,6 +9,7 @@ use Symfony\Component\DependencyInjection\ContainerInterface;
|
|||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use Symfony\Component\Filesystem\Filesystem;
|
||||
use Symfony\Component\Console\Input\ArrayInput;
|
||||
use Ramsey\Uuid\Uuid;
|
||||
|
||||
use Doctrine\ORM\Mapping\ClassMetadata;
|
||||
use Doctrine\ORM\Id\AssignedGenerator;
|
||||
|
@ -66,6 +67,7 @@ class AppInitCommand extends Command
|
|||
"appname", // id
|
||||
"Titre de votre site", // title
|
||||
"", // value
|
||||
"", // defalut
|
||||
"string", // type,
|
||||
true, // visible
|
||||
true, // changeable
|
||||
|
@ -80,6 +82,7 @@ class AppInitCommand extends Command
|
|||
"appsubname", // id
|
||||
"Sous-titre de votre site", // title
|
||||
"", // value
|
||||
"", // defalut
|
||||
"string", // type,
|
||||
true, // visible
|
||||
true, // changeable
|
||||
|
@ -94,6 +97,7 @@ class AppInitCommand extends Command
|
|||
"appdescription", // id
|
||||
"Description de votre site", // title
|
||||
"", // value
|
||||
"", // defalut
|
||||
"editor", // type,
|
||||
true, // visible
|
||||
true, // changeable
|
||||
|
@ -102,6 +106,22 @@ class AppInitCommand extends Command
|
|||
"Description de votre site"
|
||||
);
|
||||
|
||||
$this->insertConfig(
|
||||
100, // order
|
||||
"site", // category
|
||||
"apptheme", // id
|
||||
"Thème de votre site", // title
|
||||
"", // value
|
||||
"", // defalut
|
||||
"string", // type,
|
||||
false, // visible
|
||||
true, // changeable
|
||||
false, // required
|
||||
"", // grouped
|
||||
"Thème de votre site"
|
||||
);
|
||||
|
||||
|
||||
// colorbgbody = Couleur des fonds de page
|
||||
$this->insertConfig(
|
||||
1, // order
|
||||
|
@ -109,6 +129,7 @@ class AppInitCommand extends Command
|
|||
"colorbgbodydark", // id
|
||||
"Couleur de fond fonçée", // title
|
||||
"", // value
|
||||
"#2574a9", // defalut
|
||||
"color", // type,
|
||||
true, // visible
|
||||
true, // changeable
|
||||
|
@ -123,6 +144,7 @@ class AppInitCommand extends Command
|
|||
"colorbgbodylight", // id
|
||||
"Couleur de fond claire", // title
|
||||
"", // value
|
||||
"#ffffff", // defalut
|
||||
"color", // type,
|
||||
true, // visible
|
||||
true, // changeable
|
||||
|
@ -138,6 +160,7 @@ class AppInitCommand extends Command
|
|||
"colorfttitledark", // id
|
||||
"Couleur des titres sur fond fonçé", // title
|
||||
"", // value
|
||||
"#ffffff", // defalut
|
||||
"color", // type,
|
||||
true, // visible
|
||||
true, // changeable
|
||||
|
@ -152,6 +175,7 @@ class AppInitCommand extends Command
|
|||
"colorfttitlelight", // id
|
||||
"Couleur des titres sur fond claire", // title
|
||||
"", // value
|
||||
"#2574a9", // defalut
|
||||
"color", // type,
|
||||
true, // visible
|
||||
true, // changeable
|
||||
|
@ -167,6 +191,7 @@ class AppInitCommand extends Command
|
|||
"colorftbodydark", // id
|
||||
"Couleur de la police sur fond fonçé", // title
|
||||
"", // value
|
||||
"#ffffff", // defalut
|
||||
"color", // type,
|
||||
true, // visible
|
||||
true, // changeable
|
||||
|
@ -181,6 +206,7 @@ class AppInitCommand extends Command
|
|||
"colorftbodylight", // id
|
||||
"Couleur de la police sur fond claire", // title
|
||||
"", // value
|
||||
"#343a40", // defalut
|
||||
"color", // type,
|
||||
true, // visible
|
||||
true, // changeable
|
||||
|
@ -196,6 +222,7 @@ class AppInitCommand extends Command
|
|||
"fonttitle", // id
|
||||
"Police pour les titres", // title
|
||||
"", // value
|
||||
"FredokaOne-Regular", // defalut
|
||||
"font", // type,
|
||||
true, // visible
|
||||
true, // changeable
|
||||
|
@ -210,6 +237,7 @@ class AppInitCommand extends Command
|
|||
"fontbody", // id
|
||||
"Police principale", // title
|
||||
"", // value
|
||||
"Roboto-Regular", // defalut
|
||||
"font", // type,
|
||||
true, // visible
|
||||
true, // changeable
|
||||
|
@ -218,6 +246,66 @@ class AppInitCommand extends Command
|
|||
"Nom de la police principale"
|
||||
);
|
||||
|
||||
$this->insertConfig(
|
||||
3, // order
|
||||
"font", // category
|
||||
"fontsizeh1", // id
|
||||
"Taille des titres h1", // title
|
||||
"", // value
|
||||
"40", // defalut
|
||||
"integer", // type,
|
||||
true, // visible
|
||||
true, // changeable
|
||||
false, // required
|
||||
"", // grouped
|
||||
"Taille des titres h1 en px"
|
||||
);
|
||||
|
||||
$this->insertConfig(
|
||||
4, // order
|
||||
"font", // category
|
||||
"fontsizeh2", // id
|
||||
"Taille des titres h2", // title
|
||||
"", // value
|
||||
"32", // defalut
|
||||
"integer", // type,
|
||||
true, // visible
|
||||
true, // changeable
|
||||
false, // required
|
||||
"", // grouped
|
||||
"Taille des titres h2 en px"
|
||||
);
|
||||
|
||||
$this->insertConfig(
|
||||
5, // order
|
||||
"font", // category
|
||||
"fontsizeh3", // id
|
||||
"Taille des titres h3", // title
|
||||
"", // value
|
||||
"28", // defalut
|
||||
"integer", // type,
|
||||
true, // visible
|
||||
true, // changeable
|
||||
false, // required
|
||||
"", // grouped
|
||||
"Taille des titres h3 en px"
|
||||
);
|
||||
|
||||
$this->insertConfig(
|
||||
6, // order
|
||||
"font", // category
|
||||
"fontsizeh4", // id
|
||||
"Taille des titres h4", // title
|
||||
"", // value
|
||||
"24", // defalut
|
||||
"integer", // type,
|
||||
true, // visible
|
||||
true, // changeable
|
||||
false, // required
|
||||
"", // grouped
|
||||
"Taille des titres h4 en px"
|
||||
);
|
||||
|
||||
// logo =
|
||||
$this->insertConfig(
|
||||
1, // order
|
||||
|
@ -225,6 +313,7 @@ class AppInitCommand extends Command
|
|||
"logodark", // id
|
||||
"Logo sur fond fonçé", // title
|
||||
"", // value
|
||||
"", // defalut
|
||||
"logo", // type,
|
||||
true, // visible
|
||||
true, // changeable
|
||||
|
@ -239,6 +328,7 @@ class AppInitCommand extends Command
|
|||
"logolight", // id
|
||||
"Logo sur fond clair", // title
|
||||
"", // value
|
||||
"", // defalut
|
||||
"logo", // type,
|
||||
true, // visible
|
||||
true, // changeable
|
||||
|
@ -265,6 +355,8 @@ class AppInitCommand extends Command
|
|||
if(!$entity) {
|
||||
$this->writelnred('Création du compte admin par défaut avec password admin - Veuillez modifier votre password admin après connexion');
|
||||
$entity = new User;
|
||||
$key = Uuid::uuid4();
|
||||
|
||||
$entity->setId(0);
|
||||
$entity->setUsername("admin");
|
||||
$entity->setPassword("admin");
|
||||
|
@ -273,6 +365,7 @@ class AppInitCommand extends Command
|
|||
$entity->setEmail($this->appmailnoreply);
|
||||
$entity->setRoles(["ROLE_ADMIN"]);
|
||||
$entity->setAvatar("admin.jpg");
|
||||
$entity->setApiKey($key);
|
||||
$this->em->persist($entity);
|
||||
}
|
||||
|
||||
|
@ -281,7 +374,7 @@ class AppInitCommand extends Command
|
|||
|
||||
}
|
||||
|
||||
protected function insertConfig($order,$category,$id,$title,$value,$type,$visible,$changeable,$required,$grouped,$help) {
|
||||
protected function insertConfig($order,$category,$id,$title,$value,$default,$type,$visible,$changeable,$required,$grouped,$help) {
|
||||
$entity=$this->em->getRepository("App:Config")->find($id);
|
||||
if(!$entity) {
|
||||
$entity= new Config();
|
||||
|
@ -289,6 +382,7 @@ class AppInitCommand extends Command
|
|||
$entity->setValue($value);
|
||||
}
|
||||
|
||||
$entity->setDefault($default);
|
||||
$entity->setCategory($category);
|
||||
$entity->setOrder($order);
|
||||
$entity->setTitle($title);
|
||||
|
|
|
@ -3,15 +3,11 @@
|
|||
namespace App\Command;
|
||||
use Symfony\Component\Console\Command\Command;
|
||||
use Symfony\Component\Console\Input\InputInterface;
|
||||
use Symfony\Component\Console\Input\InputArgument;
|
||||
use Symfony\Component\Console\Output\OutputInterface;
|
||||
use Symfony\Component\DependencyInjection\ContainerInterface;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use Symfony\Component\Filesystem\Filesystem;
|
||||
use Symfony\Component\Console\Input\ArrayInput;
|
||||
|
||||
use Doctrine\ORM\Mapping\ClassMetadata;
|
||||
use Doctrine\ORM\Id\AssignedGenerator;
|
||||
use Ramsey\Uuid\Uuid;
|
||||
|
||||
use App\Entity\Script;
|
||||
|
||||
|
@ -49,7 +45,7 @@ class ScriptCommand extends Command
|
|||
|
||||
$output->writeln('APP = Scripts');
|
||||
|
||||
//$this->callscript("test");
|
||||
$this->callscript("addapikey");
|
||||
|
||||
$output->writeln('');
|
||||
|
||||
|
@ -61,7 +57,7 @@ class ScriptCommand extends Command
|
|||
private function callscript($name) {
|
||||
$script=$this->em->getRepository("App:Script")->findOneBy(["name"=>$name]);
|
||||
if(!$script) {
|
||||
$this->writelnred("== SCRIPT = ".$name);
|
||||
//$this->writelnred("== SCRIPT = ".$name);
|
||||
$this->$name();
|
||||
|
||||
$script=new Script();
|
||||
|
@ -72,8 +68,14 @@ class ScriptCommand extends Command
|
|||
}
|
||||
}
|
||||
|
||||
private function test() {
|
||||
$this->writeln("TEST");
|
||||
private function addapikey() {
|
||||
$users=$this->em->getRepository("App:User")->findBy(["apikey"=>null]);
|
||||
foreach($users as $user) {
|
||||
$key = Uuid::uuid4();
|
||||
$user->setApikey($key);
|
||||
$this->em->persist($user);
|
||||
$this->em->flush();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -10,6 +10,7 @@ use Doctrine\ORM\EntityManagerInterface;
|
|||
use Symfony\Component\Filesystem\Filesystem;
|
||||
use Symfony\Component\Security\Core\Encoder\EncoderFactory;
|
||||
use Symfony\Component\Security\Core\Encoder\MessageDigestPasswordEncoder;
|
||||
use Ramsey\Uuid\Uuid;
|
||||
|
||||
use App\Entity\Group;
|
||||
use App\Entity\User;
|
||||
|
@ -517,9 +518,11 @@ class SynchroUsersCommand extends Command
|
|||
if(!$simulate) {
|
||||
if(!$user) {
|
||||
$user = new User();
|
||||
$key = Uuid::uuid4();
|
||||
|
||||
$user->setUsername($apiuser->username);
|
||||
$user->setPassword("NOPASSWORD");
|
||||
$user->setApiKey($key);
|
||||
}
|
||||
|
||||
$user->setLastname($apiuser->lastname);
|
||||
|
@ -678,12 +681,14 @@ class SynchroUsersCommand extends Command
|
|||
|
||||
protected function addUser($username,$firstname,$lastname,$email,$usersadmin) {
|
||||
$user = new User();
|
||||
$key = Uuid::uuid4();
|
||||
|
||||
$user->setUsername($username);
|
||||
$user->setPassword("NOPASSWORD");
|
||||
$user->setLastname($lastname);
|
||||
$user->setFirstname($firstname);
|
||||
$user->setEmail($email);
|
||||
$user->setApiKey($key);
|
||||
|
||||
// Definition du role
|
||||
if(in_array($username,$usersadmin))
|
||||
|
|
|
@ -0,0 +1,53 @@
|
|||
<?php
|
||||
namespace App\Command;
|
||||
|
||||
use Symfony\Component\DependencyInjection\ContainerInterface;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use Ratchet\Http\HttpServer;
|
||||
use Ratchet\Server\IoServer;
|
||||
use Ratchet\WebSocket\WsServer;
|
||||
use App\Websocket\MessageHandler;
|
||||
use Symfony\Component\Console\Command\Command;
|
||||
use Symfony\Component\Console\Input\InputInterface;
|
||||
use Symfony\Component\Console\Output\OutputInterface;
|
||||
use Symfony\Component\Console\Input\InputOption;
|
||||
|
||||
class WebsocketServerCommand extends Command
|
||||
{
|
||||
private $container;
|
||||
private $em;
|
||||
|
||||
public function __construct(ContainerInterface $container,EntityManagerInterface $em)
|
||||
{
|
||||
parent::__construct();
|
||||
$this->container = $container;
|
||||
$this->em = $em;
|
||||
}
|
||||
|
||||
protected function configure()
|
||||
{
|
||||
$this
|
||||
->setName('app:Websocket')
|
||||
->setDescription('Lauch Websocket server')
|
||||
->setHelp('Lauch Websocket server')
|
||||
->addOption('name',null,InputOption::VALUE_REQUIRED,'Websocket server name',null)
|
||||
;
|
||||
}
|
||||
|
||||
protected function execute(InputInterface $input, OutputInterface $output)
|
||||
{
|
||||
$port = $this->container->getParameter('wssport');
|
||||
|
||||
$output->writeln("Starting server on port " . $port);
|
||||
$server = IoServer::factory(
|
||||
new HttpServer(
|
||||
new WsServer(
|
||||
new MessageHandler($this->container,$this->em)
|
||||
)
|
||||
),
|
||||
$port
|
||||
);
|
||||
$server->run();
|
||||
return 0;
|
||||
}
|
||||
}
|
|
@ -7,9 +7,18 @@ use Symfony\Component\HttpFoundation\Request;
|
|||
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
|
||||
use Symfony\Component\Filesystem\Filesystem;
|
||||
use Symfony\Component\HttpKernel\KernelInterface;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
|
||||
class CropController extends AbstractController
|
||||
{
|
||||
private $appKernel;
|
||||
|
||||
public function __construct(KernelInterface $appKernel)
|
||||
{
|
||||
$this->appKernel = $appKernel;
|
||||
}
|
||||
|
||||
// Etape 01 - Téléchargement de l'image
|
||||
public function crop01($type,$reportinput)
|
||||
{
|
||||
|
@ -70,7 +79,7 @@ class CropController extends AbstractController
|
|||
// Construction du formulaire
|
||||
$submited=false;
|
||||
$form = $this->createFormBuilder()
|
||||
->add('submit',SubmitType::class,array("label" => "Valider","attr" => array("class" => "btn btn-success","onclick" => "reportThumb()")))
|
||||
->add('submit',SubmitType::class,array("label" => "Valider","attr" => array("class" => "btn btn-success")))
|
||||
->add('x',HiddenType::class)
|
||||
->add('y',HiddenType::class)
|
||||
->add('w',HiddenType::class)
|
||||
|
@ -105,6 +114,32 @@ class CropController extends AbstractController
|
|||
]);
|
||||
}
|
||||
|
||||
// Upload ckeditor
|
||||
public function ckupload(Request $request) {
|
||||
// Fichier temporaire uploadé
|
||||
$tmpfile = $request->files->get('upload');
|
||||
$extention = $tmpfile->getClientOriginalExtension();
|
||||
|
||||
// Répertoire de Destination
|
||||
$fs = new Filesystem();
|
||||
$rootdir = $this->appKernel->getProjectDir()."/public";
|
||||
$fs->mkdir($rootdir."/uploads/ckeditor");
|
||||
|
||||
// Fichier cible
|
||||
$targetName = uniqid().".".$extention;
|
||||
$targetFile = $rootdir."/uploads/ckeditor/".$targetName;
|
||||
$targetUrl = "/".$this->getParameter('appAlias')."/uploads/ckeditor/".$targetName;
|
||||
$message = "";
|
||||
|
||||
move_uploaded_file($tmpfile,$targetFile);
|
||||
|
||||
$output["uploaded"]=1;
|
||||
$output["fileName"]=$targetName;
|
||||
$output["url"]=$targetUrl;
|
||||
|
||||
return new Response(json_encode($output));
|
||||
}
|
||||
|
||||
// Calcul de la hauteur
|
||||
protected function getHeight($image) {
|
||||
$size = getimagesize($image);
|
||||
|
|
|
@ -11,7 +11,7 @@ class HomeController extends AbstractController
|
|||
{
|
||||
public function home()
|
||||
{
|
||||
return $this->redirectToRoute('app_user_survey');
|
||||
return $this->redirectToRoute('app_survey');
|
||||
}
|
||||
|
||||
public function admin()
|
||||
|
|
|
@ -12,6 +12,7 @@ use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
|
|||
use Symfony\Component\Security\Http\Event\InteractiveLoginEvent;
|
||||
use Symfony\Component\EventDispatcher\EventDispatcher;
|
||||
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
|
||||
use Ramsey\Uuid\Uuid;
|
||||
|
||||
class SecurityController extends AbstractController
|
||||
{
|
||||
|
@ -84,11 +85,13 @@ class SecurityController extends AbstractController
|
|||
|
||||
if (!$exists) {
|
||||
$user = new User();
|
||||
$key = Uuid::uuid4();
|
||||
|
||||
$user->setUsername($username);
|
||||
$user->setLastname($lastname);
|
||||
$user->setFirstname($firstname);
|
||||
$user->setEmail($email);
|
||||
$user->setApiKey($key);
|
||||
|
||||
$user->setPassword("CASPWD-".$username);
|
||||
$user->setSalt("CASPWD-".$username);
|
||||
|
|
|
@ -20,6 +20,17 @@ use App\Form\SurveystatusType as SurveystatusType;
|
|||
|
||||
class SurveyController extends AbstractController
|
||||
{
|
||||
public function list()
|
||||
{
|
||||
$guests=$this->getUser()->getGuests();
|
||||
|
||||
return $this->render('Survey/survey.html.twig', [
|
||||
'useheader' => true,
|
||||
'usesidebar' => false,
|
||||
'guests' => $guests,
|
||||
]);
|
||||
}
|
||||
|
||||
public function submit(CreateSurveyFlow $flow)
|
||||
{
|
||||
$em = $this->getDoctrine()->getManager();
|
||||
|
|
|
@ -0,0 +1,67 @@
|
|||
<?
|
||||
namespace App\Controller;
|
||||
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Form\FormError;
|
||||
use Symfony\Component\Finder\Finder;
|
||||
use Symfony\Component\Yaml\Yaml;
|
||||
|
||||
use App\Entity\Config as Entity;
|
||||
use App\Form\ConfigType as Form;
|
||||
|
||||
class ThemeController extends AbstractController
|
||||
{
|
||||
private $data = "config";
|
||||
private $route = "app_config";
|
||||
private $render = "Config/";
|
||||
private $entity = "App:Config";
|
||||
|
||||
public function list(Request $request)
|
||||
{
|
||||
$session=$this->get('session');
|
||||
$finder = new Finder();
|
||||
|
||||
$dir = $this->getParameter('kernel.project_dir')."/public/themes";
|
||||
$url="/".$this->getParameter('appAlias')."/themes";
|
||||
|
||||
$finder->in($dir)->directories()->depth('== 0');
|
||||
$themes=[];
|
||||
$themes[""]["dir"]="";
|
||||
$themes[""]["url"]=$url;
|
||||
$themes[""]["name"]="Thème par défaut";
|
||||
|
||||
foreach ($finder as $file) {
|
||||
$key=$file->getRelativePathname();
|
||||
$themes[$key]["dir"]=$key;
|
||||
$themes[$key]["url"]=$url."/".$key;
|
||||
|
||||
$yml=Yaml::parseFile($dir.'/'.$key.'/info.yml');
|
||||
$themes[$key]["name"]=$yml["name"];
|
||||
}
|
||||
|
||||
$current=$session->get("apptheme");
|
||||
$currentheme=$themes[$current];
|
||||
unset($themes[$current]);
|
||||
|
||||
return $this->render('Theme/list.html.twig',[
|
||||
'useheader' => true,
|
||||
'usesidebar' => true,
|
||||
'currentheme' => $currentheme,
|
||||
'themes' => $themes
|
||||
]);
|
||||
}
|
||||
|
||||
public function select(Request $request,$name)
|
||||
{
|
||||
$em = $this->getDoctrine()->getManager();
|
||||
$config=$em->getRepository("App:Config")->findoneBy(["id"=>"apptheme"]);
|
||||
$config->setValue($name);
|
||||
|
||||
$em->persist($config);
|
||||
$em->flush();
|
||||
|
||||
return $this->redirectToRoute("app_theme");
|
||||
}
|
||||
}
|
|
@ -5,7 +5,7 @@ namespace App\Controller;
|
|||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Form\FormError;
|
||||
use Ramsey\Uuid\Uuid;
|
||||
|
||||
use App\Entity\User as Entity;
|
||||
use App\Form\UserType as Form;
|
||||
|
@ -37,7 +37,9 @@ class UserController extends AbstractController
|
|||
// Initialisation de l'enregistrement
|
||||
$em = $this->getDoctrine()->getManager();
|
||||
$data = new Entity();
|
||||
$key = Uuid::uuid4();
|
||||
$data->setAvatar("noavatar.png");
|
||||
$data->setApiKey($key);
|
||||
|
||||
// Création du formulaire
|
||||
$form = $this->createForm(Form::class,$data,array("mode"=>"submit","appAuth"=>$this->getParameter("appAuth"),"appMasteridentity"=>$this->getParameter("appMasteridentity")));
|
||||
|
@ -229,22 +231,6 @@ class UserController extends AbstractController
|
|||
return $response;
|
||||
}
|
||||
|
||||
/**
|
||||
* Affiche la page d'accueil d'un utilisateur
|
||||
* - La liste de ses sondages
|
||||
* - La liste des sondages auxquels il participe
|
||||
*/
|
||||
public function survey()
|
||||
{
|
||||
$guests=$this->getUser()->getGuests();
|
||||
|
||||
return $this->render($this->render.'survey.html.twig', [
|
||||
'useheader' => true,
|
||||
'usesidebar' => false,
|
||||
'guests' => $guests,
|
||||
]);
|
||||
}
|
||||
|
||||
protected function getErrorForm($id,$form,$request,$data,$mode) {
|
||||
if ($form->get('submit')->isClicked()&&$mode=="delete") {
|
||||
}
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
<?php
|
||||
|
||||
namespace App\Controller;
|
||||
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
|
||||
class WebsocketController extends AbstractController
|
||||
{
|
||||
public function sample()
|
||||
{
|
||||
return $this->render('Websocket/sample.html.twig');
|
||||
}
|
||||
}
|
|
@ -27,6 +27,11 @@ class Config
|
|||
*/
|
||||
protected $value;
|
||||
|
||||
/**
|
||||
* @ORM\Column(name="defaultvalue", type="text")
|
||||
*/
|
||||
protected $default;
|
||||
|
||||
/**
|
||||
* @ORM\Column(name="roworder", type="string")
|
||||
*/
|
||||
|
@ -199,4 +204,16 @@ class Config
|
|||
return $this;
|
||||
}
|
||||
|
||||
public function getDefault(): ?string
|
||||
{
|
||||
return $this->default;
|
||||
}
|
||||
|
||||
public function setDefault(string $default): self
|
||||
{
|
||||
$this->default = $default;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -103,7 +103,8 @@ class UserType extends AbstractType
|
|||
$builder->add('apikey',
|
||||
TextType::class, [
|
||||
"label" =>"Clé Accès",
|
||||
"required" => false
|
||||
"required" => true,
|
||||
"disabled" => true,
|
||||
]
|
||||
);
|
||||
|
||||
|
|
|
@ -30,35 +30,52 @@
|
|||
|
||||
// Valeur par defaut colorbgbodydark = #343a40
|
||||
if($this->session->get("colorbgbodydark")=="")
|
||||
$this->session->set("colorbgbodydark", '#343a40');
|
||||
$this->session->set("colorbgbodydark", $this->em->getRepository("App:Config")->find("colorbgbodydark")->getDefault());
|
||||
|
||||
// Valeur par defaut colorbgbodydark = #ffffff
|
||||
if($this->session->get("colorbgbodylight")=="")
|
||||
$this->session->set("colorbgbodylight", '#ffffff');
|
||||
$this->session->set("colorbgbodylight",$this->em->getRepository("App:Config")->find("colorbgbodylight")->getDefault());
|
||||
|
||||
// Valeur par defaut colorfttitledark = #ffffff
|
||||
if($this->session->get("colorfttitledark")=="")
|
||||
$this->session->set("colorfttitledark", '#ffffff');
|
||||
$this->session->set("colorfttitledark", $this->em->getRepository("App:Config")->find("colorfttitledark")->getDefault());
|
||||
|
||||
// Valeur par defaut colorfttitlelight = #343a40
|
||||
if($this->session->get("colorfttitlelight")=="")
|
||||
$this->session->set("colorfttitlelight", '#343a40');
|
||||
$this->session->set("colorfttitlelight", $this->em->getRepository("App:Config")->find("colorfttitlelight")->getDefault());
|
||||
|
||||
// Valeur par defaut colorftbodydark = #ffffff
|
||||
if($this->session->get("colorftbodydark")=="")
|
||||
$this->session->set("colorftbodydark", '#ffffff');
|
||||
$this->session->set("colorftbodydark", $this->em->getRepository("App:Config")->find("colorftbodydark")->getDefault());
|
||||
|
||||
// Valeur par defaut colorftbodylight = #343a40
|
||||
if($this->session->get("colorftbodylight")=="")
|
||||
$this->session->set("colorftbodylight", '#343a40');
|
||||
$this->session->set("colorftbodylight", $this->em->getRepository("App:Config")->find("colorftbodylight")->getDefault());
|
||||
|
||||
// Valeur par defaut fonttitle = FredokaOne-Regular
|
||||
if($this->session->get("fonttitle")=="")
|
||||
$this->session->set("fonttitle", 'FredokaOne-Regular');
|
||||
$this->session->set("fonttitle", $this->em->getRepository("App:Config")->find("fonttitle")->getDefault());
|
||||
|
||||
// Valeur par defaut fontbody = Roboto-Regular
|
||||
if($this->session->get("fontbody")=="")
|
||||
$this->session->set("fontbody", 'Roboto-Regular');
|
||||
$this->session->set("fontbody", $this->em->getRepository("App:Config")->find("fontbody")->getDefault());
|
||||
|
||||
// Valeur par defaut fontsizeh1 = 40
|
||||
if($this->session->get("fontsizeh1")=="")
|
||||
$this->session->set("fontsizeh1", $this->em->getRepository("App:Config")->find("fontsizeh1")->getDefault());
|
||||
|
||||
// Valeur par defaut fontsizeh2 = 32
|
||||
if($this->session->get("fontsizeh2")=="")
|
||||
$this->session->set("fontsizeh2", $this->em->getRepository("App:Config")->find("fontsizeh2")->getDefault());
|
||||
|
||||
// Valeur par defaut fontsizeh3 = 28
|
||||
if($this->session->get("fontsizeh3")=="")
|
||||
$this->session->set("fontsizeh3", $this->em->getRepository("App:Config")->find("fontsizeh3")->getDefault());
|
||||
|
||||
// Valeur par defaut fontsizeh4 = 24
|
||||
if($this->session->get("fontsizeh4")=="")
|
||||
$this->session->set("fontsizeh4", $this->em->getRepository("App:Config")->find("fontsizeh4")->getDefault());
|
||||
|
||||
|
||||
// Valeur par defaut logo
|
||||
if($this->session->get("logodark")==""&&$this->session->get("logolight")=="") {
|
||||
|
@ -69,5 +86,34 @@
|
|||
$this->session->set("logodark", $this->session->get("logolight"));
|
||||
elseif($this->session->get("logolight")=="")
|
||||
$this->session->set("logolight", $this->session->get("logodark"));
|
||||
|
||||
// Calcul couleur
|
||||
$this->session->set("colorbgbodylight-darker", $this->adjustBrightness($this->session->get("colorbgbodylight"),-10));
|
||||
$this->session->set("colorbgbodydark-darker", $this->adjustBrightness($this->session->get("colorbgbodydark"),-50));
|
||||
$this->session->set("colorfttitlelight-darker", $this->adjustBrightness($this->session->get("colorfttitlelight"),-50));
|
||||
|
||||
}
|
||||
|
||||
private function adjustBrightness($hex, $steps) {
|
||||
// Steps should be between -255 and 255. Negative = darker, positive = lighter
|
||||
$steps = max(-255, min(255, $steps));
|
||||
|
||||
// Normalize into a six character long hex string
|
||||
$hex = str_replace('#', '', $hex);
|
||||
if (strlen($hex) == 3) {
|
||||
$hex = str_repeat(substr($hex,0,1), 2).str_repeat(substr($hex,1,1), 2).str_repeat(substr($hex,2,1), 2);
|
||||
}
|
||||
|
||||
// Split into three parts: R, G and B
|
||||
$color_parts = str_split($hex, 2);
|
||||
$return = '';
|
||||
|
||||
foreach ($color_parts as $color) {
|
||||
$color = hexdec($color); // Convert to decimal
|
||||
$color = max(0,min(255,$color + $steps)); // Adjust color
|
||||
$return .= str_pad(dechex($color), 2, '0', STR_PAD_LEFT); // Make two char hex code
|
||||
}
|
||||
|
||||
return '#'.$return;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,141 @@
|
|||
<?php
|
||||
namespace App\Websocket;
|
||||
|
||||
use Exception;
|
||||
use Ratchet\ConnectionInterface;
|
||||
use Ratchet\MessageComponentInterface;
|
||||
use Symfony\Component\DependencyInjection\ContainerInterface;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use SplObjectStorage;
|
||||
|
||||
use App\Entity\Scrum;
|
||||
use App\Entity\Scrumcolumn;
|
||||
use App\Entity\Scrumwidget;
|
||||
|
||||
class MessageHandler implements MessageComponentInterface
|
||||
{
|
||||
protected $container;
|
||||
protected $em;
|
||||
|
||||
protected $clients;
|
||||
private $channels;
|
||||
private $channeltypes;
|
||||
private $channelkeys;
|
||||
private $userconns;
|
||||
private $userkeys;
|
||||
|
||||
public function __construct(ContainerInterface $container, EntityManagerInterface $em)
|
||||
{
|
||||
$this->container = $container;
|
||||
$this->em = $em;
|
||||
|
||||
$this->clients = new SplObjectStorage;
|
||||
$this->channels = [];
|
||||
$this->channeltypes = [];
|
||||
$this->channelkeys = [];
|
||||
$this->userconns = [];
|
||||
$this->userkeys = [];
|
||||
}
|
||||
|
||||
public function onOpen(ConnectionInterface $conn)
|
||||
{
|
||||
$this->clients->attach($conn);
|
||||
$this->userconns[$conn->resourceId] = $conn;
|
||||
}
|
||||
|
||||
public function onClose(ConnectionInterface $conn)
|
||||
{
|
||||
$data= new \stdClass;
|
||||
$data->command = "adead";
|
||||
|
||||
// Envoyer le message de deconnection
|
||||
if (isset($this->channels[$conn->resourceId])) {
|
||||
$this->sendMessage($conn,$data,"other");
|
||||
}
|
||||
|
||||
// Détacher
|
||||
$this->clients->detach($conn);
|
||||
unset($this->userconns[$conn->resourceId]);
|
||||
unset($this->userkeys[$conn->resourceId]);
|
||||
unset($this->channels[$conn->resourceId]);
|
||||
}
|
||||
|
||||
public function onError(ConnectionInterface $conn, Exception $e)
|
||||
{
|
||||
$conn->close();
|
||||
}
|
||||
|
||||
public function onMessage(ConnectionInterface $conn, $msg)
|
||||
{
|
||||
$data = json_decode($msg);
|
||||
|
||||
switch ($data->command) {
|
||||
case "subscribe":
|
||||
$this->channels[$conn->resourceId] = $data->channel;
|
||||
$this->channeltypes[$conn->resourceId] = $data->channeltype;
|
||||
$this->channelkeys[$conn->resourceId] = $data->channelkey;
|
||||
$this->userkeys[$conn->resourceId] = $data->userkey;
|
||||
break;
|
||||
|
||||
case "meto":
|
||||
if (isset($this->channels[$conn->resourceId])) {
|
||||
$this->sendMessage($conn,$data,"other");
|
||||
}
|
||||
break;
|
||||
|
||||
case "alive":
|
||||
if (isset($this->channels[$conn->resourceId])) {
|
||||
$this->sendMessage($conn,$data);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
if (isset($this->channels[$conn->resourceId])) {
|
||||
switch ($this->channeltypes[$conn->resourceId]) {
|
||||
//case "type": $this->onMessageYype($conn,$data); break;
|
||||
default: $this->sendMessage($conn,$data);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private function sendMessage(ConnectionInterface $conn, $data, $dest="all") {
|
||||
$target = $this->channels[$conn->resourceId];
|
||||
foreach ($this->channels as $id=>$channel) {
|
||||
if ($channel == $target) {
|
||||
// dest = all - tout le monde meme l'expediteur
|
||||
// dest = other - tout le monde sauf l'expedituer
|
||||
// dest = me - seumlement l'expediteur
|
||||
if($dest=="all"||($dest=="other"&&$id!=$conn->resourceId)||($dest=="me"&&$id==$conn->resourceId)) {
|
||||
// From
|
||||
$key= $this->userkeys[$conn->resourceId];
|
||||
$from=$this->em->getRepository("App:User")->findOneBy(["apikey"=>$key]);
|
||||
|
||||
// To
|
||||
$key= $this->userkeys[$id];
|
||||
$to=$this->em->getRepository("App:User")->findOneBy(["apikey"=>$key]);
|
||||
|
||||
// Send
|
||||
if($from && $to) {
|
||||
$data->from= new \stdClass;
|
||||
$data->from->id = $from->getId();
|
||||
$data->from->username = $from->getUsername();
|
||||
$data->from->displayname = $from->getDisplayname();
|
||||
$data->from->avatar = $this->getAvatar($from->getAvatar());
|
||||
|
||||
$data->log="== GET MSG from ".$data->from->username." to ".$to->getUsername()." = ".$data->command;
|
||||
$this->userconns[$id]->send(json_encode($data));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private function getAvatar($avatar) {
|
||||
if(stripos($avatar,"http")===0)
|
||||
return $avatar;
|
||||
else
|
||||
return "/".$this->container->getParameter("appAlias")."/uploads/avatar/".$avatar;
|
||||
}
|
||||
}
|
|
@ -2,6 +2,9 @@
|
|||
"brick/math": {
|
||||
"version": "0.9.1"
|
||||
},
|
||||
"cboden/ratchet": {
|
||||
"version": "v0.4.3"
|
||||
},
|
||||
"craue/formflow-bundle": {
|
||||
"version": "3.3.2"
|
||||
},
|
||||
|
@ -87,6 +90,9 @@
|
|||
"egulias/email-validator": {
|
||||
"version": "2.1.17"
|
||||
},
|
||||
"evenement/evenement": {
|
||||
"version": "v3.0.1"
|
||||
},
|
||||
"exsyst/swagger": {
|
||||
"version": "v0.4.1"
|
||||
},
|
||||
|
@ -114,6 +120,9 @@
|
|||
"config/packages/fos_rest.yaml"
|
||||
]
|
||||
},
|
||||
"guzzlehttp/psr7": {
|
||||
"version": "1.7.0"
|
||||
},
|
||||
"jasig/phpcas": {
|
||||
"version": "1.3.8"
|
||||
},
|
||||
|
@ -200,18 +209,48 @@
|
|||
"psr/event-dispatcher": {
|
||||
"version": "1.0.0"
|
||||
},
|
||||
"psr/http-message": {
|
||||
"version": "1.0.1"
|
||||
},
|
||||
"psr/link": {
|
||||
"version": "1.0.0"
|
||||
},
|
||||
"psr/log": {
|
||||
"version": "1.1.2"
|
||||
},
|
||||
"ralouphie/getallheaders": {
|
||||
"version": "3.0.3"
|
||||
},
|
||||
"ramsey/collection": {
|
||||
"version": "1.1.1"
|
||||
},
|
||||
"ramsey/uuid": {
|
||||
"version": "4.1.1"
|
||||
},
|
||||
"ratchet/rfc6455": {
|
||||
"version": "v0.3"
|
||||
},
|
||||
"react/cache": {
|
||||
"version": "v1.1.0"
|
||||
},
|
||||
"react/dns": {
|
||||
"version": "v1.4.0"
|
||||
},
|
||||
"react/event-loop": {
|
||||
"version": "v1.1.1"
|
||||
},
|
||||
"react/promise": {
|
||||
"version": "v2.8.0"
|
||||
},
|
||||
"react/promise-timer": {
|
||||
"version": "v1.6.0"
|
||||
},
|
||||
"react/socket": {
|
||||
"version": "v1.6.0"
|
||||
},
|
||||
"react/stream": {
|
||||
"version": "v1.1.1"
|
||||
},
|
||||
"sensio/framework-extra-bundle": {
|
||||
"version": "5.2",
|
||||
"recipe": {
|
||||
|
|
|
@ -66,12 +66,12 @@
|
|||
{% elseif config.type=="hero" %}
|
||||
<div style="margin:10px auto;">
|
||||
<img id="config_value_img" src="/{{ appAlias }}/uploads/hero/{{ config.value }}" style="width:100%;margin:auto;display:block;">
|
||||
<a class="btn btn-info" style="width:100%" onClick="ModalLoad('mymodallarge','Carrousel','{{ path('app_crop01', {"type": "hero", "reportinput": "config_value" }) }}');" title='Ajouter une Bannière'>Modifier</a>
|
||||
<a class="btn btn-info" style="width:100%" onClick="ModalLoad('mymodallarge','Carrousel','{{ path('app_crop01', {"type": "hero", "reportinput": "#config_value" }) }}');" title='Ajouter une Bannière'>Modifier</a>
|
||||
</div>
|
||||
{% elseif config.type=="image" %}
|
||||
<div style="margin:10px auto;">
|
||||
<img id="config_value_img" src="/{{ appAlias }}/uploads/hero/{{ config.value }}" style="width:100%;margin:auto;display:block;">
|
||||
<a class="btn btn-info" style="width:100%" onClick="ModalLoad('mymodallarge','Image','{{ path('app_crop01', {"type": "image", "reportinput": "config_value" }) }}');" title='Ajouter une Image'>Modifier</a>
|
||||
<a class="btn btn-info" style="width:100%" onClick="ModalLoad('mymodallarge','Image','{{ path('app_crop01', {"type": "image", "reportinput": "#config_value" }) }}');" title='Ajouter une Image'>Modifier</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
{{ form_row(form.help) }}
|
||||
|
|
|
@ -32,10 +32,10 @@
|
|||
{% set otherstyle = "" %}
|
||||
{% if config.id=='colorbgbodydark' %}
|
||||
{% set bgcolor = val %}
|
||||
{% set color = app.session.get('colorfttitledark') %}
|
||||
{% set color = app.session.get('colorftbodydark') %}
|
||||
{% elseif config.id=='colorbgbodylight' %}
|
||||
{% set bgcolor = val %}
|
||||
{% set color = app.session.get('colorfttitlelight') %}
|
||||
{% set color = app.session.get('colorftbodylight') %}
|
||||
{% elseif config.id=='colorfttitledark' %}
|
||||
{% set bgcolor = app.session.get('colorbgbodydark') %}
|
||||
{% set color = val %}
|
||||
|
@ -48,6 +48,9 @@
|
|||
{% elseif config.id=='colorftbodylight' %}
|
||||
{% set bgcolor = app.session.get('colorbgbodylight') %}
|
||||
{% set color = val %}
|
||||
{% elseif config.id=='fonttitle' %}
|
||||
{% set color = app.session.get('colorfttitlelight') %}
|
||||
{% set otherstyle = "font-family: "~val~";" %}
|
||||
{% elseif config.id=='logodark' %}
|
||||
{% set bgcolor = app.session.get('colorbgbodydark') %}
|
||||
{% set otherstyle = "text-align: center;" %}
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
|
||||
Dropzone.options.MyDropZone = {
|
||||
maxFiles: 1,
|
||||
acceptedMimeTypes: 'image/*',
|
||||
acceptedMimeTypes: 'image/jpeg,image/png',
|
||||
//renameFilename: false,
|
||||
success: function(file, response){
|
||||
$(location).attr('href',"{{ path('app_crop02', {"type": type, "reportinput": reportinput }) }}?file="+response["file"]);
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
{% endblock %}
|
||||
|
||||
{% block body %}
|
||||
{% if not submited %}
|
||||
{{ form_start(form) }}
|
||||
{{ form_widget(form.submit) }}
|
||||
<button class="btn btn-secondary" onClick="closeModal();">Annuler</button>
|
||||
|
@ -26,6 +27,7 @@
|
|||
</div>
|
||||
</div>
|
||||
{{ form_end(form) }}
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
|
||||
|
@ -73,8 +75,8 @@
|
|||
{% if reportinput == "refresh" %}
|
||||
window.parent.location.reload();
|
||||
{% elseif reportinput != "none" %}
|
||||
window.parent.$("#{{ reportinput }}").val("thumb_{{ file }}");
|
||||
window.parent.$("#{{ reportinput }}_img").attr("src","/{{ appAlias }}/uploads/{{ type }}/thumb_{{ file }}");
|
||||
window.parent.$("{{ reportinput }}").val("thumb_{{ file }}");
|
||||
window.parent.$("{{ reportinput }}_img").attr("src","/{{ appAlias }}/uploads/{{ type }}/thumb_{{ file }}");
|
||||
{% endif %}
|
||||
|
||||
closeModal();
|
||||
|
@ -85,6 +87,9 @@
|
|||
}
|
||||
|
||||
$(document).ready(function() {
|
||||
{% if submited %}
|
||||
reportThumb();
|
||||
{% else %}
|
||||
window.parent.$(".modal-title").html("ETAPE 2 - Découper votre image");
|
||||
|
||||
realheight=$('#largeimg').height();
|
||||
|
@ -111,7 +116,6 @@
|
|||
{% endif %}
|
||||
|
||||
$('#largeimg').CropSelectJs('setSelectionAspectRatio',{{nbratio}});
|
||||
|
||||
|
||||
{% endif %}
|
||||
});
|
||||
{% endblock %}
|
||||
|
|
|
@ -83,19 +83,6 @@ les plus importants pour y ajouter le class imposée par Bootstrap 3 #}
|
|||
</button>
|
||||
{%- endblock button_widget %}
|
||||
|
||||
{# Personnalisation des attributs des boutons #}
|
||||
{% block button_attributes -%}
|
||||
{% if type is defined and type == 'submit' -%}
|
||||
{% set class = 'btn-primary' %}
|
||||
{% else %}
|
||||
{% set class = 'btn-default' %}
|
||||
{%- endif -%}
|
||||
|
||||
{% set attr = attr|merge({'class': (attr.class|default('') ~ ' btn ' ~ class)|trim}) %}
|
||||
{{ parent() }}
|
||||
{%- endblock button_attributes %}
|
||||
|
||||
|
||||
{# Personnalisation des select #}
|
||||
{% block choice_widget_collapsed %}
|
||||
{% set attr = attr|merge({'class': (attr.class|default('') ~ ' form-control')|trim}) %}
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
{% extends "base.html.twig" %}
|
||||
|
||||
{% block body %}
|
||||
|
||||
{% if wssuse and app.user %}
|
||||
{{ render(path("app_wss_sample")) }}
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
|
||||
|
|
|
@ -1,4 +1,14 @@
|
|||
$(document).ready(function() {
|
||||
|
||||
$(".pick-a-color").spectrum(
|
||||
{
|
||||
type: "text",
|
||||
showAlpha: false
|
||||
}
|
||||
);
|
||||
|
||||
$(".pick-a-color").attr("autocomplete","off");
|
||||
|
||||
var doit = true;
|
||||
|
||||
$("a[data-method]").on('click',function(){
|
||||
|
@ -21,3 +31,23 @@ function ModalLoad(idmodal,title,path) {
|
|||
$("#"+idmodal+" iframe").attr("src",path);
|
||||
$("#"+idmodal).modal("show");
|
||||
}
|
||||
|
||||
{% if wssuse %}
|
||||
function subscribe(channeltype,channelkey,userkey) {
|
||||
console.log("== SUBSCRIBE "+channeltype+"-"+channelkey+" with userkey "+userkey);
|
||||
conn.send(JSON.stringify({
|
||||
command: "subscribe",
|
||||
log: "",
|
||||
channel: channeltype+"-"+channelkey,
|
||||
channeltype: channeltype,
|
||||
channelkey: channelkey,
|
||||
userkey: userkey
|
||||
}));
|
||||
}
|
||||
|
||||
function sendMessage(msg) {
|
||||
json=JSON.stringify(msg);
|
||||
console.log("== SEND MSG = "+json);
|
||||
conn.send(json);
|
||||
}
|
||||
{% endif %}
|
|
@ -2,27 +2,36 @@
|
|||
<ul class="nav">
|
||||
{% if is_granted('ROLE_ADMIN') %}
|
||||
<br>
|
||||
<li class="title">Administration</li>
|
||||
<li class="title">Configuration</li>
|
||||
|
||||
<li>
|
||||
<a href="{{path("app_config")}}">
|
||||
<i class="fa fa-cog"></i>Configurations
|
||||
<i class="fa fa-cog"></i>Générale
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="last">
|
||||
<a href="{{path("app_theme")}}">
|
||||
<i class="fa fa-paint-brush"></i>Thème
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="title">Organisation</li>
|
||||
|
||||
<li>
|
||||
<a href="{{path("app_user")}}">
|
||||
<i class="fa fa-user"></i>Utilisateurs
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<li class="last">
|
||||
<a href="{{path("app_group")}}">
|
||||
<i class="fa fa-users"></i>Groupes
|
||||
</a>
|
||||
</li>
|
||||
|
||||
{% if appCron %}
|
||||
<li class="title">Outils</li>
|
||||
<li>
|
||||
<a href="{{path("app_cron")}}">
|
||||
<i class="fa fa-cogs"></i>Jobs
|
||||
|
|
|
@ -7,6 +7,14 @@
|
|||
--colorftbodydark: {{ app.session.get('colorftbodydark')|raw }};
|
||||
--fontbody: "{{ app.session.get('fontbody')|raw }}";
|
||||
--fonttitle: "{{ app.session.get('fonttitle')|raw }}";
|
||||
--fontsizeh1: {{ app.session.get('fontsizeh1')~"px"|raw }};
|
||||
--fontsizeh2: {{ app.session.get('fontsizeh2')~"px"|raw }};
|
||||
--fontsizeh3: {{ app.session.get('fontsizeh3')~"px"|raw }};
|
||||
--fontsizeh4: {{ app.session.get('fontsizeh4')~"px"|raw }};
|
||||
|
||||
--colorbgbodylight-darker: {{ app.session.get('colorbgbodylight-darker')|raw }};
|
||||
--colorbgbodydark-darker: {{ app.session.get('colorbgbodydark-darker')|raw }};
|
||||
--colorfttitlelight-darker: {{ app.session.get('colorfttitlelight-darker')|raw }};
|
||||
}
|
||||
|
||||
/* COLOR BODY */
|
||||
|
@ -16,10 +24,6 @@ body {
|
|||
color: var(--colorftbodylight);
|
||||
}
|
||||
|
||||
.card {
|
||||
background-color: var(--colorbgbodylight);
|
||||
}
|
||||
|
||||
body .navbar.bg-dark {
|
||||
background-color: var(--colorbgbodydark)!important;
|
||||
}
|
||||
|
@ -36,7 +40,11 @@ body #sidebar .nav a {
|
|||
color: var(--colorfttitledark);
|
||||
}
|
||||
|
||||
body h1, body h2, body h3 {
|
||||
body #sidebar .nav .last {
|
||||
border-color: var(--colorfttitledark);
|
||||
}
|
||||
|
||||
body h1, body h2, body h3, body .modal-header h4 {
|
||||
color: var(--colorfttitlelight);
|
||||
}
|
||||
|
||||
|
@ -44,23 +52,59 @@ body a, body .btn-link {
|
|||
color: var(--colorfttitlelight);
|
||||
}
|
||||
|
||||
body a:hover, body .btn-link:hover {
|
||||
color: var(--colorfttitlelight-darker);
|
||||
}
|
||||
|
||||
body .nav a{
|
||||
color: var(--colorfttitledark);
|
||||
}
|
||||
|
||||
body .table {
|
||||
color: var(--colorftbodylight);
|
||||
}
|
||||
|
||||
body .card {
|
||||
background-color: var(--colorbgbodylight);
|
||||
}
|
||||
|
||||
body .card-header {
|
||||
background-color: var(--colorbgbodylight-darker);
|
||||
color: var(--colorfttitlelight);
|
||||
font-size: 120%;
|
||||
}
|
||||
|
||||
body .card-header .custom-control {
|
||||
color: var(--colorftbodylight);
|
||||
font-size: 80%;
|
||||
}
|
||||
|
||||
body .page-item.active .page-link,
|
||||
body .page-item.active .page-link:hover {
|
||||
background-color: var(--colorfttitlelight);
|
||||
border-color: var(--colorfttitlelight);
|
||||
}
|
||||
|
||||
body .btn-primary {
|
||||
background-color: var(--colorbgbodydark);
|
||||
border-color: var(--colorbgbodydark);
|
||||
}
|
||||
body .btn-primary:hover {
|
||||
background-color: var(--colorbgbodydark-darker);
|
||||
border-color: var(--colorbgbodydark-darker);
|
||||
}
|
||||
|
||||
body .modal-title {
|
||||
|
||||
}
|
||||
|
||||
/* COLOR BODY HOME */
|
||||
|
||||
|
||||
body.monocolor {
|
||||
background-color: var(--colorbgbodydark);
|
||||
color: var(--colorftbodydark);
|
||||
}
|
||||
|
||||
body.monocolor .card {
|
||||
background-color: var(--colorbgbodydark);
|
||||
}
|
||||
|
||||
body.monocolor .navbar.bg-dark {
|
||||
background-color: var(--colorbgbodydark)!important;
|
||||
}
|
||||
|
@ -77,7 +121,7 @@ body.monocolor #sidebar .nav a {
|
|||
color: var(--colorfttitledark);
|
||||
}
|
||||
|
||||
body.monocolor h1, body.monocolor h2, body.monocolor h3 {
|
||||
body.monocolor h1, body.monocolor h2, body.monocolor h3, body.monocolor .modal-header h4 {
|
||||
color: var(--colorfttitledark);
|
||||
}
|
||||
|
||||
|
@ -89,20 +133,54 @@ body.monocolor .nav a{
|
|||
color: var(--colorfttitledark);
|
||||
}
|
||||
|
||||
body.monocolor .card {
|
||||
background-color: var(--colorbgbodydark);
|
||||
}
|
||||
|
||||
body.monocolor .card-header {
|
||||
background-color: var(--colorbgbodydark);
|
||||
color: var(--colorfttitledark);
|
||||
font-size: 120%;
|
||||
}
|
||||
|
||||
body.monocolor .card-header .custom-control {
|
||||
color: var(--colorftbodydark);
|
||||
font-size: 80%;
|
||||
}
|
||||
|
||||
body.monocolor .btn-primary {
|
||||
background-color: var(--colorbgbodylight);
|
||||
border-color: var(--colorbgbodylight);
|
||||
}
|
||||
body.monocolor .btn-primary:hover {
|
||||
background-color: var(--colorbgbodylight-darker);
|
||||
border-color: var(--colorbgbodylight-darker);
|
||||
}
|
||||
|
||||
/* FONT */
|
||||
body {
|
||||
font-family: var(--fontbody);
|
||||
}
|
||||
|
||||
h1,h2,h3, .navbar-brand {
|
||||
h1,h2,h3, .navbar-brand, .card-header, .modal-header h4 {
|
||||
font-family: var(--fonttitle);
|
||||
}
|
||||
|
||||
h1 { font-size: var(--fontsizeh1); }
|
||||
h2 { font-size: var(--fontsizeh2); }
|
||||
h3 { font-size: var(--fontsizeh3); }
|
||||
h4 { font-size: var(--fontsizeh4); }
|
||||
|
||||
.card-header .custom-control {
|
||||
font-family: var(--fontbody);
|
||||
}
|
||||
|
||||
{% if not useheader is defined or not useheader %}
|
||||
#main {
|
||||
padding:0px;
|
||||
}
|
||||
{% else %}
|
||||
#main {
|
||||
margin-bottom: 100px;
|
||||
}
|
||||
{%endif%}
|
|
@ -0,0 +1,29 @@
|
|||
{% extends 'base.html.twig' %}
|
||||
|
||||
{% block body %}
|
||||
<h1>Thèmes</h1>
|
||||
|
||||
<h2>Thème en cours</h2>
|
||||
<div class="text-center" style="width:330px">
|
||||
<img src="{{currentheme.url}}/look.png" style="width:100%; background-color: {{app.session.get('colorbgbodydark') }}"><br>
|
||||
{{currentheme.name}}
|
||||
</div>
|
||||
|
||||
<h2 class="mt-5">Thèmes disponibles</h2>
|
||||
|
||||
<div>
|
||||
{% for theme in themes %}
|
||||
<div class="text-center mb-4" style="width:330px; display: inline-block">
|
||||
<img src="{{theme.url}}/look.png" style="height:170px; background-color: {{app.session.get('colorbgbodydark') }}"><br>
|
||||
{{theme.name}}<br>
|
||||
<a href="{{ path("app_theme_select",{"name":theme.dir}) }}" class="btn btn-primary" role="button">Sélectionner</a>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -48,7 +48,7 @@
|
|||
<img id="user_avatar_img" src="{{ avatar|urlavatar }}" class="avatar big" >
|
||||
{{ form_widget(form.avatar) }}
|
||||
{% if appMasteridentity=="LDAP" or appMasteridentity=="SQL" %}
|
||||
<a class="btn btn-info" style="width:100%; margin-bottom:15px;" onClick="ModalLoad('mymodallarge','Avatar','{{ path('app_crop01', {"type": "avatar", "reportinput": "user_avatar" }) }}');" title='Ajouter un avatar'>Modifier</a>
|
||||
<bouton class="btn btn-info" style="width:100%; margin-bottom:15px;" onClick="ModalLoad('mymodallarge','Avatar','{{ path('app_crop01', {"type": "avatar", "reportinput": "#user_avatar" }) }}');" title='Ajouter un avatar'>Modifier</bouton>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
|
|
|
@ -0,0 +1,61 @@
|
|||
<div id="chat" class="text-center mt-5">
|
||||
<div class="mb-2">online</div>
|
||||
<div id="online" style="mt-2"></div>
|
||||
</div>
|
||||
|
||||
{% if wssuse %}
|
||||
<script>
|
||||
var conn;
|
||||
|
||||
function connect() {
|
||||
conn = new WebSocket("{{wssurl}}");
|
||||
|
||||
conn.onopen = function(e) {
|
||||
console.log("== CONNECT");
|
||||
{% set userkey = "" %}
|
||||
{% if app.user %}
|
||||
{% set userkey = app.user.apikey %}
|
||||
{%endif%}
|
||||
|
||||
subscribe("home",1,"{{userkey}}");
|
||||
sendMessage({command: "alive"});
|
||||
};
|
||||
conn.onmessage = function(e) {
|
||||
ret=JSON.parse(e.data);
|
||||
console.log(ret.log);
|
||||
|
||||
switch(ret.command) {
|
||||
case "alive" :
|
||||
if(!$('#online'+ret.from.id).length) {
|
||||
html='<img id="online'+ret.from.id+'" src="'+ret.from.avatar+'" class="avatar ml-2 mr-2" title="'+ret.from.displayname+'">';
|
||||
$("#online").append(html);
|
||||
}
|
||||
|
||||
if(ret.from.id!={{app.user.id}})
|
||||
sendMessage({command: "meto"});
|
||||
break;
|
||||
|
||||
case "adead" :
|
||||
$('#online'+ret.from.id).remove();
|
||||
break;
|
||||
|
||||
case "meto" :
|
||||
if(!$('#online'+ret.from.id).length) {
|
||||
html='<img id="online'+ret.from.id+'" src="'+ret.from.avatar+'" class="avatar ml-2 mr-2" title="'+ret.from.displayname+'">';
|
||||
$("#online").append(html);
|
||||
}
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
||||
conn.onclose = function(e) {
|
||||
console.log("== DISCONNECT");
|
||||
$('#online img').remove();
|
||||
console.log('Socket is closed. Reconnect will be attempted in 1 second.', e.reason);
|
||||
setTimeout(function() { connect(); }, 1000);
|
||||
};
|
||||
}
|
||||
|
||||
connect();
|
||||
</script>
|
||||
{% endif %}
|
|
@ -13,7 +13,7 @@
|
|||
{% block encorelinktags %}
|
||||
|
||||
{% endblock encorelinktags %}
|
||||
<link type="text/css" rel="stylesheet" href="{{ asset('bundles/craueformflow/css/buttons.css') }}" />
|
||||
|
||||
<link rel="shortcut icon" href="/{{ appAlias }}/uploads/logo/{{app.session.get("logolight")}}" />
|
||||
</head>
|
||||
|
||||
|
@ -22,12 +22,28 @@
|
|||
|
||||
<style>
|
||||
{{ include('Include/style.css.twig') }}
|
||||
</style>
|
||||
|
||||
{% if not app.session.get("apptheme") is empty %}
|
||||
<link href="/{{ appAlias }}/themes/{{ app.session.get("apptheme") }}/style.css" rel="stylesheet" media="screen" />
|
||||
{% endif %}
|
||||
|
||||
<style>
|
||||
{% block localstyle %}
|
||||
|
||||
{% endblock %}
|
||||
</style>
|
||||
|
||||
{{ encore_entry_script_tags('app') }}
|
||||
{% block encorescripttags %}
|
||||
|
||||
{% endblock %}
|
||||
|
||||
<script>
|
||||
{{ include('Include/javascript.js.twig') }}
|
||||
</script>
|
||||
|
||||
|
||||
{% set class="" %}
|
||||
{% if usemonocolor is defined and usemonocolor %}
|
||||
{% set class="monocolor" %}
|
||||
|
@ -86,7 +102,7 @@
|
|||
</nav>
|
||||
{% endif %}
|
||||
|
||||
<main id="main" class="container-fluid">
|
||||
<main id="main" class="container-fluid {% if maxwidth is defined and maxwidth %} page-maxed {% endif %}">
|
||||
{% set contentsidebar="" %}
|
||||
{% if usesidebar is defined and usesidebar %}
|
||||
{% set contentsidebar="contentsidebar" %}
|
||||
|
@ -104,19 +120,20 @@
|
|||
<div class="modal-dialog modal-lg" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h4 class="modal-title">Modification Evènement</h5>
|
||||
<h4 class="modal-title"></h4>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="modal-body">
|
||||
<iframe id="framemodal" frameborder=0 width="100%" height="600px"></iframe>
|
||||
<iframe frameborder=0 width="100%" height="600px"></iframe>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="mymodallarge" class="modal fade" tabindex="-1" role="dialog">
|
||||
<div class="modal-dialog modal-xl">
|
||||
<div class="modal-content">
|
||||
|
@ -131,33 +148,21 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
{{ encore_entry_script_tags('app') }}
|
||||
|
||||
{% block encorescripttags %}
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block localexternalscript %}
|
||||
|
||||
{% endblock %}
|
||||
|
||||
<script>
|
||||
{{ include('Include/javascript.js.twig') }}
|
||||
</script>
|
||||
|
||||
<script>
|
||||
$(".pick-a-color").spectrum(
|
||||
{
|
||||
type: "text",
|
||||
showAlpha: false
|
||||
}
|
||||
);
|
||||
|
||||
{% block localjavascript %}
|
||||
|
||||
{% endblock %}
|
||||
</script>
|
||||
|
||||
{% if not app.session.get("apptheme") is empty %}
|
||||
<script src="/{{ appAlias }}/themes/{{ app.session.get("apptheme") }}/local.js"></script>
|
||||
{% endif %}
|
||||
|
||||
{% if sondeUse %}
|
||||
{{ render(path("app_sonde")) }}
|
||||
{% endif %}
|
||||
|
|
|
@ -1 +1,2 @@
|
|||
* * * * * root /var/www/html/ninesurvey/scripts/cron.sh &>/dev/null
|
||||
* * * * * root /var/www/html/ninesurvey/scripts/websocket.sh restartifdown &>/dev/null
|
||||
|
|