diff --git a/dicos/90_ninesurvey.xml b/dicos/90_ninesurvey.xml index 5880b8d..5ce12c9 100644 --- a/dicos/90_ninesurvey.xml +++ b/dicos/90_ninesurvey.xml @@ -16,7 +16,7 @@ - + diff --git a/src/ninesurvey-1.0/composer.json b/src/ninesurvey-1.0/composer.json index df02063..32f01d2 100644 --- a/src/ninesurvey-1.0/composer.json +++ b/src/ninesurvey-1.0/composer.json @@ -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", diff --git a/src/ninesurvey-1.0/composer.lock b/src/ninesurvey-1.0/composer.lock index 68a7ce7..876c05b 100644 --- a/src/ninesurvey-1.0/composer.lock +++ b/src/ninesurvey-1.0/composer.lock @@ -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", diff --git a/src/ninesurvey-1.0/config/packages/twig.yaml b/src/ninesurvey-1.0/config/packages/twig.yaml index 69c3df9..5cfbca2 100644 --- a/src/ninesurvey-1.0/config/packages/twig.yaml +++ b/src/ninesurvey-1.0/config/packages/twig.yaml @@ -13,6 +13,8 @@ twig: appName: '%appName%' appCron: '%appCron%' appMasteridentity: '%appMasteridentity%' + wssuse: '%wssuse%' + wssurl: '%wssurl%' sondeUse: '%sondeUse%' sondeUrl: '%sondeUrl%' diff --git a/src/ninesurvey-1.0/config/routes.yaml b/src/ninesurvey-1.0/config/routes.yaml index e03e700..02bc1b7 100644 --- a/src/ninesurvey-1.0/config/routes.yaml +++ b/src/ninesurvey-1.0/config/routes.yaml @@ -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 } diff --git a/src/ninesurvey-1.0/config/services.yaml b/src/ninesurvey-1.0/config/services.yaml index 89d0ffd..c0d9749 100644 --- a/src/ninesurvey-1.0/config/services.yaml +++ b/src/ninesurvey-1.0/config/services.yaml @@ -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)%' diff --git a/src/ninesurvey-1.0/public/styles/css/font.css b/src/ninesurvey-1.0/public/styles/css/font.css new file mode 100644 index 0000000..e36344c --- /dev/null +++ b/src/ninesurvey-1.0/public/styles/css/font.css @@ -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; +} \ No newline at end of file diff --git a/src/ninesurvey-1.0/public/styles/css/style.css b/src/ninesurvey-1.0/public/styles/css/style.css new file mode 100644 index 0000000..8525831 --- /dev/null +++ b/src/ninesurvey-1.0/public/styles/css/style.css @@ -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; +} \ No newline at end of file diff --git a/src/ninesurvey-1.0/public/styles/fonts/ABeeZee-Regular.ttf b/src/ninesurvey-1.0/public/styles/fonts/ABeeZee-Regular.ttf new file mode 100644 index 0000000..644651b Binary files /dev/null and b/src/ninesurvey-1.0/public/styles/fonts/ABeeZee-Regular.ttf differ diff --git a/src/ninesurvey-1.0/public/styles/fonts/Acme-Regular-webfont.ttf b/src/ninesurvey-1.0/public/styles/fonts/Acme-Regular-webfont.ttf new file mode 100644 index 0000000..3b09df5 Binary files /dev/null and b/src/ninesurvey-1.0/public/styles/fonts/Acme-Regular-webfont.ttf differ diff --git a/src/ninesurvey-1.0/public/styles/fonts/AlfaSlabOne-Regular.ttf b/src/ninesurvey-1.0/public/styles/fonts/AlfaSlabOne-Regular.ttf new file mode 100644 index 0000000..629888b Binary files /dev/null and b/src/ninesurvey-1.0/public/styles/fonts/AlfaSlabOne-Regular.ttf differ diff --git a/src/ninesurvey-1.0/public/styles/fonts/Anton-Regular.ttf b/src/ninesurvey-1.0/public/styles/fonts/Anton-Regular.ttf new file mode 100644 index 0000000..18d0209 Binary files /dev/null and b/src/ninesurvey-1.0/public/styles/fonts/Anton-Regular.ttf differ diff --git a/src/ninesurvey-1.0/public/styles/fonts/Baloo-Regular.ttf b/src/ninesurvey-1.0/public/styles/fonts/Baloo-Regular.ttf new file mode 100644 index 0000000..3cc9930 Binary files /dev/null and b/src/ninesurvey-1.0/public/styles/fonts/Baloo-Regular.ttf differ diff --git a/src/ninesurvey-1.0/public/styles/fonts/Bebas-webfont.ttf b/src/ninesurvey-1.0/public/styles/fonts/Bebas-webfont.ttf new file mode 100644 index 0000000..d5cab64 Binary files /dev/null and b/src/ninesurvey-1.0/public/styles/fonts/Bebas-webfont.ttf differ diff --git a/src/ninesurvey-1.0/public/styles/fonts/CarterOne-Regular.ttf b/src/ninesurvey-1.0/public/styles/fonts/CarterOne-Regular.ttf new file mode 100644 index 0000000..468cbe0 Binary files /dev/null and b/src/ninesurvey-1.0/public/styles/fonts/CarterOne-Regular.ttf differ diff --git a/src/ninesurvey-1.0/public/styles/fonts/Chewy-Regular.ttf b/src/ninesurvey-1.0/public/styles/fonts/Chewy-Regular.ttf new file mode 100644 index 0000000..4bfa56a Binary files /dev/null and b/src/ninesurvey-1.0/public/styles/fonts/Chewy-Regular.ttf differ diff --git a/src/ninesurvey-1.0/public/styles/fonts/Courgette-Regular.ttf b/src/ninesurvey-1.0/public/styles/fonts/Courgette-Regular.ttf new file mode 100644 index 0000000..055faac Binary files /dev/null and b/src/ninesurvey-1.0/public/styles/fonts/Courgette-Regular.ttf differ diff --git a/src/ninesurvey-1.0/public/styles/fonts/FredokaOne-Regular.ttf b/src/ninesurvey-1.0/public/styles/fonts/FredokaOne-Regular.ttf new file mode 100644 index 0000000..0cdf5ae Binary files /dev/null and b/src/ninesurvey-1.0/public/styles/fonts/FredokaOne-Regular.ttf differ diff --git a/src/ninesurvey-1.0/public/styles/fonts/Grandstander-Black.ttf b/src/ninesurvey-1.0/public/styles/fonts/Grandstander-Black.ttf new file mode 100644 index 0000000..d101c10 Binary files /dev/null and b/src/ninesurvey-1.0/public/styles/fonts/Grandstander-Black.ttf differ diff --git a/src/ninesurvey-1.0/public/styles/fonts/Justanotherhand-Regular-webfont.ttf b/src/ninesurvey-1.0/public/styles/fonts/Justanotherhand-Regular-webfont.ttf new file mode 100644 index 0000000..84d0ba8 Binary files /dev/null and b/src/ninesurvey-1.0/public/styles/fonts/Justanotherhand-Regular-webfont.ttf differ diff --git a/src/ninesurvey-1.0/public/styles/fonts/Lato-Regular.ttf b/src/ninesurvey-1.0/public/styles/fonts/Lato-Regular.ttf new file mode 100644 index 0000000..04ea8ef Binary files /dev/null and b/src/ninesurvey-1.0/public/styles/fonts/Lato-Regular.ttf differ diff --git a/src/ninesurvey-1.0/public/styles/fonts/LexendDeca-Regular.ttf b/src/ninesurvey-1.0/public/styles/fonts/LexendDeca-Regular.ttf new file mode 100644 index 0000000..6b42154 Binary files /dev/null and b/src/ninesurvey-1.0/public/styles/fonts/LexendDeca-Regular.ttf differ diff --git a/src/ninesurvey-1.0/public/styles/fonts/LuckiestGuy-Regular.ttf b/src/ninesurvey-1.0/public/styles/fonts/LuckiestGuy-Regular.ttf new file mode 100644 index 0000000..8bc3f11 Binary files /dev/null and b/src/ninesurvey-1.0/public/styles/fonts/LuckiestGuy-Regular.ttf differ diff --git a/src/ninesurvey-1.0/public/styles/fonts/Overpass-Black.ttf b/src/ninesurvey-1.0/public/styles/fonts/Overpass-Black.ttf new file mode 100644 index 0000000..9f15dd3 Binary files /dev/null and b/src/ninesurvey-1.0/public/styles/fonts/Overpass-Black.ttf differ diff --git a/src/ninesurvey-1.0/public/styles/fonts/PassionOne-Regular.ttf b/src/ninesurvey-1.0/public/styles/fonts/PassionOne-Regular.ttf new file mode 100644 index 0000000..ab39d26 Binary files /dev/null and b/src/ninesurvey-1.0/public/styles/fonts/PassionOne-Regular.ttf differ diff --git a/src/ninesurvey-1.0/public/styles/fonts/Peacesans-webfont.ttf b/src/ninesurvey-1.0/public/styles/fonts/Peacesans-webfont.ttf new file mode 100644 index 0000000..7513e6c Binary files /dev/null and b/src/ninesurvey-1.0/public/styles/fonts/Peacesans-webfont.ttf differ diff --git a/src/ninesurvey-1.0/public/styles/fonts/Redressed-webfont.ttf b/src/ninesurvey-1.0/public/styles/fonts/Redressed-webfont.ttf new file mode 100644 index 0000000..47cddf8 Binary files /dev/null and b/src/ninesurvey-1.0/public/styles/fonts/Redressed-webfont.ttf differ diff --git a/src/ninesurvey-1.0/public/styles/fonts/Righteous-Regular.ttf b/src/ninesurvey-1.0/public/styles/fonts/Righteous-Regular.ttf new file mode 100644 index 0000000..cc556d5 Binary files /dev/null and b/src/ninesurvey-1.0/public/styles/fonts/Righteous-Regular.ttf differ diff --git a/src/ninesurvey-1.0/public/styles/fonts/Roboto-Regular-webfont.ttf b/src/ninesurvey-1.0/public/styles/fonts/Roboto-Regular-webfont.ttf new file mode 100644 index 0000000..30be1e4 Binary files /dev/null and b/src/ninesurvey-1.0/public/styles/fonts/Roboto-Regular-webfont.ttf differ diff --git a/src/ninesurvey-1.0/public/styles/fonts/RubikMonoOne-Regular.ttf b/src/ninesurvey-1.0/public/styles/fonts/RubikMonoOne-Regular.ttf new file mode 100644 index 0000000..ee6af94 Binary files /dev/null and b/src/ninesurvey-1.0/public/styles/fonts/RubikMonoOne-Regular.ttf differ diff --git a/src/ninesurvey-1.0/public/styles/fonts/SigmarOne-Regular.ttf b/src/ninesurvey-1.0/public/styles/fonts/SigmarOne-Regular.ttf new file mode 100644 index 0000000..e2b4bd4 Binary files /dev/null and b/src/ninesurvey-1.0/public/styles/fonts/SigmarOne-Regular.ttf differ diff --git a/src/ninesurvey-1.0/public/styles/fonts/Signika-Regular.ttf b/src/ninesurvey-1.0/public/styles/fonts/Signika-Regular.ttf new file mode 100644 index 0000000..7e0f5c7 Binary files /dev/null and b/src/ninesurvey-1.0/public/styles/fonts/Signika-Regular.ttf differ diff --git a/src/ninesurvey-1.0/public/styles/fonts/Snickles-webfont.ttf b/src/ninesurvey-1.0/public/styles/fonts/Snickles-webfont.ttf new file mode 100644 index 0000000..a5ee502 Binary files /dev/null and b/src/ninesurvey-1.0/public/styles/fonts/Snickles-webfont.ttf differ diff --git a/src/ninesurvey-1.0/public/styles/fonts/Teko-Bold.ttf b/src/ninesurvey-1.0/public/styles/fonts/Teko-Bold.ttf new file mode 100644 index 0000000..b226a21 Binary files /dev/null and b/src/ninesurvey-1.0/public/styles/fonts/Teko-Bold.ttf differ diff --git a/src/ninesurvey-1.0/public/styles/fonts/Viga-Regular.ttf b/src/ninesurvey-1.0/public/styles/fonts/Viga-Regular.ttf new file mode 100644 index 0000000..a4be8f1 Binary files /dev/null and b/src/ninesurvey-1.0/public/styles/fonts/Viga-Regular.ttf differ diff --git a/src/ninesurvey-1.0/public/themes/look.png b/src/ninesurvey-1.0/public/themes/look.png new file mode 100644 index 0000000..1a9fc5f Binary files /dev/null and b/src/ninesurvey-1.0/public/themes/look.png differ diff --git a/src/ninesurvey-1.0/public/themes/look.xcf b/src/ninesurvey-1.0/public/themes/look.xcf new file mode 100644 index 0000000..8c6bf68 Binary files /dev/null and b/src/ninesurvey-1.0/public/themes/look.xcf differ diff --git a/src/ninesurvey-1.0/public/themes/nineblue/info.yml b/src/ninesurvey-1.0/public/themes/nineblue/info.yml new file mode 100644 index 0000000..91c4bd2 --- /dev/null +++ b/src/ninesurvey-1.0/public/themes/nineblue/info.yml @@ -0,0 +1,3 @@ +name: Nineblue +author: Arnaud Fornerot +version: 1.0 \ No newline at end of file diff --git a/src/ninesurvey-1.0/src/Controller/.gitignore b/src/ninesurvey-1.0/public/themes/nineblue/local.js similarity index 100% rename from src/ninesurvey-1.0/src/Controller/.gitignore rename to src/ninesurvey-1.0/public/themes/nineblue/local.js diff --git a/src/ninesurvey-1.0/public/themes/nineblue/look.png b/src/ninesurvey-1.0/public/themes/nineblue/look.png new file mode 100644 index 0000000..4ad7124 Binary files /dev/null and b/src/ninesurvey-1.0/public/themes/nineblue/look.png differ diff --git a/src/ninesurvey-1.0/public/themes/nineblue/style.css b/src/ninesurvey-1.0/public/themes/nineblue/style.css new file mode 100644 index 0000000..e95662e --- /dev/null +++ b/src/ninesurvey-1.0/public/themes/nineblue/style.css @@ -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 */ + + + + + + + + + + + + + + + + + + diff --git a/src/ninesurvey-1.0/public/themes/ninedark/info.yml b/src/ninesurvey-1.0/public/themes/ninedark/info.yml new file mode 100644 index 0000000..6d46bd8 --- /dev/null +++ b/src/ninesurvey-1.0/public/themes/ninedark/info.yml @@ -0,0 +1,3 @@ +name: Ninedark +author: Arnaud Fornerot +version: 1.0 \ No newline at end of file diff --git a/src/ninesurvey-1.0/public/themes/ninedark/local.js b/src/ninesurvey-1.0/public/themes/ninedark/local.js new file mode 100644 index 0000000..e69de29 diff --git a/src/ninesurvey-1.0/public/themes/ninedark/look.png b/src/ninesurvey-1.0/public/themes/ninedark/look.png new file mode 100644 index 0000000..533897f Binary files /dev/null and b/src/ninesurvey-1.0/public/themes/ninedark/look.png differ diff --git a/src/ninesurvey-1.0/public/themes/ninedark/style.css b/src/ninesurvey-1.0/public/themes/ninedark/style.css new file mode 100644 index 0000000..27a4766 --- /dev/null +++ b/src/ninesurvey-1.0/public/themes/ninedark/style.css @@ -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 */ + + + + + + + + + + + + + + + + + + diff --git a/src/ninesurvey-1.0/public/themes/ninegray/info.yml b/src/ninesurvey-1.0/public/themes/ninegray/info.yml new file mode 100644 index 0000000..c60fd67 --- /dev/null +++ b/src/ninesurvey-1.0/public/themes/ninegray/info.yml @@ -0,0 +1,3 @@ +name: Ninegray +author: Arnaud Fornerot +version: 1.0 \ No newline at end of file diff --git a/src/ninesurvey-1.0/public/themes/ninegray/local.js b/src/ninesurvey-1.0/public/themes/ninegray/local.js new file mode 100644 index 0000000..e69de29 diff --git a/src/ninesurvey-1.0/public/themes/ninegray/look.png b/src/ninesurvey-1.0/public/themes/ninegray/look.png new file mode 100644 index 0000000..e6a1af6 Binary files /dev/null and b/src/ninesurvey-1.0/public/themes/ninegray/look.png differ diff --git a/src/ninesurvey-1.0/public/themes/ninegray/style.css b/src/ninesurvey-1.0/public/themes/ninegray/style.css new file mode 100644 index 0000000..25d5baf --- /dev/null +++ b/src/ninesurvey-1.0/public/themes/ninegray/style.css @@ -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 */ + + + + + + + + + + + + + + + + + + diff --git a/src/ninesurvey-1.0/public/themes/ninegreen/info.yml b/src/ninesurvey-1.0/public/themes/ninegreen/info.yml new file mode 100644 index 0000000..68634e9 --- /dev/null +++ b/src/ninesurvey-1.0/public/themes/ninegreen/info.yml @@ -0,0 +1,3 @@ +name: Ninegreen +author: Arnaud Fornerot +version: 1.0 \ No newline at end of file diff --git a/src/ninesurvey-1.0/public/themes/ninegreen/local.js b/src/ninesurvey-1.0/public/themes/ninegreen/local.js new file mode 100644 index 0000000..e69de29 diff --git a/src/ninesurvey-1.0/public/themes/ninegreen/look.png b/src/ninesurvey-1.0/public/themes/ninegreen/look.png new file mode 100644 index 0000000..e2f114e Binary files /dev/null and b/src/ninesurvey-1.0/public/themes/ninegreen/look.png differ diff --git a/src/ninesurvey-1.0/public/themes/ninegreen/style.css b/src/ninesurvey-1.0/public/themes/ninegreen/style.css new file mode 100644 index 0000000..cd90511 --- /dev/null +++ b/src/ninesurvey-1.0/public/themes/ninegreen/style.css @@ -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 */ + + + + + + + + + + + + + + + + + + diff --git a/src/ninesurvey-1.0/public/themes/nineorange/info.yml b/src/ninesurvey-1.0/public/themes/nineorange/info.yml new file mode 100644 index 0000000..93d1bbb --- /dev/null +++ b/src/ninesurvey-1.0/public/themes/nineorange/info.yml @@ -0,0 +1,3 @@ +name: Nineorange +author: Arnaud Fornerot +version: 1.0 \ No newline at end of file diff --git a/src/ninesurvey-1.0/public/themes/nineorange/local.js b/src/ninesurvey-1.0/public/themes/nineorange/local.js new file mode 100644 index 0000000..e69de29 diff --git a/src/ninesurvey-1.0/public/themes/nineorange/look.png b/src/ninesurvey-1.0/public/themes/nineorange/look.png new file mode 100644 index 0000000..4106474 Binary files /dev/null and b/src/ninesurvey-1.0/public/themes/nineorange/look.png differ diff --git a/src/ninesurvey-1.0/public/themes/nineorange/style.css b/src/ninesurvey-1.0/public/themes/nineorange/style.css new file mode 100644 index 0000000..2d3a355 --- /dev/null +++ b/src/ninesurvey-1.0/public/themes/nineorange/style.css @@ -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 */ + + + + + + + + + + + + + + + + + + diff --git a/src/ninesurvey-1.0/public/themes/ninered/info.yml b/src/ninesurvey-1.0/public/themes/ninered/info.yml new file mode 100644 index 0000000..6d111eb --- /dev/null +++ b/src/ninesurvey-1.0/public/themes/ninered/info.yml @@ -0,0 +1,3 @@ +name: Ninered +author: Arnaud Fornerot +version: 1.0 \ No newline at end of file diff --git a/src/ninesurvey-1.0/public/themes/ninered/local.js b/src/ninesurvey-1.0/public/themes/ninered/local.js new file mode 100644 index 0000000..e69de29 diff --git a/src/ninesurvey-1.0/public/themes/ninered/look.png b/src/ninesurvey-1.0/public/themes/ninered/look.png new file mode 100644 index 0000000..5d7452e Binary files /dev/null and b/src/ninesurvey-1.0/public/themes/ninered/look.png differ diff --git a/src/ninesurvey-1.0/public/themes/ninered/style.css b/src/ninesurvey-1.0/public/themes/ninered/style.css new file mode 100644 index 0000000..204f519 --- /dev/null +++ b/src/ninesurvey-1.0/public/themes/ninered/style.css @@ -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 */ + + + + + + + + + + + + + + + + + + diff --git a/src/ninesurvey-1.0/public/themes/nineyellow/info.yml b/src/ninesurvey-1.0/public/themes/nineyellow/info.yml new file mode 100644 index 0000000..09debb8 --- /dev/null +++ b/src/ninesurvey-1.0/public/themes/nineyellow/info.yml @@ -0,0 +1,3 @@ +name: Nineyellow +author: Arnaud Fornerot +version: 1.0 \ No newline at end of file diff --git a/src/ninesurvey-1.0/public/themes/nineyellow/local.js b/src/ninesurvey-1.0/public/themes/nineyellow/local.js new file mode 100644 index 0000000..e69de29 diff --git a/src/ninesurvey-1.0/public/themes/nineyellow/look.png b/src/ninesurvey-1.0/public/themes/nineyellow/look.png new file mode 100644 index 0000000..2fac204 Binary files /dev/null and b/src/ninesurvey-1.0/public/themes/nineyellow/look.png differ diff --git a/src/ninesurvey-1.0/public/themes/nineyellow/style.css b/src/ninesurvey-1.0/public/themes/nineyellow/style.css new file mode 100644 index 0000000..e7427b2 --- /dev/null +++ b/src/ninesurvey-1.0/public/themes/nineyellow/style.css @@ -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 */ + + + + + + + + + + + + + + + + + + diff --git a/src/ninesurvey-1.0/scripts/.env.model b/src/ninesurvey-1.0/scripts/.env.model index 027a592..5ac605d 100644 --- a/src/ninesurvey-1.0/scripts/.env.model +++ b/src/ninesurvey-1.0/scripts/.env.model @@ -52,6 +52,11 @@ CAS_LASTNAME=lastname CAS_FIRSTNAME=firstname +# WEBSOCKET +WSS_USE=0 +WSS_PORT=5576 + + # Proxy PROXY_USE=0 PROXY_HOST= diff --git a/src/ninesurvey-1.0/scripts/reconfigure.sh b/src/ninesurvey-1.0/scripts/reconfigure.sh index 4442548..0c0f4a0 100755 --- a/src/ninesurvey-1.0/scripts/reconfigure.sh +++ b/src/ninesurvey-1.0/scripts/reconfigure.sh @@ -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 diff --git a/src/ninesurvey-1.0/scripts/websocket.sh b/src/ninesurvey-1.0/scripts/websocket.sh new file mode 100755 index 0000000..2bdd9e6 --- /dev/null +++ b/src/ninesurvey-1.0/scripts/websocket.sh @@ -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 \ No newline at end of file diff --git a/src/ninesurvey-1.0/src/Command/AppInitCommand.php b/src/ninesurvey-1.0/src/Command/AppInitCommand.php index 4de22cb..f35d9bc 100644 --- a/src/ninesurvey-1.0/src/Command/AppInitCommand.php +++ b/src/ninesurvey-1.0/src/Command/AppInitCommand.php @@ -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); diff --git a/src/ninesurvey-1.0/src/Command/ScriptCommand.php b/src/ninesurvey-1.0/src/Command/ScriptCommand.php index 43227f0..974272d 100644 --- a/src/ninesurvey-1.0/src/Command/ScriptCommand.php +++ b/src/ninesurvey-1.0/src/Command/ScriptCommand.php @@ -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(); + } } diff --git a/src/ninesurvey-1.0/src/Command/SynchroUsersCommand.php b/src/ninesurvey-1.0/src/Command/SynchroUsersCommand.php index ae2efce..fb3740c 100644 --- a/src/ninesurvey-1.0/src/Command/SynchroUsersCommand.php +++ b/src/ninesurvey-1.0/src/Command/SynchroUsersCommand.php @@ -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,13 +681,15 @@ 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)) $role="ROLE_ADMIN"; diff --git a/src/ninesurvey-1.0/src/Command/WebsocketServerCommand.php b/src/ninesurvey-1.0/src/Command/WebsocketServerCommand.php new file mode 100644 index 0000000..b0a6d0c --- /dev/null +++ b/src/ninesurvey-1.0/src/Command/WebsocketServerCommand.php @@ -0,0 +1,53 @@ +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; + } +} \ No newline at end of file diff --git a/src/ninesurvey-1.0/src/Controller/CropController.php b/src/ninesurvey-1.0/src/Controller/CropController.php index 84275c4..2074d53 100644 --- a/src/ninesurvey-1.0/src/Controller/CropController.php +++ b/src/ninesurvey-1.0/src/Controller/CropController.php @@ -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) { @@ -50,7 +59,7 @@ class CropController extends AbstractController $max_width=1600; $ratio="16:9"; break; - + case "image": $max_height=1600; $max_width=1600; @@ -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); diff --git a/src/ninesurvey-1.0/src/Controller/HomeController.php b/src/ninesurvey-1.0/src/Controller/HomeController.php index 8167fb5..bdf5a7c 100755 --- a/src/ninesurvey-1.0/src/Controller/HomeController.php +++ b/src/ninesurvey-1.0/src/Controller/HomeController.php @@ -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() diff --git a/src/ninesurvey-1.0/src/Controller/SecurityController.php b/src/ninesurvey-1.0/src/Controller/SecurityController.php index 3c068a9..d420d60 100755 --- a/src/ninesurvey-1.0/src/Controller/SecurityController.php +++ b/src/ninesurvey-1.0/src/Controller/SecurityController.php @@ -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); diff --git a/src/ninesurvey-1.0/src/Controller/SurveyController.php b/src/ninesurvey-1.0/src/Controller/SurveyController.php index 0be80d2..b17173a 100644 --- a/src/ninesurvey-1.0/src/Controller/SurveyController.php +++ b/src/ninesurvey-1.0/src/Controller/SurveyController.php @@ -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(); diff --git a/src/ninesurvey-1.0/src/Controller/ThemeController.php b/src/ninesurvey-1.0/src/Controller/ThemeController.php new file mode 100644 index 0000000..9c56866 --- /dev/null +++ b/src/ninesurvey-1.0/src/Controller/ThemeController.php @@ -0,0 +1,67 @@ +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"); + } +} diff --git a/src/ninesurvey-1.0/src/Controller/UserController.php b/src/ninesurvey-1.0/src/Controller/UserController.php index 780c419..90d477f 100755 --- a/src/ninesurvey-1.0/src/Controller/UserController.php +++ b/src/ninesurvey-1.0/src/Controller/UserController.php @@ -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"))); @@ -206,7 +208,7 @@ class UserController extends AbstractController $response->headers->set('Content-Type', 'application/json'); return $response; } - + public function info(Request $request) { // S'assurer que c'est un appel ajax @@ -228,22 +230,6 @@ class UserController extends AbstractController $response->headers->set('Content-Type', 'application/json'); 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") { @@ -260,5 +246,5 @@ class UserController extends AbstractController $request->getSession()->getFlashBag()->add("error", $error->getMessage()); } } - } + } } diff --git a/src/ninesurvey-1.0/src/Controller/WebsocketController.php b/src/ninesurvey-1.0/src/Controller/WebsocketController.php new file mode 100644 index 0000000..a53dac2 --- /dev/null +++ b/src/ninesurvey-1.0/src/Controller/WebsocketController.php @@ -0,0 +1,13 @@ +render('Websocket/sample.html.twig'); + } +} diff --git a/src/ninesurvey-1.0/src/Entity/Config.php b/src/ninesurvey-1.0/src/Entity/Config.php index 79fb6d9..f5c0d47 100644 --- a/src/ninesurvey-1.0/src/Entity/Config.php +++ b/src/ninesurvey-1.0/src/Entity/Config.php @@ -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; + } + } diff --git a/src/ninesurvey-1.0/src/Form/UserType.php b/src/ninesurvey-1.0/src/Form/UserType.php index 8c04c02..3d2f346 100644 --- a/src/ninesurvey-1.0/src/Form/UserType.php +++ b/src/ninesurvey-1.0/src/Form/UserType.php @@ -103,7 +103,8 @@ class UserType extends AbstractType $builder->add('apikey', TextType::class, [ "label" =>"Clé Accès", - "required" => false + "required" => true, + "disabled" => true, ] ); diff --git a/src/ninesurvey-1.0/src/Service/sessionInit.php b/src/ninesurvey-1.0/src/Service/sessionInit.php index 10dd780..5841d00 100644 --- a/src/ninesurvey-1.0/src/Service/sessionInit.php +++ b/src/ninesurvey-1.0/src/Service/sessionInit.php @@ -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; } } diff --git a/src/ninesurvey-1.0/src/Websocket/MessageHandler.php b/src/ninesurvey-1.0/src/Websocket/MessageHandler.php new file mode 100644 index 0000000..84cd758 --- /dev/null +++ b/src/ninesurvey-1.0/src/Websocket/MessageHandler.php @@ -0,0 +1,141 @@ +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; + } +} \ No newline at end of file diff --git a/src/ninesurvey-1.0/symfony.lock b/src/ninesurvey-1.0/symfony.lock index 23a9822..8ab43ea 100644 --- a/src/ninesurvey-1.0/symfony.lock +++ b/src/ninesurvey-1.0/symfony.lock @@ -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": { diff --git a/src/ninesurvey-1.0/templates/Config/edit.html.twig b/src/ninesurvey-1.0/templates/Config/edit.html.twig index 8ca36dd..0a62546 100755 --- a/src/ninesurvey-1.0/templates/Config/edit.html.twig +++ b/src/ninesurvey-1.0/templates/Config/edit.html.twig @@ -66,12 +66,12 @@ {% elseif config.type=="hero" %}
- Modifier + Modifier
{% elseif config.type=="image" %}
- Modifier + Modifier
{% endif %} {{ form_row(form.help) }} diff --git a/src/ninesurvey-1.0/templates/Config/render.html.twig b/src/ninesurvey-1.0/templates/Config/render.html.twig index 69d5076..9d87611 100644 --- a/src/ninesurvey-1.0/templates/Config/render.html.twig +++ b/src/ninesurvey-1.0/templates/Config/render.html.twig @@ -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;" %} diff --git a/src/ninesurvey-1.0/templates/Crop/crop01.html.twig b/src/ninesurvey-1.0/templates/Crop/crop01.html.twig index eaf4146..8abf97a 100644 --- a/src/ninesurvey-1.0/templates/Crop/crop01.html.twig +++ b/src/ninesurvey-1.0/templates/Crop/crop01.html.twig @@ -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"]); diff --git a/src/ninesurvey-1.0/templates/Crop/crop02.html.twig b/src/ninesurvey-1.0/templates/Crop/crop02.html.twig index 45071f9..cc33eda 100644 --- a/src/ninesurvey-1.0/templates/Crop/crop02.html.twig +++ b/src/ninesurvey-1.0/templates/Crop/crop02.html.twig @@ -5,27 +5,29 @@ {% endblock %} {% block body %} - {{ form_start(form) }} - {{ form_widget(form.submit) }} - + {% if not submited %} + {{ form_start(form) }} + {{ form_widget(form.submit) }} + - {% if ratio=="1:1" %} - {% set class="width:90px; height:90px;" %} - {% elseif ratio=="16:9" %} - {% set class="width:160px; height:90px;" %} - {% elseif ratio=="16:2" %} - {% set class="width:160px; height:20px;" %} - {% endif %} + {% if ratio=="1:1" %} + {% set class="width:90px; height:90px;" %} + {% elseif ratio=="16:9" %} + {% set class="width:160px; height:90px;" %} + {% elseif ratio=="16:2" %} + {% set class="width:160px; height:20px;" %} + {% endif %} -
- Thumbnail Preview -
- -
-
+
+ Thumbnail Preview
-
- {{ form_end(form) }} + +
+
+
+
+ {{ 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,33 +87,35 @@ } $(document).ready(function() { - window.parent.$(".modal-title").html("ETAPE 2 - Découper votre image"); + {% if submited %} + reportThumb(); + {% else %} + window.parent.$(".modal-title").html("ETAPE 2 - Découper votre image"); - realheight=$('#largeimg').height(); - realwidth=$('#largeimg').width(); + realheight=$('#largeimg').height(); + realwidth=$('#largeimg').width(); - if(realheight>505) { $('#largeimg').height(505); $('#largeimg').width("auto") } - if($('#largeimg').width() > 868) { $('#largeimg').width(868); $('#largeimg').height("auto") } + if(realheight>505) { $('#largeimg').height(505); $('#largeimg').width("auto") } + if($('#largeimg').width() > 868) { $('#largeimg').width(868); $('#largeimg').height("auto") } - resizeheight=$('#largeimg').height(); - resizewidth=$('#largeimg').width(); + resizeheight=$('#largeimg').height(); + resizewidth=$('#largeimg').width(); - $('#largeimg').CropSelectJs({ - imageSrc: "/{{ appAlias }}/uploads/{{type}}/{{ file }}", - selectionResize: function(data) { resize(data); }, - selectionMove: function(data) { move(data); }, - }); + $('#largeimg').CropSelectJs({ + imageSrc: "/{{ appAlias }}/uploads/{{type}}/{{ file }}", + selectionResize: function(data) { resize(data); }, + selectionMove: function(data) { move(data); }, + }); - {% if ratio=="1:1" %} - {% set nbratio=1 %} - {% elseif ratio=="16:9" %} - {% set nbratio=(16/9) %} - {% elseif nbratio=="16:2" %} - {% set class=(16/2) %} + {% if ratio=="1:1" %} + {% set nbratio=1 %} + {% elseif ratio=="16:9" %} + {% set nbratio=(16/9) %} + {% elseif nbratio=="16:2" %} + {% set class=(16/2) %} + {% endif %} + + $('#largeimg').CropSelectJs('setSelectionAspectRatio',{{nbratio}}); {% endif %} - - $('#largeimg').CropSelectJs('setSelectionAspectRatio',{{nbratio}}); - - }); {% endblock %} diff --git a/src/ninesurvey-1.0/templates/Form/fields.html.twig b/src/ninesurvey-1.0/templates/Form/fields.html.twig index 03835d7..b5a5b31 100644 --- a/src/ninesurvey-1.0/templates/Form/fields.html.twig +++ b/src/ninesurvey-1.0/templates/Form/fields.html.twig @@ -83,19 +83,6 @@ les plus importants pour y ajouter le class imposée par Bootstrap 3 #} {%- 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}) %} diff --git a/src/ninesurvey-1.0/templates/Home/home.html.twig b/src/ninesurvey-1.0/templates/Home/home.html.twig index ce1acfe..5356889 100644 --- a/src/ninesurvey-1.0/templates/Home/home.html.twig +++ b/src/ninesurvey-1.0/templates/Home/home.html.twig @@ -1,7 +1,9 @@ {% extends "base.html.twig" %} {% block body %} - +{% if wssuse and app.user %} +{{ render(path("app_wss_sample")) }} +{% endif %} {% endblock %} diff --git a/src/ninesurvey-1.0/templates/Include/javascript.js.twig b/src/ninesurvey-1.0/templates/Include/javascript.js.twig index 6ae8b1a..c53991d 100644 --- a/src/ninesurvey-1.0/templates/Include/javascript.js.twig +++ b/src/ninesurvey-1.0/templates/Include/javascript.js.twig @@ -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 %} \ No newline at end of file diff --git a/src/ninesurvey-1.0/templates/Include/sidebar.html.twig b/src/ninesurvey-1.0/templates/Include/sidebar.html.twig index b98950e..2055eed 100644 --- a/src/ninesurvey-1.0/templates/Include/sidebar.html.twig +++ b/src/ninesurvey-1.0/templates/Include/sidebar.html.twig @@ -2,27 +2,36 @@
diff --git a/src/ninesurvey-1.0/templates/Websocket/sample.html.twig b/src/ninesurvey-1.0/templates/Websocket/sample.html.twig new file mode 100644 index 0000000..a74146d --- /dev/null +++ b/src/ninesurvey-1.0/templates/Websocket/sample.html.twig @@ -0,0 +1,61 @@ +
+
online
+
+
+ +{% if wssuse %} + +{% endif %} \ No newline at end of file diff --git a/src/ninesurvey-1.0/templates/base.html.twig b/src/ninesurvey-1.0/templates/base.html.twig index 5a9a679..8dadd76 100644 --- a/src/ninesurvey-1.0/templates/base.html.twig +++ b/src/ninesurvey-1.0/templates/base.html.twig @@ -13,7 +13,7 @@ {% block encorelinktags %} {% endblock encorelinktags %} - + @@ -22,12 +22,28 @@ + {% if not app.session.get("apptheme") is empty %} + + {% endif %} + + + {{ encore_entry_script_tags('app') }} + {% block encorescripttags %} + + {% endblock %} + + + + {% set class="" %} {% if usemonocolor is defined and usemonocolor %} {% set class="monocolor" %} @@ -86,7 +102,7 @@ {% endif %} -
+
{% set contentsidebar="" %} {% if usesidebar is defined and usesidebar %} {% set contentsidebar="contentsidebar" %} @@ -104,19 +120,20 @@ +